]> git.saurik.com Git - wxWidgets.git/commitdiff
Merged libtiff 4.0.3 changes into the trunk.
authorVadim Zeitlin <vadim@wxwidgets.org>
Mon, 10 Dec 2012 14:01:44 +0000 (14:01 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Mon, 10 Dec 2012 14:01:44 +0000 (14:01 +0000)
This should help with making libtiff work better in 64 bit builds as libtiff 4
is supposed to support them much better.

Closes #12301.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

488 files changed:
src/tiff/ChangeLog
src/tiff/HOWTO-RELEASE
src/tiff/Makefile.am
src/tiff/Makefile.in
src/tiff/Makefile.vc
src/tiff/README
src/tiff/README.vms [new file with mode: 0644]
src/tiff/RELEASE-DATE
src/tiff/SConstruct
src/tiff/TODO
src/tiff/VERSION
src/tiff/aclocal.m4
src/tiff/autogen.sh
src/tiff/build/Makefile.am [new file with mode: 0644]
src/tiff/build/Makefile.in [new file with mode: 0644]
src/tiff/build/README [new file with mode: 0644]
src/tiff/config/config.guess
src/tiff/config/config.sub
src/tiff/config/depcomp
src/tiff/config/install-sh
src/tiff/config/ltmain.sh
src/tiff/config/missing
src/tiff/config/mkinstalldirs
src/tiff/config/test-driver [new file with mode: 0755]
src/tiff/configure
src/tiff/configure.ac
src/tiff/configure.com [new file with mode: 0644]
src/tiff/contrib/Makefile.am
src/tiff/contrib/Makefile.in
src/tiff/contrib/acorn/Makefile.acorn [deleted file]
src/tiff/contrib/acorn/Makefile.am [deleted file]
src/tiff/contrib/acorn/Makefile.in [deleted file]
src/tiff/contrib/acorn/ReadMe [deleted file]
src/tiff/contrib/acorn/SetVars [deleted file]
src/tiff/contrib/acorn/cleanlib [deleted file]
src/tiff/contrib/acorn/convert [deleted file]
src/tiff/contrib/acorn/install [deleted file]
src/tiff/contrib/addtiffo/Makefile.am
src/tiff/contrib/addtiffo/Makefile.in
src/tiff/contrib/addtiffo/addtiffo.c
src/tiff/contrib/addtiffo/tif_overview.c
src/tiff/contrib/addtiffo/tif_ovrcache.c
src/tiff/contrib/addtiffo/tif_ovrcache.h
src/tiff/contrib/dbs/Makefile.am
src/tiff/contrib/dbs/Makefile.in
src/tiff/contrib/dbs/tiff-bi.c
src/tiff/contrib/dbs/tiff-grayscale.c
src/tiff/contrib/dbs/tiff-palette.c
src/tiff/contrib/dbs/tiff-rgb.c
src/tiff/contrib/dbs/xtiff/Makefile.am
src/tiff/contrib/dbs/xtiff/Makefile.in
src/tiff/contrib/dbs/xtiff/patchlevel.h
src/tiff/contrib/dbs/xtiff/xtiff.c
src/tiff/contrib/dbs/xtiff/xtifficon.h
src/tiff/contrib/iptcutil/Makefile.am
src/tiff/contrib/iptcutil/Makefile.in
src/tiff/contrib/iptcutil/iptcutil.c
src/tiff/contrib/mac-cw/Makefile.am [deleted file]
src/tiff/contrib/mac-cw/Makefile.in [deleted file]
src/tiff/contrib/mac-cw/Makefile.script [deleted file]
src/tiff/contrib/mac-cw/README [deleted file]
src/tiff/contrib/mac-cw/mac_main.c [deleted file]
src/tiff/contrib/mac-cw/mac_main.h [deleted file]
src/tiff/contrib/mac-cw/metrowerks.note [deleted file]
src/tiff/contrib/mac-cw/mkg3_main.c [deleted file]
src/tiff/contrib/mac-cw/version.h [deleted file]
src/tiff/contrib/mac-mpw/BUILD.mpw [deleted file]
src/tiff/contrib/mac-mpw/Makefile.am [deleted file]
src/tiff/contrib/mac-mpw/Makefile.in [deleted file]
src/tiff/contrib/mac-mpw/README [deleted file]
src/tiff/contrib/mac-mpw/libtiff.make [deleted file]
src/tiff/contrib/mac-mpw/mactrans.c [deleted file]
src/tiff/contrib/mac-mpw/port.make [deleted file]
src/tiff/contrib/mac-mpw/tools.make [deleted file]
src/tiff/contrib/mac-mpw/top.make [deleted file]
src/tiff/contrib/mfs/Makefile.in
src/tiff/contrib/mfs/mfs_file.c
src/tiff/contrib/ojpeg/Makefile.am [deleted file]
src/tiff/contrib/ojpeg/Makefile.in [deleted file]
src/tiff/contrib/ojpeg/README [deleted file]
src/tiff/contrib/ojpeg/jdhuff_add.c [deleted file]
src/tiff/contrib/pds/Makefile.in
src/tiff/contrib/pds/tif_imageiter.c
src/tiff/contrib/pds/tif_imageiter.h
src/tiff/contrib/pds/tif_pdsdirread.c
src/tiff/contrib/pds/tif_pdsdirwrite.c
src/tiff/contrib/ras/Makefile.in
src/tiff/contrib/ras/ras2tif.c
src/tiff/contrib/ras/tif2ras.c
src/tiff/contrib/stream/Makefile.in
src/tiff/contrib/stream/tiffstream.cpp
src/tiff/contrib/stream/tiffstream.h
src/tiff/contrib/tags/Makefile.in
src/tiff/contrib/tags/listtif.c
src/tiff/contrib/tags/maketif.c
src/tiff/contrib/tags/xtif_dir.c
src/tiff/contrib/tags/xtiffio.h
src/tiff/contrib/tags/xtiffiop.h
src/tiff/contrib/win_dib/Makefile.in
src/tiff/contrib/win_dib/Tiffile.cpp
src/tiff/contrib/win_dib/tiff2dib.c
src/tiff/html/Makefile.am
src/tiff/html/Makefile.in
src/tiff/html/bugs.html
src/tiff/html/build.html
src/tiff/html/document.html
src/tiff/html/images/Makefile.in
src/tiff/html/index.html
src/tiff/html/man/Makefile.am
src/tiff/html/man/Makefile.in
src/tiff/html/man/TIFFClose.3tiff.html
src/tiff/html/man/TIFFDataWidth.3tiff.html
src/tiff/html/man/TIFFError.3tiff.html
src/tiff/html/man/TIFFFieldDataType.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFieldName.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFieldPassCount.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFieldReadCount.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFieldTag.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFieldWriteCount.3tiff.html [new file with mode: 0644]
src/tiff/html/man/TIFFFlush.3tiff.html
src/tiff/html/man/TIFFGetField.3tiff.html
src/tiff/html/man/TIFFOpen.3tiff.html
src/tiff/html/man/TIFFPrintDirectory.3tiff.html
src/tiff/html/man/TIFFRGBAImage.3tiff.html
src/tiff/html/man/TIFFReadDirectory.3tiff.html
src/tiff/html/man/TIFFReadEncodedStrip.3tiff.html
src/tiff/html/man/TIFFReadEncodedTile.3tiff.html
src/tiff/html/man/TIFFReadRGBAImage.3tiff.html
src/tiff/html/man/TIFFReadRGBAStrip.3tiff.html
src/tiff/html/man/TIFFReadRGBATile.3tiff.html
src/tiff/html/man/TIFFReadRawStrip.3tiff.html
src/tiff/html/man/TIFFReadRawTile.3tiff.html
src/tiff/html/man/TIFFReadScanline.3tiff.html
src/tiff/html/man/TIFFReadTile.3tiff.html
src/tiff/html/man/TIFFSetDirectory.3tiff.html
src/tiff/html/man/TIFFSetField.3tiff.html
src/tiff/html/man/TIFFWarning.3tiff.html
src/tiff/html/man/TIFFWriteDirectory.3tiff.html
src/tiff/html/man/TIFFWriteEncodedStrip.3tiff.html
src/tiff/html/man/TIFFWriteEncodedTile.3tiff.html
src/tiff/html/man/TIFFWriteRawStrip.3tiff.html
src/tiff/html/man/TIFFWriteRawTile.3tiff.html
src/tiff/html/man/TIFFWriteScanline.3tiff.html
src/tiff/html/man/TIFFWriteTile.3tiff.html
src/tiff/html/man/TIFFbuffer.3tiff.html
src/tiff/html/man/TIFFcodec.3tiff.html
src/tiff/html/man/TIFFcolor.3tiff.html
src/tiff/html/man/TIFFmemory.3tiff.html
src/tiff/html/man/TIFFquery.3tiff.html
src/tiff/html/man/TIFFsize.3tiff.html
src/tiff/html/man/TIFFstrip.3tiff.html
src/tiff/html/man/TIFFswab.3tiff.html
src/tiff/html/man/TIFFtile.3tiff.html
src/tiff/html/man/bmp2tiff.1.html [new file with mode: 0644]
src/tiff/html/man/fax2ps.1.html
src/tiff/html/man/fax2tiff.1.html
src/tiff/html/man/gif2tiff.1.html
src/tiff/html/man/index.html
src/tiff/html/man/libtiff.3tiff.html
src/tiff/html/man/pal2rgb.1.html
src/tiff/html/man/ppm2tiff.1.html
src/tiff/html/man/ras2tiff.1.html
src/tiff/html/man/raw2tiff.1.html
src/tiff/html/man/rgb2ycbcr.1.html
src/tiff/html/man/sgi2tiff.1.html
src/tiff/html/man/thumbnail.1.html
src/tiff/html/man/tiff2bw.1.html
src/tiff/html/man/tiff2pdf.1.html
src/tiff/html/man/tiff2ps.1.html
src/tiff/html/man/tiff2rgba.1.html
src/tiff/html/man/tiffcmp.1.html
src/tiff/html/man/tiffcp.1.html
src/tiff/html/man/tiffcrop.1.html [new file with mode: 0644]
src/tiff/html/man/tiffdither.1.html
src/tiff/html/man/tiffdump.1.html
src/tiff/html/man/tiffgt.1.html
src/tiff/html/man/tiffinfo.1.html
src/tiff/html/man/tiffmedian.1.html
src/tiff/html/man/tiffset.1.html
src/tiff/html/man/tiffsplit.1.html
src/tiff/html/man/tiffsv.1.html
src/tiff/html/misc.html
src/tiff/html/tools.html
src/tiff/html/v3.9.0beta.html [new file with mode: 0644]
src/tiff/html/v3.9.1.html [new file with mode: 0644]
src/tiff/html/v3.9.2.html [new file with mode: 0644]
src/tiff/html/v4.0.0.html [new file with mode: 0644]
src/tiff/html/v4.0.1.html [new file with mode: 0644]
src/tiff/html/v4.0.2.html [new file with mode: 0644]
src/tiff/libtiff-4.pc.in [new file with mode: 0644]
src/tiff/libtiff/Makefile.am
src/tiff/libtiff/Makefile.in
src/tiff/libtiff/Makefile.vc
src/tiff/libtiff/SConstruct
src/tiff/libtiff/libtiff.def
src/tiff/libtiff/libtiff.map [new file with mode: 0644]
src/tiff/libtiff/libtiffxx.map [new file with mode: 0644]
src/tiff/libtiff/mkg3states.c
src/tiff/libtiff/t4.h
src/tiff/libtiff/tif_acorn.c [deleted file]
src/tiff/libtiff/tif_apple.c [deleted file]
src/tiff/libtiff/tif_atari.c [deleted file]
src/tiff/libtiff/tif_aux.c
src/tiff/libtiff/tif_close.c
src/tiff/libtiff/tif_codec.c
src/tiff/libtiff/tif_color.c
src/tiff/libtiff/tif_compress.c
src/tiff/libtiff/tif_config.h
src/tiff/libtiff/tif_config.h-vms [new file with mode: 0644]
src/tiff/libtiff/tif_config.h.in
src/tiff/libtiff/tif_config.h.vc [deleted file]
src/tiff/libtiff/tif_config.vc.h [new file with mode: 0644]
src/tiff/libtiff/tif_config.wince.h [new file with mode: 0644]
src/tiff/libtiff/tif_dir.c
src/tiff/libtiff/tif_dir.h
src/tiff/libtiff/tif_dirinfo.c
src/tiff/libtiff/tif_dirread.c
src/tiff/libtiff/tif_dirwrite.c
src/tiff/libtiff/tif_dumpmode.c
src/tiff/libtiff/tif_error.c
src/tiff/libtiff/tif_extension.c
src/tiff/libtiff/tif_fax3.c
src/tiff/libtiff/tif_fax3.h
src/tiff/libtiff/tif_fax3sm.c
src/tiff/libtiff/tif_flush.c
src/tiff/libtiff/tif_getimage.c
src/tiff/libtiff/tif_jbig.c [new file with mode: 0644]
src/tiff/libtiff/tif_jpeg.c
src/tiff/libtiff/tif_jpeg_12.c [new file with mode: 0644]
src/tiff/libtiff/tif_luv.c
src/tiff/libtiff/tif_lzma.c [new file with mode: 0644]
src/tiff/libtiff/tif_lzw.c
src/tiff/libtiff/tif_msdos.c [deleted file]
src/tiff/libtiff/tif_next.c
src/tiff/libtiff/tif_ojpeg.c
src/tiff/libtiff/tif_open.c
src/tiff/libtiff/tif_packbits.c
src/tiff/libtiff/tif_pixarlog.c
src/tiff/libtiff/tif_predict.c
src/tiff/libtiff/tif_predict.h
src/tiff/libtiff/tif_print.c
src/tiff/libtiff/tif_read.c
src/tiff/libtiff/tif_stream.cxx
src/tiff/libtiff/tif_strip.c
src/tiff/libtiff/tif_swab.c
src/tiff/libtiff/tif_thunder.c
src/tiff/libtiff/tif_tile.c
src/tiff/libtiff/tif_unix.c
src/tiff/libtiff/tif_version.c
src/tiff/libtiff/tif_warning.c
src/tiff/libtiff/tif_win3.c [deleted file]
src/tiff/libtiff/tif_win32.c
src/tiff/libtiff/tif_write.c
src/tiff/libtiff/tif_zip.c
src/tiff/libtiff/tiff.h
src/tiff/libtiff/tiffconf.h [deleted file]
src/tiff/libtiff/tiffconf.h.in
src/tiff/libtiff/tiffconf.h.vc [deleted file]
src/tiff/libtiff/tiffconf.vc.h [new file with mode: 0644]
src/tiff/libtiff/tiffconf.wince.h [new file with mode: 0644]
src/tiff/libtiff/tiffio.h
src/tiff/libtiff/tiffio.hxx
src/tiff/libtiff/tiffiop.h
src/tiff/libtiff/tiffvers.h
src/tiff/libtiff/uvcode.h
src/tiff/m4/acinclude.m4
src/tiff/m4/libtool.m4
src/tiff/m4/ltoptions.m4
src/tiff/m4/ltsugar.m4
src/tiff/m4/ltversion.m4
src/tiff/m4/lt~obsolete.m4 [new file with mode: 0644]
src/tiff/man/Makefile.am
src/tiff/man/Makefile.in
src/tiff/man/TIFFClose.3tiff
src/tiff/man/TIFFDataWidth.3tiff
src/tiff/man/TIFFError.3tiff
src/tiff/man/TIFFFieldDataType.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFieldName.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFieldPassCount.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFieldReadCount.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFieldTag.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFieldWriteCount.3tiff [new file with mode: 0644]
src/tiff/man/TIFFFlush.3tiff
src/tiff/man/TIFFGetField.3tiff
src/tiff/man/TIFFOpen.3tiff
src/tiff/man/TIFFPrintDirectory.3tiff
src/tiff/man/TIFFRGBAImage.3tiff
src/tiff/man/TIFFReadDirectory.3tiff
src/tiff/man/TIFFReadEncodedStrip.3tiff
src/tiff/man/TIFFReadEncodedTile.3tiff
src/tiff/man/TIFFReadRGBAImage.3tiff
src/tiff/man/TIFFReadRGBAStrip.3tiff
src/tiff/man/TIFFReadRGBATile.3tiff
src/tiff/man/TIFFReadRawStrip.3tiff
src/tiff/man/TIFFReadRawTile.3tiff
src/tiff/man/TIFFReadScanline.3tiff
src/tiff/man/TIFFReadTile.3tiff
src/tiff/man/TIFFSetDirectory.3tiff
src/tiff/man/TIFFSetField.3tiff
src/tiff/man/TIFFWarning.3tiff
src/tiff/man/TIFFWriteDirectory.3tiff
src/tiff/man/TIFFWriteEncodedStrip.3tiff
src/tiff/man/TIFFWriteEncodedTile.3tiff
src/tiff/man/TIFFWriteRawStrip.3tiff
src/tiff/man/TIFFWriteRawTile.3tiff
src/tiff/man/TIFFWriteScanline.3tiff
src/tiff/man/TIFFWriteTile.3tiff
src/tiff/man/TIFFbuffer.3tiff
src/tiff/man/TIFFcodec.3tiff
src/tiff/man/TIFFcolor.3tiff
src/tiff/man/TIFFmemory.3tiff
src/tiff/man/TIFFquery.3tiff
src/tiff/man/TIFFsize.3tiff
src/tiff/man/TIFFstrip.3tiff
src/tiff/man/TIFFswab.3tiff
src/tiff/man/TIFFtile.3tiff
src/tiff/man/bmp2tiff.1
src/tiff/man/fax2ps.1
src/tiff/man/fax2tiff.1
src/tiff/man/gif2tiff.1
src/tiff/man/libtiff.3tiff
src/tiff/man/pal2rgb.1
src/tiff/man/ppm2tiff.1
src/tiff/man/ras2tiff.1
src/tiff/man/raw2tiff.1
src/tiff/man/rgb2ycbcr.1
src/tiff/man/sgi2tiff.1
src/tiff/man/thumbnail.1
src/tiff/man/tiff2bw.1
src/tiff/man/tiff2pdf.1
src/tiff/man/tiff2ps.1
src/tiff/man/tiff2rgba.1
src/tiff/man/tiffcmp.1
src/tiff/man/tiffcp.1
src/tiff/man/tiffcrop.1 [new file with mode: 0644]
src/tiff/man/tiffdither.1
src/tiff/man/tiffdump.1
src/tiff/man/tiffgt.1
src/tiff/man/tiffinfo.1
src/tiff/man/tiffmedian.1
src/tiff/man/tiffset.1
src/tiff/man/tiffsplit.1
src/tiff/man/tiffsv.1
src/tiff/nmake.opt
src/tiff/port/Makefile.am
src/tiff/port/Makefile.in
src/tiff/port/dummy.c
src/tiff/port/getopt.c
src/tiff/port/lfind.c
src/tiff/port/libport.h [new file with mode: 0644]
src/tiff/port/strcasecmp.c
src/tiff/port/strtoull.c [new file with mode: 0644]
src/tiff/test/Makefile.am
src/tiff/test/Makefile.in
src/tiff/test/ascii_tag.c
src/tiff/test/bmp2tiff_palette.sh [new file with mode: 0755]
src/tiff/test/bmp2tiff_rgb.sh [new file with mode: 0755]
src/tiff/test/check_tag.c
src/tiff/test/common.sh [new file with mode: 0755]
src/tiff/test/custom_dir.c [new file with mode: 0644]
src/tiff/test/gif2tiff.sh [new file with mode: 0755]
src/tiff/test/images/README.txt [new file with mode: 0644]
src/tiff/test/images/logluv-3c-16b.tiff [new file with mode: 0644]
src/tiff/test/images/minisblack-1c-16b.tiff [new file with mode: 0644]
src/tiff/test/images/minisblack-1c-8b.pgm [new file with mode: 0644]
src/tiff/test/images/minisblack-1c-8b.tiff [new file with mode: 0644]
src/tiff/test/images/minisblack-2c-8b-alpha.tiff [new file with mode: 0644]
src/tiff/test/images/miniswhite-1c-1b.pbm [new file with mode: 0644]
src/tiff/test/images/miniswhite-1c-1b.tiff [new file with mode: 0644]
src/tiff/test/images/palette-1c-1b.tiff [new file with mode: 0644]
src/tiff/test/images/palette-1c-4b.tiff [new file with mode: 0644]
src/tiff/test/images/palette-1c-8b.bmp [new file with mode: 0644]
src/tiff/test/images/palette-1c-8b.gif [new file with mode: 0644]
src/tiff/test/images/palette-1c-8b.tiff [new file with mode: 0644]
src/tiff/test/images/quad-tile.jpg.tiff [new file with mode: 0644]
src/tiff/test/images/rgb-3c-16b.tiff [new file with mode: 0644]
src/tiff/test/images/rgb-3c-8b.bmp [new file with mode: 0644]
src/tiff/test/images/rgb-3c-8b.ppm [new file with mode: 0644]
src/tiff/test/images/rgb-3c-8b.tiff [new file with mode: 0644]
src/tiff/test/long_tag.c
src/tiff/test/ppm2tiff_pbm.sh [new file with mode: 0755]
src/tiff/test/ppm2tiff_pgm.sh [new file with mode: 0755]
src/tiff/test/ppm2tiff_ppm.sh [new file with mode: 0755]
src/tiff/test/raw_decode.c [new file with mode: 0644]
src/tiff/test/rewrite_tag.c [new file with mode: 0644]
src/tiff/test/short_tag.c
src/tiff/test/strip.c
src/tiff/test/strip_rw.c
src/tiff/test/tiff2pdf.sh [new file with mode: 0755]
src/tiff/test/tiff2ps-EPS1.sh [new file with mode: 0755]
src/tiff/test/tiff2ps-PS1.sh [new file with mode: 0755]
src/tiff/test/tiff2ps-PS2.sh [new file with mode: 0755]
src/tiff/test/tiff2ps-PS3.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-logluv-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-minisblack-1c-16b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-minisblack-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-minisblack-2c-8b-alpha.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-miniswhite-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-palette-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-palette-1c-4b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-palette-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-quad-tile.jpg.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-rgb-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiff2rgba-rgb-3c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g3-1d-fill.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g3-1d.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g3-2d-fill.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g3-2d.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g3.sh [new file with mode: 0755]
src/tiff/test/tiffcp-g4.sh [new file with mode: 0755]
src/tiff/test/tiffcp-logluv.sh [new file with mode: 0755]
src/tiff/test/tiffcp-split-join.sh [new file with mode: 0755]
src/tiff/test/tiffcp-split.sh [new file with mode: 0755]
src/tiff/test/tiffcp-thumbnail.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-logluv-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-minisblack-1c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-minisblack-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-minisblack-2c-8b-alpha.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-miniswhite-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-palette-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-palette-1c-4b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-palette-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-rgb-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-R90-rgb-3c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-logluv-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-minisblack-1c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-minisblack-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-miniswhite-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-palette-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-palette-1c-4b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-palette-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-rgb-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-doubleflip-rgb-3c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-logluv-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-minisblack-1c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-minisblack-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-minisblack-2c-8b-alpha.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-miniswhite-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-palette-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-palette-1c-4b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-palette-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-rgb-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extract-rgb-3c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-logluv-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-minisblack-1c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-minisblack-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-minisblack-2c-8b-alpha.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-miniswhite-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-palette-1c-1b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-palette-1c-4b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-palette-1c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-rgb-3c-16b.sh [new file with mode: 0755]
src/tiff/test/tiffcrop-extractz14-rgb-3c-8b.sh [new file with mode: 0755]
src/tiff/test/tiffdump.sh [new file with mode: 0755]
src/tiff/test/tiffinfo.sh [new file with mode: 0755]
src/tiff/test/tifftest.h [new file with mode: 0644]
src/tiff/tools/Makefile.am
src/tiff/tools/Makefile.in
src/tiff/tools/Makefile.vc
src/tiff/tools/bmp2tiff.c
src/tiff/tools/fax2ps.c
src/tiff/tools/fax2tiff.c
src/tiff/tools/gif2tiff.c
src/tiff/tools/pal2rgb.c
src/tiff/tools/ppm2tiff.c
src/tiff/tools/ras2tiff.c
src/tiff/tools/rasterfile.h
src/tiff/tools/raw2tiff.c
src/tiff/tools/rgb2ycbcr.c
src/tiff/tools/sgi2tiff.c
src/tiff/tools/sgisv.c
src/tiff/tools/thumbnail.c
src/tiff/tools/tiff2bw.c
src/tiff/tools/tiff2pdf.c
src/tiff/tools/tiff2ps.c
src/tiff/tools/tiff2rgba.c
src/tiff/tools/tiffcmp.c
src/tiff/tools/tiffcp.c
src/tiff/tools/tiffcrop.c [new file with mode: 0644]
src/tiff/tools/tiffdither.c
src/tiff/tools/tiffdump.c
src/tiff/tools/tiffgt.c
src/tiff/tools/tiffinfo.c
src/tiff/tools/tiffmedian.c
src/tiff/tools/tiffset.c
src/tiff/tools/tiffsplit.c
src/tiff/tools/ycbcr.c

index 7d09b1b1806ad194debf489ef99d245951692398..a537f71b0c67171ff44488cf5fa54531bc9aa590 100644 (file)
+2012-09-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.3 released.
+
+2012-09-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Makefile.am: Update to Automake 1.12.4
+
+2012-08-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Makefile.in: Update to Automake 1.12.3
+
+       * libtiff{tiff.h, tif_print.c, tif_dirinfo.c, tif_dirread.c}: Add
+       some TIFF/FX support in libtiff.  Add the tag definitions to
+       tiff.h.  Add the related TIFF field definitions to tif_dirinfo.c,
+       and also fixes an error in a comment.  Adds the photometric values
+       to tif_print.c, and fixes a bug.  These changes are by Steve
+       Underwood.
+
+2012-08-13  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_write.c: Fix bug rewriting image tiles in a
+       compressed file: http://trac.osgeo.org/gdal/ticket/4771
+
+2012-08-02  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_dirread.c: report error in case of mismatch value 
+       counts for tags (ie. DotRange).
+
+2012-07-26  Tom Lane  <tgl@sss.pgh.pa.us>
+
+       * libtiff/{tiffio.h, tif_dirinfo.c, libtiff.def}: Add six new
+       functions TIFFFieldTag(), TIFFFieldName(), TIFFFieldDataType(),
+       TIFFFieldPassCount(), TIFFFieldReadCount(), TIFFFieldWriteCount()
+       as external accessors for the opaque type TIFFField.
+
+       * tools/tiffset.c: Make tiffset use the above functions instead of
+       relying on library private headers.
+
+2012-07-19  Tom Lane  <tgl@sss.pgh.pa.us>
+
+       * tools/tiff2pdf.c: Fix two places where t2p_error didn't get set
+       after a malloc failure.  No crash risk AFAICS, but the program
+       might not report exit code 1 as desired.  h/t mancha@mac.hush.com
+
+2012-07-18  Tom Lane  <tgl@sss.pgh.pa.us>
+
+       * tools/tiff2pdf.c: Fail when TIFFSetDirectory() fails.  This
+       prevents core dumps or perhaps even arbitrary code execution when
+       processing a corrupt input file (CVE-2012-3401).
+
+2012-07-06  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/raw_decode.c (main): Test fixes to work with IJG JPEG 7+.
+       IJG JPEG 7+ uses a different upsampling algorithm which produces
+       different numeric results.
+
+       * libtiff/tif_jpeg.c (JPEGPreDecode): Patch from Even Rouault to
+       work with IJG JPEG 7+.
+
+2012-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/raw_decode.c: Add changes so that test can run with build
+       directory outside of source directory.
+
+2012-07-02  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_jpeg.c: Fix handling when writing RGBA jpeg compressed
+       imagery (http://trac.osgeo.org/gdal/ticket/4732)
+
+2012-06-20  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_fax3.c: fix memory initialization of runs, only
+       partly done.
+
+       * libtiff/tif_pixarlog.c: Make sure tbuf is large enough for one
+       full "stride" past the end.
+
+2012-06-19  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_packbits.c: fix read past end of data buffer. 
+
+2012-06-15  Frank Warmerdam  <warmerdam@google.com>
+
+       *  libtiff 4.0.2 released.
+
+       * tools/tif2pdf.c, tools/tifdump.c: avoid unitialized variable
+       warnings with clang.
+
+2012-06-15  Tom Lane  <tgl@sss.pgh.pa.us>
+
+       * tools/tiff2pdf.c: Defend against integer overflows while
+       calculating required buffer sizes (CVE-2012-2113).
+
+2012-06-12  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_print.c: Be careful about printing corrupt inknames.
+
+       * libtiff/tif_fax3.c: Ensure runs array is initialized to zeros.
+
+2012-06-07  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_print.c: avoid pretty printing other fields when
+       we don't have the proper amount and type of data or if the field
+       is actually autodefined.
+
+2012-06-05  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal
+       ycbcrsubsampling values result in a runtime error, not just an
+       assertion.
+
+       * tests/custom_dir.c: Add testing of EXIF and custom directory
+       reading and writing.
+
+       * libtiff/tif_dir.c, libtiff/tiffio.h: Add TIFFCreateCustomDirectory()
+       and TIFFCreateEXIFDirectory() functions.
+
+       * libtiff/tif_dir.c, tif_print.c : Remove FIELD_CUSTOM handling for
+       PAGENUMBER, HALFTONEHINTS, and YCBCRSUBSAMPLING.  Implement DOTRANGE
+       differently.  This is to avoid using special TIFFGetField/TIFFSetField 
+       rules for these fields in non-image directories (like EXIF).
+
+2012-06-04  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_jpeg.c: Remove code for fixing up h_sampling and v_sampling
+       in JPEGPreDecode().  If a fixup will be done it needs to be done sooner
+       in JPEGFixupTagsSubsampling() or else buffer sized may be wrong.
+
+2012-06-01  Frank Warmerdam  <warmerdam@google.com>
+
+       * tools/tiffinfo.c: Do not try to read image data in EXIF directories.
+
+       * libtiff/tif_getimage.c: added support for _SEPARATED CMYK images.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2379
+
+       * libtiff/tif_unix.c: use strerror() to return a more specific error message
+       on failed open.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2341
+
+       * libtiff/tif_jpeg.c: Fix JPEGDecodeRaw() bugs.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2386
+
+       * tests/decode_raw.c, tests/images/quad-tile.jpg.tiff: add limited support
+       for testing jpeg in tiff image decoding including the "raw" decode interface.
+
+2012-05-31  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_jpeg.c: avoid overrunning the end of the output buffer in
+       JPEGDecodeRaw() - mostly likely to occur when there is confusion about
+       sampling values.
+
+       * libtiff/tif_read.c: Make sure tif_rawdatasize is cleared when tif_rawdata is freed.
+
+       * libtiff/tif_getimage.c: Add support for greyscale+alpha c/o Jérémie Laval.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2398
+
+2012-05-29  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_dir.c: avoid using specific set/get logic to process fields in custom directories,
+       like EXIF directories.  This fixes problems like a tag "320" existing in a custom directory getting
+       processed as if it were a colormap when it isn't really.  Damn the wide variety of argument formulations
+       to get/set functions for different tags!
+
+       * libtiff/tif_dir.c: Ensure that we keep track of when tif_rawdata
+       is a pointer into an mmap()ed file via TIFF_BUFFERMMAP flag.
+
+2012-05-24  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_pixarlog.c: Allocate working buffer one word larger since we "forward
+       accumulate" and overwrite the end by one word in at least some cases.
+
+2012-05-23  Frank Warmerdam  <warmerdam@google.com>
+
+       * libtiff/tif_pixarlog.c: avoid accessing out of the lookup arrays for out of range inputs.
+
+       * tools/tiffinfo.c: initialize h=0 to avoid undefined variable for degenerate files.
+
+       * libtiff/tif_ojpeg.c: if OJPEGWriteHeader() fails once do not bother trying again on
+       the same image.
+
+       * libtiff/tif_ojpeg.c: make things more resilient in the face of files without
+       stripbytecounts or stripoffsets or where loading these fails.
+
+       * libtiff/tif_print.c: be careful about whether min/max values are singular
+       or one per sample.
+
+       * libtiff/tif_print.c: Avoid confusion about count size when printing custom fields.
+       May affect things like ISOSpeedRatings.
+
+       * libtiff/tif_dir.c: avoid one byte past end of ink names reading
+       in some cases.
+
+2012-05-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * man/TIFFGetField.3tiff: Correct the 'count' field type in the
+       example for how to retreive the value of unsupported tags.
+
+2012-03-30  Frank Warmerdam  <warmerdam@google.com>
+
+       * tif_getimage.c: Fix size overflow (zdi-can-1221,CVE-2012-1173)
+       care of Tom Lane @ Red Hat.
+
+2012-02-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.1 released.
+
+       * Update automake used to 1.11.3.
+
+       * libtiff/tiffio.h: Use double-underbar syntax in GCC printf
+       attribute specification to lessen the risk of accidental macro
+       substitution.  Patch from Vincent Torri.
+
+2012-01-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around
+       assumption tag fetching is always successful. 
+
+       * libtiff/tif_jpeg.c: Extra caution for case where sp is NULL.
+
+2012-01-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Add support for using library symbol versioning on
+       ELF systems with the GNU linker.  Support is enabled via
+       --enable-ld-version-script.  Disabled by default for now until
+       there is a decision for how to deploy a libtiff with versioned
+       symbols after libtiff 4.0.0 was already released.
+
+2011-12-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_win32.c: Eliminate some minor 64-bit warnings in
+
+       tif_win32.c.  Patch by Edward Lam.
+
+       * configure.ac: Add libtiff private dependency on -llzma for
+       pkg-config.  Patch by Mark Brand.
+       Updated Automake to 1.11.2.
+
+2011-12-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0 released.
+
+2011-12-08  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c, libtiff/tif_read.c: more cautious checking
+       of _TIFFFillStriles() results (#gdal 4372)
+
+2011-12-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: fixes to deal with invalid files where
+       _TIFFFillStriles() fails, and we try to chop up strips (gdal #4372)
+
+       * libtiff/tif_dirread.c: fix error reporting when there is no 
+       tag information struct and name (gdal #4373)
+
+2011-10-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Update GNU libtool to 2.4.2.
+
+       * tools/tiffsplit.c (tiffcp): TIFFGetField count field should be
+       uint32 type for TIFFTAG_JPEGTABLES.  Patch by Christophe
+       Deroulers.
+
+2011-06-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Restore TIFFMergeFieldInfo.
+
+2011-05-31  Jim Meyering  <meyering@redhat.com>
+
+       * libtiff/tif_dirread.c (TIFFFetchStripThing): Free "data" also
+       upon failure to allocate "resizeddata".
+       * tools/tiff2ps.c (PSDataBW): Zero buffer *after* checking for
+       allocation failure, not before.
+       * libtiff/tif_ojpeg.c: plug leaks on OJPEG read failure path
+       * tools/rgb2ycbcr.c (cvtRaster): unchecked malloc
+       * libtiff/tif_jpeg.c, tools/tiff2pdf.c, tools/tiff2ps.c: mark
+       NULL-deref and possible overflow
+       * tools/tiff2pdf.c: remove decl+set of set-but-not-used local, "written"
+       * libtiff/tif_jpeg.c (JPEGInitializeLibJPEG): Remove declaration
+       and set of otherwise unused local, data_is_empty.
+       * libtiff/tif_jpeg.c (JPEGDecodeRaw) [JPEG_LIB_MK1_OR_12BIT]:
+       Diagnose out-of-memory failure and return 0 rather than
+       dereferencing NULL.
+
+2011-05-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: produce special error message for zero tag
+       directories instead of error out on the malloc(0) failure.
+
+2011-05-16  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Restore TIFFMergeFieldInfo() and
+       related declarations as they are in active use by libraries
+       such as libgeotiff, and work just fine.  (#2315)
+
+2011-04-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c,tiffio.h: Remove the obsolete 
+       TIFFMergeFieldInfo/TIFFFindFieldInfo/TIFFFindFieldInfoByName API. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2315
+
+       * libtiff/libtiff.def: add some missing (64bit) APIs.  
+       http://bugzilla.maptools.org/show_bug.cgi?id=2316
+
+2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0beta7 released.
+
+2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Should use AC_CANONICAL_HOST since host specifies
+       the run-time target whereas target is used to specify the final
+       output target if the package is a build tool (like a compiler),
+       which libtiff is not.  Resolves libtiff bug 2307 "Use
+       AC_CANONICAL_HOST macro".
+
+2011-04-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Support configuring TIFF_INT64_FORMAT and
+       TIFF_UINT64_FORMAT appropriately for MinGW32.
+
+       * tools/tiffdump.c (ReadDirectory): MinGW32 needs to use WIN32
+       printf conventions for 64-bit types because it uses the WIN32 CRT.
+
+       * libtiff/{tif_dumpmode.c,tif_luv.c,tif_lzw.c,tif_print.c,
+       tif_read.c,tif_strip.c,tif_thunder.c}: MinGW32 needs to use WIN32
+       printf conventions for 64-bit types because it uses the WIN32 CRT.
+
+       * tools/tiff2pdf.c (t2p_write_pdf_string): Fix printf syntax not
+       understood by WIN32 CRT.
+
+       * libtiff/tif_ojpeg.c: Fixes to compile with MinGW32 GCC.
+
+       * tools/fax2ps.c (main): Use tmpfile() rather than mkstemp() since
+       it is much more portable.  Tmpfile is included in ISO/IEC
+       9899:1990 and the WIN32 CRT.
+
+2011-03-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffset.c: add -d and -sd switches to allow operation on
+       a particular directory, not just the first (jef).
+
+2011-03-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_thunder.c: Correct potential buffer overflow with 
+       thunder encoded files with wrong bitspersample set.  The libtiff 
+       development team would like to thank Marin Barbella and TippingPoint's
+       Zero Day Initiative for reporting this vulnerability (ZDI-CAN-1004,
+       CVE-2011-1167).
+       http://bugzilla.maptools.org/show_bug.cgi?id=2300
+
+2011-03-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.h: Fix to last change allowing zero length 
+       runs at the start of a scanline - needed for legal cases.
+
+2011-03-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.h: Protect against a fax VL(n) codeword commanding 
+       a move left.  Without this, a malicious input file can generate an 
+       indefinitely large series of runs without a0 ever reaching the right 
+       margin, thus overrunning our buffer of run lengths.  Per CVE-2011-0192.
+       This is a modified version of a patch proposed by Drew Yao of Apple 
+       Product Security.  It adds an unexpected() report, and disallows the 
+       equality case, since emitting a run without increasing a0 still allows 
+       buffer overrun.
+
+2011-02-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: avoid divide by zero in degenerate case (#2296)
+
+       * tools/tiff2rgba.c: close source file on error to make leak 
+       detection easier.
+
+       * libtiff/tif_getimage.c: avoid leaks if TIFFRGBAImageBegin() fails.
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=2295
+
+2011-02-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzma.c: Maintain tif_rawcc/tif_rawcp (CHUNKY_STRING_READ
+       _SUPPORT)
+
+2011-02-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure.ac, configure: Added support for --enable-chunky-strip-read
+       configure option to enable the experimental feature from a couple 
+       months ago for reading big strips in chunks. 
+
+       * configure.ac, tif_read.c, tif_readdir.c, tif_dir.h, tiffiop.h, 
+       tif_write.c, tif_print.c, tif_jpeg.c, tif_dirwrite.c, tif_write.c:
+       Implement optional support for deferring the load of strip/tile 
+       offset and size tags for optimized scanning of directories.  Enabled
+       with the --enable-defer-strile-load configure option (DEFER_STRILE_LOAD
+       #define in tif_config.h). 
+
+2011-02-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_print.c: remove unused variable.
+
+2011-02-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_win32.c: avoid error/warning buffer overrun problem
+       with non-console (popup message) builds on win32. 
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=2293
+
+2011-01-24  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/{tif_dir.{h,c}, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c,
+       tif_print.c, tiff.h, tiffiop.h} : Added support for
+       TIFFTAG_SMINSAMPLEVALUE and TIFFTAG_SMAXSAMPLEVALUE to have different
+       values for each sample. Presents the min/max of all samples by default for
+       compatibility. TIFFSetField/TIFFGetField can be made to handle those tags
+       as arrays by changing the new TIFFTAG_PERSAMPLE pseudo tag.
+       http://www.asmail.be/msg0055458208.html
+
+2011-01-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_pixarlog.c: Note that tif_rawcc/tif_rawcp are not 
+       maintained.  
+
+       * libtiff/tif_zip.c: Maintain tif_rawcc/tif_rawcp when decoding 
+       for CHUNKY_STRIP_READ_SUPPORT.
+
+       * libtiff/tif_jpeg.c: ensure that rawcc and rawcp are maintained
+       during JPEGPreDecode and JPEGDecode calls.  
+       * libtiff/tif_read.c: larger read ahead for CHUNKY_STRIP_READ_SUPPORT, 
+       as compression formats like JPEG keep 16 lines interleaved in a sense 
+       and might need to touch quite a bit of data. 
+       
+       http://trac.osgeo.org/gdal/ticket/3894
+
+2011-01-03  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: Fix regressions with 2 and 3 band images
+       caused by commit on 2010-12-14.  Submitted by e-mail from
+       Even Rouault <even.rouault@mines-paris.org>
+
+2010-12-31  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirwrite.c: Fixed writing of TIFFTAG_REFERENCEBLACKWHITE.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2266
+
+2010-12-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c, man/tiffcp.1: Added support for specifying the
+       compression level parameter (preset) for Deflate and LZMA encoders,
+       e.g "-c lzma:p1" or "-c zip:p9".
+
+       * libtiff/tif_lzma.c: Properly set the LZMA2 compression level
+       (preset) in LZMAVSetField().
+
+2010-12-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/Makefile.am (libtiff_la_SOURCES): Added tif_lzma.c to
+       Makefile.
+
+2010-12-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.ac, libtiff/{tif_codec.c, tif_config.h.in, tiff.h,
+       tiffiop.h, tif_lzma.c}, tools/tiffcp.c, man/tiffcp.1: Implement a new
+       TIFF compression scheme LZMA reserving a new value 34925 for
+       Compression tag. As per
+       bug http://bugzilla.maptools.org/show_bug.cgi?id=2221
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: tolerate some cases where
+       FIELD_COLORMAP is missing
+       http://bugzilla.maptools.org/show_bug.cgi?id=2189
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_read.c: change read_ahead to tmsize_t
+       http://bugzilla.maptools.org/show_bug.cgi?id=2222
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * configure.ac, libtiff/Makefile.am: Build tif_win32.c on
+       Windows except on Cygwin
+       http://bugzilla.maptools.org/show_bug.cgi?id=2224
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/gif2tiff.c: fix buffer overrun
+       http://bugzilla.maptools.org/show_bug.cgi?id=2270
+
+2010-12-14  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order
+       to improve compatibility with various viewers
+       submitted by e-mail from Dwight Kelly <dkelly@apago.com>
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/fax2ps.c: be consistent with page-numbering
+       http://bugzilla.maptools.org/show_bug.cgi?id=2225
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_color.c: prevent crash in handling bad TIFFs
+       resolves CVE-2010-2595
+       http://bugzilla.maptools.org/show_bug.cgi?id=2208
+
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiffcrop.c: new release by Richard Nolde
+       http://bugzilla.maptools.org/show_bug.cgi?id=2004
+
+2010-12-12  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: fix colors for images with RGBA 
+       interleaved data
+       http://bugzilla.maptools.org/show_bug.cgi?id=2250
+
+2010-12-12  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: fix for Zeiss LSM and Canon CR2 files
+       http://bugzilla.maptools.org/show_bug.cgi?id=2164
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: remove invalid duplication for Lab
+       http://bugzilla.maptools.org/show_bug.cgi?id=2162
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: fix use of clumplines calculation
+       http://bugzilla.maptools.org/show_bug.cgi?id=2149
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/fax2ps.c: replace unsafe tmpfile() with mkstemp()
+       http://bugzilla.maptools.org/show_bug.cgi?id=2118
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_ojpeg.c, libtiff/tif_pixarlog.c,
+         libtiff/tif_zip.c: fix build errors for VC6
+       http://bugzilla.maptools.org/show_bug.cgi?id=2105
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_stream.cxx: warnings cleanup
+       http://bugzilla.maptools.org/show_bug.cgi?id=2091
+       * libtiff/tif_dirread.c: warnings cleanup
+       http://bugzilla.maptools.org/show_bug.cgi?id=2092
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2pdf.c: add fill-page option
+       http://bugzilla.maptools.org/show_bug.cgi?id=2051
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_dirread.c: modify warnings
+       http://bugzilla.maptools.org/show_bug.cgi?id=2016
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * libtiff/tif_ojpeg.c: fix buffer overflow on problem data
+        http://bugzilla.maptools.org/show_bug.cgi?id=1999
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiffinfoce.c: strip byte counts are uint64* now
+
+2010-12-11  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_ojpeg.c: fix crash when reading a TIFF with a zero
+        or missing byte-count tag
+        * tools/tiffsplit.c: abort when reading a TIFF without a byte-count
+        per http://bugzilla.maptools.org/show_bug.cgi?id=1996
+
+2010-12-08  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_dirread.c: fix crash when reading a badly-constructed
+        TIFF per http://bugzilla.maptools.org/show_bug.cgi?id=1994
+
+2010-12-06  Lee Howard <faxguy@howardsilvan.com>
+
+        * libtiff/tif_open.c: Fix mode check before opening a file.
+        http://bugzilla.maptools.org/show_bug.cgi?id=1906
+
+2010-11-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff-4.pc.in: Added libtiff pkg-config .pc file support.
+       Patch by Vincent Torri.
+
+2010-10-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffinfo.c: avoid direct reference to _TIFFerrorHandler.
+       
+       * libtiff/tif_config.vc.h: define snprintf to _snprintf for tiff2pdf.
+
+       * libtiff/libtiff.def: export _TIFFCheckMalloc for tools.
+
+2010-09-25  Lee Howard <faxguy@howardsilvan.com>
+
+       * tools/tiff2ps.c: improvements and enhancements from Richard Nolde
+       with additional command line options for Document Title,
+       Document Creator, and Page Orientation
+
+2010-07-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Patch from Richard Nolde to avoid a
+       potentially unterminated buffer due to using an exceptionally long
+       file name.
+
+2010-07-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Fixed ID buffer filling in
+       t2p_write_pdf_trailer(), thanks to Dmitry V. Levin.
+
+2010-07-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Really reset the tag count in CheckDirCount()
+       to expected value as the warning message suggests. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=1963
+
+2010-07-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: Properly handle TIFFTAG_PAGENUMBER,
+       TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING, TIFFTAG_DOTRANGE
+       which should be set by value.
+
+       * libtiff/tif_dirinfo.c: Don't use assertions in _TIFFFieldWithTag()
+       and _TIFFFieldWithName() if the tag is not found in the tag table.
+       This should be normal situation and returned NULL value should be
+       properly handled by the caller.
+
+2010-07-02  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_getimage.c: Avoid wrong math du to the signed/unsigned
+       integer type conversions. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2207
+
+       * tools/{tiff2bw.c, thumbnail.c, pal2rgb.c}: Fix the count for
+       WhitePoint tag as per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2042
+
+       * libtiff/tif_getimage.c: Check the number of samples per pixel when
+       working with YCbCr image in PickContigCase(). As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2216
+
+       * libtiff/tif_dir.c: Set the bogus post-decoding hook when processing
+       TIFFTAG_BITSPERSAMPLE in _TIFFVSetField() for the case of 8 bit when
+       we don't need any post-processing. That helps to reset the hook if we
+       previously set this field to some other value and the hook was
+       initialized accordingly. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2035
+
+2010-07-01  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffgt.c: Properly check the raster buffer allocations for
+       integer overflows. As per bug
+       http://bugzilla.maptools.org/show_bug.cgi?id=2108
+
+       * m4/acinclude.m4: Update GL/GLU/GLUt/Pthread macros from the
+       upstream.
+
+       * libtiff/{tif_aux.c, tif_strip.c, tif_tile.c, tiffiop.h}: Move
+       multiply_32() and multiply_64() functions into tif_aux.c file and
+       rename them into _TIFFMultiply32() and _TIFFMultiply64() respectively.
+
+2010-06-30  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Better generation of ID field in
+       t2p_write_pdf_trailer(). Get rid of GCC aliasing warnings.
+
+       * tools/tiff2pdf.c: Fixed computation of the tile buffer size when
+       converting JPEG encoded tiles.
+
+       * tools/tiff2pdf.c: Better handling of string fields, use static
+       string buffers instead of dynamically allocated, use strncpy() instead
+       of strcpy(), control the string lengths.
+
+2010-06-25  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcp.c: Initialize buffer arrays with zero to avoid
+       referencing to uninitialized memory in some cases (e.g. when tile size
+       set bigger than the image size).
+
+2010-06-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Patch from Richard Nolde. Reject YCbCr
+       subsampled data since tiffcrop currently doesn't support it.  Fix
+       JPEG support.
+
+2010-06-13  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Fix invocation of tag compare function (#2201)
+
+       * tools/tiff2pdf.c: Fix assorted bugs in tiff2pdf: missing "return" 
+       in t2p_read_tiff_size() causes t2p->tiff_datasize to be set entirely 
+       wrong for COMPRESSION_JPEG case, resulting in memory stomp if actual 
+       size is larger.  Also, there are a bunch of places that try to 
+       memset() a malloc'd buffer before checking for malloc failure, which 
+       would result in core dump if there actually were a failure. (#2211)
+
+2010-06-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): Need more castings to
+       avoid compiler warnings if parameter types are not sign
+       consistent.
+
+       * libtiff 4.0.0alpha6 released.
+
+       * tools/tiffcrop.c: Applied patch from Richard Nolde: Corrected
+       European page size dimensions.  Added an option to allow the user
+       to specify a custom page size on the command line.  Fix the case
+       where a page size specified with a fractional part was being
+       coerced to an integer by retyping the variables that define the
+       paper size.
+
+       * html/index.html: Update for the 3.9.3 release.
+
+       * tools/tiffcp.c (tiffcp): Applied Tom Lane's patch to reject
+       YCbCr subsampled data since tiffcp currently doesn't support it.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2097
+
+       * Update libtool to version 2.2.10.
+
+2010-06-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): Work properly if
+       multiplier is zero.
+
+2010-06-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_fax3.c (Fax3SetupState): Yesterday's fix for
+       CVE-2010-1411 was not complete.
+
+       * libtiff/tiffiop.h (TIFFSafeMultiply): New macro to safely
+       multiply two integers.  Returns zero if there is an integer
+       overflow.
+
+       * tools/tiffcp.c (main): tiffcp should not leak memory if an error
+       is reported when reading the input file.
+
+2010-06-08  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Update libtool to version 2.2.8.
+
+       * libtiff/tif_fax3.c (Fax3SetupState): Avoid under-allocation of
+       buffer due to integer overflow in TIFFroundup() and several other
+       potential overflows.  In conjunction with the fix to TIFFhowmany(),
+       fixes CVE-2010-1411.
+
+       * libtiff/tiffiop.h (TIFFhowmany): Return zero if parameters would
+       result in an integer overflow. This causes TIFFroundup() to also
+       return zero if there would be an integer overflow.
+
+       * contrib: Add an emacs formatting mode footer to all source files
+       so that emacs can be effectively used.
+
+2010-06-03  Oliver Chen Feng <scip8183@gmail.com>
+
+       * libtiff/tools/tiffcp.c: add a new option -x to force merged tiff
+       file PAGENUMBER value in sequence for users who care the page
+       sequence, this will also prevent tiff2pdf from creating pdf file from
+       the merged tiff file with wrong page sequence.
+
+2010-05-08  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirread.c: Restored TIFFReadDirEntryFloat function in order
+       to add missing TIFF_SETGET_FLOAT case to TIFFFetchNormalTag.
+       * libtiff/tif_dirinfo.c: Use correct set_field_type for
+       TIFFTAG_PIXAR_FOVCOT so it is readable again (regression from 3.9.2).
+       http://bugzilla.maptools.org/show_bug.cgi?id=2192
+
+2010-05-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Ensure that quality is always set in 
+       JPEGPreEncode(), not just when we want to output local tables.  
+       Otherwise the quality used during compression may not be right and
+       might not match the tables in the tables tag.   This bug only occurs
+       when seeking between directories in the midst of writing blocks.
+       http://trac.osgeo.org/gdal/ticket/3539
+       
+2010-05-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * html/man/TIFFGetField.3tiff.html, html/man/TIFFSetField.3tiff.html:
+       Regenerated from the source.
+
+2010-05-05  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_print.c: Fixed printing of TIFFTAG_REFERENCEBLACKWHITE which
+       had stopped working. Also made it always print 6 floats instead of
+       2*SamplesPerPixel.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2191
+       http://bugzilla.maptools.org/show_bug.cgi?id=2186
+       * man/TIFFGetField.3tiff, man/TIFFSetField.3tiff: Fixed doc to reflect the
+       fact that libtiff considers TIFFTAG_REFERENCEBLACKWHITE to be 6 floats.
+
+2010-05-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Fix to use memcmp(), not memcpy() when checking
+       if the jpeg table was written.  This is a fix for the last fix on 04-21.
+
+2010-04-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: avoid preparing jpeg tables everytime 
+       JPEGSetupEncode() is called if the tables already seem to be 
+       established.  This prevents spurious updates and rewriting of 
+       directories with jpegtables when doing updates to existing images.
+       http://trac.osgeo.org/gdal/ticket/3539
+
+2010-04-20  Olivier Paquet  <olivier.paquet@gmail.com>
+
+       * libtiff/tif_dirinfo.c: Use correct set_field_type for
+       TIFFTAG_PIXAR_IMAGEFULLWIDTH, TIFFTAG_PIXAR_IMAGEFULLLENGTH,
+       TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN and TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA.
+       They were unreadable with TIFF_SETGET_UNDEFINED, a regression from 3.9.2.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2139
+
+2010-04-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_dir.c (_TIFFVSetField): Add a special error case for
+       when the tag count value is zero.  Error handling is still a
+       regression since in 3.9.2, empty tags are skipped (with a warning)
+       rather than returning a hard error and refusing to read the file.
+
+       * tools/ppm2tiff.c (main): While case for parsing comment line
+       requires extra parenthesis to work as expected.  Reported by
+       Thomas Sinclair.
+
+2010-04-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_read.c (primarily): Add support for 
+       CHUNKY_STRIP_READ_SUPPORT where large strips are
+       read in chunks for applications using TIFFReadScanline().
+       This is intended to make it more practical work with very
+       large compressed one-strip files.   Feature is off by default.
+       Enable by defining CHUNK_STRIP_READ_SUPPORT as a macro.
+       http://trac.osgeo.org/gdal/ticket/3514
+
+2010-03-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_flush.c: Use TIFFRewriteDirectory() when flushing
+       directories so previously placed directories will be migrated to
+       the end of file if needed.
+
+2010-03-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c: change type of dec_bitsleft field to uint64
+       to support operating on strips/tiles of more than 256MB.
+       http://trac.osgeo.org/gdal/ticket/3512
+
+2010-03-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_aux.c (_TIFFCheckRealloc): Improve error message so
+       that it is clearly a memory allocation error message, and also
+       includes the size of the allocation request.
+
+2010-02-22  Lee Howard  <faxguy@howardsilvan.com>
+
+       * libtiff/tif_jpeg.c: Do not generate a JPEGTables tag when creating
+       the JPEG TIFF as is is not required in order to prevent it from 
+       being unused and filled with invalid data.  (Leave it to be 
+       generated by later activity.)
+       http://bugzilla.maptools.org/show_bug.cgi?id=2135
+       * tools/tiff2pdf.c: Write the JPEG SOI headers into the TIFF strip 
+       data rather than skipping them.  This fixes the ability to view in
+       Acrobat Reader, Evince, and Ghostscript.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2135
+       * libtiff/tif_fax3.c: Don't return error on badly-terminated MMR
+       strips.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2029
+
+2009-12-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Made JPEGDecodeRaw() check for buffer overruns.
+       Made so that when working with downsampled images a stub function 
+       reporting an error is used for tif_decoderow.  We cannot meaningfully
+       support reading scanlines in this situation.  (#1936)
+
+       * libtiff/tif_jpeg.c: Ensure that tif_scanlinesize is computed after
+       resetting of the upsampling values (gdal:#3259).
+       http://bugzilla.maptools.org/show_bug.cgi?id=1936
+
+2009-11-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * contrib/dbs/tiff-grayscale.c, contrib/tif-palette.c, 
+       tools/ras2tiff.c: Fix resource leaks on error.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2121
+
+       * libtiff/tif_{aux.c,dir.c,dir.h,dirinfo.c}: Return to handling 
+       TIFFTAG_REFERENCEBLACKWHITE as a field in the TIFF directory instead
+       of as a custom(generic) field to avoid a potential reentrancy problem.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2125
+       
+       * libtiff/tif_color.c, libtiff/tif_getimage.c, libtiff/tiffio.h,
+       man/TIFFcolor.3tiff: Make TIFFDisplay argument in TIFFCIELabToRGBInit 
+       const, and display_sRGB static and const.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2124
+
+2009-11-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0alpha5 released.
+
+2009-11-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c: Updated tiffcrop from Richard Nolde.  This
+       version has undergone substantial testing with arbitrary sample
+       bit depths.  Also eliminates GCC compilation warnings.
+
+2009-11-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * port/libport.h: Add extern declarations for getopt standard
+       globals.
+
+2009-10-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_lzw.c (LZWDecode, LZWDecodeCompat): Fix warnings
+       noticed in 64-bit build of libtiff with Visual Studio 2005.
+       Resolves "Bug 2067 - Visual Studio 2005 64-bit warnings in
+       tif_lzw.c", http://bugzilla.maptools.org/show_bug.cgi?id=2067
+
+       * libtiff/tif_pixarlog.c (PixarLogEncode): Fix non-important
+       warning noticed in Visual Studio 2005 build. Resolves "Bug 2068 -
+       Visual Studio 2005 64-bit warning in tif_pixarlog.c",
+       http://bugzilla.maptools.org/show_bug.cgi?id=2068
+
+2009-10-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_dirread.c: Eliminate GCC "dereferencing type-punned
+       pointer" warnings.
+
+2009-10-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * html/tools.html: Add manual page links, and a summary
+       description of tiffcrop.
+
+2009-10-07  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: x86_64 should use the same fill order as i386.
+
+2009-09-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop from Richard
+       Nolde.  Major updates to add significant functionality for reading
+       and writing tile based images with bit depths not a multiple of 8
+       which cannot be handled by tiffcp.
+
+2009-09-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_ojpeg.c (OJPEGWriteHeaderInfo): IJG JPEG 7 needs
+       do_fancy_upsampling=FALSE in order to read raw data.  Resolves
+       "Bug 2090 - OJPEG crash with libjpeg v7".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2090
+
+2009-09-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_getimage.c: Fixed error recognition handling in RGBA
+       interface when stoponerror is set. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2071
+
+2009-08-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/{tiffcrop.c,tiffgt.c}: Applied patch from Oden Eriksson to
+       fix build with gcc when using the "-Wformat
+       -Werror=format-security" flags.
+
+2009-08-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/{bmp2tiff_palette.sh, bmp2tiff_rgb.sh, gif2tiff.sh,
+       ppm2tiff_pbm.sh, ppm2tiff_pgm.sh, ppm2tiff_ppm.sh}: Additional
+       utilities tests.
+
+2009-08-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiffinfo.c: tiffinfo should return error status to the
+       caller.  Register a private error callback to accomplish that.
+
+       * test/Makefile.am (TIFFIMAGES): Add test images in BMP, GIF, and
+       PNM formats so that we will be able to test more of the tools.
+       While adding these test images I notice that bmp2tiff and gif2tiff
+       only support ancient versions of their respective formats.
+
+2009-08-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff 4.0.0alpha4 released.
+
+       * HOWTO-RELEASE: Improved release instructions.
+
+2009-08-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * man/{TIFFClose.3tiff,raw2tiff.1,tiffcmp.1,tiffsplit.1}: Applied
+       fixes for "Bug 2023 - nroff errors in manual pages".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2023
+
+       * tools/{rgb2ycbcr.c, tiff2rgba.c}: Applied fixes for "Bug 2079 -
+       CVE-2009-2347 libtiff: integer overflows in various inter-color
+       space conversion tools".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2079
+
+       * libtiff/tif_print.c (TIFFPrintDirectory): Apply fix from Jay
+       Berkenbilt for "Bug 2024 - possible null pointer dereference with
+       one-line fix".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2024
+
+       * libtiff/tif_dirread.c (TIFFReadCustomDirectory): Apply patch
+       from Jay Berkenbilt for "Bug 1895 - logic error in tif_dirread.c:
+       segfault after setting tdir_tag = IGNORE".      
+       http://bugzilla.maptools.org/show_bug.cgi?id=1895
+
+2009-08-23  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/Makefile.am, test/tiffcrop*.sh: Split previously existing
+       tiffcrop.sh into a collection of many specific tests.  Re-wrote
+       all of the existing tests to be based on some simple shell
+       functions.  Make distcheck works again.
+       
+       Export certain variables (MAKE, MAKEFLAGS, MEMCHECK) to tests and
+       added 'memcheck' and 'ptrcheck' targets to make it easy to run the
+       tests under valgrind.
+
+2009-08-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/tiffcp-logluv.sh: Fix test so that it works with a VPATH
+       build.
+
+       * test/Makefile.am (AUTOMAKE_OPTIONS): Colorized tests was not
+       actually activated since it needed to be enabled in this
+       Makefile.am.  Also activated parallel-tests mode since it offers
+       useful features such as per-test .log files and a summary test
+       report .log file.
+
+2009-08-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Updated autotools.  Autoconf 2.64, Automake 1.11,
+       libtool 2.2.6.  Enabled support for silent build rules
+       (--enable-silent-rules or 'make V=0') and colorized tests.
+
+       * html/{index.html, v3.9.0.html}: Update for 3.9.0 release.
+
+2009-06-30  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tests/tiffcp-logluv.sh: minimal testing of sgilog compression.
+
+       * tools/tiffcp.c: add -c sgilog support.
+
+       * libtiff/tif_luv.c: correct return codes from encoderow to be
+       1 on success instead of zero.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2069
+
+       * libtiff/tif_lzw.c: back out patch from #2065 and apply patch from 
+       #1085 for a better underflow fix that errors properly.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2065
+       http://bugzilla.maptools.org/show_bug.cgi?id=1985
+
+2009-06-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_strip.c: Remove an inappropriate assertion that often
+       fails on oddly sized 12bit jpeg compressed ycbcr images.
+
+2009-06-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c: Fix buffer underflow bug. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2065
+
+2009-06-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * configure.ac, libtiff/tif_jpeg.c, libtiff/tif_jpeg_12.c: add support
+       for dual mode 8/12 bit jpeg support. 
+
+2009-06-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: do not override the planar configuration to be
+       contig for one sample files if planar configuration is already set.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2057
+
+2009-06-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/libtiff.def: Add TIFFUnsetField.
+
+2009-05-03  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/{tif_jpeg.c,tif_ojpeg.c,tif_getimage.c}: Fixed various
+       error reports to use "%s" as format string.
+       http://trac.osgeo.org/gdal/ticket/2976
+       
+2009-03-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/{tif_fax3.c,tif_jpeg.c,tif_ojpeg.c}: Fix printdir chaining
+       for some codecs (#2020).
+
+2009-02-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_luv.c: Fix handling of tiled logluv images. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=2005
+
+2009-02-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Improve allocation safety when allocated
+       buffer for large tags.  (#1998)  Related to (#1993)
+
+2009-02-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffcrop.c: Don't default image->res_unit to INCH.  Now the
+       test suite should pass.
+
+2009-02-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Re-incorporated a sanity check on tag size,
+       but at the 2GB boundary to avoid overflow on 32bit systems. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1993
+
+       * libtiff/tif_dirread.c: Remove some assertions that blow due to
+       corrupt files rather than in response to library internal 
+       inconsistencies.  
+       http://bugzilla.maptools.org/show_bug.cgi?id=1995
+       http://bugzilla.maptools.org/show_bug.cgi?id=1991
+
+       * libtiff/tif_dirread.c: Fixed testing for failed result from
+       TIFFReadDirectoryFindFieldInfo().  
+       http://bugzilla.maptools.org/show_bug.cgi?id=1992
+
+2009-01-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_predict.c: Add support for 32bit integer horz. predictors.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1911
+
+       * libtiff/tif_dirwrite.c: Fix byte swapping of next directory offset.
+       
+       http://bugzilla.maptools.org/show_bug.cgi?id=1924
+
+       * tools/tiffcrop.c: initialize xres/yres values. 
+
+       * test/*.sh - default ${srcdir} to local directory.
+
+       * test/common.sh - start verbose mode after common settings. 
+
+       * libtiff/tif_dirinfo.c: Replace lfind() with local equivelent to 
+       avoid type mismatches on different platforms. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1889
+
+2009-01-22  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/{fax2tiff.c,thumbnail.c,tiff2pdf.c,tiff2ps.c,tiffdump.c,
+       tiffsplit.c}: avoid warnings, mostly 32bit/64bit casting issues.
+
+       * port,tools: Introduce libport.h, and include in tools if NEED_LIBPORT
+       defined, primarily to reduce prototype warnings on windows. 
+
+       * libtiff/tif_dirinfo.c,tif_dirread.c: Avoid warnings
+       about unused parameters, and uninitialized variables.
+
+2009-01-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/common.sh: Execute tests like 'make VERBOSE=TRUE check' in
+       order to trace full execution detail while executing the test suite.
+
+2009-01-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffsplit.c: fix sampleformat to be shortv instead of longv.
+
+2009-01-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/Makefile.am (CLEANFILES): Make sure that test output files
+       are removed by 'make clean'
+
+       * Update autotools for 4.0.0 beta3
+
+       * 4.0.0 beta3 produced.
+
+2009-01-12  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/tiffcrop.sh: New test script for tiffcrop from Richard
+       Nolde.
+
+       * tools/tiff2ps.c: Remove spurious message to stderr.
+
+2009-01-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiff2ps.c: Incorporated significant functionality update
+       from Richard Nolde.  In particular, support for rotating the image
+       by 90, 180, 270, and 'auto' has been added.
+
+       * man/tiffcrop.1: Incorporated documentation updates from Richard
+       Nolde.
+
+       * tools/tiffcrop.c: Incorporated significant functionality update
+       from Richard Nolde.
+
+2008-12-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tiffio.h: GCC will now validate format specifications
+       for TIFFError(), TIFFErrorExt(), TIFFWarning(), and
+       TIFFWarningExt() in order to reveal bugs.
+
+       * Many fixes throughout to work better as a 64-bit build. 
+
+2008-12-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/{tiff2pdf.c, tiff2ps.c, tiffinfo.c}: Offset and length
+       tags now require 64-bit parameter rather than 32-bit.
+
+       * libtiff/tif_dirread.c: Fixed issues with unaligned access to
+       64-bit values.
+
+       * tools/thumbnail.c: Eliminate crash noticed while running test
+       suite.
+
+2008-12-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_ojpeg.c (OJPEGLibjpegJpegSourceMgrFillInputBuffer):
+       Initialize stack variables to avoid compiler warning.
+
+       * tools/tiffinfoce.c (main): Use toff_t for offset type when
+       retrieving offset of EXIF IFD.
+
+       * libtiff/tiffio.h: Undeprecate toff_t and restore its use in the
+       TIFFClientOpen() callback and other external function definitions.
+
+       * tools/tiffinfo.c (main): Offset to EXIF IFD requires a 64-bit
+       type now.  Fixes crash when dumping files containing an EXIF IFD.
+
+       * m4/libtool.m4: Update to libtool 2.2.6.
+
+2008-12-21  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dir.c, tiffio.h: Introduce TIFFUnsetField() function.
+
+       * libtiff/tif_jpeg.c: Avoid errors if the application writes a full
+       strip for the last partial strip in a jpeg compressed file.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1981
+
+2008-10-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_flush.c: Make sure that BEENWRITING is cleared when
+       we take the shortcut to only update the strip/tile offsets in place.
+       http://trac.osgeo.org/gdal/ticket/2621
+
+2008-10-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_jbig.c: Support the JBIG-KIT 2.0 (compatibility with
+       the older versions retained).
+
+2008-10-09  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Add #ifdefs for changes needed if using
+       IPP enabled version of libjpeg from Intel. 
+       http://bugzilla.maptools.org/show_bug.cgi?id=1951
+
+2008-09-05  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Use byte counts of proper size (uint64).
+       Required for libtiff 4.0.
+
+       * tools/tiffsplit.c: Use dynamically allocated array instead of static
+       when constructing output file names.
+
+2008-09-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffsplit.c: Get rid of unsafe strcpy()/strcat() calls when
+       doing the filename/path construction.
+
+       * tools/tiff2pdf.c: More appropriate format string in
+       t2p_write_pdf_string(); avoid signed/unsigned mismatch.
+
+       * libtiff/tif_lzw.c: Properly zero out the codetable. As per bug
+
+       http://bugzilla.maptools.org/show_bug.cgi?id=1929
+
+       * libtiff/tif_lzw.c: Properly zero out the string table. Fixes
+       CVE-2008-2327 security issue.
+
+2008-09-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirread.c: Avoid unused TIFFReadDirEntryFloat() function.
+
+       * libtiff/tif_dirwrite.c: modified to write IFDs as either IFD8 or IFD
+       depending on whether the file is bigtiff or classic tiff.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1917
+
+2008-08-12  Edward Lam  <edward@sidefx.com>
+
+       * tools/tiffdump.c: When compiling for Microsoft Windows, apply
+       consistent (__int64) casting when testing if _lseeki64 has
+       successfully seeked as requested.  This is necessary for large
+       file support to work since off_t is only 32-bit.
+
+2008-07-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_strip.c: Replace assertions related to samplesperpixel != 3 or 
+       the subsampling values not being 1, 2 or 4 (for jpeg compressed images)
+       with control logic to return runtime errors (c/o Even Rouault) (#1927).
+
+2008-06-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiffcrop.c: Fix some portability problems.
+
+       * libtiff/tif_ojpeg.c: Use same jpeg/win32 boolean/FAR hacks as are
+       used in tif_jpeg.c.
+
+       * libtiff/tif_win32.c: Ensure TIFFOpenW() uses same FILE_SHARE flags
+       as TIFFOpen().
+
+2008-06-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: Fix alignment problems affecting architectures
+       like Sparc/Solaris.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1892
+
+2008-05-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff.def: Add TIFFFindField
+       http://bugzilla.maptools.org/show_bug.cgi?id=1891
+
+2008-05-26  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_config.*.h, tiffconf.*.h: Remove SIZEOF_LONG definition, unused.
+
+       * li2008-04-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+btiff/tif_win32.c: Replace custom Win32 memory api with generic
+       POSIX one.  No apparent value to use of GlobalAlloc() in the modern
+       age.  http://bugzilla.maptools.org/show_bug.cgi?id=1885
+
+       * libtiff/tiffconf.vc.h: Added JBIG_SUPPORT and MDI_SUPPORT items
+       in windows version (care of Edward Lam).
+
+2008-05-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_codec.c: Avoid NULL pointer dereferencing for exotic 
+       compression codec codes.
+
+       * tif_dirwrite.c: fix potential memory leak.
+
+       * tif_dirread.c: Fix unchecked malloc result.
+2008-05-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test {tiff2pdf.sh tiff2ps-EPS1.sh tiff2ps-PS1.sh tiff2ps-PS2.sh
+       tiff2ps-PS3.sh tiffcp-g3-1d-fill.sh tiffcp-g3-1d.sh
+       tiffcp-g3-2d-fill.sh tiffcp-g3-2d.sh tiffcp-g3.sh tiffcp-g4.sh
+       tiffcp-split-join.sh tiffcp-split.sh tiffcp-thumbnail.sh
+       tiffdump.sh tiffinfo.sh}: Added more test scripts based on
+       suggestions from Lee Howard posted to the tiff list on 13 Sep
+       2007.
+
+2008-05-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.c: Add an assert in an effort to detect a
+       possible runtime problem reported by coverity.
+
+       * contrib/iptcutil/iptcutil.c: Fixed memory leak of str.
+
+       * tools/tiffcrop.c, man/tiffcrop.1: Major update from Richard Nolde.
+       http://bugzilla.maptools.org/show_bug.cgi?id=1888
+
+       * tools/tiffdither.c: remove dead onestrip code.  avoid memory leak.
+
+       * tools/rgb2ycbcr.c: fix memory leak of raster buffer.
+
+       * tools/tiffcp.c: Simplify inknames code to avoid pointless test.
+       Cleanup scanline allocation to avoid coverity warning.
+
+       * tools/thumbnail.c: Check for TIFFOpen() failure.
+
+2008-05-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirinfo.c: Use TIFF_SETGET_ASCII for PIXAR_TEXTUREFORMAT
+       and PIXAR_WRAPMODES instead of TIFF_SETGET_UNDEFINED.  Not exactly clear
+       why this is needed. 
+
+2008-05-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * Makefile.am (ACLOCAL_AMFLAGS): Libtool 2.2.4 does not like
+       "ACLOCAL_AMFLAGS=-I ./m4".  It wants "ACLOCAL_AMFLAGS=-I m4".
+
+2008-04-15  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * test/: Test suite updated. Everything is passed now.
+
+       * libtiff/tif_dirinfo.c: Fixed description of the
+       TIFFTAG_NUMBEROFINKS tag.
+
+2008-04-14  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dirread.c, tif_dirwrite.c, tiffiop.h}:
+       Get rid of some of "dereferencing type-punned" warnings by converting
+       tdir_offset field of TIFFDirEntry structure into union.
+
+2008-04-10  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_flush.c, tif_dirwrite.c, tiffio.h, tiffiop.h}:
+       TIFFRewriteField() renamed into _TIFFRewriteField() and moved out
+       from the public interface. Type of its 'count' parameter changed
+       from uint32 to tmsize_t.
+
+       * /libtiff/tiffiop.h: Make tif_nfields and tif_nfieldscompat fields
+       of the tiff structure have the size_t type instead of uint32.
+
+2008-04-09  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffdump.c: Added support for MSVS 6.0.
+
+       * libtiff/tif_dirread.c: Use custom functions _TIFFUInt64ToFloat()
+       and _TIFFUInt64ToDouble() to convert 64-bit integers into floating
+       point values on MSVS 6.0 platform.
+
+2008-03-14  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirread.c: Removed sanity checks on tags larger than 4MB in
+       TIFFReadDirEntryArray() since they are interfering with seemingly 
+       legitimate files.  http://trac.osgeo.org/gdal/ticket/2005
+
+2008-02-09  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Added handling for the case of number of values for 
+       PageNumber tag different from 2 (previously resulted in an assert 
+       indicating lack of handling and was forgotten about)
+
+2008-02-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Do not try to fixup subsampling tags based on 
+       the actual jpeg data stream if the first strip/tile has zero size.
+       This is the case when GDAL creates a new file with zero sizes, closes
+       and reopens it.
+
+2008-01-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2ps.c: fix up 64bit issues (from Edward Lam). 
+
+2008-01-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_dirwrite.c: #ifdef out lots of unused functions.
+
+       * Makefile.vc, libtiff/Makefile.vc, tools/Makefile.vc: Improve clean
+       targets.
+
+       * tools/tiffinfo.c, tools/tiffcmp.c, tools/gif2tiff.c, tools/bmp2tiff.c
+       tools/tiff2pdf.c: Fix 64-bit warnings when compiling under MSVC 2005 
+       (x64). 
+
+       * tools/tiffset.c: Changes to reflect the fact that TIFFFieldWithTag() 
+       and TIFFFieldWithName() now return TIFFField pointers instead of
+       TIFFFieldInfo pointers.
+
+       * tools/tiffdump.c: Added ssize_t typedef on Windows since it doesn't 
+       exist. This makes it compile again on Windows
+
+       * tif_aux.c, tif_getimage.c, tif_next.c, tif_predict.c, tif_win32.c,
+       tiffconf.vc.h: Various 64bit fixes from Edward Lam identified on win64.
+
+       * test/rewrite_tag.c: New test for TIFFRewriteField().
+
+2007-12-31  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Added TIFFRewriteField().  This new function
+       rewrites one field "on disk" updating an existing directory 
+       entry.  Lots of limitations still...
+
+       * tiffiop.h, tif_write.c, tif_dirread.c, tif_flush.c: Keep track of 
+       TIFF_DIRTYSTRIP separately from TIFF_DIRTYDIRECT to indicate that 
+       the strip offset/size values are dirty but nothing else about the 
+       directory is dirty.  In flush handle "just stripmaps dirty" as a
+       special case that just rewrites these values without otherwise 
+       modifying the directory on disk using TIFFRewriteField().  
+
+       We also modify logic so that in update mode the directory is not
+       marked dirty on read, but only when something is changed.  This
+       means we need to keep track of updates to the stripmap stuff in 
+       TIFFAppendToStrip().
+
+2007-12-10  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_jpeg.c: Improve ability to switch between encoding and decoding
+       in the jpeg code (gdal bug #2033).
+
+2007-11-23  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_read.c, tif_write.c,
+       tiffiop.h: Added TIFF_BUF4WRITE flag to indicate if contents of the 
+       rawcp/rawcc buffer are for writing and thus may require flushing.
+       Necessary to distinguish whether they need to be written to disk when
+       in mixed read/write mode and doing a mixture of writing followed by
+       reading.  http://trac.osgeo.org/gdal/ticket/1758
+
+2007-11-23  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * configure.com, libtiff/tif_vms.c: Better OpenVMS support. Patches
+       from Alexey Chupahin.
+
+2007-11-02  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for 
+       establishing if an existing tile can be rewritten to the same location 
+       by comparing the current size to all the other blocks in the same 
+       directory.  This is dangerous in many situations and can easily 
+       corrupt a file.  (observed in esoteric GDAL situation that's hard to
+       document).  This change involves leaving the stripbytecount[] values 
+       unaltered till TIFFAppendToStrip().  Now we only write a block back
+       to the same location it used to be at if the new data is the same
+       size or smaller - otherwise we move it to the end of file.
+
+       * tif_dirwrite.c: Try to avoid writing out a full readbuffer of tile
+       data when writing the directory just because we have BEENWRITING at
+       some point in the past.  This was causing odd junk to be written out
+       in a tile of data when a single tile had an interleaving of reading 
+       and writing with reading last.  (highlighted by gdal 
+       autotest/gcore/tif_write.py test 7. 
+
+       * tif_predict.c: use working buffer in PredictorEncodeTile to avoid
+       modifying callers buffer. 
+       http://trac.osgeo.org/gdal/ticket/1965
+
+       * tif_predict.c/h: more fixes related to last item, keeping a 
+       distinct pfunc for encode and decode cases as these were getting
+       mixed up sometimes.
+       http://trac.osgeo.org/gdal/ticket/1948
+
+2007-11-01  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that 
+       predictor based encoding and decoding works in read-write update
+       mode properly. 
+       http://trac.osgeo.org/gdal/ticket/1948
+
+2007-10-24  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Fixed problem with bogus file triggering 
+       assert(td->td_planarconfig == PLANARCONFIG_CONTIG) in 
+       ChopUpSingleUncompressedStrip
+
+2007-10-22  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_jpeg.c: Resolved buffer incrementation bug that lead to faulty images
+       at best, access violation at worst, when subsampled JPEG compressed imagery
+       is decoded without the JPEG_COLORMODE feature
+
+2007-10-11  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * html/index.html: Update "people responsible" section.
+
+2007-10-05  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: Fix problem with alpha setting in some cases
+       as reported on the mailing list.
+
+2007-10-01  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * changed some more incorrect %lud printf flags to %lu
+
+2007-09-29  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Strip chopping interfered badly with uncompressed 
+       subsampled images because it tried to divide subsampled rowblocks, 
+       leading to all sorts of errors throughout the library for these 
+       images. Fixed by making strip chopping divide in row counts that 
+       are a multiple of vertical subsampling value.
+
+2007-09-28  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Logical cast working around compiler warning
+
+       * tif_read.c: Correction of some error flags and parameter lists
+
+2007-09-27  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirread.c: Made calculation of td_maxsamplevalue more robust
+       when dealing with large bitspersample values, shutting up purification
+       tools that warn about truncation, though it remains incorrect and 
+       indicates a conceptual problem there.
+
+       * tif_open.c: Moved early exit in case of 'h' flag (to disable reading 
+       of first IFD) to proper place because it badly interfered with memory 
+       mapping, resulting in mapping flag even with dummy mapping functions 
+       that returned 0 whilst at the same time the mapping tif_size wasn't 
+       set, thus resulting in continuous incorrect beyond-eof errors.
+
+2007-09-24  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * tif_dirinfo.c: Fixed (MSVC) compiler reports about 
+       inconsistent use of const in tiffFields and exifFields definition
+
+2007-09-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Always write tile/strip offsets and sizes
+       using LONG8 type when output format is BigTIFF.  The
+       TIFFWriteDirectoryTagLongLong8Array() function was restructured
+       accordingly.
+
+       * tif_dirread.c: Improvements to error reporting text in 
+       TIFFFetchDirectory().
+
+2007-09-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * test/images: Added a small collection of test images for use by
+       test programs and scripts.
+       * test/tiffinfo.sh: A trivial example test script.
+       * test/common.sh: Added small script for setting the environment
+       used by script-based tests.
+
+2007-08-24  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: Write the tif_nextdiroff value instead of a fixed
+       zero when writing directory contents to preserve the ability to 
+       rewrite directories in place, even in the middle of a directory
+       chain.
+
+       * tif_dirinfo.c:  _TIFFMergeFields() now only merges in field
+       definitions that are missing.  Existing definitions are silently
+       ignored. 
+
+       * tif_dirread.c: Add runtime error for fields for which no definition
+       is found (in addition to an assert for developers) in 
+       TIFFFetchNormalTag().  Not sure if this is needed, but it seems 
+       prudent.
+
+2007-08-10  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: removed SubsamplingHor and SubsamplingVer 
+       from _TIFFRGBAImage structure to revert unwanted ABI change.
+
+2007-08-10  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_win32.c: use SetFilePointer instead of 
+       SetFilePointerEx, as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1580
+
+2007-07-19  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_stream.cxx: Put all callback functions declarations
+       inside extern "C" block.
+
+       * libtiff/{tif_lzw.c, tif_luv.c, tif_dumpmode.c, tif_print.c,
+       tif_read.c, tif_strip.c, tif_thunder.c}: Use "%I64d" printf()
+       formatter instead of "%lld" with MSVC compiler.
+
+       * libtiff/{tiffiop.h, tif_aux.c}:  Added _TIFFUInt64ToFloat() and
+       _TIFFUInt64ToDouble() functions.
+
+2007-07-18  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Handle the case of MSVC 6 when using 64-bit
+       integer constants.
+
+       * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h, 
+       remove tif_config.h/tiffconf.h during cleaning. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1573
+
+       * libtiff/tif_unix.c: Do not use O_LARGEFILE. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1577
+
+2007-07-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff 4.0.0alpha released.
+
+2007-07-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Added missed extern optind as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1567
+
+       * libtiff/{tif_close.c, tif_dirinfo.c, tiffiop.c, tif_dirread.c,
+       tif_dir.h, tif_dir.c, tiffio.h}: Transition to the new-style tag
+       extending scheme completed.
+
+2007-07-11  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/tif_stream.cxx: Adapt to use toff_t again.  Update to
+       use standard C++ library size types and attempt to detect overflow
+       cases.
+
+2007-07-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_jpeg.c, tif_dir.h, tif_dir.c, tif_dirinfo.c, tiffio.h,
+       tif_ojpeg.c, tif_print.c, tif_fax3.c, tif_dirread.c}: More work on new
+       tag extending scheme. Use the new scheme everywhere.
+
+       * libtiff/{tif_zip.c, tif_predict.c, tif_pixarlog.c, tif_luv.c,
+       tif_fax3.c, tif_dirread.c, tif_dirwrite.c, tif_close.c, tif_ojpeg.c,
+       tif_jpeg.c, tif_dirinfo.c, tif_dir.h, tiffio.h, tiffiop.h}:
+       TIFFFIeldInfo structure replaced with TIFFField structure.
+       TIFFFieldInfo retained for the backward compatibility.
+
+2007-07-05  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * tools/tiff2pdf.c: Fix a compile problem when JPEG_SUPPORT is not
+       defined.
+
+2007-07-04  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.c, tiff.h, tiffio.h, libtiff.def}: Unused
+       TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration
+       removed.
+
+       * libtiff/{tif_dirinfo.c, tif_fax3.c, tif_jbig.c, tif_jpeg.c}: Move
+       tags TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS,
+       TIFFTAG_FAXRECVTIME and TIFFTAG_FAXDCS to the common tag directory.
+       These tags are not codec-specific and relate to image content, so
+       process them as other normal tags.
+
+       * libtiff/{tiffio.h, tif_dir.h}: TIFFTagValue structure moved from the
+       public tiffio.h to private tif_dir.h.
+
+       * contrib/{acorn, mac-cw, mac-mpw}: Removed as unmaintained and
+       outdated.
+
+2007-07-03  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff{tif_acorn.c, tif_apple.c, tif_atari.c, tif_msdos.c,
+       tif_win3.c}: Obsoleted portability stuff removed.
+
+       * tools/tiff2ps.c:  Added support 16-bit images as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1566
+
+       Patch from William Bader.
+
+       * tools/tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
+       significant upgrade of the whole utility as per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1560
+
+       Now we don't need tiffiop.h in tiff2pdf anymore and will open output
+       PDF file using TIFFClientOpen() machinery as it is implemented
+       by Leon Bottou.
+
+2007-06-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * configure.ac: Fix typo when substituting value for unsigned 8 bit type.
+       Added support for a TIFF_PTRDIFF_T type to use when doing pointer arithmetic.
+       Added support for a TIFF_SSIZE_T in order to return memory sizes but still
+       allow returning -1 for errors.
+       * libtiff/tiffconf.vc.h: Add porting type defintions for WIN32.
+
+2007-06-25  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * port/strtoull.c: New porting function in case strtoull() is not
+       available on the target system. 
+       * configure.ac: Add configure support for determining sized types
+       in a portable way and performing necessary substitutions in
+       tif_config.h and tiffconf.h.  Updated tiff.h to use the new
+       definitions.
+
+2007-04-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Check the tmpfile() return status as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=154
+
+2007-04-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_dir.h, tif_dirread.c, tif_dirinfo.c, tif_jpeg.c,
+       tif_fax3.c, tif_jbig.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c,
+       tif_predict.c, tif_zip.c}: Finally fix bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1274
+
+       by introducing _TIFFMergeFieldInfo() returning integer error status
+       instead of void in case of problems with field merging (e.g., if the
+       field with such a tag already registered). TIFFMergeFieldInfo() in
+       public API remains void. Use _TIFFMergeFieldInfo() everywhere and
+       check returned value.
+
+2007-04-07  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output 
+       blocks in TIFF_DownSample_Subsampled() (bug 1542).
+
+2007-04-06  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
+       will convert from decompressor to compressor or compress to decompress
+       if required by the force arguments.  This works around a problem in
+       where the JPEGFixupTestSubsampling() may cause a decompressor to 
+       be setup on a directory when later a compressor is required with the
+       force flag set.  Occurs with the addtiffo program for instance. 
+
+2007-04-06  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffcrop.c, man/tiffcrop.1: Significant update in
+       functionality from Richard Nolde. As per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1525
+
+2007-03-28  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_fax3.c: "inline static" -> "static inline" for IRIC CC.
+
+2007-03-17  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * start of BigTIFF upgrade - CVS HEAD unstable until further notice
+
+2007-03-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: workaround for 'Fractional scanline' error reading
+       OJPEG images with rowsperstrip that is not a multiple of vertical subsampling
+       factor. This bug is mentioned in:
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1390
+       http://www.asmail.be/msg0054766825.html 
+
+2007-03-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_win32.c: made inclusion of windows.h unconditional
+
+       * libtiff/tif_win32.c: replaced preprocessor indication for consiously
+       unused arguments by standard C indication for the same
+
+2007-02-27  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirread.c: Use uint32 type instead of tsize_t in byte
+       counters in TIFFFetchData(). Should finally fix the issue
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=890
+
+2007-02-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiffset.c: Properly handle tags with TIFF_VARIABLE writecount.
+       As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1350
+
+       * libtiff/tif_dirread.c: Added special function to handle
+       SubjectDistance EXIF tag as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1362
+
+       * tools/tiff2pdf.c: Do not assume inches when the resolution units
+       do not specified. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1366
+
+       * tools/{tiffcp.c, tiffcrop.c}: Do not change RowsPerStrip value if
+       it was set as infinite. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1368
+
+       * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop utility contributed
+       by Richard Nolde. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1383
+
+2007-02-22  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: Workaround for incorrect TIFFs with
+       ExtraSamples == 999 produced by Corel Draw. As per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1490
+
+       * libtiff/{tif_dirread.c, tif_read.c}: Type of the byte counters
+       changed from tsize_t to uint32 to be able to work with data arrays
+       larger than 2GB. Fixes bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=890
+       
+       Idea submitted by Matt Hancher.
+
+2007-01-31  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tif2rgba.c: This utility does not work properly on big-endian
+       architectures. It was fixed including the bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1149
+
+2007-01-15  Mateusz Loskot <mateusz@loskot.net>
+
+       * Submitted libtiff port for Windows CE platform
+       * libtiff/tif_config.wince.h: Added configuration header for WinCE.
+       * libtiff/tiffconf.wince.h: Ported old configuration header for WinCE.
+       * libtiff/tif_wince.c: Added WinCE-specific implementation of some
+       functons from tif_win32.c.
+       * libtiff/tif_win32.c: Disabled some functions already reimplemented in tif_wince.c.
+       * libtiff/tiffiop.h, port/lfind.c: Added conditional include of some
+       standard header files for Windows CE build.
+       * tools/tiffinfoce.c: Ported tiffinfo utility for Windows CE.
+
+2006-11-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if 
+       we move a strip. 
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1359  
+
+2006-10-13  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dir.c: More fixes for vulnerabilities, reported
+       in Gentoo bug ():
+       
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+       * libtiff/contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
+       Though it is still far from the state of being working and useful.
+
+2006-10-12  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_fax3.c: Save the state of printdir codec dependent
+       method.
+
+       * libtiff/tif_jpeg.c: Save the state of printdir codec dependent method
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1273
+
+       * libtiff/tif_win32.c: Fixed problem with offset value manipulation
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1322
+
+       * libtiff/{tif_read.c, tif_jpeg.c, tif_dir.c}: More fixes for
+       vulnerabilities, reported in Gentoo bug ():
+
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+2006-09-28  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_fax3.c, tif_next.c, tif_pixarlog.c}: Fixed multiple
+       vulnerabilities, as per Gentoo bug ():
+
+       http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+2006-09-27  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_lzw.c, libtiff/tif_zip.c: Fixed problems with mixing
+       encoding and decoding on the same read-write TIFF handle.  The LZW
+       code can now maintain encode and decode state at the same time. The
+       ZIP code will switch back and forth as needed.  
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=757
+
+2006-09-20  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and 
+       tif_config.vc.h for easier identification by folks using an IDE.
+
+2006-07-25  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_msdos.c: Avoid handle leak for failed opens.  c/o Thierry Pierron
+
+2006-07-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: take care not to flush out buffer of strip/tile
+       data in _TIFFWriteDirectory if TIFF_BEENWRITING not set.  Relates
+       to bug report by Peng Gao with black strip at bottom of images.
+
+2006-07-12  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_dirwrite.c: make sure to use uint32 for wordcount in 
+       TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
+       It already seems to have been done for other field types.  Needed
+       for "tiffset" on files with geotiff ascii text.
+
+2006-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * {configure.ac, libtiff/tif_config.h.vc, libtiff/tif_jbig.c}
+       (JBIGDecode): jbg_newlen is not available in older JBIG-KIT and
+       its use does not appear to be required, so use it only when it is
+       available.
+
+2006-06-24  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961).
+
+       * libtiff/tif_dirread.c: Move IFD fetching code in the separate
+       function TIFFFetchDirectory() avoiding code duplication in
+       TIFFReadDirectory() and TIFFReadCustomDirectory().
+
+2006-06-19  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tools/tiff2pdf.c: Fix handling of -q values.
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=587
+
+2006-06-17  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
+       files.  Modified TIFFReadDirectory() to not invoke 
+       EstimateStripByteCounts() for case where entry 0 and 1 are unequal
+       but one of them is zero. 
+         http://bugzilla.remotesensing.org/show_bug.cgi?id=1204
+
+2006-06-08  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * libtiff/{tif_open.c, tif_dirread.c, tiffiop.h}: Move IFD looping
+       checking code in the separate function TIFFCheckDirOffset().
+
+       * libtiff/tif_aux.c: Added _TIFFCheckRealloc() function.
+
+       * tools/tiffcmp.c: Fixed floating point comparison logic as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1191
+
+       * libtiff/tif_fax3.c: Fixed problems in fax decoder as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1194
+
+       * tools/tiff2pdf.c: Fixed buffer overflow condition in
+       t2p_write_pdf_string() as per bug
+
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1196
+
+2006-06-07  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * {configure, configure.ac, libtiff/tif_jbig.c, tools/tiffcp.c}: Added
+       support for JBIG compression scheme (34661 code) contributed by Lee
+       Howard. As per bug
+       
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=896
+
+       * configure, configure.ac: OJPEG support enabled by default.
+
+       * contrib/ojpeg/: Removed. New OJPEG support does not need this patch.
+
+2006-06-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+       * libtiff/{tif_dirinfo.c, tif_print.c} : Fix crash in
+       TIFFPrintDirectory().  Joris Van Damme authored the fix.
+
+2006-04-21  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/tiff2pdf.c: Unified line ending characters (always use '\n')
+       as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1163
+
+       * README.vms, Makefile.am, configure.com, libtiff/{Makefile.am,
+       tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}:
+       Added support for OpenVMS by Alexey Chupahin, elvis_75@mail.ru.
+
+2006-04-20  Andrey Kiselev  <dron@ak4719.spb.edu>
+
+       * tools/{fax2ps.c, fax2tiff.c, ppm2tiff.c, ras2tiff.c, tiff2pdf.c}:
+       Properly set the binary mode for stdin stream as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1141
+
+       * man/{bmp2tiff.1, fax2ps.1, fax2tiff.1, gif2tiff.1, ras2tiff.1,
+       raw2tiff.1, rgb2ycbcr.1, sgi2tiff.1, tiff2bw.1, tiff2pdf.1, tiff2ps.1,
+       tiff2rgba.1, tiffcmp.1, tiffcp.1, tiffdither.1, tiffdump.1, tiffgt.1,
+       tiffset.1}: Improvements in page formatting as per bug
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1140
+
+       * html/tools.html, html/man/Makefile.am, tools/tiff2pdf.c: Fixed
+       typos as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1139
+
+2006-04-18  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * nmake.opt: use /EHsc for VS2005 compatibility.  Also define
+       _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005. 
+
+2006-04-12  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: Added support for planarconfig separate
+       non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1])
+
+2006-04-11  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: Revision of all RGB(A) put routines
+       - Conversion of unassociated alpha to associated alpha now done with
+         more performant LUT, and calculation more correct
+       - Conversion of 16bit data to 8bit data now done with
+         more performant LUT, and calculation more correct
+       - Bugfix of handling of 16bit RGB with unassociated alpha
+
+2006-04-11  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+       
+       * libtiff/tif_getimage.c: 
+       - When there is no alpha, gtTileSeparate and gtStripSeparate allocated 
+         buffer for alpha strile and filled it, only to never read it back. 
+         Removed allocation and fill.
+       - Minor rename of vars in gtTileSeparate and gtStripSeparate 
+         anticipating planned functionality extension
+
+2006-04-08  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase 
+       and pickTileSeparateCase to PickSeparateCase as both work on strips as 
+       well
+
+       * libtiff/tif_getimage.c: moved img->get selection from 
+       TIFFRGBAImageBegin into PickContigCase and PickSeparateCase to create
+       logical hook for planned functionality extension
+
+2006-04-08  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_ojpeg.c: resolved memory leak that was a consequence
+       of inappropriate use of jpeg_abort instead of jpeg_destroy
+
+2006-04-07  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in 
+       gtStripContig with TIFFNewScanlineSize so as to fix buggy behaviour
+       on subsampled images - this ought to get sorted when we feel brave 
+       enough to replace TIFFScanlineSize alltogether
+
+       * libtiff/tif_ojpeg.c: fixed bug in OJPEGReadSkip
+
+2006-04-04  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tiffio.h: added new type tstrile_t
+
+       * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips 
+       to new tstrile_t, types of td_stripoffset and td_stripbytecount to 
+       toff_t*
+
+       * libtiff/tif_ojpeg.c: totally new implementation
+
+       * libtiff/tif_dirread.c: added several hacks to suit new support of 
+       OJPEG
+
+       * libtiff/tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
+       of OJPEG images in favor of tif_getimage.c native handling of
+       YCbCr and desubsampling
+
+2006-03-29  Frank Warmerdam  <warmerdam@pobox.com>
+
+       * libtiff/tif_jpeg.c: JPEGVSetField() so that altering the photometric
+       interpretation causes the "upsampled" flag to be recomputed.  Fixes
+       peculiar bug where photometric flag had to be set before jpegcolormode
+       flag.
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_jpeg.c: strip size related bugfix in encode raw
+
+       * libtiff/tif_strip.c: temporarilly added two new versions of
+       TIFFScanlineSize
+         - TIFFNewScanlineSize: proposed new version, after all related
+           issues and side-effects are sorted out
+         - TIFFOldScanlineSize: old version, from prior to 2006-03-21 change
+       This needs further sorting out.
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * contrib/addtiffo/tif_ovrcache.c: bugfix to correctly pass size
+       of last truncated strip data to TIFFWriteEncodedStrip
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/{tif_jpeg.c, tif_strip.c}: bugfix of tif_jpeg decode raw
+
+2006-03-25  Joris Van Damme  <joris.at.lebbeke@skynet.be>
+
+       * libtiff/tif_getimage.c: bugfix/rewrite of putcontig8bitYCbCr22tile
+
+       * libtiff/tif_getimage.c: added putcontig8bitYCbCr12tile
+
+       * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to 
+       prepare the path for new tif_ojpeg.c
+
 2006-03-23  Andrey Kiselev  <dron@ak4719.spb.edu>
 
        * libtiff 3.8.2 released.
index 97baedc67955e9d9d0af6a8b26322d239f4c84ec..701ca75f308cd68bab06a6210cb331dd282430ee 100644 (file)
 HOWTO-RELEASE: 
 
-Notes on releasing. You will need appropriate autoconf, automake and libtool
-utilities to release a package.
+Notes on releasing.
 
-1. Commit any unsaved changes. 
+0. Make sure that you have current FSF releases of autoconf, automake,
+   and libtool packages installed under a common installation prefix
+   and that these tools are in your executable search path prior to
+   any other installed versions.  Versions delivered with Linux may be
+   altered so it is best to install official FSF releases. GNU 'm4'
+   1.4.16 is needed in order to avoid bugs in m4. These packages may
+   be downloaded from the following ftp locations:
+
+     autoconf - ftp://ftp.gnu.org/pub/gnu/autoconf
+     automake - ftp://ftp.gnu.org/pub/gnu/automake
+     libtool  - ftp://ftp.gnu.org/pub/gnu/libtool
+     m4       - ftp://ftp.gnu.org/pub/gnu/m4
 
-2. "make clean"
+   Release builds should only be done on a system with a functioning
+   and correctly set system clock and on a filesystem which accurately
+   records file update times.  Use of GNU make is recommended.
 
-3. Create html/vX.X.html.  Take ChangeLog entries and html-ify in there. 
+1. Commit any unsaved changes. 
+
+2. Create html/vX.X.html.  Take ChangeLog entries and html-ify in there. 
    Easist thing to do is take html/vX.(X-1).html and use it as a template.
    Add that file to the list of EXTRA_DIST files in the html/Makefile.am.
 
-3.5. Update html/index.html to refer to this new page as the current release.
+3. Update html/index.html to refer to this new page as the current release.
 
-4. Increment version in configure.ac.  Put 'alpha' or 'beta' after
-   the version, if applicable. 
+4. Increment the release version in configure.ac.  Put 'alpha' or
+   'beta' after the version, if applicable.  For example:
 
-   eg.
-   3.5.7
-    or
-   3.5.8beta
+     4.0.0
+      or
+     4.0.0beta7
 
    Version should be updated in two places: in the second argument of the
    AC_INIT macro and in LIBTIFF_xxx_VERSION variables.
 
-5. autoconf
+5. Update library ELF versioning in configure.ac (LIBTIFF_CURRENT,
+   LIBTIFF_REVISION, and LIBTIFF_AGE).  These numbers have nothing to
+   do with the libtiff release version numbers.
+
+   Note that as of libtiff 4.X, proper ELF versioning is used so
+   please follow the rules listed in configure.ac.  At a bare minimum,
+   you should increment LIBTIFF_REVISION for each release so that
+   installed library files don't overwrite existing files.  If APIs
+   have been added, removed, or interface structures have changed,
+   then more care is required.
+
+6. Add an entry to Changelog similar to:
+
+     * libtiff 4.0.0 released.
+
+7. In the source tree do
+
+     ./autogen.sh
+
+   This step may be skipped if you have already been using a
+   maintainer build with current autoconf, automake, and libtool
+   packages.  It is only needed when updating tool versions.
 
-6. sh configure
+8. It is recommended (but not required) to build outside of the source
+   tree so that the source tree is kept in a pristine state.  This
+   also allows sharing the source directory on several networked
+   systems.  For example:
 
-7. make release -- this will update "RELEASE-DATE" and "VERSION" in the top
-   level dir, and libtiff/tiffvers.h.  
+     mkdir libtiff-build
+     cd libtiff-build
+     /path/to/libtiff/configure --enable-maintainer-mode
 
-8. Please verify that the version info in RELEASE-DATE, VERSION and
-   libtiff/tiffvers.h is right.
+   otherwise do
 
-9. make; make distcheck (to test). 
+     ./configure --enable-maintainer-mode
 
-10. make distclean
+9. In the build tree do
 
-11. cvs commit
+     make release
 
-12. cvs tag Release-v3-5-7 (or the appropriate name for the release)
+   This will update "RELEASE-DATE", "VERSION", and libtiff/tiffvers.h
+   in the source tree.
+
+10. In the source tree, verify that the version info in RELEASE-DATE,
+   VERSION and libtiff/tiffvers.h is right.
+
+11. In the build tree do
+
+      make
+      make distcheck
+
+    If 'make distcheck' fails, then correct any issues until it
+    succeeds.
 
-13. configure; make dist
     Two files with names tiff-version.tar.gz and tiff-version.zip will
-    be created in the top level package directory.
+    be created in the top level build directory.
+
+12. In the source tree do
+
+      'cvs commit'.
+
+13. In the source tree do
+
+      cvs tag Release-v4-0-0
+
+    (or the appropriate name for the release)
+
+14. Copy release packages from the build tree to the
+    ftp.remotesensing.org ftp site.
 
-14. Copy to ftp.remotesensing.org ftp site. 
-    scp tiff-*.tar.gz ftp.remotesensing.org:/var/ftp/libtiff/
-    scp tiff-*.zip ftp.remotesensing.org:/var/ftp/libtiff/
+      scp tiff-*.tar.gz tiff-*.zip \
+        warmerdam@upload.osgeo.org:/osgeo/download/libtiff
 
 15. Announce to list, tiff@lists.maptools.org
 
index 20bd1d8f69da7970fc979d207cc049cf942f7070..996297e921cb4dca88518300117e4d3542c47ffb 100644 (file)
 
 docdir = $(LIBTIFF_DOCDIR)
 
-AUTOMAKE_OPTIONS = dist-zip foreign
-ACLOCAL_AMFLAGS = -I ./m4
+AUTOMAKE_OPTIONS = 1.12 dist-zip foreign
+ACLOCAL_AMFLAGS = -I m4
 
 docfiles = \
        COPYRIGHT \
        ChangeLog \
        README \
+       README.vms \
        RELEASE-DATE \
        TODO \
        VERSION
@@ -41,14 +42,18 @@ EXTRA_DIST = \
        Makefile.vc \
        SConstruct \
        autogen.sh \
-       nmake.opt
+       configure.com \
+       nmake.opt \
+       libtiff-4.pc.in
 
 dist_doc_DATA = $(docfiles)
 
-SUBDIRS = port libtiff tools contrib test man html
+SUBDIRS = port libtiff tools build contrib test man html
 
 release:
-       (rm -f RELEASE-DATE && echo $(LIBTIFF_RELEASE_DATE) > RELEASE-DATE)
-       (rm -f VERSION && echo $(LIBTIFF_VERSION) > VERSION)
-       (rm -f ./libtiff/tiffvers.h && sed 's,LIBTIFF_VERSION,$(LIBTIFF_VERSION),;s,LIBTIFF_RELEASE_DATE,$(LIBTIFF_RELEASE_DATE),' ./libtiff/tiffvers.h.in > ./libtiff/tiffvers.h)
+       (rm -f $(top_srcdir)/RELEASE-DATE && echo $(LIBTIFF_RELEASE_DATE) > $(top_srcdir)/RELEASE-DATE)
+       (rm -f $(top_srcdir)/VERSION && echo $(LIBTIFF_VERSION) > $(top_srcdir)/VERSION)
+       (rm -f $(top_srcdir)/libtiff/tiffvers.h && sed 's,LIBTIFF_VERSION,$(LIBTIFF_VERSION),;s,LIBTIFF_RELEASE_DATE,$(LIBTIFF_RELEASE_DATE),' $(top_srcdir)/libtiff/tiffvers.h.in > $(top_srcdir)/libtiff/tiffvers.h)
 
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libtiff-4.pc
index 87523e5a062b9702fe5704da25dd0828fda575f2..6832eb805087cbbdb6472cbbcd11eeb1de1e3672 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = .
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,62 +75,141 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
+subdir = .
 DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
        $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(top_srcdir)/configure ChangeLog TODO config/compile \
-       config/config.guess config/config.sub config/depcomp \
-       config/install-sh config/ltmain.sh config/missing \
-       config/mkinstalldirs
-subdir = .
+       $(srcdir)/libtiff-4.pc.in $(top_srcdir)/config/compile \
+       $(top_srcdir)/config/config.guess \
+       $(top_srcdir)/config/config.sub \
+       $(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
+       $(top_srcdir)/config/missing \
+       $(top_srcdir)/config/mkinstalldirs $(top_srcdir)/configure \
+       ChangeLog TODO config/compile config/config.guess \
+       config/config.sub config/depcomp config/install-sh \
+       config/ltmain.sh config/missing config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
- configure.lineno configure.status.lineno
+ configure.lineno config.status.lineno
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
-CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_FILES = libtiff-4.pc
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
-       install-exec-recursive install-info-recursive \
-       install-recursive installcheck-recursive installdirs-recursive \
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-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
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(docdir)"
-dist_docDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(dist_doc_DATA)
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"
+DATA = $(dist_doc_DATA) $(pkgconfig_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       cscope distdir dist dist-all distcheck
 ETAGS = etags
 CTAGS = ctags
+CSCOPE = cscope
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_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); }; }
+  if test -d "$(distdir)"; then \
+    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
+      && rm -rf "$(distdir)" \
+      || { sleep 5 && rm -rf "$(distdir)"; }; \
+  else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip dist-zip
 distuninstallcheck_listfiles = find . -type f -print
+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
+  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -136,6 +229,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -150,12 +244,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -174,20 +263,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -199,69 +293,73 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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 = $(LIBTIFF_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@
-lt_ECHO = @lt_ECHO@
 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@
-docdir = $(LIBTIFF_DOCDIR)
-AUTOMAKE_OPTIONS = dist-zip foreign
-ACLOCAL_AMFLAGS = -I ./m4
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.12 dist-zip foreign
+ACLOCAL_AMFLAGS = -I m4
 docfiles = \
        COPYRIGHT \
        ChangeLog \
        README \
+       README.vms \
        RELEASE-DATE \
        TODO \
        VERSION
@@ -271,28 +369,32 @@ EXTRA_DIST = \
        Makefile.vc \
        SConstruct \
        autogen.sh \
-       nmake.opt
+       configure.com \
+       nmake.opt \
+       libtiff-4.pc.in
 
 dist_doc_DATA = $(docfiles)
-SUBDIRS = port libtiff tools contrib test man html
+SUBDIRS = port libtiff tools build contrib test man html
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libtiff-4.pc
 all: all-recursive
 
 .SUFFIXES:
-am--refresh:
+am--refresh: Makefile
        @:
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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  \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -308,9 +410,12 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
        $(SHELL) ./config.status --recheck
 
 $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(srcdir) && $(AUTOCONF)
+       $(am__cd) $(srcdir) && $(AUTOCONF)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+       $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+libtiff-4.pc: $(top_builddir)/config.status $(srcdir)/libtiff-4.pc.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -319,34 +424,58 @@ clean-libtool:
        -rm -rf .libs _libs
 
 distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
+       -rm -f libtool config.lt
 install-dist_docDATA: $(dist_doc_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-         $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
        done
 
 uninstall-dist_docDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(docdir)/$$f"; \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
+install-pkgconfigDATA: $(pkgconfig_DATA)
+       @$(NORMAL_INSTALL)
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
        done
 
+uninstall-pkgconfigDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
+# 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) $(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -355,7 +484,11 @@ $(RECURSIVE_TARGETS):
        done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -363,51 +496,23 @@ $(RECURSIVE_TARGETS):
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-       @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); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
        done
 ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -415,14 +520,14 @@ ID: $(HEADERS) $(SOURCES) $(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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
@@ -434,118 +539,166 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test ! -f $$subdir/TAGS || \
-             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+
+clean-cscope:
+       -rm -f cscope.files
+
+cscope.files: clean-cscope cscopelist-recursive cscopelist
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
        $(am__remove_distdir)
-       mkdir $(distdir)
-       $(mkdir_p) $(distdir)/config $(distdir)/m4
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
-       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+       @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 && \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
              $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$top_distdir" \
-               distdir="$$distdir/$$subdir" \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
                distdir) \
              || exit 1; \
          fi; \
        done
-       -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+       -test -n "$(am__skip_mode_fix)" \
+       || find "$(distdir)" -type d ! -perm -755 \
+               -exec chmod u+rwx,go+rx {} \; -o \
          ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
          ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
-         ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
-       || chmod -R a+r $(distdir)
+         ! -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)
+       $(am__post_remove_distdir)
 
 dist-bzip2: distdir
-       tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
-       $(am__remove_distdir)
+       tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
+       $(am__post_remove_distdir)
+
+dist-lzip: distdir
+       tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
+       $(am__post_remove_distdir)
+
+dist-xz: distdir
+       tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
+       $(am__post_remove_distdir)
 
 dist-tarZ: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-shar: distdir
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
-dist dist-all: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       -rm -f $(distdir).zip
-       zip -rq $(distdir).zip $(distdir)
-       $(am__remove_distdir)
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -553,24 +706,31 @@ dist dist-all: distdir
 distcheck: dist
        case '$(DIST_ARCHIVES)' in \
        *.tar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
-         bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+         bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lz*) \
+         lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
+       *.tar.xz*) \
+         xz -dc $(distdir).tar.xz | $(am__untar) ;;\
        *.tar.Z*) \
          uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
        *.shar.gz*) \
-         GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+         GZIP=$(GZIP_ENV) gzip -dc $(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 -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_inst
        chmod a-w $(distdir)
+       test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
-         && cd $(distdir)/_build \
+         && am__cwd=`pwd` \
+         && $(am__cd) $(distdir)/_build \
          && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+           $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
@@ -591,14 +751,24 @@ distcheck: dist
          && rm -rf "$$dc_destdir" \
          && $(MAKE) $(AM_MAKEFLAGS) dist \
          && rm -rf $(DIST_ARCHIVES) \
-         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
-       $(am__remove_distdir)
+         && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
+         && cd "$$am__cwd" \
+         || exit 1
+       $(am__post_remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
-         sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+         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 \
+       @test -n '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: trying to run $@ with an empty' \
+              '$$(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       $(am__cd) '$(distuninstallcheck_dir)' || { \
+         echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
+         exit 1; \
+       }; \
+       test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
           || { echo "ERROR: files left after uninstall:" ; \
                if test -n "$(DESTDIR)"; then \
                  echo "  (check DESTDIR support)"; \
@@ -619,8 +789,8 @@ check: check-recursive
 all-am: Makefile $(DATA)
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(docdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -632,16 +802,22 @@ install-am: all-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
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -662,18 +838,38 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
-install-data-am: install-dist_docDATA
+install-data-am: install-dist_docDATA install-pkgconfigDATA
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
 
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -694,31 +890,37 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-dist_docDATA uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
-       check-am clean clean-generic clean-libtool clean-recursive \
-       ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
-       dist-shar dist-tarZ dist-zip distcheck distclean \
-       distclean-generic distclean-libtool distclean-recursive \
-       distclean-tags distcleancheck distdir distuninstallcheck dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dist_docDATA install-exec \
-       install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       maintainer-clean-recursive mostlyclean mostlyclean-generic \
-       mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+uninstall-am: uninstall-dist_docDATA uninstall-pkgconfigDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am am--refresh check check-am clean clean-cscope \
+       clean-generic clean-libtool cscope cscopelist \
+       cscopelist-recursive ctags ctags-recursive dist dist-all \
+       dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
+       dist-zip distcheck distclean distclean-generic \
+       distclean-libtool distclean-tags distcleancheck distdir \
+       distuninstallcheck dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am \
+       install-dist_docDATA 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-dist_docDATA uninstall-info-am
+       uninstall-dist_docDATA uninstall-pkgconfigDATA
 
 
 release:
-       (rm -f RELEASE-DATE && echo $(LIBTIFF_RELEASE_DATE) > RELEASE-DATE)
-       (rm -f VERSION && echo $(LIBTIFF_VERSION) > VERSION)
-       (rm -f ./libtiff/tiffvers.h && sed 's,LIBTIFF_VERSION,$(LIBTIFF_VERSION),;s,LIBTIFF_RELEASE_DATE,$(LIBTIFF_RELEASE_DATE),' ./libtiff/tiffvers.h.in > ./libtiff/tiffvers.h)
+       (rm -f $(top_srcdir)/RELEASE-DATE && echo $(LIBTIFF_RELEASE_DATE) > $(top_srcdir)/RELEASE-DATE)
+       (rm -f $(top_srcdir)/VERSION && echo $(LIBTIFF_VERSION) > $(top_srcdir)/VERSION)
+       (rm -f $(top_srcdir)/libtiff/tiffvers.h && sed 's,LIBTIFF_VERSION,$(LIBTIFF_VERSION),;s,LIBTIFF_RELEASE_DATE,$(LIBTIFF_RELEASE_DATE),' $(top_srcdir)/libtiff/tiffvers.h.in > $(top_srcdir)/libtiff/tiffvers.h)
+
 # 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:
index 01859a03b1284ebee37a7ce1304c01bcc30bb45b..afbca22db2f12fce92a85bb81bc97f894bebb9a3 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.vc,v 1.5 2006/03/23 14:54:00 dron Exp $\r
+# $Id: Makefile.vc,v 1.7 2008/01/01 15:53:10 fwarmerdam Exp $\r
 #\r
 # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\r
 #\r
@@ -56,4 +56,3 @@ clean:
        cd tools\r
        $(MAKE) /f Makefile.vc clean\r
        cd ..\r
-\r
index c0e5521d8a75ea4fa4accf2c0eb05fd0916d3d88..5f30f4ee50955d0225829c80fe58a60e29c6cd2c 100644 (file)
@@ -1,13 +1,15 @@
-$Header: /cvs/maptools/cvsroot/libtiff/README,v 1.5 2004/10/30 13:44:45 dron Exp $
+$Header: /cvs/maptools/cvsroot/libtiff/README,v 1.7 2012-02-18 21:53:27 bfriesen Exp $
 
 
 TIFF Software Distribution
 --------------------------
 This file is just a placeholder; all the documentation is now in
 HTML in the html directory.  To view the documentation point your
-favorite WWW viewer at html/index.html; e.g.
+favorite WWW viewer at html/index.html; 
 
-    netscape html/index.html
+e.g.
+
+    firefox html/index.html
 
 If you don't have an HTML viewer then you can read the HTML source
 or fetch a PostScript version of this documentation from the directory
diff --git a/src/tiff/README.vms b/src/tiff/README.vms
new file mode 100644 (file)
index 0000000..44d9663
--- /dev/null
@@ -0,0 +1,12 @@
+Dear OpenVMS user
+to make this library, execute
+$@CONFIGURE
+$@BUILD
+
+Build process should be error and warning free. When process will be finished,
+LIBTIFF$STRATUP.COM file containing all required definitions, will be  created.
+Please call it from system startup procedure or individual user procedure LOGIN.COM
+To link software with libtiff, use TIFF:LIBTIFF.OPT
+
+best regards,
+Alexey Chupahin,   elvis_75@mail.ru
index 14ad11c67dacec5294302ce7b2b0549f4454f764..f0326d2ca57970bed80ab4590937e48b3f0131ef 100644 (file)
@@ -1 +1 @@
-20060323
+20120922
index 3285157bf491f31bc2a013bf3938c9b2ee77771e..682246ea0663e6c5ac2115e8658adf47d9cf97aa 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: SConstruct,v 1.2 2006/03/23 14:54:00 dron Exp $
+# $Id: SConstruct,v 1.4 2007/02/24 15:03:47 dron Exp $
 
 # Tag Image File Format (TIFF) Software
 #
@@ -76,7 +76,7 @@ Export([ 'env', 'idir_prefix', 'idir_lib', 'idir_bin', 'idir_inc', 'idir_doc' ])
 
 # Now proceed to system feature checks
 target_cpu, target_vendor, target_kernel, target_os = \
-    os.popen("./config.guess").readlines()[0].split("-")
+    os.popen("./config/config.guess").readlines()[0].split("-")
 
 def Define(context, key, have):
     import SCons.Conftest
@@ -132,6 +132,7 @@ if target_os != 'cygwin' \
 # Check for system headers
 conf.CheckCHeader('assert.h')
 conf.CheckCHeader('fcntl.h')
+conf.CheckCHeader('io.h')
 conf.CheckCHeader('limits.h')
 conf.CheckCHeader('malloc.h')
 conf.CheckCHeader('search.h')
@@ -145,6 +146,7 @@ conf.CheckFunc('memmove')
 conf.CheckFunc('memset')
 conf.CheckFunc('mmap')
 conf.CheckFunc('pow')
+conf.CheckFunc('setmode')
 conf.CheckFunc('sqrt')
 conf.CheckFunc('strchr')
 conf.CheckFunc('strrchr')
index 6c58eb045db9c2bfc15c1e9ae90e40087e0f7e6b..2ff86272b874bdf05339dffc79ab864cdce02447 100644 (file)
@@ -1,4 +1,4 @@
-#      $Header: /cvs/maptools/cvsroot/libtiff/TODO,v 1.6 2002/10/10 05:28:43 warmerda Exp $
+#      $Header: /cvs/libtiff/TODO,v 1.6 2002/10/10 05:28:43 warmerda Exp $
 
 o gif2tiff segaulting on selected images
 o tiffcmp read data by strip/tile instead of scanline
index a08ffae0caee5838d948ba0de742f5f768312c2a..c4e41f94594c72f3175d1c465d1f360697ba1386 100644 (file)
@@ -1 +1 @@
-3.8.2
+4.0.3
index eff669bda6a192ce42a5831f2c029b4efb5687ba..d7d14c8e8b24c712ae929e3e1232f82ad7d5f5ac 100644 (file)
-# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.12.4 -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 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.
-
-# 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.
-
-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-
-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
-
-
-# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
-# -----------------------------------------------------------
-# If this macro is not defined by Autoconf, define it here.
-m4_ifdef([AC_PROVIDE_IFELSE],
-         [],
-         [m4_define([AC_PROVIDE_IFELSE],
-                [m4_ifdef([AC_PROVIDE_$1],
-                          [$2], [$3])])])
-
-
-# AC_PROG_LIBTOOL
-# ---------------
-AC_DEFUN([AC_PROG_LIBTOOL],
-[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
-dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
-dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
-  AC_PROVIDE_IFELSE([AC_PROG_CXX],
-    [AC_LIBTOOL_CXX],
-    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
-  ])])
-dnl And a similar setup for Fortran 77 support
-  AC_PROVIDE_IFELSE([AC_PROG_F77],
-    [AC_LIBTOOL_F77],
-    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
-])])
-
-dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
-dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
-dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
-  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
-    [AC_LIBTOOL_GCJ],
-    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
-      [AC_LIBTOOL_GCJ],
-      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
-       [AC_LIBTOOL_GCJ],
-      [ifdef([AC_PROG_GCJ],
-            [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-       ifdef([A][M_PROG_GCJ],
-            [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
-       ifdef([LT_AC_PROG_GCJ],
-            [define([LT_AC_PROG_GCJ],
-               defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
-])])# AC_PROG_LIBTOOL
-
-
-# _AC_PROG_LIBTOOL
-# ----------------
-AC_DEFUN([_AC_PROG_LIBTOOL],
-[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
-AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-AC_SUBST(LIBTOOL)dnl
-
-# Prevent multiple expansion
-define([AC_PROG_LIBTOOL], [])
-])# _AC_PROG_LIBTOOL
-
-
-# AC_LIBTOOL_SETUP
-# ----------------
-AC_DEFUN([AC_LIBTOOL_SETUP],
-[AC_PREREQ(2.50)dnl
-AC_REQUIRE([AC_ENABLE_SHARED])dnl
-AC_REQUIRE([AC_ENABLE_STATIC])dnl
-AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-AC_REQUIRE([AC_CANONICAL_BUILD])dnl
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_PROG_LD])dnl
-AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
-AC_REQUIRE([AC_PROG_NM])dnl
-
-AC_REQUIRE([AC_PROG_LN_S])dnl
-AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
-# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-AC_REQUIRE([AC_OBJEXT])dnl
-AC_REQUIRE([AC_EXEEXT])dnl
-dnl
-
-AC_LIBTOOL_SYS_MAX_CMD_LEN
-AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-AC_LIBTOOL_OBJDIR
-
-AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-_LT_AC_PROG_ECHO_BACKSLASH
-
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
-
-# Same as above, but do not quote variable references.
-[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
-# Constants:
-rm="rm -f"
-
-# Global variables:
-default_ofile=libtool
-can_build_shared=yes
-
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# 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 "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-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="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
-fi
-
-_LT_CC_BASENAME([$compiler])
-
-# Only perform the check for file, if the check method requires it
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    AC_PATH_MAGIC
-  fi
-  ;;
-esac
-
-AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
-AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
-enable_win32_dll=yes, enable_win32_dll=no)
-
-AC_ARG_ENABLE([libtool-lock],
-    [AC_HELP_STRING([--disable-libtool-lock],
-       [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-AC_ARG_WITH([pic],
-    [AC_HELP_STRING([--with-pic],
-       [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
-    [pic_mode=default])
-test -z "$pic_mode" && pic_mode=default
-
-# Use C for the default configuration in the libtool script
-tagname=
-AC_LIBTOOL_LANG_C_CONFIG
-_LT_AC_TAGCONFIG
-])# AC_LIBTOOL_SETUP
-
-
-# _LT_AC_SYS_COMPILER
-# -------------------
-AC_DEFUN([_LT_AC_SYS_COMPILER],
-[AC_REQUIRE([AC_PROG_CC])dnl
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-])# _LT_AC_SYS_COMPILER
-
-
-# _LT_CC_BASENAME(CC)
-# -------------------
-# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
-AC_DEFUN([_LT_CC_BASENAME],
-[for cc_temp in $1""; do
-  case $cc_temp in
-    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
-    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-])
-
-
-# _LT_COMPILER_BOILERPLATE
-# ------------------------
-# Check for compiler boilerplate output or warnings with
-# the simple compiler test code.
-AC_DEFUN([_LT_COMPILER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-])# _LT_COMPILER_BOILERPLATE
-
-
-# _LT_LINKER_BOILERPLATE
-# ----------------------
-# Check for linker boilerplate output or warnings with
-# the simple link test code.
-AC_DEFUN([_LT_LINKER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
-])# _LT_LINKER_BOILERPLATE
-
-
-# _LT_AC_SYS_LIBPATH_AIX
-# ----------------------
-# Links a minimal program and checks the executable
-# for the system default hardcoded library path. In most cases,
-# this is /usr/lib:/lib, but when the MPI compilers are used
-# the location of the communication and MPI libs are included too.
-# If we don't find anything, use the default library path according
-# to the aix ld manual.
-AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-])# _LT_AC_SYS_LIBPATH_AIX
-
-
-# _LT_AC_SHELL_INIT(ARG)
-# ----------------------
-AC_DEFUN([_LT_AC_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-        [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_AC_SHELL_INIT
-
-
-# _LT_AC_PROG_ECHO_BACKSLASH
-# --------------------------
-# Add some code to the start of the generated configure script which
-# will find an echo command which doesn't interpret backslashes.
-AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
-[_LT_AC_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-echo=${ECHO-echo}
-if test "X[$]1" = X--no-reexec; then
-  # Discard the --no-reexec flag, and continue.
-  shift
-elif test "X[$]1" = X--fallback-echo; then
-  # Avoid inline document here, it may be left over
-  :
-elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
-  # Yippee, $echo works!
-  :
-else
-  # Restart under the correct shell.
-  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
-fi
-
-if test "X[$]1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-[$]*
-EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$ECHO"; then
-if test "X${echo_test_string+set}" != Xset; then
-# find a string as large as possible, as long as the shell can cope with it
-  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
-       echo_test_string=`eval $cmd` &&
-       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
-    then
-      break
-    fi
-  done
-fi
-
-if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-   test "X$echo_testing_string" = "X$echo_test_string"; then
-  :
-else
-  # The Solaris, AIX, and Digital Unix default echo programs unquote
-  # backslashes.  This makes it impossible to quote backslashes using
-  #   echo "$something" | sed 's/\\/\\\\/g'
-  #
-  # So, first we look for a working echo in the user's PATH.
-
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for dir in $PATH /usr/ucb; do
-    IFS="$lt_save_ifs"
-    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
-       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      echo="$dir/echo"
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  if test "X$echo" = Xecho; then
-    # We didn't find a better echo, so look for alternatives.
-    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
-       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
-       test "X$echo_testing_string" = "X$echo_test_string"; then
-      # This shell has a builtin print -r that does the trick.
-      echo='print -r'
-    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
-        test "X$CONFIG_SHELL" != X/bin/ksh; then
-      # If we have ksh, try running configure again with it.
-      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
-      export ORIGINAL_CONFIG_SHELL
-      CONFIG_SHELL=/bin/ksh
-      export CONFIG_SHELL
-      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
-    else
-      # Try using printf.
-      echo='printf %s\n'
-      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
-        echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
-        test "X$echo_testing_string" = "X$echo_test_string"; then
-       # Cool, printf works
-       :
-      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-          test "X$echo_testing_string" = 'X\t' &&
-          echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-          test "X$echo_testing_string" = "X$echo_test_string"; then
-       CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
-       export CONFIG_SHELL
-       SHELL="$CONFIG_SHELL"
-       export SHELL
-       echo="$CONFIG_SHELL [$]0 --fallback-echo"
-      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
-          test "X$echo_testing_string" = 'X\t' &&
-          echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
-          test "X$echo_testing_string" = "X$echo_test_string"; then
-       echo="$CONFIG_SHELL [$]0 --fallback-echo"
-      else
-       # maybe with a smaller string...
-       prev=:
-
-       for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
-         if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
-         then
-           break
-         fi
-         prev="$cmd"
-       done
-
-       if test "$prev" != 'sed 50q "[$]0"'; then
-         echo_test_string=`eval $prev`
-         export echo_test_string
-         exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
-       else
-         # Oops.  We lost completely, so just stick with echo.
-         echo=echo
-       fi
-      fi
-    fi
-  fi
-fi
-fi
-
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-ECHO=$echo
-if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
-
-AC_SUBST(ECHO)
-])])# _LT_AC_PROG_ECHO_BACKSLASH
-
-
-# _LT_AC_LOCK
-# -----------
-AC_DEFUN([_LT_AC_LOCK],
-[AC_ARG_ENABLE([libtool-lock],
-    [AC_HELP_STRING([--disable-libtool-lock],
-       [avoid locking (might break parallel builds)])])
-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
-
-# Some flags need to be propagated to the compiler or linker for good
-# libtool support.
-case $host in
-ia64-*-hpux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *ELF-32*)
-      HPUX_IA64_MODE="32"
-      ;;
-    *ELF-64*)
-      HPUX_IA64_MODE="64"
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-*-*-irix6*)
-  # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-   if test "$lt_cv_prog_gnu_ld" = yes; then
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -melf32bsmip"
-      ;;
-    *N32*)
-      LD="${LD-ld} -melf32bmipn32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -melf64bmip"
-      ;;
-    esac
-   else
-    case `/usr/bin/file conftest.$ac_objext` in
-    *32-bit*)
-      LD="${LD-ld} -32"
-      ;;
-    *N32*)
-      LD="${LD-ld} -n32"
-      ;;
-    *64-bit*)
-      LD="${LD-ld} -64"
-      ;;
-    esac
-   fi
-  fi
-  rm -rf conftest*
-  ;;
-
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
-  # Find out which ABI we are using.
-  echo 'int i;' > conftest.$ac_ext
-  if AC_TRY_EVAL(ac_compile); then
-    case `/usr/bin/file conftest.o` in
-    *32-bit*)
-      case $host in
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_i386"
-          ;;
-        ppc64-*linux*|powerpc64-*linux*)
-          LD="${LD-ld} -m elf32ppclinux"
-          ;;
-        s390x-*linux*)
-          LD="${LD-ld} -m elf_s390"
-          ;;
-        sparc64-*linux*)
-          LD="${LD-ld} -m elf32_sparc"
-          ;;
-      esac
-      ;;
-    *64-bit*)
-      case $host in
-        x86_64-*linux*)
-          LD="${LD-ld} -m elf_x86_64"
-          ;;
-        ppc*-*linux*|powerpc*-*linux*)
-          LD="${LD-ld} -m elf64ppc"
-          ;;
-        s390*-*linux*)
-          LD="${LD-ld} -m elf64_s390"
-          ;;
-        sparc*-*linux*)
-          LD="${LD-ld} -m elf64_sparc"
-          ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-*-*-sco3.2v5*)
-  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
-  SAVE_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS -belf"
-  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
-    [AC_LANG_PUSH(C)
-     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
-     AC_LANG_POP])
-  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
-    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
-    CFLAGS="$SAVE_CFLAGS"
-  fi
-  ;;
-sparc*-*solaris*)
-  # 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
-    *64-bit*)
-      case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)    LD="${LD-ld} -64" ;;
-      esac
-      ;;
-    esac
-  fi
-  rm -rf conftest*
-  ;;
-
-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}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       $2=yes
-     fi
-   fi
-   $rm conftest*
-])
-
-if test 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 linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         $2=yes
-       fi
-     else
-       $2=yes
-     fi
-   fi
-   $rm conftest*
-   LDFLAGS="$save_LDFLAGS"
-])
-
-if test x"[$]$2" = xyes; then
-    ifelse([$4], , :, [$4])
-else
-    ifelse([$5], , :, [$5])
-fi
-])# AC_LIBTOOL_LINKER_OPTION
-
-
-# AC_LIBTOOL_SYS_MAX_CMD_LEN
-# --------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
-[# find the maximum length of command line arguments
-AC_MSG_CHECKING([the maximum length of command line arguments])
-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
-  i=0
-  teststring="ABCD"
-
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
-
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
-
-  cygwin* | mingw*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
-
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
-
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
-
-  osf*)
-    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
-    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
-    ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[       ]]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
-    ;;
-  *)
-    # If test is not a shell built-in, we'll probably end up computing a
-    # maximum length that is only half of the actual maximum length, but
-    # we can't tell.
-    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
-              = "XX$teststring") >/dev/null 2>&1 &&
-           new_result=`expr "X$teststring" : ".*" 2>&1` &&
-           lt_cv_sys_max_cmd_len=$new_result &&
-           test $i != 17 # 1/2 MB should be enough
-    do
-      i=`expr $i + 1`
-      teststring=$teststring$teststring
-    done
-    teststring=
-    # Add a significant safety factor because C++ compilers can tack on massive
-    # amounts of additional arguments before passing them to the linker.
-    # It appears as though 1/2 is a usable value.
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    ;;
-  esac
-])
-if test -n $lt_cv_sys_max_cmd_len ; then
-  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
-else
-  AC_MSG_RESULT(none)
-fi
-])# AC_LIBTOOL_SYS_MAX_CMD_LEN
-
-
-# _LT_AC_CHECK_DLFCN
-# ------------------
-AC_DEFUN([_LT_AC_CHECK_DLFCN],
-[AC_CHECK_HEADERS(dlfcn.h)dnl
-])# _LT_AC_CHECK_DLFCN
-
-
-# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
-#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ---------------------------------------------------------------------
-AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
-[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
-if test "$cross_compiling" = yes; then :
-  [$4]
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-[#line __oline__ "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#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); */
-    }
-  else
-    puts (dlerror ());
-
-    exit (status);
-}]
-EOF
-  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) $1 ;;
-      x$lt_dlneed_uscore) $2 ;;
-      x$lt_dlunknown|x*) $3 ;;
-    esac
-  else :
-    # compilation failed
-    $3
-  fi
-fi
-rm -fr conftest*
-])# _LT_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"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    AC_CACHE_CHECK([whether a program can dlopen itself],
-         lt_cv_dlopen_self, [dnl
-         _LT_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
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-         lt_cv_dlopen_self_static, [dnl
-         _LT_AC_TRY_DLOPEN_SELF(
-           lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
-           lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
-      ])
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-])# AC_LIBTOOL_DLOPEN_SELF
-
-
-# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
-# ---------------------------------
-# Check to see if options -c and -o are simultaneously supported by compiler
-AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
-  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
-  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-     fi
-   fi
-   chmod u+w . 2>&AS_MESSAGE_LOG_FD
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
-])
-])# AC_LIBTOOL_PROG_CC_C_O
-
-
-# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
-# -----------------------------------------
-# Check to see if we can do hard links to lock some files if needed
-AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
-[AC_REQUIRE([_LT_AC_LOCK])dnl
-
-hard_links="nottested"
-if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  AC_MSG_CHECKING([if we can lock with hard links])
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  AC_MSG_RESULT([$hard_links])
-  if test "$hard_links" = no; then
-    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
-])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
-
-
-# AC_LIBTOOL_OBJDIR
-# -----------------
-AC_DEFUN([AC_LIBTOOL_OBJDIR],
-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
-[rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
-else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
-fi
-rmdir .libs 2>/dev/null])
-objdir=$lt_cv_objdir
-])# AC_LIBTOOL_OBJDIR
-
-
-# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
-# ----------------------------------------------
-# Check hardcoding attributes.
-AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
-[AC_MSG_CHECKING([how to hardcode library paths into programs])
-_LT_AC_TAGVAR(hardcode_action, $1)=
-if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
-   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
-   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
-     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
-    # Linking always hardcodes the temporary library directory.
-    _LT_AC_TAGVAR(hardcode_action, $1)=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
-fi
-AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
-
-if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
-
-
-# AC_LIBTOOL_SYS_LIB_STRIP
-# ------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
-[striplib=
-old_striplib=
-AC_MSG_CHECKING([whether stripping libraries is possible])
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  AC_MSG_RESULT([yes])
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         AC_MSG_RESULT([yes])
-       else
-  AC_MSG_RESULT([no])
-fi
-       ;;
-   *)
-  AC_MSG_RESULT([no])
-    ;;
-  esac
-fi
-])# AC_LIBTOOL_SYS_LIB_STRIP
-
-
-# AC_LIBTOOL_SYS_DYNAMIC_LINKER
-# -----------------------------
-# PORTME Fill in your ld.so characteristics
-AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-[AC_MSG_CHECKING([dynamic linker characteristics])
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix4* | aix5*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[[01]] | aix4.[[01]].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[[45]]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname~
-      chmod a+x \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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
-    ;;
-  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
-  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  freebsd*) # from 4.6 on
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-interix3*)
-  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'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test "$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* | k*bsd*-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'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-netbsdelf*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='NetBSD ld.elf_so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-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
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[[89]] | openbsd2.[[89]].*)
-       shlibpath_overrides_runpath=no
-       ;;
-      *)
-       shlibpath_overrides_runpath=yes
-       ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-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.3*)
-  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
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-    shlibpath_overrides_runpath=no
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    shlibpath_overrides_runpath=yes
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-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
-
-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
-])# 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
-  if test -z "$LTCFLAGS"; then
-    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
-  fi
-
-  # Extract list of available tagged configurations in $ofile.
-  # Note that this assumes the entire list is on one line.
-  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
-
-  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-  for tagname in $tagnames; do
-    IFS="$lt_save_ifs"
-    # Check whether tagname contains only valid characters
-    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
-    "") ;;
-    *)  AC_MSG_ERROR([invalid tag name: $tagname])
-       ;;
-    esac
-
-    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
-    then
-      AC_MSG_ERROR([tag name \"$tagname\" already exists])
-    fi
-
-    # Update the list of available tags.
-    if test -n "$tagname"; then
-      echo appending configuration tag \"$tagname\" to $ofile
-
-      case $tagname in
-      CXX)
-       if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-           ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-           (test "X$CXX" != "Xg++"))) ; then
-         AC_LIBTOOL_LANG_CXX_CONFIG
-       else
-         tagname=""
-       fi
-       ;;
-
-      F77)
-       if test -n "$F77" && test "X$F77" != "Xno"; then
-         AC_LIBTOOL_LANG_F77_CONFIG
-       else
-         tagname=""
-       fi
-       ;;
-
-      GCJ)
-       if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
-         AC_LIBTOOL_LANG_GCJ_CONFIG
-       else
-         tagname=""
-       fi
-       ;;
-
-      RC)
-       AC_LIBTOOL_LANG_RC_CONFIG
-       ;;
-
-      *)
-       AC_MSG_ERROR([Unsupported tag name: $tagname])
-       ;;
-      esac
-
-      # Append the new tag name to the list of available tags.
-      if test -n "$tagname" ; then
-      available_tags="$available_tags $tagname"
-    fi
-    fi
-  done
-  IFS="$lt_save_ifs"
-
-  # Now substitute the updated list of available tags.
-  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
-    mv "${ofile}T" "$ofile"
-    chmod +x "$ofile"
-  else
-    rm -f "${ofile}T"
-    AC_MSG_ERROR([unable to update list of available tagged configurations.])
-  fi
-fi
-])# _LT_AC_TAGCONFIG
-
-
-# AC_LIBTOOL_DLOPEN
-# -----------------
-# enable checks for dlopen support
-AC_DEFUN([AC_LIBTOOL_DLOPEN],
- [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
-])# AC_LIBTOOL_DLOPEN
-
-
-# AC_LIBTOOL_WIN32_DLL
-# --------------------
-# declare package support for building win32 DLLs
-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 <<EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-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 variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break
-       ;;
-      *)
-       test "$with_gnu_ld" != yes && break
-       ;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  AC_MSG_RESULT($LD)
-else
-  AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_PROG_LD_GNU
-])# AC_PROG_LD
-
-
-# AC_PROG_LD_GNU
-# --------------
-AC_DEFUN([AC_PROG_LD_GNU],
-[AC_REQUIRE([AC_PROG_EGREP])dnl
-AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac])
-with_gnu_ld=$lt_cv_prog_gnu_ld
-])# AC_PROG_LD_GNU
-
-
-# AC_PROG_LD_RELOAD_FLAG
-# ----------------------
-# find reload flag for linker
-#   -- PORTME Some linkers may need a different reload flag.
-AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
-[AC_CACHE_CHECK([for $LD option to reload object files],
-  lt_cv_ld_reload_flag,
-  [lt_cv_ld_reload_flag='-r'])
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
-esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
-case $host_os in
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
-    ;;
-esac
-])# AC_PROG_LD_RELOAD_FLAG
-
-
-# AC_DEPLIBS_CHECK_METHOD
-# -----------------------
-# how to check for library dependencies
-#  -- PORTME fill in with the dynamic library characteristics
-AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognise dependent libraries],
-lt_cv_deplibs_check_method,
-[lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
-
-case $host_os in
-aix4* | aix5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-bsdi[[45]]*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
-
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
-
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
-
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix3*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be Linux ELF.
-linux* | k*bsd*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-netbsd* | netbsdelf*-gnu)
-  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-nto-qnx*)
-  lt_cv_deplibs_check_method=unknown
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | 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_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then 
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       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"
-  done
-  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
-# AC_CONFIG_SUBDIRS is not called here.  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
-# AC_CONFIG_SUBDIRS is not called here.  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 with
-# '${top_srcdir}/' (note the single quotes!).  If your package is not
-# flat and you're not using automake, define top_builddir and top_srcdir
-# appropriately in the Makefiles.
-# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
-AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
-[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
-  AC_CHECK_LIB(ltdl, lt_dlinit,
-  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
-  [if test x"$enable_ltdl_install" = xno; then
-     AC_MSG_WARN([libltdl not installed, but installation disabled])
-   else
-     enable_ltdl_install=yes
-   fi
-  ])
-  if test x"$enable_ltdl_install" = x"yes"; then
-    ac_configure_args="$ac_configure_args --enable-ltdl-install"
-    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
-    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
-  else
-    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
-    LIBLTDL="-lltdl"
-    LTDLINCL=
-  fi
-  # For backwards non-gettext consistent compatibility...
-  INCLTDL="$LTDLINCL"
-])# AC_LIBLTDL_INSTALLABLE
-
-
-# AC_LIBTOOL_CXX
-# --------------
-# enable support for C++ libraries
-AC_DEFUN([AC_LIBTOOL_CXX],
-[AC_REQUIRE([_LT_AC_LANG_CXX])
-])# AC_LIBTOOL_CXX
-
-
-# _LT_AC_LANG_CXX
-# ---------------
-AC_DEFUN([_LT_AC_LANG_CXX],
-[AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
-])# _LT_AC_LANG_CXX
-
-# _LT_AC_PROG_CXXCPP
-# ------------------
-AC_DEFUN([_LT_AC_PROG_CXXCPP],
-[
-AC_REQUIRE([AC_PROG_CXX])
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-fi
-])# _LT_AC_PROG_CXXCPP
-
-# AC_LIBTOOL_F77
-# --------------
-# enable support for Fortran 77 libraries
-AC_DEFUN([AC_LIBTOOL_F77],
-[AC_REQUIRE([_LT_AC_LANG_F77])
-])# AC_LIBTOOL_F77
-
-
-# _LT_AC_LANG_F77
-# ---------------
-AC_DEFUN([_LT_AC_LANG_F77],
-[AC_REQUIRE([AC_PROG_F77])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
-])# _LT_AC_LANG_F77
-
-
-# AC_LIBTOOL_GCJ
-# --------------
-# enable support for GCJ libraries
-AC_DEFUN([AC_LIBTOOL_GCJ],
-[AC_REQUIRE([_LT_AC_LANG_GCJ])
-])# AC_LIBTOOL_GCJ
-
-
-# _LT_AC_LANG_GCJ
-# ---------------
-AC_DEFUN([_LT_AC_LANG_GCJ],
-[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
-  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
-    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
-      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
-        [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
-          [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
-])# _LT_AC_LANG_GCJ
-
-
-# AC_LIBTOOL_RC
-# -------------
-# enable support for Windows resource files
-AC_DEFUN([AC_LIBTOOL_RC],
-[AC_REQUIRE([LT_AC_PROG_RC])
-_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
-])# AC_LIBTOOL_RC
-
-
-# AC_LIBTOOL_LANG_C_CONFIG
-# ------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
-AC_DEFUN([_LT_AC_LANG_C_CONFIG],
-[lt_save_CC="$CC"
-AC_LANG_PUSH(C)
-
-# Source file extension for C test sources.
-ac_ext=c
-
-# Object file extension for compiled C test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
-
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-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
-
-# Report which library types will actually be built
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-
-aix4* | aix5*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
-    ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_POP
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_C_CONFIG
-
-
-# AC_LIBTOOL_LANG_CXX_CONFIG
-# --------------------------
-# Ensure that the configuration vars for the C compiler are
-# suitably defined.  Those variables are subsequently used by
-# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
-AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
-AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
-[AC_LANG_PUSH(C++)
-AC_REQUIRE([AC_PROG_CXX])
-AC_REQUIRE([_LT_AC_PROG_CXXCPP])
-
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-_LT_AC_TAGVAR(allow_undefined_flag, $1)=
-_LT_AC_TAGVAR(always_export_symbols, $1)=no
-_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_direct, $1)=no
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-_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=cpp
-
-# Object file extension for compiled C++ test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC=$CC
-lt_save_LD=$LD
-lt_save_GCC=$GCC
-GCC=$GXX
-lt_save_with_gnu_ld=$with_gnu_ld
-lt_save_path_LD=$lt_cv_path_LD
-if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
-  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
-else
-  $as_unset lt_cv_prog_gnu_ld
-fi
-if test -n "${lt_cv_path_LDCXX+set}"; then
-  lt_cv_path_LD=$lt_cv_path_LDCXX
-else
-  $as_unset lt_cv_path_LD
-fi
-test -z "${LDCXX+set}" || LD=$LDCXX
-CC=${CXX-"c++"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# We don't want -fno-exception wen compiling C++ code, so set the
-# no_builtin_flag separately
-if test "$GXX" = yes; then
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-else
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-fi
-
-if test "$GXX" = yes; then
-  # Set up default GNU C++ configuration
-
-  AC_PROG_LD
-
-  # Check if GNU C++ uses GNU ld as the underlying linker, since the
-  # archiving commands below assume that GNU ld is being used.
-  if test "$with_gnu_ld" = yes; then
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-    #     investigate it a little bit more. (MM)
-    wlarc='${wl}'
-
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
-       grep 'no-whole-archive' > /dev/null; then
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    with_gnu_ld=no
-    wlarc=
-
-    # A generic and very simple default shared library creation
-    # command for GNU C++ for the case where it uses the native
-    # linker, instead of GNU ld.  If possible, this setting should
-    # overridden to take advantage of the native linker features on
-    # the platform it is being used on.
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-  fi
-
-  # Commands to make compiler produce verbose output that lists
-  # what "hidden" libraries, object files and flags are used when
-  # linking a shared library.
-  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-else
-  GXX=no
-  with_gnu_ld=no
-  wlarc=
-fi
-
-# PORTME: fill in a description of your system's C++ link characteristics
-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-_LT_AC_TAGVAR(ld_shlibs, $1)=yes
-case $host_os in
-  aix3*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  aix4* | aix5*)
-    if test "$host_cpu" = ia64; then
-      # On IA64, the linker does run time linking by default, so we don't
-      # have to do anything special.
-      aix_use_runtimelinking=no
-      exp_sym_flag='-Bexport'
-      no_entry_flag=""
-    else
-      aix_use_runtimelinking=no
-
-      # Test if we are trying to use run time linking or normal
-      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-      # need to do runtime linking.
-      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-       for ld_flag in $LDFLAGS; do
-         case $ld_flag in
-         *-brtl*)
-           aix_use_runtimelinking=yes
-           break
-           ;;
-         esac
-       done
-       ;;
-      esac
-
-      exp_sym_flag='-bexport'
-      no_entry_flag='-bnoentry'
-    fi
-
-    # When large executables or shared objects are built, AIX ld can
-    # have problems creating the table of contents.  If linking a library
-    # or program results in "error TOC overflow" add -mminimal-toc to
-    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-    _LT_AC_TAGVAR(archive_cmds, $1)=''
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-    if test "$GXX" = yes; then
-      case $host_os in aix4.[[012]]|aix4.[[012]].*)
-      # We only want to do this on AIX 4.2 and lower, the check
-      # below for broken collect2 doesn't work under 4.3+
-       collect2name=`${CC} -print-prog-name=collect2`
-       if test -f "$collect2name" && \
-          strings "$collect2name" | grep resolve_lib_name >/dev/null
-       then
-         # We have reworked collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-       else
-         # We have old collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-       fi
-       ;;
-      esac
-      shared_flag='-shared'
-      if test "$aix_use_runtimelinking" = yes; then
-       shared_flag="$shared_flag "'${wl}-G'
-      fi
-    else
-      # not using gcc
-      if test "$host_cpu" = ia64; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-       shared_flag='-G'
-      else
-       if test "$aix_use_runtimelinking" = yes; then
-         shared_flag='${wl}-G'
-       else
-         shared_flag='${wl}-bM:SRE'
-       fi
-      fi
-    fi
-
-    # It seems that -bexpall does not export symbols beginning with
-    # underscore (_), so it is better to generate a list of symbols to export.
-    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-    if test "$aix_use_runtimelinking" = yes; then
-      # Warning - without using the other runtime loading flags (-brtl),
-      # -berok will link without error, but may produce a broken library.
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-      # Determine the default libpath from the value encoded in an empty executable.
-      _LT_AC_SYS_LIBPATH_AIX
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `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 $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-      else
-       # Determine the default libpath from the value encoded in an empty executable.
-       _LT_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'
-       # Exported symbols can be pulled into shared objects from archives
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-       # This is similar to how AIX traditionally builds its shared libraries.
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-      fi
-    fi
-    ;;
-
-  beos*)
-    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-      # support --undefined.  This deserves some investigation.  FIXME
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-    ;;
-
-  chorus*)
-    case $cc_basename in
-      *)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-    esac
-    ;;
-
-  cygwin* | mingw* | pw32*)
-    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-    # as there is no search path for DLLs.
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-    _LT_AC_TAGVAR(always_export_symbols, $1)=no
-    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      # If the export-symbols file already is a .def file (1st line
-      # is EXPORTS), use it as is; otherwise, prepend...
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-       cp $export_symbols $output_objdir/$soname.def;
-      else
-       echo EXPORTS > $output_objdir/$soname.def;
-       cat $export_symbols >> $output_objdir/$soname.def;
-      fi~
-      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-    else
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    fi
-  ;;
-      darwin* | rhapsody*)
-        case $host_os in
-        rhapsody* | darwin1.[[012]])
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[[012]])
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-        esac
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-    if test "$GXX" = yes ; then
-      lt_int_apple_cc_single_mod=no
-      output_verbose_link_cmd='echo'
-      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
-       lt_int_apple_cc_single_mod=yes
-      fi
-      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      else
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-        fi
-        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          else
-            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          fi
-            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-          ;;
-      esac
-      fi
-        ;;
-
-  dgux*)
-    case $cc_basename in
-      ec++*)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      ghcx*)
-       # Green Hills C++ Compiler
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      *)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-    esac
-    ;;
-  freebsd[[12]]*)
-    # C++ shared libraries reported to be fairly broken before switch to ELF
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  freebsd-elf*)
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    ;;
-  freebsd* | dragonfly*)
-    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-    # conventions
-    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-    ;;
-  gnu*)
-    ;;
-  hpux9*)
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                               # but as the default
-                               # location of the library.
-
-    case $cc_basename in
-    CC*)
-      # FIXME: insert proper C++ library support
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-    aCC*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      #
-      # There doesn't appear to be a way to prevent this compiler from
-      # explicitly linking system object files so we need to strip them
-      # from the output so that they don't get included in the library
-      # dependencies.
-      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-      ;;
-    *)
-      if test "$GXX" = yes; then
-        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-        # FIXME: insert proper C++ library support
-        _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-    ;;
-  hpux10*|hpux11*)
-    if test $with_gnu_ld = no; then
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-      case $host_cpu in
-      hppa*64*|ia64*)
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-        ;;
-      *)
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-        ;;
-      esac
-    fi
-    case $host_cpu in
-    hppa*64*|ia64*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-    *)
-      _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*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-         ;;
-       ia64*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-         ;;
-       *)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-         ;;
-       esac
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
-       #
-       # There doesn't appear to be a way to prevent this compiler from
-       # explicitly linking system object files so we need to strip them
-       # from the output so that they don't get included in the library
-       # dependencies.
-       output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-       ;;
-      *)
-       if test "$GXX" = yes; then
-         if test $with_gnu_ld = no; then
-           case $host_cpu in
-           hppa*64*)
-             _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             ;;
-           ia64*)
-             _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             ;;
-           *)
-             _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-             ;;
-           esac
-         fi
-       else
-         # FIXME: insert proper C++ library support
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-    esac
-    ;;
-  interix3*)
-    _LT_AC_TAGVAR(hardcode_direct, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-    # Instead, shared libraries are loaded at an image base (0x10000000 by
-    # default) and relocated if they conflict, which is a slow very memory
-    # consuming and fragmenting process.  To avoid this, we pick a random,
-    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-    ;;
-  irix5* | irix6*)
-    case $cc_basename in
-      CC*)
-       # SGI C++
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-       # Archives containing C++ object files must be created using
-       # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-       # necessary to make sure instantiated templates are included
-       # in the archive.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-       ;;
-      *)
-       if test "$GXX" = yes; then
-         if test "$with_gnu_ld" = no; then
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-         else
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
-         fi
-       fi
-       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-       ;;
-    esac
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-    ;;
-  linux* | k*bsd*-gnu)
-    case $cc_basename in
-      KCC*)
-       # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-       # KCC will only create a shared library if the output file
-       # ends with ".so" (or ".sl" for HP-UX), so rename the library
-       # to its proper name (with version) after linking.
-       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
-       #
-       # There doesn't appear to be a way to prevent this compiler from
-       # explicitly linking system object files so we need to strip them
-       # from the output so that they don't get included in the library
-       # dependencies.
-       output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-
-       # Archives containing C++ object files must be created using
-       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-       ;;
-      icpc*)
-       # Intel C++
-       with_gnu_ld=yes
-       # version 8.0 and above of icpc choke on multiply defined symbols
-       # if we add $predep_objects and $postdep_objects, however 7.1 and
-       # earlier do not add the objects themselves.
-       case `$CC -V 2>&1` in
-       *"Version 7."*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-         ;;
-       *)  # Version 8.0 or newer
-         tmp_idyn=
-         case $host_cpu in
-           ia64*) tmp_idyn=' -i_dynamic';;
-         esac
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-         ;;
-       esac
-       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-       ;;
-      pgCC*)
-        # Portland Group C++ compiler
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-        ;;
-      cxx*)
-       # Compaq C++
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-       runpath_var=LD_RUN_PATH
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
-       #
-       # There doesn't appear to be a way to prevent this compiler from
-       # explicitly linking system object files so we need to strip them
-       # from the output so that they don't get included in the library
-       # dependencies.
-       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-       ;;
-    esac
-    ;;
-  lynxos*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  m88k*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  mvs*)
-    case $cc_basename in
-      cxx*)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      *)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-    esac
-    ;;
-  netbsd* | netbsdelf*-gnu)
-    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-      wlarc=
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    fi
-    # Workaround some broken pre-1.5 toolchains
-    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-    ;;
-  openbsd2*)
-    # C++ shared libraries are fairly broken
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  openbsd*)
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    fi
-    output_verbose_link_cmd='echo'
-    ;;
-  osf3*)
-    case $cc_basename in
-      KCC*)
-       # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-       # KCC will only create a shared library if the output file
-       # ends with ".so" (or ".sl" for HP-UX), so rename the library
-       # to its proper name (with version) after linking.
-       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       # Archives containing C++ object files must be created using
-       # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
-
-       ;;
-      RCC*)
-       # Rational C++ 2.4.1
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      cxx*)
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
-       #
-       # There doesn't appear to be a way to prevent this compiler from
-       # explicitly linking system object files so we need to strip them
-       # from the output so that they don't get included in the library
-       # dependencies.
-       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-       ;;
-      *)
-       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-         # Commands to make compiler produce verbose output that lists
-         # what "hidden" libraries, object files and flags are used when
-         # linking a shared library.
-         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-       else
-         # FIXME: insert proper C++ library support
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-    esac
-    ;;
-  osf4* | osf5*)
-    case $cc_basename in
-      KCC*)
-       # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-       # KCC will only create a shared library if the output file
-       # ends with ".so" (or ".sl" for HP-UX), so rename the library
-       # to its proper name (with version) after linking.
-       _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       # Archives containing C++ object files must be created using
-       # the KAI C++ compiler.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
-       ;;
-      RCC*)
-       # Rational C++ 2.4.1
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      cxx*)
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-         echo "-hidden">> $lib.exp~
-         $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~
-         $rm $lib.exp'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       # Commands to make compiler produce verbose output that lists
-       # what "hidden" libraries, object files and flags are used when
-       # linking a shared library.
-       #
-       # There doesn't appear to be a way to prevent this compiler from
-       # explicitly linking system object files so we need to strip them
-       # from the output so that they don't get included in the library
-       # dependencies.
-       output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
-       ;;
-      *)
-       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-         # Commands to make compiler produce verbose output that lists
-         # what "hidden" libraries, object files and flags are used when
-         # linking a shared library.
-         output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
-
-       else
-         # FIXME: insert proper C++ library support
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       fi
-       ;;
-    esac
-    ;;
-  psos*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  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(archive_cmds_need_lc,$1)=yes
-       _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-       $CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-       case $host_os in
-         solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-         *)
-           # The C++ compiler is used as linker so we must use $wl
-           # flag to pass the commands to the underlying system
-           # linker. We must also pass each convience library through
-           # to the system linker between allextract/defaultextract.
-           # The C++ compiler will combine linker options so we
-           # cannot just pass the convience library names through
-           # without $wl.
-           # Supported since Solaris 2.6 (maybe 2.5.1?)
-           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
-           ;;
-       esac
-       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-       output_verbose_link_cmd='echo'
-
-       # Archives containing C++ object files must be created using
-       # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-       # necessary to make sure instantiated templates are included
-       # in the archive.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-       ;;
-      gcx*)
-       # Green Hills C++ Compiler
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-       # The C++ compiler must be used to create the archive.
-       _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-       ;;
-      *)
-       # GNU C++ compiler with Solaris linker
-       if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-         _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-         if $CC --version | grep -v '^2\.7' > /dev/null; then
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-               $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-         else
-           # g++ 2.7 appears to require `-G' NOT `-shared' on this
-           # platform.
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-               $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
-         fi
-
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-       fi
-       ;;
-    esac
-    ;;
-  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
-    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      *)
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-    esac
-    ;;
-  sysv5* | sco3.2v5* | sco5v6*)
-    # Note: We can NOT use -z defs as we might desire, because we do not
-    # link with -lc, and that would cause any symbols used from libc to
-    # always be unresolved, which means just about no library would
-    # ever link correctly.  If we're not using GNU ld we use -z text
-    # though, which does catch some bad symbols but isn't as heavy-handed
-    # as -z defs.
-    # For security reasons, it is highly recommended that you always
-    # use absolute paths for naming shared libraries, and exclude the
-    # DT_RUNPATH tag from executables and libraries.  But doing so
-    # requires that you compile everything twice, which is a pain.
-    # So that behaviour is only enabled if SCOABSPATH is set to a
-    # non-empty value in the environment.  Most likely only useful for
-    # creating official distributions of packages.
-    # This is a hack until libtool officially supports absolute path
-    # names for shared libraries.
-    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-    runpath_var='LD_RUN_PATH'
-
-    case $cc_basename in
-      CC*)
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-      *)
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       ;;
-    esac
-    ;;
-  tandem*)
-    case $cc_basename in
-      NCC*)
-       # NonStop-UX NCC 3.20
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-      *)
-       # FIXME: insert proper C++ library support
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       ;;
-    esac
-    ;;
-  vxworks*)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-  *)
-    # FIXME: insert proper C++ library support
-    _LT_AC_TAGVAR(ld_shlibs, $1)=no
-    ;;
-esac
-AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
-_LT_AC_TAGVAR(GCC, $1)="$GXX"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-AC_LIBTOOL_POSTDEP_PREDEP($1)
-AC_LIBTOOL_PROG_COMPILER_PIC($1)
-AC_LIBTOOL_PROG_CC_C_O($1)
-AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
-AC_LIBTOOL_PROG_LD_SHLIBS($1)
-AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
-AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-
-AC_LIBTOOL_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 <<EOF
-int a;
-void foo (void) { a = 0; }
-EOF
-],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-EOF
-],[$1],[F77],[cat > conftest.$ac_ext <<EOF
-      subroutine foo
-      implicit none
-      integer*4 a
-      a=0
-      return
-      end
-EOF
-],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
-public class foo {
-  private int a;
-  public void bar (void) {
-    a = 0;
-  }
-};
-EOF
-])
-dnl Parse the compiler output and extract the necessary
-dnl objects, libraries and library flags.
-if AC_TRY_EVAL(ac_compile); then
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  # The `*' in the case matches for architectures that use `case' in
-  # $output_verbose_cmd can trigger glob expansion during the loop
-  # eval without this substitution.
-  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-
-  for p in `eval $output_verbose_link_cmd`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" \
-         || test $p = "-R"; then
-        prev=$p
-        continue
-       else
-        prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-        case $p in
-        -L* | -R*)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
-            _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
-          else
-            _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
-          _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
-        else
-          _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
-        fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-        if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
-          _LT_AC_TAGVAR(predep_objects, $1)="$p"
-        else
-          _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
-        fi
-       else
-        if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
-          _LT_AC_TAGVAR(postdep_objects, $1)="$p"
-        else
-          _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling $1 test program"
-fi
-
-$rm -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-ifelse([$1],[CXX],
-[case $host_os in
-interix3*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  _LT_AC_TAGVAR(predep_objects,$1)=
-  _LT_AC_TAGVAR(postdep_objects,$1)=
-  _LT_AC_TAGVAR(postdeps,$1)=
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
-    ;;
-  esac
-  ;;
-esac
-])
-
-case " $_LT_AC_TAGVAR(postdeps, $1) " in
-*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
-esac
-])# AC_LIBTOOL_POSTDEP_PREDEP
-
-# AC_LIBTOOL_LANG_F77_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_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
-AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
-[AC_REQUIRE([AC_PROG_F77])
-AC_LANG_PUSH(Fortran 77)
-
-_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
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="      program t\n      end\n"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${F77-"f77"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-AC_MSG_CHECKING([if libtool supports shared libraries])
-AC_MSG_RESULT([$can_build_shared])
-
-AC_MSG_CHECKING([whether to build shared libraries])
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case $host_os in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-aix4* | aix5*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
-  ;;
-esac
-AC_MSG_RESULT([$enable_shared])
-
-AC_MSG_CHECKING([whether to build static libraries])
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-AC_MSG_RESULT([$enable_static])
-
-_LT_AC_TAGVAR(GCC, $1)="$G77"
-_LT_AC_TAGVAR(LD, $1)="$LD"
-
-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_CONFIG($1)
-
-AC_LANG_POP
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_F77_CONFIG
-
-
-# AC_LIBTOOL_LANG_GCJ_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_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
-AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
-[AC_LANG_SAVE
-
-# Source file extension for Java test sources.
-ac_ext=java
-
-# Object file extension for compiled Java test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${GCJ-"gcj"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-
-# GCJ did not exist at the time GCC didn't implicitly link libc in.
-_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-
-_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
-
-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_CONFIG($1)
-
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_GCJ_CONFIG
-
-
-# AC_LIBTOOL_LANG_RC_CONFIG
-# -------------------------
-# Ensure that the configuration vars for the Windows resource 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_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
-AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
-[AC_LANG_SAVE
-
-# Source file extension for RC test sources.
-ac_ext=rc
-
-# Object file extension for compiled RC test sources.
-objext=o
-_LT_AC_TAGVAR(objext, $1)=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="$lt_simple_compile_test_code"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-_LT_AC_SYS_COMPILER
-
-# save warnings/boilerplate of simple test code
-_LT_COMPILER_BOILERPLATE
-_LT_LINKER_BOILERPLATE
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${RC-"windres"}
-compiler=$CC
-_LT_AC_TAGVAR(compiler, $1)=$CC
-_LT_CC_BASENAME([$compiler])
-_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
-
-AC_LIBTOOL_CONFIG($1)
-
-AC_LANG_RESTORE
-CC="$lt_save_CC"
-])# AC_LIBTOOL_LANG_RC_CONFIG
-
-
-# AC_LIBTOOL_CONFIG([TAGNAME])
-# ----------------------------
-# If TAGNAME is not passed, then create an initial libtool script
-# with a default configuration from the untagged config vars.  Otherwise
-# add code to config.status for appending the configuration named by
-# TAGNAME from the matching tagged config vars.
-AC_DEFUN([AC_LIBTOOL_CONFIG],
-[# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    _LT_AC_TAGVAR(compiler, $1) \
-    _LT_AC_TAGVAR(CC, $1) \
-    _LT_AC_TAGVAR(LD, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
-    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
-    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
-    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
-    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
-    _LT_AC_TAGVAR(old_archive_cmds, $1) \
-    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
-    _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) \
-    _LT_AC_TAGVAR(archive_cmds, $1) \
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
-    _LT_AC_TAGVAR(postinstall_cmds, $1) \
-    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
-    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
-    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
-    _LT_AC_TAGVAR(no_undefined_flag, $1) \
-    _LT_AC_TAGVAR(export_symbols_cmds, $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_automatic, $1) \
-    _LT_AC_TAGVAR(module_cmds, $1) \
-    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
-    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
-    _LT_AC_TAGVAR(exclude_expsyms, $1) \
-    _LT_AC_TAGVAR(include_expsyms, $1); do
-
-    case $var in
-    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
-    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
-    _LT_AC_TAGVAR(archive_cmds, $1) | \
-    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
-    _LT_AC_TAGVAR(module_cmds, $1) | \
-    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
-    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
-    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\[$]0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
-    ;;
-  esac
-
-ifelse([$1], [],
-  [cfgfile="${ofile}T"
-  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
-  $rm -f "$cfgfile"
-  AC_MSG_NOTICE([creating $ofile])],
-  [cfgfile="$ofile"])
-
-  cat <<__EOF__ >> "$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 <gord@gnu.ai.mit.edu>, 1996
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# A sed program that does not truncate output.
-SED=$lt_SED
-
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="$SED -e 1s/^X//"
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-# The names of the tagged configurations supported by this script.
-available_tags=
-
-# ### BEGIN LIBTOOL CONFIG],
-[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
-
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
-
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
-
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
-
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
-
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
-
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
-
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
-
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
-
-# A C compiler.
-LTCC=$lt_LTCC
-
-# LTCC compiler flags.
-LTCFLAGS=$lt_LTCFLAGS
-
-# A language-specific compiler.
-CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
-
-# Is the compiler the GNU C compiler?
-with_gcc=$_LT_AC_TAGVAR(GCC, $1)
-
-# An ERE matcher.
-EGREP=$lt_EGREP
-
-# The linker used to build libraries.
-LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
-
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
-
-# A BSD-compatible nm program.
-NM=$lt_NM
-
-# A symbol stripping program
-STRIP=$lt_STRIP
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
-
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
-
-# Used on cygwin: assembler.
-AS="$AS"
-
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
-
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
-
-# How to pass a linker flag through the compiler.
-wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
-
-# Object file suffix (normally "o").
-objext="$ac_objext"
-
-# Old archive suffix (normally "a").
-libext="$libext"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
-
-# Executable file suffix (normally "").
-exeext="$exeext"
-
-# Additional compiler flags for building library objects.
-pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
-pic_mode=$pic_mode
-
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
-
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
-
-# Do we need a version for libraries?
-need_version=$need_version
-
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
-
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
-
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
-
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
-
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
-
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
-archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
-module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
-
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
-
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
-
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
-
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
-
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
-
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
-
-# Set to yes if exported symbols are required.
-always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
-
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
-
-# Symbols that must always be exported.
-include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
-
-ifelse([$1],[],
-[# ### END LIBTOOL CONFIG],
-[# ### END LIBTOOL TAG CONFIG: $tagname])
-
-__EOF__
-
-ifelse([$1],[], [
-  case $host_os in
-  aix3*)
-    cat <<\EOF >> "$cfgfile"
-
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-EOF
-    ;;
-  esac
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" || \
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
-])
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
-fi
-])# AC_LIBTOOL_CONFIG
-
-
-# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
-# -------------------------------------------
-AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
-
-_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
-
-if test "$GCC" = yes; then
-  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
-
-  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
-    lt_cv_prog_compiler_rtti_exceptions,
-    [-fno-rtti -fno-exceptions], [],
-    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
-fi
-])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
-
-
-# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
-# ---------------------------------
-AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
-[AC_REQUIRE([AC_CANONICAL_HOST])
-AC_REQUIRE([AC_PROG_NM])
-AC_REQUIRE([AC_OBJEXT])
-# Check for command to grab the raw symbol name followed by C symbol from nm.
-AC_MSG_CHECKING([command to parse $NM output from $compiler object])
-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
-[
-# These are sane defaults that work on at least a few old systems.
-# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
-
-# Character class describing NM global symbol codes.
-symcode='[[BCDEGRST]]'
-
-# Regexp to match symbols that can be accessed directly from C.
-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
-
-# Transform an extracted symbol line into a proper C declaration
-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
-
-# Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-
-# Define system-specific variables.
-case $host_os in
-aix*)
-  symcode='[[BCDT]]'
-  ;;
-cygwin* | mingw* | pw32*)
-  symcode='[[ABCDGISTW]]'
-  ;;
-hpux*) # Its linker distinguishes data from code symbols
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDEGRST]]'
-  fi
-  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  ;;
-linux* | k*bsd*-gnu)
-  if test "$host_cpu" = ia64; then
-    symcode='[[ABCDGIRSTW]]'
-    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
-    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
-  fi
-  ;;
-irix* | nonstopux*)
-  symcode='[[BCDEGRST]]'
-  ;;
-osf*)
-  symcode='[[BCDEGQRST]]'
-  ;;
-solaris*)
-  symcode='[[BDRT]]'
-  ;;
-sco3.2v5*)
-  symcode='[[DT]]'
-  ;;
-sysv4.2uw2*)
-  symcode='[[DT]]'
-  ;;
-sysv5* | sco5v6* | unixware* | OpenUNIX*)
-  symcode='[[ABDT]]'
-  ;;
-sysv4)
-  symcode='[[DFNSTU]]'
-  ;;
-esac
-
-# Handle CRLF in mingw tool chain
-opt_cr=
-case $build_os in
-mingw*)
-  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
-  ;;
-esac
-
-# If we're using GNU nm, then use its standard symbol codes.
-case `$NM -V 2>&1` in
-*GNU* | *'with BFD'*)
-  symcode='[[ABCDGIRSTW]]' ;;
-esac
-
-# Try without a prefix undercore, then with it.
-for ac_symprfx in "" "_"; do
-
-  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
-  symxfrm="\\1 $ac_symprfx\\2 \\2"
-
-  # Write the raw and C identifiers.
-  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[     ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
-
-  # Check to see that the pipe works correctly.
-  pipe_works=no
-
-  rm -f conftest*
-  cat > conftest.$ac_ext <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-int main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
-  if AC_TRY_EVAL(ac_compile); then
-    # Now try to grab the symbols.
-    nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
-      # Try sorting and uniquifying the output.
-      if sort "$nlist" | uniq > "$nlist"T; then
-       mv -f "$nlist"T "$nlist"
-      else
-       rm -f "$nlist"T
-      fi
-
-      # Make sure that we snagged all the symbols we need.
-      if grep ' nm_test_var$' "$nlist" >/dev/null; then
-       if grep ' nm_test_func$' "$nlist" >/dev/null; then
-         cat <<EOF > 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 <<EOF >> 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)=
-      ;;
-    interix3*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       ;;
-      *)
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix4* | aix5*)
-       # All AIX code is PIC.
-       if test "$host_cpu" = ia64; then
-         # AIX 5 now supports IA64 processor
-         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-       else
-         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-       darwin*)
-         # PIC is the default on this platform
-         # Common symbols not allowed in MH_DYLIB files
-         case $cc_basename in
-           xlc*)
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           ;;
-         esac
-       ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${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)='${wl}-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           _LT_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* | k*bsd*-gnu)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-           ;;
-         icpc* | ecpc*)
-           # Intel C++
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-           ;;
-         pgCC*)
-           # Portland Group C++ compiler.
-           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-           _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           _LT_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* | netbsdelf*-gnu)
-       ;;
-      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*)
-       ;;
-      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
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           _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'
-           ;;
-       esac
-       ;;
-      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'
-      ;;
-
-    interix3*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      enable_shared=no
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
-      fi
-      ;;
-
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-       ;;
-      esac
-      ;;
-
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      else
-       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-         ;;
-       esac
-       ;;
-
-    mingw* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      # PIC (with -KPIC) is the default.
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
-      ;;
-
-    newsos6)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      case $cc_basename in
-      icc* | ecc*)
-       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
-        ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-        ;;
-      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'
-      ;;
-
-    solaris*)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
-      *)
-       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      _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
-      ;;
-
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      _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'
-      ;;
-
-    unicos*)
-      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-
-    uts4*)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
-      ;;
-
-    *)
-      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
-      ;;
-    esac
-  fi
-])
-AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
-
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
-  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
-    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
-    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
-    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
-     "" | " "*) ;;
-     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
-     esac],
-    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
-fi
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
-    ;;
-  *)
-    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
-    ;;
-esac
-
-#
-# Check to make sure the static flag actually works.
-#
-wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
-  $lt_tmp_static_flag,
-  [],
-  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
-])
-
-
-# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
-# ------------------------------------
-# See if the linker supports building shared libraries.
-AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
-ifelse([$1],[CXX],[
-  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix4* | aix5*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-    else
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  linux* | k*bsd*-gnu)
-    _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-  ;;
-  *)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
-],[
-  runpath_var=
-  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
-  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
-  _LT_AC_TAGVAR(archive_cmds, $1)=
-  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
-  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
-  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
-  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
-  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-  _LT_AC_TAGVAR(hardcode_direct, $1)=no
-  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
-  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
-  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
-  _LT_AC_TAGVAR(module_cmds, $1)=
-  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
-  _LT_AC_TAGVAR(always_export_symbols, $1)=no
-  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  _LT_AC_TAGVAR(include_expsyms, $1)=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  _LT_CC_BASENAME([$compiler])
-  case $host_os in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
-    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
-      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix3* | aix4* | aix5*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       cat <<EOF 1>&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 <kc5tja@dolphin.openprojects.net> 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 <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-      # as there is no search path for DLLs.
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(always_export_symbols, $1)=no
-      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file (1st line
-       # is EXPORTS), use it as is; otherwise, prepend...
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-         cp $export_symbols $output_objdir/$soname.def;
-       else
-         echo EXPORTS > $output_objdir/$soname.def;
-         cat $export_symbols >> $output_objdir/$soname.def;
-       fi~
-       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    interix3*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
-
-    linux* | k*bsd*-gnu)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-       tmp_addflag=
-       case $cc_basename,$host_cpu in
-       pgcc*)                          # Portland Group C compiler
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)                # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       esac
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-       if test $supports_anon_versioning = yes; then
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-       fi
-       _LT_AC_TAGVAR(link_all_deplibs, $1)=no
-      else
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
-
-    solaris*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       cat <<EOF 1>&2
-
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) 
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-       cat <<_LT_EOF 1>&2
-
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
-
-_LT_EOF
-       ;;
-       *)
-         if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-           _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
-           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
-           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
-         else
-           _LT_AC_TAGVAR(ld_shlibs, $1)=no
-         fi
-       ;;
-      esac
-      ;;
-
-    sunos4*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      fi
-      ;;
-    esac
-
-    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
-      runpath_var=
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-      fi
-      ;;
-
-    aix4* | aix5*)
-      if test "$host_cpu" = ia64; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=""
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to AIX nm, but means don't demangle with GNU nm
-       if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-         _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-       else
-         _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
-
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # need to do runtime linking.
-       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-         for ld_flag in $LDFLAGS; do
-         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         ;;
-       esac
+# Copyright (C) 1996-2012 Free Software Foundation, Inc.
 
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
-
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-      _LT_AC_TAGVAR(archive_cmds, $1)=''
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-      if test "$GCC" = yes; then
-       case $host_os in aix4.[[012]]|aix4.[[012]].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" && \
-          strings "$collect2name" | grep resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-         else
-         # We have old collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test "$aix_use_runtimelinking" = yes; then
-         shared_flag="$shared_flag "'${wl}-G'
-       fi
-      else
-       # not using gcc
-       if test "$host_cpu" = ia64; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag='${wl}-G'
-         else
-           shared_flag='${wl}-bM:SRE'
-         fi
-       fi
-      fi
-
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
-      if test "$aix_use_runtimelinking" = yes; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       _LT_AC_SYS_LIBPATH_AIX
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `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 $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an empty executable.
-        _LT_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'
-         # Exported symbols can be pulled into shared objects from archives
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-         _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-         # This is similar to how AIX traditionally builds its shared libraries.
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-       fi
-      fi
-      ;;
-
-    amigaos*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      # see comment about different semantics on the GNU ld section
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    bsdi[[45]]*)
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
-      ;;
-
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      case $host_os in
-        rhapsody* | darwin1.[[012]])
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[[012]])
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-      esac
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-    if test "$GCC" = yes ; then
-       output_verbose_link_cmd='echo'
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         _LT_AC_TAGVAR(ld_shlibs, $1)=no
-          ;;
-      esac
-    fi
-      ;;
-
-    dgux*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    freebsd1*)
-      _LT_AC_TAGVAR(ld_shlibs, $1)=no
-      ;;
-
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | dragonfly*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    hpux9*)
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      ;;
-
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-       _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
-      fi
-      ;;
-
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-       case $host_cpu in
-       hppa*64*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      fi
-      if test "$with_gnu_ld" = no; then
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-         _LT_AC_TAGVAR(hardcode_direct, $1)=no
-         _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-         ;;
-       *)
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-         _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-         ;;
-       esac
-      fi
-      ;;
-
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    netbsd* | netbsdelf*-gnu)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    newsos6)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    openbsd*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      else
-       case $host_os in
-        openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-          _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-          ;;
-        *)
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-          ;;
-       esac
-      fi
-      ;;
-
-    os2*)
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
-      ;;
-
-    osf3*)
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
-      else
-       _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-       $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-      ;;
-
-    solaris*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-      if test "$GCC" = yes; then
-       wlarc='${wl}'
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-         $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
-      else
-       wlarc=''
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-       $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      case $host_os in
-      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-      *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
-       *)
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
-      esac
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-       sni)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
-       ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
-         _LT_AC_TAGVAR(hardcode_direct, $1)=no
-        ;;
-       motorola)
-         _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
-       ;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-
-    sysv4.3*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       _LT_AC_TAGVAR(ld_shlibs, $1)=yes
-      fi
-      ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
-      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
-      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
-      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
-      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
-
-      if test "$GCC" = yes; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      ;;
-
-    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
-
-#
-# 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)
-       pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $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 <windows.h>
-# #undef WIN32_LEAN_AND_MEAN
-# #include <stdio.h>
-#
-# #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 <cygwin/cygwin_dll.h>
-# 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)
-])
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-AC_DEFUN([LT_AC_PROG_RC],
-[AC_CHECK_TOOL(RC, windres, no)
-])
+# 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.
 
-# NOTE: This macro has been submitted for inclusion into   #
-#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
-#  a released version of Autoconf we should remove this    #
-#  macro and use it instead.                               #
-# LT_AC_PROG_SED
-# --------------
-# Check for a fully-functional sed program, that truncates
-# as few characters as possible.  Prefer GNU sed if found.
-AC_DEFUN([LT_AC_PROG_SED],
-[AC_MSG_CHECKING([for a sed that does not truncate output])
-AC_CACHE_VAL(lt_cv_path_SED,
-[# Loop through the user's path and test for sed and gsed.
-# Then use that list of sed's as ones to test for truncation.
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for lt_ac_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
-        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
-      fi
-    done
-  done
-done
-lt_ac_max=0
-lt_ac_count=0
-# Add /usr/xpg4/bin/sed as it is typically found on Solaris
-# along with /bin/sed that truncates output.
-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
-  test ! -f $lt_ac_sed && continue
-  cat /dev/null > conftest.in
-  lt_ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
-  # Check for GNU sed and select it if it is found.
-  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
-    lt_cv_path_SED=$lt_ac_sed
-    break
-  fi
-  while true; do
-    cat conftest.in conftest.in >conftest.tmp
-    mv conftest.tmp conftest.in
-    cp conftest.in conftest.nl
-    echo >>conftest.nl
-    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
-    cmp -s conftest.out conftest.nl || break
-    # 10000 chars as input seems more than enough
-    test $lt_ac_count -gt 10 && break
-    lt_ac_count=`expr $lt_ac_count + 1`
-    if test $lt_ac_count -gt $lt_ac_max; then
-      lt_ac_max=$lt_ac_count
-      lt_cv_path_SED=$lt_ac_sed
-    fi
-  done
-done
-])
-SED=$lt_cv_path_SED
-AC_MSG_RESULT([$SED])
-])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
+[m4_warning([this file was generated for autoconf 2.69.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2002-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -6390,26 +29,43 @@ AC_MSG_RESULT([$SED])
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
-AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.12'
+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.12.4], [],
+      [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 so it can be traced.
-# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-        [AM_AUTOMAKE_VERSION([1.9.6])])
+[AM_AUTOMAKE_VERSION([1.12.4])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 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/../..'.
+# $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
@@ -6428,7 +84,7 @@ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
 #
 # 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
+# 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,
@@ -6454,24 +110,24 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 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 7
-
 # 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])
-AC_SUBST([$1_FALSE])
+[AC_PREREQ([2.52])dnl
+ m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])dnl
+AC_SUBST([$1_FALSE])dnl
+_AM_SUBST_NOTMAKE([$1_TRUE])dnl
+_AM_SUBST_NOTMAKE([$1_FALSE])dnl
+m4_define([_AM_COND_VALUE_$1], [$2])dnl
 if $2; then
   $1_TRUE=
   $1_FALSE='#'
@@ -6485,17 +141,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 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
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# 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
@@ -6505,7 +158,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -6518,11 +171,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -6530,8 +185,9 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # 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'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -6549,6 +205,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
   fi
+  am__universal=false
+  m4_case([$1], [CC],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac],
+    [CXX],
+    [case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac])
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -6560,34 +226,49 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > 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
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
        break
       fi
       ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # 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} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -6620,7 +301,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# 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
@@ -6630,69 +311,85 @@ 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])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
 AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
-AC_SUBST([AMDEPBACKSLASH])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+AC_SUBST([am__nodep])dnl
+_AM_SUBST_NOTMAKE([am__nodep])dnl
 ])
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 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.
-  # So let's grep whole file.
-  if grep '^#.*generated by automake' $mf > /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"
+[{
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/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"`
+    # 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'`; 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
-done
+}
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
 
@@ -6701,7 +398,7 @@ done
 # 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
+# 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],
@@ -6711,15 +408,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 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.
 
@@ -6735,16 +429,20 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # 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.58])dnl
+[AC_PREREQ([2.62])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
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+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
@@ -6760,48 +458,85 @@ 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_DIAGNOSE([obsolete],
+[$0: two- and three-arguments forms are deprecated.  For more info, see:
+http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
+  [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[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
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # 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([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
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                  [_AM_DEPENDENCIES(CXX)],
-                  [define([AC_PROG_CXX],
-                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+dnl Support for Objective C++ was only introduced in Autoconf 2.65,
+dnl but we still cater to Autoconf 2.62.
+m4_ifdef([AC_PROG_OBJCXX],
+[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
 ])
+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
+dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_CONFIG_COMMANDS_PRE(dnl
+[m4_provide_if([_AM_COMPILER_EXEEXT],
+  [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
 ])
 
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
+dnl mangled by Autoconf and run in a shell conditional statement.
+m4_define([_AC_COMPILER_EXEEXT],
+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
+
 
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
@@ -6812,18 +547,19 @@ AC_PROVIDE_IFELSE([AC_PROG_CXX],
 # our stamp files there.
 AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
 [# Compute $1's index in $config_headers.
+_am_arg=$1
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $1 | $1:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -6834,17 +570,22 @@ echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-AC_SUBST(install_sh)])
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2012 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],
@@ -6861,27 +602,36 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 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_MAINTAINER_MODE([DEFAULT-MODE])
+# ----------------------------------
+# Control maintainer-specific portions of Makefiles.
+# Default is to disable them, unless 'enable' is passed literally.
+# For symmetry, 'disable' may be passed as well.  Anyway, the user
+# can override the default with the --enable/--disable switch.
 AC_DEFUN([AM_MAINTAINER_MODE],
-[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
-  dnl maintainer-mode is disabled by default
-  AC_ARG_ENABLE(maintainer-mode,
-[  --enable-maintainer-mode  enable make rules and dependencies not useful
-                         (and sometimes confusing) to the casual installer],
-      USE_MAINTAINER_MODE=$enableval,
-      USE_MAINTAINER_MODE=no)
+[m4_case(m4_default([$1], [disable]),
+       [enable], [m4_define([am_maintainer_other], [disable])],
+       [disable], [m4_define([am_maintainer_other], [enable])],
+       [m4_define([am_maintainer_other], [enable])
+        m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
+  dnl maintainer-mode's default is 'disable' unless 'enable' is passed
+  AC_ARG_ENABLE([maintainer-mode],
+    [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode],
+      am_maintainer_other[ make rules and dependencies not useful
+      (and sometimes confusing) to the casual installer])],
+    [USE_MAINTAINER_MODE=$enableval],
+    [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
   AC_MSG_RESULT([$USE_MAINTAINER_MODE])
-  AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
+  AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
   MAINT=$MAINTAINER_MODE_TRUE
-  AC_SUBST(MAINT)dnl
+  AC_SUBST([MAINT])dnl
 ]
 )
 
@@ -6889,14 +639,12 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 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.
@@ -6904,7 +652,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
 [am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
@@ -6914,24 +662,24 @@ 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
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # 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
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 AC_SUBST([am__include])
 AC_SUBST([am__quote])
@@ -6939,25 +687,25 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1999-2012 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_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
 AC_DEFUN([AM_PROG_CC_C_O],
 [AC_REQUIRE([AC_PROG_CC_C_O])dnl
 AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
 # FIXME: we rely on the cache variable name because
 # there is no other way.
 set dummy $CC
-ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
@@ -6965,19 +713,20 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
    # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
    CC="$am_aux_dir/compile $CC"
 fi
+dnl Make sure AC_PROG_CC is never called again, or it will override our
+dnl setting of CC.
+m4_define([AC_PROG_CC],
+          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
 ])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2012 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_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -6985,112 +734,54 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
 # Define MISSING if not defined so far and test if it supports --run.
 # If it does, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+AC_REQUIRE_AUX_FILE([missing])dnl
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 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.
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
-#
-# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
-# created by `make install' are always world readable, even if the
-# installer happens to have an overly restrictive umask (e.g. 077).
-# This was a mistake.  There are at least two reasons why we must not
-# use `-m 0755':
-#   - it causes special bits like SGID to be ignored,
-#   - it may be too restrictive (some setups expect 775 directories).
-#
-# Do not use -m 0755 and let people choose whatever they expect by
-# setting umask.
-#
-# We cannot accept any implementation of `mkdir' that recognizes `-p'.
-# Some implementations (such as Solaris 8's) are not thread-safe: if a
-# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
-# concurrently, both version can detect that a/ is missing, but only
-# one can create it and the other will error out.  Consequently we
-# restrict ourselves to GNU make (using the --version option ensures
-# this.)
-AC_DEFUN([AM_PROG_MKDIR_P],
-[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
-  done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
-  else
-    mkdir_p='$(install_sh) -d'
-  fi
-fi
-AC_SUBST([mkdir_p])])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 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)])
+[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)])])
+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
 
 # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
 # -------------------------------------------
@@ -7100,45 +791,60 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996-2012 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
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[[\\\"\#\$\&\'\`$am_lf]]*)
+    AC_MSG_ERROR([unsafe absolute working directory name]);;
+esac
+case $srcdir in
+  *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   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
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -7148,9 +854,85 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
+
+# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_SILENT_RULES([DEFAULT])
+# --------------------------
+# Enable less verbose build rules; with the default set to DEFAULT
+# ("yes" being less verbose, "no" or empty being verbose).
+AC_DEFUN([AM_SILENT_RULES],
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+esac
+dnl
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
+dnl do not support nested variable expansions.
+dnl See automake bug#9928 and bug#10237.
+am_make=${MAKE-make}
+AC_CACHE_CHECK([whether $am_make supports nested variables],
+   [am_cv_make_support_nested_variables],
+   [if AS_ECHO([['TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi])
+if test $am_cv_make_support_nested_variables = yes; then
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
+  AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AC_SUBST([AM_V])dnl
+AM_SUBST_NOTMAKE([AM_V])dnl
+AC_SUBST([AM_DEFAULT_V])dnl
+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl
+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl
+AM_BACKSLASH='\'
+AC_SUBST([AM_BACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
+])
 
-# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2001-2012 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -7158,40 +940,55 @@ AC_MSG_RESULT(yes)])
 
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# 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
+# 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
+# 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'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
+# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# AM_SUBST_NOTMAKE(VARIABLE)
+# --------------------------
+# Public sister of _AM_SUBST_NOTMAKE.
+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
+
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2004-2012 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'.
+# 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
@@ -7202,10 +999,11 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 # 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])
+[# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AC_SUBST([AMTAR], ['$${TAR-tar}'])
 m4_if([$1], [v7],
-     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
      [m4_case([$1], [ustar],, [pax],,
               [m4_fatal([Unknown tar format])])
 AC_MSG_CHECKING([how to create a $1 tar archive])
@@ -7213,7 +1011,7 @@ AC_MSG_CHECKING([how to create a $1 tar archive])
 _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 `-'.
+# Solaris sh will not grok spaces in the rhs of '-'.
 for _am_tool in $_am_tools
 do
   case $_am_tool in
@@ -7279,3 +1077,4 @@ m4_include([m4/libtool.m4])
 m4_include([m4/ltoptions.m4])
 m4_include([m4/ltsugar.m4])
 m4_include([m4/ltversion.m4])
+m4_include([m4/lt~obsolete.m4])
index 1849c4a4d773f22302d99f0e9361a6901a6031d7..5633885062d194234b2e7b1e4c9d662c0c8356c9 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh
 set -x
-#libtoolize --force --copy
+libtoolize --force --copy
 aclocal -I ./m4
 autoheader
 automake --foreign --add-missing --copy
diff --git a/src/tiff/build/Makefile.am b/src/tiff/build/Makefile.am
new file mode 100644 (file)
index 0000000..48fe8b4
--- /dev/null
@@ -0,0 +1,30 @@
+#
+# Tag Image File Format (TIFF) Software
+#
+# Copyright (C) 2007, Andrey Kiselev <dron@ak4719.spb.edu>
+#
+# Permission to use, copy, modify, distribute, and sell this software and 
+# its documentation for any purpose is hereby granted without fee, provided
+# that (i) the above copyright notices and this permission notice appear in
+# all copies of the software and related documentation, and (ii) the names of
+# Sam Leffler and Silicon Graphics may not be used in any advertising or
+# publicity relating to the software without the specific, prior written
+# permission of Sam Leffler and Silicon Graphics.
+# 
+# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+# 
+# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+# OF THIS SOFTWARE.
+
+# Process this file with automake to produce Makefile.in.
+
+EXTRA_DIST = README
+
+SUBDIRS = 
+
diff --git a/src/tiff/build/Makefile.in b/src/tiff/build/Makefile.in
new file mode 100644 (file)
index 0000000..2ed760a
--- /dev/null
@@ -0,0 +1,644 @@
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2012 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@
+
+#
+# Tag Image File Format (TIFF) Software
+#
+# Copyright (C) 2007, Andrey Kiselev <dron@ak4719.spb.edu>
+#
+# Permission to use, copy, modify, distribute, and sell this software and 
+# its documentation for any purpose is hereby granted without fee, provided
+# that (i) the above copyright notices and this permission notice appear in
+# all copies of the software and related documentation, and (ii) the names of
+# Sam Leffler and Silicon Graphics may not be used in any advertising or
+# publicity relating to the software without the specific, prior written
+# permission of Sam Leffler and Silicon Graphics.
+# 
+# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+# 
+# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+# OF THIS SOFTWARE.
+
+# Process this file with automake to produce Makefile.in.
+VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = build
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
+       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
+       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
+       $(top_builddir)/libtiff/tiffconf.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+DIST_SOURCES =
+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
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GLUT_CFLAGS = @GLUT_CFLAGS@
+GLUT_LIBS = @GLUT_LIBS@
+GLU_CFLAGS = @GLU_CFLAGS@
+GLU_LIBS = @GLU_LIBS@
+GL_CFLAGS = @GL_CFLAGS@
+GL_LIBS = @GL_LIBS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBDIR = @LIBDIR@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@
+LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@
+LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@
+LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@
+LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@
+LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
+LIBTIFF_VERSION = @LIBTIFF_VERSION@
+LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PTHREAD_CC = @PTHREAD_CC@
+PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
+PTHREAD_LIBS = @PTHREAD_LIBS@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
+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_alias = @target_alias@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README
+SUBDIRS = 
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign build/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign build/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+
+# 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) $(RECURSIVE_CLEAN_TARGETS):
+       @fail= 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//`; \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
+         echo "Making $$target in $$subdir"; \
+         if test "$$subdir" = "."; then \
+           dot_seen=yes; \
+           local_target="$$target-am"; \
+         else \
+           local_target="$$target"; \
+         fi; \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         || eval $$failcom; \
+       done; \
+       if test "$$dot_seen" = "no"; then \
+         $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+       fi; test -z "$$fail"
+tags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+       done
+ctags-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
+       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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       set x; \
+       here=`pwd`; \
+       if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+         include_option=--etags-include; \
+         empty_fix=.; \
+       else \
+         include_option=--include; \
+         empty_fix=; \
+       fi; \
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           test ! -f $$subdir/TAGS || \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
+         fi; \
+       done; \
+       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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+         test -n "$$unique" || unique=$$empty_fix; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
+       fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+               $(TAGS_FILES) $(LISP)
+       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; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
+         || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+            $$unique
+
+GTAGS:
+       here=`$(am__cd) $(top_builddir) && pwd` \
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
+
+distclean-tags:
+       -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+         else \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
+           || exit 1; \
+         fi; \
+       done
+       @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+         if test "$$subdir" = .; then :; else \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
+             $(MAKE) $(AM_MAKEFLAGS) \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
+               distdir) \
+             || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+html-am:
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am:
+
+install-info: install-info-recursive
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+       -rm -f 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:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-generic distclean-libtool distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags tags-recursive uninstall uninstall-am
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/tiff/build/README b/src/tiff/build/README
new file mode 100644 (file)
index 0000000..f765efc
--- /dev/null
@@ -0,0 +1,3 @@
+This directory contains scripts and tools needed to build libtiff library
+and its utilities in various environments.
+
index 40aee89c22300b43455cd6ea70649b9bd27a42c5..ca2a03ca4f18f15603819e72c218515d4a4b763c 100755 (executable)
@@ -1,10 +1,10 @@
 #! /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, 2006, 2007, 2008, 2009, 2010
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 #   Free Software Foundation, Inc.
 
-timestamp='2010-09-24'
+timestamp='2008-01-08'
 
 # 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
@@ -27,16 +27,16 @@ timestamp='2010-09-24'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  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.
 #
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+# 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,.*/,,'`
 
@@ -56,9 +56,8 @@ 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, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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."
@@ -92,7 +91,7 @@ if test $# != 0; then
   exit 1
 fi
 
-trap 'exit 1' HUP INT TERM
+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
@@ -106,7 +105,7 @@ trap 'exit 1' HUP INT TERM
 
 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" HUP INT PIPE TERM ;
+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) ; } ||
@@ -171,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
                eval $set_cc_for_build
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
-                       | grep -q __ELF__
+                       | grep __ELF__ >/dev/null
                then
                    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
                    # Return netbsd for either.  FIX?
@@ -325,33 +324,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
        case `/usr/bin/uname -p` in
            sparc) echo sparc-icl-nx7; exit ;;
        esac ;;
-    s390x:SunOS:*:*)
-       echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
-       exit ;;
     sun4H:SunOS:5.*:*)
        echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
        echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
        exit ;;
-    i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-       echo i386-pc-auroraux${UNAME_RELEASE}
-       exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       eval $set_cc_for_build
-       SUN_ARCH="i386"
-       # If there is a compiler, see if it is configured for 64-bit objects.
-       # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
-       # This test works for both compilers.
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               SUN_ARCH="x86_64"
-           fi
-       fi
-       echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       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
@@ -552,7 +532,7 @@ EOF
                echo rs6000-ibm-aix3.2
        fi
        exit ;;
-    *:AIX:*:[4567])
+    *:AIX:*:[456])
        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
@@ -660,7 +640,7 @@ EOF
            # => hppa64-hp-hpux11.23
 
            if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
-               grep -q __LP64__
+               grep __LP64__ >/dev/null
            then
                HP_ARCH="hppa2.0w"
            else
@@ -811,12 +791,12 @@ EOF
     i*:PW*:*)
        echo ${UNAME_MACHINE}-pc-pw32
        exit ;;
-    *:Interix*:*)
-       case ${UNAME_MACHINE} in
+    *:Interix*:[3456]*)
+       case ${UNAME_MACHINE} in
            x86)
                echo i586-pc-interix${UNAME_RELEASE}
                exit ;;
-           authenticamd | genuineintel | EM64T)
+           EM64T | authenticamd)
                echo x86_64-unknown-interix${UNAME_RELEASE}
                exit ;;
            IA64)
@@ -826,9 +806,6 @@ EOF
     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
        echo i${UNAME_MACHINE}-pc-mks
        exit ;;
-    8664:Windows_NT:*)
-       echo x86_64-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
@@ -858,20 +835,6 @@ EOF
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
-    alpha:Linux:*:*)
-       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
-         EV5)   UNAME_MACHINE=alphaev5 ;;
-         EV56)  UNAME_MACHINE=alphaev56 ;;
-         PCA56) UNAME_MACHINE=alphapca56 ;;
-         PCA57) UNAME_MACHINE=alphapca56 ;;
-         EV6)   UNAME_MACHINE=alphaev6 ;;
-         EV67)  UNAME_MACHINE=alphaev67 ;;
-         EV68*) UNAME_MACHINE=alphaev68 ;;
-        esac
-       objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
-       exit ;;
     arm*:Linux:*:*)
        eval $set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
@@ -894,17 +857,6 @@ EOF
     frv:Linux:*:*)
        echo frv-unknown-linux-gnu
        exit ;;
-    i*86:Linux:*:*)
-       LIBC=gnu
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-       exit ;;
     ia64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
@@ -914,33 +866,74 @@ EOF
     m68*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
-    mips:Linux:*:* | mips64:Linux:*:*)
+    mips:Linux:*:*)
        eval $set_cc_for_build
        sed 's/^        //' << EOF >$dummy.c
        #undef CPU
-       #undef ${UNAME_MACHINE}
-       #undef ${UNAME_MACHINE}el
+       #undef mips
+       #undef mipsel
        #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       CPU=${UNAME_MACHINE}el
+       CPU=mipsel
        #else
        #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       CPU=${UNAME_MACHINE}
+       CPU=mips
        #else
        CPU=
        #endif
        #endif
 EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
+       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 ;;
-    padre:Linux:*:*)
-       echo sparc-unknown-linux-gnu
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
        exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
+    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
@@ -950,11 +943,8 @@ EOF
          *)    echo hppa-unknown-linux-gnu ;;
        esac
        exit ;;
-    ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
-       exit ;;
-    ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
        echo ${UNAME_MACHINE}-ibm-linux
@@ -968,9 +958,6 @@ EOF
     sparc:Linux:*:* | sparc64:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
-    tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-tilera-linux-gnu
-       exit ;;
     vax:Linux:*:*)
        echo ${UNAME_MACHINE}-dec-linux-gnu
        exit ;;
@@ -978,8 +965,71 @@ EOF
        echo x86_64-unknown-linux-gnu
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-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 <features.h>
+       #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(__SUNPRO_C) || defined(__SUNPRO_CC)
+       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
@@ -1008,7 +1058,7 @@ EOF
     i*86:syllable:*:*)
        echo ${UNAME_MACHINE}-pc-syllable
        exit ;;
-    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
        echo i386-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     i*86:*DOS:*:*)
@@ -1052,11 +1102,8 @@ EOF
     pc:*:*:*)
        # Left here for compatibility:
         # uname -m prints for DJGPP always 'pc', but it prints nothing about
-        # the processor, so we play safe by assuming i586.
-       # Note: whatever this is, it MUST be the same as what config.sub
-       # prints for the "djgpp" host, or else GDB configury will decide that
-       # this is a cross-build.
-       echo i586-pc-msdosdjgpp
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
         exit ;;
     Intel:Mach:3*:*)
        echo i386-pc-mach3
@@ -1094,16 +1141,6 @@ EOF
     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
           && { echo i486-ncr-sysv4; exit; } ;;
-    NCR*:*:4.2:* | MPRAS*:*:4.2:*)
-       OS_REL='.3'
-       test -r /etc/.relid \
-           && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
-       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
-           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
-       /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
-           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
        echo m68k-unknown-lynxos${UNAME_RELEASE}
        exit ;;
@@ -1116,7 +1153,7 @@ EOF
     rs6000:LynxOS:2.*:*)
        echo rs6000-unknown-lynxos${UNAME_RELEASE}
        exit ;;
-    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
        echo powerpc-unknown-lynxos${UNAME_RELEASE}
        exit ;;
     SM[BE]S:UNIX_SV:*:*)
@@ -1179,9 +1216,6 @@ EOF
     BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
        echo i586-pc-beos
        exit ;;
-    BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
-       echo i586-pc-haiku
-       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
@@ -1209,16 +1243,6 @@ EOF
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
        case $UNAME_PROCESSOR in
-           i386)
-               eval $set_cc_for_build
-               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                     grep IS_64BIT_ARCH >/dev/null
-                 then
-                     UNAME_PROCESSOR="x86_64"
-                 fi
-               fi ;;
            unknown) UNAME_PROCESSOR=powerpc ;;
        esac
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
@@ -1234,9 +1258,6 @@ EOF
     *:QNX:*:4*)
        echo i386-pc-qnx
        exit ;;
-    NEO-?:NONSTOP_KERNEL:*:*)
-       echo neo-tandem-nsk${UNAME_RELEASE}
-       exit ;;
     NSE-?:NONSTOP_KERNEL:*:*)
        echo nse-tandem-nsk${UNAME_RELEASE}
        exit ;;
@@ -1303,9 +1324,6 @@ EOF
     i*86:rdos:*:*)
        echo ${UNAME_MACHINE}-pc-rdos
        exit ;;
-    i*86:AROS:*:*)
-       echo ${UNAME_MACHINE}-pc-aros
-       exit ;;
 esac
 
 #echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1466,9 +1484,9 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
 and
-  http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
index 3c45ea8960cd0b43c19ef47764a75f42cb43e726..6759825a5b7fcf64476b4398dc0e30b3090b925c 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 #   Free Software Foundation, Inc.
 
-timestamp='2010-09-11'
+timestamp='2008-01-16'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,16 +32,13 @@ timestamp='2010-09-11'
 
 
 # Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# 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.
 
-# You can get the latest version of this script from:
-# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
-
 # 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.
@@ -75,9 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 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."
@@ -124,10 +120,8 @@ esac
 # 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-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
-  knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
+  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/'`
@@ -154,13 +148,10 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze)
+       -apple | -axis | -knuth | -cray)
                os=
                basic_machine=$1
                ;;
-        -bluegene*)
-               os=-cnk
-               ;;
        -sim | -cisco | -oki | -wec | -winbond)
                os=
                basic_machine=$1
@@ -258,16 +249,13 @@ case $basic_machine in
        | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
-       | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep | metag \
+       | maxq | mb | microblaze | mcore | mep \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
-       | mips64octeon | mips64octeonel \
-       | mips64orion | mips64orionel \
-       | mips64r5900 | mips64r5900el \
        | mips64vr | mips64vrel \
+       | mips64orion | mips64orionel \
        | mips64vr4100 | mips64vr4100el \
        | mips64vr4300 | mips64vr4300el \
        | mips64vr5000 | mips64vr5000el \
@@ -280,41 +268,28 @@ case $basic_machine in
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
-       | moxie \
        | mt \
        | msp430 \
-       | nds32 | nds32le | nds32be \
        | nios | nios2 \
        | ns16k | ns32k \
        | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
        | pyramid \
-       | rx \
        | score \
-       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
        | sh64 | sh64le \
        | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
        | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
        | spu | strongarm \
-       | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
-       | ubicom32 \
+       | tahoe | thumb | tic4x | tic80 | tron \
        | v850 | v850e \
        | we32k \
        | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
-       | z8k | z80)
+       | z8k)
                basic_machine=$basic_machine-unknown
                ;;
-       c54x)
-               basic_machine=tic54x-unknown
-               ;;
-       c55x)
-               basic_machine=tic55x-unknown
-               ;;
-       c6x)
-               basic_machine=tic6x-unknown
-               ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12)
                # Motorola 68HC11/12.
                basic_machine=$basic_machine-unknown
                os=-none
@@ -345,7 +320,7 @@ case $basic_machine in
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
        | bfin-* | bs2000-* \
-       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
        | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
@@ -354,17 +329,14 @@ case $basic_machine in
        | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
-       | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
-       | mips64octeon-* | mips64octeonel-* \
-       | mips64orion-* | mips64orionel-* \
-       | mips64r5900-* | mips64r5900el-* \
        | mips64vr-* | mips64vrel-* \
+       | mips64orion-* | mips64orionel-* \
        | mips64vr4100-* | mips64vr4100el-* \
        | mips64vr4300-* | mips64vr4300el-* \
        | mips64vr5000-* | mips64vr5000el-* \
@@ -379,30 +351,27 @@ case $basic_machine in
        | mmix-* \
        | mt-* \
        | msp430-* \
-       | nds32-* | nds32le-* | nds32be-* \
        | nios-* | nios2-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
        | pyramid-* \
-       | romp-* | rs6000-* | rx-* \
-       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
        | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
        | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
        | sparclite-* \
        | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
        | tahoe-* | thumb-* \
        | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-       | tile-* | tilegx-* \
        | tron-* \
-       | ubicom32-* \
        | v850-* | v850e-* | vax-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
        | xstormy16-* | xtensa*-* \
        | ymp-* \
-       | z8k-* | z80-*)
+       | z8k-*)
                ;;
        # Recognize the basic CPU types without company name, with glob match.
        xtensa*)
@@ -470,10 +439,6 @@ case $basic_machine in
                basic_machine=m68k-apollo
                os=-bsd
                ;;
-       aros)
-               basic_machine=i386-pc
-               os=-aros
-               ;;
        aux)
                basic_machine=m68k-apple
                os=-aux
@@ -490,27 +455,10 @@ case $basic_machine in
                basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
                os=-linux
                ;;
-       bluegene*)
-               basic_machine=powerpc-ibm
-               os=-cnk
-               ;;
-       c54x-*)
-               basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c55x-*)
-               basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
-       c6x-*)
-               basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
-               ;;
        c90)
                basic_machine=c90-cray
                os=-unicos
                ;;
-        cegcc)
-               basic_machine=arm-unknown
-               os=-cegcc
-               ;;
        convex-c1)
                basic_machine=c1-convex
                os=-bsd
@@ -578,10 +526,6 @@ case $basic_machine in
                basic_machine=m88k-motorola
                os=-sysv3
                ;;
-       dicos)
-               basic_machine=i686-pc
-               os=-dicos
-               ;;
        djgpp)
                basic_machine=i586-pc
                os=-msdosdjgpp
@@ -755,9 +699,6 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
-        microblaze)
-               basic_machine=microblaze-xilinx
-               ;;
        mingw32)
                basic_machine=i386-pc
                os=-mingw32
@@ -862,12 +803,6 @@ case $basic_machine in
        np1)
                basic_machine=np1-gould
                ;;
-        neo-tandem)
-               basic_machine=neo-tandem
-               ;;
-        nse-tandem)
-               basic_machine=nse-tandem
-               ;;
        nsr-tandem)
                basic_machine=nsr-tandem
                ;;
@@ -1102,10 +1037,17 @@ case $basic_machine in
                basic_machine=t90-cray
                os=-unicos
                ;;
-        # This must be matched before tile*.
-        tilegx*)
-               basic_machine=tilegx-unknown
-               os=-linux-gnu
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
                ;;
        tile*)
                basic_machine=tile-unknown
@@ -1186,10 +1128,6 @@ case $basic_machine in
                basic_machine=z8k-unknown
                os=-sim
                ;;
-       z80-*-coff)
-               basic_machine=z80-unknown
-               os=-sim
-               ;;
        none)
                basic_machine=none-none
                os=-none
@@ -1228,7 +1166,7 @@ case $basic_machine in
        we32k)
                basic_machine=we32k-att
                ;;
-       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+       sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
                basic_machine=sh-unknown
                ;;
        sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1278,9 +1216,6 @@ case $os in
         # First match some system type aliases
         # that might get confused with valid system types.
        # -solaris* is a basic system type, with this one exception.
-        -auroraux)
-               os=-auroraux
-               ;;
        -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
                ;;
@@ -1301,11 +1236,10 @@ case $os in
        # 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* | -cnk* | -sunos | -sunos[34]*\
-             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
-             | -aos* | -aros* \
+             | -aos* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
              | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
              | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
@@ -1314,10 +1248,9 @@ case $os in
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -chorusos* | -chorusrdb* \
              | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-             | -mingw32* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-uclibc* \
+             | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1325,7 +1258,7 @@ case $os in
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1455,11 +1388,6 @@ case $os in
        -zvmoe)
                os=-zvmoe
                ;;
-       -dicos*)
-               os=-dicos
-               ;;
-        -nacl*)
-               ;;
        -none)
                ;;
        *)
@@ -1498,16 +1426,7 @@ case $basic_machine in
                os=-aout
                ;;
         c4x-* | tic4x-*)
-               os=-coff
-               ;;
-       tic54x-*)
-               os=-coff
-               ;;
-       tic55x-*)
-               os=-coff
-               ;;
-       tic6x-*)
-               os=-coff
+               os=-coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
@@ -1666,7 +1585,7 @@ case $basic_machine in
                        -sunos*)
                                vendor=sun
                                ;;
-                       -cnk*|-aix*)
+                       -aix*)
                                vendor=ibm
                                ;;
                        -beos*)
index 04701da536f33a7c39d7bb01b87a70ae3a776df5..ca5ea4e1ef9c125b1cb1fc7d51c93d8747637deb 100755 (executable)
@@ -1,9 +1,10 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2005-07-09.11
+scriptversion=2006-10-15.18
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 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
@@ -91,7 +92,20 @@ 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"
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon
+## the command line argument order; so add the flags where they
+## appear in depend2.am.  Note that the slowdown incurred here
+## affects only configure: in makefiles, %FASTDEP% shortcuts this.
+  for arg
+  do
+    case $arg in
+    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
+    *)  set fnord "$@" "$arg" ;;
+    esac
+    shift # fnord
+    shift # $arg
+  done
+  "$@"
   stat=$?
   if test $stat -eq 0; then :
   else
@@ -276,6 +290,46 @@ icc)
   rm -f "$tmpdepfile"
   ;;
 
+hp2)
+  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
+  # compilers, which have integrated preprocessors.  The correct option
+  # to use with these is +Maked; it writes dependencies to a file named
+  # 'foo.d', which lands next to the object file, wherever that
+  # happens to be.
+  # Much of this is similar to the tru64 case; see comments there.
+  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$base.d
+    tmpdepfile2=$dir.libs/$base.d
+    "$@" -Wc,+Maked
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    "$@" +Maked
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+     rm -f "$tmpdepfile1" "$tmpdepfile2"
+     exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  if test -f "$tmpdepfile"; then
+    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    # Add `dependent.h:' lines.
+    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
+  else
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile" "$tmpdepfile2"
+  ;;
+
 tru64)
    # The Tru64 compiler uses -MD to generate dependencies as a side
    # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
@@ -288,13 +342,13 @@ tru64)
 
    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
+      # static library.  This mechanism 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
+      # compilations output dependencies in $dir.libs/$base.o.d and
       # in $dir$base.o.d.  We have to check for both files, because
       # one of the two compilations can be disabled.  We should prefer
       # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
index 4d4a9519eaf88b18fb157dfe5fae59c1c5d005c7..4fbbae7b7ff932e5af542dbe9612f193a68ed4d1 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2005-05-14.22
+scriptversion=2006-10-14.15
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -39,15 +39,24 @@ scriptversion=2005-05-14.22
 # 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.
+# from scratch.
+
+nl='
+'
+IFS=" ""       $nl"
 
 # set DOITPROG to echo to test this script
 
 # Don't use :- since 4.3BSD and earlier shells don't like it.
 doit="${DOITPROG-}"
+if test -z "$doit"; then
+  doit_exec=exec
+else
+  doit_exec=$doit
+fi
 
-# put in absolute paths if you don't have them in your path; or use env. vars.
+# Put in absolute file names if you don't have them in your path;
+# or use environment vars.
 
 mvprog="${MVPROG-mv}"
 cpprog="${CPPROG-cp}"
@@ -58,7 +67,13 @@ stripprog="${STRIPPROG-strip}"
 rmprog="${RMPROG-rm}"
 mkdirprog="${MKDIRPROG-mkdir}"
 
-chmodcmd="$chmodprog 0755"
+posix_glob=
+posix_mkdir=
+
+# Desired mode of installed file.
+mode=0755
+
+chmodcmd=$chmodprog
 chowncmd=
 chgrpcmd=
 stripcmd=
@@ -95,7 +110,7 @@ Environment variables override the default commands:
   CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
 "
 
-while test -n "$1"; do
+while test $# -ne 0; do
   case $1 in
     -c) shift
         continue;;
@@ -111,9 +126,15 @@ while test -n "$1"; do
 
     --help) echo "$usage"; exit $?;;
 
-    -m) chmodcmd="$chmodprog $2"
+    -m) mode=$2
         shift
         shift
+       case $mode in
+         *' '* | *'    '* | *'
+'*       | *'*'* | *'?'* | *'['*)
+           echo "$0: invalid mode: $mode" >&2
+           exit 1;;
+       esac
         continue;;
 
     -o) chowncmd="$chownprog $2"
@@ -136,25 +157,33 @@ while test -n "$1"; do
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    *)  # When -d is used, all remaining arguments are directories to create.
-       # When -t is used, the destination is already specified.
-       test -n "$dir_arg$dstarg" && break
-        # Otherwise, the last argument is the destination.  Remove it from $@.
-       for arg
-       do
-          if test -n "$dstarg"; then
-           # $@ is not empty: it contains at least $arg.
-           set fnord "$@" "$dstarg"
-           shift # fnord
-         fi
-         shift # arg
-         dstarg=$arg
-       done
+    --)        shift
        break;;
+
+    -*)        echo "$0: invalid option: $1" >&2
+       exit 1;;
+
+    *)  break;;
   esac
 done
 
-if test -z "$1"; then
+if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
+  # When -d is used, all remaining arguments are directories to create.
+  # When -t is used, the destination is already specified.
+  # Otherwise, the last argument is the destination.  Remove it from $@.
+  for arg
+  do
+    if test -n "$dstarg"; then
+      # $@ is not empty: it contains at least $arg.
+      set fnord "$@" "$dstarg"
+      shift # fnord
+    fi
+    shift # arg
+    dstarg=$arg
+  done
+fi
+
+if test $# -eq 0; then
   if test -z "$dir_arg"; then
     echo "$0: no input file specified." >&2
     exit 1
@@ -164,6 +193,33 @@ if test -z "$1"; then
   exit 0
 fi
 
+if test -z "$dir_arg"; then
+  trap '(exit $?); exit' 1 2 13 15
+
+  # Set umask so as not to create temps with too-generous modes.
+  # However, 'strip' requires both read and write access to temps.
+  case $mode in
+    # Optimize common cases.
+    *644) cp_umask=133;;
+    *755) cp_umask=22;;
+
+    *[0-7])
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw='% 200'
+      fi
+      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
+    *)
+      if test -z "$stripcmd"; then
+       u_plus_rw=
+      else
+       u_plus_rw=,u+rw
+      fi
+      cp_umask=$mode$u_plus_rw;;
+  esac
+fi
+
 for src
 do
   # Protect names starting with `-'.
@@ -173,15 +229,11 @@ do
 
   if test -n "$dir_arg"; then
     dst=$src
-    src=
-
-    if test -d "$dst"; then
-      mkdircmd=:
-      chmodcmd=
-    else
-      mkdircmd=$mkdirprog
-    fi
+    dstdir=$dst
+    test -d "$dstdir"
+    dstdir_status=$?
   else
+
     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
     # might cause directories to be created, which would be especially bad
     # if $src (and thus $dsttmp) contains '*'.
@@ -208,53 +260,188 @@ do
        echo "$0: $dstarg: Is a directory" >&2
        exit 1
       fi
-      dst=$dst/`basename "$src"`
+      dstdir=$dst
+      dst=$dstdir/`basename "$src"`
+      dstdir_status=0
+    else
+      # Prefer dirname, but fall back on a substitute if dirname fails.
+      dstdir=`
+       (dirname "$dst") 2>/dev/null ||
+       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+            X"$dst" : 'X\(//\)[^/]' \| \
+            X"$dst" : 'X\(//\)$' \| \
+            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
+       echo X"$dst" |
+           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)[^/].*/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\/\)$/{
+                  s//\1/
+                  q
+                }
+                /^X\(\/\).*/{
+                  s//\1/
+                  q
+                }
+                s/.*/./; q'
+      `
+
+      test -d "$dstdir"
+      dstdir_status=$?
     fi
   fi
 
-  # This sed command emulates the dirname command.
-  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
-
-  # Make sure that the destination directory exists.
-
-  # Skip lots of stat calls in the usual case.
-  if test ! -d "$dstdir"; then
-    defaultIFS='
-        '
-    IFS="${IFS-$defaultIFS}"
-
-    oIFS=$IFS
-    # Some sh's can't handle IFS=/ for some reason.
-    IFS='%'
-    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
-    shift
-    IFS=$oIFS
+  obsolete_mkdir_used=false
+
+  if test $dstdir_status != 0; then
+    case $posix_mkdir in
+      '')
+       # Create intermediate dirs using mode 755 as modified by the umask.
+       # This is like FreeBSD 'install' as of 1997-10-28.
+       umask=`umask`
+       case $stripcmd.$umask in
+         # Optimize common cases.
+         *[2367][2367]) mkdir_umask=$umask;;
+         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+         *[0-7])
+           mkdir_umask=`expr $umask + 22 \
+             - $umask % 100 % 40 + $umask % 20 \
+             - $umask % 10 % 4 + $umask % 2
+           `;;
+         *) mkdir_umask=$umask,go-w;;
+       esac
+
+       # With -d, create the new directory with the user-specified mode.
+       # Otherwise, rely on $mkdir_umask.
+       if test -n "$dir_arg"; then
+         mkdir_mode=-m$mode
+       else
+         mkdir_mode=
+       fi
+
+       posix_mkdir=false
+       case $umask in
+         *[123567][0-7][0-7])
+           # POSIX mkdir -p sets u+wx bits regardless of umask, which
+           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+           ;;
+         *)
+           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+           if (umask $mkdir_umask &&
+               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+           then
+             if test -z "$dir_arg" || {
+                  # Check for POSIX incompatibilities with -m.
+                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                  # other-writeable bit of parent directory when it shouldn't.
+                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                  case $ls_ld_tmpdir in
+                    d????-?r-*) different_mode=700;;
+                    d????-?--*) different_mode=755;;
+                    *) false;;
+                  esac &&
+                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                  }
+                }
+             then posix_mkdir=:
+             fi
+             rmdir "$tmpdir/d" "$tmpdir"
+           else
+             # Remove any dirs left behind by ancient mkdir implementations.
+             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+           fi
+           trap '' 0;;
+       esac;;
+    esac
 
-    pathcomp=
+    if
+      $posix_mkdir && (
+       umask $mkdir_umask &&
+       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+      )
+    then :
+    else
 
-    while test $# -ne 0 ; do
-      pathcomp=$pathcomp$1
+      # The umask is ridiculous, or mkdir does not conform to POSIX,
+      # or it failed possibly due to a race condition.  Create the
+      # directory the slow way, step by step, checking for races as we go.
+
+      case $dstdir in
+       /*) prefix=/ ;;
+       -*) prefix=./ ;;
+       *)  prefix= ;;
+      esac
+
+      case $posix_glob in
+        '')
+         if (set -f) 2>/dev/null; then
+           posix_glob=true
+         else
+           posix_glob=false
+         fi ;;
+      esac
+
+      oIFS=$IFS
+      IFS=/
+      $posix_glob && set -f
+      set fnord $dstdir
       shift
-      if test ! -d "$pathcomp"; then
-        $mkdirprog "$pathcomp"
-       # mkdir can fail with a `File exist' error in case several
-       # install-sh are creating the directory concurrently.  This
-       # is OK.
-       test -d "$pathcomp" || exit
+      $posix_glob && set +f
+      IFS=$oIFS
+
+      prefixes=
+
+      for d
+      do
+       test -z "$d" && continue
+
+       prefix=$prefix$d
+       if test -d "$prefix"; then
+         prefixes=
+       else
+         if $posix_mkdir; then
+           (umask=$mkdir_umask &&
+            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+           # Don't fail if two instances are running concurrently.
+           test -d "$prefix" || exit 1
+         else
+           case $prefix in
+             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+             *) qprefix=$prefix;;
+           esac
+           prefixes="$prefixes '$qprefix'"
+         fi
+       fi
+       prefix=$prefix/
+      done
+
+      if test -n "$prefixes"; then
+       # Don't fail if two instances are running concurrently.
+       (umask $mkdir_umask &&
+        eval "\$doit_exec \$mkdirprog $prefixes") ||
+         test -d "$dstdir" || exit 1
+       obsolete_mkdir_used=true
       fi
-      pathcomp=$pathcomp/
-    done
+    fi
   fi
 
   if test -n "$dir_arg"; then
-    $doit $mkdircmd "$dst" \
-      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
-      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
-      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
-
+    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
+    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
+    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
+      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
   else
-    dstfile=`basename "$dst"`
 
     # Make a couple of temp file names in the proper directory.
     dsttmp=$dstdir/_inst.$$_
@@ -262,10 +449,9 @@ do
 
     # Trap to clean up those temp files at exit.
     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
-    trap '(exit $?); exit' 1 2 13 15
 
     # Copy the file name to the temp name.
-    $doit $cpprog "$src" "$dsttmp" &&
+    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
 
     # and set any options; do chmod last to preserve setuid bits.
     #
@@ -276,10 +462,10 @@ do
     { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
       && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
       && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
-      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+      && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
 
     # Now rename the file to the real destination.
-    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+    { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
       || {
           # The rename failed, perhaps because mv can't rename something else
           # to itself, or perhaps because mv is so ancient that it does not
@@ -291,11 +477,12 @@ do
           # reasons.  In this case, the final cleanup might fail but the new
           # file should still install successfully.
           {
-            if test -f "$dstdir/$dstfile"; then
-              $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
-              || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+            if test -f "$dst"; then
+              $doit $rmcmd -f "$dst" 2>/dev/null \
+              || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
+                    && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
               || {
-                echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+                echo "$0: cannot unlink or rename $dst" >&2
                 (exit 1); exit 1
               }
             else
@@ -304,16 +491,13 @@ do
           } &&
 
           # Now rename the file to the real destination.
-          $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+          $doit $mvcmd "$dsttmp" "$dst"
         }
-    }
-  fi || { (exit 1); exit 1; }
-done
+    } || exit 1
 
-# The final little trick to "correctly" pass the exit status to the exit trap.
-{
-  (exit 0); exit 0
-}
+    trap '' 0
+  fi
+done
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
index 365b6634e4cae5747177992bf8ccbeeeebe0838c..e172628f8e34735dd032bb8b785480c1771dcac4 100755 (executable)
@@ -1,84 +1,88 @@
-# Generated from ltmain.m4sh; do not edit by hand
 
-# ltmain.sh (GNU libtool 1.2248 2006/01/21 17:40:19) 2.1a
+# libtool (GNU libtool) 2.4.2
 # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
 # This is free software; see the source for copying conditions.  There is NO
 # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
-# This program is free software; you can redistribute it and/or modify
+# GNU Libtool is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation; either version 2 of the License, or
 # (at your option) any later version.
 #
-# This program is distributed in the hope that it will be useful, but
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful, but
 # WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program; if not, 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.
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 # Usage: $progname [OPTION]... [MODE-ARG]...
 #
 # Provide generalized library-building support services.
 #
-#     --config             show all configuration variables
-#     --debug              enable verbose shell tracing
-# -n, --dry-run            display commands without modifying any files
-#     --features           display basic configuration information and exit
-#     --mode=MODE          use operation mode MODE
-#     --preserve-dup-deps  don't remove duplicate dependency libraries
-#     --quiet, --silent    don't print informational messages
-#     --tag=TAG            use configuration variables from tag TAG
-# -v, --verbose            print informational messages (default)
-#     --version            print version information
-# -h, --help               print short or long help message
+#       --config             show all configuration variables
+#       --debug              enable verbose shell tracing
+#   -n, --dry-run            display commands without modifying any files
+#       --features           display basic configuration information and exit
+#       --mode=MODE          use operation mode MODE
+#       --preserve-dup-deps  don't remove duplicate dependency libraries
+#       --quiet, --silent    don't print informational messages
+#       --no-quiet, --no-silent
+#                            print informational messages (default)
+#       --no-warn            don't display warning messages
+#       --tag=TAG            use configuration variables from tag TAG
+#   -v, --verbose            print more informational messages than default
+#       --no-verbose         don't print the extra informational messages
+#       --version            print version information
+#   -h, --help, --help-all   print short, long, or detailed help message
 #
 # MODE must be one of the following:
 #
-#       clean              remove files from the build directory
-#       compile            compile a source file into a libtool object
-#       execute            automatically set library path, then run a program
-#       finish             complete the installation of libtool libraries
-#       install            install libraries or executables
-#       link               create a library or an executable
-#       uninstall          remove libraries from an installed directory
+#         clean              remove files from the build directory
+#         compile            compile a source file into a libtool object
+#         execute            automatically set library path, then run a program
+#         finish             complete the installation of libtool libraries
+#         install            install libraries or executables
+#         link               create a library or an executable
+#         uninstall          remove libraries from an installed directory
 #
-# MODE-ARGS vary depending on the MODE.
+# MODE-ARGS vary depending on the MODE.  When passed as first option,
+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
 # Try `$progname --help --mode=MODE' for a more detailed description of MODE.
 #
 # When reporting a bug, please describe a test case to reproduce it and
 # include the following information:
 #
-#       host-triplet:  powerpc-apple-darwin8.2.0
-#       shell:         $SHELL
-#       compiler:              $LTCC
-#       compiler flags:                $LTCFLAGS
-#       linker:                $LD (gnu? $with_gnu_ld)
-#       $progname:             (GNU libtool 1.2248 2006/01/21 17:40:19) 2.1a
-#       automake:              $automake_version
-#       autoconf:              $autoconf_version
+#         host-triplet:        $host
+#         shell:               $SHELL
+#         compiler:            $LTCC
+#         compiler flags:              $LTCFLAGS
+#         linker:              $LD (gnu? $with_gnu_ld)
+#         $progname:   (GNU libtool) 2.4.2
+#         automake:    $automake_version
+#         autoconf:    $autoconf_version
 #
 # Report bugs to <bug-libtool@gnu.org>.
+# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
+# General help using GNU software: <http://www.gnu.org/gethelp/>.
 
-PROGRAM=ltmain.sh
+PROGRAM=libtool
 PACKAGE=libtool
-VERSION=2.1a
-TIMESTAMP=" 1.2248 2006/01/21 17:40:19"
-package_revision=1.2248
-
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+VERSION=2.4.2
+TIMESTAMP=""
+package_revision=1.3337
 
 # Be Bourne compatible
 if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
@@ -87,80 +91,56 @@ if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
   # 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
+  setopt NO_GLOB_SUBST
 else
-  as_unset=false
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
 fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+}
 
-# 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
+# NLS nuisances: We save the old values to restore during execute mode.
+lt_user_locale=
+lt_safe_locale=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
 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
+  eval "if test \"\${$lt_var+set}\" = set; then
+          save_$lt_var=\$$lt_var
+          $lt_var=C
+         export $lt_var
+         lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
+         lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
+       fi"
 done
+LC_ALL=C
+LANGUAGE=C
+export LANGUAGE LC_ALL
 
-# 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
-
+$lt_unset CDPATH
 
-# 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'`
 
-
-$as_unset CDPATH
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
 
 
 
 : ${CP="cp -f"}
-: ${ECHO="echo"}
-: ${EGREP="grep -E"}
-: ${FGREP="grep -F"}
-: ${GREP="grep"}
-: ${LN_S="ln -s"}
+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
 : ${MAKE="make"}
 : ${MKDIR="mkdir"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
-: ${SED="/usr/bin/sed"}
 : ${SHELL="${CONFIG_SHELL-/bin/sh}"}
 : ${Xsed="$SED -e 1s/^X//"}
 
@@ -180,29 +160,230 @@ IFS="    $lt_nl"
 dirname="s,/[^/]*$,,"
 basename="s,^.*/,,"
 
-# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
-# is ksh but when the shell is invoked as "sh" and the current value of
-# the _XPG environment variable is not equal to 1 (one), the special
-# positional parameter $0, within a function call, is the name of the
-# function.
-progpath="$0"
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+} # func_dirname may be replaced by extended shell implementation
+
+
+# func_basename file
+func_basename ()
+{
+    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+} # func_basename may be replaced by extended shell implementation
+
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+    # Extract subdirectory from the argument.
+    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
+    if test "X$func_dirname_result" = "X${1}"; then
+      func_dirname_result="${3}"
+    else
+      func_dirname_result="$func_dirname_result${2}"
+    fi
+    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
+} # func_dirname_and_basename may be replaced by extended shell implementation
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+    case ${2} in
+      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+    esac
+} # func_stripname may be replaced by extended shell implementation
+
+
+# These SED scripts presuppose an absolute path with a trailing slash.
+pathcar='s,^/\([^/]*\).*$,\1,'
+pathcdr='s,^/[^/]*,,'
+removedotparts=':dotsl
+               s@/\./@/@g
+               t dotsl
+               s,/\.$,/,'
+collapseslashes='s@/\{1,\}@/@g'
+finalslash='s,/*$,/,'
+
+# func_normal_abspath PATH
+# Remove doubled-up and trailing slashes, "." path components,
+# and cancel out any ".." path components in PATH after making
+# it an absolute path.
+#             value returned in "$func_normal_abspath_result"
+func_normal_abspath ()
+{
+  # Start from root dir and reassemble the path.
+  func_normal_abspath_result=
+  func_normal_abspath_tpath=$1
+  func_normal_abspath_altnamespace=
+  case $func_normal_abspath_tpath in
+    "")
+      # Empty path, that just means $cwd.
+      func_stripname '' '/' "`pwd`"
+      func_normal_abspath_result=$func_stripname_result
+      return
+    ;;
+    # The next three entries are used to spot a run of precisely
+    # two leading slashes without using negated character classes;
+    # we take advantage of case's first-match behaviour.
+    ///*)
+      # Unusual form of absolute path, do nothing.
+    ;;
+    //*)
+      # Not necessarily an ordinary path; POSIX reserves leading '//'
+      # and for example Cygwin uses it to access remote file shares
+      # over CIFS/SMB, so we conserve a leading double slash if found.
+      func_normal_abspath_altnamespace=/
+    ;;
+    /*)
+      # Absolute path, do nothing.
+    ;;
+    *)
+      # Relative path, prepend $cwd.
+      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
+    ;;
+  esac
+  # Cancel out all the simple stuff to save iterations.  We also want
+  # the path to end with a slash for ease of parsing, so make sure
+  # there is one (and only one) here.
+  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
+  while :; do
+    # Processed it all yet?
+    if test "$func_normal_abspath_tpath" = / ; then
+      # If we ascended to the root using ".." the result may be empty now.
+      if test -z "$func_normal_abspath_result" ; then
+        func_normal_abspath_result=/
+      fi
+      break
+    fi
+    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcar"`
+    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
+        -e "$pathcdr"`
+    # Figure out what to do with it
+    case $func_normal_abspath_tcomponent in
+      "")
+        # Trailing empty path component, ignore it.
+      ;;
+      ..)
+        # Parent dir; strip last assembled component from result.
+        func_dirname "$func_normal_abspath_result"
+        func_normal_abspath_result=$func_dirname_result
+      ;;
+      *)
+        # Actual path component, append it.
+        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+      ;;
+    esac
+  done
+  # Restore leading double-slash if one was found on entry.
+  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
+}
+
+# func_relative_path SRCDIR DSTDIR
+# generates a relative path from SRCDIR to DSTDIR, with a trailing
+# slash if non-empty, suitable for immediately appending a filename
+# without needing to append a separator.
+#             value returned in "$func_relative_path_result"
+func_relative_path ()
+{
+  func_relative_path_result=
+  func_normal_abspath "$1"
+  func_relative_path_tlibdir=$func_normal_abspath_result
+  func_normal_abspath "$2"
+  func_relative_path_tbindir=$func_normal_abspath_result
+
+  # Ascend the tree starting from libdir
+  while :; do
+    # check if we have found a prefix of bindir
+    case $func_relative_path_tbindir in
+      $func_relative_path_tlibdir)
+        # found an exact match
+        func_relative_path_tcancelled=
+        break
+        ;;
+      $func_relative_path_tlibdir*)
+        # found a matching prefix
+        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
+        func_relative_path_tcancelled=$func_stripname_result
+        if test -z "$func_relative_path_result"; then
+          func_relative_path_result=.
+        fi
+        break
+        ;;
+      *)
+        func_dirname $func_relative_path_tlibdir
+        func_relative_path_tlibdir=${func_dirname_result}
+        if test "x$func_relative_path_tlibdir" = x ; then
+          # Have to descend all the way to the root!
+          func_relative_path_result=../$func_relative_path_result
+          func_relative_path_tcancelled=$func_relative_path_tbindir
+          break
+        fi
+        func_relative_path_result=../$func_relative_path_result
+        ;;
+    esac
+  done
+
+  # Now calculate path; take care to avoid doubling-up slashes.
+  func_stripname '' '/' "$func_relative_path_result"
+  func_relative_path_result=$func_stripname_result
+  func_stripname '/' '/' "$func_relative_path_tcancelled"
+  if test "x$func_stripname_result" != x ; then
+    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
+  fi
+
+  # Normalisation. If bindir is libdir, return empty string,
+  # else relative path ending with a slash; either way, target
+  # file name can be directly appended.
+  if test ! -z "$func_relative_path_result"; then
+    func_stripname './' '' "$func_relative_path_result/"
+    func_relative_path_result=$func_stripname_result
+  fi
+}
 
 # The name of this program:
-# In the unlikely event $progname began with a '-', it would play havoc with
-# func_echo (imagine progname=-n), so we prepend ./ in that case:
-progname=`$ECHO "X$progpath" | $Xsed -e "$basename" -e 's,^-,./-,'`
+func_dirname_and_basename "$progpath"
+progname=$func_basename_result
 
 # Make sure we have an absolute path for reexecution:
 case $progpath in
   [\\/]*|[A-Za-z]:\\*) ;;
   *[\\/]*)
-     progdir=`$ECHO "X$progpath" | $Xsed -e "$dirname"`
+     progdir=$func_dirname_result
      progdir=`cd "$progdir" && pwd`
      progpath="$progdir/$progname"
      ;;
   *)
      save_IFS="$IFS"
-     IFS=:
+     IFS=${PATH_SEPARATOR-:}
      for progdir in $PATH; do
        IFS="$save_IFS"
        test -x "$progdir/$progname" && break
@@ -221,40 +402,44 @@ sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
 # Same as above, but do not quote variable references.
 double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
+# Sed substitution that turns a string into a regex matching for the
+# string literally.
+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
+
+# Sed substitution that converts a w32 file name or path
+# which contains forward slashes, into one that contains
+# (escaped) backslashes.  A very naive implementation.
+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
+
 # Re-`\' parameter expansions in output of double_quote_subst that were
 # `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
 # in input to double_quote_subst, that '$' was protected from expansion.
 # Since each input `\' is now two `\'s, look for any number of runs of
-# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.  Note
-# that the embedded single quotes serve only to enhance readability.
-sed_double_backslash='s/^\(\(''\\\\''\\\\''\)*''\\\\''\)\$/\1\\$/;
-                s/\([^\\]\(''\\\\''\\\\''\)*''\\\\''\)\$/\1\\$/g'
-
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  SP2NL='tr \040 \012'
-  NL2SP='tr \015\012 \040\040'
-  ;;
- *) # EBCDIC based system
-  SP2NL='tr \100 \n'
-  NL2SP='tr \r\n \100\100'
-  ;;
-esac
+# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
+bs='\\'
+bs2='\\\\'
+bs4='\\\\\\\\'
+dollar='\$'
+sed_double_backslash="\
+  s/$bs4/&\\
+/g
+  s/^$bs2$dollar/$bs&/
+  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
+  s/\n//g"
 
 # Standard options:
 opt_dry_run=false
 opt_help=false
 opt_quiet=false
 opt_verbose=false
+opt_warning=:
 
 # func_echo arg...
 # Echo program name prefixed message, along with the current mode
 # name if it has been set yet.
 func_echo ()
 {
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"}
+    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
 }
 
 # func_verbose arg...
@@ -269,18 +454,28 @@ func_verbose ()
     :
 }
 
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*"
+}
+
 # func_error arg...
 # Echo program name prefixed message to standard error.
 func_error ()
 {
-    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
+    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
 }
 
 # func_warning arg...
 # Echo program name prefixed warning message to standard error.
 func_warning ()
 {
-    $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
+    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
+
+    # bash bug again:
+    :
 }
 
 # func_fatal_error arg...
@@ -334,9 +529,9 @@ func_mkdir_p ()
         case $my_directory_path in */*) ;; *) break ;; esac
 
         # ...otherwise throw away the child directory and loop
-        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
+        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
       done
-      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
+      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
 
       save_mkdir_p_IFS="$IFS"; IFS=':'
       for my_dir in $my_dir_list; do
@@ -386,7 +581,7 @@ func_mktempdir ()
         func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
     fi
 
-    $ECHO "X$my_tmpdir" | $Xsed
+    $ECHO "$my_tmpdir"
 }
 
 
@@ -400,7 +595,7 @@ func_quote_for_eval ()
 {
     case $1 in
       *[\\\`\"\$]*)
-       func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
+       func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
       *)
         func_quote_for_eval_unquoted_result="$1" ;;
     esac
@@ -427,7 +622,7 @@ func_quote_for_expand ()
 {
     case $1 in
       *[\\\`\"]*)
-       my_arg=`$ECHO "X$1" | $Xsed \
+       my_arg=`$ECHO "$1" | $SED \
            -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
       *)
         my_arg="$1" ;;
@@ -471,11 +666,64 @@ func_show_eval ()
 }
 
 
+# func_show_eval_locale cmd [fail_exp]
+# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
+# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
+# is given, then evaluate it.  Use the saved locale for evaluation.
+func_show_eval_locale ()
+{
+    my_cmd="$1"
+    my_fail_exp="${2-:}"
+
+    ${opt_silent-false} || {
+      func_quote_for_expand "$my_cmd"
+      eval "func_echo $func_quote_for_expand_result"
+    }
+
+    if ${opt_dry_run-false}; then :; else
+      eval "$lt_user_locale
+           $my_cmd"
+      my_status=$?
+      eval "$lt_safe_locale"
+      if test "$my_status" -eq 0; then :; else
+       eval "(exit $my_status); $my_fail_exp"
+      fi
+    fi
+}
+
+# func_tr_sh
+# Turn $1 into a string suitable for a shell variable name.
+# Result is stored in $func_tr_sh_result.  All characters
+# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
+# if $1 begins with a digit, a '_' is prepended as well.
+func_tr_sh ()
+{
+  case $1 in
+  [0-9]* | *[!a-zA-Z0-9_]*)
+    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
+    ;;
+  * )
+    func_tr_sh_result=$1
+    ;;
+  esac
+}
+
+
 # func_version
 # Echo version message to standard output and exit.
 func_version ()
 {
-    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
+    $opt_debug
+
+    $SED -n '/(C)/!b go
+       :more
+       /\./!{
+         N
+         s/\n# / /
+         b more
+       }
+       :go
+       /^# '$PROGRAM' (GNU /,/# warranty; / {
         s/^# //
        s/^# *$//
         s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
@@ -488,35 +736,49 @@ func_version ()
 # Echo short help message to standard output and exit.
 func_usage ()
 {
-    $SED -n '/^# Usage:/,/# -h/ {
+    $opt_debug
+
+    $SED -n '/^# Usage:/,/^#  *.*--help/ {
         s/^# //
        s/^# *$//
        s/\$progname/'$progname'/
        p
     }' < "$progpath"
-    $ECHO
+    echo
     $ECHO "run \`$progname --help | more' for full usage"
     exit $?
 }
 
-# func_help
-# Echo long help message to standard output and exit.
+# func_help [NOEXIT]
+# Echo long help message to standard output and exit,
+# unless 'noexit' is passed as argument.
 func_help ()
 {
+    $opt_debug
+
     $SED -n '/^# Usage:/,/# Report bugs to/ {
+       :print
         s/^# //
        s/^# *$//
        s*\$progname*'$progname'*
+       s*\$host*'"$host"'*
        s*\$SHELL*'"$SHELL"'*
        s*\$LTCC*'"$LTCC"'*
        s*\$LTCFLAGS*'"$LTCFLAGS"'*
        s*\$LD*'"$LD"'*
        s/\$with_gnu_ld/'"$with_gnu_ld"'/
-       s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
-       s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
+       s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
+       s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
        p
-     }' < "$progpath"
-    exit $?
+       d
+     }
+     /^# .* home page:/b print
+     /^# General help using/b print
+     ' < "$progpath"
+    ret=$?
+    if test -z "$1"; then
+      exit $ret
+    fi
 }
 
 # func_missing_arg argname
@@ -524,58 +786,106 @@ func_help ()
 # exit_cmd.
 func_missing_arg ()
 {
-    func_error "missing argument for $1"
+    $opt_debug
+
+    func_error "missing argument for $1."
     exit_cmd=exit
 }
 
+
+# func_split_short_opt shortopt
+# Set func_split_short_opt_name and func_split_short_opt_arg shell
+# variables after splitting SHORTOPT after the 2nd character.
+func_split_short_opt ()
+{
+    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
+    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
+
+    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
+    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
+} # func_split_short_opt may be replaced by extended shell implementation
+
+
+# func_split_long_opt longopt
+# Set func_split_long_opt_name and func_split_long_opt_arg shell
+# variables after splitting LONGOPT at the `=' sign.
+func_split_long_opt ()
+{
+    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
+    my_sed_long_arg='1s/^--[^=]*=//'
+
+    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
+    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
+} # func_split_long_opt may be replaced by extended shell implementation
+
 exit_cmd=:
 
 
-# Check that we have a working $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, and then maybe $ECHO will work.
-  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
-fi
 
-if test "X$1" = X--fallback-echo; then
-  # used as fallback echo
-  shift
-  cat <<EOF
-$*
-EOF
-  exit $EXIT_SUCCESS
-fi
 
-magic="%%%MAGIC variable%%%"
 
+magic="%%%MAGIC variable%%%"
+magic_exe="%%%MAGIC EXE variable%%%"
 
 # Global variables.
-# $mode is unset
 nonopt=
-execute_dlfiles=
 preserve_args=
 lo2o="s/\\.lo\$/.${objext}/"
 o2lo="s/\\.${objext}\$/.lo/"
-
-opt_dry_run=false
-opt_duplicate_deps=false
-opt_silent=false
-opt_debug=:
+extracted_archives=
+extracted_serial=0
 
 # If this variable is set in any of the actions, the command in it
 # will be execed at the end.  This prevents here-documents from being
 # left over by shells.
 exec_cmd=
 
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+    eval "${1}=\$${1}\${2}"
+} # func_append may be replaced by extended shell implementation
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+    func_quote_for_eval "${2}"
+    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+    func_arith_result=`expr "${@}"`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
+# func_lo2o object
+func_lo2o ()
+{
+    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+} # func_lo2o may be replaced by extended shell implementation
+
+
+# func_xform libobj-or-source
+func_xform ()
+{
+    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+} # func_xform may be replaced by extended shell implementation
+
+
 # func_fatal_configuration arg...
 # Echo program name prefixed message to standard error, followed by
 # a configuration failure hint, and exit.
@@ -609,16 +919,16 @@ func_config ()
 # Display the features supported by this script.
 func_features ()
 {
-    $ECHO "host: $host"
+    echo "host: $host"
     if test "$build_libtool_libs" = yes; then
-      $ECHO "enable shared libraries"
+      echo "enable shared libraries"
     else
-      $ECHO "disable shared libraries"
+      echo "disable shared libraries"
     fi
     if test "$build_old_libs" = yes; then
-      $ECHO "enable static libraries"
+      echo "enable static libraries"
     else
-      $ECHO "disable static libraries"
+      echo "disable static libraries"
     fi
 
     exit $?
@@ -665,383 +975,264 @@ func_enable_tag ()
   esac
 }
 
-
-func_mode_help ()
+# func_check_version_match
+# Ensure that we are using m4 macros, and libtool script from the same
+# release of libtool.
+func_check_version_match ()
 {
-    # We need to display help for each of the modes.
-    case $mode in
-      "")
-        # Generic help is extracted from the usage comments
-        # at the start of this file.
-        func_help
-        ;;
-
-      clean)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
-
-Remove files from the build directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, object or program, all the files associated
-with it are deleted. Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      compile)
-      $ECHO \
-"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
-
-Compile a source file into a libtool library object.
-
-This mode accepts the following additional options:
+  if test "$package_revision" != "$macro_revision"; then
+    if test "$VERSION" != "$macro_version"; then
+      if test -z "$macro_version"; then
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from an older release.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      else
+        cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
+$progname: and run autoconf again.
+_LT_EOF
+      fi
+    else
+      cat >&2 <<_LT_EOF
+$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
+$progname: but the definition of this LT_INIT comes from revision $macro_revision.
+$progname: You should recreate aclocal.m4 with macros from revision $package_revision
+$progname: of $PACKAGE $VERSION and run autoconf again.
+_LT_EOF
+    fi
 
-  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
-  -no-suppress      do not suppress compiler output for multiple passes
-  -prefer-pic       try to building PIC objects only
-  -prefer-non-pic   try to building non-PIC objects only
-  -shared           do not build a \`.o' file suitable for static linking
-  -static           only build a \`.o' file suitable for static linking
+    exit $EXIT_MISMATCH
+  fi
+}
 
-COMPILE-COMMAND is a command to be used in creating a \`standard' object file
-from the given SOURCEFILE.
 
-The output file name is determined by removing the directory component from
-SOURCEFILE, then substituting the C source code suffix \`.c' with the
-library object suffix, \`.lo'."
-        ;;
+# Shorthand for --mode=foo, only valid as the first argument
+case $1 in
+clean|clea|cle|cl)
+  shift; set dummy --mode clean ${1+"$@"}; shift
+  ;;
+compile|compil|compi|comp|com|co|c)
+  shift; set dummy --mode compile ${1+"$@"}; shift
+  ;;
+execute|execut|execu|exec|exe|ex|e)
+  shift; set dummy --mode execute ${1+"$@"}; shift
+  ;;
+finish|finis|fini|fin|fi|f)
+  shift; set dummy --mode finish ${1+"$@"}; shift
+  ;;
+install|instal|insta|inst|ins|in|i)
+  shift; set dummy --mode install ${1+"$@"}; shift
+  ;;
+link|lin|li|l)
+  shift; set dummy --mode link ${1+"$@"}; shift
+  ;;
+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
+  shift; set dummy --mode uninstall ${1+"$@"}; shift
+  ;;
+esac
 
-      execute)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
 
-Automatically set library path, then run a program.
 
-This mode accepts the following additional options:
+# Option defaults:
+opt_debug=:
+opt_dry_run=false
+opt_config=false
+opt_preserve_dup_deps=false
+opt_features=false
+opt_finish=false
+opt_help=false
+opt_help_all=false
+opt_silent=:
+opt_warning=:
+opt_verbose=:
+opt_silent=false
+opt_verbose=false
 
-  -dlopen FILE      add the directory containing FILE to the library path
 
-This mode sets the library path environment variable according to \`-dlopen'
-flags.
-
-If any of the ARGS are libtool executable wrappers, then they are translated
-into their corresponding uninstalled binary, and any of their required library
-directories are added to the library path.
-
-Then, COMMAND is executed, with ARGS as arguments."
-        ;;
-
-      finish)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
-
-Complete the installation of libtool libraries.
-
-Each LIBDIR is a directory that contains libtool libraries.
-
-The commands that this mode executes may require superuser privileges.  Use
-the \`--dry-run' option if you just want to see what would be executed."
-        ;;
-
-      install)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
-
-Install executables or libraries.
-
-INSTALL-COMMAND is the installation command.  The first component should be
-either the \`install' or \`cp' program.
-
-The following components of INSTALL-COMMAND are treated specially:
-
-  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
-
-The rest of the components are interpreted as arguments to that command (only
-BSD-compatible install options are recognized)."
-        ;;
-
-      link)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
-
-Link object files or libraries together to form another library, or to
-create an executable program.
-
-LINK-COMMAND is a command using the C compiler that you would use to create
-a program from several object files.
-
-The following components of LINK-COMMAND are treated specially:
-
-  -all-static       do not do any dynamic linking at all
-  -avoid-version    do not add a version suffix if possible
-  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
-  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
-  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-  -export-symbols SYMFILE
-                   try to export only the symbols listed in SYMFILE
-  -export-symbols-regex REGEX
-                   try to export only the symbols matching REGEX
-  -LLIBDIR          search LIBDIR for required installed libraries
-  -lNAME            OUTPUT-FILE requires the installed library libNAME
-  -module           build a library that can dlopened
-  -no-fast-install  disable the fast-install mode
-  -no-install       link a not-installable executable
-  -no-undefined     declare that a library does not refer to external symbols
-  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
-  -objectlist FILE  Use a list of object files found in FILE to specify objects
-  -precious-files-regex REGEX
-                    don't remove output files matching REGEX
-  -release RELEASE  specify package release information
-  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
-  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
-  -shared           only do dynamic linking of libtool libraries
-  -shrext SUFFIX    override the standard shared library file extension
-  -static           do not do any dynamic linking of libtool libraries
-  -version-info CURRENT[:REVISION[:AGE]]
-                   specify library version info [each variable defaults to 0]
-  -weak LIBNAME     declare that the target provides the LIBNAME interface
-
-All other options (arguments beginning with \`-') are ignored.
-
-Every other argument is treated as a filename.  Files ending in \`.la' are
-treated as uninstalled libtool libraries, other files are standard or library
-object files.
-
-If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
-only library objects (\`.lo' files) may be specified, and \`-rpath' is
-required, except when creating a convenience library.
-
-If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
-using \`ar' and \`ranlib', or on Windows using \`lib'.
-
-If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
-is created, otherwise an executable program is created."
-        ;;
-
-      uninstall)
-        $ECHO \
-"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
-
-Remove libraries from an installation directory.
-
-RM is the name of the program to use to delete files associated with each FILE
-(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
-to RM.
-
-If FILE is a libtool library, all the files associated with it are deleted.
-Otherwise, only FILE itself is deleted using RM."
-        ;;
-
-      *)
-        func_fatal_help "invalid operation mode \`$mode'"
-        ;;
-    esac
-
-    $ECHO
-    $ECHO "Try \`$progname --help' for more information about other modes."
-
-    exit $?
-}
-
-# TEST SUITE MARKER ## NON-FUNCTION
-# Parse options once, thoroughly.  This comes as soon as possible in
-# the script to make things like `libtool --version' happen quickly.
+# Parse options once, thoroughly.  This comes as soon as possible in the
+# script to make things like `--version' happen as quickly as we can.
 {
-  # sed scripts:
-  my_sed_single_opt='1s/^\(..\).*$/\1/;q'
-  my_sed_single_rest='1s/^..\(.*\)$/\1/;q'
-  my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
-  my_sed_long_arg='1s/^-[^=]*=//'
-
-  # Shorthand for --mode=foo, only valid as the first argument
-  case $1 in
-  clean|clea|cle|cl)
-    shift; set dummy --mode clean ${1+"$@"}; shift
-    ;;
-  compile|compil|compi|comp|com|co|c)
-    shift; set dummy --mode compile ${1+"$@"}; shift
-    ;;
-  execute|execut|execu|exec|exe|ex|e)
-    shift; set dummy --mode execute ${1+"$@"}; shift
-    ;;
-  finish|finis|fini|fin|fi|f)
-    shift; set dummy --mode finish ${1+"$@"}; shift
-    ;;
-  install|instal|insta|inst|ins|in|i)
-    shift; set dummy --mode install ${1+"$@"}; shift
-    ;;
-  link|lin|li|l)
-    shift; set dummy --mode link ${1+"$@"}; shift
-    ;;
-  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
-    shift; set dummy --mode uninstall ${1+"$@"}; shift
-    ;;
-  esac
-
-  # Parse non-mode specific arguments:
-  while test "$#" -gt 0; do
+  # this just eases exit handling
+  while test $# -gt 0; do
     opt="$1"
     shift
-
     case $opt in
-      --config)                func_config                                     ;;
-
-      --debug)         preserve_args="$preserve_args $opt"
-                       func_echo "enabling shell trace mode"
-                       opt_debug='set -x'
+      --debug|-x)      opt_debug='set -x'
+                       func_echo "enabling shell trace mode"
                        $opt_debug
                        ;;
-
-      -dlopen)         test "$#" -eq 0 && func_missing_arg "$opt" && break
-                       execute_dlfiles="$execute_dlfiles $1"
-                       shift
+      --dry-run|--dryrun|-n)
+                       opt_dry_run=:
                        ;;
-
-      --dry-run | -n)  opt_dry_run=:                                   ;;
-      --features)       func_features                                  ;;
-      --finish)                mode="finish"                                   ;;
-
-      --mode)          test "$#" -eq 0 && func_missing_arg "$opt" && break
-                       case $1 in
-                         # Valid mode arguments:
-                         clean)        ;;
-                         compile)      ;;
-                         execute)      ;;
-                         finish)       ;;
-                         install)      ;;
-                         link)         ;;
-                         relink)       ;;
-                         uninstall)    ;;
-
-                         # Catch anything else as an error
-                         *) func_error "invalid argument for $opt"
-                            exit_cmd=exit
-                            break
-                            ;;
-                       esac
-
-                       mode="$1"
+      --config)
+                       opt_config=:
+func_config
+                       ;;
+      --dlopen|-dlopen)
+                       optarg="$1"
+                       opt_dlopen="${opt_dlopen+$opt_dlopen
+}$optarg"
                        shift
                        ;;
-
       --preserve-dup-deps)
-                       opt_duplicate_deps=:                            ;;
-
-      --quiet|--silent)        preserve_args="$preserve_args $opt"
-                       opt_silent=:
+                       opt_preserve_dup_deps=:
                        ;;
-
-      --verbose| -v)   preserve_args="$preserve_args $opt"
-                       opt_silent=false
+      --features)
+                       opt_features=:
+func_features
                        ;;
-
-      --tag)           test "$#" -eq 0 && func_missing_arg "$opt" && break
-                       preserve_args="$preserve_args $opt $1"
-                       func_enable_tag "$1"    # tagname is set here
+      --finish)
+                       opt_finish=:
+set dummy --mode finish ${1+"$@"}; shift
+                       ;;
+      --help)
+                       opt_help=:
+                       ;;
+      --help-all)
+                       opt_help_all=:
+opt_help=': help-all'
+                       ;;
+      --mode)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_mode="$optarg"
+case $optarg in
+  # Valid mode arguments:
+  clean|compile|execute|finish|install|link|relink|uninstall) ;;
+
+  # Catch anything else as an error
+  *) func_error "invalid argument for $opt"
+     exit_cmd=exit
+     break
+     ;;
+esac
+                       shift
+                       ;;
+      --no-silent|--no-quiet)
+                       opt_silent=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-warning|--no-warn)
+                       opt_warning=false
+func_append preserve_args " $opt"
+                       ;;
+      --no-verbose)
+                       opt_verbose=false
+func_append preserve_args " $opt"
+                       ;;
+      --silent|--quiet)
+                       opt_silent=:
+func_append preserve_args " $opt"
+        opt_verbose=false
+                       ;;
+      --verbose|-v)
+                       opt_verbose=:
+func_append preserve_args " $opt"
+opt_silent=false
+                       ;;
+      --tag)
+                       test $# = 0 && func_missing_arg $opt && break
+                       optarg="$1"
+                       opt_tag="$optarg"
+func_append preserve_args " $opt $optarg"
+func_enable_tag "$optarg"
                        shift
                        ;;
 
+      -\?|-h)          func_usage                              ;;
+      --help)          func_help                               ;;
+      --version)       func_version                            ;;
+
       # Separate optargs to long options:
-      -dlopen=*|--mode=*|--tag=*)
-                       arg=`$ECHO "X$opt" | $Xsed -e "$my_sed_long_arg"`
-                       opt=`$ECHO "X$opt" | $Xsed -e "$my_sed_long_opt"`
-                       set dummy "$opt" "$arg" ${1+"$@"}
+      --*=*)
+                       func_split_long_opt "$opt"
+                       set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
                        shift
                        ;;
 
-      # Separate optargs to short options:
-#      -x*|-y*)
-#                      arg=`$ECHO "X$opt" |$Xsed -e "$my_sed_single_rest"`
-#                      opt=`$ECHO "X$opt" |$Xsed -e "$my_sed_single_opt"`
-#                      set dummy "$opt" "$arg" ${1+"$@"}
-#                      shift
-#                      ;;
-
       # Separate non-argument short options:
-#      -z*|-z*|-y*)
-#                      rest=`$ECHO "X$opt" |$Xsed -e "$my_sed_single_rest"`
-#                      opt=`$ECHO "X$opt" |$Xsed -e "$my_sed_single_opt"`
-#                      set dummy "$opt" "-$rest" ${1+"$@"}
-#                      shift
-#                      ;;
-
-      -\?|-h)          func_usage                                      ;;
-      --help)          opt_help=:                                      ;;
-      --version)       func_version                                    ;;
-
-      -*)              func_fatal_help "unrecognized option \`$opt'"   ;;
-
-      *)               nonopt="$opt"
-                       break
+      -\?*|-h*|-n*|-v*)
+                       func_split_short_opt "$opt"
+                       set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
+                       shift
                        ;;
+
+      --)              break                                   ;;
+      -*)              func_fatal_help "unrecognized option \`$opt'" ;;
+      *)               set dummy "$opt" ${1+"$@"};     shift; break  ;;
     esac
   done
 
-  # Now that we've collected a possible --mode arg, show help if necessary
-  $opt_help && func_mode_help
+  # Validate options:
+
+  # save first non-option argument
+  if test "$#" -gt 0; then
+    nonopt="$opt"
+    shift
+  fi
+
+  # preserve --debug
+  test "$opt_debug" = : || func_append preserve_args " --debug"
 
   case $host in
-    *cygwin* | *mingw* | *pw32*)
+    *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2*)
       # don't eliminate duplications in $postdeps and $predeps
       opt_duplicate_compiler_generated_deps=:
       ;;
     *)
-      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
+      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
       ;;
   esac
 
-  # Having warned about all mis-specified options, bail out if
-  # anything was wrong.
-  $exit_cmd $EXIT_FAILURE
-}
-# TEST SUITE MARKER ## BEGIN SOURCABLE
+  $opt_help || {
+    # Sanity checks first:
+    func_check_version_match
 
-# func_check_version_match
-# Ensure that we are using m4 macros, and libtool script from the same
-# release of libtool.
-func_check_version_match ()
-{
-  if test "$package_revision" != "$macro_revision"; then
-    if test "$VERSION" != "$macro_version"; then
-      if test -z "$macro_version"; then
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from an older release.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      else
-        cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
-$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
-$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
-$progname: and run autoconf again.
-_LT_EOF
-      fi
-    else
-      cat >&2 <<_LT_EOF
-$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
-$progname: but the definition of this LT_INIT comes from revision $macro_revision.
-$progname: You should recreate aclocal.m4 with macros from revision $package_revision
-$progname: of $PACKAGE $VERSION and run autoconf again.
-_LT_EOF
+    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+      func_fatal_configuration "not configured to build any kind of library"
     fi
 
-    exit $EXIT_MISMATCH
-  fi
+    # Darwin sucks
+    eval std_shrext=\"$shrext_cmds\"
+
+    # Only execute mode is allowed to have -dlopen flags.
+    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
+      func_error "unrecognized option \`-dlopen'"
+      $ECHO "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Change the help message to a mode-specific one.
+    generic_help="$help"
+    help="Try \`$progname --help --mode=$opt_mode' for more information."
+  }
+
+
+  # Bail if the options were screwed
+  $exit_cmd $EXIT_FAILURE
 }
 
 
+
+
+## ----------- ##
+##    Main.    ##
+## ----------- ##
+
 # func_lalib_p file
 # True iff FILE is a libtool `.la' library or `.lo' object file.
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_lalib_p ()
 {
-    $SED -e 4q "$1" 2>/dev/null \
-      | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
+    test -f "$1" &&
+      $SED -e 4q "$1" 2>/dev/null \
+        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
 }
 
 # func_lalib_unsafe_p file
@@ -1054,7 +1245,7 @@ func_lalib_p ()
 func_lalib_unsafe_p ()
 {
     lalib_p=no
-    if test -r "$1" && exec 5<&1 <"$1"; then
+    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
        for lalib_p_l in 1 2 3 4
        do
            read lalib_p_line
@@ -1062,18 +1253,52 @@ func_lalib_unsafe_p ()
                \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
            esac
        done
-       exec 1<&5 5<&-
+       exec 0<&5 5<&-
     fi
     test "$lalib_p" = yes
 }
 
+# func_ltwrapper_script_p file
+# True iff FILE is a libtool wrapper script
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_script_p ()
+{
+    func_lalib_p "$1"
+}
+
+# func_ltwrapper_executable_p file
+# True iff FILE is a libtool wrapper executable
+# This function is only a basic sanity check; it will hardly flush out
+# determined imposters.
+func_ltwrapper_executable_p ()
+{
+    func_ltwrapper_exec_suffix=
+    case $1 in
+    *.exe) ;;
+    *) func_ltwrapper_exec_suffix=.exe ;;
+    esac
+    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
+}
+
+# func_ltwrapper_scriptname file
+# Assumes file is an ltwrapper_executable
+# uses $file to determine the appropriate filename for a
+# temporary ltwrapper_script.
+func_ltwrapper_scriptname ()
+{
+    func_dirname_and_basename "$1" "" "."
+    func_stripname '' '.exe' "$func_basename_result"
+    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
+}
+
 # func_ltwrapper_p file
-# True iff FILE is a libtool wrapper script.
+# True iff FILE is a libtool wrapper script or wrapper executable
 # This function is only a basic sanity check; it will hardly flush out
 # determined imposters.
 func_ltwrapper_p ()
 {
-    func_lalib_p "$1"
+    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
 }
 
 
@@ -1110,58 +1335,37 @@ func_source ()
 }
 
 
-# Generated shell functions inserted here.
-
+# func_resolve_sysroot PATH
+# Replace a leading = in PATH with a sysroot.  Store the result into
+# func_resolve_sysroot_result
+func_resolve_sysroot ()
+{
+  func_resolve_sysroot_result=$1
+  case $func_resolve_sysroot_result in
+  =*)
+    func_stripname '=' '' "$func_resolve_sysroot_result"
+    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
+    ;;
+  esac
+}
 
-# func_win32_libid arg
-# return the library type of file 'arg'
-#
-# Need a lot of goo to handle *both* DLLs and import libs
-# Has to be a shell function in order to 'eat' the argument
-# that is supplied when $file_magic_command is called.
-func_win32_libid ()
+# func_replace_sysroot PATH
+# If PATH begins with the sysroot, replace it with = and
+# store the result into func_replace_sysroot_result.
+func_replace_sysroot ()
 {
-  $opt_debug
-  win32_libid_type="unknown"
-  win32_fileres=`file -L $1 2>/dev/null`
-  case $win32_fileres in
-  *ar\ archive\ import\ library*) # definitely import
-    win32_libid_type="x86 archive import"
+  case "$lt_sysroot:$1" in
+  ?*:"$lt_sysroot"*)
+    func_stripname "$lt_sysroot" '' "$1"
+    func_replace_sysroot_result="=$func_stripname_result"
     ;;
-  *ar\ archive*) # could be an import, or static
-    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
-       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
-      win32_nmres=`eval $NM -f posix -A $1 |
-       $SED -n -e '
-           1,100{
-               / I /{
-                   s,.*,import,
-                   p
-                   q
-               }
-           }'`
-      case $win32_nmres in
-      import*)  win32_libid_type="x86 archive import";;
-      *)        win32_libid_type="x86 archive static";;
-      esac
-    fi
-    ;;
-  *DLL*)
-    win32_libid_type="x86 DLL"
-    ;;
-  *executable*) # but shell scripts are "executable" too...
-    case $win32_fileres in
-    *MS\ Windows\ PE\ Intel*)
-      win32_libid_type="x86 DLL"
-      ;;
-    esac
+  *)
+    # Including no sysroot.
+    func_replace_sysroot_result=$1
     ;;
   esac
-  $ECHO "$win32_libid_type"
 }
 
-
-
 # func_infer_tag arg
 # Infer tagged configuration to use if any are available and
 # if one wasn't chosen via the "--tag" command line option.
@@ -1174,13 +1378,15 @@ func_infer_tag ()
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
-        func_quote_for_eval "$arg"
-       CC_quoted="$CC_quoted $func_quote_for_eval_result"
+       func_append_quoted CC_quoted "$arg"
       done
+      CC_expanded=`func_echo_all $CC`
+      CC_quoted_expanded=`func_echo_all $CC_quoted`
       case $@ in
       # Blanks in the command may have been stripped by the calling shell,
       # but not from the CC environment variable when configure was run.
-      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
+      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
       # Blanks at the start of $base_compile will cause this to fail
       # if we don't check for them as well.
       *)
@@ -1191,11 +1397,13 @@ func_infer_tag ()
            CC_quoted=
            for arg in $CC; do
              # Double-quote args containing other shell metacharacters.
-             func_quote_for_eval "$arg"
-             CC_quoted="$CC_quoted $func_quote_for_eval_result"
+             func_append_quoted CC_quoted "$arg"
            done
+           CC_expanded=`func_echo_all $CC`
+           CC_quoted_expanded=`func_echo_all $CC_quoted`
            case "$@ " in
-             " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
+           " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
+           " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
              # The compiler in the base compile command matches
              # the one in the tagged configuration.
              # Assume this is the tagged configuration we want.
@@ -1221,344 +1429,521 @@ func_infer_tag ()
 
 
 
-# func_generate_dlsyms outputname originator pic_p
-# Extract symbols from dlprefiles and create ${outputname}S.o with
-# a dlpreopen symbol table.
-func_generate_dlsyms ()
+# func_write_libtool_object output_name pic_name nonpic_name
+# Create a libtool object file (analogous to a ".la" file),
+# but don't create it if we're doing a dry run.
+func_write_libtool_object ()
 {
-    $opt_debug
-    my_outputname="$1"
-    my_originator="$2"
-    my_pic_p="${3-no}"
-    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
-    my_dlsyms=
+    write_libobj=${1}
+    if test "$build_libtool_libs" = yes; then
+      write_lobj=\'${2}\'
+    else
+      write_lobj=none
+    fi
 
-    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-      if test -n "$NM" && test -n "$global_symbol_pipe"; then
-       my_dlsyms="${my_outputname}S.c"
-      else
-       func_error "not configured to extract global symbols from dlpreopened files"
-      fi
+    if test "$build_old_libs" = yes; then
+      write_oldobj=\'${3}\'
+    else
+      write_oldobj=none
     fi
 
-    if test -n "$my_dlsyms"; then
-      case $my_dlsyms in
-      "") ;;
-      *.c)
-       # Discover the nlist of each of the dlfiles.
-       nlist="$output_objdir/${my_outputname}.nm"
+    $opt_dry_run || {
+      cat >${write_libobj}T <<EOF
+# $write_libobj - a libtool object file
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
 
-       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
+# Name of the PIC object.
+pic_object=$write_lobj
 
-       # Parse the name list into a source file.
-       func_echo "creating $output_objdir/$my_dlsyms"
+# Name of the non-PIC object
+non_pic_object=$write_oldobj
 
-       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
-/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
-/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+EOF
+      $MV "${write_libobj}T" "${write_libobj}"
+    }
+}
 
-#ifdef __cplusplus
-extern \"C\" {
-#endif
 
-/* External symbol declarations for the compiler. */\
-"
+##################################################
+# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
+##################################################
 
-       if test "$dlself" = yes; then
-         func_echo "generating symbol list for \`$output'"
+# func_convert_core_file_wine_to_w32 ARG
+# Helper function used by file name conversion functions when $build is *nix,
+# and $host is mingw, cygwin, or some other w32 environment. Relies on a
+# correctly configured wine environment available, with the winepath program
+# in $build's $PATH.
+#
+# ARG is the $build file name to be converted to w32 format.
+# Result is available in $func_convert_core_file_wine_to_w32_result, and will
+# be empty on error (or when ARG is empty)
+func_convert_core_file_wine_to_w32 ()
+{
+  $opt_debug
+  func_convert_core_file_wine_to_w32_result="$1"
+  if test -n "$1"; then
+    # Unfortunately, winepath does not exit with a non-zero error code, so we
+    # are forced to check the contents of stdout. On the other hand, if the
+    # command is not found, the shell will set an exit code of 127 and print
+    # *an error message* to stdout. So we must check for both error code of
+    # zero AND non-empty stdout, which explains the odd construction:
+    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
+    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
+      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
+        $SED -e "$lt_sed_naive_backslashify"`
+    else
+      func_convert_core_file_wine_to_w32_result=
+    fi
+  fi
+}
+# end: func_convert_core_file_wine_to_w32
 
-         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
 
-         # Add our own program objects to the symbol list.
-         progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-         for progfile in $progfiles; do
-           func_echo "extracting global C symbols from \`$progfile'"
-           $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
-         done
+# func_convert_core_path_wine_to_w32 ARG
+# Helper function used by path conversion functions when $build is *nix, and
+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
+# configured wine environment available, with the winepath program in $build's
+# $PATH. Assumes ARG has no leading or trailing path separator characters.
+#
+# ARG is path to be converted from $build format to win32.
+# Result is available in $func_convert_core_path_wine_to_w32_result.
+# Unconvertible file (directory) names in ARG are skipped; if no directory names
+# are convertible, then the result may be empty.
+func_convert_core_path_wine_to_w32 ()
+{
+  $opt_debug
+  # unfortunately, winepath doesn't convert paths, only file names
+  func_convert_core_path_wine_to_w32_result=""
+  if test -n "$1"; then
+    oldIFS=$IFS
+    IFS=:
+    for func_convert_core_path_wine_to_w32_f in $1; do
+      IFS=$oldIFS
+      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
+      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
+        if test -z "$func_convert_core_path_wine_to_w32_result"; then
+          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
+        else
+          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
+        fi
+      fi
+    done
+    IFS=$oldIFS
+  fi
+}
+# end: func_convert_core_path_wine_to_w32
+
+
+# func_cygpath ARGS...
+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
+# (2), returns the Cygwin file name or path in func_cygpath_result (input
+# file name or path is assumed to be in w32 format, as previously converted
+# from $build's *nix or MSYS format). In case (3), returns the w32 file name
+# or path in func_cygpath_result (input file name or path is assumed to be in
+# Cygwin format). Returns an empty string on error.
+#
+# ARGS are passed to cygpath, with the last one being the file name or path to
+# be converted.
+#
+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
+# environment variable; do not put it in $PATH.
+func_cygpath ()
+{
+  $opt_debug
+  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
+    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
+    if test "$?" -ne 0; then
+      # on failure, ensure result is empty
+      func_cygpath_result=
+    fi
+  else
+    func_cygpath_result=
+    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
+  fi
+}
+#end: func_cygpath
 
-         if test -n "$exclude_expsyms"; then
-           $opt_dry_run || {
-             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
 
-         if test -n "$export_symbols_regex"; then
-           $opt_dry_run || {
-             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-           }
-         fi
+# func_convert_core_msys_to_w32 ARG
+# Convert file name or path ARG from MSYS format to w32 format.  Return
+# result in func_convert_core_msys_to_w32_result.
+func_convert_core_msys_to_w32 ()
+{
+  $opt_debug
+  # awkward: cmd appends spaces to result
+  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
+    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
+}
+#end: func_convert_core_msys_to_w32
 
-         # Prepare the list of exported symbols
-         if test -z "$export_symbols"; then
-           export_symbols="$output_objdir/$outputname.exp"
-           $opt_dry_run || {
-             $RM $export_symbols
-             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
-             case $host in
-             *cygwin* | *mingw* )
-                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
-               ;;
-             esac
-           }
-         else
-           $opt_dry_run || {
-             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
-             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
-             eval '$MV "$nlist"T "$nlist"'
-             case $host in
-               *cygwin | *mingw* )
-                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
-                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
-                 ;;
-             esac
-           }
-         fi
-       fi
 
-       for dlprefile in $dlprefiles; do
-         func_echo "extracting global C symbols from \`$dlprefile'"
-         func_basename "$dlprefile"
-         name="$func_basename_result"
-         $opt_dry_run || {
-           eval '$ECHO ": $name " >> "$nlist"'
-           eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
-         }
-       done
+# func_convert_file_check ARG1 ARG2
+# Verify that ARG1 (a file name in $build format) was converted to $host
+# format in ARG2. Otherwise, emit an error message, but continue (resetting
+# func_to_host_file_result to ARG1).
+func_convert_file_check ()
+{
+  $opt_debug
+  if test -z "$2" && test -n "$1" ; then
+    func_error "Could not determine host file name corresponding to"
+    func_error "  \`$1'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback:
+    func_to_host_file_result="$1"
+  fi
+}
+# end func_convert_file_check
 
-       $opt_dry_run || {
-         # Make sure we have at least an empty file.
-         test -f "$nlist" || : > "$nlist"
 
-         if test -n "$exclude_expsyms"; then
-           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
-           $MV "$nlist"T "$nlist"
-         fi
+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
+# Verify that FROM_PATH (a path in $build format) was converted to $host
+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
+# func_to_host_file_result to a simplistic fallback value (see below).
+func_convert_path_check ()
+{
+  $opt_debug
+  if test -z "$4" && test -n "$3"; then
+    func_error "Could not determine the host path corresponding to"
+    func_error "  \`$3'"
+    func_error "Continuing, but uninstalled executables may not work."
+    # Fallback.  This is a deliberately simplistic "conversion" and
+    # should not be "improved".  See libtool.info.
+    if test "x$1" != "x$2"; then
+      lt_replace_pathsep_chars="s|$1|$2|g"
+      func_to_host_path_result=`echo "$3" |
+        $SED -e "$lt_replace_pathsep_chars"`
+    else
+      func_to_host_path_result="$3"
+    fi
+  fi
+}
+# end func_convert_path_check
 
-         # Try sorting and uniquifying the output.
-         if $GREP -v "^: " < "$nlist" |
-             if sort -k 3 </dev/null >/dev/null 2>&1; then
-               sort -k 3
-             else
-               sort +2
-             fi |
-             uniq > "$nlist"S; then
-           :
-         else
-           $GREP -v "^: " < "$nlist" > "$nlist"S
-         fi
 
-         if test -f "$nlist"S; then
-           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
-         else
-           $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
-         fi
+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
+# and appending REPL if ORIG matches BACKPAT.
+func_convert_path_front_back_pathsep ()
+{
+  $opt_debug
+  case $4 in
+  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
+    ;;
+  esac
+  case $4 in
+  $2 ) func_append func_to_host_path_result "$3"
+    ;;
+  esac
+}
+# end func_convert_path_front_back_pathsep
 
-         $ECHO >> "$output_objdir/$my_dlsyms" "\
 
-/* The mapping between symbol names and symbols.  */
-"
-         case $host in
-         *cygwin* | *mingw* )
-           $ECHO >> "$output_objdir/$my_dlsyms" "\
-/* DATA imports from DLLs on WIN32 con't be const, because
-   runtime relocations are performed -- see ld's documentation
-   on pseudo-relocs.  */
-   struct {
-"
-           ;;
-         *)
-           $ECHO >> "$output_objdir/$my_dlsyms" "\
-const struct {
-"
-           ;;
-         esac
+##################################################
+# $build to $host FILE NAME CONVERSION FUNCTIONS #
+##################################################
+# invoked via `$to_host_file_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# Result will be available in $func_to_host_file_result.
 
-         $ECHO >> "$output_objdir/$my_dlsyms" "\
-   const char *name;
-   void *address;
+
+# func_to_host_file ARG
+# Converts the file name ARG from $build format to $host format. Return result
+# in func_to_host_file_result.
+func_to_host_file ()
+{
+  $opt_debug
+  $to_host_file_cmd "$1"
 }
-lt_${my_prefix}_LTX_preloaded_symbols[] =
-{\
-  { \"$my_originator\", (void *) 0 },
-"
+# end func_to_host_file
 
-         eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
 
-         $ECHO >> "$output_objdir/$my_dlsyms" "\
-  {0, (void *) 0}
-};
+# func_to_tool_file ARG LAZY
+# converts the file name ARG from $build format to toolchain format. Return
+# result in func_to_tool_file_result.  If the conversion in use is listed
+# in (the comma separated) LAZY, no conversion takes place.
+func_to_tool_file ()
+{
+  $opt_debug
+  case ,$2, in
+    *,"$to_tool_file_cmd",*)
+      func_to_tool_file_result=$1
+      ;;
+    *)
+      $to_tool_file_cmd "$1"
+      func_to_tool_file_result=$func_to_host_file_result
+      ;;
+  esac
+}
+# end func_to_tool_file
 
-/* This works around a problem in FreeBSD linker */
-#ifdef FREEBSD_WORKAROUND
-static const void *lt_preloaded_setup() {
-  return lt_${my_prefix}_LTX_preloaded_symbols;
+
+# func_convert_file_noop ARG
+# Copy ARG to func_to_host_file_result.
+func_convert_file_noop ()
+{
+  func_to_host_file_result="$1"
 }
-#endif
+# end func_convert_file_noop
 
-#ifdef __cplusplus
+
+# func_convert_file_msys_to_w32 ARG
+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_file_result.
+func_convert_file_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
 }
-#endif\
-"
-       } # !$opt_dry_run
+# end func_convert_file_msys_to_w32
 
-       pic_flag_for_symtable=
-       case "$compile_command " in
-       *" -static "*) ;;
-       *)
-         case $host in
-         # compiling the symbol table file with pic_flag works around
-         # a FreeBSD bug that causes programs to crash when -lm is
-         # linked before any other PIC object.  But we must not use
-         # pic_flag when linking with -static.  The problem exists in
-         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
-         *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
-           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
-         *-*-hpux*)
-           pic_flag_for_symtable=" $pic_flag"  ;;
-         *)
-           if test "X$my_pic_p" != Xno; then
-             pic_flag_for_symtable=" $pic_flag"
-           fi
-           ;;
-         esac
-         ;;
-       esac
-       symtab_cflags=
-       for arg in $LTCFLAGS; do
-         case $arg in
-         -pie | -fpie | -fPIE) ;;
-         *) symtab_cflags="$symtab_cflags $arg" ;;
-         esac
-       done
 
-       # Now compile the dynamic symbol file.
-       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+# func_convert_file_cygwin_to_w32 ARG
+# Convert file name ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_file_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
+    # LT_CYGPATH in this case.
+    func_to_host_file_result=`cygpath -m "$1"`
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_cygwin_to_w32
 
-       # Clean up the generated files.
-       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
 
-       # Transform the symbol file into the correct name.
-       symfileobj="$output_objdir/${my_outputname}S.$objext"
-       case $host in
-       *cygwin* | *mingw* )
-         if test -f "$output_objdir/$my_outputname.def"; then
-           compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-           finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
-         else
-           compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-           finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-         fi
-         ;;
-       *)
-         compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-         finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
-         ;;
-       esac
-       ;;
-      *)
-       func_fatal_error "unknown suffix for \`$my_dlsyms'"
-       ;;
-      esac
-    else
-      # We keep going just in case the user didn't refer to
-      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
-      # really was required.
+# func_convert_file_nix_to_w32 ARG
+# Convert file name ARG from *nix to w32 format.  Requires a wine environment
+# and a working winepath. Returns result in func_to_host_file_result.
+func_convert_file_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_file_wine_to_w32 "$1"
+    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
+}
+# end func_convert_file_nix_to_w32
 
-      # Nullify the symbol file.
-      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
-      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
-    fi
+
+# func_convert_file_msys_to_cygwin ARG
+# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_file_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    func_convert_core_msys_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_msys_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
 }
+# end func_convert_file_msys_to_cygwin
 
-# func_extract_an_archive dir oldlib
-func_extract_an_archive ()
+
+# func_convert_file_nix_to_cygwin ARG
+# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
+# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
+# in func_to_host_file_result.
+func_convert_file_nix_to_cygwin ()
 {
-    $opt_debug
-    f_ex_an_ar_dir="$1"; shift
-    f_ex_an_ar_oldlib="$1"
-    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" 'exit $?'
-    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
-     :
-    else
-      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
-    fi
+  $opt_debug
+  func_to_host_file_result="$1"
+  if test -n "$1"; then
+    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
+    func_convert_core_file_wine_to_w32 "$1"
+    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
+    func_to_host_file_result="$func_cygpath_result"
+  fi
+  func_convert_file_check "$1" "$func_to_host_file_result"
 }
+# end func_convert_file_nix_to_cygwin
 
 
-# func_extract_archives gentop oldlib ...
-func_extract_archives ()
+#############################################
+# $build to $host PATH CONVERSION FUNCTIONS #
+#############################################
+# invoked via `$to_host_path_cmd ARG'
+#
+# In each case, ARG is the path to be converted from $build to $host format.
+# The result will be available in $func_to_host_path_result.
+#
+# Path separators are also converted from $build format to $host format.  If
+# ARG begins or ends with a path separator character, it is preserved (but
+# converted to $host format) on output.
+#
+# All path conversion functions are named using the following convention:
+#   file name conversion function    : func_convert_file_X_to_Y ()
+#   path conversion function         : func_convert_path_X_to_Y ()
+# where, for any given $build/$host combination the 'X_to_Y' value is the
+# same.  If conversion functions are added for new $build/$host combinations,
+# the two new functions must follow this pattern, or func_init_to_host_path_cmd
+# will break.
+
+
+# func_init_to_host_path_cmd
+# Ensures that function "pointer" variable $to_host_path_cmd is set to the
+# appropriate value, based on the value of $to_host_file_cmd.
+to_host_path_cmd=
+func_init_to_host_path_cmd ()
 {
-    $opt_debug
-    my_gentop="$1"; shift
-    my_oldlibs=${1+"$@"}
-    my_oldobjs=""
-    my_xlib=""
-    my_xabs=""
-    my_xdir=""
+  $opt_debug
+  if test -z "$to_host_path_cmd"; then
+    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
+    to_host_path_cmd="func_convert_path_${func_stripname_result}"
+  fi
+}
 
-    for my_xlib in $my_oldlibs; do
-      # Extract the objects.
-      case $my_xlib in
-       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
-       *) my_xabs=`pwd`"/$my_xlib" ;;
-      esac
-      func_basename "$my_xlib"
-      my_xlib="$func_basename_result"
-      my_xdir="$my_gentop/$my_xlib"
 
-      func_mkdir_p "$my_xdir"
+# func_to_host_path ARG
+# Converts the path ARG from $build format to $host format. Return result
+# in func_to_host_path_result.
+func_to_host_path ()
+{
+  $opt_debug
+  func_init_to_host_path_cmd
+  $to_host_path_cmd "$1"
+}
+# end func_to_host_path
 
-      case $host in
-      *-darwin*)
-       func_echo "Extracting $my_xabs"
-       # Do not bother doing anything if just a dry run
-       $opt_dry_run || {
-         darwin_orig_dir=`pwd`
-         cd $my_xdir || exit $?
-         darwin_archive=$my_xabs
-         darwin_curdir=`pwd`
-         darwin_base_archive=`basename $darwin_archive`
-         darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
-         if test -n "$darwin_arches"; then
-           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
-           darwin_arch=
-           func_echo "$darwin_base_archive has multiple architectures $darwin_arches"
-           for darwin_arch in  $darwin_arches ; do
-             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-             lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
-             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
-             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
-             cd "$darwin_curdir"
-             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
-           done # $darwin_arches
-            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
-           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
-           darwin_file=
-           darwin_files=
-           for darwin_file in $darwin_filelist; do
-             darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
-             lipo -create -output "$darwin_file" $darwin_files
-           done # $darwin_filelist
-           $RM -rf unfat-$$
-           cd "$darwin_orig_dir"
-         else
-           cd $darwin_orig_dir
-           func_extract_an_archive "$my_xdir" "$my_xabs"
-         fi # $darwin_arches
-       } # !$opt_dry_run
-       ;;
-      *)
-        func_extract_an_archive "$my_xdir" "$my_xabs"
-       ;;
-      esac
-      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
-    done
 
-    func_extract_archives_result="$my_oldobjs"
+# func_convert_path_noop ARG
+# Copy ARG to func_to_host_path_result.
+func_convert_path_noop ()
+{
+  func_to_host_path_result="$1"
+}
+# end func_convert_path_noop
+
+
+# func_convert_path_msys_to_w32 ARG
+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
+# conversion to w32 is not available inside the cwrapper.  Returns result in
+# func_to_host_path_result.
+func_convert_path_msys_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from ARG.  MSYS
+    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
+    # and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_msys_to_w32
+
+
+# func_convert_path_cygwin_to_w32 ARG
+# Convert path ARG from Cygwin to w32 format.  Returns result in
+# func_to_host_file_result.
+func_convert_path_cygwin_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_cygwin_to_w32
+
+
+# func_convert_path_nix_to_w32 ARG
+# Convert path ARG from *nix to w32 format.  Requires a wine environment and
+# a working winepath.  Returns result in func_to_host_file_result.
+func_convert_path_nix_to_w32 ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
+    func_convert_path_check : ";" \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
+  fi
+}
+# end func_convert_path_nix_to_w32
+
+
+# func_convert_path_msys_to_cygwin ARG
+# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
+# Returns result in func_to_host_file_result.
+func_convert_path_msys_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # See func_convert_path_msys_to_w32:
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
+}
+# end func_convert_path_msys_to_cygwin
+
+
+# func_convert_path_nix_to_cygwin ARG
+# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
+# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
+# func_to_host_file_result.
+func_convert_path_nix_to_cygwin ()
+{
+  $opt_debug
+  func_to_host_path_result="$1"
+  if test -n "$1"; then
+    # Remove leading and trailing path separator characters from
+    # ARG. msys behavior is inconsistent here, cygpath turns them
+    # into '.;' and ';.', and winepath ignores them completely.
+    func_stripname : : "$1"
+    func_to_host_path_tmp1=$func_stripname_result
+    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
+    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
+    func_to_host_path_result="$func_cygpath_result"
+    func_convert_path_check : : \
+      "$func_to_host_path_tmp1" "$func_to_host_path_result"
+    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
+  fi
 }
+# end func_convert_path_nix_to_cygwin
 
 
 # func_mode_compile arg...
@@ -1601,12 +1986,12 @@ func_mode_compile ()
          ;;
 
        -pie | -fpie | -fPIE)
-          pie_flag="$pie_flag $arg"
+          func_append pie_flag " $arg"
          continue
          ;;
 
        -shared | -static | -prefer-pic | -prefer-non-pic)
-         later="$later $arg"
+         func_append later " $arg"
          continue
          ;;
 
@@ -1627,15 +2012,14 @@ func_mode_compile ()
          save_ifs="$IFS"; IFS=','
          for arg in $args; do
            IFS="$save_ifs"
-           func_quote_for_eval "$arg"
-           lastarg="$lastarg $func_quote_for_eval_result"
+           func_append_quoted lastarg "$arg"
          done
          IFS="$save_ifs"
          func_stripname ' ' '' "$lastarg"
          lastarg=$func_stripname_result
 
          # Add the arguments to base_compile.
-         base_compile="$base_compile $lastarg"
+         func_append base_compile " $lastarg"
          continue
          ;;
 
@@ -1651,8 +2035,7 @@ func_mode_compile ()
       esac    #  case $arg_mode
 
       # Aesthetically quote the previous argument.
-      func_quote_for_eval "$lastarg"
-      base_compile="$base_compile $func_quote_for_eval_result"
+      func_append_quoted base_compile "$lastarg"
     done # for arg
 
     case $arg_mode in
@@ -1673,28 +2056,18 @@ func_mode_compile ()
 
     # Recognize several different file suffixes.
     # If the user specifies -o file.o, it is replaced with file.lo
-    xform='[cCFSifmso]'
     case $libobj in
-    *.ada) xform=ada ;;
-    *.adb) xform=adb ;;
-    *.ads) xform=ads ;;
-    *.asm) xform=asm ;;
-    *.c++) xform=c++ ;;
-    *.cc) xform=cc ;;
-    *.ii) xform=ii ;;
-    *.class) xform=class ;;
-    *.cpp) xform=cpp ;;
-    *.cxx) xform=cxx ;;
-    *.f90) xform=f90 ;;
-    *.for) xform=for ;;
-    *.java) xform=java ;;
-    *.obj) xform=obj ;;
+    *.[cCFSifmso] | \
+    *.ada | *.adb | *.ads | *.asm | \
+    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
+    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
+      func_xform "$libobj"
+      libobj=$func_xform_result
+      ;;
     esac
 
-    libobj=`$ECHO "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
-
     case $libobj in
-    *.lo) obj=`$ECHO "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
     *)
       func_fatal_error "cannot determine name of library object from \`$libobj'"
       ;;
@@ -1731,11 +2104,10 @@ func_mode_compile ()
 
     func_quote_for_eval "$libobj"
     test "X$libobj" != "X$func_quote_for_eval_result" \
-      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'  &()|`$[]' \
+      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'   &()|`$[]' \
       && func_warning "libobj name \`$libobj' may not contain shell special characters."
-    func_basename "$obj"
+    func_dirname_and_basename "$obj" "/" ""
     objname="$func_basename_result"
-    func_dirname "$obj" "/" ""
     xdir="$func_dirname_result"
     lobj=${xdir}$objdir/$objname
 
@@ -1749,12 +2121,9 @@ func_mode_compile ()
       removelist="$lobj $libobj ${libobj}T"
     fi
 
-    $opt_dry_run || $RM $removelist
-    trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
-
     # On Cygwin there's no "real" PIC flag so we must build both object types
     case $host_os in
-    cygwin* | mingw* | pw32* | os2*)
+    cygwin* | mingw* | pw32* | os2* | cegcc*)
       pic_mode=default
       ;;
     esac
@@ -1766,10 +2135,8 @@ func_mode_compile ()
     # Calculate the filename of the output object if compiler does
     # not support -o with -c
     if test "$compiler_c_o" = no; then
-      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
       lockfile="$output_obj.lock"
-      removelist="$removelist $output_obj $lockfile"
-      trap "$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE" 1 2 15
     else
       output_obj=
       need_locks=no
@@ -1799,29 +2166,19 @@ compiler."
        $opt_dry_run || $RM $removelist
        exit $EXIT_FAILURE
       fi
+      func_append removelist " $output_obj"
       $ECHO "$srcfile" > "$lockfile"
     fi
 
-    if test -n "$fix_srcfile_path"; then
-      eval srcfile=\"$fix_srcfile_path\"
-    fi
+    $opt_dry_run || $RM $removelist
+    func_append removelist " $lockfile"
+    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
+
+    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
+    srcfile=$func_to_tool_file_result
     func_quote_for_eval "$srcfile"
     qsrcfile=$func_quote_for_eval_result
 
-    $opt_dry_run || $RM "$libobj" "${libobj}T"
-
-    # Create a libtool object file (analogous to a ".la" file),
-    # but don't create it if we're doing a dry run.
-    $opt_dry_run || cat > ${libobj}T <<EOF
-# $libobj - a libtool object file
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# Please DO NOT delete this file!
-# It is necessary for linking the library.
-
-# Name of the PIC object.
-EOF
-
     # Only build a PIC object if we are building libtool libraries.
     if test "$build_libtool_libs" = yes; then
       # Without this assignment, base_compile gets emptied.
@@ -1838,12 +2195,10 @@ EOF
 
       if test -z "$output_obj"; then
        # Place PIC objects in $objdir
-       command="$command -o $lobj"
+       func_append command " -o $lobj"
       fi
 
-      $opt_dry_run || $RM "$lobj" "$output_obj"
-
-      func_show_eval "$command"        \
+      func_show_eval_locale "$command" \
           'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
 
       if test "$need_locks" = warn &&
@@ -1872,23 +2227,10 @@ compiler."
          'error=$?; $opt_dry_run || $RM $removelist; exit $error'
       fi
 
-      # Append the name of the PIC object to the libtool object file.
-      $opt_dry_run || cat >> ${libobj}T <<EOF
-pic_object='$objdir/$objname'
-
-EOF
-
       # Allow error messages only from the first compilation.
       if test "$suppress_opt" = yes; then
        suppress_output=' >/dev/null 2>&1'
       fi
-    else
-      # No PIC object so indicate it doesn't exist in the libtool
-      # object file.
-      $opt_dry_run || cat >> ${libobj}T <<EOF
-pic_object=none
-
-EOF
     fi
 
     # Only build a position-dependent object if we build old libraries.
@@ -1900,13 +2242,12 @@ EOF
        command="$base_compile $qsrcfile $pic_flag"
       fi
       if test "$compiler_c_o" = yes; then
-       command="$command -o $obj"
+       func_append command " -o $obj"
       fi
 
       # Suppress compiler output if we already did a PIC compilation.
-      command="$command$suppress_output"
-      $opt_dry_run || $RM "$obj" "$output_obj"
-      func_show_eval "$command" \
+      func_append command "$suppress_output"
+      func_show_eval_locale "$command" \
         '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
 
       if test "$need_locks" = warn &&
@@ -1934,29 +2275,14 @@ compiler."
        func_show_eval '$MV "$output_obj" "$obj"' \
          'error=$?; $opt_dry_run || $RM $removelist; exit $error'
       fi
-
-      # Append the name of the non-PIC object the libtool object file.
-      # Only append if the libtool object file exists.
-      $opt_dry_run || cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object='$objname'
-
-EOF
-    else
-      # Append the name of the non-PIC object the libtool object file.
-      # Only append if the libtool object file exists.
-      $opt_dry_run || cat >> ${libobj}T <<EOF
-# Name of the non-PIC object.
-non_pic_object=none
-
-EOF
     fi
 
     $opt_dry_run || {
-      $MV "${libobj}T" "${libobj}"
+      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
 
       # Unlock the critical section if it was locked
       if test "$need_locks" != no; then
+       removelist=$lockfile
         $RM "$lockfile"
       fi
     }
@@ -1964,98 +2290,328 @@ EOF
     exit $EXIT_SUCCESS
 }
 
+$opt_help || {
+  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
+}
 
-# func_mode_execute arg...
-func_mode_execute ()
+func_mode_help ()
 {
-    $opt_debug
-    # The first argument is the command name.
-    cmd="$nonopt"
-    test -z "$cmd" && \
-      func_fatal_help "you must specify a COMMAND"
+    # We need to display help for each of the modes.
+    case $opt_mode in
+      "")
+        # Generic help is extracted from the usage comments
+        # at the start of this file.
+        func_help
+        ;;
 
-    # Handle -dlopen flags immediately.
-    for file in $execute_dlfiles; do
-      test -f "$file" \
-       || func_fatal_help "\`$file' is not a file"
+      clean)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
 
-      dir=
-      case $file in
-      *.la)
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$file" \
-         || func_fatal_help "\`$lib' is not a valid libtool archive"
+Remove files from the build directory.
 
-       # Read the libtool library.
-       dlname=
-       library_names=
-       func_source "$file"
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
 
-       # Skip this library if it cannot be dlopened.
-       if test -z "$dlname"; then
-         # Warn if it was a shared library.
-         test -n "$library_names" && \
-           func_warning "\`$file' was not linked with \`-export-dynamic'"
-         continue
-       fi
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+        ;;
 
-       func_dirname "$file" "" "."
-       dir="$func_dirname_result"
+      compile)
+      $ECHO \
+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
 
-       if test -f "$dir/$objdir/$dlname"; then
-         dir="$dir/$objdir"
-       else
-         func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
-       fi
-       ;;
+Compile a source file into a libtool library object.
 
-      *.lo)
-       # Just add the directory containing the .lo file.
-       func_dirname "$file" "" "."
-       dir="$func_dirname_result"
-       ;;
+This mode accepts the following additional options:
 
-      *)
-       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
-       continue
-       ;;
-      esac
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -no-suppress      do not suppress compiler output for multiple passes
+  -prefer-pic       try to build PIC objects only
+  -prefer-non-pic   try to build non-PIC objects only
+  -shared           do not build a \`.o' file suitable for static linking
+  -static           only build a \`.o' file suitable for static linking
+  -Wc,FLAG          pass FLAG directly to the compiler
 
-      # Get the absolute pathname.
-      absdir=`cd "$dir" && pwd`
-      test -n "$absdir" && dir="$absdir"
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
 
-      # Now add the directory to shlibpath_var.
-      if eval "test -z \"\$$shlibpath_var\""; then
-       eval "$shlibpath_var=\"\$dir\""
-      else
-       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
-      fi
-    done
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+        ;;
 
-    # This variable tells wrapper scripts just to set shlibpath_var
-    # rather than running their programs.
-    libtool_execute_magic="$magic"
+      execute)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
 
-    # Check if any of the arguments is a wrapper script.
-    args=
-    for file
-    do
-      case $file in
-      -*) ;;
-      *)
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+        ;;
+
+      finish)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+        ;;
+
+      install)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The following components of INSTALL-COMMAND are treated specially:
+
+  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+        ;;
+
+      link)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -bindir BINDIR    specify path to binaries directory (for systems where
+                    libraries must be found in the PATH setting at runtime)
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -shared           only do dynamic linking of libtool libraries
+  -shrext SUFFIX    override the standard shared library file extension
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+  -weak LIBNAME     declare that the target provides the LIBNAME interface
+  -Wc,FLAG
+  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
+  -Wl,FLAG
+  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
+  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+        ;;
+
+      uninstall)
+        $ECHO \
+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+        ;;
+
+      *)
+        func_fatal_help "invalid operation mode \`$opt_mode'"
+        ;;
+    esac
+
+    echo
+    $ECHO "Try \`$progname --help' for more information about other modes."
+}
+
+# Now that we've collected a possible --mode arg, show help if necessary
+if $opt_help; then
+  if test "$opt_help" = :; then
+    func_mode_help
+  else
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       func_mode_help
+      done
+    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
+    {
+      func_help noexit
+      for opt_mode in compile link execute install finish uninstall clean; do
+       echo
+       func_mode_help
+      done
+    } |
+    sed '1d
+      /^When reporting/,/^Report/{
+       H
+       d
+      }
+      $x
+      /information about other modes/d
+      /more detailed .*MODE/d
+      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
+  fi
+  exit $?
+fi
+
+
+# func_mode_execute arg...
+func_mode_execute ()
+{
+    $opt_debug
+    # The first argument is the command name.
+    cmd="$nonopt"
+    test -z "$cmd" && \
+      func_fatal_help "you must specify a COMMAND"
+
+    # Handle -dlopen flags immediately.
+    for file in $opt_dlopen; do
+      test -f "$file" \
+       || func_fatal_help "\`$file' is not a file"
+
+      dir=
+      case $file in
+      *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$file" \
+         || func_fatal_help "\`$lib' is not a valid libtool archive"
+
+       # Read the libtool library.
+       dlname=
+       library_names=
+       func_source "$file"
+
+       # Skip this library if it cannot be dlopened.
+       if test -z "$dlname"; then
+         # Warn if it was a shared library.
+         test -n "$library_names" && \
+           func_warning "\`$file' was not linked with \`-export-dynamic'"
+         continue
+       fi
+
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+
+       if test -f "$dir/$objdir/$dlname"; then
+         func_append dir "/$objdir"
+       else
+         if test ! -f "$dir/$dlname"; then
+           func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
+         fi
+       fi
+       ;;
+
+      *.lo)
+       # Just add the directory containing the .lo file.
+       func_dirname "$file" "" "."
+       dir="$func_dirname_result"
+       ;;
+
+      *)
+       func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
+       continue
+       ;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+       eval "$shlibpath_var=\"\$dir\""
+      else
+       eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -* | *.la | *.lo ) ;;
+      *)
        # Do a test to see if this is really a libtool program.
-       if func_ltwrapper_p "$file"; then
+       if func_ltwrapper_script_p "$file"; then
          func_source "$file"
-
+         # Transform arg to wrapped name.
+         file="$progdir/$program"
+       elif func_ltwrapper_executable_p "$file"; then
+         func_ltwrapper_scriptname "$file"
+         func_source "$func_ltwrapper_scriptname_result"
          # Transform arg to wrapped name.
          file="$progdir/$program"
        fi
        ;;
       esac
       # Quote arguments (to preserve shell metacharacters).
-      func_quote_for_eval "$file"
-      args="$args $func_quote_for_eval_result"
+      func_append_quoted args "$file"
     done
 
     if test "X$opt_dry_run" = Xfalse; then
@@ -2065,12 +2621,14 @@ func_mode_execute ()
       fi
 
       # Restore saved environment variables
-      if test "${save_LC_ALL+set}" = set; then
-       LC_ALL="$save_LC_ALL"; export LC_ALL
-      fi
-      if test "${save_LANG+set}" = set; then
-       LANG="$save_LANG"; export LANG
-      fi
+      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+                $lt_var=\$save_$lt_var; export $lt_var
+             else
+               $lt_unset $lt_var
+             fi"
+      done
 
       # Now prepare to actually exec the command.
       exec_cmd="\$cmd$args"
@@ -2078,27 +2636,66 @@ func_mode_execute ()
       # Display what would be done.
       if test -n "$shlibpath_var"; then
        eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
-       $ECHO "export $shlibpath_var"
+       echo "export $shlibpath_var"
       fi
       $ECHO "$cmd$args"
       exit $EXIT_SUCCESS
     fi
 }
 
+test "$opt_mode" = execute && func_mode_execute ${1+"$@"}
+
 
 # func_mode_finish arg...
 func_mode_finish ()
 {
     $opt_debug
-    libdirs="$nonopt"
+    libs=
+    libdirs=
     admincmds=
 
-    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
-      for dir
-      do
-       libdirs="$libdirs $dir"
-      done
+    for opt in "$nonopt" ${1+"$@"}
+    do
+      if test -d "$opt"; then
+       func_append libdirs " $opt"
+
+      elif test -f "$opt"; then
+       if func_lalib_unsafe_p "$opt"; then
+         func_append libs " $opt"
+       else
+         func_warning "\`$opt' is not a valid libtool archive"
+       fi
+
+      else
+       func_fatal_error "invalid argument \`$opt'"
+      fi
+    done
+
+    if test -n "$libs"; then
+      if test -n "$lt_sysroot"; then
+        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
+        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
+      else
+        sysroot_cmd=
+      fi
+
+      # Remove sysroot references
+      if $opt_dry_run; then
+        for lib in $libs; do
+          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
+        done
+      else
+        tmpdir=`func_mktempdir`
+        for lib in $libs; do
+         sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
+           > $tmpdir/tmp-la
+         mv -f $tmpdir/tmp-la $lib
+       done
+        ${RM}r "$tmpdir"
+      fi
+    fi
 
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
       for libdir in $libdirs; do
        if test -n "$finish_cmds"; then
          # Do each command in the finish commands.
@@ -2108,7 +2705,7 @@ func_mode_finish ()
        if test -n "$finish_eval"; then
          # Do the single finish_eval.
          eval cmds=\"$finish_eval\"
-         $opt_dry_run || eval "$cmds" || admincmds="$admincmds
+         $opt_dry_run || eval "$cmds" || func_append admincmds "
        $cmds"
        fi
       done
@@ -2117,52 +2714,56 @@ func_mode_finish ()
     # Exit here if they wanted silent mode.
     $opt_silent && exit $EXIT_SUCCESS
 
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
-    $ECHO "Libraries have been installed in:"
-    for libdir in $libdirs; do
-      $ECHO "   $libdir"
-    done
-    $ECHO
-    $ECHO "If you ever happen to want to link against installed libraries"
-    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
-    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
-    $ECHO "flag during linking and do at least one of the following:"
-    if test -n "$shlibpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
-      $ECHO "     during execution"
-    fi
-    if test -n "$runpath_var"; then
-      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
-      $ECHO "     during linking"
-    fi
-    if test -n "$hardcode_libdir_flag_spec"; then
-      libdir=LIBDIR
-      eval flag=\"$hardcode_libdir_flag_spec\"
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      echo "----------------------------------------------------------------------"
+      echo "Libraries have been installed in:"
+      for libdir in $libdirs; do
+       $ECHO "   $libdir"
+      done
+      echo
+      echo "If you ever happen to want to link against installed libraries"
+      echo "in a given directory, LIBDIR, you must either use libtool, and"
+      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+      echo "flag during linking and do at least one of the following:"
+      if test -n "$shlibpath_var"; then
+       echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+       echo "     during execution"
+      fi
+      if test -n "$runpath_var"; then
+       echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+       echo "     during linking"
+      fi
+      if test -n "$hardcode_libdir_flag_spec"; then
+       libdir=LIBDIR
+       eval flag=\"$hardcode_libdir_flag_spec\"
 
-      $ECHO "   - use the \`$flag' linker flag"
-    fi
-    if test -n "$admincmds"; then
-      $ECHO "   - have your system administrator run these commands:$admincmds"
-    fi
-    if test -f /etc/ld.so.conf; then
-      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
-    fi
-    $ECHO
+       $ECHO "   - use the \`$flag' linker flag"
+      fi
+      if test -n "$admincmds"; then
+       $ECHO "   - have your system administrator run these commands:$admincmds"
+      fi
+      if test -f /etc/ld.so.conf; then
+       echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+      fi
+      echo
 
-    $ECHO "See any operating system documentation about shared libraries for"
-    case $host in
-      solaris2.[6789]|solaris2.1[0-9])
-        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
-       $ECHO "pages."
-       ;;
-      *)
-        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
-        ;;
-    esac
-    $ECHO "X----------------------------------------------------------------------" | $Xsed
+      echo "See any operating system documentation about shared libraries for"
+      case $host in
+       solaris2.[6789]|solaris2.1[0-9])
+         echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
+         echo "pages."
+         ;;
+       *)
+         echo "more information, such as the ld(1) and ld.so(8) manual pages."
+         ;;
+      esac
+      echo "----------------------------------------------------------------------"
+    fi
     exit $EXIT_SUCCESS
 }
 
+test "$opt_mode" = finish && func_mode_finish ${1+"$@"}
+
 
 # func_mode_install arg...
 func_mode_install ()
@@ -2172,7 +2773,7 @@ func_mode_install ()
     # install_prog (especially on Windows NT).
     if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
        # Allow the use of GNU shtool's install command.
-       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
+       case $nonopt in *shtool*) :;; *) false;; esac; then
       # Aesthetically quote it.
       func_quote_for_eval "$nonopt"
       install_prog="$func_quote_for_eval_result "
@@ -2186,7 +2787,12 @@ func_mode_install ()
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
     func_quote_for_eval "$arg"
-    install_prog="$install_prog$func_quote_for_eval_result"
+    func_append install_prog "$func_quote_for_eval_result"
+    install_shared_prog=$install_prog
+    case " $install_prog " in
+      *[\\\ /]cp\ *) install_cp=: ;;
+      *) install_cp=false ;;
+    esac
 
     # We need to accept at least all the BSD install flags.
     dest=
@@ -2196,10 +2802,12 @@ func_mode_install ()
     install_type=
     isdir=no
     stripme=
+    no_mode=:
     for arg
     do
+      arg2=
       if test -n "$dest"; then
-       files="$files $dest"
+       func_append files " $dest"
        dest=$arg
        continue
       fi
@@ -2207,10 +2815,9 @@ func_mode_install ()
       case $arg in
       -d) isdir=yes ;;
       -f)
-       case " $install_prog " in
-       *[\\\ /]cp\ *) ;;
-       *) prev=$arg ;;
-       esac
+       if $install_cp; then :; else
+         prev=$arg
+       fi
        ;;
       -g | -m | -o)
        prev=$arg
@@ -2224,6 +2831,10 @@ func_mode_install ()
       *)
        # If the previous option needed an argument, then skip it.
        if test -n "$prev"; then
+         if test "x$prev" = x-m && test -n "$install_override_mode"; then
+           arg2=$install_override_mode
+           no_mode=false
+         fi
          prev=
        else
          dest=$arg
@@ -2234,7 +2845,11 @@ func_mode_install ()
 
       # Aesthetically quote the argument.
       func_quote_for_eval "$arg"
-      install_prog="$install_prog $func_quote_for_eval_result"
+      func_append install_prog " $func_quote_for_eval_result"
+      if test -n "$arg2"; then
+       func_quote_for_eval "$arg2"
+      fi
+      func_append install_shared_prog " $func_quote_for_eval_result"
     done
 
     test -z "$install_prog" && \
@@ -2243,6 +2858,13 @@ func_mode_install ()
     test -n "$prev" && \
       func_fatal_help "the \`$prev' option requires an argument"
 
+    if test -n "$install_override_mode" && $no_mode; then
+      if $install_cp; then :; else
+       func_quote_for_eval "$install_override_mode"
+       func_append install_shared_prog " -m $func_quote_for_eval_result"
+      fi
+    fi
+
     if test -z "$files"; then
       if test -z "$dest"; then
        func_fatal_help "no file or destination specified"
@@ -2261,9 +2883,8 @@ func_mode_install ()
       destdir="$dest"
       destname=
     else
-      func_dirname "$dest" "" "."
+      func_dirname_and_basename "$dest" "" "."
       destdir="$func_dirname_result"
-      func_basename "$dest"
       destname="$func_basename_result"
 
       # Not a directory, so check to see that there is only one file specified.
@@ -2298,10 +2919,13 @@ func_mode_install ()
       case $file in
       *.$libext)
        # Do the static libraries later.
-       staticlibs="$staticlibs $file"
+       func_append staticlibs " $file"
        ;;
 
       *.la)
+       func_resolve_sysroot "$file"
+       file=$func_resolve_sysroot_result
+
        # Check to see that this really is a libtool archive.
        func_lalib_unsafe_p "$file" \
          || func_fatal_help "\`$file' is not a valid libtool archive"
@@ -2315,23 +2939,23 @@ func_mode_install ()
        if test "X$destdir" = "X$libdir"; then
          case "$current_libdirs " in
          *" $libdir "*) ;;
-         *) current_libdirs="$current_libdirs $libdir" ;;
+         *) func_append current_libdirs " $libdir" ;;
          esac
        else
          # Note the libdir as a future libdir.
          case "$future_libdirs " in
          *" $libdir "*) ;;
-         *) future_libdirs="$future_libdirs $libdir" ;;
+         *) func_append future_libdirs " $libdir" ;;
          esac
        fi
 
        func_dirname "$file" "/" ""
        dir="$func_dirname_result"
-       dir="$dir$objdir"
+       func_append dir "$objdir"
 
        if test -n "$relink_command"; then
          # Determine the prefix the user has applied to our future dir.
-         inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
+         inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
 
          # Don't allow the user to place us outside of our expected
          # location b/c this prevents finding dependent libraries that
@@ -2344,9 +2968,9 @@ func_mode_install ()
 
          if test -n "$inst_prefix_dir"; then
            # Stick the inst_prefix_dir data into the link command.
-           relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
          else
-           relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
+           relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
          fi
 
          func_warning "relinking \`$file'"
@@ -2364,11 +2988,11 @@ func_mode_install ()
          test -n "$relink_command" && srcname="$realname"T
 
          # Install the shared library and build the symlinks.
-         func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
+         func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
              'exit $?'
          tstripme="$stripme"
          case $host_os in
-         cygwin* | mingw* | pw32*)
+         cygwin* | mingw* | pw32* | cegcc*)
            case $realname in
            *.dll.a)
              tstripme=""
@@ -2404,7 +3028,7 @@ func_mode_install ()
        func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
 
        # Maybe install the static library, too.
-       test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+       test -n "$old_library" && func_append staticlibs " $dir/$old_library"
        ;;
 
       *.lo)
@@ -2422,7 +3046,8 @@ func_mode_install ()
        # Deduce the name of the destination old-style object file.
        case $destfile in
        *.lo)
-         staticdest=`$ECHO "X$destfile" | $Xsed -e "$lo2o"`
+         func_lo2o "$destfile"
+         staticdest=$func_lo2o_result
          ;;
        *.$objext)
          staticdest="$destfile"
@@ -2440,7 +3065,8 @@ func_mode_install ()
        # Install the old object if enabled.
        if test "$build_old_libs" = yes; then
          # Deduce the name of the old-style object file.
-         staticobj=`$ECHO "X$file" | $Xsed -e "$lo2o"`
+         func_lo2o "$file"
+         staticobj=$func_lo2o_result
          func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
        fi
        exit $EXIT_SUCCESS
@@ -2472,15 +3098,20 @@ func_mode_install ()
 
        # Do a test to see if this is really a libtool program.
        case $host in
-       *cygwin*|*mingw*)
-           func_stripname '' '.exe' "$file"
-           wrapper=$func_stripname_result
+       *cygwin* | *mingw*)
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             wrapper=$func_ltwrapper_scriptname_result
+           else
+             func_stripname '' '.exe' "$file"
+             wrapper=$func_stripname_result
+           fi
            ;;
        *)
            wrapper=$file
            ;;
        esac
-       if func_ltwrapper_p "$wrapper"; then
+       if func_ltwrapper_script_p "$wrapper"; then
          notinst_deplibs=
          relink_command=
 
@@ -2497,7 +3128,7 @@ func_mode_install ()
            if test -f "$lib"; then
              func_source "$lib"
            fi
-           libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+           libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
            if test -n "$libdir" && test ! -f "$libfile"; then
              func_warning "\`$lib' has not been installed in \`$libdir'"
              finalize=no
@@ -2516,7 +3147,7 @@ func_mode_install ()
                file="$func_basename_result"
                outputname="$tmpdir/$file"
                # Replace the output file specification.
-               relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+               relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
 
                $opt_silent || {
                  func_quote_for_expand "$relink_command"
@@ -2535,7 +3166,7 @@ func_mode_install ()
            }
          else
            # Install the binary that we compiled earlier.
-           file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+           file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
          fi
        fi
 
@@ -2571,11 +3202,13 @@ func_mode_install ()
 
       # Set up the ranlib parameters.
       oldlib="$destdir/$name"
+      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+      tool_oldlib=$func_to_tool_file_result
 
       func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
 
       if test -n "$stripme" && test -n "$old_striplib"; then
-       func_show_eval "$old_striplib $oldlib" 'exit $?'
+       func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
       fi
 
       # Do each command in the postinstall commands.
@@ -2594,3369 +3227,4780 @@ func_mode_install ()
     fi
 }
 
+test "$opt_mode" = install && func_mode_install ${1+"$@"}
 
-# func_mode_link arg...
-func_mode_link ()
+
+# func_generate_dlsyms outputname originator pic_p
+# Extract symbols from dlprefiles and create ${outputname}S.o with
+# a dlpreopen symbol table.
+func_generate_dlsyms ()
 {
     $opt_debug
-    case $host in
-    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-      # It is impossible to link a dll without this setting, and
-      # we shouldn't force the makefile maintainer to figure out
-      # which system we are compiling for in order to pass an extra
-      # flag for every libtool invocation.
-      # allow_undefined=no
+    my_outputname="$1"
+    my_originator="$2"
+    my_pic_p="${3-no}"
+    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
+    my_dlsyms=
 
-      # FIXME: Unfortunately, there are problems with the above when trying
-      # to make a dll which has undefined symbols, in which case not
-      # even a static library is built.  For now, we need to specify
-      # -no-undefined on the libtool link line when we can be certain
-      # that all symbols are satisfied, otherwise we get a static library.
-      allow_undefined=yes
-      ;;
-    *)
-      allow_undefined=yes
-      ;;
-    esac
-    libtool_args="$nonopt"
-    base_compile="$nonopt $@"
-    compile_command="$nonopt"
-    finalize_command="$nonopt"
+    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+      if test -n "$NM" && test -n "$global_symbol_pipe"; then
+       my_dlsyms="${my_outputname}S.c"
+      else
+       func_error "not configured to extract global symbols from dlpreopened files"
+      fi
+    fi
 
-    compile_rpath=
-    finalize_rpath=
-    compile_shlibpath=
-    finalize_shlibpath=
-    convenience=
-    old_convenience=
-    deplibs=
-    old_deplibs=
-    compiler_flags=
-    linker_flags=
-    dllsearchpath=
-    lib_search_path=`pwd`
-    inst_prefix_dir=
-    new_inherited_linker_flags=
+    if test -n "$my_dlsyms"; then
+      case $my_dlsyms in
+      "") ;;
+      *.c)
+       # Discover the nlist of each of the dlfiles.
+       nlist="$output_objdir/${my_outputname}.nm"
 
-    avoid_version=no
-    dlfiles=
-    dlprefiles=
-    dlself=no
-    export_dynamic=no
-    export_symbols=
-    export_symbols_regex=
-    generated=
-    libobjs=
-    ltlibs=
-    module=no
-    no_install=no
-    objs=
-    non_pic_objects=
-    precious_files_regex=
-    prefer_static_libs=no
-    preload=no
-    prev=
-    prevarg=
-    release=
-    rpath=
-    xrpath=
-    perm_rpath=
-    temp_rpath=
-    thread_safe=no
-    vinfo=
-    vinfo_number=no
-    weak_libs=
-    single_module="${wl}-single_module"
-    func_infer_tag $base_compile
+       func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
 
-    # We need to know -static, to get the right output filenames.
-    for arg
-    do
-      case $arg in
-      -shared)
-       test "$build_libtool_libs" != yes && \
-         func_fatal_configuration "can not build a shared library"
-       build_old_libs=no
-       break
-       ;;
-      -all-static | -static)
-       if test "X$arg" = "X-all-static"; then
-         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
-           func_warning "complete static linking is impossible in this configuration"
+       # Parse the name list into a source file.
+       func_verbose "creating $output_objdir/$my_dlsyms"
+
+       $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
+#endif
+
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
+/* External symbol declarations for the compiler. */\
+"
+
+       if test "$dlself" = yes; then
+         func_verbose "generating symbol list for \`$output'"
+
+         $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
+
+         # Add our own program objects to the symbol list.
+         progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+         for progfile in $progfiles; do
+           func_to_tool_file "$progfile" func_convert_file_msys_to_w32
+           func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
+           $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
+         done
+
+         if test -n "$exclude_expsyms"; then
+           $opt_dry_run || {
+             eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
          fi
-         if test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
-           # See comment for -static flag below, for more details.
-           compile_command="$compile_command $link_static_flag"
-           finalize_command="$finalize_command $link_static_flag"
+
+         if test -n "$export_symbols_regex"; then
+           $opt_dry_run || {
+             eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+           }
          fi
-         prefer_static_libs=yes
-       else
-         if test -z "$pic_flag" && test -n "$link_static_flag"; then
-           dlopen_self=$dlopen_self_static
+
+         # Prepare the list of exported symbols
+         if test -z "$export_symbols"; then
+           export_symbols="$output_objdir/$outputname.exp"
+           $opt_dry_run || {
+             $RM $export_symbols
+             eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+             case $host in
+             *cygwin* | *mingw* | *cegcc* )
+                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+               ;;
+             esac
+           }
+         else
+           $opt_dry_run || {
+             eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+             eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+             eval '$MV "$nlist"T "$nlist"'
+             case $host in
+               *cygwin* | *mingw* | *cegcc* )
+                 eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+                 eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                 ;;
+             esac
+           }
          fi
-         prefer_static_libs=built
        fi
-       build_libtool_libs=no
-       build_old_libs=yes
-       break
-       ;;
-      esac
-    done
 
-    # See if our shared archives depend on static archives.
-    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+       for dlprefile in $dlprefiles; do
+         func_verbose "extracting global C symbols from \`$dlprefile'"
+         func_basename "$dlprefile"
+         name="$func_basename_result"
+          case $host in
+           *cygwin* | *mingw* | *cegcc* )
+             # if an import library, we need to obtain dlname
+             if func_win32_import_lib_p "$dlprefile"; then
+               func_tr_sh "$dlprefile"
+               eval "curr_lafile=\$libfile_$func_tr_sh_result"
+               dlprefile_dlbasename=""
+               if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
+                 # Use subshell, to avoid clobbering current variable values
+                 dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
+                 if test -n "$dlprefile_dlname" ; then
+                   func_basename "$dlprefile_dlname"
+                   dlprefile_dlbasename="$func_basename_result"
+                 else
+                   # no lafile. user explicitly requested -dlpreopen <import library>.
+                   $sharedlib_from_linklib_cmd "$dlprefile"
+                   dlprefile_dlbasename=$sharedlib_from_linklib_result
+                 fi
+               fi
+               $opt_dry_run || {
+                 if test -n "$dlprefile_dlbasename" ; then
+                   eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
+                 else
+                   func_warning "Could not compute DLL name from $name"
+                   eval '$ECHO ": $name " >> "$nlist"'
+                 fi
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
+                   $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
+               }
+             else # not an import lib
+               $opt_dry_run || {
+                 eval '$ECHO ": $name " >> "$nlist"'
+                 func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+                 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+               }
+             fi
+           ;;
+           *)
+             $opt_dry_run || {
+               eval '$ECHO ": $name " >> "$nlist"'
+               func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
+               eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
+             }
+           ;;
+          esac
+       done
 
-    # Go through the arguments, transforming them on the way.
-    while test "$#" -gt 0; do
-      arg="$1"
-      shift
-      func_quote_for_eval "$arg"
-      qarg="$func_quote_for_eval_unquoted_result"
-      libtool_args="$libtool_args $func_quote_for_eval_result"
+       $opt_dry_run || {
+         # Make sure we have at least an empty file.
+         test -f "$nlist" || : > "$nlist"
 
-      # If the previous option needs an argument, assign it.
-      if test -n "$prev"; then
-       case $prev in
-       output)
-         compile_command="$compile_command @OUTPUT@"
-         finalize_command="$finalize_command @OUTPUT@"
-         ;;
-       esac
+         if test -n "$exclude_expsyms"; then
+           $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+           $MV "$nlist"T "$nlist"
+         fi
 
-       case $prev in
-       dlfiles|dlprefiles)
-         if test "$preload" = no; then
-           # Add the symbol object into the linking commands.
-           compile_command="$compile_command @SYMFILE@"
-           finalize_command="$finalize_command @SYMFILE@"
-           preload=yes
+         # Try sorting and uniquifying the output.
+         if $GREP -v "^: " < "$nlist" |
+             if sort -k 3 </dev/null >/dev/null 2>&1; then
+               sort -k 3
+             else
+               sort +2
+             fi |
+             uniq > "$nlist"S; then
+           :
+         else
+           $GREP -v "^: " < "$nlist" > "$nlist"S
          fi
-         case $arg in
-         *.la | *.lo) ;;  # We handle these cases below.
-         force)
-           if test "$dlself" = no; then
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         self)
-           if test "$prev" = dlprefiles; then
-             dlself=yes
-           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
-             dlself=yes
-           else
-             dlself=needless
-             export_dynamic=yes
-           fi
-           prev=
-           continue
-           ;;
-         *)
-           if test "$prev" = dlfiles; then
-             dlfiles="$dlfiles $arg"
-           else
-             dlprefiles="$dlprefiles $arg"
-           fi
-           prev=
-           continue
-           ;;
-         esac
-         ;;
-       expsyms)
-         export_symbols="$arg"
-         test -f "$arg" \
-           || func_fatal_error "symbol file \`$arg' does not exist"
-         prev=
-         continue
-         ;;
-       expsyms_regex)
-         export_symbols_regex="$arg"
-         prev=
-         continue
-         ;;
-       framework)
-         case $host in
-           *-*-darwin*)
-             case "$deplibs " in
-               *" $qarg.ltframework "*) ;;
-               *) deplibs="$deplibs $qarg.ltframework" # this is fixed later
-                  ;;
-             esac
-             ;;
-         esac
-         prev=
-         continue
-         ;;
-       inst_prefix)
-         inst_prefix_dir="$arg"
-         prev=
-         continue
-         ;;
-       objectlist)
-         if test -f "$arg"; then
-           save_arg=$arg
-           moreargs=
-           for fil in `cat "$save_arg"`
-           do
-#            moreargs="$moreargs $fil"
-             arg=$fil
-             # A libtool-controlled object.
-
-             # Check to see that this really is a libtool object.
-             if func_lalib_unsafe_p "$arg"; then
-               pic_object=
-               non_pic_object=
-
-               # Read the .lo file
-               func_source "$arg"
-
-               if test -z "$pic_object" ||
-                  test -z "$non_pic_object" ||
-                  test "$pic_object" = none &&
-                  test "$non_pic_object" = none; then
-                 func_fatal_error "cannot find name of object for \`$arg'"
-               fi
 
-               # Extract subdirectory from the argument.
-               func_dirname "$arg" "/" ""
-               xdir="$func_dirname_result"
-
-               if test "$pic_object" != none; then
-                 # Prepend the subdirectory the object is found in.
-                 pic_object="$xdir$pic_object"
+         if test -f "$nlist"S; then
+           eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
+         else
+           echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
+         fi
 
-                 if test "$prev" = dlfiles; then
-                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-                     dlfiles="$dlfiles $pic_object"
-                     prev=
-                     continue
-                   else
-                     # If libtool objects are unsupported, then we need to preload.
-                     prev=dlprefiles
-                   fi
-                 fi
+         echo >> "$output_objdir/$my_dlsyms" "\
 
-                 # CHECK ME:  I think I busted this.  -Ossama
-                 if test "$prev" = dlprefiles; then
-                   # Preload the old-style object.
-                   dlprefiles="$dlprefiles $pic_object"
-                   prev=
-                 fi
+/* The mapping between symbol names and symbols.  */
+typedef struct {
+  const char *name;
+  void *address;
+} lt_dlsymlist;
+extern LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[];
+LT_DLSYM_CONST lt_dlsymlist
+lt_${my_prefix}_LTX_preloaded_symbols[] =
+{\
+  { \"$my_originator\", (void *) 0 },"
 
-                 # A PIC object.
-                 libobjs="$libobjs $pic_object"
-                 arg="$pic_object"
-               fi
+         case $need_lib_prefix in
+         no)
+           eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         *)
+           eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
+           ;;
+         esac
+         echo >> "$output_objdir/$my_dlsyms" "\
+  {0, (void *) 0}
+};
 
-               # Non-PIC object.
-               if test "$non_pic_object" != none; then
-                 # Prepend the subdirectory the object is found in.
-                 non_pic_object="$xdir$non_pic_object"
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_${my_prefix}_LTX_preloaded_symbols;
+}
+#endif
 
-                 # A standard non-PIC object
-                 non_pic_objects="$non_pic_objects $non_pic_object"
-                 if test -z "$pic_object" || test "$pic_object" = none ; then
-                   arg="$non_pic_object"
-                 fi
-               else
-                 # If the PIC object exists, use it instead.
-                 # $xdir was prepended to $pic_object above.
-                 non_pic_object="$pic_object"
-                 non_pic_objects="$non_pic_objects $non_pic_object"
-               fi
-             else
-               # Only an error if not doing a dry-run.
-               if $opt_dry_run; then
-                 # Extract subdirectory from the argument.
-                 func_dirname "$arg" "/" ""
-                 xdir="$func_dirname_result"
+#ifdef __cplusplus
+}
+#endif\
+"
+       } # !$opt_dry_run
 
-                 pic_object=`$ECHO "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-                 non_pic_object=`$ECHO "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-                 libobjs="$libobjs $pic_object"
-                 non_pic_objects="$non_pic_objects $non_pic_object"
-               else
-                 func_fatal_error "\`$arg' is not a valid libtool object"
-               fi
-             fi
-           done
-         else
-           func_fatal_error "link input file \`$arg' does not exist"
-         fi
-         arg=$save_arg
-         prev=
-         continue
-         ;;
-       precious_regex)
-         precious_files_regex="$arg"
-         prev=
-         continue
-         ;;
-       release)
-         release="-$arg"
-         prev=
-         continue
-         ;;
-       rpath | xrpath)
-         # We need an absolute path.
-         case $arg in
-         [\\/]* | [A-Za-z]:[\\/]*) ;;
+       pic_flag_for_symtable=
+       case "$compile_command " in
+       *" -static "*) ;;
+       *)
+         case $host in
+         # compiling the symbol table file with pic_flag works around
+         # a FreeBSD bug that causes programs to crash when -lm is
+         # linked before any other PIC object.  But we must not use
+         # pic_flag when linking with -static.  The problem exists in
+         # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+         *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+           pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
+         *-*-hpux*)
+           pic_flag_for_symtable=" $pic_flag"  ;;
          *)
-           func_fatal_error "only absolute run-paths are allowed"
+           if test "X$my_pic_p" != Xno; then
+             pic_flag_for_symtable=" $pic_flag"
+           fi
            ;;
          esac
-         if test "$prev" = rpath; then
-           case "$rpath " in
-           *" $arg "*) ;;
-           *) rpath="$rpath $arg" ;;
-           esac
+         ;;
+       esac
+       symtab_cflags=
+       for arg in $LTCFLAGS; do
+         case $arg in
+         -pie | -fpie | -fPIE) ;;
+         *) func_append symtab_cflags " $arg" ;;
+         esac
+       done
+
+       # Now compile the dynamic symbol file.
+       func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
+
+       # Clean up the generated files.
+       func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
+
+       # Transform the symbol file into the correct name.
+       symfileobj="$output_objdir/${my_outputname}S.$objext"
+       case $host in
+       *cygwin* | *mingw* | *cegcc* )
+         if test -f "$output_objdir/$my_outputname.def"; then
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
          else
-           case "$xrpath " in
-           *" $arg "*) ;;
-           *) xrpath="$xrpath $arg" ;;
-           esac
+           compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+           finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
          fi
-         prev=
-         continue
-         ;;
-       shrext)
-         shrext_cmds="$arg"
-         prev=
-         continue
-         ;;
-       weak)
-         weak_libs="$weak_libs $arg"
-         prev=
-         continue
-         ;;
-       xcclinker)
-         linker_flags="$linker_flags $qarg"
-         compiler_flags="$compiler_flags $qarg"
-         prev=
-         compile_command="$compile_command $qarg"
-         finalize_command="$finalize_command $qarg"
-         continue
-         ;;
-       xcompiler)
-         compiler_flags="$compiler_flags $qarg"
-         prev=
-         compile_command="$compile_command $qarg"
-         finalize_command="$finalize_command $qarg"
-         continue
-         ;;
-       xlinker)
-         linker_flags="$linker_flags $qarg"
-         compiler_flags="$compiler_flags $wl$qarg"
-         prev=
-         compile_command="$compile_command $wl$qarg"
-         finalize_command="$finalize_command $wl$qarg"
-         continue
          ;;
        *)
-         eval "$prev=\"\$arg\""
-         prev=
-         continue
+         compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
+         finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
          ;;
        esac
-      fi # test -n "$prev"
-
-      prevarg="$arg"
-
-      case $arg in
-      -all-static)
-       # The effects of -all-static are defined in a previous loop.
-       continue
-       ;;
-
-      -allow-undefined)
-       # FIXME: remove this flag sometime in the future.
-       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
        ;;
-
-      -avoid-version)
-       avoid_version=yes
-       continue
+      *)
+       func_fatal_error "unknown suffix for \`$my_dlsyms'"
        ;;
+      esac
+    else
+      # We keep going just in case the user didn't refer to
+      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+      # really was required.
 
-      -dlopen)
-       prev=dlfiles
-       continue
-       ;;
-
-      -dlpreopen)
-       prev=dlprefiles
-       continue
-       ;;
-
-      -export-dynamic)
-       export_dynamic=yes
-       continue
-       ;;
-
-      -export-symbols | -export-symbols-regex)
-       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
-         func_fatal_error "more than one -exported-symbols argument is not allowed"
-       fi
-       if test "X$arg" = "X-export-symbols"; then
-         prev=expsyms
-       else
-         prev=expsyms_regex
-       fi
-       continue
-       ;;
+      # Nullify the symbol file.
+      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
+      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
+    fi
+}
 
-      -framework)
-       prev=framework
-       continue
-       ;;
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+# Despite the name, also deal with 64 bit binaries.
+func_win32_libid ()
+{
+  $opt_debug
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
+       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
+      func_to_tool_file "$1" func_convert_file_msys_to_w32
+      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
+       $SED -n -e '
+           1,100{
+               / I /{
+                   s,.*,import,
+                   p
+                   q
+               }
+           }'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $ECHO "$win32_libid_type"
+}
 
-      -inst-prefix-dir)
-       prev=inst_prefix
-       continue
-       ;;
+# func_cygming_dll_for_implib ARG
+#
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib ()
+{
+  $opt_debug
+  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
+}
 
-      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
-      # so, if we see these flags be careful not to treat them like -L
-      -L[A-Z][A-Z]*:*)
-       case $with_gcc/$host in
-       no/*-*-irix* | /*-*-irix*)
-         compile_command="$compile_command $arg"
-         finalize_command="$finalize_command $arg"
-         ;;
-       esac
-       continue
-       ;;
+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
+#
+# The is the core of a fallback implementation of a
+# platform-specific function to extract the name of the
+# DLL associated with the specified import library LIBNAME.
+#
+# SECTION_NAME is either .idata$6 or .idata$7, depending
+# on the platform and compiler that created the implib.
+#
+# Echos the name of the DLL associated with the
+# specified import library.
+func_cygming_dll_for_implib_fallback_core ()
+{
+  $opt_debug
+  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
+  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
+    $SED '/^Contents of section '"$match_literal"':/{
+      # Place marker at beginning of archive member dllname section
+      s/.*/====MARK====/
+      p
+      d
+    }
+    # These lines can sometimes be longer than 43 characters, but
+    # are always uninteresting
+    /:[         ]*file format pe[i]\{,1\}-/d
+    /^In archive [^:]*:/d
+    # Ensure marker is printed
+    /^====MARK====/p
+    # Remove all lines with less than 43 characters
+    /^.\{43\}/!d
+    # From remaining lines, remove first 43 characters
+    s/^.\{43\}//' |
+    $SED -n '
+      # Join marker and all lines until next marker into a single line
+      /^====MARK====/ b para
+      H
+      $ b para
+      b
+      :para
+      x
+      s/\n//g
+      # Remove the marker
+      s/^====MARK====//
+      # Remove trailing dots and whitespace
+      s/[\. \t]*$//
+      # Print
+      /./p' |
+    # we now have a list, one entry per line, of the stringified
+    # contents of the appropriate section of all members of the
+    # archive which possess that section. Heuristic: eliminate
+    # all those which have a first or second character that is
+    # a '.' (that is, objdump's representation of an unprintable
+    # character.) This should work for all archives with less than
+    # 0x302f exports -- but will fail for DLLs whose name actually
+    # begins with a literal '.' or a single character followed by
+    # a '.'.
+    #
+    # Of those that remain, print the first one.
+    $SED -e '/^\./d;/^.\./d;q'
+}
 
-      -L*)
-       func_stripname '-L' '' "$arg"
-       dir=$func_stripname_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       *)
-         absdir=`cd "$dir" && pwd`
-         test -z "$absdir" && \
-           func_fatal_error "cannot determine absolute directory name of \`$dir'"
-         dir="$absdir"
-         ;;
-       esac
-       case "$deplibs " in
-       *" -L$dir "*) ;;
-       *)
-         deplibs="$deplibs -L$dir"
-         lib_search_path="$lib_search_path $dir"
-         ;;
-       esac
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-         testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$dir:"*) ;;
-         *) dllsearchpath="$dllsearchpath:$dir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         *) dllsearchpath="$dllsearchpath:$testbindir";;
-         esac
-         ;;
-       esac
-       continue
-       ;;
+# func_cygming_gnu_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is a GNU/binutils-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_gnu_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'`
+  test -n "$func_cygming_gnu_implib_tmp"
+}
 
-      -l*)
-       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
-         case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
-           # These systems don't actually have a C or math library (as such)
-           continue
-           ;;
-         *-*-os2*)
-           # These systems don't actually have a C library (as such)
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-           # Do not include libc due to us having libc/libc_r.
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C and math libraries are in the System framework
-           deplibs="$deplibs System.ltframework"
-           continue
-           ;;
-         *-*-sco3.2v5* | *-*-sco5v6*)
-           # Causes problems with __ctype
-           test "X$arg" = "X-lc" && continue
-           ;;
-         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
-           # Compiler inserts libc in the correct place for threads to work
-           test "X$arg" = "X-lc" && continue
-           ;;
-         esac
-       elif test "X$arg" = "X-lc_r"; then
-        case $host in
-        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
-          # Do not include libc_r directly, use -pthread flag.
-          continue
-          ;;
-        esac
-       fi
-       deplibs="$deplibs $arg"
-       continue
-       ;;
+# func_cygming_ms_implib_p ARG
+# This predicate returns with zero status (TRUE) if
+# ARG is an MS-style import library. Returns
+# with nonzero status (FALSE) otherwise.
+func_cygming_ms_implib_p ()
+{
+  $opt_debug
+  func_to_tool_file "$1" func_convert_file_msys_to_w32
+  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
+  test -n "$func_cygming_ms_implib_tmp"
+}
 
-      -module)
-       module=yes
-       continue
-       ;;
+# func_cygming_dll_for_implib_fallback ARG
+# Platform-specific function to extract the
+# name of the DLL associated with the specified
+# import library ARG.
+#
+# This fallback implementation is for use when $DLLTOOL
+# does not support the --identify-strict option.
+# Invoked by eval'ing the libtool variable
+#    $sharedlib_from_linklib_cmd
+# Result is available in the variable
+#    $sharedlib_from_linklib_result
+func_cygming_dll_for_implib_fallback ()
+{
+  $opt_debug
+  if func_cygming_gnu_implib_p "$1" ; then
+    # binutils import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
+  elif func_cygming_ms_implib_p "$1" ; then
+    # ms-generated import library
+    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
+  else
+    # unknown
+    sharedlib_from_linklib_result=""
+  fi
+}
 
-      # Tru64 UNIX uses -model [arg] to determine the layout of C++
-      # classes, name mangling, and exception handling.
-      # Darwin uses the -arch flag to determine output architecture.
-      -model|-arch|-isysroot)
-       compile_command="$compile_command $arg"
-       compiler_flags="$compiler_flags $arg"
-       finalize_command="$finalize_command $arg"
-       prev=xcompiler
-       continue
-       ;;
 
-      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
-       compiler_flags="$compiler_flags $arg"
-       compile_command="$compile_command $arg"
-       finalize_command="$finalize_command $arg"
-       case "$new_inherited_linker_flags " in
-           *" $arg "*) ;;
-           * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
-       esac
-       continue
-       ;;
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    $opt_debug
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+    if test "$lock_old_archive_extraction" = yes; then
+      lockfile=$f_ex_an_ar_oldlib.lock
+      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
+       func_echo "Waiting for $lockfile to be removed"
+       sleep 2
+      done
+    fi
+    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
+                  'stat=$?; rm -f "$lockfile"; exit $stat'
+    if test "$lock_old_archive_extraction" = yes; then
+      $opt_dry_run || rm -f "$lockfile"
+    fi
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
+    fi
+}
 
-      -multi_module)
-       single_module="${wl}-multi_module"
-       continue
-       ;;
 
-      -no-fast-install)
-       fast_install=no
-       continue
-       ;;
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    $opt_debug
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
 
-      -no-install)
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-         # The PATH hackery in wrapper scripts is required on Windows
-         # in order for the loader to find any dlls it needs.
-         func_warning "\`-no-install' is ignored for $host"
-         func_warning "assuming \`-no-fast-install' instead"
-         fast_install=no
-         ;;
-       *) no_install=yes ;;
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+       [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+       *) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      func_basename "$my_xlib"
+      my_xlib="$func_basename_result"
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         func_arith $extracted_serial + 1
+         extracted_serial=$func_arith_result
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
        esac
-       continue
-       ;;
-
-      -no-undefined)
-       allow_undefined=no
-       continue
-       ;;
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
 
-      -objectlist)
-       prev=objectlist
-       continue
-       ;;
+      func_mkdir_p "$my_xdir"
 
-      -o) prev=output ;;
-
-      -precious-files-regex)
-       prev=precious_regex
-       continue
+      case $host in
+      *-darwin*)
+       func_verbose "Extracting $my_xabs"
+       # Do not bother doing anything if just a dry run
+       $opt_dry_run || {
+         darwin_orig_dir=`pwd`
+         cd $my_xdir || exit $?
+         darwin_archive=$my_xabs
+         darwin_curdir=`pwd`
+         darwin_base_archive=`basename "$darwin_archive"`
+         darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
+         if test -n "$darwin_arches"; then
+           darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
+           darwin_arch=
+           func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
+           for darwin_arch in  $darwin_arches ; do
+             func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+             cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+             func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+             cd "$darwin_curdir"
+             $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+           done # $darwin_arches
+            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
+           darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
+           darwin_file=
+           darwin_files=
+           for darwin_file in $darwin_filelist; do
+             darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
+             $LIPO -create -output "$darwin_file" $darwin_files
+           done # $darwin_filelist
+           $RM -rf unfat-$$
+           cd "$darwin_orig_dir"
+         else
+           cd $darwin_orig_dir
+           func_extract_an_archive "$my_xdir" "$my_xabs"
+         fi # $darwin_arches
+       } # !$opt_dry_run
        ;;
-
-      -release)
-       prev=release
-       continue
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
+    done
 
-      -rpath)
-       prev=rpath
-       continue
-       ;;
+    func_extract_archives_result="$my_oldobjs"
+}
 
-      -R)
-       prev=xrpath
-       continue
-       ;;
 
-      -R*)
-       func_stripname '-R' '' "$arg"
-       dir=$func_stripname_result
-       # We need an absolute path.
-       case $dir in
-       [\\/]* | [A-Za-z]:[\\/]*) ;;
-       *)
-         func_fatal_error "only absolute run-paths are allowed"
-         ;;
-       esac
-       case "$xrpath " in
-       *" $dir "*) ;;
-       *) xrpath="$xrpath $dir" ;;
-       esac
-       continue
-       ;;
+# func_emit_wrapper [arg=no]
+#
+# Emit a libtool wrapper script on stdout.
+# Don't directly open a file because we may want to
+# incorporate the script contents within a cygwin/mingw
+# wrapper executable.  Must ONLY be called from within
+# func_mode_link because it depends on a number of variables
+# set therein.
+#
+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
+# variable will take.  If 'yes', then the emitted script
+# will assume that the directory in which it is stored is
+# the $objdir directory.  This is a cygwin/mingw-specific
+# behavior.
+func_emit_wrapper ()
+{
+       func_emit_wrapper_arg1=${1-no}
 
-      -shared)
-       # The effects of -shared are defined in a previous loop.
-       continue
-       ;;
+       $ECHO "\
+#! $SHELL
 
-      -shrext)
-       prev=shrext
-       continue
-       ;;
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
 
-      -static)
-       # The effects of -static are defined in a previous loop.
-       # We used to do the same as -all-static on platforms that
-       # didn't have a PIC flag, but the assumption that the effects
-       # would be equivalent was wrong.  It would break on at least
-       # Digital Unix and AIX.
-       continue
-       ;;
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+sed_quote_subst='$sed_quote_subst'
 
-      -thread-safe)
-       thread_safe=yes
-       continue
-       ;;
+# Be Bourne compatible
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
 
-      -version-info)
-       prev=vinfo
-       continue
-       ;;
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
-      -version-number)
-       prev=vinfo
-       vinfo_number=yes
-       continue
-       ;;
+relink_command=\"$relink_command\"
 
-      -weak)
-        prev=weak
-       continue
-       ;;
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variables:
+  generated_by_libtool_version='$macro_version'
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$ECHO are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    file=\"\$0\""
 
-      -Wc,*)
-       func_stripname '-Wc,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs="$IFS"; IFS=','
-       for flag in $args; do
-         IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-         arg="$arg $wl$func_quote_for_eval_result"
-         compiler_flags="$compiler_flags $func_quote_for_eval_result"
-       done
-       IFS="$save_ifs"
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
+    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
+    $ECHO "\
 
-      -Wl,*)
-       func_stripname '-Wl,' '' "$arg"
-       args=$func_stripname_result
-       arg=
-       save_ifs="$IFS"; IFS=','
-       for flag in $args; do
-         IFS="$save_ifs"
-          func_quote_for_eval "$flag"
-         arg="$arg $wl$func_quote_for_eval_result"
-         compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
-         linker_flags="$linker_flags $func_quote_for_eval_result"
-       done
-       IFS="$save_ifs"
-       func_stripname ' ' '' "$arg"
-       arg=$func_stripname_result
-       ;;
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+    ECHO=\"$qECHO\"
+  fi
 
-      -Xcompiler)
-       prev=xcompiler
-       continue
-       ;;
+# Very basic option parsing. These options are (a) specific to
+# the libtool wrapper, (b) are identical between the wrapper
+# /script/ and the wrapper /executable/ which is used only on
+# windows platforms, and (c) all begin with the string "--lt-"
+# (application programs are unlikely to have options which match
+# this pattern).
+#
+# There are only two supported options: --lt-debug and
+# --lt-dump-script. There is, deliberately, no --lt-help.
+#
+# The first argument to this parsing function should be the
+# script's $0 value, followed by "$@".
+lt_option_debug=
+func_parse_lt_options ()
+{
+  lt_script_arg0=\$0
+  shift
+  for lt_opt
+  do
+    case \"\$lt_opt\" in
+    --lt-debug) lt_option_debug=1 ;;
+    --lt-dump-script)
+        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
+        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
+        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
+        cat \"\$lt_dump_D/\$lt_dump_F\"
+        exit 0
+      ;;
+    --lt-*)
+        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
+        exit 1
+      ;;
+    esac
+  done
 
-      -Xlinker)
-       prev=xlinker
-       continue
-       ;;
+  # Print the debug banner immediately:
+  if test -n \"\$lt_option_debug\"; then
+    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
+  fi
+}
 
-      -XCClinker)
-       prev=xcclinker
-       continue
-       ;;
+# Used when --lt-debug. Prints its arguments to stdout
+# (redirection is the responsibility of the caller)
+func_lt_dump_args ()
+{
+  lt_dump_args_N=1;
+  for lt_arg
+  do
+    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
+    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
+  done
+}
 
-      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
-      # -r[0-9][0-9]* specifies the processor on the SGI compiler
-      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
-      # +DA*, +DD* enable 64-bit mode on the HP compiler
-      # -q* pass through compiler args for the IBM compiler
-      # -m*, -t[45]*, -txscale* pass through architecture-specific
-      # compiler args for GCC
-      # @file GCC response files
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-      -t[45]*|-txscale*|@*)
-        func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-        compile_command="$compile_command $arg"
-        finalize_command="$finalize_command $arg"
-        compiler_flags="$compiler_flags $arg"
-        continue
-        ;;
+# Core function for launching the target application
+func_exec_program_core ()
+{
+"
+  case $host in
+  # Backslashes separate directories on plain windows
+  *-*-mingw | *-*-os2* | *-cegcc*)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+    ;;
 
-      # Some other compiler flag.
-      -* | +*)
-        func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-       ;;
+  *)
+    $ECHO "\
+      if test -n \"\$lt_option_debug\"; then
+        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
+        func_lt_dump_args \${1+\"\$@\"} 1>&2
+      fi
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+    ;;
+  esac
+  $ECHO "\
+      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
+      exit 1
+}
 
-      *.$objext)
-       # A standard object.
-       objs="$objs $arg"
-       ;;
+# A function to encapsulate launching the target application
+# Strips options in the --lt-* namespace from \$@ and
+# launches target application with the remaining arguments.
+func_exec_program ()
+{
+  case \" \$* \" in
+  *\\ --lt-*)
+    for lt_wr_arg
+    do
+      case \$lt_wr_arg in
+      --lt-*) ;;
+      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
+      esac
+      shift
+    done ;;
+  esac
+  func_exec_program_core \${1+\"\$@\"}
+}
 
-      *.lo)
-       # A libtool-controlled object.
+  # Parse options
+  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
 
-       # Check to see that this really is a libtool object.
-       if func_lalib_unsafe_p "$arg"; then
-         pic_object=
-         non_pic_object=
+  # Find the directory that this script lives in.
+  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
 
-         # Read the .lo file
-         func_source "$arg"
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
 
-         if test -z "$pic_object" ||
-            test -z "$non_pic_object" ||
-            test "$pic_object" = none &&
-            test "$non_pic_object" = none; then
-           func_fatal_error "cannot find name of object for \`$arg'"
-         fi
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
 
-         # Extract subdirectory from the argument.
-         func_dirname "$arg" "/" ""
-         xdir="$func_dirname_result"
+    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
+  done
 
-         if test "$pic_object" != none; then
-           # Prepend the subdirectory the object is found in.
-           pic_object="$xdir$pic_object"
+  # Usually 'no', except on cygwin/mingw when embedded into
+  # the cwrapper.
+  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
+  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
+    # special case for '.'
+    if test \"\$thisdir\" = \".\"; then
+      thisdir=\`pwd\`
+    fi
+    # remove .libs from thisdir
+    case \"\$thisdir\" in
+    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
+    $objdir )   thisdir=. ;;
+    esac
+  fi
 
-           if test "$prev" = dlfiles; then
-             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
-               dlfiles="$dlfiles $pic_object"
-               prev=
-               continue
-             else
-               # If libtool objects are unsupported, then we need to preload.
-               prev=dlprefiles
-             fi
-           fi
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
 
-           # CHECK ME:  I think I busted this.  -Ossama
-           if test "$prev" = dlprefiles; then
-             # Preload the old-style object.
-             dlprefiles="$dlprefiles $pic_object"
-             prev=
-           fi
+       if test "$fast_install" = yes; then
+         $ECHO "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
 
-           # A PIC object.
-           libobjs="$libobjs $pic_object"
-           arg="$pic_object"
-         fi
+  if test ! -f \"\$progdir/\$program\" ||
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
 
-         # Non-PIC object.
-         if test "$non_pic_object" != none; then
-           # Prepend the subdirectory the object is found in.
-           non_pic_object="$xdir$non_pic_object"
+    file=\"\$\$-\$program\"
 
-           # A standard non-PIC object
-           non_pic_objects="$non_pic_objects $non_pic_object"
-           if test -z "$pic_object" || test "$pic_object" = none ; then
-             arg="$non_pic_object"
-           fi
-         else
-           # If the PIC object exists, use it instead.
-           # $xdir was prepended to $pic_object above.
-           non_pic_object="$pic_object"
-           non_pic_objects="$non_pic_objects $non_pic_object"
-         fi
-       else
-         # Only an error if not doing a dry-run.
-         if $opt_dry_run; then
-           # Extract subdirectory from the argument.
-           func_dirname "$arg" "/" ""
-           xdir="$func_dirname_result"
+    if test ! -d \"\$progdir\"; then
+      $MKDIR \"\$progdir\"
+    else
+      $RM \"\$progdir/\$file\"
+    fi"
 
-           pic_object=`$ECHO "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
-           non_pic_object=`$ECHO "X${xdir}${arg}" | $Xsed -e "$lo2o"`
-           libobjs="$libobjs $pic_object"
-           non_pic_objects="$non_pic_objects $non_pic_object"
-         else
-           func_fatal_error "\`$arg' is not a valid libtool object"
-         fi
+         $ECHO "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+       $ECHO \"\$relink_command_output\" >&2
+       $RM \"\$progdir/\$file\"
+       exit 1
+      fi
+    fi
+
+    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $RM \"\$progdir/\$program\";
+      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $RM \"\$progdir/\$file\"
+  fi"
+       else
+         $ECHO "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
        fi
-       ;;
 
-      *.$libext)
-       # An archive.
-       deplibs="$deplibs $arg"
-       old_deplibs="$old_deplibs $arg"
-       continue
-       ;;
+       $ECHO "\
 
-      *.la)
-       # A libtool-controlled library.
+  if test -f \"\$progdir/\$program\"; then"
 
-       if test "$prev" = dlfiles; then
-         # This library was specified with -dlopen.
-         dlfiles="$dlfiles $arg"
-         prev=
-       elif test "$prev" = dlprefiles; then
-         # The library was specified with -dlpreopen.
-         dlprefiles="$dlprefiles $arg"
-         prev=
-       else
-         deplibs="$deplibs $arg"
+       # fixup the dll searchpath if we need to.
+       #
+       # Fix the DLL searchpath if we need to.  Do this before prepending
+       # to shlibpath, because on Windows, both are PATH and uninstalled
+       # libraries must come first.
+       if test -n "$dllsearchpath"; then
+         $ECHO "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
        fi
-       continue
-       ;;
 
-      # Some other compiler argument.
-      *)
-       # Unknown arguments in both finalize_command and compile_command need
-       # to be aesthetically quoted because they are evaled later.
-       func_quote_for_eval "$arg"
-       arg="$func_quote_for_eval_result"
-       ;;
-      esac # arg
+       # Export our shlibpath_var if we have one.
+       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+         $ECHO "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
 
-      # Now actually substitute the argument into the commands.
-      if test -n "$arg"; then
-       compile_command="$compile_command $arg"
-       finalize_command="$finalize_command $arg"
-      fi
-    done # argument parsing loop
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
 
-    test -n "$prev" && \
-      func_fatal_help "the \`$prevarg' option requires an argument"
+    export $shlibpath_var
+"
+       fi
 
-    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
-      eval arg=\"$export_dynamic_flag_spec\"
-      compile_command="$compile_command $arg"
-      finalize_command="$finalize_command $arg"
+       $ECHO "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+      func_exec_program \${1+\"\$@\"}
     fi
+  else
+    # The program doesn't exist.
+    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
+    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit 1
+  fi
+fi\
+"
+}
 
-    oldlibs=
-    # calculate the name of the file, without its directory
-    func_basename "$output"
-    outputname="$func_basename_result"
-    libobjs_save="$libobjs"
 
-    if test -n "$shlibpath_var"; then
-      # get the directories listed in $shlibpath_var
-      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
-    else
-      shlib_search_path=
-    fi
-    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
-    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+# func_emit_cwrapperexe_src
+# emit the source code for a wrapper executable on stdout
+# Must ONLY be called from within func_mode_link because
+# it depends on a number of variable set therein.
+func_emit_cwrapperexe_src ()
+{
+       cat <<EOF
 
-    func_dirname "$output" "/" ""
-    output_objdir="$func_dirname_result$objdir"
-    # Create the object directory.
-    func_mkdir_p "$output_objdir"
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
 
-    # Determine the type of output
-    case $output in
-    "")
-      func_fatal_help "you must specify an output file"
-      ;;
-    *.$libext) linkmode=oldlib ;;
-    *.lo | *.$objext) linkmode=obj ;;
-    *.la) linkmode=lib ;;
-    *) linkmode=prog ;; # Anything else should be a program.
-    esac
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
 
-    specialdeplibs=
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+*/
+EOF
+           cat <<"EOF"
+#ifdef _MSC_VER
+# define _CRT_SECURE_NO_DEPRECATE 1
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef _MSC_VER
+# include <direct.h>
+# include <process.h>
+# include <io.h>
+#else
+# include <unistd.h>
+# include <stdint.h>
+# ifdef __CYGWIN__
+#  include <io.h>
+# endif
+#endif
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/stat.h>
 
-    libs=
-    # Find all interdependent deplibs by searching for libraries
-    # that are linked more than once (e.g. -la -lb -la)
-    for deplib in $deplibs; do
-      if $opt_duplicate_deps ; then
-       case "$libs " in
-       *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-       esac
-      fi
-      libs="$libs $deplib"
-    done
+/* declarations of non-ANSI functions */
+#if defined(__MINGW32__)
+# ifdef __STRICT_ANSI__
+int _putenv (const char *);
+# endif
+#elif defined(__CYGWIN__)
+# ifdef __STRICT_ANSI__
+char *realpath (const char *, char *);
+int putenv (char *);
+int setenv (const char *, const char *, int);
+# endif
+/* #elif defined (other platforms) ... */
+#endif
 
-    if test "$linkmode" = lib; then
-      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+/* portability defines, excluding path handling macros */
+#if defined(_MSC_VER)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+# define S_IXUSR _S_IEXEC
+# ifndef _INTPTR_T_DEFINED
+#  define _INTPTR_T_DEFINED
+#  define intptr_t int
+# endif
+#elif defined(__MINGW32__)
+# define setmode _setmode
+# define stat    _stat
+# define chmod   _chmod
+# define getcwd  _getcwd
+# define putenv  _putenv
+#elif defined(__CYGWIN__)
+# define HAVE_SETENV
+# define FOPEN_WB "wb"
+/* #elif defined (other platforms) ... */
+#endif
 
-      # Compute libraries that are listed more than once in $predeps
-      # $postdeps and mark them as special (i.e., whose duplicates are
-      # not to be eliminated).
-      pre_post_deps=
-      if $opt_duplicate_compiler_generated_deps; then
-       for pre_post_dep in $predeps $postdeps; do
-         case "$pre_post_deps " in
-         *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
-         esac
-         pre_post_deps="$pre_post_deps $pre_post_dep"
-       done
-      fi
-      pre_post_deps=
-    fi
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
 
-    deplibs=
-    newdependency_libs=
-    newlib_search_path=
-    need_relink=no # whether we're linking any uninstalled libtool libraries
-    notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
+#ifndef S_IXOTH
+# define S_IXOTH 0
+#endif
+#ifndef S_IXGRP
+# define S_IXGRP 0
+#endif
 
-    case $linkmode in
-    lib)
-       passes="conv dlpreopen link"
-       for file in $dlfiles $dlprefiles; do
-         case $file in
-         *.la) ;;
-         *)
-           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
-           ;;
-         esac
-       done
-       ;;
-    prog)
-       compile_deplibs=
-       finalize_deplibs=
-       alldeplibs=no
-       newdlfiles=
-       newdlprefiles=
-       passes="conv scan dlopen dlpreopen link"
-       ;;
-    *)  passes="conv"
-       ;;
-    esac
+/* path handling portability macros */
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
 
-    for pass in $passes; do
-      # The preopen pass in lib mode reverses $deplibs; put it back here
-      # so that -L comes before libs that need it for instance...
-      if test "$linkmode,$pass" = "lib,link"; then
-       ## FIXME: Find the place where the list is rebuilt in the wrong
-       ##        order, and fix it there properly
-        tmp_deplibs=
-       for deplib in $deplibs; do
-         tmp_deplibs="$deplib $tmp_deplibs"
-       done
-       deplibs="$tmp_deplibs"
-      fi
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# define FOPEN_WB "wb"
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
 
-      if test "$linkmode,$pass" = "lib,link" ||
-        test "$linkmode,$pass" = "prog,scan"; then
-       libs="$deplibs"
-       deplibs=
-      fi
-      if test "$linkmode" = prog; then
-       case $pass in
-       dlopen) libs="$dlfiles" ;;
-       dlpreopen) libs="$dlprefiles" ;;
-       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
-       esac
-      fi
-      if test "$linkmode,$pass" = "lib,dlpreopen"; then
-       # Collect and forward deplibs of preopened libtool libs
-       for lib in $dlprefiles; do
-         # Ignore non-libtool-libs
-         dependency_libs=
-         case $lib in
-         *.la) func_source "$lib" ;;
-         esac
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
 
-         # Collect preopened libtool deplibs, except any this library
-         # has declared as weak libs
-         for deplib in $dependency_libs; do
-            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
-           case " $weak_libs " in
-           *" $deplib_base "*) ;;
-           *) deplibs="$deplibs $deplib" ;;
-           esac
-         done
-       done
-       libs="$dlprefiles"
-      fi
-      if test "$pass" = dlopen; then
-       # Collect dlpreopened libraries
-       save_deplibs="$deplibs"
-       deplibs=
-      fi
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
 
-      for deplib in $libs; do
-       lib=
-       found=no
-       case $deplib in
-       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
-         if test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           compiler_flags="$compiler_flags $deplib"
-           if test "$linkmode" = lib ; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-               esac
-           fi
-         fi
-         continue
-         ;;
-       -l*)
-         if test "$linkmode" != lib && test "$linkmode" != prog; then
-           func_warning "\`-l' is ignored for archives/objects"
-           continue
-         fi
-         func_stripname '-l' '' "$deplib"
-         name=$func_stripname_result
-         for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
-           for search_ext in .la $std_shrext .so .a; do
-             # Search the libtool library
-             lib="$searchdir/lib${name}${search_ext}"
-             if test -f "$lib"; then
-               if test "$search_ext" = ".la"; then
-                 found=yes
-               else
-                 found=no
-               fi
-               break 2
-             fi
-           done
-         done
-         if test "$found" != yes; then
-           # deplib doesn't seem to be a libtool library
-           if test "$linkmode,$pass" = "prog,link"; then
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
+#ifndef FOPEN_WB
+# define FOPEN_WB "w"
+#endif
+#ifndef _O_BINARY
+# define _O_BINARY 0
+#endif
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+#if defined(LT_DEBUGWRAPPER)
+static int lt_debug = 1;
+#else
+static int lt_debug = 0;
+#endif
+
+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
+
+void *xmalloc (size_t num);
+char *xstrdup (const char *string);
+const char *base_name (const char *name);
+char *find_executable (const char *wrapper);
+char *chase_symlinks (const char *pathspec);
+int make_executable (const char *path);
+int check_executable (const char *path);
+char *strendzap (char *str, const char *pat);
+void lt_debugprintf (const char *file, int line, const char *fmt, ...);
+void lt_fatal (const char *file, int line, const char *message, ...);
+static const char *nonnull (const char *s);
+static const char *nonempty (const char *s);
+void lt_setenv (const char *name, const char *value);
+char *lt_extend_str (const char *orig_value, const char *add, int to_end);
+void lt_update_exe_path (const char *name, const char *value);
+void lt_update_lib_path (const char *name, const char *value);
+char **prepare_spawn (char **argv);
+void lt_dump_script (FILE *f);
+EOF
+
+           cat <<EOF
+volatile const char * MAGIC_EXE = "$magic_exe";
+const char * LIB_PATH_VARNAME = "$shlibpath_var";
+EOF
+
+           if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+              func_to_host_path "$temp_rpath"
+             cat <<EOF
+const char * LIB_PATH_VALUE   = "$func_to_host_path_result";
+EOF
            else
-             deplibs="$deplib $deplibs"
-             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-           fi
-           continue
-         else # deplib is a libtool library
-           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
-           # We need to do some special things here, and not later.
-           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-             case " $predeps $postdeps " in
-             *" $deplib "*)
-               if func_lalib_p "$lib"; then
-                 library_names=
-                 old_library=
-                 func_source "$lib"
-                 for l in $old_library $library_names; do
-                   ll="$l"
-                 done
-                 if test "X$ll" = "X$old_library" ; then # only static version available
-                   found=no
-                   func_dirname "$lib" "" "."
-                   ladir="$func_dirname_result"
-                   lib=$ladir/$old_library
-                   if test "$linkmode,$pass" = "prog,link"; then
-                     compile_deplibs="$deplib $compile_deplibs"
-                     finalize_deplibs="$deplib $finalize_deplibs"
-                   else
-                     deplibs="$deplib $deplibs"
-                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
-                   fi
-                   continue
-                 fi
-               fi
-               ;;
-             *) ;;
-             esac
-           fi
-         fi
-         ;; # -l
-       *.ltframework)
-         if test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$deplib $compile_deplibs"
-           finalize_deplibs="$deplib $finalize_deplibs"
-         else
-           deplibs="$deplib $deplibs"
-           if test "$linkmode" = lib ; then
-               case "$new_inherited_linker_flags " in
-                   *" $deplib "*) ;;
-                   * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
-               esac
+             cat <<"EOF"
+const char * LIB_PATH_VALUE   = "";
+EOF
            fi
-         fi
-         continue
-         ;;
-       -L*)
-         case $linkmode in
-         lib)
-           deplibs="$deplib $deplibs"
-           test "$pass" = conv && continue
-           newdependency_libs="$deplib $newdependency_libs"
-           func_stripname '-L' '' "$deplib"
-           newlib_search_path="$newlib_search_path $func_stripname_result"
-           ;;
-         prog)
-           if test "$pass" = conv; then
-             deplibs="$deplib $deplibs"
-             continue
+
+           if test -n "$dllsearchpath"; then
+              func_to_host_path "$dllsearchpath:"
+             cat <<EOF
+const char * EXE_PATH_VARNAME = "PATH";
+const char * EXE_PATH_VALUE   = "$func_to_host_path_result";
+EOF
+           else
+             cat <<"EOF"
+const char * EXE_PATH_VARNAME = "";
+const char * EXE_PATH_VALUE   = "";
+EOF
            fi
-           if test "$pass" = scan; then
-             deplibs="$deplib $deplibs"
+
+           if test "$fast_install" = yes; then
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
+EOF
            else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
+             cat <<EOF
+const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
+EOF
            fi
-           func_stripname '-L' '' "$deplib"
-           newlib_search_path="$newlib_search_path $func_stripname_result"
-           ;;
-         *)
-           func_warning "\`-L' is ignored for archives/objects"
+
+
+           cat <<"EOF"
+
+#define LTWRAPPER_OPTION_PREFIX         "--lt-"
+
+static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
+static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
+static const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int  newargc;
+  char *tmp_pathspec;
+  char *actual_cwrapper_path;
+  char *actual_cwrapper_name;
+  char *target_name;
+  char *lt_argv_zero;
+  intptr_t rval = 127;
+
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  newargz = XMALLOC (char *, argc + 1);
+
+  /* very simple arg parsing; don't want to rely on getopt
+   * also, copy all non cwrapper options to newargz, except
+   * argz[0], which is handled differently
+   */
+  newargc=0;
+  for (i = 1; i < argc; i++)
+    {
+      if (strcmp (argv[i], dumpscript_opt) == 0)
+       {
+EOF
+           case "$host" in
+             *mingw* | *cygwin* )
+               # make stdout use "unix" line endings
+               echo "          setmode(1,_O_BINARY);"
+               ;;
+             esac
+
+           cat <<"EOF"
+         lt_dump_script (stdout);
+         return 0;
+       }
+      if (strcmp (argv[i], debug_opt) == 0)
+       {
+          lt_debug = 1;
+          continue;
+       }
+      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
+        {
+          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
+             namespace, but it is not one of the ones we know about and
+             have already dealt with, above (inluding dump-script), then
+             report an error. Otherwise, targets might begin to believe
+             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
+             namespace. The first time any user complains about this, we'll
+             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
+             or a configure.ac-settable value.
+           */
+          lt_fatal (__FILE__, __LINE__,
+                   "unrecognized %s option: '%s'",
+                    ltwrapper_option_prefix, argv[i]);
+        }
+      /* otherwise ... */
+      newargz[++newargc] = xstrdup (argv[i]);
+    }
+  newargz[++newargc] = NULL;
+
+EOF
+           cat <<EOF
+  /* The GNU banner must be the first non-error debug message */
+  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
+EOF
+           cat <<"EOF"
+  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
+
+  tmp_pathspec = find_executable (argv[0]);
+  if (tmp_pathspec == NULL)
+    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (before symlink chase) at: %s\n",
+                 tmp_pathspec);
+
+  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
+  lt_debugprintf (__FILE__, __LINE__,
+                  "(main) found exe (after symlink chase) at: %s\n",
+                 actual_cwrapper_path);
+  XFREE (tmp_pathspec);
+
+  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
+  strendzap (actual_cwrapper_path, actual_cwrapper_name);
+
+  /* wrapper name transforms */
+  strendzap (actual_cwrapper_name, ".exe");
+  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
+  XFREE (actual_cwrapper_name);
+  actual_cwrapper_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  /* target_name transforms -- use actual target program name; might have lt- prefix */
+  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
+  strendzap (target_name, ".exe");
+  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
+  XFREE (target_name);
+  target_name = tmp_pathspec;
+  tmp_pathspec = 0;
+
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(main) libtool target name: %s\n",
+                 target_name);
+EOF
+
+           cat <<EOF
+  newargz[0] =
+    XMALLOC (char, (strlen (actual_cwrapper_path) +
+                   strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
+  strcpy (newargz[0], actual_cwrapper_path);
+  strcat (newargz[0], "$objdir");
+  strcat (newargz[0], "/");
+EOF
+
+           cat <<"EOF"
+  /* stop here, and copy so we don't have to do this twice */
+  tmp_pathspec = xstrdup (newargz[0]);
+
+  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
+  strcat (newargz[0], actual_cwrapper_name);
+
+  /* DO want the lt- prefix here if it exists, so use target_name */
+  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
+  XFREE (tmp_pathspec);
+  tmp_pathspec = NULL;
+EOF
+
+           case $host_os in
+             mingw*)
+           cat <<"EOF"
+  {
+    char* p;
+    while ((p = strchr (newargz[0], '\\')) != NULL)
+      {
+       *p = '/';
+      }
+    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
+      {
+       *p = '/';
+      }
+  }
+EOF
            ;;
-         esac # linkmode
-         continue
-         ;; # -L
-       -R*)
-         if test "$pass" = link; then
-           func_stripname '-R' '' "$deplib"
-           dir=$func_stripname_result
-           # Make sure the xrpath contains only unique directories.
-           case "$xrpath " in
-           *" $dir "*) ;;
-           *) xrpath="$xrpath $dir" ;;
            esac
-         fi
-         deplibs="$deplib $deplibs"
-         continue
-         ;;
-       *.la) lib="$deplib" ;;
-       *.$libext)
-         if test "$pass" = conv; then
-           deplibs="$deplib $deplibs"
-           continue
-         fi
-         case $linkmode in
-         lib)
-           # Linking convenience modules into shared libraries is allowed,
-           # but linking other static libraries is non-portable.
-           case " $dlpreconveniencelibs " in
-           *" $lib "*) ;;
-           *)
-             valid_a_lib=no
-             case $deplibs_check_method in
-               match_pattern*)
-                 set dummy $deplibs_check_method; shift
-                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-                 if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
-                   | $EGREP "$match_pattern_regex" > /dev/null; then
-                   valid_a_lib=yes
-                 fi
+
+           cat <<"EOF"
+  XFREE (target_name);
+  XFREE (actual_cwrapper_path);
+  XFREE (actual_cwrapper_name);
+
+  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
+  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
+  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
+     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
+     because on Windows, both *_VARNAMEs are PATH but uninstalled
+     libraries must come first. */
+  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
+  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
+
+  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
+                 nonnull (lt_argv_zero));
+  for (i = 0; i < newargc; i++)
+    {
+      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
+                     i, nonnull (newargz[i]));
+    }
+
+EOF
+
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+  /* execv doesn't actually work on mingw as expected on unix */
+  newargz = prepare_spawn (newargz);
+  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
+  if (rval == -1)
+    {
+      /* failed to start process */
+      lt_debugprintf (__FILE__, __LINE__,
+                     "(main) failed to launch target \"%s\": %s\n",
+                     lt_argv_zero, nonnull (strerror (errno)));
+      return 127;
+    }
+  return rval;
+EOF
                ;;
-               pass_all)
-                 valid_a_lib=yes
+             *)
+               cat <<"EOF"
+  execv (lt_argv_zero, newargz);
+  return rval; /* =127, but avoids unused variable warning */
+EOF
                ;;
-             esac
-             if test "$valid_a_lib" != yes; then
-               $ECHO
-               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
-               $ECHO "*** I have the capability to make that library automatically link in when"
-               $ECHO "*** you link to this library.  But I can only do this if you have a"
-               $ECHO "*** shared version of the library, which you do not appear to have"
-               $ECHO "*** because the file extensions .$libext of this argument makes me believe"
-               $ECHO "*** that it is just a static archive that I should not use here."
-             else
-               $ECHO
-               $ECHO "*** Warning: Linking the shared library $output against the"
-               $ECHO "*** static library $deplib is not portable!"
-               deplibs="$deplib $deplibs"
-             fi
-             ;;
            esac
-           continue
-           ;;
-         prog)
-           if test "$pass" != link; then
-             deplibs="$deplib $deplibs"
-           else
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           fi
-           continue
-           ;;
-         esac # linkmode
-         ;; # *.$libext
-       *.lo | *.$objext)
-         if test "$pass" = conv; then
-           deplibs="$deplib $deplibs"
-         elif test "$linkmode" = prog; then
-           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
-             # If there is no dlopen support or we're linking statically,
-             # we need to preload.
-             newdlprefiles="$newdlprefiles $deplib"
-             compile_deplibs="$deplib $compile_deplibs"
-             finalize_deplibs="$deplib $finalize_deplibs"
-           else
-             newdlfiles="$newdlfiles $deplib"
-           fi
-         fi
-         continue
-         ;;
-       %DEPLIBS%)
-         alldeplibs=yes
-         continue
-         ;;
-       esac # case $deplib
 
-       if test "$found" = yes || test -f "$lib"; then :
-       else
-         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
-       fi
+           cat <<"EOF"
+}
 
-       # Check to see that this really is a libtool archive.
-       func_lalib_unsafe_p "$lib" \
-         || func_fatal_error "\`$lib' is not a valid libtool archive"
+void *
+xmalloc (size_t num)
+{
+  void *p = (void *) malloc (num);
+  if (!p)
+    lt_fatal (__FILE__, __LINE__, "memory exhausted");
 
-       func_dirname "$lib" "" "."
-       ladir="$func_dirname_result"
+  return p;
+}
 
-       dlname=
-       dlopen=
-       dlpreopen=
-       libdir=
-       library_names=
-       old_library=
-       inherited_linker_flags=
-       # If the library was installed with an old release of libtool,
-       # it will not redefine variables installed, or shouldnotlink
-       installed=yes
-       shouldnotlink=no
-       avoidtemprpath=
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
+                         string) : NULL;
+}
 
+const char *
+base_name (const char *name)
+{
+  const char *base;
 
-       # Read the .la file
-       func_source "$lib"
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
+    name += 2;
+#endif
 
-       # Convert "-framework foo" to "foo.ltframework"
-       if test -n "$inherited_linker_flags"; then
-         tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
-         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
-           case " $new_inherited_linker_flags " in
-             *" $tmp_inherited_linker_flag "*) ;;
-             *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
-           esac
-         done
-       fi
-       dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-       if test "$linkmode,$pass" = "prog,link"; then
-         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
-         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
-       else
-         compiler_flags="$compiler_flags $inherited_linker_flags"
-       fi
-       if test "$linkmode,$pass" = "lib,link" ||
-          test "$linkmode,$pass" = "prog,scan" ||
-          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
-         test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
-         test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
-       fi
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
 
-       if test "$pass" = conv; then
-         # Only check for convenience libraries
-         deplibs="$lib $deplibs"
-         if test -z "$libdir"; then
-           if test -z "$old_library"; then
-             func_fatal_error "cannot find name of link library for \`$lib'"
-           fi
-           # It is a libtool convenience library, so add in its objects.
-           convenience="$convenience $ladir/$objdir/$old_library"
-           old_convenience="$old_convenience $ladir/$objdir/$old_library"
-         elif test "$linkmode" != prog && test "$linkmode" != lib; then
-           func_fatal_error "\`$lib' is not a convenience library"
-         fi
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           deplibs="$deplib $deplibs"
-           if $opt_duplicate_deps ; then
-             case "$tmp_libs " in
-             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-             esac
-           fi
-           tmp_libs="$tmp_libs $deplib"
-         done
-         continue
-       fi # $pass = conv
+int
+check_executable (const char *path)
+{
+  struct stat st;
 
+  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
 
-       # Get the name of the library we link against.
-       linklib=
-       for l in $old_library $library_names; do
-         linklib="$l"
-       done
-       if test -z "$linklib"; then
-         func_fatal_error "cannot find name of link library for \`$lib'"
-       fi
+  if ((stat (path, &st) >= 0)
+      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+    return 1;
+  else
+    return 0;
+}
 
-       # This library was specified with -dlopen.
-       if test "$pass" = dlopen; then
-         if test -z "$libdir"; then
-           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
-         fi
-         if test -z "$dlname" ||
-            test "$dlopen_support" != yes ||
-            test "$build_libtool_libs" = no; then
-           # If there is no dlname, no dlopen support or we're linking
-           # statically, we need to preload.  We also need to preload any
-           # dependent libraries so libltdl's deplib preloader doesn't
-           # bomb out in the load deplibs phase.
-           dlprefiles="$dlprefiles $lib $dependency_libs"
-         else
-           newdlfiles="$newdlfiles $lib"
-         fi
-         continue
-       fi # $pass = dlopen
+int
+make_executable (const char *path)
+{
+  int rval = 0;
+  struct stat st;
 
-       # We need an absolute path.
-       case $ladir in
-       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
-       *)
-         abs_ladir=`cd "$ladir" && pwd`
-         if test -z "$abs_ladir"; then
-           func_warning "cannot determine absolute directory name of \`$ladir'"
-           func_warning "passing it literally to the linker, although it might fail"
-           abs_ladir="$ladir"
-         fi
-         ;;
-       esac
-       func_basename "$lib"
-       laname="$func_basename_result"
+  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
+                  nonempty (path));
+  if ((!path) || (!*path))
+    return 0;
 
-       # Find the relevant object directory and library name.
-       if test "X$installed" = Xyes; then
-         if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           func_warning "library \`$lib' was moved."
-           dir="$ladir"
-           absdir="$abs_ladir"
-           libdir="$abs_ladir"
-         else
-           dir="$libdir"
-           absdir="$libdir"
-         fi
-         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
-       else
-         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
-           dir="$ladir"
-           absdir="$abs_ladir"
-           # Remove this search path later
-           notinst_path="$notinst_path $abs_ladir"
-         else
-           dir="$ladir/$objdir"
-           absdir="$abs_ladir/$objdir"
-           # Remove this search path later
-           notinst_path="$notinst_path $abs_ladir"
-         fi
-       fi # $installed = yes
-       func_stripname 'lib' '.la' "$laname"
-       name=$func_stripname_result
+  if (stat (path, &st) >= 0)
+    {
+      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
+    }
+  return rval;
+}
 
-       # This library was specified with -dlpreopen.
-       if test "$pass" = dlpreopen; then
-         if test -z "$libdir" && test "$linkmode" = prog; then
-           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
-         fi
-         # Prefer using a static library (so that no silly _DYNAMIC symbols
-         # are required to link).
-         if test -n "$old_library"; then
-           newdlprefiles="$newdlprefiles $dir/$old_library"
-           # Keep a list of preopened convenience libraries to check
-           # that they are being used correctly in the link pass.
-           test -z "$libdir" && \
-               dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
-         # Otherwise, use the dlname, so that lt_dlopen finds it.
-         elif test -n "$dlname"; then
-           newdlprefiles="$newdlprefiles $dir/$dlname"
-         else
-           newdlprefiles="$newdlprefiles $dir/$linklib"
-         fi
-       fi # $pass = dlpreopen
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise
+   Does not chase symlinks, even on platforms that support them.
+*/
+char *
+find_executable (const char *wrapper)
+{
+  int has_slash = 0;
+  const char *p;
+  const char *p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char *concat_name;
 
-       if test -z "$libdir"; then
-         # Link the convenience library
-         if test "$linkmode" = lib; then
-           deplibs="$dir/$old_library $deplibs"
-         elif test "$linkmode,$pass" = "prog,link"; then
-           compile_deplibs="$dir/$old_library $compile_deplibs"
-           finalize_deplibs="$dir/$old_library $finalize_deplibs"
-         else
-           deplibs="$lib $deplibs" # used for prog,scan pass
-         fi
-         continue
-       fi
+  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
+                  nonempty (wrapper));
 
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
 
-       if test "$linkmode" = prog && test "$pass" != link; then
-         newlib_search_path="$newlib_search_path $ladir"
-         deplibs="$lib $deplibs"
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable (concat_name))
+       return concat_name;
+      XFREE (concat_name);
+    }
+  else
+    {
+#endif
+      if (IS_DIR_SEPARATOR (wrapper[0]))
+       {
+         concat_name = xstrdup (wrapper);
+         if (check_executable (concat_name))
+           return concat_name;
+         XFREE (concat_name);
+       }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+    }
+#endif
 
-         linkalldeplibs=no
-         if test "$link_all_deplibs" != no || test -z "$library_names" ||
-            test "$build_libtool_libs" = no; then
-           linkalldeplibs=yes
-         fi
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+      {
+       has_slash = 1;
+       break;
+      }
+  if (!has_slash)
+    {
+      /* no slashes; search PATH */
+      const char *path = getenv ("PATH");
+      if (path != NULL)
+       {
+         for (p = path; *p; p = p_next)
+           {
+             const char *q;
+             size_t p_len;
+             for (q = p; *q; q++)
+               if (IS_PATH_SEPARATOR (*q))
+                 break;
+             p_len = q - p;
+             p_next = (*q == '\0' ? q : q + 1);
+             if (p_len == 0)
+               {
+                 /* empty path: current directory */
+                 if (getcwd (tmp, LT_PATHMAX) == NULL)
+                   lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+                              nonnull (strerror (errno)));
+                 tmp_len = strlen (tmp);
+                 concat_name =
+                   XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, tmp, tmp_len);
+                 concat_name[tmp_len] = '/';
+                 strcpy (concat_name + tmp_len + 1, wrapper);
+               }
+             else
+               {
+                 concat_name =
+                   XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
+                 memcpy (concat_name, p, p_len);
+                 concat_name[p_len] = '/';
+                 strcpy (concat_name + p_len + 1, wrapper);
+               }
+             if (check_executable (concat_name))
+               return concat_name;
+             XFREE (concat_name);
+           }
+       }
+      /* not found in PATH; assume curdir */
+    }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
+              nonnull (strerror (errno)));
+  tmp_len = strlen (tmp);
+  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
 
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           case $deplib in
-           -L*) func_stripname '-L' '' "$deplib"
-                newlib_search_path="$newlib_search_path $func_stripname_result"
-                ;;
-           esac
-           # Need to link against all dependency_libs?
-           if test "$linkalldeplibs" = yes; then
-             deplibs="$deplib $deplibs"
-           else
-             # Need to hardcode shared library paths
-             # or/and link against static libraries
-             newdependency_libs="$deplib $newdependency_libs"
-           fi
-           if $opt_duplicate_deps ; then
-             case "$tmp_libs " in
-             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-             esac
-           fi
-           tmp_libs="$tmp_libs $deplib"
-         done # for deplib
-         continue
-       fi # $linkmode = prog...
+  if (check_executable (concat_name))
+    return concat_name;
+  XFREE (concat_name);
+  return NULL;
+}
 
-       if test "$linkmode,$pass" = "prog,link"; then
-         if test -n "$library_names" &&
-            { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
-           # We need to hardcode the library path
-           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
-             # Make sure the rpath contains only unique directories.
-             case "$temp_rpath " in
-             *"$absdir:"*) ;;
-             *) temp_rpath="$temp_rpath$absdir:" ;;
-             esac
-           fi
+char *
+chase_symlinks (const char *pathspec)
+{
+#ifndef S_ISLNK
+  return xstrdup (pathspec);
+#else
+  char buf[LT_PATHMAX];
+  struct stat s;
+  char *tmp_pathspec = xstrdup (pathspec);
+  char *p;
+  int has_symlinks = 0;
+  while (strlen (tmp_pathspec) && !has_symlinks)
+    {
+      lt_debugprintf (__FILE__, __LINE__,
+                     "checking path component for symlinks: %s\n",
+                     tmp_pathspec);
+      if (lstat (tmp_pathspec, &s) == 0)
+       {
+         if (S_ISLNK (s.st_mode) != 0)
+           {
+             has_symlinks = 1;
+             break;
+           }
 
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) compile_rpath="$compile_rpath $absdir"
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) finalize_rpath="$finalize_rpath $libdir"
-             esac
-             ;;
-           esac
-         fi # $linkmode,$pass = prog,link...
+         /* search backwards for last DIR_SEPARATOR */
+         p = tmp_pathspec + strlen (tmp_pathspec) - 1;
+         while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           p--;
+         if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
+           {
+             /* no more DIR_SEPARATORS left */
+             break;
+           }
+         *p = '\0';
+       }
+      else
+       {
+         lt_fatal (__FILE__, __LINE__,
+                   "error accessing file \"%s\": %s",
+                   tmp_pathspec, nonnull (strerror (errno)));
+       }
+    }
+  XFREE (tmp_pathspec);
 
-         if test "$alldeplibs" = yes &&
-            { test "$deplibs_check_method" = pass_all ||
-              { test "$build_libtool_libs" = yes &&
-                test -n "$library_names"; }; }; then
-           # We only need to search for static libraries
-           continue
-         fi
-       fi
+  if (!has_symlinks)
+    {
+      return xstrdup (pathspec);
+    }
 
-       link_static=no # Whether the deplib will be linked statically
-       use_static_libs=$prefer_static_libs
-       if test "$use_static_libs" = built && test "$installed" = yes; then
-         use_static_libs=no
-       fi
-       if test -n "$library_names" &&
-          { test "$use_static_libs" = no || test -z "$old_library"; }; then
-         case $host in
-         *cygwin* | *mingw*)
-             # No point in relinking DLLs because paths are not encoded
-             notinst_deplibs="$notinst_deplibs $lib"
-             need_relink=no
-           ;;
-         *)
-           if test "$installed" = no; then
-             notinst_deplibs="$notinst_deplibs $lib"
-             need_relink=yes
-           fi
-           ;;
-         esac
-         # This is a shared library
+  tmp_pathspec = realpath (pathspec, buf);
+  if (tmp_pathspec == 0)
+    {
+      lt_fatal (__FILE__, __LINE__,
+               "could not follow symlinks for %s", pathspec);
+    }
+  return xstrdup (tmp_pathspec);
+#endif
+}
 
-         # Warn about portability, can't link against -module's on some
-         # systems (darwin).  Don't bleat about dlopened modules though!
-         dlopenmodule=""
-         for dlpremoduletest in $dlprefiles; do
-           if test "X$dlpremoduletest" = "X$lib"; then
-             dlopenmodule="$dlpremoduletest"
-             break
-           fi
-         done
-         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
-           $ECHO
-           if test "$linkmode" = prog; then
-             $ECHO "*** Warning: Linking the executable $output against the loadable module"
-           else
-             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
-           fi
-           $ECHO "*** $linklib is not portable!"
-         fi
-         if test "$linkmode" = lib &&
-            test "$hardcode_into_libs" = yes; then
-           # Hardcode the library path.
-           # Skip directories that are in the system default run-time
-           # search path.
-           case " $sys_lib_dlsearch_path " in
-           *" $absdir "*) ;;
-           *)
-             case "$compile_rpath " in
-             *" $absdir "*) ;;
-             *) compile_rpath="$compile_rpath $absdir"
-             esac
-             ;;
-           esac
-           case " $sys_lib_dlsearch_path " in
-           *" $libdir "*) ;;
-           *)
-             case "$finalize_rpath " in
-             *" $libdir "*) ;;
-             *) finalize_rpath="$finalize_rpath $libdir"
-             esac
-             ;;
-           esac
-         fi
+char *
+strendzap (char *str, const char *pat)
+{
+  size_t len, patlen;
 
-         if test -n "$old_archive_from_expsyms_cmds"; then
-           # figure out the soname
-           set dummy $library_names
-           shift
-           realname="$1"
-           shift
-           libname=`eval "\\$ECHO \"$libname_spec\""`
-           # use dlname if we got it. it's perfectly good, no?
-           if test -n "$dlname"; then
-             soname="$dlname"
-           elif test -n "$soname_spec"; then
-             # bleh windows
-             case $host in
-             *cygwin* | mingw*)
-               major=`expr $current - $age`
-               versuffix="-$major"
-               ;;
-             esac
-             eval soname=\"$soname_spec\"
-           else
-             soname="$realname"
-           fi
+  assert (str != NULL);
+  assert (pat != NULL);
 
-           # Make a new name for the extract_expsyms_cmds to use
-           soroot="$soname"
-           func_basename "$soroot"
-           soname="$func_basename_result"
-           func_stripname 'lib' '.dll' "$soname"
-           newlib=libimp-$func_stripname_result.a
+  len = strlen (str);
+  patlen = strlen (pat);
 
-           # If the library has no export list, then create one now
-           if test -f "$output_objdir/$soname-def"; then :
-           else
-             func_echo "extracting exported symbol list from \`$soname'"
-             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
-           fi
+  if (patlen <= len)
+    {
+      str += len - patlen;
+      if (strcmp (str, pat) == 0)
+       *str = '\0';
+    }
+  return str;
+}
 
-           # Create $newlib
-           if test -f "$output_objdir/$newlib"; then :; else
-             func_echo "generating import library for \`$soname'"
-             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
-           fi
-           # make sure the library variables are pointing to the new library
-           dir=$output_objdir
-           linklib=$newlib
-         fi # test -n "$old_archive_from_expsyms_cmds"
+void
+lt_debugprintf (const char *file, int line, const char *fmt, ...)
+{
+  va_list args;
+  if (lt_debug)
+    {
+      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
+      va_start (args, fmt);
+      (void) vfprintf (stderr, fmt, args);
+      va_end (args);
+    }
+}
 
-         if test "$linkmode" = prog || test "$mode" != relink; then
-           add_shlibpath=
-           add_dir=
-           add=
-           lib_linked=yes
-           case $hardcode_action in
-           immediate | unsupported)
-             if test "$hardcode_direct" = no; then
-               add="$dir/$linklib"
-               case $host in
-                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
-                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
-                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
-                   *-*-unixware7*) add_dir="-L$dir" ;;
-                 *-*-darwin* )
-                   # if the lib is a (non-dlopened) module then we can not
-                   # link against it, someone is ignoring the earlier warnings
-                   if /usr/bin/file -L $add 2> /dev/null |
-                        $GREP ": [^:]* bundle" >/dev/null ; then
-                     if test "X$dlopenmodule" != "X$lib"; then
-                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
-                       if test -z "$old_library" ; then
-                         $ECHO
-                         $ECHO "*** And there doesn't seem to be a static archive available"
-                         $ECHO "*** The link will probably fail, sorry"
-                       else
-                         add="$dir/$old_library"
-                       fi
-                     elif test -n "$old_library"; then
-                       add="$dir/$old_library"
-                     fi
-                   fi
-               esac
-             elif test "$hardcode_minus_L" = no; then
-               case $host in
-               *-*-sunos*) add_shlibpath="$dir" ;;
-               esac
-               add_dir="-L$dir"
-               add="-l$name"
-             elif test "$hardcode_shlibpath_var" = no; then
-               add_shlibpath="$dir"
-               add="-l$name"
-             else
-               lib_linked=no
-             fi
-             ;;
-           relink)
-             if test "$hardcode_direct" = yes; then
-               add="$dir/$linklib"
-             elif test "$hardcode_minus_L" = yes; then
-               add_dir="-L$dir"
-               # Try looking first in the location we're being installed to.
-               if test -n "$inst_prefix_dir"; then
-                 case $libdir in
-                   [\\/]*)
-                     add_dir="$add_dir -L$inst_prefix_dir$libdir"
-                     ;;
-                 esac
-               fi
-               add="-l$name"
-             elif test "$hardcode_shlibpath_var" = yes; then
-               add_shlibpath="$dir"
-               add="-l$name"
-             else
-               lib_linked=no
-             fi
-             ;;
-           *) lib_linked=no ;;
-           esac
+static void
+lt_error_core (int exit_status, const char *file,
+              int line, const char *mode,
+              const char *message, va_list ap)
+{
+  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
 
-           if test "$lib_linked" != yes; then
-             func_fatal_configuration "unsupported hardcode properties"
-           fi
+  if (exit_status >= 0)
+    exit (exit_status);
+}
 
-           if test -n "$add_shlibpath"; then
-             case :$compile_shlibpath: in
-             *":$add_shlibpath:"*) ;;
-             *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
-             esac
-           fi
-           if test "$linkmode" = prog; then
-             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
-             test -n "$add" && compile_deplibs="$add $compile_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-             if test "$hardcode_direct" != yes &&
-                test "$hardcode_minus_L" != yes &&
-                test "$hardcode_shlibpath_var" = yes; then
-               case :$finalize_shlibpath: in
-               *":$libdir:"*) ;;
-               *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-               esac
-             fi
-           fi
-         fi
+void
+lt_fatal (const char *file, int line, const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
+  va_end (ap);
+}
 
-         if test "$linkmode" = prog || test "$mode" = relink; then
-           add_shlibpath=
-           add_dir=
-           add=
-           # Finalize command for both is simple: just hardcode it.
-           if test "$hardcode_direct" = yes; then
-             add="$libdir/$linklib"
-           elif test "$hardcode_minus_L" = yes; then
-             add_dir="-L$libdir"
-             add="-l$name"
-           elif test "$hardcode_shlibpath_var" = yes; then
-             case :$finalize_shlibpath: in
-             *":$libdir:"*) ;;
-             *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
-             esac
-             add="-l$name"
-           elif test "$hardcode_automatic" = yes; then
-             if test -n "$inst_prefix_dir" &&
-                test -f "$inst_prefix_dir$libdir/$linklib" ; then
-               add="$inst_prefix_dir$libdir/$linklib"
-             else
-               add="$libdir/$linklib"
-             fi
-           else
-             # We cannot seem to hardcode it, guess we'll fake it.
-             add_dir="-L$libdir"
-             # Try looking first in the location we're being installed to.
-             if test -n "$inst_prefix_dir"; then
-               case $libdir in
-                 [\\/]*)
-                   add_dir="$add_dir -L$inst_prefix_dir$libdir"
-                   ;;
-               esac
-             fi
-             add="-l$name"
-           fi
+static const char *
+nonnull (const char *s)
+{
+  return s ? s : "(null)";
+}
 
-           if test "$linkmode" = prog; then
-             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
-             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
-           else
-             test -n "$add_dir" && deplibs="$add_dir $deplibs"
-             test -n "$add" && deplibs="$add $deplibs"
-           fi
-         fi
-       elif test "$linkmode" = prog; then
-         # Here we assume that one of hardcode_direct or hardcode_minus_L
-         # is not unsupported.  This is valid on all known static and
-         # shared platforms.
-         if test "$hardcode_direct" != unsupported; then
-           test -n "$old_library" && linklib="$old_library"
-           compile_deplibs="$dir/$linklib $compile_deplibs"
-           finalize_deplibs="$dir/$linklib $finalize_deplibs"
-         else
-           compile_deplibs="-l$name -L$dir $compile_deplibs"
-           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
-         fi
-       elif test "$build_libtool_libs" = yes; then
-         # Not a shared library
-         if test "$deplibs_check_method" != pass_all; then
-           # We're trying link a shared library against a static one
-           # but the system doesn't support it.
+static const char *
+nonempty (const char *s)
+{
+  return (s && !*s) ? "(empty)" : nonnull (s);
+}
 
-           # Just print a warning and add the library to dependency_libs so
-           # that the program can be linked against the static library.
-           $ECHO
-           $ECHO "*** Warning: This system can not link to static lib archive $lib."
-           $ECHO "*** I have the capability to make that library automatically link in when"
-           $ECHO "*** you link to this library.  But I can only do this if you have a"
-           $ECHO "*** shared version of the library, which you do not appear to have."
-           if test "$module" = yes; then
-             $ECHO "*** But as you try to build a module library, libtool will still create "
-             $ECHO "*** a static module, that should work as long as the dlopening application"
-             $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
-             if test -z "$global_symbol_pipe"; then
-               $ECHO
-               $ECHO "*** However, this would only work if libtool was able to extract symbol"
-               $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-               $ECHO "*** not find such a program.  So, this module is probably useless."
-               $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-             fi
-             if test "$build_old_libs" = no; then
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         else
-           deplibs="$dir/$old_library $deplibs"
-           link_static=yes
-         fi
-       fi # link shared/static library?
+void
+lt_setenv (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_setenv) setting '%s' to '%s'\n",
+                  nonnull (name), nonnull (value));
+  {
+#ifdef HAVE_SETENV
+    /* always make a copy, for consistency with !HAVE_SETENV */
+    char *str = xstrdup (value);
+    setenv (name, str, 1);
+#else
+    int len = strlen (name) + 1 + strlen (value) + 1;
+    char *str = XMALLOC (char, len);
+    sprintf (str, "%s=%s", name, value);
+    if (putenv (str) != EXIT_SUCCESS)
+      {
+        XFREE (str);
+      }
+#endif
+  }
+}
 
-       if test "$linkmode" = lib; then
-         if test -n "$dependency_libs" &&
-            { test "$hardcode_into_libs" != yes ||
-              test "$build_old_libs" = yes ||
-              test "$link_static" = yes; }; then
-           # Extract -R from dependency_libs
-           temp_deplibs=
-           for libdir in $dependency_libs; do
-             case $libdir in
-             -R*) func_stripname '-R' '' "$libdir"
-                  temp_xrpath=$func_stripname_result
-                  case " $xrpath " in
-                  *" $temp_xrpath "*) ;;
-                  *) xrpath="$xrpath $temp_xrpath";;
-                  esac;;
-             *) temp_deplibs="$temp_deplibs $libdir";;
-             esac
-           done
-           dependency_libs="$temp_deplibs"
-         fi
+char *
+lt_extend_str (const char *orig_value, const char *add, int to_end)
+{
+  char *new_value;
+  if (orig_value && *orig_value)
+    {
+      int orig_value_len = strlen (orig_value);
+      int add_len = strlen (add);
+      new_value = XMALLOC (char, add_len + orig_value_len + 1);
+      if (to_end)
+        {
+          strcpy (new_value, orig_value);
+          strcpy (new_value + orig_value_len, add);
+        }
+      else
+        {
+          strcpy (new_value, add);
+          strcpy (new_value + add_len, orig_value);
+        }
+    }
+  else
+    {
+      new_value = xstrdup (add);
+    }
+  return new_value;
+}
 
-         newlib_search_path="$newlib_search_path $absdir"
-         # Link against this library
-         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
-         # ... and its dependency_libs
-         tmp_libs=
-         for deplib in $dependency_libs; do
-           newdependency_libs="$deplib $newdependency_libs"
-           if $opt_duplicate_deps ; then
-             case "$tmp_libs " in
-             *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
-             esac
-           fi
-           tmp_libs="$tmp_libs $deplib"
-         done
+void
+lt_update_exe_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
-         if test "$link_all_deplibs" != no; then
-           # Add the search paths of all dependency libraries
-           for deplib in $dependency_libs; do
-             case $deplib in
-             -L*) path="$deplib" ;;
-             *.la)
-               func_dirname "$deplib" "" "."
-               dir="$func_dirname_result"
-               # We need an absolute path.
-               case $dir in
-               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
-               *)
-                 absdir=`cd "$dir" && pwd`
-                 if test -z "$absdir"; then
-                   func_warning "cannot determine absolute directory name of \`$dir'"
-                   absdir="$dir"
-                 fi
-                 ;;
-               esac
-               if $GREP "^installed=no" $deplib > /dev/null; then
-               case $host in
-               *-*-darwin*)
-                 depdepl=
-                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
-                 if test -n "$deplibrary_names" ; then
-                   for tmp in $deplibrary_names ; do
-                     depdepl=$tmp
-                   done
-                   if test -f "$absdir/$objdir/$depdepl" ; then
-                     depdepl="$absdir/$objdir/$depdepl"
-                     darwin_install_name=`otool -L $depdepl | $SED -n -e '3q;2,2p' | $SED -e 's/(.*//'`
-                     darwin_install_name=`$ECHO $darwin_install_name`
-                     compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
-                     linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
-                     path=
-                   fi
-                 fi
-                 ;;
-               *)
-                 path="-L$absdir/$objdir"
-                 ;;
-               esac
-               else
-                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
-                 test -z "$libdir" && \
-                   func_fatal_error "\`$deplib' is not a valid libtool archive"
-                 test "$absdir" != "$libdir" && \
-                   func_warning "\`$deplib' seems to be moved"
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      /* some systems can't cope with a ':'-terminated path #' */
+      int len = strlen (new_value);
+      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
+        {
+          new_value[len-1] = '\0';
+        }
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
 
-                 path="-L$absdir"
-               fi
-               ;;
-             esac
-             case " $deplibs " in
-             *" $path "*) ;;
-             *) deplibs="$path $deplibs" ;;
-             esac
-           done
-         fi # link_all_deplibs != no
-       fi # linkmode = lib
-      done # for deplib in $libs
-      dependency_libs="$newdependency_libs"
-      if test "$pass" = dlpreopen; then
-       # Link the dlpreopened libraries before other libraries
-       for deplib in $save_deplibs; do
-         deplibs="$deplib $deplibs"
-       done
-      fi
-      if test "$pass" != dlopen; then
-       if test "$pass" != conv; then
-         # Make sure lib_search_path contains only unique directories.
-         lib_search_path=
-         for dir in $newlib_search_path; do
-           case "$lib_search_path " in
-           *" $dir "*) ;;
-           *) lib_search_path="$lib_search_path $dir" ;;
-           esac
-         done
-         newlib_search_path=
-       fi
-
-       if test "$linkmode,$pass" != "prog,link"; then
-         vars="deplibs"
-       else
-         vars="compile_deplibs finalize_deplibs"
-       fi
-       for var in $vars dependency_libs; do
-         # Add libraries to $var in reverse order
-         eval tmp_libs=\"\$$var\"
-         new_libs=
-         for deplib in $tmp_libs; do
-           # FIXME: Pedantically, this is the right thing to do, so
-           #        that some nasty dependency loop isn't accidentally
-           #        broken:
-           #new_libs="$deplib $new_libs"
-           # Pragmatically, this seems to cause very few problems in
-           # practice:
-           case $deplib in
-           -L*) new_libs="$deplib $new_libs" ;;
-           -R*) ;;
-           *)
-             # And here is the reason: when a library appears more
-             # than once as an explicit dependence of a library, or
-             # is implicitly linked in more than once by the
-             # compiler, it is considered special, and multiple
-             # occurrences thereof are not removed.  Compare this
-             # with having the same library being listed as a
-             # dependency of multiple other libraries: in this case,
-             # we know (pedantically, we assume) the library does not
-             # need to be listed more than once, so we keep only the
-             # last copy.  This is not always right, but it is rare
-             # enough that we require users that really mean to play
-             # such unportable linking tricks to link the library
-             # using -Wl,-lname, so that libtool does not consider it
-             # for duplicate removal.
-             case " $specialdeplibs " in
-             *" $deplib "*) new_libs="$deplib $new_libs" ;;
-             *)
-               case " $new_libs " in
-               *" $deplib "*) ;;
-               *) new_libs="$deplib $new_libs" ;;
-               esac
-               ;;
-             esac
-             ;;
-           esac
-         done
-         tmp_libs=
-         for deplib in $new_libs; do
-           case $deplib in
-           -L*)
-             case " $tmp_libs " in
-             *" $deplib "*) ;;
-             *) tmp_libs="$tmp_libs $deplib" ;;
-             esac
-             ;;
-           *) tmp_libs="$tmp_libs $deplib" ;;
-           esac
-         done
-         eval $var=\"$tmp_libs\"
-       done # for var
-      fi
-      # Last step: remove runtime libs from dependency_libs
-      # (they stay in deplibs)
-      tmp_libs=
-      for i in $dependency_libs ; do
-       case " $predeps $postdeps $compiler_lib_search_path " in
-       *" $i "*)
-         i=""
-         ;;
-       esac
-       if test -n "$i" ; then
-         tmp_libs="$tmp_libs $i"
-       fi
-      done
-      dependency_libs=$tmp_libs
-    done # for pass
-    if test "$linkmode" = prog; then
-      dlfiles="$newdlfiles"
-    fi
-    if test "$linkmode" = prog || test "$linkmode" = lib; then
-      dlprefiles="$newdlprefiles"
-    fi
-
-    case $linkmode in
-    oldlib)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-       func_warning "\`-dlopen' is ignored for archives"
-      fi
-
-      test -n "$deplibs" && \
-       func_warning "\`-l' and \`-L' are ignored for archives"
-
-
-      test -n "$rpath" && \
-       func_warning "\`-rpath' is ignored for archives"
-
-      test -n "$xrpath" && \
-       func_warning "\`-R' is ignored for archives"
+void
+lt_update_lib_path (const char *name, const char *value)
+{
+  lt_debugprintf (__FILE__, __LINE__,
+                 "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
+                  nonnull (name), nonnull (value));
 
-      test -n "$vinfo" && \
-       func_warning "\`-version-info/-version-number' is ignored for archives"
+  if (name && *name && value && *value)
+    {
+      char *new_value = lt_extend_str (getenv (name), value, 0);
+      lt_setenv (name, new_value);
+      XFREE (new_value);
+    }
+}
 
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for archives"
+EOF
+           case $host_os in
+             mingw*)
+               cat <<"EOF"
+
+/* Prepares an argument vector before calling spawn().
+   Note that spawn() does not by itself call the command interpreter
+     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
+      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
+         GetVersionEx(&v);
+         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
+      }) ? "cmd.exe" : "command.com").
+   Instead it simply concatenates the arguments, separated by ' ', and calls
+   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
+   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
+   special way:
+   - Space and tab are interpreted as delimiters. They are not treated as
+     delimiters if they are surrounded by double quotes: "...".
+   - Unescaped double quotes are removed from the input. Their only effect is
+     that within double quotes, space and tab are treated like normal
+     characters.
+   - Backslashes not followed by double quotes are not special.
+   - But 2*n+1 backslashes followed by a double quote become
+     n backslashes followed by a double quote (n >= 0):
+       \" -> "
+       \\\" -> \"
+       \\\\\" -> \\"
+ */
+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037"
+char **
+prepare_spawn (char **argv)
+{
+  size_t argc;
+  char **new_argv;
+  size_t i;
 
-      test -n "$export_symbols$export_symbols_regex" && \
-       func_warning "\`-export-symbols' is ignored for archives"
+  /* Count number of arguments.  */
+  for (argc = 0; argv[argc] != NULL; argc++)
+    ;
 
-      # Now set the variables for building old libraries.
-      build_libtool_libs=no
-      oldlibs="$output"
-      objs="$objs$old_deplibs"
-      ;;
+  /* Allocate new argument vector.  */
+  new_argv = XMALLOC (char *, argc + 1);
 
-    lib)
-      # Make sure we only generate libraries of the form `libNAME.la'.
-      case $outputname in
-      lib*)
-       func_stripname 'lib' '.la' "$outputname"
-       name=$func_stripname_result
-       eval shared_ext=\"$shrext_cmds\"
-       eval libname=\"$libname_spec\"
-       ;;
-      *)
-       test "$module" = no && \
-         func_fatal_help "libtool library \`$output' must begin with \`lib'"
+  /* Put quoted arguments into the new argument vector.  */
+  for (i = 0; i < argc; i++)
+    {
+      const char *string = argv[i];
 
-       if test "$need_lib_prefix" != no; then
-         # Add the "lib" prefix for modules if required
-         func_stripname '' '.la' "$outputname"
-         name=$func_stripname_result
-         eval shared_ext=\"$shrext_cmds\"
-         eval libname=\"$libname_spec\"
-       else
-         func_stripname '' '.la' "$outputname"
-         libname=$func_stripname_result
-       fi
-       ;;
-      esac
+      if (string[0] == '\0')
+       new_argv[i] = xstrdup ("\"\"");
+      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
+       {
+         int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
+         size_t length;
+         unsigned int backslashes;
+         const char *s;
+         char *quoted_string;
+         char *p;
+
+         length = 0;
+         backslashes = 0;
+         if (quote_around)
+           length++;
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               length += backslashes + 1;
+             length++;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           length += backslashes + 1;
+
+         quoted_string = XMALLOC (char, length + 1);
+
+         p = quoted_string;
+         backslashes = 0;
+         if (quote_around)
+           *p++ = '"';
+         for (s = string; *s != '\0'; s++)
+           {
+             char c = *s;
+             if (c == '"')
+               {
+                 unsigned int j;
+                 for (j = backslashes + 1; j > 0; j--)
+                   *p++ = '\\';
+               }
+             *p++ = c;
+             if (c == '\\')
+               backslashes++;
+             else
+               backslashes = 0;
+           }
+         if (quote_around)
+           {
+             unsigned int j;
+             for (j = backslashes; j > 0; j--)
+               *p++ = '\\';
+             *p++ = '"';
+           }
+         *p = '\0';
 
-      if test -n "$objs"; then
-       if test "$deplibs_check_method" != pass_all; then
-         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
-       else
-         $ECHO
-         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
-         $ECHO "*** objects $objs is not portable!"
-         libobjs="$libobjs $objs"
-       fi
-      fi
+         new_argv[i] = quoted_string;
+       }
+      else
+       new_argv[i] = (char *) string;
+    }
+  new_argv[argc] = NULL;
 
-      test "$dlself" != no && \
-       func_warning "\`-dlopen self' is ignored for libtool libraries"
+  return new_argv;
+}
+EOF
+               ;;
+           esac
 
-      set dummy $rpath
-      shift
-      test "$#" -gt 1 && \
-       func_warning "ignoring multiple \`-rpath's for a libtool library"
+            cat <<"EOF"
+void lt_dump_script (FILE* f)
+{
+EOF
+           func_emit_wrapper yes |
+             $SED -n -e '
+s/^\(.\{79\}\)\(..*\)/\1\
+\2/
+h
+s/\([\\"]\)/\\\1/g
+s/$/\\n/
+s/\([^\n]*\).*/  fputs ("\1", f);/p
+g
+D'
+            cat <<"EOF"
+}
+EOF
+}
+# end: func_emit_cwrapperexe_src
 
-      install_libdir="$1"
+# func_win32_import_lib_p ARG
+# True if ARG is an import lib, as indicated by $file_magic_cmd
+func_win32_import_lib_p ()
+{
+    $opt_debug
+    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
+    *import*) : ;;
+    *) false ;;
+    esac
+}
 
-      oldlibs=
-      if test -z "$rpath"; then
-       if test "$build_libtool_libs" = yes; then
-         # Building a libtool convenience library.
-         # Some compilers have problems with a `.al' extension so
-         # convenience libraries should have the same extension an
-         # archive normally would.
-         oldlibs="$output_objdir/$libname.$libext $oldlibs"
-         build_libtool_libs=convenience
-         build_old_libs=yes
-       fi
+# func_mode_link arg...
+func_mode_link ()
+{
+    $opt_debug
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
 
-       test -n "$vinfo" && \
-         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args=$nonopt
+    base_compile="$nonopt $@"
+    compile_command=$nonopt
+    finalize_command=$nonopt
 
-       test -n "$release" && \
-         func_warning "\`-release' is ignored for convenience libraries"
-      else
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+    new_inherited_linker_flags=
 
-       # Parse the version information argument.
-       save_ifs="$IFS"; IFS=':'
-       set dummy $vinfo 0 0 0
-       shift
-       IFS="$save_ifs"
+    avoid_version=no
+    bindir=
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+    weak_libs=
+    single_module="${wl}-single_module"
+    func_infer_tag $base_compile
 
-       test -n "$7" && \
-         func_fatal_help "too many parameters to \`-version-info'"
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -shared)
+       test "$build_libtool_libs" != yes && \
+         func_fatal_configuration "can not build a shared library"
+       build_old_libs=no
+       break
+       ;;
+      -all-static | -static | -static-libtool-libs)
+       case $arg in
+       -all-static)
+         if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+           func_warning "complete static linking is impossible in this configuration"
+         fi
+         if test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       -static)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=built
+         ;;
+       -static-libtool-libs)
+         if test -z "$pic_flag" && test -n "$link_static_flag"; then
+           dlopen_self=$dlopen_self_static
+         fi
+         prefer_static_libs=yes
+         ;;
+       esac
+       build_libtool_libs=no
+       build_old_libs=yes
+       break
+       ;;
+      esac
+    done
 
-       # convert absolute version numbers to libtool ages
-       # this retains compatibility with .la files and attempts
-       # to make the code below a bit more comprehensible
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
 
-       case $vinfo_number in
-       yes)
-         number_major="$1"
-         number_minor="$2"
-         number_revision="$3"
-         #
-         # There are really only two kinds -- those that
-         # use the current revision as the major version
-         # and those that subtract age and use age as
-         # a minor version.  But, then there is irix
-         # which has an extra 1 added just for fun
-         #
-         case $version_type in
-         darwin|linux|osf|windows)
-           current=`expr $number_major + $number_minor`
-           age="$number_minor"
-           revision="$number_revision"
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      func_quote_for_eval "$arg"
+      qarg=$func_quote_for_eval_unquoted_result
+      func_append libtool_args " $func_quote_for_eval_result"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+       case $prev in
+       output)
+         func_append compile_command " @OUTPUT@"
+         func_append finalize_command " @OUTPUT@"
+         ;;
+       esac
+
+       case $prev in
+       bindir)
+         bindir="$arg"
+         prev=
+         continue
+         ;;
+       dlfiles|dlprefiles)
+         if test "$preload" = no; then
+           # Add the symbol object into the linking commands.
+           func_append compile_command " @SYMFILE@"
+           func_append finalize_command " @SYMFILE@"
+           preload=yes
+         fi
+         case $arg in
+         *.la | *.lo) ;;  # We handle these cases below.
+         force)
+           if test "$dlself" = no; then
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
            ;;
-         freebsd-aout|freebsd-elf|sunos)
-           current="$number_major"
-           revision="$number_minor"
-           age="0"
+         self)
+           if test "$prev" = dlprefiles; then
+             dlself=yes
+           elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+             dlself=yes
+           else
+             dlself=needless
+             export_dynamic=yes
+           fi
+           prev=
+           continue
            ;;
-         irix|nonstopux)
-           current=`expr $number_major + $number_minor - 1`
-           age="$number_minor"
-           revision="$number_minor"
+         *)
+           if test "$prev" = dlfiles; then
+             func_append dlfiles " $arg"
+           else
+             func_append dlprefiles " $arg"
+           fi
+           prev=
+           continue
            ;;
          esac
          ;;
-       no)
-         current="$1"
-         revision="$2"
-         age="$3"
+       expsyms)
+         export_symbols="$arg"
+         test -f "$arg" \
+           || func_fatal_error "symbol file \`$arg' does not exist"
+         prev=
+         continue
          ;;
-       esac
-
-       # Check that each of the things are valid numbers.
-       case $current in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "CURRENT \`$current' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
+       expsyms_regex)
+         export_symbols_regex="$arg"
+         prev=
+         continue
          ;;
-       esac
-
-       case $revision in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "REVISION \`$revision' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
+       framework)
+         case $host in
+           *-*-darwin*)
+             case "$deplibs " in
+               *" $qarg.ltframework "*) ;;
+               *) func_append deplibs " $qarg.ltframework" # this is fixed later
+                  ;;
+             esac
+             ;;
+         esac
+         prev=
+         continue
          ;;
-       esac
-
-       case $age in
-       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
-       *)
-         func_error "AGE \`$age' must be a nonnegative integer"
-         func_fatal_error "\`$vinfo' is not valid version information"
+       inst_prefix)
+         inst_prefix_dir="$arg"
+         prev=
+         continue
          ;;
-       esac
-
-       if test "$age" -gt "$current"; then
-         func_error "AGE \`$age' is greater than the current interface number \`$current'"
-         func_fatal_error "\`$vinfo' is not valid version information"
-       fi
+       objectlist)
+         if test -f "$arg"; then
+           save_arg=$arg
+           moreargs=
+           for fil in `cat "$save_arg"`
+           do
+#            func_append moreargs " $fil"
+             arg=$fil
+             # A libtool-controlled object.
 
-       # Calculate the version variables.
-       major=
-       versuffix=
-       verstring=
-       case $version_type in
-       none) ;;
+             # Check to see that this really is a libtool object.
+             if func_lalib_unsafe_p "$arg"; then
+               pic_object=
+               non_pic_object=
 
-       darwin)
-         # Like Linux, but with the current version available in
-         # verstring for coding it into the library header
-         major=.`expr $current - $age`
-         versuffix="$major.$age.$revision"
-         # Darwin ld doesn't like 0 for these options...
-         minor_current=`expr $current + 1`
-         verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
-         ;;
+               # Read the .lo file
+               func_source "$arg"
 
-       freebsd-aout)
-         major=".$current"
-         versuffix=".$current.$revision";
-         ;;
+               if test -z "$pic_object" ||
+                  test -z "$non_pic_object" ||
+                  test "$pic_object" = none &&
+                  test "$non_pic_object" = none; then
+                 func_fatal_error "cannot find name of object for \`$arg'"
+               fi
 
-       freebsd-elf)
-         major=".$current"
-         versuffix=".$current"
-         ;;
+               # Extract subdirectory from the argument.
+               func_dirname "$arg" "/" ""
+               xdir="$func_dirname_result"
 
-       irix | nonstopux)
-         major=`expr $current - $age + 1`
+               if test "$pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 pic_object="$xdir$pic_object"
 
-         case $version_type in
-           nonstopux) verstring_prefix=nonstopux ;;
-           *)         verstring_prefix=sgi ;;
-         esac
-         verstring="$verstring_prefix$major.$revision"
-
-         # Add in all the interfaces that we are compatible with.
-         loop=$revision
-         while test "$loop" -ne 0; do
-           iface=`expr $revision - $loop`
-           loop=`expr $loop - 1`
-           verstring="$verstring_prefix$major.$iface:$verstring"
-         done
-
-         # Before this point, $major must not contain `.'.
-         major=.$major
-         versuffix="$major.$revision"
-         ;;
-
-       linux)
-         major=.`expr $current - $age`
-         versuffix="$major.$age.$revision"
-         ;;
+                 if test "$prev" = dlfiles; then
+                   if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+                     func_append dlfiles " $pic_object"
+                     prev=
+                     continue
+                   else
+                     # If libtool objects are unsupported, then we need to preload.
+                     prev=dlprefiles
+                   fi
+                 fi
 
-       osf)
-         major=.`expr $current - $age`
-         versuffix=".$current.$age.$revision"
-         verstring="$current.$age.$revision"
+                 # CHECK ME:  I think I busted this.  -Ossama
+                 if test "$prev" = dlprefiles; then
+                   # Preload the old-style object.
+                   func_append dlprefiles " $pic_object"
+                   prev=
+                 fi
 
-         # Add in all the interfaces that we are compatible with.
-         loop=$age
-         while test "$loop" -ne 0; do
-           iface=`expr $current - $loop`
-           loop=`expr $loop - 1`
-           verstring="$verstring:${iface}.0"
-         done
+                 # A PIC object.
+                 func_append libobjs " $pic_object"
+                 arg="$pic_object"
+               fi
 
-         # Make executables depend on our current version.
-         verstring="$verstring:${current}.0"
-         ;;
+               # Non-PIC object.
+               if test "$non_pic_object" != none; then
+                 # Prepend the subdirectory the object is found in.
+                 non_pic_object="$xdir$non_pic_object"
 
-       qnx)
-         major=".$current"
-         versuffix=".$current"
-         ;;
+                 # A standard non-PIC object
+                 func_append non_pic_objects " $non_pic_object"
+                 if test -z "$pic_object" || test "$pic_object" = none ; then
+                   arg="$non_pic_object"
+                 fi
+               else
+                 # If the PIC object exists, use it instead.
+                 # $xdir was prepended to $pic_object above.
+                 non_pic_object="$pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               fi
+             else
+               # Only an error if not doing a dry-run.
+               if $opt_dry_run; then
+                 # Extract subdirectory from the argument.
+                 func_dirname "$arg" "/" ""
+                 xdir="$func_dirname_result"
 
-       sunos)
-         major=".$current"
-         versuffix=".$current.$revision"
+                 func_lo2o "$arg"
+                 pic_object=$xdir$objdir/$func_lo2o_result
+                 non_pic_object=$xdir$func_lo2o_result
+                 func_append libobjs " $pic_object"
+                 func_append non_pic_objects " $non_pic_object"
+               else
+                 func_fatal_error "\`$arg' is not a valid libtool object"
+               fi
+             fi
+           done
+         else
+           func_fatal_error "link input file \`$arg' does not exist"
+         fi
+         arg=$save_arg
+         prev=
+         continue
          ;;
-
-       windows)
-         # Use '-' rather than '.', since we only want one
-         # extension on DOS 8.3 filesystems.
-         major=`expr $current - $age`
-         versuffix="-$major"
+       precious_regex)
+         precious_files_regex="$arg"
+         prev=
+         continue
          ;;
-
-       *)
-         func_fatal_configuration "unknown library version type \`$version_type'"
+       release)
+         release="-$arg"
+         prev=
+         continue
          ;;
-       esac
-
-       # Clear the version info if we defaulted, and they specified a release.
-       if test -z "$vinfo" && test -n "$release"; then
-         major=
-         case $version_type in
-         darwin)
-           # we can't check for "0.0" in archive_cmds due to quoting
-           # problems, so we reset it completely
-           verstring=
-           ;;
+       rpath | xrpath)
+         # We need an absolute path.
+         case $arg in
+         [\\/]* | [A-Za-z]:[\\/]*) ;;
          *)
-           verstring="0.0"
+           func_fatal_error "only absolute run-paths are allowed"
            ;;
          esac
-         if test "$need_version" = no; then
-           versuffix=
+         if test "$prev" = rpath; then
+           case "$rpath " in
+           *" $arg "*) ;;
+           *) func_append rpath " $arg" ;;
+           esac
          else
-           versuffix=".0.0"
+           case "$xrpath " in
+           *" $arg "*) ;;
+           *) func_append xrpath " $arg" ;;
+           esac
          fi
-       fi
+         prev=
+         continue
+         ;;
+       shrext)
+         shrext_cmds="$arg"
+         prev=
+         continue
+         ;;
+       weak)
+         func_append weak_libs " $arg"
+         prev=
+         continue
+         ;;
+       xcclinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xcompiler)
+         func_append compiler_flags " $qarg"
+         prev=
+         func_append compile_command " $qarg"
+         func_append finalize_command " $qarg"
+         continue
+         ;;
+       xlinker)
+         func_append linker_flags " $qarg"
+         func_append compiler_flags " $wl$qarg"
+         prev=
+         func_append compile_command " $wl$qarg"
+         func_append finalize_command " $wl$qarg"
+         continue
+         ;;
+       *)
+         eval "$prev=\"\$arg\""
+         prev=
+         continue
+         ;;
+       esac
+      fi # test -n "$prev"
 
-       # Remove version info from name if versioning should be avoided
-       if test "$avoid_version" = yes && test "$need_version" = no; then
-         major=
-         versuffix=
-         verstring=""
-       fi
+      prevarg="$arg"
 
-       # Check to see if the archive will have undefined symbols.
-       if test "$allow_undefined" = yes; then
-         if test "$allow_undefined_flag" = unsupported; then
-           func_warning "undefined symbols not allowed in $host shared libraries"
-           build_libtool_libs=no
-           build_old_libs=yes
-         fi
-       else
-         # Don't allow undefined symbols.
-         allow_undefined_flag="$no_undefined_flag"
+      case $arg in
+      -all-static)
+       if test -n "$link_static_flag"; then
+         # See comment for -static flag below, for more details.
+         func_append compile_command " $link_static_flag"
+         func_append finalize_command " $link_static_flag"
        fi
+       continue
+       ;;
 
-      fi
+      -allow-undefined)
+       # FIXME: remove this flag sometime in the future.
+       func_fatal_error "\`-allow-undefined' must not be used because it is the default"
+       ;;
 
-      func_generate_dlsyms "$libname" "$libname" "yes"
-      libobjs="$libobjs $symfileobj"
+      -avoid-version)
+       avoid_version=yes
+       continue
+       ;;
 
-      if test "$mode" != relink; then
-       # Remove our outputs, but don't remove object files since they
-       # may have been created when compiling PIC objects.
-       removelist=
-       tempremovelist=`$ECHO "$output_objdir/*"`
-       for p in $tempremovelist; do
-         case $p in
-           *.$objext)
-              ;;
-           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
-              if test "X$precious_files_regex" != "X"; then
-                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
-                then
-                  continue
-                fi
-              fi
-              removelist="$removelist $p"
-              ;;
-           *) ;;
-         esac
-       done
-       test -n "$removelist" && \
-         func_show_eval "${RM}r \$removelist"
-      fi
+      -bindir)
+       prev=bindir
+       continue
+       ;;
 
-      # Now set the variables for building old libraries.
-      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
-       oldlibs="$oldlibs $output_objdir/$libname.$libext"
+      -dlopen)
+       prev=dlfiles
+       continue
+       ;;
 
-       # Transform .lo files to .o files.
-       oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
-      fi
+      -dlpreopen)
+       prev=dlprefiles
+       continue
+       ;;
 
-      # Eliminate all temporary directories.
-      for path in $notinst_path; do
-       lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e 's% $path % %g'`
-       deplibs=`$ECHO "X$deplibs " | $Xsed -e 's% -L$path % %g'`
-       dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e 's% -L$path % %g'`
-      done
+      -export-dynamic)
+       export_dynamic=yes
+       continue
+       ;;
 
-      if test -n "$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       temp_xrpath=
-       for libdir in $xrpath; do
-         temp_xrpath="$temp_xrpath -R$libdir"
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) finalize_rpath="$finalize_rpath $libdir" ;;
-         esac
-       done
-       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
-         dependency_libs="$temp_xrpath $dependency_libs"
+      -export-symbols | -export-symbols-regex)
+       if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+         func_fatal_error "more than one -exported-symbols argument is not allowed"
        fi
-      fi
-
-      # Make sure dlfiles contains only unique files that won't be dlpreopened
-      old_dlfiles="$dlfiles"
-      dlfiles=
-      for lib in $old_dlfiles; do
-       case " $dlprefiles $dlfiles " in
-       *" $lib "*) ;;
-       *) dlfiles="$dlfiles $lib" ;;
-       esac
-      done
+       if test "X$arg" = "X-export-symbols"; then
+         prev=expsyms
+       else
+         prev=expsyms_regex
+       fi
+       continue
+       ;;
 
-      # Make sure dlprefiles contains only unique files
-      old_dlprefiles="$dlprefiles"
-      dlprefiles=
-      for lib in $old_dlprefiles; do
-       case "$dlprefiles " in
-       *" $lib "*) ;;
-       *) dlprefiles="$dlprefiles $lib" ;;
+      -framework)
+       prev=framework
+       continue
+       ;;
+
+      -inst-prefix-dir)
+       prev=inst_prefix
+       continue
+       ;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+       case $with_gcc/$host in
+       no/*-*-irix* | /*-*-irix*)
+         func_append compile_command " $arg"
+         func_append finalize_command " $arg"
+         ;;
        esac
-      done
+       continue
+       ;;
 
-      if test "$build_libtool_libs" = yes; then
-       if test -n "$rpath"; then
+      -L*)
+       func_stripname "-L" '' "$arg"
+       if test -z "$func_stripname_result"; then
+         if test "$#" -gt 0; then
+           func_fatal_error "require no space between \`-L' and \`$1'"
+         else
+           func_fatal_error "need path for \`-L' option"
+         fi
+       fi
+       func_resolve_sysroot "$func_stripname_result"
+       dir=$func_resolve_sysroot_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       *)
+         absdir=`cd "$dir" && pwd`
+         test -z "$absdir" && \
+           func_fatal_error "cannot determine absolute directory name of \`$dir'"
+         dir="$absdir"
+         ;;
+       esac
+       case "$deplibs " in
+       *" -L$dir "* | *" $arg "*)
+         # Will only happen for absolute or sysroot arguments
+         ;;
+       *)
+         # Preserve sysroot, but never include relative directories
+         case $dir in
+           [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
+           *) func_append deplibs " -L$dir" ;;
+         esac
+         func_append lib_search_path " $dir"
+         ;;
+       esac
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$dir:"*) ;;
+         ::) dllsearchpath=$dir;;
+         *) func_append dllsearchpath ":$dir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+       continue
+       ;;
+
+      -l*)
+       if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
          case $host in
-         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
-           # these systems don't actually have a c library (as such)!
-           ;;
-         *-*-rhapsody* | *-*-darwin1.[012])
-           # Rhapsody C library is in the System framework
-           deplibs="$deplibs System.ltframework"
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # These systems don't actually have a C or math library (as such)
+           continue
            ;;
-         *-*-netbsd*)
-           # Don't link with libc until the a.out ld.so is fixed.
+         *-*-os2*)
+           # These systems don't actually have a C library (as such)
+           test "X$arg" = "X-lc" && continue
            ;;
          *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
            # Do not include libc due to us having libc/libc_r.
+           test "X$arg" = "X-lc" && continue
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C and math libraries are in the System framework
+           func_append deplibs " System.ltframework"
+           continue
            ;;
          *-*-sco3.2v5* | *-*-sco5v6*)
            # Causes problems with __ctype
+           test "X$arg" = "X-lc" && continue
            ;;
          *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
            # Compiler inserts libc in the correct place for threads to work
-           ;;
-         *)
-           # Add libc to deplibs on all other systems if necessary.
-           if test "$build_libtool_need_lc" = "yes"; then
-             deplibs="$deplibs -lc"
-           fi
+           test "X$arg" = "X-lc" && continue
            ;;
          esac
+       elif test "X$arg" = "X-lc_r"; then
+        case $host in
+        *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+          # Do not include libc_r directly, use -pthread flag.
+          continue
+          ;;
+        esac
        fi
+       func_append deplibs " $arg"
+       continue
+       ;;
 
-       # Transform deplibs into only deplibs that can be linked in shared.
-       name_save=$name
-       libname_save=$libname
-       release_save=$release
-       versuffix_save=$versuffix
-       major_save=$major
-       # I'm not sure if I'm treating the release correctly.  I think
-       # release should show up in the -l (ie -lgmp5) so we don't want to
-       # add it in twice.  Is that correct?
-       release=""
-       versuffix=""
-       major=""
-       newdeplibs=
-       droppeddeps=no
-       case $deplibs_check_method in
-       pass_all)
-         # Don't check for shared/static.  Everything works.
-         # This might be a little naive.  We might want to check
-         # whether the library exists or not.  But this is on
-         # osf3 & osf4 and I'm not really sure... Just
-         # implementing what was already the behavior.
-         newdeplibs=$deplibs
+      -module)
+       module=yes
+       continue
+       ;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      # Darwin uses the -arch flag to determine output architecture.
+      -model|-arch|-isysroot|--sysroot)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       prev=xcompiler
+       continue
+       ;;
+
+      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+       func_append compiler_flags " $arg"
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+       case "$new_inherited_linker_flags " in
+           *" $arg "*) ;;
+           * ) func_append new_inherited_linker_flags " $arg" ;;
+       esac
+       continue
+       ;;
+
+      -multi_module)
+       single_module="${wl}-multi_module"
+       continue
+       ;;
+
+      -no-fast-install)
+       fast_install=no
+       continue
+       ;;
+
+      -no-install)
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
+         # The PATH hackery in wrapper scripts is required on Windows
+         # and Darwin in order for the loader to find any dlls it needs.
+         func_warning "\`-no-install' is ignored for $host"
+         func_warning "assuming \`-no-fast-install' instead"
+         fast_install=no
          ;;
-       test_compile)
-         # This code stresses the "libraries are programs" paradigm to its
-         # limits. Maybe even breaks it.  We compile a program, linking it
-         # against the deplibs as a proxy for the library.  Then we can check
-         # whether they linked in statically or dynamically with ldd.
-         $opt_dry_run || $RM conftest.c
-         cat > conftest.c <<EOF
-         int main() { return 0; }
-EOF
-         $opt_dry_run || $RM conftest
-         $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
-         if test "$?" -eq 0 ; then
-           ldd_output=`ldd conftest`
-           for i in $deplibs; do
-             name=`expr $i : '-l\(.*\)'`
-             # If $name is empty we are operating on a -L argument.
-             if test "$name" != "" && test "$name" -ne "0"; then
-               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-                 case " $predeps $postdeps " in
-                 *" $i "*)
-                   newdeplibs="$newdeplibs $i"
-                   i=""
-                   ;;
-                 esac
-               fi
-               if test -n "$i" ; then
-                 libname=`eval "\\$ECHO \"$libname_spec\""`
-                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                 set dummy $deplib_matches; shift
-                 deplib_match=$1
-                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-                   newdeplibs="$newdeplibs $i"
-                 else
-                   droppeddeps=yes
-                   $ECHO
-                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                   $ECHO "*** I have the capability to make that library automatically link in when"
-                   $ECHO "*** you link to this library.  But I can only do this if you have a"
-                   $ECHO "*** shared version of the library, which I believe you do not have"
-                   $ECHO "*** because a test_compile did reveal that the linker did not use it for"
-                   $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
-                 fi
-               fi
-             else
-               newdeplibs="$newdeplibs $i"
-             fi
-           done
-         else
-           # Error occurred in the first compile.  Let's try to salvage
-           # the situation: Compile a separate program for each library.
-           for i in $deplibs; do
-             name=`expr $i : '-l\(.*\)'`
-             # If $name is empty we are operating on a -L argument.
-             if test "$name" != "" && test "$name" != "0"; then
-               $opt_dry_run || $RM conftest
-               $LTCC $LTCFLAGS -o conftest conftest.c $i
-               # Did it work?
-               if test "$?" -eq 0 ; then
-                 ldd_output=`ldd conftest`
-                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-                   case " $predeps $postdeps " in
-                   *" $i "*)
-                     newdeplibs="$newdeplibs $i"
-                     i=""
-                     ;;
-                   esac
-                 fi
-                 if test -n "$i" ; then
-                   libname=`eval "\\$ECHO \"$libname_spec\""`
-                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
-                   set dummy $deplib_matches; shift
-                   deplib_match=$1
-                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
-                     newdeplibs="$newdeplibs $i"
-                   else
-                     droppeddeps=yes
-                     $ECHO
-                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
-                     $ECHO "*** I have the capability to make that library automatically link in when"
-                     $ECHO "*** you link to this library.  But I can only do this if you have a"
-                     $ECHO "*** shared version of the library, which you do not appear to have"
-                     $ECHO "*** because a test_compile did reveal that the linker did not use this one"
-                     $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
-                   fi
-                 fi
-               else
-                 droppeddeps=yes
-                 $ECHO
-                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
-                 $ECHO "***  make it link in!  You will probably need to install it or some"
-                 $ECHO "*** library that it depends on before this library will be fully"
-                 $ECHO "*** functional.  Installing it before continuing would be even better."
-               fi
-             else
-               newdeplibs="$newdeplibs $i"
-             fi
-           done
-         fi
+       *) no_install=yes ;;
+       esac
+       continue
+       ;;
+
+      -no-undefined)
+       allow_undefined=no
+       continue
+       ;;
+
+      -objectlist)
+       prev=objectlist
+       continue
+       ;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+       prev=precious_regex
+       continue
+       ;;
+
+      -release)
+       prev=release
+       continue
+       ;;
+
+      -rpath)
+       prev=rpath
+       continue
+       ;;
+
+      -R)
+       prev=xrpath
+       continue
+       ;;
+
+      -R*)
+       func_stripname '-R' '' "$arg"
+       dir=$func_stripname_result
+       # We need an absolute path.
+       case $dir in
+       [\\/]* | [A-Za-z]:[\\/]*) ;;
+       =*)
+         func_stripname '=' '' "$dir"
+         dir=$lt_sysroot$func_stripname_result
          ;;
-       file_magic*)
-         set dummy $deplibs_check_method; shift
-         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           name=`expr $a_deplib : '-l\(.*\)'`
-           # If $name is empty we are operating on a -L argument.
-           if test "$name" != "" && test  "$name" != "0"; then
-             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 newdeplibs="$newdeplibs $a_deplib"
-                 a_deplib=""
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib" ; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-                 for potent_lib in $potential_libs; do
-                     # Follow soft links.
-                     if ls -lLd "$potent_lib" 2>/dev/null |
-                        $GREP " -> " >/dev/null; then
-                       continue
-                     fi
-                     # The statement above tries to avoid entering an
-                     # endless loop below, in case of cyclic links.
-                     # We might still enter an endless loop, since a link
-                     # loop can be closed while we follow links,
-                     # but so what?
-                     potlib="$potent_lib"
-                     while test -h "$potlib" 2>/dev/null; do
-                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
-                       case $potliblink in
-                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
-                       *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
-                       esac
-                     done
-                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
-                        $SED -e 10q |
-                        $EGREP "$file_magic_regex" > /dev/null; then
-                       newdeplibs="$newdeplibs $a_deplib"
-                       a_deplib=""
-                       break 2
-                     fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib" ; then
-               droppeddeps=yes
-               $ECHO
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               $ECHO "*** I have the capability to make that library automatically link in when"
-               $ECHO "*** you link to this library.  But I can only do this if you have a"
-               $ECHO "*** shared version of the library, which you do not appear to have"
-               $ECHO "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib" ; then
-                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a file magic. Last file checked: $potlib"
-               fi
-             fi
-           else
-             # Add a -L argument.
-             newdeplibs="$newdeplibs $a_deplib"
-           fi
-         done # Gone through all deplibs.
-         ;;
-       match_pattern*)
-         set dummy $deplibs_check_method; shift
-         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
-         for a_deplib in $deplibs; do
-           name=`expr $a_deplib : '-l\(.*\)'`
-           # If $name is empty we are operating on a -L argument.
-           if test -n "$name" && test "$name" != "0"; then
-             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-               case " $predeps $postdeps " in
-               *" $a_deplib "*)
-                 newdeplibs="$newdeplibs $a_deplib"
-                 a_deplib=""
-                 ;;
-               esac
-             fi
-             if test -n "$a_deplib" ; then
-               libname=`eval "\\$ECHO \"$libname_spec\""`
-               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
-                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
-                 for potent_lib in $potential_libs; do
-                   potlib="$potent_lib" # see symlink-check above in file_magic test
-                   if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
-                      $EGREP "$match_pattern_regex" > /dev/null; then
-                     newdeplibs="$newdeplibs $a_deplib"
-                     a_deplib=""
-                     break 2
-                   fi
-                 done
-               done
-             fi
-             if test -n "$a_deplib" ; then
-               droppeddeps=yes
-               $ECHO
-               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
-               $ECHO "*** I have the capability to make that library automatically link in when"
-               $ECHO "*** you link to this library.  But I can only do this if you have a"
-               $ECHO "*** shared version of the library, which you do not appear to have"
-               $ECHO "*** because I did check the linker path looking for a file starting"
-               if test -z "$potlib" ; then
-                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
-               else
-                 $ECHO "*** with $libname and none of the candidates passed a file format test"
-                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
-               fi
-             fi
-           else
-             # Add a -L argument.
-             newdeplibs="$newdeplibs $a_deplib"
-           fi
-         done # Gone through all deplibs.
-         ;;
-       none | unknown | *)
-         newdeplibs=""
-         tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
-             -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
-         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
-           for i in $predeps $postdeps ; do
-             # can't use Xsed below, because $i might contain '/'
-             tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
-           done
-         fi
-         if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[     ]//g' |
-            $GREP . >/dev/null; then
-           $ECHO
-           if test "X$deplibs_check_method" = "Xnone"; then
-             $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
-           else
-             $ECHO "*** Warning: inter-library dependencies are not known to be supported."
-           fi
-           $ECHO "*** All declared inter-library dependencies are being dropped."
-           droppeddeps=yes
-         fi
+       *)
+         func_fatal_error "only absolute run-paths are allowed"
          ;;
        esac
-       versuffix=$versuffix_save
-       major=$major_save
-       release=$release_save
-       libname=$libname_save
-       name=$name_save
-
-       case $host in
-       *-*-rhapsody* | *-*-darwin1.[012])
-         # On Rhapsody replace the C library with the System framework
-         newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-         ;;
+       case "$xrpath " in
+       *" $dir "*) ;;
+       *) func_append xrpath " $dir" ;;
        esac
+       continue
+       ;;
 
-       if test "$droppeddeps" = yes; then
-         if test "$module" = yes; then
-           $ECHO
-           $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
-           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
-           $ECHO "*** a static module, that should work as long as the dlopening"
-           $ECHO "*** application is linked with the -dlopen flag."
-           if test -z "$global_symbol_pipe"; then
-             $ECHO
-             $ECHO "*** However, this would only work if libtool was able to extract symbol"
-             $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
-             $ECHO "*** not find such a program.  So, this module is probably useless."
-             $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
-           fi
-           if test "$build_old_libs" = no; then
-             oldlibs="$output_objdir/$libname.$libext"
-             build_libtool_libs=module
-             build_old_libs=yes
-           else
-             build_libtool_libs=no
-           fi
-         else
-           $ECHO "*** The inter-library dependencies that have been dropped here will be"
-           $ECHO "*** automatically added whenever a program is linked with this library"
-           $ECHO "*** or is declared to -dlopen it."
-
-           if test "$allow_undefined" = no; then
-             $ECHO
-             $ECHO "*** Since this library must not contain undefined symbols,"
-             $ECHO "*** because either the platform does not support them or"
-             $ECHO "*** it was explicitly requested with -no-undefined,"
-             $ECHO "*** libtool will only create a static version of it."
-             if test "$build_old_libs" = no; then
-               oldlibs="$output_objdir/$libname.$libext"
-               build_libtool_libs=module
-               build_old_libs=yes
-             else
-               build_libtool_libs=no
-             fi
-           fi
-         fi
-       fi
-       # Done checking deplibs!
-       deplibs=$newdeplibs
-      fi
-      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-      case $host in
-       *-*-darwin*)
-         newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-         new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-         deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-         ;;
-      esac
+      -shared)
+       # The effects of -shared are defined in a previous loop.
+       continue
+       ;;
 
-      # move library search paths that coincide with paths to not yet
-      # installed libraries to the beginning of the library search list
-      new_libs=
-      for path in $notinst_path; do
-       case " $new_libs " in
-       *" -L$path/$objdir "*) ;;
-       *)
-         case " $deplibs " in
-         *" -L$path/$objdir "*)
-           new_libs="$new_libs -L$path/$objdir" ;;
-         esac
-         ;;
-       esac
-      done
-      for deplib in $deplibs; do
-       case $deplib in
-       -L*)
-         case " $new_libs " in
-         *" $deplib "*) ;;
-         *) new_libs="$new_libs $deplib" ;;
-         esac
-         ;;
-       *) new_libs="$new_libs $deplib" ;;
-       esac
-      done
-      deplibs="$new_libs"
+      -shrext)
+       prev=shrext
+       continue
+       ;;
 
-      # All the library-specific variables (install_libdir is set above).
-      library_names=
-      old_library=
-      dlname=
+      -static | -static-libtool-libs)
+       # The effects of -static are defined in a previous loop.
+       # We used to do the same as -all-static on platforms that
+       # didn't have a PIC flag, but the assumption that the effects
+       # would be equivalent was wrong.  It would break on at least
+       # Digital Unix and AIX.
+       continue
+       ;;
 
-      # Test again, we may have decided not to build it any more
-      if test "$build_libtool_libs" = yes; then
-       if test "$hardcode_into_libs" = yes; then
-         # Hardcode the library paths
-         hardcode_libdirs=
-         dep_rpath=
-         rpath="$finalize_rpath"
-         test "$mode" != relink && rpath="$compile_rpath$rpath"
-         for libdir in $rpath; do
-           if test -n "$hardcode_libdir_flag_spec"; then
-             if test -n "$hardcode_libdir_separator"; then
-               if test -z "$hardcode_libdirs"; then
-                 hardcode_libdirs="$libdir"
-               else
-                 # Just accumulate the unique libdirs.
-                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-                   ;;
-                 *)
-                   hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-                   ;;
-                 esac
-               fi
-             else
-               eval flag=\"$hardcode_libdir_flag_spec\"
-               dep_rpath="$dep_rpath $flag"
-             fi
-           elif test -n "$runpath_var"; then
-             case "$perm_rpath " in
-             *" $libdir "*) ;;
-             *) perm_rpath="$perm_rpath $libdir" ;;
-             esac
-           fi
-         done
-         # Substitute the hardcoded libdirs into the rpath.
-         if test -n "$hardcode_libdir_separator" &&
-            test -n "$hardcode_libdirs"; then
-           libdir="$hardcode_libdirs"
-           if test -n "$hardcode_libdir_flag_spec_ld"; then
-             eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
-           else
-             eval dep_rpath=\"$hardcode_libdir_flag_spec\"
-           fi
-         fi
-         if test -n "$runpath_var" && test -n "$perm_rpath"; then
-           # We should set the runpath_var.
-           rpath=
-           for dir in $perm_rpath; do
-             rpath="$rpath$dir:"
-           done
-           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
-         fi
-         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
-       fi
+      -thread-safe)
+       thread_safe=yes
+       continue
+       ;;
 
-       shlibpath="$finalize_shlibpath"
-       test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
-       if test -n "$shlibpath"; then
-         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
-       fi
+      -version-info)
+       prev=vinfo
+       continue
+       ;;
 
-       # Get the real and link names of the library.
-       eval shared_ext=\"$shrext_cmds\"
-       eval library_names=\"$library_names_spec\"
-       set dummy $library_names
-       shift
-       realname="$1"
-       shift
+      -version-number)
+       prev=vinfo
+       vinfo_number=yes
+       continue
+       ;;
 
-       if test -n "$soname_spec"; then
-         eval soname=\"$soname_spec\"
-       else
-         soname="$realname"
-       fi
-       if test -z "$dlname"; then
-         dlname=$soname
-       fi
+      -weak)
+        prev=weak
+       continue
+       ;;
 
-       lib="$output_objdir/$realname"
-       linknames=
-       for link
-       do
-         linknames="$linknames $link"
+      -Wc,*)
+       func_stripname '-Wc,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         func_append arg " $func_quote_for_eval_result"
+         func_append compiler_flags " $func_quote_for_eval_result"
        done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
 
-       # Use standard objects if they are pic
-       test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      -Wl,*)
+       func_stripname '-Wl,' '' "$arg"
+       args=$func_stripname_result
+       arg=
+       save_ifs="$IFS"; IFS=','
+       for flag in $args; do
+         IFS="$save_ifs"
+          func_quote_for_eval "$flag"
+         func_append arg " $wl$func_quote_for_eval_result"
+         func_append compiler_flags " $wl$func_quote_for_eval_result"
+         func_append linker_flags " $func_quote_for_eval_result"
+       done
+       IFS="$save_ifs"
+       func_stripname ' ' '' "$arg"
+       arg=$func_stripname_result
+       ;;
 
-       delfiles=
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
-         export_symbols="$output_objdir/$libname.uexp"
-         delfiles="$delfiles $export_symbols"
-       fi
+      -Xcompiler)
+       prev=xcompiler
+       continue
+       ;;
 
-       orig_export_symbols=
-       case $host_os in
-       cygwin* | mingw*)
-         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
-           # exporting using user supplied symfile
-           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
-             # and it's NOT already a .def file. Must figure out
-             # which of the given symbols are data symbols and tag
-             # them as such. So, trigger use of export_symbols_cmds.
-             # export_symbols gets reassigned inside the "prepare
-             # the list of exported symbols" if statement, so the
-             # include_expsyms logic still works.
-             orig_export_symbols="$export_symbols"
-             export_symbols=
-             always_export_symbols=yes
-           fi
+      -Xlinker)
+       prev=xlinker
+       continue
+       ;;
+
+      -XCClinker)
+       prev=xcclinker
+       continue
+       ;;
+
+      # -msg_* for osf cc
+      -msg_*)
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      # Flags to be passed through unchanged, with rationale:
+      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
+      # -r[0-9][0-9]*        specify processor for the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
+      # +DA*, +DD*           enable 64-bit mode for the HP compiler
+      # -q*                  compiler args for the IBM compiler
+      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
+      # -F/path              path to uninstalled frameworks, gcc on darwin
+      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
+      # @file                GCC response files
+      # -tp=*                Portland pgcc target processor selection
+      # --sysroot=*          for sysroot support
+      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
+      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+        func_append compile_command " $arg"
+        func_append finalize_command " $arg"
+        func_append compiler_flags " $arg"
+        continue
+        ;;
+
+      # Some other compiler flag.
+      -* | +*)
+        func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+
+      *.$objext)
+       # A standard object.
+       func_append objs " $arg"
+       ;;
+
+      *.lo)
+       # A libtool-controlled object.
+
+       # Check to see that this really is a libtool object.
+       if func_lalib_unsafe_p "$arg"; then
+         pic_object=
+         non_pic_object=
+
+         # Read the .lo file
+         func_source "$arg"
+
+         if test -z "$pic_object" ||
+            test -z "$non_pic_object" ||
+            test "$pic_object" = none &&
+            test "$non_pic_object" = none; then
+           func_fatal_error "cannot find name of object for \`$arg'"
          fi
-         ;;
-       esac
 
-       # Prepare the list of exported symbols
-       if test -z "$export_symbols"; then
-         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
-           func_echo "generating symbol list for \`$libname.la'"
-           export_symbols="$output_objdir/$libname.exp"
-           $opt_dry_run || $RM $export_symbols
-           cmds=$export_symbols_cmds
-           save_ifs="$IFS"; IFS='~'
-           for cmd in $cmds; do
-             IFS="$save_ifs"
-             eval cmd=\"$cmd\"
-             if len=`expr "X$cmd" : ".*"` &&
-              test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-               func_show_eval "$cmd" 'exit $?'
-               skipped_export=false
+         # Extract subdirectory from the argument.
+         func_dirname "$arg" "/" ""
+         xdir="$func_dirname_result"
+
+         if test "$pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           pic_object="$xdir$pic_object"
+
+           if test "$prev" = dlfiles; then
+             if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+               func_append dlfiles " $pic_object"
+               prev=
+               continue
              else
-               # The command line is too long to execute in one step.
-               func_echo "using reloadable object file for export list..."
-               skipped_export=:
-               # Break out early, otherwise skipped_export may be
-               # set to false by a later but shorter cmd.
-               break
+               # If libtool objects are unsupported, then we need to preload.
+               prev=dlprefiles
              fi
-           done
-           IFS="$save_ifs"
-           if test -n "$export_symbols_regex"; then
-             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
-             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
            fi
-         fi
-       fi
 
-       if test -n "$export_symbols" && test -n "$include_expsyms"; then
-         tmp_export_symbols="$export_symbols"
-         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
-         $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
-       fi
+           # CHECK ME:  I think I busted this.  -Ossama
+           if test "$prev" = dlprefiles; then
+             # Preload the old-style object.
+             func_append dlprefiles " $pic_object"
+             prev=
+           fi
 
-       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
-         # The given exports_symbols file has to be filtered, so filter it.
-         func_echo "filter symbol list for \`$libname.la' to tag DATA exports"
-         # FIXME: $output_objdir/$libname.filter potentially contains lots of
-         # 's' commands which not all seds can handle. GNU sed should be fine
-         # though. Also, the filter scales superlinearly with the number of
-         # global variables. join(1) would be nice here, but unfortunately
-         # isn't a blessed tool.
-         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
-         delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
-         export_symbols=$output_objdir/$libname.def
-         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
-       fi
+           # A PIC object.
+           func_append libobjs " $pic_object"
+           arg="$pic_object"
+         fi
 
-       tmp_deplibs=
-       for test_deplib in $deplibs; do
-         case " $convenience " in
-         *" $test_deplib "*) ;;
-         *)
-           tmp_deplibs="$tmp_deplibs $test_deplib"
-           ;;
-         esac
-       done
-       deplibs="$tmp_deplibs"
+         # Non-PIC object.
+         if test "$non_pic_object" != none; then
+           # Prepend the subdirectory the object is found in.
+           non_pic_object="$xdir$non_pic_object"
 
-       if test -n "$convenience"; then
-         if test -n "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           # A standard non-PIC object
+           func_append non_pic_objects " $non_pic_object"
+           if test -z "$pic_object" || test "$pic_object" = none ; then
+             arg="$non_pic_object"
+           fi
          else
-           gentop="$output_objdir/${outputname}x"
-           generated="$generated $gentop"
+           # If the PIC object exists, use it instead.
+           # $xdir was prepended to $pic_object above.
+           non_pic_object="$pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         fi
+       else
+         # Only an error if not doing a dry-run.
+         if $opt_dry_run; then
+           # Extract subdirectory from the argument.
+           func_dirname "$arg" "/" ""
+           xdir="$func_dirname_result"
 
-           func_extract_archives $gentop $convenience
-           libobjs="$libobjs $func_extract_archives_result"
+           func_lo2o "$arg"
+           pic_object=$xdir$objdir/$func_lo2o_result
+           non_pic_object=$xdir$func_lo2o_result
+           func_append libobjs " $pic_object"
+           func_append non_pic_objects " $non_pic_object"
+         else
+           func_fatal_error "\`$arg' is not a valid libtool object"
          fi
        fi
+       ;;
 
-       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
-         eval flag=\"$thread_safe_flag_spec\"
-         linker_flags="$linker_flags $flag"
-       fi
+      *.$libext)
+       # An archive.
+       func_append deplibs " $arg"
+       func_append old_deplibs " $arg"
+       continue
+       ;;
 
-       # Make a backup of the uninstalled library when relinking
-       if test "$mode" = relink; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
-       fi
+      *.la)
+       # A libtool-controlled library.
 
-       # Do each of the archive commands.
-       if test "$module" = yes && test -n "$module_cmds" ; then
-         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-           eval test_cmds=\"$module_expsym_cmds\"
-           cmds=$module_expsym_cmds
-         else
-           eval test_cmds=\"$module_cmds\"
-           cmds=$module_cmds
-         fi
+       func_resolve_sysroot "$arg"
+       if test "$prev" = dlfiles; then
+         # This library was specified with -dlopen.
+         func_append dlfiles " $func_resolve_sysroot_result"
+         prev=
+       elif test "$prev" = dlprefiles; then
+         # The library was specified with -dlpreopen.
+         func_append dlprefiles " $func_resolve_sysroot_result"
+         prev=
        else
-         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-           eval test_cmds=\"$archive_expsym_cmds\"
-           cmds=$archive_expsym_cmds
-         else
-           eval test_cmds=\"$archive_cmds\"
-           cmds=$archive_cmds
-         fi
+         func_append deplibs " $func_resolve_sysroot_result"
        fi
+       continue
+       ;;
 
-       if test "X$skipped_export" != "X:" &&
-          len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-          test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
-         :
-       else
-         # The command line is too long to link in one step, link piecewise
-         # or, if using GNU ld and skipped_export is not :, use a linker
-         # script.
-
-         # Save the value of $output and $libobjs because we want to
-         # use them later.  If we have whole_archive_flag_spec, we
-         # want to use save_libobjs as it was before
-         # whole_archive_flag_spec was expanded, because we can't
-         # assume the linker understands whole_archive_flag_spec.
-         # This may have to be revisited, in case too many
-         # convenience libraries get linked in and end up exceeding
-         # the spec.
-         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
-           save_libobjs=$libobjs
-         fi
-         save_output=$output
-         output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
-
-         # Clear the reloadable object creation command queue and
-         # initialize k to one.
-         test_cmds=
-         concat_cmds=
-         objlist=
-         last_robj=
-         k=1
-
-         if test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
-           output=${output_objdir}/${output_la}.lnkscript
-           func_echo "creating GNU ld script: $output"
-           $ECHO 'INPUT (' > $output
-           for obj in $save_libobjs
-           do
-             $ECHO \""$obj"\" >> $output
-           done
-           $ECHO ')' >> $output
-           delfiles="$delfiles $output"
-         elif test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
-           output=${output_objdir}/${output_la}.lnk
-           func_echo "creating linker input file list: $output"
-           : > $output
-           for obj in $save_libobjs
-           do
-             $ECHO "$obj" >> $output
-           done
-           delfiles="$delfiles $output"
-           output=\"$file_list_spec$output\"
-         else
-           func_echo "creating reloadable object files..."
-           output=$output_objdir/$output_la-${k}.$objext
-           # Loop over the list of objects to be linked.
-           for obj in $save_libobjs
-           do
-             eval test_cmds=\"$reload_cmds $objlist $last_robj\"
-             if test "X$objlist" = X ||
-                { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-                  test "$len" -le "$max_cmd_len"; }; then
-               objlist="$objlist $obj"
-             else
-               # The command $test_cmds is almost too long, add a
-               # command to the queue.
-               if test "$k" -eq 1 ; then
-                 # The first file doesn't have a previous command to add.
-                 eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
-               else
-                 # All subsequent reloadable object files will link in
-                 # the last one created.
-                 eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
-               fi
-               last_robj=$output_objdir/$output_la-${k}.$objext
-               k=`expr $k + 1`
-               output=$output_objdir/$output_la-${k}.$objext
-               objlist=$obj
-               len=1
-             fi
-           done
-           # Handle the remaining objects by creating one last
-           # reloadable object file.  All subsequent reloadable object
-           # files will link in the last one created.
-           test -z "$concat_cmds" || concat_cmds=$concat_cmds~
-           eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
-
-           if ${skipped_export-false}; then
-             func_echo "generating symbol list for \`$libname.la'"
-             export_symbols="$output_objdir/$libname.exp"
-             $opt_dry_run || $RM $export_symbols
-             libobjs=$output
-             # Append the command to create the export file.
-             eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
-           fi
-
-           # Set up a command to remove the reloadable object files
-           # after they are used.
-           i=0
-           while test "$i" -lt "$k"
-           do
-             i=`expr $i + 1`
-             delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
-           done
-
-           func_echo "creating a temporary reloadable object file: $output"
-
-           # Loop through the commands generated above and execute them.
-           save_ifs="$IFS"; IFS='~'
-           for cmd in $concat_cmds; do
-             IFS="$save_ifs"
-             $opt_silent || {
-                 func_quote_for_expand "$cmd"
-                 eval "func_echo $func_quote_for_expand_result"
-             }
-             $opt_dry_run || eval "$cmd" || {
-               lt_exit=$?
+      # Some other compiler argument.
+      *)
+       # Unknown arguments in both finalize_command and compile_command need
+       # to be aesthetically quoted because they are evaled later.
+       func_quote_for_eval "$arg"
+       arg="$func_quote_for_eval_result"
+       ;;
+      esac # arg
 
-               # Restore the uninstalled library and exit
-               if test "$mode" = relink; then
-                 ( cd "$output_objdir" && \
-                   $RM "${realname}T" && \
-                   $MV "${realname}U" "$realname" )
-               fi
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+       func_append compile_command " $arg"
+       func_append finalize_command " $arg"
+      fi
+    done # argument parsing loop
 
-               exit $lt_exit
-             }
-           done
-           IFS="$save_ifs"
-         fi
+    test -n "$prev" && \
+      func_fatal_help "the \`$prevarg' option requires an argument"
 
-         libobjs=$output
-         # Restore the value of output.
-         output=$save_output
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      func_append compile_command " $arg"
+      func_append finalize_command " $arg"
+    fi
 
-         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
-           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
-         fi
-         # Expand the library linking commands again to reset the
-         # value of $libobjs for piecewise linking.
+    oldlibs=
+    # calculate the name of the file, without its directory
+    func_basename "$output"
+    outputname="$func_basename_result"
+    libobjs_save="$libobjs"
 
-         # Do each of the archive commands.
-         if test "$module" = yes && test -n "$module_cmds" ; then
-           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
-             cmds=$module_expsym_cmds
-           else
-             cmds=$module_cmds
-           fi
-         else
-           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
-             cmds=$archive_expsym_cmds
-           else
-             cmds=$archive_cmds
-           fi
-         fi
-       fi
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
 
-       if test -n "$delfiles"; then
-         # Append the command to remove temporary files to $cmds.
-         eval cmds=\"\$cmds~\$RM $delfiles\"
-       fi
+    func_dirname "$output" "/" ""
+    output_objdir="$func_dirname_result$objdir"
+    func_to_tool_file "$output_objdir/"
+    tool_output_objdir=$func_to_tool_file_result
+    # Create the object directory.
+    func_mkdir_p "$output_objdir"
 
-       # Add any objects from preloaded convenience libraries
-       if test -n "$dlprefiles"; then
-         gentop="$output_objdir/${outputname}x"
-         generated="$generated $gentop"
+    # Determine the type of output
+    case $output in
+    "")
+      func_fatal_help "you must specify an output file"
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
 
-         func_extract_archives $gentop $dlprefiles
-         libobjs="$libobjs $func_extract_archives_result"
-       fi
+    specialdeplibs=
 
-       save_ifs="$IFS"; IFS='~'
-       for cmd in $cmds; do
-         IFS="$save_ifs"
-         eval cmd=\"$cmd\"
-         $opt_silent || {
-           func_quote_for_expand "$cmd"
-           eval "func_echo $func_quote_for_expand_result"
-         }
-         $opt_dry_run || eval "$cmd" || {
-           lt_exit=$?
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if $opt_preserve_dup_deps ; then
+       case "$libs " in
+       *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+       esac
+      fi
+      func_append libs " $deplib"
+    done
 
-           # Restore the uninstalled library and exit
-           if test "$mode" = relink; then
-             ( cd "$output_objdir" && \
-               $RM "${realname}T" && \
-               $MV "${realname}U" "$realname" )
-           fi
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
 
-           exit $lt_exit
-         }
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if $opt_duplicate_compiler_generated_deps; then
+       for pre_post_dep in $predeps $postdeps; do
+         case "$pre_post_deps " in
+         *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
+         esac
+         func_append pre_post_deps " $pre_post_dep"
        done
-       IFS="$save_ifs"
-
-       # Restore the uninstalled library and exit
-       if test "$mode" = relink; then
-         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
-
-         if test -n "$convenience"; then
-           if test -z "$whole_archive_flag_spec"; then
-             func_show_eval '${RM}r "$gentop"'
-           fi
-         fi
+      fi
+      pre_post_deps=
+    fi
 
-         exit $EXIT_SUCCESS
-       fi
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
 
-       # Create links to the real library.
-       for linkname in $linknames; do
-         if test "$realname" != "$linkname"; then
-           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
-         fi
+    case $linkmode in
+    lib)
+       passes="conv dlpreopen link"
+       for file in $dlfiles $dlprefiles; do
+         case $file in
+         *.la) ;;
+         *)
+           func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
+           ;;
+         esac
        done
+       ;;
+    prog)
+       compile_deplibs=
+       finalize_deplibs=
+       alldeplibs=no
+       newdlfiles=
+       newdlprefiles=
+       passes="conv scan dlopen dlpreopen link"
+       ;;
+    *)  passes="conv"
+       ;;
+    esac
 
-       # If -module or -export-dynamic was specified, set the dlname.
-       if test "$module" = yes || test "$export_dynamic" = yes; then
-         # On all known operating systems, these are identical.
-         dlname="$soname"
-       fi
+    for pass in $passes; do
+      # The preopen pass in lib mode reverses $deplibs; put it back here
+      # so that -L comes before libs that need it for instance...
+      if test "$linkmode,$pass" = "lib,link"; then
+       ## FIXME: Find the place where the list is rebuilt in the wrong
+       ##        order, and fix it there properly
+        tmp_deplibs=
+       for deplib in $deplibs; do
+         tmp_deplibs="$deplib $tmp_deplibs"
+       done
+       deplibs="$tmp_deplibs"
       fi
-      ;;
 
-    obj)
-      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
-       func_warning "\`-dlopen' is ignored for objects"
-      fi
-
-      test -n "$deplibs" && \
-       func_warning "\`-l' and \`-L' are ignored for objects"
-
-      test -n "$rpath" && \
-       func_warning "\`-rpath' is ignored for objects"
-
-      test -n "$xrpath" && \
-       func_warning "\`-R' is ignored for objects"
-
-      test -n "$vinfo" && \
-       func_warning "\`-version-info' is ignored for objects"
-
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for objects"
-
-      case $output in
-      *.lo)
-       test -n "$objs$old_deplibs" && \
-         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
-
-       libobj="$output"
-       obj=`$ECHO "X$output" | $Xsed -e "$lo2o"`
-       ;;
-      *)
-       libobj=
-       obj="$output"
-       ;;
-      esac
-
-      # Delete the old objects.
-      $opt_dry_run || $RM $obj $libobj
-
-      # Objects from convenience libraries.  This assumes
-      # single-version convenience libraries.  Whenever we create
-      # different ones for PIC/non-PIC, this we'll have to duplicate
-      # the extraction.
-      reload_conv_objs=
-      gentop=
-      # reload_cmds runs $LD directly, so let us get rid of
-      # -Wl from whole_archive_flag_spec
-      wl=
-
-      if test -n "$convenience"; then
-       if test -n "$whole_archive_flag_spec"; then
-         eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
-       else
-         gentop="$output_objdir/${obj}x"
-         generated="$generated $gentop"
-
-         func_extract_archives $gentop $convenience
-         reload_conv_objs="$reload_objs $func_extract_archives_result"
-       fi
-      fi
-
-      # Create the old-style object.
-      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
-
-      output="$obj"
-      func_execute_cmds "$reload_cmds" 'exit $?'
-
-      # Exit if we aren't doing a library object file.
-      if test -z "$libobj"; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       exit $EXIT_SUCCESS
+      if test "$linkmode,$pass" = "lib,link" ||
+        test "$linkmode,$pass" = "prog,scan"; then
+       libs="$deplibs"
+       deplibs=
       fi
-
-      if test "$build_libtool_libs" != yes; then
-       if test -n "$gentop"; then
-         func_show_eval '${RM}r "$gentop"'
-       fi
-
-       # Create an invalid libtool object if no PIC, so that we don't
-       # accidentally link it into a program.
-       # $show "echo timestamp > $libobj"
-       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
-       exit $EXIT_SUCCESS
+      if test "$linkmode" = prog; then
+       case $pass in
+       dlopen) libs="$dlfiles" ;;
+       dlpreopen) libs="$dlprefiles" ;;
+       link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+       esac
       fi
+      if test "$linkmode,$pass" = "lib,dlpreopen"; then
+       # Collect and forward deplibs of preopened libtool libs
+       for lib in $dlprefiles; do
+         # Ignore non-libtool-libs
+         dependency_libs=
+         func_resolve_sysroot "$lib"
+         case $lib in
+         *.la) func_source "$func_resolve_sysroot_result" ;;
+         esac
 
-      if test -n "$pic_flag" || test "$pic_mode" != default; then
-       # Only do commands if we really have different PIC objects.
-       reload_objs="$libobjs $reload_conv_objs"
-       output="$libobj"
-       func_execute_cmds "$reload_cmds" 'exit $?'
+         # Collect preopened libtool deplibs, except any this library
+         # has declared as weak libs
+         for deplib in $dependency_libs; do
+           func_basename "$deplib"
+            deplib_base=$func_basename_result
+           case " $weak_libs " in
+           *" $deplib_base "*) ;;
+           *) func_append deplibs " $deplib" ;;
+           esac
+         done
+       done
+       libs="$dlprefiles"
       fi
-
-      if test -n "$gentop"; then
-       func_show_eval '${RM}r "$gentop"'
+      if test "$pass" = dlopen; then
+       # Collect dlpreopened libraries
+       save_deplibs="$deplibs"
+       deplibs=
       fi
 
-      exit $EXIT_SUCCESS
-      ;;
-
-    prog)
-      case $host in
-       *cygwin*) func_stripname '' '.exe' "$output"
-                 output=$func_stripname_result.exe;;
-      esac
-      test -n "$vinfo" && \
-       func_warning "\`-version-info' is ignored for programs"
-
-      test -n "$release" && \
-       func_warning "\`-release' is ignored for programs"
+      for deplib in $libs; do
+       lib=
+       found=no
+       case $deplib in
+       -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
+        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           func_append compiler_flags " $deplib"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -l*)
+         if test "$linkmode" != lib && test "$linkmode" != prog; then
+           func_warning "\`-l' is ignored for archives/objects"
+           continue
+         fi
+         func_stripname '-l' '' "$deplib"
+         name=$func_stripname_result
+         if test "$linkmode" = lib; then
+           searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+         else
+           searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+         fi
+         for searchdir in $searchdirs; do
+           for search_ext in .la $std_shrext .so .a; do
+             # Search the libtool library
+             lib="$searchdir/lib${name}${search_ext}"
+             if test -f "$lib"; then
+               if test "$search_ext" = ".la"; then
+                 found=yes
+               else
+                 found=no
+               fi
+               break 2
+             fi
+           done
+         done
+         if test "$found" != yes; then
+           # deplib doesn't seem to be a libtool library
+           if test "$linkmode,$pass" = "prog,link"; then
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             deplibs="$deplib $deplibs"
+             test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+           fi
+           continue
+         else # deplib is a libtool library
+           # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+           # We need to do some special things here, and not later.
+           if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+             case " $predeps $postdeps " in
+             *" $deplib "*)
+               if func_lalib_p "$lib"; then
+                 library_names=
+                 old_library=
+                 func_source "$lib"
+                 for l in $old_library $library_names; do
+                   ll="$l"
+                 done
+                 if test "X$ll" = "X$old_library" ; then # only static version available
+                   found=no
+                   func_dirname "$lib" "" "."
+                   ladir="$func_dirname_result"
+                   lib=$ladir/$old_library
+                   if test "$linkmode,$pass" = "prog,link"; then
+                     compile_deplibs="$deplib $compile_deplibs"
+                     finalize_deplibs="$deplib $finalize_deplibs"
+                   else
+                     deplibs="$deplib $deplibs"
+                     test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+                   fi
+                   continue
+                 fi
+               fi
+               ;;
+             *) ;;
+             esac
+           fi
+         fi
+         ;; # -l
+       *.ltframework)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+           if test "$linkmode" = lib ; then
+               case "$new_inherited_linker_flags " in
+                   *" $deplib "*) ;;
+                   * ) func_append new_inherited_linker_flags " $deplib" ;;
+               esac
+           fi
+         fi
+         continue
+         ;;
+       -L*)
+         case $linkmode in
+         lib)
+           deplibs="$deplib $deplibs"
+           test "$pass" = conv && continue
+           newdependency_libs="$deplib $newdependency_libs"
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         prog)
+           if test "$pass" = conv; then
+             deplibs="$deplib $deplibs"
+             continue
+           fi
+           if test "$pass" = scan; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           func_stripname '-L' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           func_append newlib_search_path " $func_resolve_sysroot_result"
+           ;;
+         *)
+           func_warning "\`-L' is ignored for archives/objects"
+           ;;
+         esac # linkmode
+         continue
+         ;; # -L
+       -R*)
+         if test "$pass" = link; then
+           func_stripname '-R' '' "$deplib"
+           func_resolve_sysroot "$func_stripname_result"
+           dir=$func_resolve_sysroot_result
+           # Make sure the xrpath contains only unique directories.
+           case "$xrpath " in
+           *" $dir "*) ;;
+           *) func_append xrpath " $dir" ;;
+           esac
+         fi
+         deplibs="$deplib $deplibs"
+         continue
+         ;;
+       *.la)
+         func_resolve_sysroot "$deplib"
+         lib=$func_resolve_sysroot_result
+         ;;
+       *.$libext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+           continue
+         fi
+         case $linkmode in
+         lib)
+           # Linking convenience modules into shared libraries is allowed,
+           # but linking other static libraries is non-portable.
+           case " $dlpreconveniencelibs " in
+           *" $deplib "*) ;;
+           *)
+             valid_a_lib=no
+             case $deplibs_check_method in
+               match_pattern*)
+                 set dummy $deplibs_check_method; shift
+                 match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+                 if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
+                   | $EGREP "$match_pattern_regex" > /dev/null; then
+                   valid_a_lib=yes
+                 fi
+               ;;
+               pass_all)
+                 valid_a_lib=yes
+               ;;
+             esac
+             if test "$valid_a_lib" != yes; then
+               echo
+               $ECHO "*** Warning: Trying to link with static lib archive $deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because the file extensions .$libext of this argument makes me believe"
+               echo "*** that it is just a static archive that I should not use here."
+             else
+               echo
+               $ECHO "*** Warning: Linking the shared library $output against the"
+               $ECHO "*** static library $deplib is not portable!"
+               deplibs="$deplib $deplibs"
+             fi
+             ;;
+           esac
+           continue
+           ;;
+         prog)
+           if test "$pass" != link; then
+             deplibs="$deplib $deplibs"
+           else
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           fi
+           continue
+           ;;
+         esac # linkmode
+         ;; # *.$libext
+       *.lo | *.$objext)
+         if test "$pass" = conv; then
+           deplibs="$deplib $deplibs"
+         elif test "$linkmode" = prog; then
+           if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+             # If there is no dlopen support or we're linking statically,
+             # we need to preload.
+             func_append newdlprefiles " $deplib"
+             compile_deplibs="$deplib $compile_deplibs"
+             finalize_deplibs="$deplib $finalize_deplibs"
+           else
+             func_append newdlfiles " $deplib"
+           fi
+         fi
+         continue
+         ;;
+       %DEPLIBS%)
+         alldeplibs=yes
+         continue
+         ;;
+       esac # case $deplib
+
+       if test "$found" = yes || test -f "$lib"; then :
+       else
+         func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
+       fi
+
+       # Check to see that this really is a libtool archive.
+       func_lalib_unsafe_p "$lib" \
+         || func_fatal_error "\`$lib' is not a valid libtool archive"
+
+       func_dirname "$lib" "" "."
+       ladir="$func_dirname_result"
+
+       dlname=
+       dlopen=
+       dlpreopen=
+       libdir=
+       library_names=
+       old_library=
+       inherited_linker_flags=
+       # If the library was installed with an old release of libtool,
+       # it will not redefine variables installed, or shouldnotlink
+       installed=yes
+       shouldnotlink=no
+       avoidtemprpath=
+
+
+       # Read the .la file
+       func_source "$lib"
+
+       # Convert "-framework foo" to "foo.ltframework"
+       if test -n "$inherited_linker_flags"; then
+         tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
+         for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
+           case " $new_inherited_linker_flags " in
+             *" $tmp_inherited_linker_flag "*) ;;
+             *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
+           esac
+         done
+       fi
+       dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       if test "$linkmode,$pass" = "lib,link" ||
+          test "$linkmode,$pass" = "prog,scan" ||
+          { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+         test -n "$dlopen" && func_append dlfiles " $dlopen"
+         test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
+       fi
+
+       if test "$pass" = conv; then
+         # Only check for convenience libraries
+         deplibs="$lib $deplibs"
+         if test -z "$libdir"; then
+           if test -z "$old_library"; then
+             func_fatal_error "cannot find name of link library for \`$lib'"
+           fi
+           # It is a libtool convenience library, so add in its objects.
+           func_append convenience " $ladir/$objdir/$old_library"
+           func_append old_convenience " $ladir/$objdir/$old_library"
+         elif test "$linkmode" != prog && test "$linkmode" != lib; then
+           func_fatal_error "\`$lib' is not a convenience library"
+         fi
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           deplibs="$deplib $deplibs"
+           if $opt_preserve_dup_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+             esac
+           fi
+           func_append tmp_libs " $deplib"
+         done
+         continue
+       fi # $pass = conv
+
+
+       # Get the name of the library we link against.
+       linklib=
+       if test -n "$old_library" &&
+          { test "$prefer_static_libs" = yes ||
+            test "$prefer_static_libs,$installed" = "built,no"; }; then
+         linklib=$old_library
+       else
+         for l in $old_library $library_names; do
+           linklib="$l"
+         done
+       fi
+       if test -z "$linklib"; then
+         func_fatal_error "cannot find name of link library for \`$lib'"
+       fi
+
+       # This library was specified with -dlopen.
+       if test "$pass" = dlopen; then
+         if test -z "$libdir"; then
+           func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
+         fi
+         if test -z "$dlname" ||
+            test "$dlopen_support" != yes ||
+            test "$build_libtool_libs" = no; then
+           # If there is no dlname, no dlopen support or we're linking
+           # statically, we need to preload.  We also need to preload any
+           # dependent libraries so libltdl's deplib preloader doesn't
+           # bomb out in the load deplibs phase.
+           func_append dlprefiles " $lib $dependency_libs"
+         else
+           func_append newdlfiles " $lib"
+         fi
+         continue
+       fi # $pass = dlopen
+
+       # We need an absolute path.
+       case $ladir in
+       [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+       *)
+         abs_ladir=`cd "$ladir" && pwd`
+         if test -z "$abs_ladir"; then
+           func_warning "cannot determine absolute directory name of \`$ladir'"
+           func_warning "passing it literally to the linker, although it might fail"
+           abs_ladir="$ladir"
+         fi
+         ;;
+       esac
+       func_basename "$lib"
+       laname="$func_basename_result"
+
+       # Find the relevant object directory and library name.
+       if test "X$installed" = Xyes; then
+         if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           func_warning "library \`$lib' was moved."
+           dir="$ladir"
+           absdir="$abs_ladir"
+           libdir="$abs_ladir"
+         else
+           dir="$lt_sysroot$libdir"
+           absdir="$lt_sysroot$libdir"
+         fi
+         test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+       else
+         if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+           dir="$ladir"
+           absdir="$abs_ladir"
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         else
+           dir="$ladir/$objdir"
+           absdir="$abs_ladir/$objdir"
+           # Remove this search path later
+           func_append notinst_path " $abs_ladir"
+         fi
+       fi # $installed = yes
+       func_stripname 'lib' '.la' "$laname"
+       name=$func_stripname_result
+
+       # This library was specified with -dlpreopen.
+       if test "$pass" = dlpreopen; then
+         if test -z "$libdir" && test "$linkmode" = prog; then
+           func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
+         fi
+         case "$host" in
+           # special handling for platforms with PE-DLLs.
+           *cygwin* | *mingw* | *cegcc* )
+             # Linker will automatically link against shared library if both
+             # static and shared are present.  Therefore, ensure we extract
+             # symbols from the import library if a shared library is present
+             # (otherwise, the dlopen module name will be incorrect).  We do
+             # this by putting the import library name into $newdlprefiles.
+             # We recover the dlopen module name by 'saving' the la file
+             # name in a special purpose variable, and (later) extracting the
+             # dlname from the la file.
+             if test -n "$dlname"; then
+               func_tr_sh "$dir/$linklib"
+               eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
+               func_append newdlprefiles " $dir/$linklib"
+             else
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             fi
+           ;;
+           * )
+             # Prefer using a static library (so that no silly _DYNAMIC symbols
+             # are required to link).
+             if test -n "$old_library"; then
+               func_append newdlprefiles " $dir/$old_library"
+               # Keep a list of preopened convenience libraries to check
+               # that they are being used correctly in the link pass.
+               test -z "$libdir" && \
+                 func_append dlpreconveniencelibs " $dir/$old_library"
+             # Otherwise, use the dlname, so that lt_dlopen finds it.
+             elif test -n "$dlname"; then
+               func_append newdlprefiles " $dir/$dlname"
+             else
+               func_append newdlprefiles " $dir/$linklib"
+             fi
+           ;;
+         esac
+       fi # $pass = dlpreopen
+
+       if test -z "$libdir"; then
+         # Link the convenience library
+         if test "$linkmode" = lib; then
+           deplibs="$dir/$old_library $deplibs"
+         elif test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$dir/$old_library $compile_deplibs"
+           finalize_deplibs="$dir/$old_library $finalize_deplibs"
+         else
+           deplibs="$lib $deplibs" # used for prog,scan pass
+         fi
+         continue
+       fi
+
+
+       if test "$linkmode" = prog && test "$pass" != link; then
+         func_append newlib_search_path " $ladir"
+         deplibs="$lib $deplibs"
+
+         linkalldeplibs=no
+         if test "$link_all_deplibs" != no || test -z "$library_names" ||
+            test "$build_libtool_libs" = no; then
+           linkalldeplibs=yes
+         fi
+
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           case $deplib in
+           -L*) func_stripname '-L' '' "$deplib"
+                func_resolve_sysroot "$func_stripname_result"
+                func_append newlib_search_path " $func_resolve_sysroot_result"
+                ;;
+           esac
+           # Need to link against all dependency_libs?
+           if test "$linkalldeplibs" = yes; then
+             deplibs="$deplib $deplibs"
+           else
+             # Need to hardcode shared library paths
+             # or/and link against static libraries
+             newdependency_libs="$deplib $newdependency_libs"
+           fi
+           if $opt_preserve_dup_deps ; then
+             case "$tmp_libs " in
+             *" $deplib "*) func_append specialdeplibs " $deplib" ;;
+             esac
+           fi
+           func_append tmp_libs " $deplib"
+         done # for deplib
+         continue
+       fi # $linkmode = prog...
+
+       if test "$linkmode,$pass" = "prog,link"; then
+         if test -n "$library_names" &&
+            { { test "$prefer_static_libs" = no ||
+                test "$prefer_static_libs,$installed" = "built,yes"; } ||
+              test -z "$old_library"; }; then
+           # We need to hardcode the library path
+           if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+             # Make sure the rpath contains only unique directories.
+             case "$temp_rpath:" in
+             *"$absdir:"*) ;;
+             *) func_append temp_rpath "$absdir:" ;;
+             esac
+           fi
+
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi # $linkmode,$pass = prog,link...
+
+         if test "$alldeplibs" = yes &&
+            { test "$deplibs_check_method" = pass_all ||
+              { test "$build_libtool_libs" = yes &&
+                test -n "$library_names"; }; }; then
+           # We only need to search for static libraries
+           continue
+         fi
+       fi
+
+       link_static=no # Whether the deplib will be linked statically
+       use_static_libs=$prefer_static_libs
+       if test "$use_static_libs" = built && test "$installed" = yes; then
+         use_static_libs=no
+       fi
+       if test -n "$library_names" &&
+          { test "$use_static_libs" = no || test -z "$old_library"; }; then
+         case $host in
+         *cygwin* | *mingw* | *cegcc*)
+             # No point in relinking DLLs because paths are not encoded
+             func_append notinst_deplibs " $lib"
+             need_relink=no
+           ;;
+         *)
+           if test "$installed" = no; then
+             func_append notinst_deplibs " $lib"
+             need_relink=yes
+           fi
+           ;;
+         esac
+         # This is a shared library
+
+         # Warn about portability, can't link against -module's on some
+         # systems (darwin).  Don't bleat about dlopened modules though!
+         dlopenmodule=""
+         for dlpremoduletest in $dlprefiles; do
+           if test "X$dlpremoduletest" = "X$lib"; then
+             dlopenmodule="$dlpremoduletest"
+             break
+           fi
+         done
+         if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
+           echo
+           if test "$linkmode" = prog; then
+             $ECHO "*** Warning: Linking the executable $output against the loadable module"
+           else
+             $ECHO "*** Warning: Linking the shared library $output against the loadable module"
+           fi
+           $ECHO "*** $linklib is not portable!"
+         fi
+         if test "$linkmode" = lib &&
+            test "$hardcode_into_libs" = yes; then
+           # Hardcode the library path.
+           # Skip directories that are in the system default run-time
+           # search path.
+           case " $sys_lib_dlsearch_path " in
+           *" $absdir "*) ;;
+           *)
+             case "$compile_rpath " in
+             *" $absdir "*) ;;
+             *) func_append compile_rpath " $absdir" ;;
+             esac
+             ;;
+           esac
+           case " $sys_lib_dlsearch_path " in
+           *" $libdir "*) ;;
+           *)
+             case "$finalize_rpath " in
+             *" $libdir "*) ;;
+             *) func_append finalize_rpath " $libdir" ;;
+             esac
+             ;;
+           esac
+         fi
+
+         if test -n "$old_archive_from_expsyms_cmds"; then
+           # figure out the soname
+           set dummy $library_names
+           shift
+           realname="$1"
+           shift
+           libname=`eval "\\$ECHO \"$libname_spec\""`
+           # use dlname if we got it. it's perfectly good, no?
+           if test -n "$dlname"; then
+             soname="$dlname"
+           elif test -n "$soname_spec"; then
+             # bleh windows
+             case $host in
+             *cygwin* | mingw* | *cegcc*)
+               func_arith $current - $age
+               major=$func_arith_result
+               versuffix="-$major"
+               ;;
+             esac
+             eval soname=\"$soname_spec\"
+           else
+             soname="$realname"
+           fi
+
+           # Make a new name for the extract_expsyms_cmds to use
+           soroot="$soname"
+           func_basename "$soroot"
+           soname="$func_basename_result"
+           func_stripname 'lib' '.dll' "$soname"
+           newlib=libimp-$func_stripname_result.a
+
+           # If the library has no export list, then create one now
+           if test -f "$output_objdir/$soname-def"; then :
+           else
+             func_verbose "extracting exported symbol list from \`$soname'"
+             func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
+           fi
+
+           # Create $newlib
+           if test -f "$output_objdir/$newlib"; then :; else
+             func_verbose "generating import library for \`$soname'"
+             func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
+           fi
+           # make sure the library variables are pointing to the new library
+           dir=$output_objdir
+           linklib=$newlib
+         fi # test -n "$old_archive_from_expsyms_cmds"
+
+         if test "$linkmode" = prog || test "$opt_mode" != relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           lib_linked=yes
+           case $hardcode_action in
+           immediate | unsupported)
+             if test "$hardcode_direct" = no; then
+               add="$dir/$linklib"
+               case $host in
+                 *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+                 *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+                 *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+                   *-*-unixware7*) add_dir="-L$dir" ;;
+                 *-*-darwin* )
+                   # if the lib is a (non-dlopened) module then we can not
+                   # link against it, someone is ignoring the earlier warnings
+                   if /usr/bin/file -L $add 2> /dev/null |
+                        $GREP ": [^:]* bundle" >/dev/null ; then
+                     if test "X$dlopenmodule" != "X$lib"; then
+                       $ECHO "*** Warning: lib $linklib is a module, not a shared library"
+                       if test -z "$old_library" ; then
+                         echo
+                         echo "*** And there doesn't seem to be a static archive available"
+                         echo "*** The link will probably fail, sorry"
+                       else
+                         add="$dir/$old_library"
+                       fi
+                     elif test -n "$old_library"; then
+                       add="$dir/$old_library"
+                     fi
+                   fi
+               esac
+             elif test "$hardcode_minus_L" = no; then
+               case $host in
+               *-*-sunos*) add_shlibpath="$dir" ;;
+               esac
+               add_dir="-L$dir"
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = no; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           relink)
+             if test "$hardcode_direct" = yes &&
+                test "$hardcode_direct_absolute" = no; then
+               add="$dir/$linklib"
+             elif test "$hardcode_minus_L" = yes; then
+               add_dir="-L$absdir"
+               # Try looking first in the location we're being installed to.
+               if test -n "$inst_prefix_dir"; then
+                 case $libdir in
+                   [\\/]*)
+                     func_append add_dir " -L$inst_prefix_dir$libdir"
+                     ;;
+                 esac
+               fi
+               add="-l$name"
+             elif test "$hardcode_shlibpath_var" = yes; then
+               add_shlibpath="$dir"
+               add="-l$name"
+             else
+               lib_linked=no
+             fi
+             ;;
+           *) lib_linked=no ;;
+           esac
+
+           if test "$lib_linked" != yes; then
+             func_fatal_configuration "unsupported hardcode properties"
+           fi
+
+           if test -n "$add_shlibpath"; then
+             case :$compile_shlibpath: in
+             *":$add_shlibpath:"*) ;;
+             *) func_append compile_shlibpath "$add_shlibpath:" ;;
+             esac
+           fi
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+             test -n "$add" && compile_deplibs="$add $compile_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+             if test "$hardcode_direct" != yes &&
+                test "$hardcode_minus_L" != yes &&
+                test "$hardcode_shlibpath_var" = yes; then
+               case :$finalize_shlibpath: in
+               *":$libdir:"*) ;;
+               *) func_append finalize_shlibpath "$libdir:" ;;
+               esac
+             fi
+           fi
+         fi
+
+         if test "$linkmode" = prog || test "$opt_mode" = relink; then
+           add_shlibpath=
+           add_dir=
+           add=
+           # Finalize command for both is simple: just hardcode it.
+           if test "$hardcode_direct" = yes &&
+              test "$hardcode_direct_absolute" = no; then
+             add="$libdir/$linklib"
+           elif test "$hardcode_minus_L" = yes; then
+             add_dir="-L$libdir"
+             add="-l$name"
+           elif test "$hardcode_shlibpath_var" = yes; then
+             case :$finalize_shlibpath: in
+             *":$libdir:"*) ;;
+             *) func_append finalize_shlibpath "$libdir:" ;;
+             esac
+             add="-l$name"
+           elif test "$hardcode_automatic" = yes; then
+             if test -n "$inst_prefix_dir" &&
+                test -f "$inst_prefix_dir$libdir/$linklib" ; then
+               add="$inst_prefix_dir$libdir/$linklib"
+             else
+               add="$libdir/$linklib"
+             fi
+           else
+             # We cannot seem to hardcode it, guess we'll fake it.
+             add_dir="-L$libdir"
+             # Try looking first in the location we're being installed to.
+             if test -n "$inst_prefix_dir"; then
+               case $libdir in
+                 [\\/]*)
+                   func_append add_dir " -L$inst_prefix_dir$libdir"
+                   ;;
+               esac
+             fi
+             add="-l$name"
+           fi
+
+           if test "$linkmode" = prog; then
+             test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+             test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+           else
+             test -n "$add_dir" && deplibs="$add_dir $deplibs"
+             test -n "$add" && deplibs="$add $deplibs"
+           fi
+         fi
+       elif test "$linkmode" = prog; then
+         # Here we assume that one of hardcode_direct or hardcode_minus_L
+         # is not unsupported.  This is valid on all known static and
+         # shared platforms.
+         if test "$hardcode_direct" != unsupported; then
+           test -n "$old_library" && linklib="$old_library"
+           compile_deplibs="$dir/$linklib $compile_deplibs"
+           finalize_deplibs="$dir/$linklib $finalize_deplibs"
+         else
+           compile_deplibs="-l$name -L$dir $compile_deplibs"
+           finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+         fi
+       elif test "$build_libtool_libs" = yes; then
+         # Not a shared library
+         if test "$deplibs_check_method" != pass_all; then
+           # We're trying link a shared library against a static one
+           # but the system doesn't support it.
+
+           # Just print a warning and add the library to dependency_libs so
+           # that the program can be linked against the static library.
+           echo
+           $ECHO "*** Warning: This system can not link to static lib archive $lib."
+           echo "*** I have the capability to make that library automatically link in when"
+           echo "*** you link to this library.  But I can only do this if you have a"
+           echo "*** shared version of the library, which you do not appear to have."
+           if test "$module" = yes; then
+             echo "*** But as you try to build a module library, libtool will still create "
+             echo "*** a static module, that should work as long as the dlopening application"
+             echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+             if test -z "$global_symbol_pipe"; then
+               echo
+               echo "*** However, this would only work if libtool was able to extract symbol"
+               echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+               echo "*** not find such a program.  So, this module is probably useless."
+               echo "*** \`nm' from GNU binutils and a full rebuild may help."
+             fi
+             if test "$build_old_libs" = no; then
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         else
+           deplibs="$dir/$old_library $deplibs"
+           link_static=yes
+         fi
+       fi # link shared/static library?
+
+       if test "$linkmode" = lib; then
+         if test -n "$dependency_libs" &&
+            { test "$hardcode_into_libs" != yes ||
+              test "$build_old_libs" = yes ||
+              test "$link_static" = yes; }; then
+           # Extract -R from dependency_libs
+           temp_deplibs=
+           for libdir in $dependency_libs; do
+             case $libdir in
+             -R*) func_stripname '-R' '' "$libdir"
+                  temp_xrpath=$func_stripname_result
+                  case " $xrpath " in
+                  *" $temp_xrpath "*) ;;
+                  *) func_append xrpath " $temp_xrpath";;
+                  esac;;
+             *) func_append temp_deplibs " $libdir";;
+             esac
+           done
+           dependency_libs="$temp_deplibs"
+         fi
+
+         func_append newlib_search_path " $absdir"
+         # Link against this library
+         test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+         # ... and its dependency_libs
+         tmp_libs=
+         for deplib in $dependency_libs; do
+           newdependency_libs="$deplib $newdependency_libs"
+           case $deplib in
+              -L*) func_stripname '-L' '' "$deplib"
+                   func_resolve_sysroot "$func_stripname_result";;
+              *) func_resolve_sysroot "$deplib" ;;
+            esac
+           if $opt_preserve_dup_deps ; then
+             case "$tmp_libs " in
+             *" $func_resolve_sysroot_result "*)
+                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
+             esac
+           fi
+           func_append tmp_libs " $func_resolve_sysroot_result"
+         done
+
+         if test "$link_all_deplibs" != no; then
+           # Add the search paths of all dependency libraries
+           for deplib in $dependency_libs; do
+             path=
+             case $deplib in
+             -L*) path="$deplib" ;;
+             *.la)
+               func_resolve_sysroot "$deplib"
+               deplib=$func_resolve_sysroot_result
+               func_dirname "$deplib" "" "."
+               dir=$func_dirname_result
+               # We need an absolute path.
+               case $dir in
+               [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+               *)
+                 absdir=`cd "$dir" && pwd`
+                 if test -z "$absdir"; then
+                   func_warning "cannot determine absolute directory name of \`$dir'"
+                   absdir="$dir"
+                 fi
+                 ;;
+               esac
+               if $GREP "^installed=no" $deplib > /dev/null; then
+               case $host in
+               *-*-darwin*)
+                 depdepl=
+                 eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+                 if test -n "$deplibrary_names" ; then
+                   for tmp in $deplibrary_names ; do
+                     depdepl=$tmp
+                   done
+                   if test -f "$absdir/$objdir/$depdepl" ; then
+                     depdepl="$absdir/$objdir/$depdepl"
+                     darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
+                      if test -z "$darwin_install_name"; then
+                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
+                      fi
+                     func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
+                     func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
+                     path=
+                   fi
+                 fi
+                 ;;
+               *)
+                 path="-L$absdir/$objdir"
+                 ;;
+               esac
+               else
+                 eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+                 test -z "$libdir" && \
+                   func_fatal_error "\`$deplib' is not a valid libtool archive"
+                 test "$absdir" != "$libdir" && \
+                   func_warning "\`$deplib' seems to be moved"
+
+                 path="-L$absdir"
+               fi
+               ;;
+             esac
+             case " $deplibs " in
+             *" $path "*) ;;
+             *) deplibs="$path $deplibs" ;;
+             esac
+           done
+         fi # link_all_deplibs != no
+       fi # linkmode = lib
+      done # for deplib in $libs
+      if test "$pass" = link; then
+       if test "$linkmode" = "prog"; then
+         compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
+         finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
+       else
+         compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       fi
+      fi
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+       # Link the dlpreopened libraries before other libraries
+       for deplib in $save_deplibs; do
+         deplibs="$deplib $deplibs"
+       done
+      fi
+      if test "$pass" != dlopen; then
+       if test "$pass" != conv; then
+         # Make sure lib_search_path contains only unique directories.
+         lib_search_path=
+         for dir in $newlib_search_path; do
+           case "$lib_search_path " in
+           *" $dir "*) ;;
+           *) func_append lib_search_path " $dir" ;;
+           esac
+         done
+         newlib_search_path=
+       fi
+
+       if test "$linkmode,$pass" != "prog,link"; then
+         vars="deplibs"
+       else
+         vars="compile_deplibs finalize_deplibs"
+       fi
+       for var in $vars dependency_libs; do
+         # Add libraries to $var in reverse order
+         eval tmp_libs=\"\$$var\"
+         new_libs=
+         for deplib in $tmp_libs; do
+           # FIXME: Pedantically, this is the right thing to do, so
+           #        that some nasty dependency loop isn't accidentally
+           #        broken:
+           #new_libs="$deplib $new_libs"
+           # Pragmatically, this seems to cause very few problems in
+           # practice:
+           case $deplib in
+           -L*) new_libs="$deplib $new_libs" ;;
+           -R*) ;;
+           *)
+             # And here is the reason: when a library appears more
+             # than once as an explicit dependence of a library, or
+             # is implicitly linked in more than once by the
+             # compiler, it is considered special, and multiple
+             # occurrences thereof are not removed.  Compare this
+             # with having the same library being listed as a
+             # dependency of multiple other libraries: in this case,
+             # we know (pedantically, we assume) the library does not
+             # need to be listed more than once, so we keep only the
+             # last copy.  This is not always right, but it is rare
+             # enough that we require users that really mean to play
+             # such unportable linking tricks to link the library
+             # using -Wl,-lname, so that libtool does not consider it
+             # for duplicate removal.
+             case " $specialdeplibs " in
+             *" $deplib "*) new_libs="$deplib $new_libs" ;;
+             *)
+               case " $new_libs " in
+               *" $deplib "*) ;;
+               *) new_libs="$deplib $new_libs" ;;
+               esac
+               ;;
+             esac
+             ;;
+           esac
+         done
+         tmp_libs=
+         for deplib in $new_libs; do
+           case $deplib in
+           -L*)
+             case " $tmp_libs " in
+             *" $deplib "*) ;;
+             *) func_append tmp_libs " $deplib" ;;
+             esac
+             ;;
+           *) func_append tmp_libs " $deplib" ;;
+           esac
+         done
+         eval $var=\"$tmp_libs\"
+       done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+       case " $predeps $postdeps $compiler_lib_search_path " in
+       *" $i "*)
+         i=""
+         ;;
+       esac
+       if test -n "$i" ; then
+         func_append tmp_libs " $i"
+       fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+    fi
+    if test "$linkmode" = prog || test "$linkmode" = lib; then
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for archives"
+      fi
+
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for archives" ;;
+      esac
+
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for archives"
+
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for archives"
+
+      test -n "$vinfo" && \
+       func_warning "\`-version-info/-version-number' is ignored for archives"
+
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for archives"
+
+      test -n "$export_symbols$export_symbols_regex" && \
+       func_warning "\`-export-symbols' is ignored for archives"
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      func_append objs "$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+       func_stripname 'lib' '.la' "$outputname"
+       name=$func_stripname_result
+       eval shared_ext=\"$shrext_cmds\"
+       eval libname=\"$libname_spec\"
+       ;;
+      *)
+       test "$module" = no && \
+         func_fatal_help "libtool library \`$output' must begin with \`lib'"
+
+       if test "$need_lib_prefix" != no; then
+         # Add the "lib" prefix for modules if required
+         func_stripname '' '.la' "$outputname"
+         name=$func_stripname_result
+         eval shared_ext=\"$shrext_cmds\"
+         eval libname=\"$libname_spec\"
+       else
+         func_stripname '' '.la' "$outputname"
+         libname=$func_stripname_result
+       fi
+       ;;
+      esac
+
+      if test -n "$objs"; then
+       if test "$deplibs_check_method" != pass_all; then
+         func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
+       else
+         echo
+         $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
+         $ECHO "*** objects $objs is not portable!"
+         func_append libobjs " $objs"
+       fi
+      fi
+
+      test "$dlself" != no && \
+       func_warning "\`-dlopen self' is ignored for libtool libraries"
+
+      set dummy $rpath
+      shift
+      test "$#" -gt 1 && \
+       func_warning "ignoring multiple \`-rpath's for a libtool library"
+
+      install_libdir="$1"
+
+      oldlibs=
+      if test -z "$rpath"; then
+       if test "$build_libtool_libs" = yes; then
+         # Building a libtool convenience library.
+         # Some compilers have problems with a `.al' extension so
+         # convenience libraries should have the same extension an
+         # archive normally would.
+         oldlibs="$output_objdir/$libname.$libext $oldlibs"
+         build_libtool_libs=convenience
+         build_old_libs=yes
+       fi
+
+       test -n "$vinfo" && \
+         func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
+
+       test -n "$release" && \
+         func_warning "\`-release' is ignored for convenience libraries"
+      else
+
+       # Parse the version information argument.
+       save_ifs="$IFS"; IFS=':'
+       set dummy $vinfo 0 0 0
+       shift
+       IFS="$save_ifs"
+
+       test -n "$7" && \
+         func_fatal_help "too many parameters to \`-version-info'"
+
+       # convert absolute version numbers to libtool ages
+       # this retains compatibility with .la files and attempts
+       # to make the code below a bit more comprehensible
+
+       case $vinfo_number in
+       yes)
+         number_major="$1"
+         number_minor="$2"
+         number_revision="$3"
+         #
+         # There are really only two kinds -- those that
+         # use the current revision as the major version
+         # and those that subtract age and use age as
+         # a minor version.  But, then there is irix
+         # which has an extra 1 added just for fun
+         #
+         case $version_type in
+         # correct linux to gnu/linux during the next big refactor
+         darwin|linux|osf|windows|none)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_revision"
+           ;;
+         freebsd-aout|freebsd-elf|qnx|sunos)
+           current="$number_major"
+           revision="$number_minor"
+           age="0"
+           ;;
+         irix|nonstopux)
+           func_arith $number_major + $number_minor
+           current=$func_arith_result
+           age="$number_minor"
+           revision="$number_minor"
+           lt_irix_increment=no
+           ;;
+         esac
+         ;;
+       no)
+         current="$1"
+         revision="$2"
+         age="$3"
+         ;;
+       esac
+
+       # Check that each of the things are valid numbers.
+       case $current in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "CURRENT \`$current' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $revision in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "REVISION \`$revision' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       case $age in
+       0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+       *)
+         func_error "AGE \`$age' must be a nonnegative integer"
+         func_fatal_error "\`$vinfo' is not valid version information"
+         ;;
+       esac
+
+       if test "$age" -gt "$current"; then
+         func_error "AGE \`$age' is greater than the current interface number \`$current'"
+         func_fatal_error "\`$vinfo' is not valid version information"
+       fi
+
+       # Calculate the version variables.
+       major=
+       versuffix=
+       verstring=
+       case $version_type in
+       none) ;;
+
+       darwin)
+         # Like Linux, but with the current version available in
+         # verstring for coding it into the library header
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         # Darwin ld doesn't like 0 for these options...
+         func_arith $current + 1
+         minor_current=$func_arith_result
+         xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+         verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+         ;;
+
+       freebsd-aout)
+         major=".$current"
+         versuffix=".$current.$revision";
+         ;;
+
+       freebsd-elf)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       irix | nonstopux)
+         if test "X$lt_irix_increment" = "Xno"; then
+           func_arith $current - $age
+         else
+           func_arith $current - $age + 1
+         fi
+         major=$func_arith_result
+
+         case $version_type in
+           nonstopux) verstring_prefix=nonstopux ;;
+           *)         verstring_prefix=sgi ;;
+         esac
+         verstring="$verstring_prefix$major.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$revision
+         while test "$loop" -ne 0; do
+           func_arith $revision - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring_prefix$major.$iface:$verstring"
+         done
+
+         # Before this point, $major must not contain `.'.
+         major=.$major
+         versuffix="$major.$revision"
+         ;;
+
+       linux) # correct to gnu/linux during the next big refactor
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix="$major.$age.$revision"
+         ;;
+
+       osf)
+         func_arith $current - $age
+         major=.$func_arith_result
+         versuffix=".$current.$age.$revision"
+         verstring="$current.$age.$revision"
+
+         # Add in all the interfaces that we are compatible with.
+         loop=$age
+         while test "$loop" -ne 0; do
+           func_arith $current - $loop
+           iface=$func_arith_result
+           func_arith $loop - 1
+           loop=$func_arith_result
+           verstring="$verstring:${iface}.0"
+         done
+
+         # Make executables depend on our current version.
+         func_append verstring ":${current}.0"
+         ;;
+
+       qnx)
+         major=".$current"
+         versuffix=".$current"
+         ;;
+
+       sunos)
+         major=".$current"
+         versuffix=".$current.$revision"
+         ;;
+
+       windows)
+         # Use '-' rather than '.', since we only want one
+         # extension on DOS 8.3 filesystems.
+         func_arith $current - $age
+         major=$func_arith_result
+         versuffix="-$major"
+         ;;
+
+       *)
+         func_fatal_configuration "unknown library version type \`$version_type'"
+         ;;
+       esac
+
+       # Clear the version info if we defaulted, and they specified a release.
+       if test -z "$vinfo" && test -n "$release"; then
+         major=
+         case $version_type in
+         darwin)
+           # we can't check for "0.0" in archive_cmds due to quoting
+           # problems, so we reset it completely
+           verstring=
+           ;;
+         *)
+           verstring="0.0"
+           ;;
+         esac
+         if test "$need_version" = no; then
+           versuffix=
+         else
+           versuffix=".0.0"
+         fi
+       fi
+
+       # Remove version info from name if versioning should be avoided
+       if test "$avoid_version" = yes && test "$need_version" = no; then
+         major=
+         versuffix=
+         verstring=""
+       fi
+
+       # Check to see if the archive will have undefined symbols.
+       if test "$allow_undefined" = yes; then
+         if test "$allow_undefined_flag" = unsupported; then
+           func_warning "undefined symbols not allowed in $host shared libraries"
+           build_libtool_libs=no
+           build_old_libs=yes
+         fi
+       else
+         # Don't allow undefined symbols.
+         allow_undefined_flag="$no_undefined_flag"
+       fi
+
+      fi
+
+      func_generate_dlsyms "$libname" "$libname" "yes"
+      func_append libobjs " $symfileobj"
+      test "X$libobjs" = "X " && libobjs=
+
+      if test "$opt_mode" != relink; then
+       # Remove our outputs, but don't remove object files since they
+       # may have been created when compiling PIC objects.
+       removelist=
+       tempremovelist=`$ECHO "$output_objdir/*"`
+       for p in $tempremovelist; do
+         case $p in
+           *.$objext | *.gcno)
+              ;;
+           $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+              if test "X$precious_files_regex" != "X"; then
+                if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+                then
+                  continue
+                fi
+              fi
+              func_append removelist " $p"
+              ;;
+           *) ;;
+         esac
+       done
+       test -n "$removelist" && \
+         func_show_eval "${RM}r \$removelist"
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+       func_append oldlibs " $output_objdir/$libname.$libext"
+
+       # Transform .lo files to .o files.
+       oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      #for path in $notinst_path; do
+      #        lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
+      #        deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
+      #        dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
+      #done
+
+      if test -n "$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       temp_xrpath=
+       for libdir in $xrpath; do
+         func_replace_sysroot "$libdir"
+         func_append temp_xrpath " -R$func_replace_sysroot_result"
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+       if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+         dependency_libs="$temp_xrpath $dependency_libs"
+       fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+       case " $dlprefiles $dlfiles " in
+       *" $lib "*) ;;
+       *) func_append dlfiles " $lib" ;;
+       esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+       case "$dlprefiles " in
+       *" $lib "*) ;;
+       *) func_append dlprefiles " $lib" ;;
+       esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+       if test -n "$rpath"; then
+         case $host in
+         *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
+           # these systems don't actually have a c library (as such)!
+           ;;
+         *-*-rhapsody* | *-*-darwin1.[012])
+           # Rhapsody C library is in the System framework
+           func_append deplibs " System.ltframework"
+           ;;
+         *-*-netbsd*)
+           # Don't link with libc until the a.out ld.so is fixed.
+           ;;
+         *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+           # Do not include libc due to us having libc/libc_r.
+           ;;
+         *-*-sco3.2v5* | *-*-sco5v6*)
+           # Causes problems with __ctype
+           ;;
+         *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+           # Compiler inserts libc in the correct place for threads to work
+           ;;
+         *)
+           # Add libc to deplibs on all other systems if necessary.
+           if test "$build_libtool_need_lc" = "yes"; then
+             func_append deplibs " -lc"
+           fi
+           ;;
+         esac
+       fi
+
+       # Transform deplibs into only deplibs that can be linked in shared.
+       name_save=$name
+       libname_save=$libname
+       release_save=$release
+       versuffix_save=$versuffix
+       major_save=$major
+       # I'm not sure if I'm treating the release correctly.  I think
+       # release should show up in the -l (ie -lgmp5) so we don't want to
+       # add it in twice.  Is that correct?
+       release=""
+       versuffix=""
+       major=""
+       newdeplibs=
+       droppeddeps=no
+       case $deplibs_check_method in
+       pass_all)
+         # Don't check for shared/static.  Everything works.
+         # This might be a little naive.  We might want to check
+         # whether the library exists or not.  But this is on
+         # osf3 & osf4 and I'm not really sure... Just
+         # implementing what was already the behavior.
+         newdeplibs=$deplibs
+         ;;
+       test_compile)
+         # This code stresses the "libraries are programs" paradigm to its
+         # limits. Maybe even breaks it.  We compile a program, linking it
+         # against the deplibs as a proxy for the library.  Then we can check
+         # whether they linked in statically or dynamically with ldd.
+         $opt_dry_run || $RM conftest.c
+         cat > conftest.c <<EOF
+         int main() { return 0; }
+EOF
+         $opt_dry_run || $RM conftest
+         if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+           ldd_output=`ldd conftest`
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                 case " $predeps $postdeps " in
+                 *" $i "*)
+                   func_append newdeplibs " $i"
+                   i=""
+                   ;;
+                 esac
+               fi
+               if test -n "$i" ; then
+                 libname=`eval "\\$ECHO \"$libname_spec\""`
+                 deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                 set dummy $deplib_matches; shift
+                 deplib_match=$1
+                 if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                   func_append newdeplibs " $i"
+                 else
+                   droppeddeps=yes
+                   echo
+                   $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                   echo "*** I have the capability to make that library automatically link in when"
+                   echo "*** you link to this library.  But I can only do this if you have a"
+                   echo "*** shared version of the library, which I believe you do not have"
+                   echo "*** because a test_compile did reveal that the linker did not use it for"
+                   echo "*** its dynamic dependency list that programs get resolved with at runtime."
+                 fi
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         else
+           # Error occurred in the first compile.  Let's try to salvage
+           # the situation: Compile a separate program for each library.
+           for i in $deplibs; do
+             case $i in
+             -l*)
+               func_stripname -l '' "$i"
+               name=$func_stripname_result
+               $opt_dry_run || $RM conftest
+               if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+                 ldd_output=`ldd conftest`
+                 if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+                   case " $predeps $postdeps " in
+                   *" $i "*)
+                     func_append newdeplibs " $i"
+                     i=""
+                     ;;
+                   esac
+                 fi
+                 if test -n "$i" ; then
+                   libname=`eval "\\$ECHO \"$libname_spec\""`
+                   deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
+                   set dummy $deplib_matches; shift
+                   deplib_match=$1
+                   if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+                     func_append newdeplibs " $i"
+                   else
+                     droppeddeps=yes
+                     echo
+                     $ECHO "*** Warning: dynamic linker does not accept needed library $i."
+                     echo "*** I have the capability to make that library automatically link in when"
+                     echo "*** you link to this library.  But I can only do this if you have a"
+                     echo "*** shared version of the library, which you do not appear to have"
+                     echo "*** because a test_compile did reveal that the linker did not use this one"
+                     echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+                   fi
+                 fi
+               else
+                 droppeddeps=yes
+                 echo
+                 $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
+                 echo "*** make it link in!  You will probably need to install it or some"
+                 echo "*** library that it depends on before this library will be fully"
+                 echo "*** functional.  Installing it before continuing would be even better."
+               fi
+               ;;
+             *)
+               func_append newdeplibs " $i"
+               ;;
+             esac
+           done
+         fi
+         ;;
+       file_magic*)
+         set dummy $deplibs_check_method; shift
+         file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               if test -n "$file_magic_glob"; then
+                 libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
+               else
+                 libnameglob=$libname
+               fi
+               test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 if test "$want_nocaseglob" = yes; then
+                   shopt -s nocaseglob
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                   $nocaseglob
+                 else
+                   potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
+                 fi
+                 for potent_lib in $potential_libs; do
+                     # Follow soft links.
+                     if ls -lLd "$potent_lib" 2>/dev/null |
+                        $GREP " -> " >/dev/null; then
+                       continue
+                     fi
+                     # The statement above tries to avoid entering an
+                     # endless loop below, in case of cyclic links.
+                     # We might still enter an endless loop, since a link
+                     # loop can be closed while we follow links,
+                     # but so what?
+                     potlib="$potent_lib"
+                     while test -h "$potlib" 2>/dev/null; do
+                       potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+                       case $potliblink in
+                       [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+                       *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
+                       esac
+                     done
+                     if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
+                        $SED -e 10q |
+                        $EGREP "$file_magic_regex" > /dev/null; then
+                       func_append newdeplibs " $a_deplib"
+                       a_deplib=""
+                       break 2
+                     fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a file magic. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       match_pattern*)
+         set dummy $deplibs_check_method; shift
+         match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
+         for a_deplib in $deplibs; do
+           case $a_deplib in
+           -l*)
+             func_stripname -l '' "$a_deplib"
+             name=$func_stripname_result
+             if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+               case " $predeps $postdeps " in
+               *" $a_deplib "*)
+                 func_append newdeplibs " $a_deplib"
+                 a_deplib=""
+                 ;;
+               esac
+             fi
+             if test -n "$a_deplib" ; then
+               libname=`eval "\\$ECHO \"$libname_spec\""`
+               for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+                 potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+                 for potent_lib in $potential_libs; do
+                   potlib="$potent_lib" # see symlink-check above in file_magic test
+                   if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
+                      $EGREP "$match_pattern_regex" > /dev/null; then
+                     func_append newdeplibs " $a_deplib"
+                     a_deplib=""
+                     break 2
+                   fi
+                 done
+               done
+             fi
+             if test -n "$a_deplib" ; then
+               droppeddeps=yes
+               echo
+               $ECHO "*** Warning: linker path does not have real file for library $a_deplib."
+               echo "*** I have the capability to make that library automatically link in when"
+               echo "*** you link to this library.  But I can only do this if you have a"
+               echo "*** shared version of the library, which you do not appear to have"
+               echo "*** because I did check the linker path looking for a file starting"
+               if test -z "$potlib" ; then
+                 $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
+               else
+                 $ECHO "*** with $libname and none of the candidates passed a file format test"
+                 $ECHO "*** using a regex pattern. Last file checked: $potlib"
+               fi
+             fi
+             ;;
+           *)
+             # Add a -L argument.
+             func_append newdeplibs " $a_deplib"
+             ;;
+           esac
+         done # Gone through all deplibs.
+         ;;
+       none | unknown | *)
+         newdeplibs=""
+         tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
+         if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+           for i in $predeps $postdeps ; do
+             # can't use Xsed below, because $i might contain '/'
+             tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
+           done
+         fi
+         case $tmp_deplibs in
+         *[!\  \ ]*)
+           echo
+           if test "X$deplibs_check_method" = "Xnone"; then
+             echo "*** Warning: inter-library dependencies are not supported in this platform."
+           else
+             echo "*** Warning: inter-library dependencies are not known to be supported."
+           fi
+           echo "*** All declared inter-library dependencies are being dropped."
+           droppeddeps=yes
+           ;;
+         esac
+         ;;
+       esac
+       versuffix=$versuffix_save
+       major=$major_save
+       release=$release_save
+       libname=$libname_save
+       name=$name_save
 
-      test "$preload" = yes \
-        && test "$dlopen_support" = unknown \
-       && test "$dlopen_self" = unknown \
-       && test "$dlopen_self_static" = unknown && \
-         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
+       case $host in
+       *-*-rhapsody* | *-*-darwin1.[012])
+         # On Rhapsody replace the C library with the System framework
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
+         ;;
+       esac
 
-      case $host in
-      *-*-rhapsody* | *-*-darwin1.[012])
-       # On Rhapsody replace the C library is the System framework
-       compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-       finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
-       ;;
-      esac
+       if test "$droppeddeps" = yes; then
+         if test "$module" = yes; then
+           echo
+           echo "*** Warning: libtool could not satisfy all declared inter-library"
+           $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
+           echo "*** a static module, that should work as long as the dlopening"
+           echo "*** application is linked with the -dlopen flag."
+           if test -z "$global_symbol_pipe"; then
+             echo
+             echo "*** However, this would only work if libtool was able to extract symbol"
+             echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+             echo "*** not find such a program.  So, this module is probably useless."
+             echo "*** \`nm' from GNU binutils and a full rebuild may help."
+           fi
+           if test "$build_old_libs" = no; then
+             oldlibs="$output_objdir/$libname.$libext"
+             build_libtool_libs=module
+             build_old_libs=yes
+           else
+             build_libtool_libs=no
+           fi
+         else
+           echo "*** The inter-library dependencies that have been dropped here will be"
+           echo "*** automatically added whenever a program is linked with this library"
+           echo "*** or is declared to -dlopen it."
 
-      case $host in
-      *-*-darwin*)
-       # Don't allow lazy linking, it breaks C++ global constructors
-       # But is supposedly fixed on 10.4 or later (yay!).
-       if test "$tagname" = CXX ; then
-         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-           10.[0123])
-             compile_command="$compile_command ${wl}-bind_at_load"
-             finalize_command="$finalize_command ${wl}-bind_at_load"
-           ;;
-         esac
+           if test "$allow_undefined" = no; then
+             echo
+             echo "*** Since this library must not contain undefined symbols,"
+             echo "*** because either the platform does not support them or"
+             echo "*** it was explicitly requested with -no-undefined,"
+             echo "*** libtool will only create a static version of it."
+             if test "$build_old_libs" = no; then
+               oldlibs="$output_objdir/$libname.$libext"
+               build_libtool_libs=module
+               build_old_libs=yes
+             else
+               build_libtool_libs=no
+             fi
+           fi
+         fi
        fi
-       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
-       compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-       finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
-       ;;
+       # Done checking deplibs!
+       deplibs=$newdeplibs
+      fi
+      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+      case $host in
+       *-*-darwin*)
+         newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+         ;;
       esac
 
-
       # move library search paths that coincide with paths to not yet
       # installed libraries to the beginning of the library search list
       new_libs=
        case " $new_libs " in
        *" -L$path/$objdir "*) ;;
        *)
-         case " $compile_deplibs " in
+         case " $deplibs " in
          *" -L$path/$objdir "*)
-           new_libs="$new_libs -L$path/$objdir" ;;
+           func_append new_libs " -L$path/$objdir" ;;
          esac
          ;;
        esac
       done
-      for deplib in $compile_deplibs; do
+      for deplib in $deplibs; do
        case $deplib in
        -L*)
          case " $new_libs " in
          *" $deplib "*) ;;
-         *) new_libs="$new_libs $deplib" ;;
+         *) func_append new_libs " $deplib" ;;
          esac
          ;;
-       *) new_libs="$new_libs $deplib" ;;
+       *) func_append new_libs " $deplib" ;;
        esac
       done
-      compile_deplibs="$new_libs"
+      deplibs="$new_libs"
 
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
 
-      compile_command="$compile_command $compile_deplibs"
-      finalize_command="$finalize_command $finalize_deplibs"
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+       # Remove ${wl} instances when linking with ld.
+       # FIXME: should test the right _cmds variable.
+       case $archive_cmds in
+         *\$LD\ *) wl= ;;
+        esac
+       if test "$hardcode_into_libs" = yes; then
+         # Hardcode the library paths
+         hardcode_libdirs=
+         dep_rpath=
+         rpath="$finalize_rpath"
+         test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
+         for libdir in $rpath; do
+           if test -n "$hardcode_libdir_flag_spec"; then
+             if test -n "$hardcode_libdir_separator"; then
+               func_replace_sysroot "$libdir"
+               libdir=$func_replace_sysroot_result
+               if test -z "$hardcode_libdirs"; then
+                 hardcode_libdirs="$libdir"
+               else
+                 # Just accumulate the unique libdirs.
+                 case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+                 *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+                   ;;
+                 *)
+                   func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+                   ;;
+                 esac
+               fi
+             else
+               eval flag=\"$hardcode_libdir_flag_spec\"
+               func_append dep_rpath " $flag"
+             fi
+           elif test -n "$runpath_var"; then
+             case "$perm_rpath " in
+             *" $libdir "*) ;;
+             *) func_append perm_rpath " $libdir" ;;
+             esac
+           fi
+         done
+         # Substitute the hardcoded libdirs into the rpath.
+         if test -n "$hardcode_libdir_separator" &&
+            test -n "$hardcode_libdirs"; then
+           libdir="$hardcode_libdirs"
+           eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
+         fi
+         if test -n "$runpath_var" && test -n "$perm_rpath"; then
+           # We should set the runpath_var.
+           rpath=
+           for dir in $perm_rpath; do
+             func_append rpath "$dir:"
+           done
+           eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+         fi
+         test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+       fi
 
-      if test -n "$rpath$xrpath"; then
-       # If the user specified any rpath flags, then add them.
-       for libdir in $rpath $xrpath; do
-         # This is the magic to use -rpath.
-         case "$finalize_rpath " in
-         *" $libdir "*) ;;
-         *) finalize_rpath="$finalize_rpath $libdir" ;;
-         esac
+       shlibpath="$finalize_shlibpath"
+       test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+       if test -n "$shlibpath"; then
+         eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+       fi
+
+       # Get the real and link names of the library.
+       eval shared_ext=\"$shrext_cmds\"
+       eval library_names=\"$library_names_spec\"
+       set dummy $library_names
+       shift
+       realname="$1"
+       shift
+
+       if test -n "$soname_spec"; then
+         eval soname=\"$soname_spec\"
+       else
+         soname="$realname"
+       fi
+       if test -z "$dlname"; then
+         dlname=$soname
+       fi
+
+       lib="$output_objdir/$realname"
+       linknames=
+       for link
+       do
+         func_append linknames " $link"
        done
-      fi
 
-      # Now hardcode the library paths
-      rpath=
-      hardcode_libdirs=
-      for libdir in $compile_rpath $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs="$libdir"
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-               ;;
-             esac
+       # Use standard objects if they are pic
+       test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       test "X$libobjs" = "X " && libobjs=
+
+       delfiles=
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
+         export_symbols="$output_objdir/$libname.uexp"
+         func_append delfiles " $export_symbols"
+       fi
+
+       orig_export_symbols=
+       case $host_os in
+       cygwin* | mingw* | cegcc*)
+         if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
+           # exporting using user supplied symfile
+           if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
+             # and it's NOT already a .def file. Must figure out
+             # which of the given symbols are data symbols and tag
+             # them as such. So, trigger use of export_symbols_cmds.
+             # export_symbols gets reassigned inside the "prepare
+             # the list of exported symbols" if statement, so the
+             # include_expsyms logic still works.
+             orig_export_symbols="$export_symbols"
+             export_symbols=
+             always_export_symbols=yes
            fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           rpath="$rpath $flag"
          fi
-       elif test -n "$runpath_var"; then
-         case "$perm_rpath " in
-         *" $libdir "*) ;;
-         *) perm_rpath="$perm_rpath $libdir" ;;
-         esac
-       fi
-       case $host in
-       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
-         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
-         case :$dllsearchpath: in
-         *":$libdir:"*) ;;
-         *) dllsearchpath="$dllsearchpath:$libdir";;
-         esac
-         case :$dllsearchpath: in
-         *":$testbindir:"*) ;;
-         *) dllsearchpath="$dllsearchpath:$testbindir";;
-         esac
          ;;
        esac
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir="$hardcode_libdirs"
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      compile_rpath="$rpath"
 
-      rpath=
-      hardcode_libdirs=
-      for libdir in $finalize_rpath; do
-       if test -n "$hardcode_libdir_flag_spec"; then
-         if test -n "$hardcode_libdir_separator"; then
-           if test -z "$hardcode_libdirs"; then
-             hardcode_libdirs="$libdir"
-           else
-             # Just accumulate the unique libdirs.
-             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
-             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
-               ;;
-             *)
-               hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
-               ;;
+       # Prepare the list of exported symbols
+       if test -z "$export_symbols"; then
+         if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+           func_verbose "generating symbol list for \`$libname.la'"
+           export_symbols="$output_objdir/$libname.exp"
+           $opt_dry_run || $RM $export_symbols
+           cmds=$export_symbols_cmds
+           save_ifs="$IFS"; IFS='~'
+           for cmd1 in $cmds; do
+             IFS="$save_ifs"
+             # Take the normal branch if the nm_file_list_spec branch
+             # doesn't work or if tool conversion is not needed.
+             case $nm_file_list_spec~$to_tool_file_cmd in
+               *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
+                 try_normal_branch=yes
+                 eval cmd=\"$cmd1\"
+                 func_len " $cmd"
+                 len=$func_len_result
+                 ;;
+               *)
+                 try_normal_branch=no
+                 ;;
              esac
+             if test "$try_normal_branch" = yes \
+                && { test "$len" -lt "$max_cmd_len" \
+                     || test "$max_cmd_len" -le -1; }
+             then
+               func_show_eval "$cmd" 'exit $?'
+               skipped_export=false
+             elif test -n "$nm_file_list_spec"; then
+               func_basename "$output"
+               output_la=$func_basename_result
+               save_libobjs=$libobjs
+               save_output=$output
+               output=${output_objdir}/${output_la}.nm
+               func_to_tool_file "$output"
+               libobjs=$nm_file_list_spec$func_to_tool_file_result
+               func_append delfiles " $output"
+               func_verbose "creating $NM input file list: $output"
+               for obj in $save_libobjs; do
+                 func_to_tool_file "$obj"
+                 $ECHO "$func_to_tool_file_result"
+               done > "$output"
+               eval cmd=\"$cmd1\"
+               func_show_eval "$cmd" 'exit $?'
+               output=$save_output
+               libobjs=$save_libobjs
+               skipped_export=false
+             else
+               # The command line is too long to execute in one step.
+               func_verbose "using reloadable object file for export list..."
+               skipped_export=:
+               # Break out early, otherwise skipped_export may be
+               # set to false by a later but shorter cmd.
+               break
+             fi
+           done
+           IFS="$save_ifs"
+           if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
            fi
-         else
-           eval flag=\"$hardcode_libdir_flag_spec\"
-           rpath="$rpath $flag"
          fi
-       elif test -n "$runpath_var"; then
-         case "$finalize_perm_rpath " in
-         *" $libdir "*) ;;
-         *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
-         esac
        fi
-      done
-      # Substitute the hardcoded libdirs into the rpath.
-      if test -n "$hardcode_libdir_separator" &&
-        test -n "$hardcode_libdirs"; then
-       libdir="$hardcode_libdirs"
-       eval rpath=\" $hardcode_libdir_flag_spec\"
-      fi
-      finalize_rpath="$rpath"
-
-      if test -n "$libobjs" && test "$build_old_libs" = yes; then
-       # Transform all the library objects into standard objects.
-       compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-       finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
-      fi
-
-      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
-
-      # template prelinking step
-      if test -n "$prelink_cmds"; then
-       func_execute_cmds "$prelink_cmds" 'exit $?'
-      fi
-
-      wrappers_required=yes
-      case $host in
-      *cygwin* | *mingw* )
-        if test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      *)
-        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
-          wrappers_required=no
-        fi
-        ;;
-      esac
-      if test "$wrappers_required" = no; then
-       # Replace the output file specification.
-       compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-       link_command="$compile_command$compile_rpath"
 
-       # We have no uninstalled library dependencies, so finalize right now.
-       exit_status=0
-       func_show_eval "$link_command" 'exit_status=$?'
+       if test -n "$export_symbols" && test -n "$include_expsyms"; then
+         tmp_export_symbols="$export_symbols"
+         test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+         $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+       fi
 
-       # Delete the generated files.
-       if test -f "$output_objdir/${outputname}S.${objext}"; then
-         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+       if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
+         # The given exports_symbols file has to be filtered, so filter it.
+         func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+         # FIXME: $output_objdir/$libname.filter potentially contains lots of
+         # 's' commands which not all seds can handle. GNU sed should be fine
+         # though. Also, the filter scales superlinearly with the number of
+         # global variables. join(1) would be nice here, but unfortunately
+         # isn't a blessed tool.
+         $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+         func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+         export_symbols=$output_objdir/$libname.def
+         $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
        fi
 
-       exit $exit_status
-      fi
+       tmp_deplibs=
+       for test_deplib in $deplibs; do
+         case " $convenience " in
+         *" $test_deplib "*) ;;
+         *)
+           func_append tmp_deplibs " $test_deplib"
+           ;;
+         esac
+       done
+       deplibs="$tmp_deplibs"
 
-      if test -n "$compile_shlibpath$finalize_shlibpath"; then
-       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
-      fi
-      if test -n "$finalize_shlibpath"; then
-       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
-      fi
+       if test -n "$convenience"; then
+         if test -n "$whole_archive_flag_spec" &&
+           test "$compiler_needs_object" = yes &&
+           test -z "$libobjs"; then
+           # extract the archives, so we have objects to list.
+           # TODO: could optimize this to just extract one archive.
+           whole_archive_flag_spec=
+         fi
+         if test -n "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         else
+           gentop="$output_objdir/${outputname}x"
+           func_append generated " $gentop"
 
-      compile_var=
-      finalize_var=
-      if test -n "$runpath_var"; then
-       if test -n "$perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $perm_rpath; do
-           rpath="$rpath$dir:"
-         done
-         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
-       fi
-       if test -n "$finalize_perm_rpath"; then
-         # We should set the runpath_var.
-         rpath=
-         for dir in $finalize_perm_rpath; do
-           rpath="$rpath$dir:"
-         done
-         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+           func_extract_archives $gentop $convenience
+           func_append libobjs " $func_extract_archives_result"
+           test "X$libobjs" = "X " && libobjs=
+         fi
        fi
-      fi
 
-      if test "$no_install" = yes; then
-       # We don't need to create a wrapper script.
-       link_command="$compile_var$compile_command$compile_rpath"
-       # Replace the output file specification.
-       link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
-       # Delete the old output file.
-       $opt_dry_run || $RM $output
-       # Link the executable and exit
-       func_show_eval "$link_command" 'exit $?'
-       exit $EXIT_SUCCESS
-      fi
+       if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+         eval flag=\"$thread_safe_flag_spec\"
+         func_append linker_flags " $flag"
+       fi
 
-      if test "$hardcode_action" = relink; then
-       # Fast installation is not supported
-       link_command="$compile_var$compile_command$compile_rpath"
-       relink_command="$finalize_var$finalize_command$finalize_rpath"
+       # Make a backup of the uninstalled library when relinking
+       if test "$opt_mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
+       fi
 
-       func_warning "this platform does not like uninstalled shared libraries"
-       func_warning "\`$output' will be relinked during installation"
-      else
-       if test "$fast_install" != no; then
-         link_command="$finalize_var$compile_command$finalize_rpath"
-         if test "$fast_install" = yes; then
-           relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+       # Do each of the archive commands.
+       if test "$module" = yes && test -n "$module_cmds" ; then
+         if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+           eval test_cmds=\"$module_expsym_cmds\"
+           cmds=$module_expsym_cmds
          else
-           # fast_install is set to needless
-           relink_command=
+           eval test_cmds=\"$module_cmds\"
+           cmds=$module_cmds
          fi
        else
-         link_command="$compile_var$compile_command$compile_rpath"
-         relink_command="$finalize_var$finalize_command$finalize_rpath"
+         if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+           eval test_cmds=\"$archive_expsym_cmds\"
+           cmds=$archive_expsym_cmds
+         else
+           eval test_cmds=\"$archive_cmds\"
+           cmds=$archive_cmds
+         fi
        fi
-      fi
-
-      # Replace the output file specification.
-      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
 
-      # Delete the old output files.
-      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
+       if test "X$skipped_export" != "X:" &&
+          func_len " $test_cmds" &&
+          len=$func_len_result &&
+          test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         :
+       else
+         # The command line is too long to link in one step, link piecewise
+         # or, if using GNU ld and skipped_export is not :, use a linker
+         # script.
 
-      func_show_eval "$link_command" 'exit $?'
+         # Save the value of $output and $libobjs because we want to
+         # use them later.  If we have whole_archive_flag_spec, we
+         # want to use save_libobjs as it was before
+         # whole_archive_flag_spec was expanded, because we can't
+         # assume the linker understands whole_archive_flag_spec.
+         # This may have to be revisited, in case too many
+         # convenience libraries get linked in and end up exceeding
+         # the spec.
+         if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+           save_libobjs=$libobjs
+         fi
+         save_output=$output
+         func_basename "$output"
+         output_la=$func_basename_result
 
-      # Now create the wrapper script.
-      func_echo "creating $output"
+         # Clear the reloadable object creation command queue and
+         # initialize k to one.
+         test_cmds=
+         concat_cmds=
+         objlist=
+         last_robj=
+         k=1
 
-      # Quote the relink command for shipping.
-      if test -n "$relink_command"; then
-       # Preserve any variables that may affect compiler behavior
-       for var in $variables_saved_for_relink; do
-         if eval test -z \"\${$var+set}\"; then
-           relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
-         elif eval var_value=\$$var; test -z "$var_value"; then
-           relink_command="$var=; export $var; $relink_command"
+         if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
+           output=${output_objdir}/${output_la}.lnkscript
+           func_verbose "creating GNU ld script: $output"
+           echo 'INPUT (' > $output
+           for obj in $save_libobjs
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           echo ')' >> $output
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$func_to_tool_file_result
+         elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
+           output=${output_objdir}/${output_la}.lnk
+           func_verbose "creating linker input file list: $output"
+           : > $output
+           set x $save_libobjs
+           shift
+           firstobj=
+           if test "$compiler_needs_object" = yes; then
+             firstobj="$1 "
+             shift
+           fi
+           for obj
+           do
+             func_to_tool_file "$obj"
+             $ECHO "$func_to_tool_file_result" >> $output
+           done
+           func_append delfiles " $output"
+           func_to_tool_file "$output"
+           output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
          else
-           func_quote_for_eval "$var_value"
-           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
-         fi
-       done
-       relink_command="(cd `pwd`; $relink_command)"
-       relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
-      fi
+           if test -n "$save_libobjs"; then
+             func_verbose "creating reloadable object files..."
+             output=$output_objdir/$output_la-${k}.$objext
+             eval test_cmds=\"$reload_cmds\"
+             func_len " $test_cmds"
+             len0=$func_len_result
+             len=$len0
+
+             # Loop over the list of objects to be linked.
+             for obj in $save_libobjs
+             do
+               func_len " $obj"
+               func_arith $len + $func_len_result
+               len=$func_arith_result
+               if test "X$objlist" = X ||
+                  test "$len" -lt "$max_cmd_len"; then
+                 func_append objlist " $obj"
+               else
+                 # The command $test_cmds is almost too long, add a
+                 # command to the queue.
+                 if test "$k" -eq 1 ; then
+                   # The first file doesn't have a previous command to add.
+                   reload_objs=$objlist
+                   eval concat_cmds=\"$reload_cmds\"
+                 else
+                   # All subsequent reloadable object files will link in
+                   # the last one created.
+                   reload_objs="$objlist $last_robj"
+                   eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
+                 fi
+                 last_robj=$output_objdir/$output_la-${k}.$objext
+                 func_arith $k + 1
+                 k=$func_arith_result
+                 output=$output_objdir/$output_la-${k}.$objext
+                 objlist=" $obj"
+                 func_len " $last_robj"
+                 func_arith $len0 + $func_len_result
+                 len=$func_arith_result
+               fi
+             done
+             # Handle the remaining objects by creating one last
+             # reloadable object file.  All subsequent reloadable object
+             # files will link in the last one created.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             reload_objs="$objlist $last_robj"
+             eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
+             fi
+             func_append delfiles " $output"
 
-      # Quote $ECHO for shipping.
-      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
-       case $progpath in
-       [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
-       *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
-       esac
-       qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
-      else
-       qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
-      fi
+           else
+             output=
+           fi
+
+           if ${skipped_export-false}; then
+             func_verbose "generating symbol list for \`$libname.la'"
+             export_symbols="$output_objdir/$libname.exp"
+             $opt_dry_run || $RM $export_symbols
+             libobjs=$output
+             # Append the command to create the export file.
+             test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+             eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
+             if test -n "$last_robj"; then
+               eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
+             fi
+           fi
+
+           test -n "$save_libobjs" &&
+             func_verbose "creating a temporary reloadable object file: $output"
+
+           # Loop through the commands generated above and execute them.
+           save_ifs="$IFS"; IFS='~'
+           for cmd in $concat_cmds; do
+             IFS="$save_ifs"
+             $opt_silent || {
+                 func_quote_for_expand "$cmd"
+                 eval "func_echo $func_quote_for_expand_result"
+             }
+             $opt_dry_run || eval "$cmd" || {
+               lt_exit=$?
+
+               # Restore the uninstalled library and exit
+               if test "$opt_mode" = relink; then
+                 ( cd "$output_objdir" && \
+                   $RM "${realname}T" && \
+                   $MV "${realname}U" "$realname" )
+               fi
+
+               exit $lt_exit
+             }
+           done
+           IFS="$save_ifs"
+
+           if test -n "$export_symbols_regex" && ${skipped_export-false}; then
+             func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+             func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
+           fi
+         fi
 
-      # Only actually do things if not in dry run mode.
-      $opt_dry_run || {
-       # win32 will think the script is a binary if it has
-       # a .exe suffix, so we strip it off here.
-       case $output in
-         *.exe) func_stripname '' '.exe' "$output"
-                output=$func_stripname_result ;;
-       esac
-       # test for cygwin because mv fails w/o .exe extensions
-       case $host in
-         *cygwin*)
-           exeext=.exe
-           func_stripname '' '.exe' "$outputname"
-           outputname=$func_stripname_result ;;
-         *) exeext= ;;
-       esac
-       case $host in
-         *cygwin* | *mingw* )
-           output_name=`basename $output`
-           output_path=`dirname $output`
-           cwrappersource="$output_path/$objdir/lt-$output_name.c"
-           cwrapper="$output_path/$output_name.exe"
-           $RM $cwrappersource $cwrapper
-           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+          if ${skipped_export-false}; then
+           if test -n "$export_symbols" && test -n "$include_expsyms"; then
+             tmp_export_symbols="$export_symbols"
+             test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
+             $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
+           fi
 
-           cat > $cwrappersource <<EOF
+           if test -n "$orig_export_symbols"; then
+             # The given exports_symbols file has to be filtered, so filter it.
+             func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
+             # FIXME: $output_objdir/$libname.filter potentially contains lots of
+             # 's' commands which not all seds can handle. GNU sed should be fine
+             # though. Also, the filter scales superlinearly with the number of
+             # global variables. join(1) would be nice here, but unfortunately
+             # isn't a blessed tool.
+             $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
+             func_append delfiles " $export_symbols $output_objdir/$libname.filter"
+             export_symbols=$output_objdir/$libname.def
+             $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
+           fi
+         fi
 
-/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
-   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
+         libobjs=$output
+         # Restore the value of output.
+         output=$save_output
 
-   The $output program cannot be directly executed until all the libtool
-   libraries that it depends on are installed.
+         if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+           eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+           test "X$libobjs" = "X " && libobjs=
+         fi
+         # Expand the library linking commands again to reset the
+         # value of $libobjs for piecewise linking.
 
-   This wrapper executable should never be moved out of the build directory.
-   If it is, it will not operate correctly.
+         # Do each of the archive commands.
+         if test "$module" = yes && test -n "$module_cmds" ; then
+           if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+             cmds=$module_expsym_cmds
+           else
+             cmds=$module_cmds
+           fi
+         else
+           if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+             cmds=$archive_expsym_cmds
+           else
+             cmds=$archive_cmds
+           fi
+         fi
+       fi
 
-   Currently, it simply execs the wrapper *script* "/bin/sh $output",
-   but could eventually absorb all of the scripts functionality and
-   exec $objdir/$outputname directly.
-*/
-EOF
-           cat >> $cwrappersource<<"EOF"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <malloc.h>
-#include <stdarg.h>
-#include <assert.h>
-#include <string.h>
-#include <ctype.h>
-#include <sys/stat.h>
+       if test -n "$delfiles"; then
+         # Append the command to remove temporary files to $cmds.
+         eval cmds=\"\$cmds~\$RM $delfiles\"
+       fi
 
-#if defined(PATH_MAX)
-# define LT_PATHMAX PATH_MAX
-#elif defined(MAXPATHLEN)
-# define LT_PATHMAX MAXPATHLEN
-#else
-# define LT_PATHMAX 1024
-#endif
+       # Add any objects from preloaded convenience libraries
+       if test -n "$dlprefiles"; then
+         gentop="$output_objdir/${outputname}x"
+         func_append generated " $gentop"
 
-#ifndef DIR_SEPARATOR
-# define DIR_SEPARATOR '/'
-# define PATH_SEPARATOR ':'
-#endif
+         func_extract_archives $gentop $dlprefiles
+         func_append libobjs " $func_extract_archives_result"
+         test "X$libobjs" = "X " && libobjs=
+       fi
 
-#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
-  defined (__OS2__)
-# define HAVE_DOS_BASED_FILE_SYSTEM
-# ifndef DIR_SEPARATOR_2
-#  define DIR_SEPARATOR_2 '\\'
-# endif
-# ifndef PATH_SEPARATOR_2
-#  define PATH_SEPARATOR_2 ';'
-# endif
-#endif
+       save_ifs="$IFS"; IFS='~'
+       for cmd in $cmds; do
+         IFS="$save_ifs"
+         eval cmd=\"$cmd\"
+         $opt_silent || {
+           func_quote_for_expand "$cmd"
+           eval "func_echo $func_quote_for_expand_result"
+         }
+         $opt_dry_run || eval "$cmd" || {
+           lt_exit=$?
 
-#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
-#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
-       (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
-#endif /* DIR_SEPARATOR_2 */
+           # Restore the uninstalled library and exit
+           if test "$opt_mode" = relink; then
+             ( cd "$output_objdir" && \
+               $RM "${realname}T" && \
+               $MV "${realname}U" "$realname" )
+           fi
 
-#ifndef PATH_SEPARATOR_2
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
-#else /* PATH_SEPARATOR_2 */
-# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
-#endif /* PATH_SEPARATOR_2 */
+           exit $lt_exit
+         }
+       done
+       IFS="$save_ifs"
 
-#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
-#define XFREE(stale) do { \
-  if (stale) { free ((void *) stale); stale = 0; } \
-} while (0)
+       # Restore the uninstalled library and exit
+       if test "$opt_mode" = relink; then
+         $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
 
-/* -DDEBUG is fairly common in CFLAGS.  */
-#undef DEBUG
-#if defined DEBUGWRAPPER
-# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
-#else
-# define DEBUG(format, ...)
-#endif
+         if test -n "$convenience"; then
+           if test -z "$whole_archive_flag_spec"; then
+             func_show_eval '${RM}r "$gentop"'
+           fi
+         fi
 
-const char *program_name = NULL;
+         exit $EXIT_SUCCESS
+       fi
 
-void * xmalloc (size_t num);
-char * xstrdup (const char *string);
-const char * base_name (const char *name);
-char * find_executable(const char *wrapper);
-int    check_executable(const char *path);
-char * strendzap(char *str, const char *pat);
-void lt_fatal (const char *message, ...);
+       # Create links to the real library.
+       for linkname in $linknames; do
+         if test "$realname" != "$linkname"; then
+           func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
+         fi
+       done
 
-int
-main (int argc, char *argv[])
-{
-  char **newargz;
-  int i;
+       # If -module or -export-dynamic was specified, set the dlname.
+       if test "$module" = yes || test "$export_dynamic" = yes; then
+         # On all known operating systems, these are identical.
+         dlname="$soname"
+       fi
+      fi
+      ;;
 
-  program_name = (char *) xstrdup (base_name (argv[0]));
-  DEBUG("(main) argv[0]      : %s\n",argv[0]);
-  DEBUG("(main) program_name : %s\n",program_name);
-  newargz = XMALLOC(char *, argc+2);
-EOF
+    obj)
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+       func_warning "\`-dlopen' is ignored for objects"
+      fi
 
-           cat >> $cwrappersource <<EOF
-  newargz[0] = (char *) xstrdup("$SHELL");
-EOF
+      case " $deplibs" in
+      *\ -l* | *\ -L*)
+       func_warning "\`-l' and \`-L' are ignored for objects" ;;
+      esac
 
-           cat >> $cwrappersource <<"EOF"
-  newargz[1] = find_executable(argv[0]);
-  if (newargz[1] == NULL)
-    lt_fatal("Couldn't find %s", argv[0]);
-  DEBUG("(main) found exe at : %s\n",newargz[1]);
-  /* we know the script has the same name, without the .exe */
-  /* so make sure newargz[1] doesn't end in .exe */
-  strendzap(newargz[1],".exe");
-  for (i = 1; i < argc; i++)
-    newargz[i+1] = xstrdup(argv[i]);
-  newargz[argc+1] = NULL;
+      test -n "$rpath" && \
+       func_warning "\`-rpath' is ignored for objects"
 
-  for (i=0; i<argc+1; i++)
-  {
-    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
-    ;
-  }
+      test -n "$xrpath" && \
+       func_warning "\`-R' is ignored for objects"
 
-EOF
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for objects"
 
-           case $host_os in
-             mingw*)
-               cat >> $cwrappersource <<EOF
-  execv("$SHELL",(char const **)newargz);
-EOF
-             ;;
-             *)
-               cat >> $cwrappersource <<EOF
-  execv("$SHELL",newargz);
-EOF
-             ;;
-           esac
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for objects"
 
-           cat >> $cwrappersource <<"EOF"
-  return 127;
-}
+      case $output in
+      *.lo)
+       test -n "$objs$old_deplibs" && \
+         func_fatal_error "cannot build library object \`$output' from non-libtool objects"
 
-void *
-xmalloc (size_t num)
-{
-  void * p = (void *) malloc (num);
-  if (!p)
-    lt_fatal ("Memory exhausted");
+       libobj=$output
+       func_lo2o "$libobj"
+       obj=$func_lo2o_result
+       ;;
+      *)
+       libobj=
+       obj="$output"
+       ;;
+      esac
 
-  return p;
-}
+      # Delete the old objects.
+      $opt_dry_run || $RM $obj $libobj
 
-char *
-xstrdup (const char *string)
-{
-  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
-;
-}
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
 
-const char *
-base_name (const char *name)
-{
-  const char *base;
+      if test -n "$convenience"; then
+       if test -n "$whole_archive_flag_spec"; then
+         eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+         reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
+       else
+         gentop="$output_objdir/${obj}x"
+         func_append generated " $gentop"
 
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
-    name += 2;
-#endif
+         func_extract_archives $gentop $convenience
+         reload_conv_objs="$reload_objs $func_extract_archives_result"
+       fi
+      fi
 
-  for (base = name; *name; name++)
-    if (IS_DIR_SEPARATOR (*name))
-      base = name + 1;
-  return base;
-}
+      # If we're not building shared, we need to use non_pic_objs
+      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
 
-int
-check_executable(const char * path)
-{
-  struct stat st;
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
 
-  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
-  if ((!path) || (!*path))
-    return 0;
+      output="$obj"
+      func_execute_cmds "$reload_cmds" 'exit $?'
 
-  if ((stat (path, &st) >= 0) &&
-      (
-       /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
-#if defined (S_IXOTH)
-       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
-#endif
-#if defined (S_IXGRP)
-       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
-#endif
-       ((st.st_mode & S_IXUSR) == S_IXUSR))
-      )
-    return 1;
-  else
-    return 0;
-}
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
 
-/* Searches for the full path of the wrapper.  Returns
-   newly allocated full path name if found, NULL otherwise */
-char *
-find_executable (const char* wrapper)
-{
-  int has_slash = 0;
-  const char* p;
-  const char* p_next;
-  /* static buffer for getcwd */
-  char tmp[LT_PATHMAX + 1];
-  int tmp_len;
-  char* concat_name;
+       exit $EXIT_SUCCESS
+      fi
 
-  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+      if test "$build_libtool_libs" != yes; then
+       if test -n "$gentop"; then
+         func_show_eval '${RM}r "$gentop"'
+       fi
 
-  if ((wrapper == NULL) || (*wrapper == '\0'))
-    return NULL;
+       # Create an invalid libtool object if no PIC, so that we don't
+       # accidentally link it into a program.
+       # $show "echo timestamp > $libobj"
+       # $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
+       exit $EXIT_SUCCESS
+      fi
 
-  /* Absolute path? */
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
-  {
-    concat_name = xstrdup (wrapper);
-    if (check_executable(concat_name))
-      return concat_name;
-    XFREE(concat_name);
-  }
-  else
-  {
-#endif
-    if (IS_DIR_SEPARATOR (wrapper[0]))
-    {
-      concat_name = xstrdup (wrapper);
-      if (check_executable(concat_name))
-       return concat_name;
-      XFREE(concat_name);
-    }
-#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  }
-#endif
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+       # Only do commands if we really have different PIC objects.
+       reload_objs="$libobjs $reload_conv_objs"
+       output="$libobj"
+       func_execute_cmds "$reload_cmds" 'exit $?'
+      fi
 
-  for (p = wrapper; *p; p++)
-    if (*p == '/')
-    {
-      has_slash = 1;
-      break;
-    }
-  if (!has_slash)
-  {
-    /* no slashes; search PATH */
-    const char* path = getenv ("PATH");
-    if (path != NULL)
-    {
-      for (p = path; *p; p = p_next)
-      {
-       const char* q;
-       size_t p_len;
-       for (q = p; *q; q++)
-         if (IS_PATH_SEPARATOR(*q))
-           break;
-       p_len = q - p;
-       p_next = (*q == '\0' ? q : q + 1);
-       if (p_len == 0)
-       {
-         /* empty path: current directory */
-         if (getcwd (tmp, LT_PATHMAX) == NULL)
-           lt_fatal ("getcwd failed");
-         tmp_len = strlen(tmp);
-         concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
-         memcpy (concat_name, tmp, tmp_len);
-         concat_name[tmp_len] = '/';
-         strcpy (concat_name + tmp_len + 1, wrapper);
-       }
-       else
-       {
-         concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
-         memcpy (concat_name, p, p_len);
-         concat_name[p_len] = '/';
-         strcpy (concat_name + p_len + 1, wrapper);
-       }
-       if (check_executable(concat_name))
-         return concat_name;
-       XFREE(concat_name);
-      }
-    }
-    /* not found in PATH; assume curdir */
-  }
-  /* Relative path | not found in path: prepend cwd */
-  if (getcwd (tmp, LT_PATHMAX) == NULL)
-    lt_fatal ("getcwd failed");
-  tmp_len = strlen(tmp);
-  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
-  memcpy (concat_name, tmp, tmp_len);
-  concat_name[tmp_len] = '/';
-  strcpy (concat_name + tmp_len + 1, wrapper);
+      if test -n "$gentop"; then
+       func_show_eval '${RM}r "$gentop"'
+      fi
 
-  if (check_executable(concat_name))
-    return concat_name;
-  XFREE(concat_name);
-  return NULL;
-}
+      exit $EXIT_SUCCESS
+      ;;
 
-char *
-strendzap(char *str, const char *pat)
-{
-  size_t len, patlen;
+    prog)
+      case $host in
+       *cygwin*) func_stripname '' '.exe' "$output"
+                 output=$func_stripname_result.exe;;
+      esac
+      test -n "$vinfo" && \
+       func_warning "\`-version-info' is ignored for programs"
 
-  assert(str != NULL);
-  assert(pat != NULL);
+      test -n "$release" && \
+       func_warning "\`-release' is ignored for programs"
 
-  len = strlen(str);
-  patlen = strlen(pat);
+      test "$preload" = yes \
+        && test "$dlopen_support" = unknown \
+       && test "$dlopen_self" = unknown \
+       && test "$dlopen_self_static" = unknown && \
+         func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
 
-  if (patlen <= len)
-  {
-    str += len - patlen;
-    if (strcmp(str, pat) == 0)
-      *str = '\0';
-  }
-  return str;
-}
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+       # On Rhapsody replace the C library is the System framework
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
+       ;;
+      esac
 
-static void
-lt_error_core (int exit_status, const char * mode,
-         const char * message, va_list ap)
-{
-  fprintf (stderr, "%s: %s: ", program_name, mode);
-  vfprintf (stderr, message, ap);
-  fprintf (stderr, ".\n");
+      case $host in
+      *-*-darwin*)
+       # Don't allow lazy linking, it breaks C++ global constructors
+       # But is supposedly fixed on 10.4 or later (yay!).
+       if test "$tagname" = CXX ; then
+         case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
+           10.[0123])
+             func_append compile_command " ${wl}-bind_at_load"
+             func_append finalize_command " ${wl}-bind_at_load"
+           ;;
+         esac
+       fi
+       # Time to change all our "foo.ltframework" stuff back to "-framework foo"
+       compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
+       ;;
+      esac
 
-  if (exit_status >= 0)
-    exit (exit_status);
-}
 
-void
-lt_fatal (const char *message, ...)
-{
-  va_list ap;
-  va_start (ap, message);
-  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
-  va_end (ap);
-}
-EOF
-         # we should really use a build-platform specific compiler
-         # here, but OTOH, the wrappers (shell script and this C one)
-         # are only useful if you want to execute the "real" binary.
-         # Since the "real" binary is built for $host, then this
-         # wrapper might as well be built for $host, too.
-         $opt_dry_run || $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+       case " $new_libs " in
+       *" -L$path/$objdir "*) ;;
+       *)
+         case " $compile_deplibs " in
+         *" -L$path/$objdir "*)
+           func_append new_libs " -L$path/$objdir" ;;
+         esac
          ;;
        esac
-       $RM $output
-       trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
-
-       $ECHO > $output "\
-#! $SHELL
+      done
+      for deplib in $compile_deplibs; do
+       case $deplib in
+       -L*)
+         case " $new_libs " in
+         *" $deplib "*) ;;
+         *) func_append new_libs " $deplib" ;;
+         esac
+         ;;
+       *) func_append new_libs " $deplib" ;;
+       esac
+      done
+      compile_deplibs="$new_libs"
 
-# $output - temporary wrapper script for $objdir/$outputname
-# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
-#
-# The $output program cannot be directly executed until all the libtool
-# libraries that it depends on are installed.
-#
-# This wrapper script should never be moved out of the build directory.
-# If it is, it will not operate correctly.
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='${SED} -e 1s/^X//'
-sed_quote_subst='$sed_quote_subst'
+      func_append compile_command " $compile_deplibs"
+      func_append finalize_command " $finalize_deplibs"
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+      if test -n "$rpath$xrpath"; then
+       # If the user specified any rpath flags, then add them.
+       for libdir in $rpath $xrpath; do
+         # This is the magic to use -rpath.
+         case "$finalize_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_rpath " $libdir" ;;
+         esac
+       done
+      fi
 
-relink_command=\"$relink_command\"
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append perm_rpath " $libdir" ;;
+         esac
+       fi
+       case $host in
+       *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
+         testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
+         case :$dllsearchpath: in
+         *":$libdir:"*) ;;
+         ::) dllsearchpath=$libdir;;
+         *) func_append dllsearchpath ":$libdir";;
+         esac
+         case :$dllsearchpath: in
+         *":$testbindir:"*) ;;
+         ::) dllsearchpath=$testbindir;;
+         *) func_append dllsearchpath ":$testbindir";;
+         esac
+         ;;
+       esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
 
-# This environment variable determines our operation mode.
-if test \"\$libtool_install_magic\" = \"$magic\"; then
-  # install mode needs the following variables:
-  generated_by_libtool_version='$macro_version'
-  notinst_deplibs='$notinst_deplibs'
-else
-  # When we are sourced in execute mode, \$file and \$ECHO are already set.
-  if test \"\$libtool_execute_magic\" != \"$magic\"; then
-    ECHO=\"$qecho\"
-    file=\"\$0\"
-    # Make sure echo works.
-    if test \"X\$1\" = X--no-reexec; then
-      # Discard the --no-reexec flag, and continue.
-      shift
-    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
-      # Yippee, \$ECHO works!
-      :
-    else
-      # Restart under the correct shell, and then maybe \$ECHO will work.
-      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
-    fi
-  fi\
-"
-       $ECHO >> $output "\
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+       if test -n "$hardcode_libdir_flag_spec"; then
+         if test -n "$hardcode_libdir_separator"; then
+           if test -z "$hardcode_libdirs"; then
+             hardcode_libdirs="$libdir"
+           else
+             # Just accumulate the unique libdirs.
+             case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+             *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+               ;;
+             *)
+               func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
+               ;;
+             esac
+           fi
+         else
+           eval flag=\"$hardcode_libdir_flag_spec\"
+           func_append rpath " $flag"
+         fi
+       elif test -n "$runpath_var"; then
+         case "$finalize_perm_rpath " in
+         *" $libdir "*) ;;
+         *) func_append finalize_perm_rpath " $libdir" ;;
+         esac
+       fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+        test -n "$hardcode_libdirs"; then
+       libdir="$hardcode_libdirs"
+       eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
 
-  # Find the directory that this script lives in.
-  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
-  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+       # Transform all the library objects into standard objects.
+       compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+       finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
+      fi
 
-  # Follow symbolic links until we get to the real thisdir.
-  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
-  while test -n \"\$file\"; do
-    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
 
-    # If there was a directory component, then change thisdir.
-    if test \"x\$destdir\" != \"x\$file\"; then
-      case \"\$destdir\" in
-      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
-      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      # template prelinking step
+      if test -n "$prelink_cmds"; then
+       func_execute_cmds "$prelink_cmds" 'exit $?'
+      fi
+
+      wrappers_required=yes
+      case $host in
+      *cegcc* | *mingw32ce*)
+        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
+        wrappers_required=no
+        ;;
+      *cygwin* | *mingw* )
+        if test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
+      *)
+        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+          wrappers_required=no
+        fi
+        ;;
       esac
-    fi
+      if test "$wrappers_required" = no; then
+       # Replace the output file specification.
+       compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       link_command="$compile_command$compile_rpath"
 
-    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
-    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
-  done
+       # We have no uninstalled library dependencies, so finalize right now.
+       exit_status=0
+       func_show_eval "$link_command" 'exit_status=$?'
 
-  # Try to get the absolute directory name.
-  absdir=\`cd \"\$thisdir\" && pwd\`
-  test -n \"\$absdir\" && thisdir=\"\$absdir\"
-"
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
 
-       if test "$fast_install" = yes; then
-         $ECHO >> $output "\
-  program=lt-'$outputname'$exeext
-  progdir=\"\$thisdir/$objdir\"
+       # Delete the generated files.
+       if test -f "$output_objdir/${outputname}S.${objext}"; then
+         func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
+       fi
 
-  if test ! -f \"\$progdir/\$program\" ||
-     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
-       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+       exit $exit_status
+      fi
 
-    file=\"\$\$-\$program\"
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+       compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+       finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
 
-    if test ! -d \"\$progdir\"; then
-      $MKDIR \"\$progdir\"
-    else
-      $RM \"\$progdir/\$file\"
-    fi"
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+       if test -n "$perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+       if test -n "$finalize_perm_rpath"; then
+         # We should set the runpath_var.
+         rpath=
+         for dir in $finalize_perm_rpath; do
+           func_append rpath "$dir:"
+         done
+         finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+       fi
+      fi
+
+      if test "$no_install" = yes; then
+       # We don't need to create a wrapper script.
+       link_command="$compile_var$compile_command$compile_rpath"
+       # Replace the output file specification.
+       link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
+       # Delete the old output file.
+       $opt_dry_run || $RM $output
+       # Link the executable and exit
+       func_show_eval "$link_command" 'exit $?'
 
-         $ECHO >> $output "\
+       if test -n "$postlink_cmds"; then
+         func_to_tool_file "$output"
+         postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+         func_execute_cmds "$postlink_cmds" 'exit $?'
+       fi
 
-    # relink executable if necessary
-    if test -n \"\$relink_command\"; then
-      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
-      else
-       $ECHO \"\$relink_command_output\" >&2
-       $RM \"\$progdir/\$file\"
-       exit 1
+       exit $EXIT_SUCCESS
       fi
-    fi
 
-    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
-    { $RM \"\$progdir/\$program\";
-      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
-    $RM \"\$progdir/\$file\"
-  fi"
+      if test "$hardcode_action" = relink; then
+       # Fast installation is not supported
+       link_command="$compile_var$compile_command$compile_rpath"
+       relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+       func_warning "this platform does not like uninstalled shared libraries"
+       func_warning "\`$output' will be relinked during installation"
+      else
+       if test "$fast_install" != no; then
+         link_command="$finalize_var$compile_command$finalize_rpath"
+         if test "$fast_install" = yes; then
+           relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
+         else
+           # fast_install is set to needless
+           relink_command=
+         fi
        else
-         $ECHO >> $output "\
-  program='$outputname'
-  progdir=\"\$thisdir/$objdir\"
-"
+         link_command="$compile_var$compile_command$compile_rpath"
+         relink_command="$finalize_var$finalize_command$finalize_rpath"
        fi
+      fi
 
-       $ECHO >> $output "\
+      # Replace the output file specification.
+      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
 
-  if test -f \"\$progdir/\$program\"; then"
+      # Delete the old output files.
+      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
 
-       # Export our shlibpath_var if we have one.
-       if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
-         $ECHO >> $output "\
-    # Add our own library path to $shlibpath_var
-    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+      func_show_eval "$link_command" 'exit $?'
 
-    # Some systems cannot cope with colon-terminated $shlibpath_var
-    # The second colon is a workaround for a bug in BeOS R4 sed
-    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+      if test -n "$postlink_cmds"; then
+       func_to_tool_file "$output_objdir/$outputname"
+       postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
+       func_execute_cmds "$postlink_cmds" 'exit $?'
+      fi
 
-    export $shlibpath_var
-"
-       fi
+      # Now create the wrapper script.
+      func_verbose "creating $output"
 
-       # fixup the dll searchpath if we need to.
-       if test -n "$dllsearchpath"; then
-         $ECHO >> $output "\
-    # Add the dll search path components to the executable PATH
-    PATH=$dllsearchpath:\$PATH
-"
-       fi
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+       # Preserve any variables that may affect compiler behavior
+       for var in $variables_saved_for_relink; do
+         if eval test -z \"\${$var+set}\"; then
+           relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
+         elif eval var_value=\$$var; test -z "$var_value"; then
+           relink_command="$var=; export $var; $relink_command"
+         else
+           func_quote_for_eval "$var_value"
+           relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
+         fi
+       done
+       relink_command="(cd `pwd`; $relink_command)"
+       relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
+      fi
 
-       $ECHO >> $output "\
-    if test \"\$libtool_execute_magic\" != \"$magic\"; then
-      # Run the actual program with our arguments.
-"
+      # Only actually do things if not in dry run mode.
+      $opt_dry_run || {
+       # win32 will think the script is a binary if it has
+       # a .exe suffix, so we strip it off here.
+       case $output in
+         *.exe) func_stripname '' '.exe' "$output"
+                output=$func_stripname_result ;;
+       esac
+       # test for cygwin because mv fails w/o .exe extensions
        case $host in
-       # Backslashes separate directories on plain windows
-       *-*-mingw | *-*-os2*)
-         $ECHO >> $output "\
-      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
-"
+         *cygwin*)
+           exeext=.exe
+           func_stripname '' '.exe' "$outputname"
+           outputname=$func_stripname_result ;;
+         *) exeext= ;;
+       esac
+       case $host in
+         *cygwin* | *mingw* )
+           func_dirname_and_basename "$output" "" "."
+           output_name=$func_basename_result
+           output_path=$func_dirname_result
+           cwrappersource="$output_path/$objdir/lt-$output_name.c"
+           cwrapper="$output_path/$output_name.exe"
+           $RM $cwrappersource $cwrapper
+           trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+           func_emit_cwrapperexe_src > $cwrappersource
+
+           # The wrapper executable is built using the $host compiler,
+           # because it contains $host paths and files. If cross-
+           # compiling, it, like the target executable, must be
+           # executed on the $host or under an emulation environment.
+           $opt_dry_run || {
+             $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
+             $STRIP $cwrapper
+           }
+
+           # Now, create the wrapper script for func_source use:
+           func_ltwrapper_scriptname $cwrapper
+           $RM $func_ltwrapper_scriptname_result
+           trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
+           $opt_dry_run || {
+             # note: this script will not be executed, so do not chmod.
+             if test "x$build" = "x$host" ; then
+               $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
+             else
+               func_emit_wrapper no > $func_ltwrapper_scriptname_result
+             fi
+           }
          ;;
+         * )
+           $RM $output
+           trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
 
-       *)
-         $ECHO >> $output "\
-      exec \"\$progdir/\$program\" \${1+\"\$@\"}
-"
+           func_emit_wrapper no > $output
+           chmod +x $output
          ;;
        esac
-       $ECHO >> $output "\
-      \$ECHO \"\$0: cannot exec \$program \${1+\"\$@\"}\"
-      exit 1
-    fi
-  else
-    # The program doesn't exist.
-    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
-    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
-    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
-    exit 1
-  fi
-fi\
-"
-       chmod +x $output
       }
       exit $EXIT_SUCCESS
       ;;
@@ -6799,7 +9095,7 @@ fi\
        else
          oldobjs="$old_deplibs $non_pic_objects"
          if test "$preload" = yes && test -f "$symfileobj"; then
-           oldobjs="$oldobjs $symfileobj"
+           func_append oldobjs " $symfileobj"
          fi
        fi
        addlibs="$old_convenience"
@@ -6807,10 +9103,10 @@ fi\
 
       if test -n "$addlibs"; then
        gentop="$output_objdir/${outputname}x"
-       generated="$generated $gentop"
+       func_append generated " $gentop"
 
        func_extract_archives $gentop $addlibs
-       oldobjs="$oldobjs $func_extract_archives_result"
+       func_append oldobjs " $func_extract_archives_result"
       fi
 
       # Do each command in the archive commands.
@@ -6821,10 +9117,10 @@ fi\
        # Add any objects from preloaded convenience libraries
        if test -n "$dlprefiles"; then
          gentop="$output_objdir/${outputname}x"
-         generated="$generated $gentop"
+         func_append generated " $gentop"
 
          func_extract_archives $gentop $dlprefiles
-         oldobjs="$oldobjs $func_extract_archives_result"
+         func_append oldobjs " $func_extract_archives_result"
        fi
 
        # POSIX demands no paths to be encoded in archives.  We have
@@ -6840,9 +9136,9 @@ fi\
            done | sort | sort -uc >/dev/null 2>&1); then
          :
        else
-         $ECHO "copying selected object files to avoid basename conflicts..."
+         echo "copying selected object files to avoid basename conflicts..."
          gentop="$output_objdir/${outputname}x"
-         generated="$generated $gentop"
+         func_append generated " $gentop"
          func_mkdir_p "$gentop"
          save_oldobjs=$oldobjs
          oldobjs=
@@ -6858,44 +9154,63 @@ fi\
                # Make sure we don't pick an alternate name that also
                # overlaps.
                newobj=lt$counter-$objbase
-               counter=`expr $counter + 1`
+               func_arith $counter + 1
+               counter=$func_arith_result
                case " $oldobjs " in
                *[\ /]"$newobj "*) ;;
                *) if test ! -f "$gentop/$newobj"; then break; fi ;;
                esac
              done
              func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
-             oldobjs="$oldobjs $gentop/$newobj"
+             func_append oldobjs " $gentop/$newobj"
              ;;
-           *) oldobjs="$oldobjs $obj" ;;
+           *) func_append oldobjs " $obj" ;;
            esac
          done
        fi
+       func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
+       tool_oldlib=$func_to_tool_file_result
        eval cmds=\"$old_archive_cmds\"
 
-       if len=`expr "X$cmds" : ".*" 2>/dev/null` &&
-          test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+       func_len " $cmds"
+       len=$func_len_result
+       if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+         cmds=$old_archive_cmds
+       elif test -n "$archiver_list_spec"; then
+         func_verbose "using command file archive linking..."
+         for obj in $oldobjs
+         do
+           func_to_tool_file "$obj"
+           $ECHO "$func_to_tool_file_result"
+         done > $output_objdir/$libname.libcmd
+         func_to_tool_file "$output_objdir/$libname.libcmd"
+         oldobjs=" $archiver_list_spec$func_to_tool_file_result"
          cmds=$old_archive_cmds
        else
          # the command line is too long to link in one step, link in parts
-         func_echo "using piecewise archive linking..."
+         func_verbose "using piecewise archive linking..."
          save_RANLIB=$RANLIB
          RANLIB=:
          objlist=
          concat_cmds=
          save_oldobjs=$oldobjs
+         oldobjs=
          # Is there a better way of finding the last object in the list?
          for obj in $save_oldobjs
          do
            last_oldobj=$obj
          done
+         eval test_cmds=\"$old_archive_cmds\"
+         func_len " $test_cmds"
+         len0=$func_len_result
+         len=$len0
          for obj in $save_oldobjs
          do
-           oldobjs="$objlist $obj"
-           objlist="$objlist $obj"
-           eval test_cmds=\"$old_archive_cmds\"
-           if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
-              test "$len" -le "$max_cmd_len"; then
+           func_len " $obj"
+           func_arith $len + $func_len_result
+           len=$func_arith_result
+           func_append objlist " $obj"
+           if test "$len" -lt "$max_cmd_len"; then
              :
            else
              # the above command should be used before it gets too long
@@ -6906,6 +9221,7 @@ fi\
              test -z "$concat_cmds" || concat_cmds=$concat_cmds~
              eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
              objlist=
+             len=$len0
            fi
          done
          RANLIB=$save_RANLIB
@@ -6928,12 +9244,12 @@ fi\
     *.la)
       old_library=
       test "$build_old_libs" = yes && old_library="$libname.$libext"
-      func_echo "creating $output"
+      func_verbose "creating $output"
 
       # Preserve any variables that may affect compiler behavior
       for var in $variables_saved_for_relink; do
        if eval test -z \"\${$var+set}\"; then
-         relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+         relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
        elif eval var_value=\$$var; test -z "$var_value"; then
          relink_command="$var=; export $var; $relink_command"
        else
@@ -6943,7 +9259,7 @@ fi\
       done
       # Quote the link command for shipping.
       relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
-      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
       if test "$hardcode_automatic" = yes ; then
        relink_command=
       fi
@@ -6963,12 +9279,23 @@ fi\
              *.la)
                func_basename "$deplib"
                name="$func_basename_result"
-               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+               func_resolve_sysroot "$deplib"
+               eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
                test -z "$libdir" && \
                  func_fatal_error "\`$deplib' is not a valid libtool archive"
-               newdependency_libs="$newdependency_libs $libdir/$name"
+               func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
+               ;;
+             -L*)
+               func_stripname -L '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -L$func_replace_sysroot_result"
+               ;;
+             -R*)
+               func_stripname -R '' "$deplib"
+               func_replace_sysroot "$func_stripname_result"
+               func_append newdependency_libs " -R$func_replace_sysroot_result"
                ;;
-             *) newdependency_libs="$newdependency_libs $deplib" ;;
+             *) func_append newdependency_libs " $deplib" ;;
              esac
            done
            dependency_libs="$newdependency_libs"
@@ -6982,9 +9309,9 @@ fi\
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
                  func_fatal_error "\`$lib' is not a valid libtool archive"
-               newdlfiles="$newdlfiles $libdir/$name"
+               func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
                ;;
-             *) newdlfiles="$newdlfiles $lib" ;;
+             *) func_append newdlfiles " $lib" ;;
              esac
            done
            dlfiles="$newdlfiles"
@@ -7001,7 +9328,7 @@ fi\
                eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
                test -z "$libdir" && \
                  func_fatal_error "\`$lib' is not a valid libtool archive"
-               newdlprefiles="$newdlprefiles $libdir/$name"
+               func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
                ;;
              esac
            done
@@ -7013,7 +9340,7 @@ fi\
                [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
                *) abs=`pwd`"/$lib" ;;
              esac
-             newdlfiles="$newdlfiles $abs"
+             func_append newdlfiles " $abs"
            done
            dlfiles="$newdlfiles"
            newdlprefiles=
@@ -7022,15 +9349,33 @@ fi\
                [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
                *) abs=`pwd`"/$lib" ;;
              esac
-             newdlprefiles="$newdlprefiles $abs"
+             func_append newdlprefiles " $abs"
            done
            dlprefiles="$newdlprefiles"
          fi
          $RM $output
          # place dlname in correct position for cygwin
+         # In fact, it would be nice if we could use this code for all target
+         # systems that can't hard-code library paths into their executables
+         # and that have no shared library path variable independent of PATH,
+         # but it turns out we can't easily determine that from inspecting
+         # libtool variables, so we have to hard-code the OSs to which it
+         # applies here; at the moment, that means platforms that use the PE
+         # object format with DLL files.  See the long comment at the top of
+         # tests/bindir.at for full details.
          tdlname=$dlname
          case $host,$output,$installed,$module,$dlname in
-           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+           *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
+             # If a -bindir argument was supplied, place the dll there.
+             if test "x$bindir" != x ;
+             then
+               func_relative_path "$install_libdir" "$bindir"
+               tdlname=$func_relative_path_result$dlname
+             else
+               # Otherwise fall back on heuristic.
+               tdlname=../bin/$dlname
+             fi
+             ;;
          esac
          $ECHO > $output "\
 # $outputname - a libtool library file
@@ -7089,6 +9434,9 @@ relink_command=\"$relink_command\""
     exit $EXIT_SUCCESS
 }
 
+{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
+    func_mode_link ${1+"$@"}
+
 
 # func_mode_uninstall arg...
 func_mode_uninstall ()
@@ -7106,9 +9454,9 @@ func_mode_uninstall ()
     for arg
     do
       case $arg in
-      -f) RM="$RM $arg"; rmforce=yes ;;
-      -*) RM="$RM $arg" ;;
-      *) files="$files $arg" ;;
+      -f) func_append RM " $arg"; rmforce=yes ;;
+      -*) func_append RM " $arg" ;;
+      *) func_append files " $arg" ;;
       esac
     done
 
@@ -7117,24 +9465,23 @@ func_mode_uninstall ()
 
     rmdirs=
 
-    origobjdir="$objdir"
     for file in $files; do
       func_dirname "$file" "" "."
       dir="$func_dirname_result"
       if test "X$dir" = X.; then
-       objdir="$origobjdir"
+       odir="$objdir"
       else
-       objdir="$dir/$origobjdir"
+       odir="$dir/$objdir"
       fi
       func_basename "$file"
       name="$func_basename_result"
-      test "$mode" = uninstall && objdir="$dir"
+      test "$opt_mode" = uninstall && odir="$dir"
 
-      # Remember objdir for removal later, being careful to avoid duplicates
-      if test "$mode" = clean; then
+      # Remember odir for removal later, being careful to avoid duplicates
+      if test "$opt_mode" = clean; then
        case " $rmdirs " in
-         *" $objdir "*) ;;
-         *) rmdirs="$rmdirs $objdir" ;;
+         *" $odir "*) ;;
+         *) func_append rmdirs " $odir" ;;
        esac
       fi
 
@@ -7156,22 +9503,21 @@ func_mode_uninstall ()
       *.la)
        # Possibly a libtool archive, so verify it.
        if func_lalib_p "$file"; then
-         . $dir/$name
+         func_source $dir/$name
 
          # Delete the libtool libraries and symlinks.
          for n in $library_names; do
-           rmfiles="$rmfiles $objdir/$n"
+           func_append rmfiles " $odir/$n"
          done
-         test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+         test -n "$old_library" && func_append rmfiles " $odir/$old_library"
 
-         case "$mode" in
+         case "$opt_mode" in
          clean)
-           case "  $library_names " in
-           # "  " in the beginning catches empty $dlname
+           case " $library_names " in
            *" $dlname "*) ;;
-           *) rmfiles="$rmfiles $objdir/$dlname" ;;
+           *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
            esac
-           test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+           test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
            ;;
          uninstall)
            if test -n "$library_names"; then
@@ -7194,24 +9540,24 @@ func_mode_uninstall ()
        if func_lalib_p "$file"; then
 
          # Read the .lo file
-         . $dir/$name
+         func_source $dir/$name
 
          # Add PIC object to the list of files to remove.
          if test -n "$pic_object" &&
             test "$pic_object" != none; then
-           rmfiles="$rmfiles $dir/$pic_object"
+           func_append rmfiles " $dir/$pic_object"
          fi
 
          # Add non-PIC object to the list of files to remove.
          if test -n "$non_pic_object" &&
             test "$non_pic_object" != none; then
-           rmfiles="$rmfiles $dir/$non_pic_object"
+           func_append rmfiles " $dir/$non_pic_object"
          fi
        fi
        ;;
 
       *)
-       if test "$mode" = clean ; then
+       if test "$opt_mode" = clean ; then
          noexename=$name
          case $file in
          *.exe)
@@ -7221,22 +9567,29 @@ func_mode_uninstall ()
            noexename=$func_stripname_result
            # $file with .exe has already been added to rmfiles,
            # add $file without .exe
-           rmfiles="$rmfiles $file"
+           func_append rmfiles " $file"
            ;;
          esac
          # Do a test to see if this is a libtool program.
          if func_ltwrapper_p "$file"; then
-           relink_command=
-           . $dir/$noexename
+           if func_ltwrapper_executable_p "$file"; then
+             func_ltwrapper_scriptname "$file"
+             relink_command=
+             func_source $func_ltwrapper_scriptname_result
+             func_append rmfiles " $func_ltwrapper_scriptname_result"
+           else
+             relink_command=
+             func_source $dir/$noexename
+           fi
 
            # note $name still contains .exe if it was in $file originally
            # as does the version of $file that was added into $rmfiles
-           rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+           func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
            if test "$fast_install" = yes && test -n "$relink_command"; then
-             rmfiles="$rmfiles $objdir/lt-$name"
+             func_append rmfiles " $odir/lt-$name"
            fi
            if test "X$noexename" != "X$name" ; then
-             rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+             func_append rmfiles " $odir/lt-${noexename}.c"
            fi
          fi
        fi
@@ -7244,7 +9597,6 @@ func_mode_uninstall ()
       esac
       func_show_eval "$RM $rmfiles" 'exit_status=1'
     done
-    objdir="$origobjdir"
 
     # Try to remove the ${objdir}s in the directories where we deleted files
     for dir in $rmdirs; do
@@ -7256,59 +9608,21 @@ func_mode_uninstall ()
     exit $exit_status
 }
 
+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
+    func_mode_uninstall ${1+"$@"}
 
-# TEST SUITE MARKER ## NON-FUNCTION
-## ----------- ##
-##    Main.    ##
-## ----------- ##
-
-{
-  # Sanity checks first:
-  func_check_version_match
-
-  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
-    func_fatal_configuration "not configured to build any kind of library"
-  fi
-
-  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
-
-
-  # Darwin sucks
-  eval std_shrext=\"$shrext_cmds\"
-
-
-  # Only execute mode is allowed to have -dlopen flags.
-  if test -n "$execute_dlfiles" && test "$mode" != execute; then
-    func_error "unrecognized option \`-dlopen'"
-    $ECHO "$help" 1>&2
-    exit $EXIT_FAILURE
-  fi
-
-  # Change the help message to a mode-specific one.
-  generic_help="$help"
-  help="Try \`$progname --help --mode=$mode' for more information."
-
-  case $mode in
-    compile)           func_mode_compile ${1+"$@"}             ;;
-    execute)           func_mode_execute ${1+"$@"}             ;;
-    finish)            func_mode_finish ${1+"$@"}              ;;
-    install)           func_mode_install ${1+"$@"}             ;;
-    link|relink)       func_mode_link ${1+"$@"}                ;;
-    uninstall|clean)   func_mode_uninstall ${1+"$@"}           ;;
-
-    "")                        help="$generic_help"
-                       func_fatal_help "you must specify a MODE"
-                       ;;
-  esac
+test -z "$opt_mode" && {
+  help="$generic_help"
+  func_fatal_help "you must specify a MODE"
+}
 
-  test -z "$exec_cmd" && \
-    func_fatal_help "invalid operation mode \`$mode'"
+test -z "$exec_cmd" && \
+  func_fatal_help "invalid operation mode \`$opt_mode'"
 
-  if test -n "$exec_cmd"; then
-    eval exec "$exec_cmd"
-    exit $EXIT_FAILURE
-  fi
-}
+if test -n "$exec_cmd"; then
+  eval exec "$exec_cmd"
+  exit $EXIT_FAILURE
+fi
 
 exit $exit_status
 
@@ -7337,3 +9651,5 @@ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
 # mode:shell-script
 # sh-indentation:2
 # End:
+# vi:sw=2
+
index 894e786e16c1d0d94dfc08d6b475270fe1418d6a..1c8ff7049d8f3aaa9741c53e7f3145d9b76a77d8 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2005-06-08.21
+scriptversion=2006-05-10.23
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
 #   Free Software Foundation, Inc.
 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
@@ -33,6 +33,8 @@ if test $# -eq 0; then
 fi
 
 run=:
+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
+sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
 
 # In the cases where this matters, `missing' is being run in the
 # srcdir already.
@@ -44,7 +46,7 @@ fi
 
 msg="missing on your system"
 
-case "$1" in
+case $1 in
 --run)
   # Try to run requested program, and just exit if it succeeds.
   run=
@@ -77,6 +79,7 @@ Supported PROGRAM values:
   aclocal      touch file \`aclocal.m4'
   autoconf     touch file \`configure'
   autoheader   touch file \`config.h.in'
+  autom4te     touch the output file, or create a stub one
   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
@@ -106,7 +109,7 @@ esac
 # Now exit if we have it, but it failed.  Also exit now if we
 # don't have it and --version was passed (most likely to detect
 # the program).
-case "$1" in
+case $1 in
   lex|yacc)
     # Not GNU programs, they don't have --version.
     ;;
@@ -135,7 +138,7 @@ esac
 
 # If it does not exist, or fails to run (possibly an outdated version),
 # try to emulate it.
-case "$1" in
+case $1 in
   aclocal*)
     echo 1>&2 "\
 WARNING: \`$1' is $msg.  You should only need it if
@@ -164,7 +167,7 @@ WARNING: \`$1' is $msg.  You should only need it if
     test -z "$files" && files="config.h"
     touch_files=
     for f in $files; do
-      case "$f" in
+      case $f in
       *:*) touch_files="$touch_files "`echo "$f" |
                                       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
       *) touch_files="$touch_files $f.in";;
@@ -192,8 +195,8 @@ WARNING: \`$1' is needed, but is $msg.
          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'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -f "$file"; then
        touch $file
     else
@@ -214,25 +217,25 @@ WARNING: \`$1' $msg.  You should only need it if
          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
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.y)
            SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.c
            fi
            SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" y.tab.h
            fi
          ;;
        esac
     fi
-    if [ ! -f y.tab.h ]; then
+    if test ! -f y.tab.h; then
        echo >y.tab.h
     fi
-    if [ ! -f y.tab.c ]; then
+    if test ! -f y.tab.c; then
        echo 'main() { return 0; }' >y.tab.c
     fi
     ;;
@@ -244,18 +247,18 @@ WARNING: \`$1' is $msg.  You should only need it if
          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
+    if test $# -ne 1; then
         eval LASTARG="\${$#}"
-       case "$LASTARG" in
+       case $LASTARG in
        *.l)
            SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if [ -f "$SRCFILE" ]; then
+           if test -f "$SRCFILE"; then
                 cp "$SRCFILE" lex.yy.c
            fi
          ;;
        esac
     fi
-    if [ ! -f lex.yy.c ]; then
+    if test ! -f lex.yy.c; then
        echo 'main() { return 0; }' >lex.yy.c
     fi
     ;;
@@ -267,11 +270,9 @@ WARNING: \`$1' is $msg.  You should only need it if
         \`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
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+    if test -f "$file"; then
        touch $file
     else
        test -z "$file" || exec >$file
@@ -289,11 +290,17 @@ WARNING: \`$1' is $msg.  You should only need it if
          DU, IRIX).  You might want to install the \`Texinfo' package or
          the \`GNU make' package.  Grab either from any GNU archive site."
     # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    file=`echo "$*" | sed -n "$sed_output"`
+    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
     if test -z "$file"; then
       # ... or it is the one specified with @setfilename ...
       infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      file=`sed -n '
+       /^@setfilename/{
+         s/.* \([^ ]*\) *$/\1/
+         p
+         q
+       }' $infile`
       # ... or it is derived from the source name (dir/f.texi becomes f.info)
       test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
     fi
@@ -317,13 +324,13 @@ WARNING: \`$1' is $msg.  You should only need it if
     fi
     firstarg="$1"
     if shift; then
-       case "$firstarg" in
+       case $firstarg in
        *o*)
            firstarg=`echo "$firstarg" | sed s/o//`
            tar "$firstarg" "$@" && exit 0
            ;;
        esac
-       case "$firstarg" in
+       case $firstarg in
        *h*)
            firstarg=`echo "$firstarg" | sed s/h//`
            tar "$firstarg" "$@" && exit 0
index 6fbe5e117629c75a723710efc4b2e0341c17c895..ef7e16fdafe243ab5e368763bd4cda18c5872c1f 100755 (executable)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # mkinstalldirs --- make directory hierarchy
 
-scriptversion=2004-02-15.20
+scriptversion=2006-05-11.19
 
 # Original author: Noah Friedman <friedman@prep.ai.mit.edu>
 # Created: 1993-05-16
@@ -11,8 +11,11 @@ scriptversion=2004-02-15.20
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+nl='
+'
+IFS=" ""       $nl"
 errstatus=0
-dirmode=""
+dirmode=
 
 usage="\
 Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
@@ -27,7 +30,7 @@ while test $# -gt 0 ; do
   case $1 in
     -h | --help | --h*)         # -h for help
       echo "$usage"
-      exit 0
+      exit $?
       ;;
     -m)                         # -m PERM arg
       shift
@@ -37,7 +40,7 @@ while test $# -gt 0 ; do
       ;;
     --version)
       echo "$0 $scriptversion"
-      exit 0
+      exit $?
       ;;
     --)                         # stop option processing
       shift
@@ -103,13 +106,21 @@ esac
 
 for file
 do
-  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
   shift
+  IFS=$oIFS
 
-  pathcomp=
   for d
   do
-    pathcomp="$pathcomp$d"
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
     case $pathcomp in
       -*) pathcomp=./$pathcomp ;;
     esac
@@ -124,7 +135,7 @@ do
       else
        if test ! -z "$dirmode"; then
          echo "chmod $dirmode $pathcomp"
-         lasterr=""
+         lasterr=
          chmod "$dirmode" "$pathcomp" || lasterr=$?
 
          if test ! -z "$lasterr"; then
@@ -134,7 +145,7 @@ do
       fi
     fi
 
-    pathcomp="$pathcomp/"
+    pathcomp=$pathcomp/
   done
 done
 
diff --git a/src/tiff/config/test-driver b/src/tiff/config/test-driver
new file mode 100755 (executable)
index 0000000..aba4d1d
--- /dev/null
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic driver script for the 'parallel-tests' mode.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2012 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# 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 <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index 3711d65da30c445936a397520fd526a8d2b4c883..8f27f01a88285af53b8616fa9a7467cb6226bac4 100755 (executable)
@@ -1,62 +1,83 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for LibTIFF Software 3.8.2.
+# Generated by GNU Autoconf 2.69 for LibTIFF Software 4.0.3.
 #
 # Report bugs to <tiff@lists.maptools.org>.
 #
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+#
+#
 # This configure script is free software; the Free Software Foundation
 # gives unlimited permission to copy, distribute and modify it.
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+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
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# 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=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
@@ -65,20 +86,19 @@ fi
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -89,32 +109,324 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-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
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# Use a proper internal environment variable to ensure we don't fall
+  # into an infinite loop, continuously re-executing ourselves.
+  if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+    _as_can_reexec=no; export _as_can_reexec;
+    # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+as_fn_exit 255
+  fi
+  # We don't want this to propagate to other subprocesses.
+          { _as_can_reexec=; unset _as_can_reexec;}
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1
+test -x / || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
 do
-  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
-    eval $as_var=C; export $as_var
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  export CONFIG_SHELL
+             # We cannot yet assume a decent shell, so we have to provide a
+# neutralization value for shells without unset; and this also
+# works around shells that cannot unset nonexistent variables.
+# Preserve -v and -x to the replacement shell.
+BASH_ENV=/dev/null
+ENV=/dev/null
+(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+case $- in # ((((
+  *v*x* | *x*v* ) as_opts=-vx ;;
+  *v* ) as_opts=-v ;;
+  *x* ) as_opts=-x ;;
+  * ) as_opts= ;;
+esac
+exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+# Admittedly, this is quite paranoid, since all the known shells bail
+# out after a failed `exec'.
+$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
-    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: tiff@lists.maptools.org about your system, including
+$0: any error possibly output before this message. Then
+$0: install a modern shell, or manually run the script
+$0: under such a shell if you do have one."
   fi
-done
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
 
-# Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -128,13 +440,17 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# 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" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -149,561 +465,113 @@ echo X/"$0" |
          }
          s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
+# 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
 
 
-if test "x$CONFIG_SHELL" = x; then
-  if (eval ":") 2>/dev/null; then
-  as_have_required=yes
-else
-  as_have_required=no
-fi
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
 
-  if test $as_have_required = yes &&    (eval ":
-(as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
+  # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+  # already done that, so ensure we don't try to do so again and fall
+  # in an infinite loop.  This has already happened in practice.
+  _as_can_reexec=no; export _as_can_reexec
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
 }
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
 
-if as_func_ret_success; then
-  :
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
 else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
 else
-  exitcode=1
-  echo positional parameters were not saved.
+  as_ln_s='cp -pR'
 fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
 
-test \$exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=\$LINENO
-  as_lineno_2=\$LINENO
-  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
-  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
-") 2> /dev/null; then
-  :
-else
-  as_candidate_shells=
-    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=.
-  case $as_dir in
-        /*)
-          for as_base in sh bash ksh sh5; do
-            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
-          done;;
-       esac
-done
-IFS=$as_save_IFS
-
-
-      for as_shell in $as_candidate_shells $SHELL; do
-        # Try only shells that exist, to save several forks.
-        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
-               { ("$as_shell") 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
-
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
 fi
 
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
-:
-_ASEOF
-}; then
-  CONFIG_SHELL=$as_shell
-              as_have_required=yes
-              if { "$as_shell" 2> /dev/null <<\_ASEOF
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
-esac
+# 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'"
 
-fi
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
+SHELL=${CONFIG_SHELL-/bin/sh}
 
-:
-(as_func_return () {
-  (exit $1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
 
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = "$1" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test $exitcode = 0) || { (exit 1); exit 1; }
-
-(
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
-
-_ASEOF
-}; then
-  break
-fi
-
-fi
-
-      done
-
-      if test "x$CONFIG_SHELL" != x; then
-  for as_var in BASH_ENV ENV
-        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
-        done
-        export CONFIG_SHELL
-        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
-fi
-
-
-    if test $as_have_required = no; then
-  echo This script requires a shell more modern than all the
-      echo shells that I found on your system.  Please install a
-      echo modern shell, or manually run the script under such a
-      echo shell if you do have one.
-      { (exit 1); exit 1; }
-fi
-
-
-fi
-
-fi
-
-
-
-(eval "as_func_return () {
-  (exit \$1)
-}
-as_func_success () {
-  as_func_return 0
-}
-as_func_failure () {
-  as_func_return 1
-}
-as_func_ret_success () {
-  return 0
-}
-as_func_ret_failure () {
-  return 1
-}
-
-exitcode=0
-if as_func_success; then
-  :
-else
-  exitcode=1
-  echo as_func_success failed.
-fi
-
-if as_func_failure; then
-  exitcode=1
-  echo as_func_failure succeeded.
-fi
-
-if as_func_ret_success; then
-  :
-else
-  exitcode=1
-  echo as_func_ret_success failed.
-fi
-
-if as_func_ret_failure; then
-  exitcode=1
-  echo as_func_ret_failure succeeded.
-fi
-
-if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
-  :
-else
-  exitcode=1
-  echo positional parameters were not saved.
-fi
-
-test \$exitcode = 0") || {
-  echo No shell found that supports shell functions.
-  echo Please tell autoconf@gnu.org about your system,
-  echo including any error possibly output before this
-  echo message
-}
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # 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 after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, 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
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { 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 sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
--n*)
-  case `echo 'x\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-    as_ln_s='cp -p'
-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$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-        test -d "$1/.";
-      else
-       case $1 in
-        -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
-
-# 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'"
-
-
-
-
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','`
-  ;;
-esac
-
-ECHO=${lt_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 <<_LT_EOF
-$*
-_LT_EOF
-  exit 0
-fi
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-        { 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.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
-fi
-
-
-
-
-exec 7<&0 </dev/null 6>&1
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
 # so uname gets run too.
 ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
 
@@ -718,14 +586,14 @@ cross_compiling=no
 subdirs=
 MFLAGS=
 MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
 
 # Identity of this package.
 PACKAGE_NAME='LibTIFF Software'
 PACKAGE_TARNAME='tiff'
-PACKAGE_VERSION='3.8.2'
-PACKAGE_STRING='LibTIFF Software 3.8.2'
+PACKAGE_VERSION='4.0.3'
+PACKAGE_STRING='LibTIFF Software 4.0.3'
 PACKAGE_BUGREPORT='tiff@lists.maptools.org'
+PACKAGE_URL=''
 
 # Factoring default headers for most tests.
 ac_includes_default="\
@@ -763,148 +631,218 @@ ac_includes_default="\
 # include <unistd.h>
 #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
-datarootdir
-datadir
-sysconfdir
-sharedstatedir
-localstatedir
-includedir
-oldincludedir
-docdir
-infodir
-htmldir
-dvidir
-pdfdir
-psdir
-libdir
-localedir
-mandir
-DEFS
-ECHO_C
-ECHO_N
-ECHO_T
-LIBS
-build_alias
-host_alias
-target_alias
-build
-build_cpu
-build_vendor
-build_os
-host
-host_cpu
-host_vendor
-host_os
-INSTALL_PROGRAM
-INSTALL_SCRIPT
-INSTALL_DATA
-CYGPATH_W
-PACKAGE
-VERSION
-ACLOCAL
-AUTOCONF
-AUTOMAKE
-AUTOHEADER
-MAKEINFO
-install_sh
-STRIP
-INSTALL_STRIP_PROGRAM
-mkdir_p
-AWK
-SET_MAKE
-am__leading_dot
-AMTAR
-am__tar
-am__untar
-MAINTAINER_MODE_TRUE
-MAINTAINER_MODE_FALSE
-MAINT
-LIBTIFF_MAJOR_VERSION
-LIBTIFF_MINOR_VERSION
-LIBTIFF_MICRO_VERSION
-LIBTIFF_ALPHA_VERSION
-LIBTIFF_VERSION
-LIBTIFF_VERSION_INFO
-LIBTIFF_RELEASE_DATE
-CC
-CFLAGS
-LDFLAGS
-CPPFLAGS
-ac_ct_CC
-EXEEXT
-OBJEXT
-DEPDIR
-am__include
-am__quote
-AMDEP_TRUE
-AMDEP_FALSE
-AMDEPBACKSLASH
-CCDEPMODE
-am__fastdepCC_TRUE
-am__fastdepCC_FALSE
-LN_S
-LIBTOOL
-SED
-GREP
-EGREP
-FGREP
-LD
-DUMPBIN
-ac_ct_DUMPBIN
-NM
-AR
-RANLIB
-lt_ECHO
-CPP
-AS
-DLLTOOL
-OBJDUMP
-LIBOBJS
-HAVE_RPATH_TRUE
-HAVE_RPATH_FALSE
-LIBTIFF_DOCDIR
-HAVE_CXX_TRUE
-HAVE_CXX_FALSE
-XMKMF
-X_CFLAGS
-X_PRE_LIBS
-X_LIBS
-X_EXTRA_LIBS
-acx_pthread_config
-PTHREAD_CC
-PTHREAD_LIBS
-PTHREAD_CFLAGS
-GL_CFLAGS
+ac_subst_vars='am__EXEEXT_FALSE
+am__EXEEXT_TRUE
+LTLIBOBJS
+LIBDIR
+WIN32_IO_FALSE
+WIN32_IO_TRUE
+HAVE_OPENGL_FALSE
+HAVE_OPENGL_TRUE
+GLUT_LIBS
+GLUT_CFLAGS
+GLU_LIBS
+GLU_CFLAGS
 GL_LIBS
-CXX
-CXXFLAGS
-ac_ct_CXX
-CXXDEPMODE
-am__fastdepCXX_TRUE
-am__fastdepCXX_FALSE
+GL_CFLAGS
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+X_EXTRA_LIBS
+X_LIBS
+X_PRE_LIBS
+X_CFLAGS
+XMKMF
+HAVE_CXX_FALSE
+HAVE_CXX_TRUE
+LIBTIFF_DOCDIR
+HAVE_RPATH_FALSE
+HAVE_RPATH_TRUE
+LIBOBJS
+tiff_libs_private
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 CXXCPP
-GLU_CFLAGS
-GLU_LIBS
-GLUT_CFLAGS
-GLUT_LIBS
-HAVE_OPENGL_TRUE
-HAVE_OPENGL_FALSE
-LIBDIR
-LTLIBOBJS'
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
+ac_ct_CXX
+CXXFLAGS
+CXX
+CPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+MANIFEST_TOOL
+RANLIB
+ac_ct_AR
+AR
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+EGREP
+GREP
+SED
+LIBTOOL
+OBJDUMP
+DLLTOOL
+AS
+HAVE_LD_VERSION_SCRIPT_FALSE
+HAVE_LD_VERSION_SCRIPT_TRUE
+LN_S
+am__fastdepCC_FALSE
+am__fastdepCC_TRUE
+CCDEPMODE
+am__nodep
+AMDEPBACKSLASH
+AMDEP_FALSE
+AMDEP_TRUE
+am__quote
+am__include
+DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+LIBTIFF_RELEASE_DATE
+LIBTIFF_VERSION_INFO
+LIBTIFF_VERSION
+LIBTIFF_ALPHA_VERSION
+LIBTIFF_MICRO_VERSION
+LIBTIFF_MINOR_VERSION
+LIBTIFF_MAJOR_VERSION
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
+am__untar
+am__tar
+AMTAR
+am__leading_dot
+SET_MAKE
+AWK
+mkdir_p
+MKDIR_P
+INSTALL_STRIP_PROGRAM
+STRIP
+install_sh
+MAKEINFO
+AUTOHEADER
+AUTOMAKE
+AUTOCONF
+ACLOCAL
+VERSION
+PACKAGE
+CYGPATH_W
+am__isrc
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+host_os
+host_vendor
+host_cpu
+host
+build_os
+build_vendor
+build_cpu
+build
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
 ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+enable_maintainer_mode
+enable_dependency_tracking
+enable_ld_version_script
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+with_sysroot
+enable_libtool_lock
+enable_silent_rules
+enable_rpath
+enable_largefile
+with_docdir
+enable_ccitt
+enable_packbits
+enable_lzw
+enable_thunder
+enable_next
+enable_logluv
+enable_mdi
+enable_zlib
+with_zlib_include_dir
+with_zlib_lib_dir
+enable_pixarlog
+enable_jpeg
+with_jpeg_include_dir
+with_jpeg_lib_dir
+enable_old_jpeg
+enable_jbig
+with_jbig_include_dir
+with_jbig_lib_dir
+enable_lzma
+with_lzma_include_dir
+with_lzma_lib_dir
+enable_jpeg12
+with_jpeg12_include_dir
+with_jpeg12_lib
+enable_cxx
+with_x
+enable_strip_chopping
+with_default_strip_size
+enable_defer_strile_load
+enable_chunky_strip_read
+enable_extrasample_as_alpha
+enable_check_ycbcr_subsampling
+'
       ac_precious_vars='build_alias
 host_alias
 target_alias
@@ -914,16 +852,18 @@ LDFLAGS
 LIBS
 CPPFLAGS
 CPP
-XMKMF
 CXX
 CXXFLAGS
 CCC
-CXXCPP'
+CXXCPP
+XMKMF'
 
 
 # Initialize some variables set by options.
 ac_init_help=
 ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
 # The variables have the same names as the options, with
 # dashes changed to underlines.
 cache_file=/dev/null
@@ -979,8 +919,9 @@ do
   fi
 
   case $ac_option in
-  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)   ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1022,13 +963,20 @@ do
     datarootdir=$ac_optarg ;;
 
   -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    ac_useropt=`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 ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
 
   -docdir | --docdir | --docdi | --doc | --do)
     ac_prev=docdir ;;
@@ -1041,13 +989,20 @@ do
     dvidir=$ac_optarg ;;
 
   -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    ac_useropt=`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'`
-    eval enable_$ac_feature=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
 
   -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
   | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -1238,22 +1193,36 @@ do
     ac_init_version=: ;;
 
   -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    ac_useropt=`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'`
-    eval with_$ac_package=\$ac_optarg ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
 
   -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    ac_useropt=`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 ;;
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
 
   --x)
     # Obsolete; use --with-x.
@@ -1273,26 +1242,26 @@ do
   | --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; }; }
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
     ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
     # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
 
   *)
     # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    $as_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}
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
     ;;
 
   esac
@@ -1300,23 +1269,36 @@ 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; }; }
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
 fi
 
-# Be sure to have absolute directory names.
+# Check all directory arguments for consistency.
 for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
                datadir sysconfdir sharedstatedir localstatedir includedir \
                oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
                libdir localedir mandir
 do
   eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
   case $ac_val in
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
 done
 
 # There might be people who depend on the old broken behavior: `$host'
@@ -1330,8 +1312,6 @@ target=$target_alias
 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
@@ -1346,23 +1326,21 @@ test "$silent" = yes && exec 6>/dev/null
 ac_pwd=`pwd` && test -n "$ac_pwd" &&
 ac_ls_di=`ls -di .` &&
 ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
-  { echo "$as_me: error: Working directory cannot be determined" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "working directory cannot be determined"
 test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
-  { echo "$as_me: error: pwd does not report name of working directory" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
 if test -z "$srcdir"; then
   ac_srcdir_defaulted=yes
   # Try the directory containing this script, then the parent directory.
-  ac_confdir=`$as_dirname -- "$0" ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$0" : 'X\(//\)[^/]' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$0" |
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -1389,13 +1367,11 @@ else
 fi
 if test ! -r "$srcdir/$ac_unique_file"; then
   test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
-  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
 fi
 ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
 ac_abs_confdir=`(
-       cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
-   { (exit 1); exit 1; }; }
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
        pwd)`
 # When building in place, set srcdir=.
 if test "$ac_abs_confdir" = "$ac_pwd"; then
@@ -1421,7 +1397,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures LibTIFF Software 3.8.2 to adapt to many kinds of systems.
+\`configure' configures LibTIFF Software 4.0.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1435,7 +1411,7 @@ Configuration:
       --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
+  -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
@@ -1443,9 +1419,9 @@ Configuration:
 
 Installation directories:
   --prefix=PREFIX         install architecture-independent files in PREFIX
-                         [$ac_default_prefix]
+                          [$ac_default_prefix]
   --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                         [PREFIX]
+                          [PREFIX]
 
 By default, \`make install' will install all the files in
 \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
@@ -1455,25 +1431,25 @@ for instance \`--prefix=\$HOME'.
 For better control, use the options below.
 
 Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
-  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
-  --infodir=DIR          info documentation [DATAROOTDIR/info]
-  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
-  --mandir=DIR           man documentation [DATAROOTDIR/man]
-  --docdir=DIR           documentation root [DATAROOTDIR/doc/tiff]
-  --htmldir=DIR          html documentation [DOCDIR]
-  --dvidir=DIR           dvi documentation [DOCDIR]
-  --pdfdir=DIR           pdf documentation [DOCDIR]
-  --psdir=DIR            ps documentation [DOCDIR]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/tiff]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
 _ACEOF
 
   cat <<\_ACEOF
@@ -1495,22 +1471,30 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of LibTIFF Software 3.8.2:";;
+     short | recursive ) echo "Configuration of LibTIFF Software 4.0.3:";;
    esac
   cat <<\_ACEOF
 
 Optional Features:
+  --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-maintainer-mode  enable make rules and dependencies not useful
-                         (and sometimes confusing) to the casual installer
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-maintainer-mode
+                          enable make rules and dependencies not useful (and
+                          sometimes confusing) to the casual installer
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
+  --enable-ld-version-script
+                          enable linker version script (default is disabled)
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
   --enable-rpath          Enable runtime linker paths (-R libtool option)
   --disable-largefile     omit support for large files
   --disable-ccitt         disable support for CCITT Group 3 & 4 algorithms
@@ -1527,9 +1511,13 @@ Optional Features:
                           (requires Zlib)
   --disable-jpeg          disable IJG JPEG library usage (required for JPEG
                           compression, enabled by default)
-  --enable-old-jpeg       enable support for Old JPEG compresson (read
-                          contrib/ojpeg/README first! Compilation fails with
-                          unpatched IJG JPEG library)
+  --disable-old-jpeg      disable support for Old JPEG compresson (read-only,
+                          enabled by default)
+  --disable-jbig          disable JBIG-KIT usage (required for ISO JBIG
+                          compression, enabled by default)
+  --disable-lzma          disable liblzma usage (required for LZMA2
+                          compression, enabled by default)
+  --enable-jpeg12         enable libjpeg 8/12bit dual mode
   --enable-cxx            enable C++ stream API building (requires C++
                           compiler)
   --disable-strip-chopping
@@ -1537,6 +1525,12 @@ Optional Features:
                           to convert single-strip uncompressed images to
                           mutiple strips of specified size to reduce memory
                           usage)
+  --enable-defer-strile-load
+                          enable deferred strip/tile offset/size loading
+                          (experimental)
+  --enable-chunky-strip-read
+                          enable reading large strips in chunks for
+                          TIFFReadScanline() (experimental)
   --disable-extrasample-as-alpha
                           the RGBA interface will treat a fourth sample with
                           no EXTRASAMPLE_ value as being ASSOCALPHA. Many
@@ -1549,9 +1543,11 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-pic              try to use only PIC/non-PIC objects [default=use
+  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-sysroot=DIR Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).
   --with-docdir=DIR       directory where documentation should be installed
   --with-zlib-include-dir=DIR
                           location of Zlib headers
@@ -1559,12 +1555,20 @@ Optional Packages:
   --with-jpeg-include-dir=DIR
                           location of IJG JPEG library headers
   --with-jpeg-lib-dir=DIR location of IJG JPEG library binary
+  --with-jbig-include-dir=DIR
+                          location of JBIG-KIT headers
+  --with-jbig-lib-dir=DIR location of JBIG-KIT library binary
+  --with-lzma-include-dir=DIR
+                          location of liblzma headers
+  --with-lzma-lib-dir=DIR location of liblzma library binary
+  --with-jpeg12-include-dir=DIR
+                          location of libjpeg 12bit headers
+  --with-jpeg12-lib=LIBRARY
+                          path to libjpeg 12bit library
   --with-x                use the X Window System
-  --with-apple-opengl-framework
-                          use Apple OpenGL framework (Mac OS X only)
   --with-default-strip-size=SIZE
                           default size of the strip in bytes (when strip
-                          chopping enabled) [default=8192]
+                          chopping enabled) [[default=8192]]
 
 Some influential environment variables:
   CC          C compiler command
@@ -1572,13 +1576,13 @@ Some influential environment variables:
   LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
               nonstandard directory <lib dir>
   LIBS        libraries to pass to the linker, e.g. -l<library>
-  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
-  XMKMF       Path to xmkmf, Makefile generator for X Window System
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   CXXCPP      C++ preprocessor
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1591,15 +1595,17 @@ fi
 if test "$ac_init_help" = "recursive"; then
   # If there are subdirs, report their specific --help.
   for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d "$ac_dir" || continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
     ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1635,7 +1641,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
       echo &&
       $SHELL "$ac_srcdir/configure" --help=recursive
     else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
     fi || ac_status=$?
     cd "$ac_pwd" || { ac_status=$?; break; }
   done
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-LibTIFF Software configure 3.8.2
-generated by GNU Autoconf 2.61
+LibTIFF Software configure 4.0.3
+generated by GNU Autoconf 2.69
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it.
 _ACEOF
   exit
 fi
-cat >config.log <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by LibTIFF Software $as_me 3.8.2, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
 
-  $ $0 $@
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
 
-_ACEOF
-exec 5>>config.log
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
 {
-cat <<_ASUNAME
-## --------- ##
-## Platform. ##
-## --------- ##
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
-IFS=$as_save_IFS
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-} >&5
+} # ac_fn_c_try_compile
 
-cat >&5 <<_ACEOF
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-## ----------- ##
-## Core tests. ##
-## ----------- ##
+} # ac_fn_c_try_link
 
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
 _ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_header_compile
 
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Strip out --silent because we don't want to record it for future runs.
-# Also quote any args containing shell meta-characters.
-# Make two passes to allow for proper duplicate-argument suppression.
-ac_configure_args=
-ac_configure_args0=
-ac_configure_args1=
-ac_must_keep_next=false
-for ac_pass in 1 2
-do
-  for ac_arg
-  do
-    case $ac_arg in
-    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
-    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-    | -silent | --silent | --silen | --sile | --sil)
-      continue ;;
-    *\'*)
-      ac_arg=`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_arg'"
-      ;;
-    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: Use '\'' to represent an apostrophe within the trap.
-# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-    cat <<\_ASBOX
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-(
-  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
-    eval ac_val=\$$ac_var
-    case $ac_val in #(
-    *${as_nl}*)
-      case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
-      esac
-      case $ac_var in #(
-      _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
-      esac ;;
-    esac
-  done
-  (set) 2>&1 |
-    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
-    *${as_nl}ac_space=\ *)
-      sed -n \
-       "s/'\''/'\''\\\\'\'''\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
-      ;; #(
-    *)
-      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
-      ;;
-    esac |
-    sort
-)
-    echo
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-    cat <<\_ASBOX
-## ----------------- ##
-## Output variables. ##
-## ----------------- ##
-_ASBOX
-    echo
-    for ac_var in $ac_subst_vars
-    do
-      eval ac_val=\$$ac_var
-      case $ac_val in
-      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-      esac
-      echo "$ac_var='\''$ac_val'\''"
-    done | sort
-    echo
+} # ac_fn_c_try_cpp
 
-    if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
-## File substitutions. ##
-## ------------------- ##
-_ASBOX
-      echo
-      for ac_var in $ac_subst_files
-      do
-       eval ac_val=\$$ac_var
-       case $ac_val in
-       *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
-       esac
-       echo "$ac_var='\''$ac_val'\''"
-      done | sort
-      echo
-    fi
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-_ASBOX
-      echo
-      cat confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core *.core core.conftest.* &&
-    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -f -r conftest* confdefs.h
+} # ac_fn_c_try_run
 
-# Predefined preprocessor variables.
+# ac_fn_c_check_func LINENO FUNC VAR
+# ----------------------------------
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
+ac_fn_c_check_func ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $2 innocuous_$2
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $2 (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
 
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+#undef $2
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $2 ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$2 || defined __stub___$2
+choke me
+#endif
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
+int
+main ()
+{
+return $2 ();
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_func
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
+} # ac_fn_cxx_try_compile
 
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -n "$CONFIG_SITE"; then
-  set x "$CONFIG_SITE"
-elif test "x$prefix" != xNONE; then
-  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
 else
-  set x "$ac_default_prefix/share/config.site" \
-       "$ac_default_prefix/etc/config.site"
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
 fi
-shift
-for ac_site_file
-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
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
-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
+} # ac_fn_cxx_try_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
   fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
 else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in $ac_precious_vars; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val=\$ac_cv_env_${ac_var}_value
-  eval ac_new_val=\$ac_env_${ac_var}_value
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { 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; }; }
+       ac_retval=1
 fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_cxx_try_link
 
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
 
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
 
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------------- ##
+## Report this to tiff@lists.maptools.org ##
+## -------------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_header_mongrel
 
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
 
+} # ac_fn_c_check_type
 
+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
+# --------------------------------------------
+# Tries to find the compile-time value of EXPR in a program that includes
+# INCLUDES, setting VAR accordingly. Returns whether the value could be
+# computed
+ac_fn_c_compute_int ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if test "$cross_compiling" = yes; then
+    # Depending upon the size, compute the lo and hi bounds.
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= 0)];
+test_array [0] = 0;
+return test_array [0];
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid; break
+else
+  as_fn_arith $ac_mid + 1 && ac_lo=$as_val
+                       if test $ac_lo -le $ac_mid; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) < 0)];
+test_array [0] = 0;
+return test_array [0];
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_lo=$ac_mid; break
+else
+  as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
+                       if test $ac_mid -le $ac_hi; then
+                         ac_lo= ac_hi=
+                         break
+                       fi
+                       as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  ac_lo= ac_hi=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+test_array [0] = 0;
+return test_array [0];
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_hi=$ac_mid
+else
+  as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in #((
+?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
+'') ac_retval=1 ;;
+esac
+  else
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+static long int longval () { return $2; }
+static unsigned long int ulongval () { return $2; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
 
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (($2) < 0)
+    {
+      long int i = longval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%ld", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ($2))
+       return 1;
+      fprintf (f, "%lu", i);
+    }
+  /* Do not output a trailing newline, as this causes \r\n confusion
+     on some platforms.  */
+  return ferror (f) || fclose (f) != 0;
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  echo >>conftest.val; read $3 <conftest.val; ac_retval=0
+else
+  ac_retval=1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f conftest.val
 
+  fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
 
+} # ac_fn_c_compute_int
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
 
+It was created by LibTIFF Software $as_me 4.0.3, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
+  $ $0 $@
 
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
 
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
 
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
 
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
 
-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
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 ac_aux_dir=
@@ -2028,9 +2742,7 @@ for ac_dir in config "$srcdir"/config; do
   fi
 done
 if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
-echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2052,35 +2764,27 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
-  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
-echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
 
-{ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+$as_echo_n "checking build system type... " >&6; }
+if ${ac_cv_build+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_build_alias=$build_alias
 test "x$ac_build_alias" = x &&
   ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
 test "x$ac_build_alias" = x &&
-  { { 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; }; }
+  as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
-  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
-echo "${ECHO_T}$ac_cv_build" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+$as_echo "$ac_cv_build" >&6; }
 case $ac_cv_build in
 *-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
-echo "$as_me: error: invalid value of canonical build" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -2096,28 +2800,24 @@ IFS=$ac_save_IFS
 case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
 
 
-{ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+$as_echo_n "checking host system type... " >&6; }
+if ${ac_cv_host+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test "x$host_alias" = x; then
   ac_cv_host=$ac_cv_build
 else
   ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
-    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
-echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
-echo "${ECHO_T}$ac_cv_host" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+$as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
-echo "$as_me: error: invalid value of canonical host" >&2;}
-   { (exit 1); exit 1; }; };;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -2134,7 +2834,8 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
 
-am__api_version="1.9"
+am__api_version='1.12'
+
 # 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:
@@ -2148,22 +2849,23 @@ am__api_version="1.9"
 # 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; }
+# Reject install programs that cannot install multiple files.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
+$as_echo_n "checking for a BSD-compatible install... " >&6; }
 if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if ${ac_cv_path_install+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
+    # 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\\/* | \
+  ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \
   /usr/ucb/* ) ;;
   *)
     # OSF1 and SCO ODT 3.0 have their own names for install.
@@ -2171,7 +2873,7 @@ case $as_dir/ in
     # by default.
     for ac_prog in ginstall scoinst install; do
       for ac_exec_ext in '' $ac_executable_extensions; do
-       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+       if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
          if test $ac_prog = install &&
            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
            # AIX install.  It has an incompatible calling convention.
@@ -2181,17 +2883,29 @@ case $as_dir/ in
            # 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
+           rm -rf conftest.one conftest.two conftest.dir
+           echo one > conftest.one
+           echo two > conftest.two
+           mkdir conftest.dir
+           if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" &&
+             test -s conftest.one && test -s conftest.two &&
+             test -s conftest.dir/conftest.one &&
+             test -s conftest.dir/conftest.two
+           then
+             ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+             break 3
+           fi
          fi
        fi
       done
     done
     ;;
 esac
-done
+
+  done
 IFS=$as_save_IFS
 
+rm -rf conftest.one conftest.two conftest.dir
 
 fi
   if test "${ac_cv_path_install+set}" = set; then
@@ -2204,8 +2918,8 @@ fi
     INSTALL=$ac_install_sh
   fi
 fi
-{ echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5
+$as_echo "$INSTALL" >&6; }
 
 # Use test -z because SunOS4 sh mishandles braces in ${var-val}.
 # It thinks the first close brace ends the variable substitution.
@@ -2215,118 +2929,262 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
 
 test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
-{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
-echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
-# Do `set' in a subshell so we don't clobber the current shell's
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
+$as_echo_n "checking whether build environment is sane... " >&6; }
+# Reject unsafe characters in $srcdir or the absolute working directory
+# name.  Accept space and tab only in the latter.
+am_lf='
+'
+case `pwd` in
+  *[\\\"\#\$\&\'\`$am_lf]*)
+    as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;;
+esac
+case $srcdir in
+  *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
+esac
+
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t $srcdir/configure conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&5
-echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" >&2;}
-   { (exit 1); exit 1; }; }
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
    # Ok.
    :
 else
-   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
-Check your system clock" >&5
-echo "$as_me: error: newly created file is older than distributed files!
-Check your system clock" >&2;}
-   { (exit 1); exit 1; }; }
+   as_fn_error $? "newly created file is older than distributed files!
+Check your system clock" "$LINENO" 5
 fi
-{ echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
 test "$program_suffix" != NONE &&
   program_transform_name="s&\$&$program_suffix&;$program_transform_name"
-# Double any \ or $.  echo might interpret backslashes.
+# Double any \ or $.
 # By default was `s,x,x', remove it if useless.
-cat <<\_ACEOF >conftest.sed
-s/[\\$]/&&/g;s/;s,x,x,$//
-_ACEOF
-program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
-rm -f conftest.sed
+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
 # expand $ac_aux_dir to an absolute path
 am_aux_dir=`cd $ac_aux_dir && pwd`
 
-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+if test x"${MISSING+set}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
+  *)
+    MISSING="\${SHELL} $am_aux_dir/missing" ;;
+  esac
+fi
 # Use eval to expand $SHELL
 if eval "$MISSING --run true"; then
   am_missing_run="$MISSING --run "
 else
   am_missing_run=
-  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
-echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
-fi
-
-if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
-  # We used to keeping the `.' as first argument, in order to
-  # allow $(mkdir_p) to be used without argument.  As in
-  #   $(mkdir_p) $(somedir)
-  # where $(somedir) is conditionally defined.  However this is wrong
-  # for two reasons:
-  #  1. if the package is installed by a user who cannot write `.'
-  #     make install will fail,
-  #  2. the above comment should most certainly read
-  #     $(mkdir_p) $(DESTDIR)$(somedir)
-  #     so it does not work when $(somedir) is undefined and
-  #     $(DESTDIR) is not.
-  #  To support the latter case, we have to write
-  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
-  #  so the `.' trick is pointless.
-  mkdir_p='mkdir -p --'
-else
-  # On NextStep and OpenStep, the `mkdir' command does not
-  # recognize any option.  It will interpret all options as
-  # directories to create, and then abort because `.' already
-  # exists.
-  for d in ./-p ./--version;
-  do
-    test -d $d && rmdir $d
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
+fi
+
+if test x"${install_sh}" != xset; then
+  case $am_aux_dir in
+  *\ * | *\    *)
+    install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
+  *)
+    install_sh="\${SHELL} $am_aux_dir/install-sh"
+  esac
+fi
+
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the 'STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+  if ${ac_cv_path_mkdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in mkdir gmkdir; do
+        for ac_exec_ext in '' $ac_executable_extensions; do
+          as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+          case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+            'mkdir (GNU coreutils) '* | \
+            'mkdir (coreutils) '* | \
+            'mkdir (fileutils) '4.1*)
+              ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+              break 3;;
+          esac
+        done
+       done
   done
-  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
-  if test -f "$ac_aux_dir/mkinstalldirs"; then
-    mkdir_p='$(mkinstalldirs)'
+IFS=$as_save_IFS
+
+fi
+
+  test -d ./--version && rmdir ./--version
+  if test "${ac_cv_path_mkdir+set}" = set; then
+    MKDIR_P="$ac_cv_path_mkdir -p"
   else
-    mkdir_p='$(install_sh) -d'
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for MKDIR_P within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    MKDIR_P="$ac_install_sh -d"
   fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
 
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AWK+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
@@ -2336,43 +3194,44 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_AWK="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AWK=$ac_cv_prog_AWK
 if test -n "$AWK"; then
-  { echo "$as_me:$LINENO: result: $AWK" >&5
-echo "${ECHO_T}$AWK" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
   test -n "$AWK" && break
 done
 
-{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
-echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
-set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
-if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
 SHELL = /bin/sh
 all:
        @echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
 case `${MAKE-make} -f conftest.make 2>/dev/null` in
   *@@@%%%=?*=@@@%%%*)
     eval ac_cv_prog_make_${ac_make}_set=yes;;
@@ -2382,12 +3241,12 @@ esac
 rm -f conftest.make
 fi
 if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
   SET_MAKE=
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
@@ -2400,12 +3259,14 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-# test to see if srcdir already configured
-if test "`cd $srcdir && pwd`" != "`pwd`" &&
-   test -f $srcdir/config.status; then
-  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
-echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
-   { (exit 1); exit 1; }; }
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  fi
 fi
 
 # test whether we have cygpath
@@ -2420,7 +3281,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='tiff'
- VERSION='3.8.2'
+ VERSION='4.0.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2448,138 +3309,37 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-install_sh=${install_sh-"$am_aux_dir/install-sh"}
-
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
-# tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-if test "$cross_compiling" != no; then
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-fi
-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
 
 # We need awk for the "check" target.  The system "awk" is bad on
 # some platforms.
-# Always define AMTAR for backward compatibility.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
 
-AMTAR=${AMTAR-"${am_missing_run}tar"}
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
-am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
 
 
 
 
 
-{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
-echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
     # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then
+if test "${enable_maintainer_mode+set}" = set; then :
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
   USE_MAINTAINER_MODE=no
 fi
 
-  { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5
-echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; }
-
-
-if test $USE_MAINTAINER_MODE = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
   MAINTAINER_MODE_TRUE=
   MAINTAINER_MODE_FALSE='#'
 else
@@ -2591,25 +3351,30 @@ fi
 
 
 
-LIBTIFF_MAJOR_VERSION=3
-LIBTIFF_MINOR_VERSION=8
-LIBTIFF_MICRO_VERSION=2
+LIBTIFF_MAJOR_VERSION=4
+LIBTIFF_MINOR_VERSION=0
+LIBTIFF_MICRO_VERSION=3
 LIBTIFF_ALPHA_VERSION=
 LIBTIFF_VERSION=$LIBTIFF_MAJOR_VERSION.$LIBTIFF_MINOR_VERSION.$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION
 LIBTIFF_RELEASE_DATE=`date +"%Y%m%d"`
 
+LIBTIFF_CURRENT=7
+LIBTIFF_REVISION=0
+LIBTIFF_AGE=2
+LIBTIFF_VERSION_INFO=$LIBTIFF_CURRENT:$LIBTIFF_REVISION:$LIBTIFF_AGE
+
 # This is a special hack for OpenBSD and MirOS systems. The dynamic linker
 # in OpenBSD uses some special semantics for shared libraries. Their soname
 # contains only two numbers, major and minor.
 # See http://bugzilla.remotesensing.org/show_bug.cgi?id=838 for details.
-case "$target_os" in
-    openbsd* | mirbsd*)
-       LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION:0
-       ;;
-    *)
-       LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION:$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION
-       ;;
-esac
+#case "$host_os" in
+#    openbsd* | mirbsd*)
+#      LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION:0
+#      ;;
+#    *)
+#      LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION:$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION
+#      ;;
+#esac
 
 
 
@@ -2627,10 +3392,10 @@ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2640,25 +3405,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2667,10 +3432,10 @@ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2680,25 +3445,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="gcc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 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; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_CC" = x; then
@@ -2706,12 +3471,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -2724,10 +3485,10 @@ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2737,25 +3498,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="${ac_tool_prefix}cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2764,10 +3525,10 @@ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2778,18 +3539,18 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
        ac_prog_rejected=yes
        continue
      fi
     ac_cv_prog_CC="cc"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 if test $ac_prog_rejected = yes; then
@@ -2808,11 +3569,11 @@ fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2823,10 +3584,10 @@ if test -z "$CC"; then
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2836,25 +3597,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 CC=$ac_cv_prog_CC
 if test -n "$CC"; then
-  { echo "$as_me:$LINENO: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2867,10 +3628,10 @@ if test -z "$CC"; then
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_CC"; then
   ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
@@ -2880,25 +3641,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_CC="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 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; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -2910,12 +3671,8 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     CC=$ac_ct_CC
@@ -2925,51 +3682,37 @@ 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; }; }
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
 # Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -2981,42 +3724,38 @@ main ()
 }
 _ACEOF
 ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.exe b.out"
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
 # Try to create an executable without -o first, disregard a.out.
 # It will help us diagnose broken compilers, and finding out an intuition
 # of exeext.
-{ 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[^ ]*//'`
-#
-# List of possible output files, starting from the most likely.
-# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
-# only as a last resort.  b.out is created by i960 compilers.
-ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
-#
-# The IRIX 6 linker writes into existing files which may not be
-# executable, retaining their permissions.  Remove them first so a
-# subsequent execution test works.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
 ac_rmfiles=
 for ac_file in $ac_files
 do
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     * ) ac_rmfiles="$ac_rmfiles $ac_file";;
   esac
 done
 rm -f $ac_rmfiles
 
-if { (ac_try="$ac_link_default"
+if { ac_try="$ac_link_default"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link_default") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
 # So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
 # in a Makefile.  We should not override ac_cv_exeext if it was cached,
@@ -3026,14 +3765,14 @@ for ac_file in $ac_files ''
 do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
        ;;
     [ab].out )
        # We found the default executable, but exeext='' is most
        # certainly right.
        break;;
     *.* )
-        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
        then :; else
           ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
        fi
@@ -3052,78 +3791,41 @@ test "$ac_cv_exeext" = no && ac_cv_exeext=
 else
   ac_file=''
 fi
-
-{ echo "$as_me:$LINENO: result: $ac_file" >&5
-echo "${ECHO_T}$ac_file" >&6; }
-if test -z "$ac_file"; then
-  echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { 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; }; }
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 fi
-
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
 ac_exeext=$ac_cv_exeext
 
-# Check that 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'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
 ac_clean_files=$ac_clean_files_save
-# Check that 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 { (ac_try="$ac_link"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
   # If both `conftest.exe' and `conftest' are `present' (well, observable)
 # catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
 # work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3131,154 +3833,182 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
 for ac_file in conftest.exe conftest conftest.*; do
   test -f "$ac_file" || continue
   case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
     *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
          break;;
     * ) break;;
   esac
 done
 else
-  { { 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; }; }
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
 fi
-
-rm -f conftest$ac_cv_exeext
-{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
-echo "${ECHO_T}$ac_cv_exeext" >&6; }
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
 rm -f conftest.$ac_ext
 EXEEXT=$ac_cv_exeext
 ac_exeext=$EXEEXT
-{ 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
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <stdio.h>
 int
 main ()
 {
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.o conftest.obj
-if { (ac_try="$ac_compile"
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
-    *) 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.  */
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
 int
 main ()
 {
-#ifndef __GNUC__
-       choke me
-#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
+rm -f conftest.o conftest.obj
+if { ac_try="$ac_compile"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
   ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
 else
-  echo "$as_me: failed program was:" >&5
+  $as_echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_compiler_gnu=no
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
 fi
-{ 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`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
 ac_test_CFLAGS=${CFLAGS+set}
 ac_save_CFLAGS=$CFLAGS
-{ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_save_c_werror_flag=$ac_c_werror_flag
    ac_c_werror_flag=yes
    ac_cv_prog_cc_g=no
    CFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3289,34 +4019,11 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       CFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3327,35 +4034,12 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_c_try_compile "$LINENO"; then :
 
-       ac_c_werror_flag=$ac_save_c_werror_flag
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
         CFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3366,42 +4050,18 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
    ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
 if test "$ac_test_CFLAGS" = set; then
   CFLAGS=$ac_save_CFLAGS
 elif test $ac_cv_prog_cc_g = yes; then
@@ -3417,23 +4077,18 @@ else
     CFLAGS=
   fi
 fi
-{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
-echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_cv_prog_cc_c89=no
 ac_save_CC=$CC
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdarg.h>
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
 /* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
 struct buf { int x; };
 FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3485,31 +4140,9 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
        -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
 do
   CC="$ac_save_CC $ac_arg"
-  rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
+  if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_prog_cc_c89=$ac_arg
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
-
 rm -f core conftest.err conftest.$ac_objext
   test "x$ac_cv_prog_cc_c89" != "xno" && break
 done
@@ -3520,17 +4153,19 @@ fi
 # AC_CACHE_VAL
 case "x$ac_cv_prog_cc_c89" in
   x)
-    { echo "$as_me:$LINENO: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
   xno)
-    { echo "$as_me:$LINENO: result: unsupported" >&5
-echo "${ECHO_T}unsupported" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
   *)
     CC="$CC $ac_cv_prog_cc_c89"
-    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
-echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
 esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
+fi
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -3545,54 +4180,53 @@ ac_config_commands="$ac_config_commands depfiles"
 am_make=${MAKE-make}
 cat > confinc << 'END'
 am__doit:
-       @echo done
+       @echo this is the am__doit target
 .PHONY: am__doit
 END
 # If we don't find an include directive, just comment out the code.
-{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
-echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# We grep out `Entering directory' and `Leaving directory'
-# messages which can occur if `w' ends up in MAKEFLAGS.
-# In particular we don't look at `^make:' because GNU make might
-# be invoked under some other name (usually "gmake"), in which
-# case it prints its new name instead of `make'.
-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
-   am__include=include
-   am__quote=
-   _am_result=GNU
-fi
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+  am__include=include
+  am__quote=
+  _am_result=GNU
+  ;;
+esac
 # 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
+   case `$am_make -s -f confmf 2> /dev/null` in #(
+   *the\ am__doit\ target*)
+     am__include=.include
+     am__quote="\""
+     _am_result=BSD
+     ;;
+   esac
 fi
 
 
-{ echo "$as_me:$LINENO: result: $_am_result" >&5
-echo "${ECHO_T}$_am_result" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
 rm -f confinc confmf
 
 # Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then
+if test "${enable_dependency_tracking+set}" = set; then :
   enableval=$enable_dependency_tracking;
 fi
 
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
+  am__nodep='_no'
 fi
-
-
-if test "x$enable_dependency_tracking" != xno; then
+ if test "x$enable_dependency_tracking" != xno; then
   AMDEP_TRUE=
   AMDEP_FALSE='#'
 else
@@ -3602,20 +4236,20 @@ fi
 
 
 
-
 depcc="$CC"   am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
   # using a relative directory.
@@ -3633,6 +4267,11 @@ else
   if test "$am_compiler_list" = ""; then
      am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
+
   for depmode in $am_compiler_list; do
     # Setup a source with many dependencies, because some compilers
     # like to wrap large dependency lists on column 80 (with \), and
@@ -3644,34 +4283,49 @@ else
     : > 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
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
     case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
        break
       fi
       ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
     none) break ;;
     esac
-    # 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} \
+       source=sub/conftest.c object=$am__obj \
        depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
          >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
        grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
        ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
       # icc doesn't choke on unknown options, it will just issue warnings
       # or remarks (even with -Werror).  So we grep stderr for any message
@@ -3695,13 +4349,11 @@ else
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
 CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
 
-
-
-if
+ if
   test "x$enable_dependency_tracking" != xno \
   && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
   am__fastdepCC_TRUE=
@@ -3713,22 +4365,18 @@ fi
 
 
 if test "x$CC" != xcc; then
-  { echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
-echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
+$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
 else
-  { echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
-echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
+$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
 fi
-set dummy $CC; ac_cc=`echo $2 |
+set dummy $CC; ac_cc=`$as_echo "$2" |
                      sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -3744,58 +4392,63 @@ _ACEOF
 # existing .o file with -o, though they will create one.
 ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
 rm -f conftest2.*
-if { (case "(($ac_try" in
+if { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-   test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+   test -f conftest2.$ac_objext && { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
 then
   eval ac_cv_prog_cc_${ac_cc}_c_o=yes
   if test "x$CC" != xcc; then
     # Test first that cc exists at all.
     if { ac_try='cc -c conftest.$ac_ext >&5'
-  { (case "(($ac_try" in
+  { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
       ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
       rm -f conftest2.*
-      if { (case "(($ac_try" in
+      if { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        test -f conftest2.$ac_objext && { (case "(($ac_try" in
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } &&
+        test -f conftest2.$ac_objext && { case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
   *) ac_try_echo=$ac_try;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); };
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; };
       then
        # cc works too.
        :
@@ -3812,23 +4465,22 @@ rm -f core conftest*
 
 fi
 if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-cat >>confdefs.h <<\_ACEOF
-#define NO_MINUS_C_MINUS_O 1
-_ACEOF
+$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
 
 fi
 
 # FIXME: we rely on the cache variable name because
 # there is no other way.
 set dummy $CC
-ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
+am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
+if test "$am_t" != yes; then
    # Losing compiler, so override with the script.
    # FIXME: It is wrong to rewrite CC.
    # But if we don't then we get into trouble of one sort or another.
@@ -3839,16 +4491,17 @@ fi
 
 
 
+
   ansi=
   if test -z "$ansi"; then
     msg="for C compiler warning flags"
   else
     msg="for C compiler warning and ANSI conformance flags"
   fi
-  { echo "$as_me:$LINENO: checking $msg" >&5
-echo $ECHO_N "checking $msg... $ECHO_C" >&6; }
-if test "${vl_cv_prog_cc_warnings+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking $msg" >&5
+$as_echo_n "checking $msg... " >&6; }
+if ${vl_cv_prog_cc_warnings+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
 
     if test -n "$CC"; then
@@ -3937,228 +4590,171 @@ EOF
     fi
 
 fi
-{ echo "$as_me:$LINENO: result: $vl_cv_prog_cc_warnings" >&5
-echo "${ECHO_T}$vl_cv_prog_cc_warnings" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vl_cv_prog_cc_warnings" >&5
+$as_echo "$vl_cv_prog_cc_warnings" >&6; }
 
 
-# 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
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  as_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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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
-IFS=$as_save_IFS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
 
 
+
+# Check if LD supports linker scripts, and define automake conditional
+# HAVE_LD_VERSION_SCRIPT if so.  This functionality is currently
+# constrained to compilers using GNU ld on ELF systems or systems
+# which provide an adequate emulation thereof.
+# Check whether --enable-ld-version-script was given.
+if test "${enable_ld_version_script+set}" = set; then :
+  enableval=$enable_ld_version_script; have_ld_version_script=$enableval
+else
+  have_ld_version_script=no
 fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  Don't cache a
-    # value for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the value is a relative name.
-    INSTALL=$ac_install_sh
-  fi
-fi
-{ 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}'
+if test "$have_ld_version_script" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if LD -Wl,--version-script works" >&5
+$as_echo_n "checking if LD -Wl,--version-script works... " >&6; }
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+  cat > conftest.map <<EOF
+VERS_1 {
+        global: sym;
+};
 
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+VERS_2 {
+        global: sym;
+} VERS_1;
+EOF
 
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-{ 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; }
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  have_ld_version_script=yes
+else
+  have_ld_version_script=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  rm -f conftest.map
+  LDFLAGS="$save_LDFLAGS"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_ld_version_script" >&5
+$as_echo "$have_ld_version_script" >&6; }
+fi
+ if test "$have_ld_version_script" = "yes"; then
+  HAVE_LD_VERSION_SCRIPT_TRUE=
+  HAVE_LD_VERSION_SCRIPT_FALSE='#'
 else
-  { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
-echo "${ECHO_T}no, using $LN_S" >&6; }
+  HAVE_LD_VERSION_SCRIPT_TRUE='#'
+  HAVE_LD_VERSION_SCRIPT_FALSE=
 fi
 
 
 
-macro_version='2.1a'
-macro_revision='1.2248'
 
 
 
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
 
 
 
+macro_version='2.4.2'
+macro_revision='1.3337'
 
 
 
 
 
 
-ltmain="$ac_aux_dir/ltmain.sh"
 
-# Set options
 
-enable_dlopen=no
 
 
-enable_win32_dll=no
 
 
-# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_shared=yes
-fi
 
+ltmain="$ac_aux_dir/ltmain.sh"
 
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
 
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
 
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
 
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
 
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
 
-# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_static=yes
-fi
-
-
-
-
-
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then
-  withval=$with_pic; pic_mode="$withval"
-else
-  pic_mode=default
-fi
-
-
-test -z "$pic_mode" && pic_mode=default
-
-
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
 
 
 
 
 
-# Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
-else
-  enable_fast_install=yes
-fi
 
 
 
@@ -4168,51 +4764,46 @@ fi
 
 
 
-{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
-echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
-if test "${ac_cv_path_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
             ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
      for ac_i in 1 2 3 4 5 6 7; do
        ac_script="$ac_script$as_nl$ac_script"
      done
-     echo "$ac_script" | sed 99q >conftest.sed
-     $as_unset ac_script || ac_script=
-     # Extract the first word of "sed gsed" to use in msg output
-if test -z "$SED"; then
-set dummy sed gsed; ac_prog_name=$2
-if test "${ac_cv_path_SED+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
   ac_path_SED_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in sed gsed; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue
-    # Check for GNU ac_path_SED and select it if it is found.
+    for ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
   # Check for GNU $ac_path_SED
 case `"$ac_path_SED" --version 2>&1` in
 *GNU*)
   ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo '' >> "conftest.nl"
+    $as_echo '' >> "conftest.nl"
     "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_SED_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_SED="$ac_path_SED"
@@ -4224,35 +4815,26 @@ case `"$ac_path_SED" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_SED_found && break 3
+      $ac_path_SED_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-SED="$ac_cv_path_SED"
-if test -z "$SED"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
 else
   ac_cv_path_SED=$SED
 fi
 
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5
-echo "${ECHO_T}$ac_cv_path_SED" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
  SED="$ac_cv_path_SED"
   rm -f conftest.sed
 
 test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
 
 
 
@@ -4264,45 +4846,40 @@ test -z "$SED" && SED=sed
 
 
 
-{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
-echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # Extract the first word of "grep ggrep" to use in msg output
-if test -z "$GREP"; then
-set dummy grep ggrep; ac_prog_name=$2
-if test "${ac_cv_path_GREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
+  if test -z "$GREP"; then
   ac_path_GREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in grep ggrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
-    # Check for GNU ac_path_GREP and select it if it is found.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
   # Check for GNU $ac_path_GREP
 case `"$ac_path_GREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'GREP' >> "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
     "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_GREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_GREP="$ac_path_GREP"
@@ -4314,77 +4891,61 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_GREP_found && break 3
+      $ac_path_GREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-GREP="$ac_cv_path_GREP"
-if test -z "$GREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
   ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
-echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
  GREP="$ac_cv_path_GREP"
 
 
-{ echo "$as_me:$LINENO: checking for egrep" >&5
-echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
    then ac_cv_path_EGREP="$GREP -E"
    else
-     # Extract the first word of "egrep" to use in msg output
-if test -z "$EGREP"; then
-set dummy egrep; ac_prog_name=$2
-if test "${ac_cv_path_EGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     if test -z "$EGREP"; then
   ac_path_EGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in egrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
-    # Check for GNU ac_path_EGREP and select it if it is found.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
   # Check for GNU $ac_path_EGREP
 case `"$ac_path_EGREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'EGREP' >> "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
     "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_EGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_EGREP="$ac_path_EGREP"
@@ -4396,78 +4957,62 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-EGREP="$ac_cv_path_EGREP"
-if test -z "$EGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
   ac_cv_path_EGREP=$EGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
-echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
-{ echo "$as_me:$LINENO: checking for fgrep" >&5
-echo $ECHO_N "checking for fgrep... $ECHO_C" >&6; }
-if test "${ac_cv_path_FGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
    then ac_cv_path_FGREP="$GREP -F"
    else
-     # Extract the first word of "fgrep" to use in msg output
-if test -z "$FGREP"; then
-set dummy fgrep; ac_prog_name=$2
-if test "${ac_cv_path_FGREP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+     if test -z "$FGREP"; then
   ac_path_FGREP_found=false
-# Loop through the user's path and test for each of PROGNAME-LIST
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  for ac_prog in fgrep; do
-  for ac_exec_ext in '' $ac_executable_extensions; do
-    ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
-    { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue
-    # Check for GNU ac_path_FGREP and select it if it is found.
+    for ac_prog in fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
   # Check for GNU $ac_path_FGREP
 case `"$ac_path_FGREP" --version 2>&1` in
 *GNU*)
   ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
 *)
   ac_count=0
-  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  $as_echo_n 0123456789 >"conftest.in"
   while :
   do
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    echo 'FGREP' >> "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
     "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    ac_count=`expr $ac_count + 1`
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
     if test $ac_count -gt ${ac_path_FGREP_max-0}; then
       # Best one so far, save it but keep looking for a better one
       ac_cv_path_FGREP="$ac_path_FGREP"
@@ -4479,33 +5024,22 @@ case `"$ac_path_FGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-
-    $ac_path_FGREP_found && break 3
+      $ac_path_FGREP_found && break 3
+    done
+  done
   done
-done
-
-done
 IFS=$as_save_IFS
-
-
-fi
-
-FGREP="$ac_cv_path_FGREP"
-if test -z "$FGREP"; then
-  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
-echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
   ac_cv_path_FGREP=$FGREP
 fi
 
-
    fi
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5
-echo "${ECHO_T}$ac_cv_path_FGREP" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
  FGREP="$ac_cv_path_FGREP"
 
 
@@ -4530,7 +5064,7 @@ test -z "$GREP" && GREP=grep
 
 
 # Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
+if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
   with_gnu_ld=no
@@ -4539,8 +5073,8 @@ fi
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -4569,14 +5103,14 @@ echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
     ;;
   esac
 elif test "$with_gnu_ld" = yes; then
-  { echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
 fi
-if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
@@ -4606,19 +5140,17 @@ fi
 
 LD="$lt_cv_path_LD"
 if test -n "$LD"; then
-  { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
@@ -4630,8 +5162,8 @@ case `$LD -v 2>&1 </dev/null` in
   ;;
 esac
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
 with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
@@ -4642,11 +5174,10 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-
-{ echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5
-echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6; }
-if test "${lt_cv_path_NM+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
   # Let the user override the test.
@@ -4692,21 +5223,24 @@ else
   : ${lt_cv_path_NM=no}
 fi
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
-echo "${ECHO_T}$lt_cv_path_NM" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
 if test "$lt_cv_path_NM" != "no"; then
   NM="$lt_cv_path_NM"
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
   do
     # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
 set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_DUMPBIN+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$DUMPBIN"; then
   ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
@@ -4716,25 +5250,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 DUMPBIN=$ac_cv_prog_DUMPBIN
 if test -n "$DUMPBIN"; then
-  { echo "$as_me:$LINENO: result: $DUMPBIN" >&5
-echo "${ECHO_T}$DUMPBIN" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4743,14 +5277,14 @@ fi
 fi
 if test -z "$DUMPBIN"; then
   ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in "dumpbin -symbols" "link -dump -symbols"
+  for ac_prog in dumpbin "link -dump"
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
-{ 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_DUMPBIN+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_DUMPBIN"; then
   ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
@@ -4760,25 +5294,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
 if test -n "$ac_ct_DUMPBIN"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5
-echo "${ECHO_T}$ac_ct_DUMPBIN" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -4790,18 +5324,23 @@ done
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     DUMPBIN=$ac_ct_DUMPBIN
   fi
 fi
 
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
 
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
@@ -4814,34 +5353,34 @@ test -z "$NM" && NM=nm
 
 
 
-{ echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5
-echo $ECHO_N "checking the name lister ($NM) interface... $ECHO_C" >&6; }
-if test "${lt_cv_nm_interface+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:4824: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4827: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:4830: output\"" >&5)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
   fi
   rm -f conftest*
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5
-echo "${ECHO_T}$lt_cv_nm_interface" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
 
 # find the maximum length of command line arguments
-{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
-echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
-if test "${lt_cv_sys_max_cmd_len+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
     i=0
   teststring="ABCD"
@@ -4862,7 +5401,7 @@ else
     lt_cv_sys_max_cmd_len=-1;
     ;;
 
-  cygwin* | mingw*)
+  cygwin* | mingw* | cegcc*)
     # On Win9x/ME, this test blows up -- it succeeds, but takes
     # about 5 minutes as the teststring grows exponentially.
     # Worse, since 9x/ME are not pre-emptively multitasking,
@@ -4873,6 +5412,11 @@ else
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
@@ -4898,6 +5442,11 @@ else
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -4917,46 +5466,52 @@ else
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[        ]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
     ;;
   *)
-    # Make teststring a little bigger before we do anything with it.
-    # a 1K string should be a reasonable start.
-    for i in 1 2 3 4 5 6 7 8 ; do
-      teststring=$teststring$teststring
-    done
-    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-    # If test is not a shell built-in, we'll probably end up computing a
-    # maximum length that is only half of the actual maximum length, but
-    # we can't tell.
-    while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-              = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-           test $i != 17 # 1/2 MB should be enough
-    do
-      i=`expr $i + 1`
-      teststring=$teststring$teststring
-    done
-    # Only check the string length outside the loop.
-    lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-    teststring=
-    # Add a significant safety factor because C++ compilers can tack on massive
-    # amounts of additional arguments before passing them to the linker.
-    # It appears as though 1/2 is a usable value.
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
     ;;
   esac
 
 fi
 
 if test -n $lt_cv_sys_max_cmd_len ; then
-  { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
-echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
 else
-  { echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
 fi
 max_cmd_len=$lt_cv_sys_max_cmd_len
 
@@ -4965,32 +5520,148 @@ max_cmd_len=$lt_cv_sys_max_cmd_len
 
 
 
-
 : ${CP="cp -f"}
 : ${MV="mv -f"}
 : ${RM="rm -f"}
 
-{ echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5
-echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECHO_C" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
 # Try some XSI features
 xsi_shell=no
 ( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, ) >/dev/null 2>&1 \
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
-{ echo "$as_me:$LINENO: result: $xsi_shell" >&5
-echo "${ECHO_T}$xsi_shell" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
+
+
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+
+
+
+
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
+fi
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
+
+fi
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
 
-{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
-echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
-if test "${lt_cv_ld_reload_flag+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   lt_cv_ld_reload_flag='-r'
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
-echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
 reload_flag=$lt_cv_ld_reload_flag
 case $reload_flag in
 "" | " "*) ;;
@@ -4998,6 +5669,11 @@ case $reload_flag in
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
   darwin*)
     if test "$GCC" = yes; then
       reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
@@ -5015,34 +5691,132 @@ esac
 
 
 
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
-if test "${lt_cv_deplibs_check_method+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
 else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-case $host_os in
-aix4* | aix5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
 bsdi[45]*)
   lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
@@ -5056,10 +5830,24 @@ cygwin*)
   lt_cv_file_magic_cmd='func_win32_libid'
   ;;
 
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
 mingw* | pw32*)
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
   lt_cv_file_magic_cmd='$OBJDUMP -f'
   ;;
 
@@ -5067,7 +5855,7 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | kfreebsd*-gnu | dragonfly*)
+freebsd* | dragonfly*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
@@ -5087,6 +5875,10 @@ gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 hpux10.20* | hpux11*)
   lt_cv_file_magic_cmd=/usr/bin/file
   case $host_cpu in
@@ -5095,17 +5887,17 @@ hpux10.20* | hpux11*)
     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_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_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
   ;;
 
-interix3*)
+interix[3-9]*)
   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
   lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
   ;;
@@ -5120,12 +5912,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux*)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | knetbsd*-gnu)
+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
@@ -5200,8 +5992,23 @@ tpf*)
 esac
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
-echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -5217,13 +6024,163 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 
+
+
+
+
+
+
+
+
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+
+
+
+
+
+
 if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$AR"; then
   ac_cv_prog_AR="$AR" # Let the user override the test.
@@ -5233,37 +6190,41 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AR="${ac_tool_prefix}ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 AR=$ac_cv_prog_AR
 if test -n "$AR"; then
-  { echo "$as_me:$LINENO: result: $AR" >&5
-echo "${ECHO_T}$AR" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+    test -n "$AR" && break
+  done
 fi
-if test -z "$ac_cv_prog_AR"; then
+if test -z "$AR"; then
   ac_ct_AR=$AR
-  # Extract the first word of "ar", so it can be a program name with args.
-set dummy ar; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_AR"; then
   ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
@@ -5273,52 +6234,108 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AR="ar"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AR="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_AR=$ac_cv_prog_ac_ct_AR
 if test -n "$ac_ct_AR"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
-echo "${ECHO_T}$ac_ct_AR" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+
+  test -n "$ac_ct_AR" && break
+done
+
   if test "x$ac_ct_AR" = x; then
     AR="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     AR=$ac_ct_AR
   fi
-else
-  AR="$ac_cv_prog_AR"
 fi
 
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
 
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
 
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
 
 
 
@@ -5329,10 +6346,10 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
 set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$STRIP"; then
   ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
@@ -5342,25 +6359,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_STRIP="${ac_tool_prefix}strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 STRIP=$ac_cv_prog_STRIP
 if test -n "$STRIP"; then
-  { echo "$as_me:$LINENO: result: $STRIP" >&5
-echo "${ECHO_T}$STRIP" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5369,10 +6386,10 @@ if test -z "$ac_cv_prog_STRIP"; then
   ac_ct_STRIP=$STRIP
   # Extract the first word of "strip", so it can be a program name with args.
 set dummy strip; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_STRIP"; then
   ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
@@ -5382,25 +6399,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_STRIP="strip"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
 if test -n "$ac_ct_STRIP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
-echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_STRIP" = x; then
@@ -5408,12 +6425,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     STRIP=$ac_ct_STRIP
@@ -5432,10 +6445,10 @@ test -z "$STRIP" && STRIP=:
 if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
 set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -5445,25 +6458,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 RANLIB=$ac_cv_prog_RANLIB
 if test -n "$RANLIB"; then
-  { echo "$as_me:$LINENO: result: $RANLIB" >&5
-echo "${ECHO_T}$RANLIB" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
@@ -5472,10 +6485,10 @@ if test -z "$ac_cv_prog_RANLIB"; then
   ac_ct_RANLIB=$RANLIB
   # Extract the first word of "ranlib", so it can be a program name with args.
 set dummy ranlib; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   if test -n "$ac_ct_RANLIB"; then
   ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
@@ -5485,25 +6498,25 @@ 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
     ac_cv_prog_ac_ct_RANLIB="ranlib"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
 done
-done
+  done
 IFS=$as_save_IFS
 
 fi
 fi
 ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
 if test -n "$ac_ct_RANLIB"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
-echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
   if test "x$ac_ct_RANLIB" = x; then
@@ -5511,12 +6524,8 @@ fi
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
     RANLIB=$ac_ct_RANLIB
@@ -5533,22 +6542,28 @@ test -z "$RANLIB" && RANLIB=:
 
 
 # Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
 old_postinstall_cmds='chmod 644 $oldlib'
 old_postuninstall_cmds=
 
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
 
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 
 
 
@@ -5582,8 +6597,14 @@ fi
 
 
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
 # If no C compiler flags were specified, use CFLAGS.
 LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
@@ -5593,10 +6614,10 @@ compiler=$CC
 
 
 # Check for command to grab the raw symbol name followed by C symbol from nm.
-{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
-echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
-if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
 
 # These are sane defaults that work on at least a few old systems.
@@ -5613,7 +6634,7 @@ case $host_os in
 aix*)
   symcode='[BCDT]'
   ;;
-cygwin* | mingw* | pw32*)
+cygwin* | mingw* | pw32* | cegcc*)
   symcode='[ABCDGISTW]'
   ;;
 hpux*)
@@ -5656,7 +6677,8 @@ esac
 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -5680,6 +6702,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK '"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -5690,8 +6713,9 @@ for ac_symprfx in "" "_"; do
 "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx"
   else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[    ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[     ]\($symcode$symcode*\)[         ][      ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -5702,25 +6726,26 @@ for ac_symprfx in "" "_"; do
 extern "C" {
 #endif
 char nm_test_var;
-void nm_test_func(){}
+void nm_test_func(void);
+void nm_test_func(void){}
 #ifdef __cplusplus
 }
 #endif
 int main(){nm_test_var='a';nm_test_func();return(0);}
 _LT_EOF
 
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
-  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s "$nlist"; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -5732,6 +6757,18 @@ _LT_EOF
       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
        if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
          cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT_DLSYM_CONST
+#else
+# define LT_DLSYM_CONST const
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -5743,7 +6780,7 @@ _LT_EOF
          cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-const struct {
+LT_DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -5769,19 +6806,19 @@ static const void *lt_preloaded_setup() {
 _LT_EOF
          # Now try linking the two files.
          mv conftest.$ac_objext conftstm.$ac_objext
-         lt_save_LIBS="$LIBS"
-         lt_save_CFLAGS="$CFLAGS"
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
-         if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
   (eval $ac_link) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
            pipe_works=yes
          fi
-         LIBS="$lt_save_LIBS"
-         CFLAGS="$lt_save_CFLAGS"
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
        else
          echo "cannot find nm_test_func in $nlist" >&5
        fi
@@ -5795,7 +6832,7 @@ _LT_EOF
     echo "$progname: failed program was:" >&5
     cat conftest.$ac_ext >&5
   fi
-  rm -f conftest* conftst*
+  rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
   if test "$pipe_works" = yes; then
@@ -5811,11 +6848,18 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then
   lt_cv_sys_global_symbol_to_cdecl=
 fi
 if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
-  { echo "$as_me:$LINENO: result: failed" >&5
-echo "${ECHO_T}failed" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  { echo "$as_me:$LINENO: result: ok" >&5
-echo "${ECHO_T}ok" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
+fi
+
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then
+  nm_file_list_spec='@'
 fi
 
 
@@ -5835,8 +6879,54 @@ fi
 
 
 
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+$as_echo_n "checking for sysroot... " >&6; }
+
+# Check whether --with-sysroot was given.
+if test "${with_sysroot+set}" = set; then :
+  withval=$with_sysroot;
+else
+  with_sysroot=no
+fi
+
+
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5
+$as_echo "${with_sysroot}" >&6; }
+   as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
+   ;;
+esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+$as_echo "${lt_sysroot:-no}" >&6; }
+
+
+
+
+
 # Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then
+if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
 fi
 
@@ -5848,11 +6938,11 @@ case $host in
 ia64-*-hpux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.$ac_objext` in
       *ELF-32*)
        HPUX_IA64_MODE="32"
@@ -5866,12 +6956,12 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 5869 "configure"' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     if test "$lt_cv_prog_gnu_ld" = yes; then
       case `/usr/bin/file conftest.$ac_objext` in
        *32-bit*)
@@ -5901,17 +6991,21 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
        case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_i386"
            ;;
@@ -5928,6 +7022,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*l
        ;;
       *64-bit*)
        case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
@@ -5951,10 +7048,10 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*l
   # On SCO OpenServer 5, we need -belf to get full-featured binaries.
   SAVE_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -belf"
-  { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
-echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
-if test "${lt_cv_cc_needs_belf+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -5962,11 +7059,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-     cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -5977,34 +7070,13 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   lt_cv_cc_needs_belf=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       lt_cv_cc_needs_belf=no
+  lt_cv_cc_needs_belf=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
      ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -6012,26 +7084,43 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
-echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
   if test x"$lt_cv_cc_needs_belf" != x"yes"; then
     # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
-  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
     case `/usr/bin/file conftest.o` in
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)    LD="${LD-ld} -64" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
       esac
       ;;
     esac
@@ -6042,551 +7131,585 @@ esac
 
 need_locks="$enable_libtool_lock"
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
-  CPP=
-fi
-if test -z "$CPP"; then
-  if test "${ac_cv_prog_CPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-      # 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
+  if test -n "$MANIFEST_TOOL"; then
+  ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  # Broken: fails on valid input.
-continue
 fi
-
-rm -f conftest.err conftest.$ac_ext
-
-  # OK, works on sane cases.  Now check whether nonexistent 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 <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  # Broken: success on invalid input.
-continue
+fi
+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
+if test -n "$MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+$as_echo "$MANIFEST_TOOL" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-  # Passes both tests.
-ac_preproc_ok=:
-break
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 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
+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
+  ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
+  # Extract the first word of "mt", so it can be a program name with args.
+set dummy mt; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MANIFEST_TOOL"; then
+  ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
-  CPP=$ac_cv_prog_CPP
+fi
+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
+if test -n "$ac_ct_MANIFEST_TOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
 else
-  ac_cv_prog_CPP=$CPP
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+
+  if test "x$ac_ct_MANIFEST_TOOL" = x; then
+    MANIFEST_TOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
+    MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
+  fi
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL"
+fi
 
-  # Broken: fails on valid input.
-continue
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if ${lt_cv_path_mainfest_tool+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&5
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
 fi
 
-rm -f conftest.err conftest.$ac_ext
 
-  # OK, works on sane cases.  Now check whether nonexistent 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 <ac_nonexistent.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.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
 
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
-  :
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
 else
-  { { 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; }; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&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 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
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_stdc=yes
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-       ac_cv_header_stdc=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then
-  :
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&6; }
 else
-  ac_cv_header_stdc=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f conftest*
 
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
 fi
 
-if test $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 <stdlib.h>
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then
-  :
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
 else
-  ac_cv_header_stdc=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rm -f conftest*
+
 
 fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-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
-  :
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&6; }
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  :
+    NMEDIT=$ac_ct_NMEDIT
+  fi
 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 core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+  NMEDIT="$ac_cv_prog_NMEDIT"
 fi
 
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
 fi
 fi
-{ 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
-
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-# 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 { as_var=$as_ac_Header; eval "test \"\${$as_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.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
+fi
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_LIPO="lipo"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-       eval "$as_ac_Header=no"
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    LIPO=$ac_ct_LIPO
+  fi
+else
+  LIPO="$ac_cv_prog_LIPO"
 fi
 
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
 done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
-for ac_header in dlfcn.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 { as_var=$as_ac_Header; eval "test \"\${$as_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.  */
-$ac_includes_default
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
+fi
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL="otool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-       eval "$as_ac_Header=no"
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-done
-
-
-
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL=$ac_ct_OTOOL
+  fi
+else
+  OTOOL="$ac_cv_prog_OTOOL"
+fi
 
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OTOOL64=$ac_ct_OTOOL64
+  fi
+else
+  OTOOL64="$ac_cv_prog_OTOOL64"
+fi
 
 
 
@@ -6606,7 +7729,6 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
-test -z "$LN_S" && LN_S="ln -s"
 
 
 
@@ -6615,727 +7737,874 @@ test -z "$LN_S" && LN_S="ln -s"
 
 
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&5
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&5
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_ld_exported_symbols_list=yes
+else
+  lt_cv_ld_exported_symbols_list=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      echo "$RANLIB libconftest.a" >&5
+      $RANLIB libconftest.a 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&5
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
 
-if test -n "${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[012]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
 
-{ echo "$as_me:$LINENO: checking for objdir" >&5
-echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
-if test "${lt_cv_objdir+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  rm -f .libs 2>/dev/null
-mkdir .libs 2>/dev/null
-if test -d .libs; then
-  lt_cv_objdir=.libs
+      # 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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
 else
-  # MS-DOS does not allow filenames that begin with a dot.
-  lt_cv_objdir=_libs
+  # Broken: fails on valid input.
+continue
 fi
-rmdir .libs 2>/dev/null
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
-echo "${ECHO_T}$lt_cv_objdir" >&6; }
-objdir=$lt_cv_objdir
+rm -f conftest.err conftest.i conftest.$ac_ext
 
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
 
+    done
+    ac_cv_prog_CPP=$CPP
 
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
 
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
 _ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
 
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
 
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
+fi
 
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
 
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
 
+fi
 
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
 
-case $host_os in
-aix3*)
-  # AIX sometimes has problems with the GCC collect2 program.  For some
-  # reason, if we set the COLLECT_NAMES environment variable, the problems
-  # vanish in a puff of smoke.
-  if test "X${COLLECT_NAMES+set}" != Xset; then
-    COLLECT_NAMES=
-    export COLLECT_NAMES
-  fi
-  ;;
-esac
-
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
 
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-# Global variables:
-ofile=libtool
-can_build_shared=yes
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
 
-# All known linkers require a `.a' archive for static linking (except MSVC,
-# which needs '.lib').
-libext=a
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
 
-with_gnu_ld="$lt_cv_prog_gnu_ld"
+fi
 
-old_CC="$CC"
-old_CFLAGS="$CFLAGS"
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
-# Set sane defaults for various variables
-test -z "$CC" && CC=cc
-test -z "$LTCC" && LTCC=$CC
-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
-test -z "$LD" && LD=ld
-test -z "$ac_objext" && ac_objext=o
+fi
 
-for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
 done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
 
-# Only perform the check for file, if the check method requires it
-test -z "$MAGIC_CMD" && MAGIC_CMD=file
-case $deplibs_check_method in
-file_magic*)
-  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
-    { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
-echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/${ac_tool_prefix}file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
 
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_DLFCN_H 1
+_ACEOF
 
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
-  done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
 fi
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
+done
 
 
 
 
 
-if test -z "$lt_cv_path_MAGIC_CMD"; then
+# Set options
+enable_win32_dll=yes
+
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
   if test -n "$ac_tool_prefix"; then
-    { echo "$as_me:$LINENO: checking for file" >&5
-echo $ECHO_N "checking for file... $ECHO_C" >&6; }
-if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  case $MAGIC_CMD in
-[\\/*] |  ?:[\\/]*)
-  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
-  ;;
-*)
-  lt_save_MAGIC_CMD="$MAGIC_CMD"
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
-  for ac_dir in $ac_dummy; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/file; then
-      lt_cv_path_MAGIC_CMD="$ac_dir/file"
-      if test -n "$file_magic_test_file"; then
-       case $deplibs_check_method in
-       "file_magic "*)
-         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
-         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
-           $EGREP "$file_magic_regex" > /dev/null; then
-           :
-         else
-           cat <<_LT_EOF 1>&2
-
-*** Warning: the command libtool uses to detect shared libraries,
-*** $file_magic_cmd, produces output that libtool cannot recognize.
-*** The result is that libtool may fail to recognize shared libraries
-*** as such.  This will affect the creation of libtool libraries that
-*** depend on shared libraries, but programs linked with such libtool
-*** libraries will work regardless of this problem.  Nevertheless, you
-*** may want to report the problem to your system manager and/or to
-*** bug-libtool@gnu.org
-
-_LT_EOF
-         fi ;;
-       esac
-      fi
-      break
-    fi
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AS="${ac_tool_prefix}as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
-  IFS="$lt_save_ifs"
-  MAGIC_CMD="$lt_save_MAGIC_CMD"
-  ;;
-esac
-fi
+IFS=$as_save_IFS
 
-MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
-if test -n "$MAGIC_CMD"; then
-  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
-echo "${ECHO_T}$MAGIC_CMD" >&6; }
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-  else
-    MAGIC_CMD=:
-  fi
 fi
-
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_AS="as"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  ;;
-esac
+done
+  done
+IFS=$as_save_IFS
 
-# Use C for the default configuration in the libtool script
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-lt_save_CC="$CC"
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
 
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-# Source file extension for C test sources.
-ac_ext=c
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-# Object file extension for compiled C test sources.
-objext=o
-objext=$objext
 
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
 
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
 
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+  ;;
+esac
 
-# Allow CC to be a program name with arguments.
-compiler=$CC
+test -z "$AS" && AS=as
 
-# Save the default compiler, since it gets overwritten when the other
-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
-compiler_DEFAULT=$CC
 
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
 
-ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM conftest*
 
 
-## CAVEAT EMPTOR:
-## There is no encapsulation within the following macros, do not change
-## the running order or otherwise move them around unless you know exactly
-## what you are doing...
-if test -n "$compiler"; then
+test -z "$DLLTOOL" && DLLTOOL=dlltool
 
-lt_prog_compiler_no_builtin_flag=
 
-if test "$GCC" = yes; then
-  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
-if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_rtti_exceptions=no
-   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="-fno-rtti -fno-exceptions"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6958: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:6962: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_rtti_exceptions=yes
-     fi
-   fi
-   $RM conftest*
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
-if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
-    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
-else
-    :
-fi
+test -z "$OBJDUMP" && OBJDUMP=objdump
 
-fi
 
 
 
 
 
 
-  lt_prog_compiler_wl=
-lt_prog_compiler_pic=
-lt_prog_compiler_static=
+        enable_dlopen=no
 
-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
 
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl='-Wl,'
-    lt_prog_compiler_static='-static'
 
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      fi
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
       ;;
+    esac
+else
+  enable_shared=yes
+fi
 
-    amigaos*)
-      if test "$host_cpu" = m68k; then
-        # FIXME: we need at least 68020 code to build shared libraries, but
-        # adding the `-m68020' flag to GCC prevents building anything better,
-        # like `-m68040'.
-        lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
-      fi
-      ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
 
-    mingw* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
 
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic='-fno-common'
-      ;;
 
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='-fPIC'
-       ;;
-      esac
-      ;;
 
-    interix3*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
 
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared=no
-      enable_shared=no
-      ;;
-
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic=-Kconform_pic
-      fi
-      ;;
 
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
     *)
-      lt_prog_compiler_pic='-fPIC'
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
       ;;
     esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl='-Wl,'
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static='-Bstatic'
-      else
-       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
-      fi
-      ;;
-    darwin*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      case $cc_basename in
-      xlc*)
-        lt_prog_compiler_pic='-qnocommon'
-        lt_prog_compiler_wl='-Wl,'
-        ;;
-      esac
-      ;;
+else
+  enable_static=yes
+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_prog_compiler_pic='-DDLL_EXPORT'
-      ;;
 
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       # +Z the default
-       ;;
-      *)
-       lt_prog_compiler_pic='+Z'
-       ;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static='${wl}-a ${wl}archive'
-      ;;
 
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static='-non_shared'
-      ;;
 
-    linux*)
-      case $cc_basename in
-      icc* | ecc*)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-KPIC'
-       lt_prog_compiler_static='-static'
-        ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-       # which looks to be a dead project)
-       lt_prog_compiler_wl='-Wl,'
-       lt_prog_compiler_pic='-fpic'
-       lt_prog_compiler_static='-Bstatic'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static='-non_shared'
-        ;;
-      esac
-      ;;
 
-    newsos6)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
 
-    *nto* | *qnx*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic='-fPIC -shared'
-      ;;
 
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static='-non_shared'
-      ;;
 
-    rdos*)
-      lt_prog_compiler_static='-non_shared'
-      ;;
 
-    solaris*)
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-       lt_prog_compiler_wl='-Qoption ld ';;
-      *)
-       lt_prog_compiler_wl='-Wl,';;
-      esac
-      ;;
 
-    sunos4*)
-      lt_prog_compiler_wl='-Qoption ld '
-      lt_prog_compiler_pic='-PIC'
-      lt_prog_compiler_static='-Bstatic'
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
       ;;
+    esac
+else
+  pic_mode=default
+fi
+
+
+test -z "$pic_mode" && pic_mode=default
+
 
-    sysv4 | sysv4.2uw2* | sysv4.3*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
 
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-       lt_prog_compiler_pic='-Kconform_pic'
-       lt_prog_compiler_static='-Bstatic'
-      fi
-      ;;
 
-    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_pic='-KPIC'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
 
-    unicos*)
-      lt_prog_compiler_wl='-Wl,'
-      lt_prog_compiler_can_build_shared=no
-      ;;
 
-    uts4*)
-      lt_prog_compiler_pic='-pic'
-      lt_prog_compiler_static='-Bstatic'
-      ;;
 
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
     *)
-      lt_prog_compiler_can_build_shared=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
-  fi
+else
+  enable_fast_install=yes
+fi
 
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic=
-    ;;
-  *)
-    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
-    ;;
-esac
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
 
 
 
 
 
 
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic"; then
-  { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_prog_compiler_pic_works=no
-   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7262: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:7266: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works=yes
-     fi
-   fi
-   $RM conftest*
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
 
-if test x"$lt_prog_compiler_pic_works" = xyes; then
-    case $lt_prog_compiler_pic in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
-     esac
-else
-    lt_prog_compiler_pic=
-     lt_prog_compiler_can_build_shared=no
-fi
 
-fi
 
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
 
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
 
 
 
 
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works=yes
-       fi
-     else
-       lt_prog_compiler_static_works=yes
-     fi
-   fi
-   $RM conftest*
-   LDFLAGS="$save_LDFLAGS"
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
 
-if test x"$lt_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
 
 
 
 
 
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7367: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:7371: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
 
 
-  { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
-if test "${lt_cv_prog_compiler_c_o+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7422: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:7426: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
-fi
 
 
 
+test -z "$LN_S" && LN_S="ln -s"
 
 
 
-  { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
 
-  runpath_var=
-  allow_undefined_flag=
-  always_export_symbols=no
-  archive_cmds=
-  archive_expsym_cmds=
-  enable_shared_with_static_runtimes=no
-  export_dynamic_flag_spec=
-  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  hardcode_automatic=no
-  hardcode_direct=no
-  hardcode_libdir_flag_spec=
-  hardcode_libdir_flag_spec_ld=
-  hardcode_libdir_separator=
-  hardcode_minus_L=no
-  hardcode_shlibpath_var=unsupported
-  inherit_rpath=no
-  link_all_deplibs=unknown
-  module_cmds=
-  module_expsym_cmds=
-  old_archive_from_new_cmds=
-  old_archive_from_expsyms_cmds=
-  thread_safe_flag_spec=
-  whole_archive_flag_spec=
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-  # 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
-    ;;
-  interix*)
-    # we just hope/assume this is gcc and not c89 (= MSVC++)
-    with_gnu_ld=yes
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
 
-  ld_shlibs=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
 
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-    export_dynamic_flag_spec='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
-      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-    else
-      whole_archive_flag_spec=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>&1` in
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
 
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix3* | aix4* | aix5*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&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.
 
-_LT_EOF
-      fi
-      ;;
 
-    amigaos*)
-      if test "$host_cpu" = m68k; then
-        archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-        hardcode_libdir_flag_spec='-L$libdir'
-        hardcode_minus_L=yes
-      fi
 
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
-      ld_shlibs=no
-      ;;
 
-    beos*)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       allow_undefined_flag=unsupported
-       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-       # support --undefined.  This deserves some investigation.  FIXME
-       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
 
-    cygwin* | mingw* | pw32*)
-      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec='-L$libdir'
-      allow_undefined_flag=unsupported
-      always_export_symbols=no
-      enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
 
-      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-       # If the export-symbols file already is a .def file (1st line
-       # is EXPORTS), use it as is; otherwise, prepend...
-       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-         cp $export_symbols $output_objdir/$soname.def;
-       else
-         echo EXPORTS > $output_objdir/$soname.def;
-         cat $export_symbols >> $output_objdir/$soname.def;
-       fi~
-       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
 
-    interix3*)
-      hardcode_direct=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-      export_dynamic_flag_spec='${wl}-E'
-      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-      # Instead, shared libraries are loaded at an image base (0x10000000 by
-      # default) and relocated if they conflict, which is a slow very memory
-      # consuming and fragmenting process.  To avoid this, we pick a random,
-      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-      ;;
 
-    linux*|tpf*)
-      tmp_diet=no
-      if test "$host_os" = linux-dietlibc; then
-       case $cc_basename in
-         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
-       esac
-      fi
-      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
-        && test "$tmp_diet" = no
-      then
-       tmp_addflag=
-       case $cc_basename,$host_cpu in
-        pgcc*)                         # Portland Group C compiler
-         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag'
-         ;;
-       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
-         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-         tmp_addflag=' $pic_flag -Mnomain' ;;
-       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
-         tmp_addflag=' -i_dynamic' ;;
-       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
-         tmp_addflag=' -i_dynamic -nofor_main' ;;
-       ifc* | ifort*)                  # Intel Fortran compiler
-         tmp_addflag=' -nofor_main' ;;
-       esac
 
-       archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
-        if test "x$supports_anon_versioning" = xyes; then
-          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~echo "local: *; };" >> $output_objdir/$libname.ver~$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-        fi
-      else
-        ld_shlibs=no
-      fi
-      ;;
 
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-       wlarc=
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
-      ;;
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
 
-    solaris*)
-      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
 
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
 
-_LT_EOF
-      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
-      fi
-      ;;
 
-    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
-      case `$LD -v 2>&1` in
-        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
-       ld_shlibs=no
-       cat <<_LT_EOF 1>&2
+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
 
-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
-*** reliably create shared libraries on SCO systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
+# Global variables:
+ofile=libtool
+can_build_shared=yes
 
-_LT_EOF
-       ;;
-       *)
-         # For security reasons, it is highly recommended that you always
-         # use absolute paths for naming shared libraries, and exclude the
-         # DT_RUNPATH tag from executables and libraries.  But doing so
-         # requires that you compile everything twice, which is a pain.
-         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
          else
-           ld_shlibs=no
-         fi
-       ;;
-      esac
-      ;;
+           cat <<_LT_EOF 1>&2
 
-    sunos4*)
-      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
+*** 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
 
-    *)
-      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-       ld_shlibs=no
+_LT_EOF
+         fi ;;
+       esac
       fi
-      ;;
-    esac
-
-    if test "$ld_shlibs" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec=
-      export_dynamic_flag_spec=
-      whole_archive_flag_spec=
+      break
     fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag=unsupported
-      always_export_symbols=yes
-      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
-      hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
-       # Neither direct hardcoding nor static linking is supported with a
-       # broken collect2.
-       hardcode_direct=unsupported
-      fi
-      ;;
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
 
-    aix4* | aix5*)
-      if test "$host_cpu" = ia64; then
-       # On IA64, the linker does run time linking by default, so we don't
-       # have to do anything special.
-       aix_use_runtimelinking=no
-       exp_sym_flag='-Bexport'
-       no_entry_flag=""
-      else
-       # If we're using GNU nm, then we don't want the "-C" option.
-       # -C means demangle to AIX nm, but means don't demangle with GNU nm
-       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       else
-         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-       fi
-       aix_use_runtimelinking=no
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-       # Test if we are trying to use run time linking or normal
-       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-       # need to do runtime linking.
-       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-         for ld_flag in $LDFLAGS; do
-         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
-         done
-         ;;
-       esac
 
-       exp_sym_flag='-bexport'
-       no_entry_flag='-bnoentry'
-      fi
 
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
-      archive_cmds=''
-      hardcode_direct=yes
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      file_list_spec='${wl}-f,'
 
-      if test "$GCC" = yes; then
-       case $host_os in aix4.[012]|aix4.[012].*)
-       # We only want to do this on AIX 4.2 and lower, the check
-       # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-         # We have reworked collect2
-         hardcode_direct=yes
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+       case $deplibs_check_method in
+       "file_magic "*)
+         file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+         MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+         if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+           $EGREP "$file_magic_regex" > /dev/null; then
+           :
          else
-         # We have old collect2
-         hardcode_direct=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         hardcode_minus_L=yes
-         hardcode_libdir_flag_spec='-L$libdir'
-         hardcode_libdir_separator=
-         fi
-         ;;
-       esac
-       shared_flag='-shared'
-       if test "$aix_use_runtimelinking" = yes; then
-         shared_flag="$shared_flag "'${wl}-G'
-       fi
-      else
-       # not using gcc
-       if test "$host_cpu" = ia64; then
-       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-       # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-       else
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag='${wl}-G'
-         else
-           shared_flag='${wl}-bM:SRE'
-         fi
-       fi
-      fi
-
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols=yes
-      if test "$aix_use_runtimelinking" = yes; then
-       # Warning - without using the other runtime loading flags (-brtl),
-       # -berok will link without error, but may produce a broken library.
-       allow_undefined_flag='-berok'
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+           cat <<_LT_EOF 1>&2
 
-int
-main ()
-{
+*** 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
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+_LT_EOF
+         fi ;;
+       esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-       /^0/ {
-           s/^0  *\(.*\)$/\1/
-           p
-       }
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+  else
+    MAGIC_CMD=:
+  fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+  fi
+  ;;
+esac
 
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-      else
-       if test "$host_cpu" = ia64; then
-         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
-         allow_undefined_flag="-z nodefs"
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-       else
-        # Determine the default libpath from the value encoded in an
-        # empty executable.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# Use C for the default configuration in the libtool script
 
-int
-main ()
-{
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-       /^0/ {
-           s/^0  *\(.*\)$/\1/
-           p
-       }
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
+# Source file extension for C test sources.
+ac_ext=c
 
-fi
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
 
-        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-         # Warning - without using the other run time loading flags,
-         # -berok will link without error, but may produce a broken library.
-         no_undefined_flag=' ${wl}-bernotok'
-         allow_undefined_flag=' ${wl}-berok'
-         # Exported symbols can be pulled into shared objects from archives
-         whole_archive_flag_spec='$convenience'
-         archive_cmds_need_lc=yes
-         # This is similar to how AIX traditionally builds its shared libraries.
-         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-       fi
-      fi
-      ;;
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
 
-    amigaos*)
-      if test "$host_cpu" = m68k; then
-        archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-        hardcode_libdir_flag_spec='-L$libdir'
-        hardcode_minus_L=yes
-      fi
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs=no
-      ;;
 
-    bsdi[45]*)
-      export_dynamic_flag_spec=-rdynamic
-      ;;
 
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec=' '
-      allow_undefined_flag=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_from_new_cmds='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes=yes
-      ;;
 
-    darwin* | rhapsody*)
-      case $host_os in
-      rhapsody* | darwin1.[012])
-       allow_undefined_flag='${wl}-undefined ${wl}suppress'
-       ;;
-      *) # Darwin 1.3 on
-       case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-       10.[012])
-         allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         ;;
-       10.*)
-         allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
-         ;;
-       esac
-       ;;
-      esac
-      archive_cmds_need_lc=no
-      hardcode_direct=no
-      hardcode_automatic=yes
-      hardcode_shlibpath_var=unsupported
-      whole_archive_flag_spec=''
-      link_all_deplibs=yes
-      if test "$GCC" = yes ; then
-       if test "${lt_cv_apple_cc_single_mod+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_apple_cc_single_mod=no
-       if test -z "${LT_MULTI_MODULE}"; then
-         # By default we will add the -single_module flag. You can override
-         # by either setting the environment variable LT_MULTI_MODULE
-         # non-empty at configure time, or by adding -multi-module to the
-         # link flags.
-         echo "int foo(void){return 1;}" > conftest.c
-         $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-             -dynamiclib ${wl}-single_module conftest.c
-         if test -f libconftest.dylib; then
-             lt_cv_apple_cc_single_mod=yes
-             rm libconftest.dylib
-         fi
-         rm conftest.$ac_ext
-       fi
-fi
 
-       output_verbose_link_cmd=echo
-       if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then
-         archive_cmds='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-         archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       else
-         archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-         archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       fi
-       module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-       module_expsym_cmds='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      else
-       case $cc_basename in
-       xlc*)
-         output_verbose_link_cmd=echo
-         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring'
-         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-         # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         module_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         ;;
-       *)
-         ld_shlibs=no
-         ;;
-       esac
-      fi
-      ;;
 
-    dgux*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
-      ;;
 
-    freebsd1*)
-      ld_shlibs=no
-      ;;
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
-      ;;
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | kfreebsd*-gnu | dragonfly*)
-      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
 
-    hpux9*)
-      if test "$GCC" = yes; then
-       archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_direct=yes
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
 
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L=yes
-      export_dynamic_flag_spec='${wl}-E'
-      ;;
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
 
-    hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-       archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      if test "$with_gnu_ld" = no; then
-       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_flag_spec_ld='+b $libdir'
-       hardcode_libdir_separator=:
-       hardcode_direct=yes
-       export_dynamic_flag_spec='${wl}-E'
-       # hardcode_minus_L: Not really in the search PATH,
-       # but as the default location of the library.
-       hardcode_minus_L=yes
-      fi
-      ;;
 
-    hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      else
-       case $host_cpu in
-       hppa*64*)
-         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       ia64*)
-         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       esac
-      fi
-      if test "$with_gnu_ld" = no; then
-       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-       hardcode_libdir_separator=:
-
-       case $host_cpu in
-       hppa*64*|ia64*)
-         hardcode_direct=no
-         hardcode_shlibpath_var=no
-         ;;
-       *)
-         hardcode_direct=yes
-         export_dynamic_flag_spec='${wl}-E'
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
 
-         # hardcode_minus_L: Not really in the search PATH,
-         # but as the default location of the library.
-         hardcode_minus_L=yes
-         ;;
-       esac
-      fi
-      ;;
+lt_prog_compiler_no_builtin_flag=
 
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       # Try to use the -exported_symbol ld option, if it does not
-       # work, assume that -exports_file does not work either and
-       # implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        cat >conftest.$ac_ext <<_ACEOF
-int foo(void) {}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
 
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        LDFLAGS="$save_LDFLAGS"
-      else
-       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      inherit_rpath=yes
-      link_all_deplibs=yes
-      ;;
+fi
 
-    netbsd*)
-      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
-      else
-       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      ;;
 
-    newsos6)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
-      hardcode_shlibpath_var=no
-      ;;
 
-    *nto* | *qnx*)
-      ;;
 
-    openbsd*)
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec='${wl}-E'
-      else
-        case $host_os in
-       openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-         archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_libdir_flag_spec='-R$libdir'
-         ;;
-       *)
-         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-         ;;
-        esac
+
+
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
       fi
       ;;
 
-    os2*)
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_minus_L=yes
-      allow_undefined_flag=unsupported
-      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
       ;;
 
-    osf3*)
-      if test "$GCC" = yes; then
-       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator=:
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
       ;;
 
-    osf4* | osf5*)     # as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
-      else
-       allow_undefined_flag=' -expect_unresolved \*'
-       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-       $CC -shared${allow_undefined_flag} -input $lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
-
-       # Both c and cxx compiler support -rpath directly
-       hardcode_libdir_flag_spec='-rpath $libdir'
-      fi
-      archive_cmds_need_lc='no'
-      hardcode_libdir_separator=:
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
       ;;
 
-    solaris*)
-      no_undefined_flag=' -z defs'
-      if test "$GCC" = yes; then
-       wlarc='${wl}'
-       archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-      else
-       case `$CC -V 2>&1` in
-       *"Compilers 5.0"*)
-         wlarc=''
-         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
-         ;;
-       *)
-         wlarc='${wl}'
-         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
-         ;;
-       esac
-      fi
-      hardcode_libdir_flag_spec='-R$libdir'
-      hardcode_shlibpath_var=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convenience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
-       # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-       *)
-         whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
-      esac
-      link_all_deplibs=yes
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
       ;;
 
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-       # Use $CC to link under sequent, because it throws in some extra .o
-       # files that make .init and .fini sections work.
-       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_direct=yes
-      hardcode_minus_L=yes
-      hardcode_shlibpath_var=no
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
       ;;
 
-    sysv4)
-      case $host_vendor in
-       sni)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=yes # is this really true???
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       # +Z the default
        ;;
-       siemens)
-         ## LD is ld it makes a PLAMLIB
-         ## CC just makes a GrossModule.
-         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-         reload_cmds='$CC -r -o $output$reload_objs'
-         hardcode_direct=no
-        ;;
-       motorola)
-         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+      *)
+       lt_prog_compiler_pic='-fPIC'
        ;;
       esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
       ;;
 
-    sysv4.3*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='-Bexport'
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
       ;;
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-       hardcode_shlibpath_var=no
-       runpath_var=LD_RUN_PATH
-       hardcode_runpath_var=yes
-       ld_shlibs=yes
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic=-Kconform_pic
       fi
       ;;
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag='${wl}-z,text'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      runpath_var='LD_RUN_PATH'
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
 
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      if test -n "$lt_prog_compiler_pic"; then
+        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
+      fi
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static='-Bstatic'
       else
-       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
       fi
       ;;
 
-    sysv5* | sco3.2v5* | sco5v6*)
-      # Note: We can NOT use -z defs as we might desire, because we do not
-      # link with -lc, and that would cause any symbols used from libc to
-      # always be unresolved, which means just about no library would
-      # ever link correctly.  If we're not using GNU ld we use -z text
-      # though, which does catch some bad symbols but isn't as heavy-handed
-      # as -z defs.
-      no_undefined_flag='${wl}-z,text'
-      allow_undefined_flag='${wl}-z,nodefs'
-      archive_cmds_need_lc=no
-      hardcode_shlibpath_var=no
-      hardcode_libdir_flag_spec='${wl}-R,$libdir'
-      hardcode_libdir_separator=':'
-      link_all_deplibs=yes
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var='LD_RUN_PATH'
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
 
-      if test "$GCC" = yes; then
-       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+       # +Z the default
+       ;;
+      *)
+       lt_prog_compiler_pic='+Z'
+       ;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-KPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fPIC'
+       lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='--shared'
+       lt_prog_compiler_static='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       lt_prog_compiler_wl='-Wl,-Wl,,'
+       lt_prog_compiler_pic='-PIC'
+       lt_prog_compiler_static='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+       # which looks to be a dead project)
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-fpic'
+       lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       lt_prog_compiler_wl='-Wl,'
+       lt_prog_compiler_pic='-qpic'
+       lt_prog_compiler_static='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       *Sun\ F* | *Sun*Fortran*)
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Qoption ld '
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+        *Intel*\ [CF]*Compiler*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fPIC'
+         lt_prog_compiler_static='-static'
+         ;;
+       *Portland\ Group*)
+         lt_prog_compiler_wl='-Wl,'
+         lt_prog_compiler_pic='-fpic'
+         lt_prog_compiler_static='-Bstatic'
+         ;;
+       esac
+       ;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+       lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+       lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+       lt_prog_compiler_pic='-Kconform_pic'
+       lt_prog_compiler_static='-Bstatic'
       fi
       ;;
 
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
     uts4*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec='-L$libdir'
-      hardcode_shlibpath_var=no
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
       ;;
 
     *)
-      ld_shlibs=no
+      lt_prog_compiler_can_build_shared=no
       ;;
     esac
-
-    if test x$host_vendor = xsni; then
-      case $host in
-      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-       export_dynamic_flag_spec='${wl}-Blargedynsym'
-       ;;
-      esac
-    fi
   fi
 
-{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
-echo "${ECHO_T}$ld_shlibs" >&6; }
-test "$ld_shlibs" = no && can_build_shared=no
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
 
-with_gnu_ld=$with_gnu_ld
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
 
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
 
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
 
+fi
 
 
 
@@ -8556,80 +9372,45 @@ with_gnu_ld=$with_gnu_ld
 
 
 #
-# Do we need to explicitly link libc?
+# Check to make sure the static flag actually works.
 #
-case "x$archive_cmds_need_lc" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
-      $RM conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl
-       pic_flag=$lt_prog_compiler_pic
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag
-        allow_undefined_flag=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-         archive_cmds_need_lc=no
-        else
-         archive_cmds_need_lc=yes
-        fi
-        allow_undefined_flag=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
-echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
 
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
 
 
 
@@ -8637,119 +9418,1299 @@ esac
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
 
 
 
 
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
 
 
 
 
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
 
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
 
+  ld_shlibs=yes
 
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+         *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
 
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
 
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
 
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
 
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
+_LT_EOF
+      fi
+      ;;
 
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
 
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       allow_undefined_flag=unsupported
+       # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+       # support --undefined.  This deserves some investigation.  FIXME
+       archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
 
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
 
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+       # If the export-symbols file already is a .def file (1st line
+       # is EXPORTS), use it as is; otherwise, prepend...
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+         cp $export_symbols $output_objdir/$soname.def;
+       else
+         echo EXPORTS > $output_objdir/$soname.def;
+         cat $export_symbols >> $output_objdir/$soname.def;
+       fi~
+       $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
 
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
 
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
 
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+       case $cc_basename in
+         diet\ *) tmp_diet=yes;;       # linux-dietlibc with static linking (!diet-dyn)
+       esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+        && test "$tmp_diet" = no
+      then
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
+       case $cc_basename,$host_cpu in
+        pgcc*)                         # Portland Group C compiler
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag'
+         ;;
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_addflag=' $pic_flag -Mnomain' ;;
+       ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
+         tmp_addflag=' -i_dynamic' ;;
+       efc*,ia64* | ifort*,ia64*)      # Intel Fortran compiler on ia64
+         tmp_addflag=' -i_dynamic -nofor_main' ;;
+       ifc* | ifort*)                  # Intel Fortran compiler
+         tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         whole_archive_flag_spec=
+         tmp_sharedflag='--shared' ;;
+       xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         ;;
+       esac
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         compiler_needs_object=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
 
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+         archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
 
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+       wlarc=
+      else
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
 
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
 
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
 
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
 
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+       ld_shlibs=no
+       cat <<_LT_EOF 1>&2
 
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
 
+_LT_EOF
+       ;;
+       *)
+         # For security reasons, it is highly recommended that you always
+         # use absolute paths for naming shared libraries, and exclude the
+         # DT_RUNPATH tag from executables and libraries.  But doing so
+         # requires that you compile everything twice, which is a pain.
+         if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+           hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+           archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+         else
+           ld_shlibs=no
+         fi
+       ;;
+      esac
+      ;;
 
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+       ld_shlibs=no
+      fi
+      ;;
+    esac
 
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+       # Neither direct hardcoding nor static linking is supported with a
+       # broken collect2.
+       hardcode_direct=unsupported
+      fi
+      ;;
 
+    aix[4-9]*)
+      if test "$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
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
+       if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+         export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       else
+         export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+       fi
+       aix_use_runtimelinking=no
 
+       # Test if we are trying to use run time linking or normal
+       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+       # need to do runtime linking.
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+         for ld_flag in $LDFLAGS; do
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
+         done
+         ;;
+       esac
 
+       exp_sym_flag='-bexport'
+       no_entry_flag='-bnoentry'
+      fi
 
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
 
+      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
+         :
+         else
+         # We have old collect2
+         hardcode_direct=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         hardcode_minus_L=yes
+         hardcode_libdir_flag_spec='-L$libdir'
+         hardcode_libdir_separator=
+         fi
+         ;;
+       esac
+       shared_flag='-shared'
+       if test "$aix_use_runtimelinking" = yes; then
+         shared_flag="$shared_flag "'${wl}-G'
+       fi
+      else
+       # not using gcc
+       if test "$host_cpu" = ia64; then
+       # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+       # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+       else
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag='${wl}-G'
+         else
+           shared_flag='${wl}-bM:SRE'
+         fi
+       fi
+      fi
 
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+       # Warning - without using the other runtime loading flags (-brtl),
+       # -berok will link without error, but may produce a broken library.
+       allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
 
+fi
 
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+       if test "$host_cpu" = ia64; then
+         hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+         allow_undefined_flag="-z nodefs"
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+       else
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath_+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath_"; then
+    lt_cv_aix_libpath_="/usr/lib:/lib"
+  fi
 
+fi
 
+  aix_libpath=$lt_cv_aix_libpath_
+fi
 
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+         # Warning - without using the other run time loading flags,
+         # -berok will link without error, but may produce a broken library.
+         no_undefined_flag=' ${wl}-bernotok'
+         allow_undefined_flag=' ${wl}-berok'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           whole_archive_flag_spec='$convenience'
+         fi
+         archive_cmds_need_lc=yes
+         # This is similar to how AIX traditionally builds its shared libraries.
+         archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+       fi
+      fi
+      ;;
 
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
 
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
 
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       always_export_symbols=yes
+       file_list_spec='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+       enable_shared_with_static_runtimes=yes
+       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       old_postinstall_cmds='chmod 644 $oldlib'
+       postlink_cmds='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
+       ;;
+      *)
+       # Assume MSVC wrapper
+       hardcode_libdir_flag_spec=' '
+       allow_undefined_flag=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       old_archive_from_new_cmds='true'
+       # FIXME: Should let the user specify the lib program.
+       old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       enable_shared_with_static_runtimes=yes
+       ;;
+      esac
+      ;;
 
+    darwin* | rhapsody*)
 
 
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
 
+  else
+  ld_shlibs=no
+  fi
 
+      ;;
 
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
 
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    hpux9*)
+      if test "$GCC" = yes; then
+       archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+       archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
 
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
 
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
+       hardcode_direct=yes
+       hardcode_direct_absolute=yes
+       export_dynamic_flag_spec='${wl}-E'
+       # hardcode_minus_L: Not really in the search PATH,
+       # but as the default location of the library.
+       hardcode_minus_L=yes
+      fi
+      ;;
 
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       esac
+      else
+       case $host_cpu in
+       hppa*64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       ia64*)
+         archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
 
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
 
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
 
+         ;;
+       esac
+      fi
+      if test "$with_gnu_ld" = no; then
+       hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+       hardcode_libdir_separator=:
 
+       case $host_cpu in
+       hppa*64*|ia64*)
+         hardcode_direct=no
+         hardcode_shlibpath_var=no
+         ;;
+       *)
+         hardcode_direct=yes
+         hardcode_direct_absolute=yes
+         export_dynamic_flag_spec='${wl}-E'
 
+         # hardcode_minus_L: Not really in the search PATH,
+         # but as the default location of the library.
+         hardcode_minus_L=yes
+         ;;
+       esac
+      fi
+      ;;
 
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       # Try to use the -exported_symbol ld option, if it does not
+       # work, assume that -exports_file does not work either and
+       # implicitly export all symbols.
+       # This should be the same for all languages, so no per-tag cache variable.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if ${lt_cv_irix_exported_symbol+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo (void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  lt_cv_irix_exported_symbol=yes
+else
+  lt_cv_irix_exported_symbol=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+           LDFLAGS="$save_LDFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
+      else
+       archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
 
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+       archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
 
+    *nto* | *qnx*)
+      ;;
 
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       hardcode_direct_absolute=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       ld_shlibs=no
+      fi
+      ;;
 
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
 
+    osf3*)
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
 
+    osf4* | osf5*)     # as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+       allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+       allow_undefined_flag=' -expect_unresolved \*'
+       archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
+       # Both c and cxx compiler support -rpath directly
+       hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
 
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+       wlarc='${wl}'
+       archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+       case `$CC -V 2>&1` in
+       *"Compilers 5.0"*)
+         wlarc=''
+         archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+         ;;
+       *)
+         wlarc='${wl}'
+         archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+         $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         ;;
+       esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
+       # Supported since Solaris 2.6 (maybe 2.5.1?)
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
+      esac
+      link_all_deplibs=yes
+      ;;
 
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+       # Use $CC to link under sequent, because it throws in some extra .o
+       # files that make .init and .fini sections work.
+       archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
 
+    sysv4)
+      case $host_vendor in
+       sni)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=yes # is this really true???
+       ;;
+       siemens)
+         ## LD is ld it makes a PLAMLIB
+         ## CC just makes a GrossModule.
+         archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+         reload_cmds='$CC -r -o $output$reload_objs'
+         hardcode_direct=no
+        ;;
+       motorola)
+         archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+         hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+       ;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
 
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
 
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_shlibpath_var=no
+       runpath_var=LD_RUN_PATH
+       hardcode_runpath_var=yes
+       ld_shlibs=yes
+      fi
+      ;;
 
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
 
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
 
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
 
+      if test "$GCC" = yes; then
+       archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+       archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+       archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
 
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
 
+    *)
+      ld_shlibs=no
+      ;;
+    esac
 
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+       export_dynamic_flag_spec='${wl}-Blargedynsym'
+       ;;
+      esac
+    fi
+  fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
 
+with_gnu_ld=$with_gnu_ld
 
 
 
@@ -8764,625 +10725,112 @@ esac
 
 
 
-  { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
-withGCC=$GCC
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$withGCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$sys_lib_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-need_lib_prefix=unknown
-hardcode_into_libs=no
 
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
 
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl
+         pic_flag=$lt_prog_compiler_pic
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag
+         allow_undefined_flag=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc=no
+         else
+           lt_cv_archive_cmds_need_lc=yes
+         fi
+         allow_undefined_flag=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
 
-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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
       ;;
     esac
-    # 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<name>.so
-      # instead of lib<name>.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
   ;;
+esac
 
-amigaos*)
-  if test "$host_cpu" = m68k; then
-    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'
-  else
-    dynamic_linker=no
-  fi
-  ;;
 
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
 
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
 
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
 
-  case $withGCC,$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~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
 
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/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}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$withGCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | $GREP "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
 
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
 
-kfreebsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
 
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  freebsd*) # from 4.6 on
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
 
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
 
-interix3*)
-  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'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
 
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux
-       else
-               version_type=irix
-       fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
 
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
 
-# This must be Linux ELF.
-linux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
 
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
 
-knetbsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
 
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
 
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
 
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
 
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-       shlibpath_overrides_runpath=no
-       ;;
-      *)
-       shlibpath_overrides_runpath=yes
-       ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
 
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
 
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
 
-rdos*)
-  dynamic_linker=no
-  ;;
 
-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.3*)
-  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
-      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
-  ;;
 
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
 
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
 
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
 
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
 
-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
 
 
 
 
 
 
-  { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
 
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
-echo "${ECHO_T}$hardcode_action" >&6; }
 
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; 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
 
 
 
 
 
 
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
 
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
 
-  mingw* | pw32*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
 
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
 
-  darwin*)
-  # if libdl is installed we need to link against it
-    { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_dl_dlopen=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
 
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
 
-fi
 
-    ;;
 
-  *)
-    { echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
-if test "${ac_cv_func_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef shl_load
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_shl_load || defined __stub___shl_load
-choke me
-#endif
 
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_func_shl_load=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
-if test $ac_cv_func_shl_load = yes; then
-  lt_cv_dlopen="shl_load"
-else
-  { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dld_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_dld_shl_load=no
-fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
-if test $ac_cv_lib_dld_shl_load = yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-else
-  { echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
-if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
 
-#undef dlopen
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined __stub_dlopen || defined __stub___dlopen
-choke me
-#endif
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$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<name>.so
+      # instead of lib<name>.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
+  ;;
 
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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'
+    ;;
+  esac
+  ;;
 
-       ac_cv_func_dlopen=no
-fi
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
-if test $ac_cv_func_dlopen = yes; then
-  lt_cv_dlopen="dlopen"
-else
-  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dl_dlopen=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_svld_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_svld_dlopen=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
-if test $ac_cv_lib_svld_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dld_dld_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dld_dld_link=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
-if test $ac_cv_lib_dld_dld_link = yes; then
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-fi
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
 
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
 
-fi
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
 
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
 
-fi
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
 
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
 
-fi
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
 
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
 
-fi
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
 
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
 
-fi
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
 
-    ;;
-  esac
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
   else
-    enable_dlopen=no
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
   fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
 
-  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"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
 
-    { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
-if test "${lt_cv_dlopen_self+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 10088 "configure"
-#include "confdefs.h"
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-#include <stdio.h>
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
 
-/* 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
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-void fnord() { int i=42;}
-int main ()
+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); */
-    }
-  else
-    puts (dlerror ());
 
-    exit (status);
+  ;
+  return 0;
 }
-_LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-rm -fr conftest*
-
-
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
-if test "${lt_cv_dlopen_self_static+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line 10188 "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
 
-#include <stdio.h>
+fi
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
-/* 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
+  # 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
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
 
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
+  # 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'
+  ;;
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
+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
-    puts (dlerror ());
-
-    exit (status);
-}
-_LT_EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
   fi
-fi
-rm -fr conftest*
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
 
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
 
-fi
-{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
-    fi
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
   esac
+  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
+  ;;
 
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
 
-  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
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
 
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
 
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
 
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
 
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
 
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = 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
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
 
 
 
 
 
 
-striplib=
-old_striplib=
-{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-    else
-      { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-    fi
-    ;;
-  *)
-    { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-    ;;
-  esac
-fi
 
 
 
 
 
 
-  # Report which library types will actually be built
-  { echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
-  { echo "$as_me:$LINENO: result: $can_build_shared" >&5
-echo "${ECHO_T}$can_build_shared" >&6; }
 
-  { echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
 
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
 
-  aix4* | aix5*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { echo "$as_me:$LINENO: result: $enable_shared" >&5
-echo "${ECHO_T}$enable_shared" >&6; }
 
-  { echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { echo "$as_me:$LINENO: result: $enable_static" >&5
-echo "${ECHO_T}$enable_static" >&6; }
 
 
 
 
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-CC="$lt_save_CC"
 
 
 
@@ -10408,322 +11736,42 @@ CC="$lt_save_CC"
 
 
 
-        ac_config_commands="$ac_config_commands libtool"
 
 
 
 
-# Only expand once:
 
 
-enable_win32_dll=yes
 
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { echo "$as_me:$LINENO: result: $AS" >&5
-echo "${ECHO_T}$AS" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
-{ 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_AS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_AS="as"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5
-echo "${ECHO_T}$ac_ct_AS" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    AS=$ac_ct_AS
-  fi
-else
-  AS="$ac_cv_prog_AS"
-fi
 
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { echo "$as_me:$LINENO: result: $DLLTOOL" >&5
-echo "${ECHO_T}$DLLTOOL" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
-{ 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_DLLTOOL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5
-echo "${ECHO_T}$ac_ct_DLLTOOL" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
 
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { echo "$as_me:$LINENO: result: $OBJDUMP" >&5
-echo "${ECHO_T}$OBJDUMP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
 
-fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
-{ 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_OBJDUMP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5
-echo "${ECHO_T}$ac_ct_OBJDUMP" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    OBJDUMP=$ac_ct_OBJDUMP
-  fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
-fi
 
-  ;;
-esac
 
-test -z "$AS" && AS=as
 
 
 
 
 
-test -z "$DLLTOOL" && DLLTOOL=dlltool
 
 
 
 
 
-test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
@@ -10733,4805 +11781,4325 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
-{ echo "$as_me:$LINENO: checking for main in -lc" >&5
-echo $ECHO_N "checking for main in -lc... $ECHO_C" >&6; }
-if test "${ac_cv_lib_c_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc  $LIBS"
-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 main ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_c_main=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_c_main=no
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; 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
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_main" >&5
-echo "${ECHO_T}$ac_cv_lib_c_main" >&6; }
-if test $ac_cv_lib_c_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBC 1
-_ACEOF
 
-  LIBS="-lc $LIBS"
 
-fi
 
 
-case "$target_os" in
-    cygwin* | mingw32* | beos* | darwin*)
-        ;;
-    *)
 
-{ echo "$as_me:$LINENO: checking for main in -lm" >&5
-echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; }
-if test "${ac_cv_lib_m_main+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
+
+  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* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
 int
 main ()
 {
-return main ();
+return dlopen ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_m_main=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_m_main=no
+  ac_cv_lib_dl_dlopen=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core 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_main" >&5
-echo "${ECHO_T}$ac_cv_lib_m_main" >&6; }
-if test $ac_cv_lib_m_main = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
-_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
 
-  LIBS="-lm $LIBS"
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
 
 fi
 
-        ;;
-esac
-
-
-
-
-
-
+    ;;
 
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-for ac_header in assert.h fcntl.h limits.h malloc.h search.h sys/time.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
-  # 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
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-#include <$ac_header>
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_header_compiler=no
+  ac_cv_lib_dl_dlopen=no
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-rm -f core 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.  */
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <$ac_header>
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  ac_header_preproc=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
 
-  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 tiff@lists.maptools.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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  eval "$as_ac_Header=\$ac_header_preproc"
 fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&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
 
+fi
 
-{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
-echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
-if test "${ac_cv_c_const+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.  */
+    ;;
+  esac
 
-int
-main ()
-{
-/* FIXME: Include the comments suggested by Paul. */
-#ifndef __cplusplus
-  /* Ultrix mips cc rejects this.  */
-  typedef int charset[2];
-  const charset cs;
-  /* SunOS 4.1.1 cc rejects this.  */
-  char const *const *pcpcc;
-  char **ppc;
-  /* NEC SVR4.0.2 mips cc rejects this.  */
-  struct point {int x, y;};
-  static struct point const zero = {0,0};
-  /* AIX XL C 1.02.0.0 rejects this.
-     It does not let you subtract one const X* pointer from another in
-     an arm of an if-expression whose if-part is not a constant
-     expression */
-  const char *g = "string";
-  pcpcc = &g + (g ? g-g : 0);
-  /* HPUX 7.0 cc rejects these. */
-  ++pcpcc;
-  ppc = (char**) pcpcc;
-  pcpcc = (char const *const *) ppc;
-  { /* SCO 3.2v4 cc rejects this.  */
-    char *t;
-    char const *s = 0 ? (char *) 0 : (char const *) 0;
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
 
-    *t++ = 0;
-    if (s) return 0;
-  }
-  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
-    int x[] = {25, 17};
-    const int *foo = &x[0];
-    ++foo;
-  }
-  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
-    typedef const int *iptr;
-    iptr p = 0;
-    ++p;
-  }
-  { /* AIX XL C 1.02.0.0 rejects this saying
-       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
-    struct s { int j; const int *ap[3]; };
-    struct s *b; b->j = 5;
-  }
-  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
-    const int foo = 10;
-    if (!foo) return 0;
-  }
-  return !cs[0] && !zero.x;
-#endif
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_const=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_c_const=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
-echo "${ECHO_T}$ac_cv_c_const" >&6; }
-if test $ac_cv_c_const = no; then
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-cat >>confdefs.h <<\_ACEOF
-#define const
-_ACEOF
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-fi
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
 
-{ echo "$as_me:$LINENO: checking for inline" >&5
-echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
-if test "${ac_cv_c_inline+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_c_inline=no
-for ac_kw in inline __inline__ __inline; do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifndef __cplusplus
-typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
-#endif
-
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_inline=$ac_kw
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  test "$ac_cv_c_inline" != no && break
-done
-
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
-echo "${ECHO_T}$ac_cv_c_inline" >&6; }
-
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
 
-case $ac_cv_c_inline in
-  inline | yes) ;;
-  *)
-    case $ac_cv_c_inline in
-      no) ac_val=;;
-      *) ac_val=$ac_cv_c_inline;;
-    esac
-    cat >>confdefs.h <<_ACEOF
-#ifndef __cplusplus
-#define inline $ac_val
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
 #endif
-_ACEOF
-    ;;
-esac
 
-{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
-echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
-if test "${ac_cv_c_bigendian+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # See if sys/param.h defines the BYTE_ORDER macro.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/param.h>
+#include <stdio.h>
 
-int
-main ()
-{
-#if  ! (defined BYTE_ORDER && defined BIG_ENDIAN && defined LITTLE_ENDIAN \
-       && BYTE_ORDER && BIG_ENDIAN && LITTLE_ENDIAN)
- bogus endian macros
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
 #endif
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  # It does; now see whether it defined to BIG_ENDIAN or not.
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/param.h>
-
-int
-main ()
-{
-#if BYTE_ORDER != BIG_ENDIAN
- not big endian
+/* 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
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_c_bigendian=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
 
-       ac_cv_c_bigendian=no
-fi
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
 
-       # It does not; compile a test program.
-if test "$cross_compiling" = yes; then
-  # try to guess the endianness by grepping values into an object file
-  ac_cv_c_bigendian=unknown
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
-short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
-void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
-short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
-short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
-void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
-int
-main ()
-{
- _ascii (); _ebcdic ();
-  ;
-  return 0;
+  return status;
 }
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
   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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then
-  ac_cv_c_bigendian=yes
-fi
-if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
-  if test "$ac_cv_c_bigendian" = unknown; then
-    ac_cv_c_bigendian=no
-  else
-    # finding both strings is unlikely to happen, but who knows?
-    ac_cv_c_bigendian=unknown
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
   fi
 fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+rm -fr conftest*
 
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  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 ()
-{
-
-  /* Are we little or big endian?  From Harbison&Steele.  */
-  union
-  {
-    long int l;
-    char c[sizeof (long int)];
-  } u;
-  u.l = 1;
-  return u.c[sizeof (long int) - 1] == 1;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_c_bigendian=no
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
 
-( exit $ac_status )
-ac_cv_c_bigendian=yes
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
 
+#include <stdio.h>
 
-fi
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
-echo "${ECHO_T}$ac_cv_c_bigendian" >&6; }
-case $ac_cv_c_bigendian in
-  yes)
+/* 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
 
-cat >>confdefs.h <<\_ACEOF
-#define WORDS_BIGENDIAN 1
-_ACEOF
- ;;
-  no)
-     ;;
-  *)
-    { { echo "$as_me:$LINENO: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&5
-echo "$as_me: error: unknown endianness
-presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
-   { (exit 1); exit 1; }; } ;;
-esac
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
 
-{ 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
-typedef off_t ac__type_new_;
-int
-main ()
+int fnord () { return 42; }
+int main ()
 {
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
 }
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
   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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
 fi
+rm -fr conftest*
+
 
-rm -f core 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; }
-if test $ac_cv_type_off_t = yes; then
-  :
-else
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
 
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
-_ACEOF
+    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
 
-{ 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
-typedef size_t ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core 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; }
-if test $ac_cv_type_size_t = yes; then
-  :
-else
 
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
 
-fi
 
-{ 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
-typedef int ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core 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; }
 
-# The cast to long int 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.
-{ 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 "$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
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core 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
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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
-   typedef int ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$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
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
+
+
+
 
-       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
+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
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CC="$lt_save_CC"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+        ac_config_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
   done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-       ac_lo= ac_hi=
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  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
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
+
 int
 main ()
 {
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
+#ifndef __GNUC__
+       choke me
+#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_hi=$ac_mid
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_lo=`expr '(' $ac_mid ')' + 1`
+  ac_compiler_gnu=no
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_int=$ac_lo;;
-'') if test "$ac_cv_type_int" = yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_int=0
-   fi ;;
-esac
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-   typedef int ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
+
 int
 main ()
 {
 
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (ac__type_sizeof_))))
-       return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (ac__type_sizeof_))))
-       return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) != 0;
-
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 )
-if test "$ac_cv_type_int" = yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (int)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_int=0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-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
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-typedef long ac__type_new_;
+
 int
 main ()
 {
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core 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; }
+if ac_fn_cxx_try_compile "$LINENO"; then :
 
-# The cast to long int 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.
-{ 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 "$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
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$ac_includes_default
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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
-   typedef long ac__type_sizeof_;
 int
 main ()
 {
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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`
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
 else
-  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
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
-test_array [0] = 0
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
-test_array [0] = 0
+depcc="$CXX"  am_compiler_list=
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_lo=$ac_mid; break
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
 
-       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
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  am__universal=false
+  case " $depcc " in #(
+     *\ -arch\ *\ -arch\ *) am__universal=true ;;
+     esac
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
+    am__obj=sub/conftest.${OBJEXT-o}
+    am__minus_obj="-o $am__obj"
+    case $depmode in
+    gcc)
+      # This depmode causes a compiler race in universal mode.
+      test "$am__universal" = false || continue
+      ;;
+    nosideeffect)
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
+      if test "x$enable_dependency_tracking" = xyes; then
+       continue
+      else
+       break
+      fi
+      ;;
+    msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+      # This compiler won't grok '-c -o', but also, the minuso test has
+      # not run yet.  These depmodes are late enough in the game, and
+      # so weak that their functioning should not be impacted.
+      am__obj=conftest.${OBJEXT-o}
+      am__minus_obj=
+      ;;
+    none) break ;;
+    esac
+    if depmode=$depmode \
+       source=sub/conftest.c object=$am__obj \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
   done
+
+  cd ..
+  rm -rf conftest.dir
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  am_cv_CXX_dependencies_compiler_type=none
+fi
 
-       ac_lo= ac_hi=
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-# Binary search between lo and hi bounds.
-while test "x$ac_lo" != "x$ac_hi"; do
-  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
-   typedef long ac__type_sizeof_;
-int
-main ()
-{
-static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
-test_array [0] = 0
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-case $ac_lo in
-?*) ac_cv_sizeof_long=$ac_lo;;
-'') if test "$ac_cv_type_long" = yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long=0
-   fi ;;
-esac
-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
-   typedef long ac__type_sizeof_;
-static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
-static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
-#include <stdio.h>
-#include <stdlib.h>
-int
-main ()
-{
-
-  FILE *f = fopen ("conftest.val", "w");
-  if (! f)
-    return 1;
-  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
-    {
-      long int i = longval ();
-      if (i != ((long int) (sizeof (ac__type_sizeof_))))
-       return 1;
-      fprintf (f, "%ld\n", i);
-    }
-  else
-    {
-      unsigned long int i = ulongval ();
-      if (i != ((long int) (sizeof (ac__type_sizeof_))))
-       return 1;
-      fprintf (f, "%lu\n", i);
-    }
-  return ferror (f) || fclose (f) != 0;
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 )
-if test "$ac_cv_type_long" = yes; then
-     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&5
-echo "$as_me: error: cannot compute sizeof (long)
-See \`config.log' for more details." >&2;}
-   { (exit 77); exit 77; }; }
-   else
-     ac_cv_sizeof_long=0
-   fi
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f conftest.val
-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
-
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
 
-{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5
-echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; }
-if test "${ac_cv_header_time+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5
+$as_echo_n "checking how to run the C++ preprocessor... " >&6; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_header_time=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_header_time=no
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5
-echo "${ECHO_T}$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define TIME_WITH_SYS_TIME 1
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
 _ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
 
+else
+  # Broken: fails on valid input.
+continue
 fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
-echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; }
-if test "${ac_cv_struct_tm+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
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <sys/types.h>
-#include <time.h>
-
-int
-main ()
-{
-struct tm tm;
-                                    int *p = &tm.tm_sec;
-                                    return !p;
-  ;
-  return 0;
-}
+#include <ac_nonexistent.h>
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_struct_tm=time.h
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_struct_tm=sys/time.h
+  # Passes both tests.
+ac_preproc_ok=:
+break
 fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
-echo "${ECHO_T}$ac_cv_struct_tm" >&6; }
-if test $ac_cv_struct_tm = sys/time.h; then
 
-cat >>confdefs.h <<\_ACEOF
-#define TM_IN_SYS_TIME 1
-_ACEOF
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
 
 fi
-
-{ echo "$as_me:$LINENO: checking for int8" >&5
-echo $ECHO_N "checking for int8... $ECHO_C" >&6; }
-if test "${ac_cv_type_int8+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  CXXCPP=$ac_cv_prog_CXXCPP
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
 #endif
-
-
-typedef int8 ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
+                    Syntax error
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int8=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_type_int8=no
-fi
+if ac_fn_cxx_try_cpp "$LINENO"; then :
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  # Broken: fails on valid input.
+continue
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int8" >&5
-echo "${ECHO_T}$ac_cv_type_int8" >&6; }
-if test $ac_cv_type_int8 = yes; then
+rm -f conftest.err conftest.i conftest.$ac_ext
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INT8 1
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
 _ACEOF
+if ac_fn_cxx_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
 
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
 
-fi
-{ echo "$as_me:$LINENO: checking for int16" >&5
-echo $ECHO_N "checking for int16... $ECHO_C" >&6; }
-if test "${ac_cv_type_int16+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.  */
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
 
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
+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
 
+else
+  _lt_caught_CXX_error=yes
+fi
 
-typedef int16 ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int16=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-       ac_cv_type_int16=no
-fi
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int16" >&5
-echo "${ECHO_T}$ac_cv_type_int16" >&6; }
-if test $ac_cv_type_int16 = yes; then
+# Source file extension for C++ test sources.
+ac_ext=cpp
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INT16 1
-_ACEOF
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
 
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
 
-fi
-{ echo "$as_me:$LINENO: checking for int32" >&5
-echo $ECHO_N "checking for int32... $ECHO_C" >&6; }
-if test "${ac_cv_type_int32+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.  */
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
-#if HAVE_INTTYPES_H
-# include <inttypes.h>
-#endif
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
 
-typedef int32 ac__type_new_;
-int
-main ()
-{
-if ((ac__type_new_ *) 0)
-  return 0;
-if (sizeof (ac__type_new_))
-  return 0;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_type_int32=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_type_int32=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_type_int32" >&5
-echo "${ECHO_T}$ac_cv_type_int32" >&6; }
-if test $ac_cv_type_int32 = yes; then
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_INT32 1
-_ACEOF
 
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
-fi
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
 
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
 
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
 
 
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 
 
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
 
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
 
 
 
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
 
-for ac_func in floor isascii memmove memset mmap pow sqrt strchr strrchr strstr strtol
-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 { as_var=$as_ac_var; eval "test \"\${$as_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 <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  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
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef $ac_func
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $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
-#endif
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; 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 core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&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
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
 
-for ac_func in getopt
-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 { as_var=$as_ac_var; eval "test \"\${$as_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 <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+         $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
-#undef $ac_func
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $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
-#endif
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
+           ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        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
+           :
+         else
+           # We have old collect2
+           hardcode_direct_CXX=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           hardcode_minus_L_CXX=yes
+           hardcode_libdir_flag_spec_CXX='-L$libdir'
+           hardcode_libdir_separator_CXX=
+         fi
+          esac
+          shared_flag='-shared'
+         if test "$aix_use_runtimelinking" = yes; then
+           shared_flag="$shared_flag "'${wl}-G'
+         fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
+          else
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+       # export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
 int
 main ()
 {
-return $ac_func ();
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_cxx_try_link "$LINENO"; then :
 
-       eval "$as_ac_var=no"
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  case " $LIBOBJS " in
-  *" $ac_func.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
- ;;
-esac
 
+  aix_libpath=$lt_cv_aix_libpath__CXX
 fi
-done
-
 
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-for ac_func in strcasecmp
-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 { as_var=$as_ac_var; eval "test \"\${$as_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
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+           hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+           allow_undefined_flag_CXX="-z nodefs"
+           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  if ${lt_cv_aix_libpath__CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $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
-#endif
 
 int
 main ()
 {
-return $ac_func ();
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+if ac_fn_cxx_try_link "$LINENO"; then :
 
-       eval "$as_ac_var=no"
+  lt_aix_libpath_sed='
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }'
+  lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  if test -z "$lt_cv_aix_libpath__CXX"; then
+    lt_cv_aix_libpath__CXX="/usr/lib:/lib"
+  fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
 fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-else
-  case " $LIBOBJS " in
-  *" $ac_func.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
- ;;
-esac
 
+  aix_libpath=$lt_cv_aix_libpath__CXX
 fi
-done
 
+           hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           no_undefined_flag_CXX=' ${wl}-bernotok'
+           allow_undefined_flag_CXX=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             whole_archive_flag_spec_CXX='$convenience'
+           fi
+           archive_cmds_need_lc_CXX=yes
+           # This is similar to how AIX traditionally builds its shared
+           # libraries.
+           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
 
+      beos*)
+       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+         allow_undefined_flag_CXX=unsupported
+         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+         # support --undefined.  This deserves some investigation.  FIXME
+         archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       else
+         ld_shlibs_CXX=no
+       fi
+       ;;
 
-for ac_func in strtoul
-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 { as_var=$as_ac_var; eval "test \"\${$as_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 <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+      chorus*)
+        case $cc_basename in
+          *)
+         # FIXME: insert proper C++ library support
+         ld_shlibs_CXX=no
+         ;;
+        esac
+        ;;
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef $ac_func
+      cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl*)
+         # Native MSVC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+         # no search path for DLLs.
+         hardcode_libdir_flag_spec_CXX=' '
+         allow_undefined_flag_CXX=unsupported
+         always_export_symbols_CXX=yes
+         file_list_spec_CXX='@'
+         # Tell ltmain to make .lib files, not .a files.
+         libext=lib
+         # Tell ltmain to make .dll files, not .so files.
+         shrext_cmds=".dll"
+         # FIXME: Setting linknames here is a bad hack.
+         archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
+         # The linker will not automatically build a static lib if we build a DLL.
+         # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true'
+         enable_shared_with_static_runtimes_CXX=yes
+         # Don't use ranlib
+         old_postinstall_cmds_CXX='chmod 644 $oldlib'
+         postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
+               ;;
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
+         ;;
+       *)
+         # g++
+         # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+         # as there is no search path for DLLs.
+         hardcode_libdir_flag_spec_CXX='-L$libdir'
+         export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+         allow_undefined_flag_CXX=unsupported
+         always_export_symbols_CXX=no
+         enable_shared_with_static_runtimes_CXX=yes
+
+         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+           archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+         else
+           ld_shlibs_CXX=no
+         fi
+         ;;
+       esac
+       ;;
+      darwin* | rhapsody*)
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $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
-#endif
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
 
-       eval "$as_ac_var=no"
-fi
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+  else
+  ld_shlibs_CXX=no
+  fi
 
-else
-  case " $LIBOBJS " in
-  *" $ac_func.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
- ;;
-esac
+       ;;
 
-fi
-done
+      dgux*)
+        case $cc_basename in
+          ec++*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          ghcx*)
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
 
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+       # switch to ELF
+        ld_shlibs_CXX=no
+        ;;
 
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
 
-for ac_func in lfind
-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 { as_var=$as_ac_var; eval "test \"\${$as_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 <limits.h> declares $ac_func.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define $ac_func innocuous_$ac_func
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+      gnu*)
+        ;;
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
 
-#undef $ac_func
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                            # but as the default
+                                            # location of the library.
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char $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
-#endif
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
 
-int
-main ()
-{
-return $ac_func ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  eval "$as_ac_var=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+         hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+         hardcode_libdir_separator_CXX=:
 
-       eval "$as_ac_var=no"
-fi
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+             export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+                                                # but as the default
+                                                # location of the library.
+            ;;
+        esac
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_var'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_var'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+        case $cc_basename in
+          CC*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          aCC*)
+           case $host_cpu in
+             hppa*64*)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             ld_shlibs_CXX=no
+           fi
+           ;;
+        esac
+        ;;
 
-else
-  case " $LIBOBJS " in
-  *" $ac_func.$ac_objext "* ) ;;
-  *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext"
- ;;
-esac
+      interix[3-9]*)
+       hardcode_direct_CXX=no
+       hardcode_shlibpath_var_CXX=no
+       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+       export_dynamic_flag_spec_CXX='${wl}-E'
+       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+       # Instead, shared libraries are loaded at an image base (0x10000000 by
+       # default) and relocated if they conflict, which is a slow very memory
+       # consuming and fragmenting process.  To avoid this, we pick a random,
+       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+       archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+       ;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+           # SGI C++
+           archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
 
-fi
-done
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
+          *)
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+             fi
+           fi
+           link_all_deplibs_CXX=yes
+           ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
 
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
 
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
-{ echo "$as_me:$LINENO: checking native cpu bit order" >&5
-echo $ECHO_N "checking native cpu bit order... $ECHO_C" >&6; }
-case "$target_cpu" in
-    i*86*)
-        HOST_FILLORDER=FILLORDER_LSB2MSB
-       { echo "$as_me:$LINENO: result: lsb2msb" >&5
-echo "${ECHO_T}lsb2msb" >&6; }
-       ;;
-    *)
-       HOST_FILLORDER=FILLORDER_MSB2LSB
-       { echo "$as_me:$LINENO: result: msb2lsb" >&5
-echo "${ECHO_T}msb2lsb" >&6; }
-        ;;
-esac
-
-cat >>confdefs.h <<_ACEOF
-#define HOST_FILLORDER $HOST_FILLORDER
-_ACEOF
-
-
-if test "$ac_cv_c_bigendian" = yes ; then
-    HOST_BIGENDIAN=1
-else
-    HOST_BIGENDIAN=0
-fi
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
-cat >>confdefs.h <<_ACEOF
-#define HOST_BIGENDIAN $HOST_BIGENDIAN
-_ACEOF
+           # Archives containing C++ object files must be created using
+           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+           old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+           ;;
+         icpc* | ecpc* )
+           # Intel C++
+           with_gnu_ld=yes
+           # version 8.0 and above of icpc choke on multiply defined symbols
+           # if we add $predep_objects and $postdep_objects, however 7.1 and
+           # earlier do not add the objects themselves.
+           case `$CC -V 2>&1` in
+             *"Version 7."*)
+               archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+             *)  # Version 8.0 or newer
+               tmp_idyn=
+               case $host_cpu in
+                 ia64*) tmp_idyn=' -i_dynamic';;
+               esac
+               archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+               ;;
+           esac
+           archive_cmds_need_lc_CXX=no
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+           case `$CC -V` in
+           *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+             prelink_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+             old_archive_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
+             archive_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             archive_expsym_cmds_CXX='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 and above use weak symbols
+             archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
 
+           hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+         cxx*)
+           # Compaq C++
+           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
 
-#_POSIX_C_SOURCE=2
-#AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE, $_POSIX_C_SOURCE, [Define this macro to a positive integer to control which POSIX functionality is made available.])
+           runpath_var=LD_RUN_PATH
+           hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+           hardcode_libdir_separator_CXX=:
 
-HAVE_IEEEFP=1
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           ;;
+         xl* | mpixl* | bgxl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+           archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             no_undefined_flag_CXX=' -zdefs'
+             archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             hardcode_libdir_flag_spec_CXX='-R$libdir'
+             whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+             compiler_needs_object_CXX=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='func_echo_all'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
+           ;;
+       esac
+       ;;
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_IEEEFP $HAVE_IEEEFP
-_ACEOF
+      lynxos*)
+        # FIXME: insert proper C++ library support
+       ld_shlibs_CXX=no
+       ;;
 
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+       ;;
 
+      mvs*)
+        case $cc_basename in
+          cxx*)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+         *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+       esac
+       ;;
 
-# Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then
-  enableval=$enable_rpath; HAVE_RPATH=$enableval
-else
-  HAVE_RPATH=no
-fi
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+         archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+         wlarc=
+         hardcode_libdir_flag_spec_CXX='-R$libdir'
+         hardcode_direct_CXX=yes
+         hardcode_shlibpath_var_CXX=no
+       fi
+       # Workaround some broken pre-1.5 toolchains
+       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+       ;;
 
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+       ;;
 
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+       ld_shlibs_CXX=no
+       ;;
 
-if test "$HAVE_RPATH" = "yes"; then
-  HAVE_RPATH_TRUE=
-  HAVE_RPATH_FALSE='#'
-else
-  HAVE_RPATH_TRUE='#'
-  HAVE_RPATH_FALSE=
-fi
+      openbsd*)
+       if test -f /usr/libexec/ld.so; then
+         hardcode_direct_CXX=yes
+         hardcode_shlibpath_var_CXX=no
+         hardcode_direct_absolute_CXX=yes
+         archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           export_dynamic_flag_spec_CXX='${wl}-E'
+           whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=func_echo_all
+       else
+         ld_shlibs_CXX=no
+       fi
+       ;;
 
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
 
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then
-  enableval=$enable_largefile;
-fi
+           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+           hardcode_libdir_separator_CXX=:
 
-if test "$enable_largefile" != no; then
+           # Archives containing C++ object files must be created using
+           # the KAI C++ compiler.
+           case $host in
+             osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+             *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+           esac
+           ;;
+          RCC*)
+           # Rational C++ 2.4.1
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          cxx*)
+           case $host in
+             osf3*)
+               allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+               ;;
+             *)
+               allow_undefined_flag_CXX=' -expect_unresolved \*'
+               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+               archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+                 echo "-hidden">> $lib.exp~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $RM $lib.exp'
+               hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+               ;;
+           esac
 
-  { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
-echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; }
-if test "${ac_cv_sys_largefile_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_sys_largefile_CC=no
-     if test "$GCC" != yes; then
-       ac_save_CC=$CC
-       while :; do
-        # IRIX 6.2 and later do not support large files by default,
-        # so use the C compiler's -n32 option if that helps.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main ()
-{
+           hardcode_libdir_separator_CXX=:
 
-  ;
-  return 0;
-}
-_ACEOF
-        rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
+         *)
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+             case $host in
+               osf3*)
+                 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+               *)
+                 archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 ;;
+             esac
 
+             hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+             hardcode_libdir_separator_CXX=:
 
-fi
+             # Commands to make compiler produce verbose output that lists
+             # what "hidden" libraries, object files and flags are used when
+             # linking a shared library.
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
-rm -f core conftest.err conftest.$ac_objext
-        CC="$CC -n32"
-        rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_largefile_CC=' -n32'; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+           else
+             # FIXME: insert proper C++ library support
+             ld_shlibs_CXX=no
+           fi
+           ;;
+        esac
+        ;;
 
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
 
-fi
+      sunos4*)
+        case $cc_basename in
+          CC*)
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          lcc*)
+           # Lucid
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
 
-rm -f core conftest.err conftest.$ac_objext
-        break
-       done
-       CC=$ac_save_CC
-       rm -f conftest.$ac_ext
-    fi
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
-echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; }
-  if test "$ac_cv_sys_largefile_CC" != no; then
-    CC=$CC$ac_cv_sys_largefile_CC
-  fi
+      solaris*)
+        case $cc_basename in
+          CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+           no_undefined_flag_CXX=' -zdefs'
+           archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           hardcode_libdir_flag_spec_CXX='-R$libdir'
+           hardcode_shlibpath_var_CXX=no
+           case $host_os in
+             solaris2.[0-5] | solaris2.[0-5].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           link_all_deplibs_CXX=yes
 
-  { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; }
-if test "${ac_cv_sys_file_offset_bits+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  while :; do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main ()
-{
+           output_verbose_link_cmd='func_echo_all'
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_file_offset_bits=no; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+           ;;
+          gcx*)
+           # Green Hills C++ Compiler
+           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 
+           # The C++ compiler must be used to create the archive.
+           old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
+          *)
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             fi
+
+             hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[0-5] | solaris2.[0-5].*) ;;
+               *)
+                 whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
+        esac
+        ;;
 
-fi
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#define _FILE_OFFSET_BITS 64
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main ()
-{
+      case $cc_basename in
+        CC*)
+         archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+       *)
+         archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+         ;;
+      esac
+      ;;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_file_offset_bits=64; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+      sysv5* | sco3.2v5* | sco5v6*)
+       # Note: We can NOT use -z defs as we might desire, because we do not
+       # link with -lc, and that would cause any symbols used from libc to
+       # always be unresolved, which means just about no library would
+       # ever link correctly.  If we're not using GNU ld we use -z text
+       # though, which does catch some bad symbols but isn't as heavy-handed
+       # as -z defs.
+       no_undefined_flag_CXX='${wl}-z,text'
+       allow_undefined_flag_CXX='${wl}-z,nodefs'
+       archive_cmds_need_lc_CXX=no
+       hardcode_shlibpath_var_CXX=no
+       hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+       hardcode_libdir_separator_CXX=':'
+       link_all_deplibs_CXX=yes
+       export_dynamic_flag_spec_CXX='${wl}-Bexport'
+       runpath_var='LD_RUN_PATH'
 
+       case $cc_basename in
+          CC*)
+           archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+             '"$old_archive_cmds_CXX"
+           reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+             '"$reload_cmds_CXX"
+           ;;
+         *)
+           archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           ;;
+       esac
+      ;;
 
-fi
+      tandem*)
+        case $cc_basename in
+          NCC*)
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+          *)
+           # FIXME: insert proper C++ library support
+           ld_shlibs_CXX=no
+           ;;
+        esac
+        ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_file_offset_bits=unknown
-  break
-done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
-echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; }
-case $ac_cv_sys_file_offset_bits in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
-;;
-esac
-rm -f conftest*
-  if test $ac_cv_sys_file_offset_bits = unknown; then
-    { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
-echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; }
-if test "${ac_cv_sys_large_files+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  while :; do
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main ()
-{
+      vxworks*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_large_files=no; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
 
-fi
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#define _LARGE_FILES 1
-#include <sys/types.h>
- /* Check that off_t can represent 2**63 - 1 correctly.
-    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-    since some C++ compilers masquerading as C compilers
-    incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
-  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_sys_large_files=1; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
 
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
 
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-  ac_cv_sys_large_files=unknown
-  break
-done
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
-echo "${ECHO_T}$ac_cv_sys_large_files" >&6; }
-case $ac_cv_sys_large_files in #(
-  no | unknown) ;;
-  *)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
-;;
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
 esac
-rm -f conftest*
-  fi
-fi
 
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
 
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
 
-LIBTIFF_DOCDIR=\${prefix}/share/doc/${PACKAGE}-${LIBTIFF_VERSION}
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
 
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+        prev=$p
+        continue
+       fi
 
-# Check whether --with-docdir was given.
-if test "${with_docdir+set}" = set; then
-  withval=$with_docdir;
-fi
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
+       if test "$pre_test_object_deps_done" = no; then
+        case ${prev} in
+        -L | -R)
+          # Internal compiler library paths should come after those
+          # provided the user.  The postdeps already come after the
+          # user supplied libs so there is no need to process them.
+          if test -z "$compiler_lib_search_path_CXX"; then
+            compiler_lib_search_path_CXX="${prev}${p}"
+          else
+            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+          fi
+          ;;
+        # The "-l" case would never come before the object being
+        # linked, so don't bother handling this case.
+        esac
+       else
+        if test -z "$postdeps_CXX"; then
+          postdeps_CXX="${prev}${p}"
+        else
+          postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+        fi
+       fi
+       prev=
+       ;;
 
-if test "x$with_docdir" != "x" ; then
-  LIBTIFF_DOCDIR=$with_docdir
-fi
+    *.lto.$objext) ;; # Ignore GCC LTO objects
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+        pre_test_object_deps_done=yes
+        continue
+       fi
 
+       if test "$pre_test_object_deps_done" = no; then
+        if test -z "$predep_objects_CXX"; then
+          predep_objects_CXX="$p"
+        else
+          predep_objects_CXX="$predep_objects_CXX $p"
+        fi
+       else
+        if test -z "$postdep_objects_CXX"; then
+          postdep_objects_CXX="$p"
+        else
+          postdep_objects_CXX="$postdep_objects_CXX $p"
+        fi
+       fi
+       ;;
 
+    *) ;; # Ignore the rest.
 
+    esac
+  done
 
-# Check whether --enable-ccitt was given.
-if test "${enable_ccitt+set}" = set; then
-  enableval=$enable_ccitt; HAVE_CCITT=$enableval
+  # Clean up.
+  rm -f a.out a.exe
 else
-  HAVE_CCITT=yes
+  echo "libtool.m4: error: problem compiling CXX test program"
 fi
 
+$RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
-if test "$HAVE_CCITT" = "yes" ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define CCITT_SUPPORT 1
-_ACEOF
-
-fi
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
 
-# Check whether --enable-packbits was given.
-if test "${enable_packbits+set}" = set; then
-  enableval=$enable_packbits; HAVE_PACKBITS=$enableval
-else
-  HAVE_PACKBITS=yes
-fi
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
 
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
 
-if test "$HAVE_PACKBITS" = "yes" ; then
+solaris*)
+  case $cc_basename in
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
 
-cat >>confdefs.h <<\_ACEOF
-#define PACKBITS_SUPPORT 1
-_ACEOF
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
 
-fi
 
-# Check whether --enable-lzw was given.
-if test "${enable_lzw+set}" = set; then
-  enableval=$enable_lzw; HAVE_LZW=$enableval
-else
-  HAVE_LZW=yes
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
 fi
 
 
-if test "$HAVE_LZW" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define LZW_SUPPORT 1
-_ACEOF
 
-fi
 
-# Check whether --enable-thunder was given.
-if test "${enable_thunder+set}" = set; then
-  enableval=$enable_thunder; HAVE_THUNDER=$enableval
-else
-  HAVE_THUNDER=yes
-fi
 
 
-if test "$HAVE_THUNDER" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define THUNDER_SUPPORT 1
-_ACEOF
 
-fi
 
-HAVE_NEXT=yes
 
-# Check whether --enable-next was given.
-if test "${enable_next+set}" = set; then
-  enableval=$enable_next; HAVE_NEXT=$enableval
-else
-  HAVE_NEXT=yes
-fi
 
 
-if test "$HAVE_NEXT" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define NEXT_SUPPORT 1
-_ACEOF
 
-fi
 
-# Check whether --enable-logluv was given.
-if test "${enable_logluv+set}" = set; then
-  enableval=$enable_logluv; HAVE_LOGLUV=$enableval
-else
-  HAVE_LOGLUV=yes
-fi
 
 
-if test "$HAVE_LOGLUV" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define LOGLUV_SUPPORT 1
-_ACEOF
 
-fi
 
 
-# Check whether --enable-mdi was given.
-if test "${enable_mdi+set}" = set; then
-  enableval=$enable_mdi; HAVE_MDI=$enableval
-else
-  HAVE_MDI=yes
-fi
 
 
-if test "$HAVE_MDI" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define MDI_SUPPORT 1
-_ACEOF
 
-fi
 
 
-HAVE_ZLIB=no
 
-# Check whether --enable-zlib was given.
-if test "${enable_zlib+set}" = set; then
-  enableval=$enable_zlib;
-fi
 
 
-# Check whether --with-zlib-include-dir was given.
-if test "${with_zlib_include_dir+set}" = set; then
-  withval=$with_zlib_include_dir;
-fi
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
 
 
-# Check whether --with-zlib-lib-dir was given.
-if test "${with_zlib_lib_dir+set}" = set; then
-  withval=$with_zlib_lib_dir;
-fi
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
 
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+       # AIX 5 now supports IA64 processor
+       lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
 
-if test "x$enable_zlib" != "xno" ; then
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
 
-  if test "x$with_zlib_lib_dir" != "x" ; then
-    LDFLAGS="-L$with_zlib_lib_dir $LDFLAGS"
-  fi
-
-  { echo "$as_me:$LINENO: checking for inflateEnd in -lz" >&5
-echo $ECHO_N "checking for inflateEnd in -lz... $ECHO_C" >&6; }
-if test "${ac_cv_lib_z_inflateEnd+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lz  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+       lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+       ;;
+      *)
+       lt_prog_compiler_pic_CXX='-fPIC'
+       ;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+       # All AIX code is PIC.
+       if test "$host_cpu" = ia64; then
+         # AIX 5 now supports IA64 processor
+         lt_prog_compiler_static_CXX='-Bstatic'
+       else
+         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+       fi
+       ;;
+      chorus*)
+       case $cc_basename in
+       cxch68*)
+         # Green Hills C++ Compiler
+         # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+         ;;
+       esac
+       ;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+       # This hack is so that the source file can tell whether it is being
+       # built for inclusion in a dll (and should export symbols for example).
+       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+       ;;
+      dgux*)
+       case $cc_basename in
+         ec++*)
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         ghcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      freebsd* | dragonfly*)
+       # FreeBSD uses GNU C++
+       ;;
+      hpux9* | hpux10* | hpux11*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+           if test "$host_cpu" != ia64; then
+             lt_prog_compiler_pic_CXX='+Z'
+           fi
+           ;;
+         aCC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+           case $host_cpu in
+           hppa*64*|ia64*)
+             # +Z the default
+             ;;
+           *)
+             lt_prog_compiler_pic_CXX='+Z'
+             ;;
+           esac
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      interix*)
+       # This is c89, which is MS Visual C++ (no shared libs)
+       # Anyone wants to do a port?
+       ;;
+      irix5* | irix6* | nonstopux*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_static_CXX='-non_shared'
+           # CC pic flag -KPIC is the default.
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+       case $cc_basename in
+         KCC*)
+           # KAI C++ Compiler
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           ;;
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-fPIC'
+           lt_prog_compiler_static_CXX='-static'
+           ;;
+         pgCC* | pgcpp*)
+           # Portland Group C++ compiler
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-fpic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         cxx*)
+           # Compaq C++
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-qpic'
+           lt_prog_compiler_static_CXX='-qstaticlink'
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             lt_prog_compiler_pic_CXX='-KPIC'
+             lt_prog_compiler_static_CXX='-Bstatic'
+             lt_prog_compiler_wl_CXX='-Qoption ld '
+             ;;
+           esac
+           ;;
+       esac
+       ;;
+      lynxos*)
+       ;;
+      m88k*)
+       ;;
+      mvs*)
+       case $cc_basename in
+         cxx*)
+           lt_prog_compiler_pic_CXX='-W c,exportall'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      netbsd*)
+       ;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+       case $cc_basename in
+         KCC*)
+           lt_prog_compiler_wl_CXX='--backend -Wl,'
+           ;;
+         RCC*)
+           # Rational C++ 2.4.1
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         cxx*)
+           # Digital/Compaq C++
+           lt_prog_compiler_wl_CXX='-Wl,'
+           # Make sure the PIC flag is empty.  It appears that all Alpha
+           # Linux and Compaq Tru64 Unix objects are PIC.
+           lt_prog_compiler_pic_CXX=
+           lt_prog_compiler_static_CXX='-non_shared'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      psos*)
+       ;;
+      solaris*)
+       case $cc_basename in
+         CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           lt_prog_compiler_wl_CXX='-Qoption ld '
+           ;;
+         gcx*)
+           # Green Hills C++ Compiler
+           lt_prog_compiler_pic_CXX='-PIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sunos4*)
+       case $cc_basename in
+         CC*)
+           # Sun C++ 4.x
+           lt_prog_compiler_pic_CXX='-pic'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+         lcc*)
+           # Lucid
+           lt_prog_compiler_pic_CXX='-pic'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+       case $cc_basename in
+         CC*)
+           lt_prog_compiler_wl_CXX='-Wl,'
+           lt_prog_compiler_pic_CXX='-KPIC'
+           lt_prog_compiler_static_CXX='-Bstatic'
+           ;;
+       esac
+       ;;
+      tandem*)
+       case $cc_basename in
+         NCC*)
+           # NonStop-UX NCC 3.20
+           lt_prog_compiler_pic_CXX='-KPIC'
+           ;;
+         *)
+           ;;
+       esac
+       ;;
+      vxworks*)
+       ;;
+      *)
+       lt_prog_compiler_can_build_shared_CXX=no
+       ;;
+    esac
+  fi
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char inflateEnd ();
-int
-main ()
-{
-return inflateEnd ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_z_inflateEnd=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_z_inflateEnd=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateEnd" >&5
-echo "${ECHO_T}$ac_cv_lib_z_inflateEnd" >&6; }
-if test $ac_cv_lib_z_inflateEnd = yes; then
-  zlib_lib=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+if ${lt_cv_prog_compiler_pic_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  zlib_lib=no
+  lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; }
+lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX
 
-  if test "$zlib_lib" = "no" -a "x$with_zlib_lib_dir" != "x"; then
-    { { echo "$as_me:$LINENO: error: Zlib library not found at $with_zlib_lib_dir" >&5
-echo "$as_me: error: Zlib library not found at $with_zlib_lib_dir" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
 
-  if test "x$with_zlib_include_dir" != "x" ; then
-    CPPFLAGS="-I$with_zlib_include_dir $CPPFLAGS"
-  fi
-  if test "${ac_cv_header_zlib_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for zlib.h" >&5
-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_zlib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking zlib.h usability" >&5
-echo $ECHO_N "checking zlib.h 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 <zlib.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
 
-       ac_header_compiler=no
 fi
 
-rm -f core 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 zlib.h presence" >&5
-echo $ECHO_N "checking zlib.h 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 <zlib.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.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: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: zlib.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: zlib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## -------------------------------------- ##
-## Report this to tiff@lists.maptools.org ##
-## -------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for zlib.h" >&5
-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_zlib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_header_zlib_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5
-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; }
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
 
 fi
-if test $ac_cv_header_zlib_h = yes; then
-  zlib_h=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
 else
-  zlib_h=no
+    lt_prog_compiler_static_CXX=
 fi
 
 
-  if test "$zlib_h" = "no" -a "x$with_zlib_include_dir" != "x" ; then
-    { { echo "$as_me:$LINENO: error: Zlib headers not found at $with_zlib_include_dir" >&5
-echo "$as_me: error: Zlib headers not found at $with_zlib_include_dir" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
 
-  if test "$zlib_lib" = "yes" -a "$zlib_h" = "yes" ; then
-    HAVE_ZLIB=yes
-  fi
 
-fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-if test "$HAVE_ZLIB" = "yes" ; then
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
-cat >>confdefs.h <<\_ACEOF
-#define ZIP_SUPPORT 1
-_ACEOF
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
-  LIBS="-lz $LIBS"
 
-  if test "$HAVE_RPATH" = "yes" -a "x$with_zlib_lib_dir" != "x" ; then
-    LIBDIR="-R $with_zlib_lib_dir $LIBDIR"
-  fi
 
-fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
 
-# Check whether --enable-pixarlog was given.
-if test "${enable_pixarlog+set}" = set; then
-  enableval=$enable_pixarlog; HAVE_PIXARLOG=$enableval
-else
-  HAVE_PIXARLOG=yes
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
-if test "$HAVE_ZLIB" = "yes" -a "$HAVE_PIXARLOG" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define PIXARLOG_SUPPORT 1
-_ACEOF
 
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
 else
-  HAVE_PIXARLOG=no
+  need_locks=no
 fi
 
 
-HAVE_JPEG=no
-
-# Check whether --enable-jpeg was given.
-if test "${enable_jpeg+set}" = set; then
-  enableval=$enable_jpeg;
-fi
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
 
-# Check whether --with-jpeg-include-dir was given.
-if test "${with_jpeg_include_dir+set}" = set; then
-  withval=$with_jpeg_include_dir;
-fi
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+      exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'
+      ;;
+    esac
+    ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+    ;;
+  esac
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
 
-# Check whether --with-jpeg-lib-dir was given.
-if test "${with_jpeg_lib_dir+set}" = set; then
-  withval=$with_jpeg_lib_dir;
-fi
+with_gnu_ld_CXX=$with_gnu_ld
 
 
-if test "x$enable_jpeg" != "xno" ; then
 
-  if test "x$with_jpeg_lib_dir" != "x" ; then
-    LDFLAGS="-L$with_jpeg_lib_dir $LDFLAGS"
 
-  fi
 
-  { echo "$as_me:$LINENO: checking for jpeg_read_scanlines in -ljpeg" >&5
-echo $ECHO_N "checking for jpeg_read_scanlines in -ljpeg... $ECHO_C" >&6; }
-if test "${ac_cv_lib_jpeg_jpeg_read_scanlines+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ljpeg  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  $RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char jpeg_read_scanlines ();
-int
-main ()
-{
-return jpeg_read_scanlines ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_link") 2>conftest.er1
+       if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
   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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_jpeg_jpeg_read_scanlines=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$lt_prog_compiler_wl_CXX
+         pic_flag=$lt_prog_compiler_pic_CXX
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+         allow_undefined_flag_CXX=
+         if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+         then
+           lt_cv_archive_cmds_need_lc_CXX=no
+         else
+           lt_cv_archive_cmds_need_lc_CXX=yes
+         fi
+         allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
 
-       ac_cv_lib_jpeg_jpeg_read_scanlines=no
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_jpeg_read_scanlines" >&5
-echo "${ECHO_T}$ac_cv_lib_jpeg_jpeg_read_scanlines" >&6; }
-if test $ac_cv_lib_jpeg_jpeg_read_scanlines = yes; then
-  jpeg_lib=yes
-else
-  jpeg_lib=no
-fi
 
-  if test "$jpeg_lib" = "no" -a "x$with_jpeg_lib_dir" != "x" ; then
-    { { echo "$as_me:$LINENO: error: IJG JPEG library not found at $with_jpeg_lib_dir" >&5
-echo "$as_me: error: IJG JPEG library not found at $with_jpeg_lib_dir" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
 
-  if test "x$with_jpeg_include_dir" != "x" ; then
-    CPPFLAGS="-I$with_jpeg_include_dir $CPPFLAGS"
-  fi
-  if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  { echo "$as_me:$LINENO: checking for jpeglib.h" >&5
-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; }
-else
-  # Is the header compilable?
-{ echo "$as_me:$LINENO: checking jpeglib.h usability" >&5
-echo $ECHO_N "checking jpeglib.h 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 <jpeglib.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core 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 jpeglib.h presence" >&5
-echo $ECHO_N "checking jpeglib.h 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 <jpeglib.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.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: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: jpeglib.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: jpeglib.h: proceeding with the compiler's result" >&2;}
-    ac_header_preproc=yes
-    ;;
-  no:yes:* )
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: present but cannot be compiled" >&5
-echo "$as_me: WARNING: jpeglib.h: present but cannot be compiled" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: jpeglib.h:     check for missing prerequisite headers?" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: jpeglib.h: see the Autoconf documentation" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: jpeglib.h:     section \"Present But Cannot Be Compiled\"" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: jpeglib.h: proceeding with the preprocessor's result" >&2;}
-    { echo "$as_me:$LINENO: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take precedence" >&2;}
-    ( cat <<\_ASBOX
-## -------------------------------------- ##
-## Report this to tiff@lists.maptools.org ##
-## -------------------------------------- ##
-_ASBOX
-     ) | sed "s/^/$as_me: WARNING:     /" >&2
-    ;;
-esac
-{ echo "$as_me:$LINENO: checking for jpeglib.h" >&5
-echo $ECHO_N "checking for jpeglib.h... $ECHO_C" >&6; }
-if test "${ac_cv_header_jpeglib_h+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_cv_header_jpeglib_h=$ac_header_preproc
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_header_jpeglib_h" >&5
-echo "${ECHO_T}$ac_cv_header_jpeglib_h" >&6; }
 
-fi
-if test $ac_cv_header_jpeglib_h = yes; then
-  jpeg_h=yes
-else
-  jpeg_h=no
-fi
 
 
-  if test "$jpeg_h" = "no" -a "x$with_jpeg_include_dir" != "x" ; then
-    { { echo "$as_me:$LINENO: error: IJG JPEG library headers not found at $with_jpeg_include_dir" >&5
-echo "$as_me: error: IJG JPEG library headers not found at $with_jpeg_include_dir" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
 
-  if test "$jpeg_lib" = "yes" -a "$jpeg_h" = "yes" ; then
-    HAVE_JPEG=yes
-  fi
 
-fi
 
-if test "$HAVE_JPEG" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define JPEG_SUPPORT 1
-_ACEOF
 
-  LIBS="-ljpeg $LIBS"
 
-  if test "$HAVE_RPATH" = "yes" -a "x$with_jpeg_lib_dir" != "x" ; then
-    LIBDIR="-R $with_jpeg_lib_dir $LIBDIR"
-  fi
 
-fi
 
 
-# Check whether --enable-old-jpeg was given.
-if test "${enable_old_jpeg+set}" = set; then
-  enableval=$enable_old_jpeg; HAVE_OJPEG=$enableval
-else
-  HAVE_OJPEG=no
-fi
 
 
-if test "$HAVE_JPEG" = "yes" -a "$HAVE_OJPEG" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define OJPEG_SUPPORT 1
-_ACEOF
 
-else
-  HAVE_OJPEG=no
-fi
 
 
-# Check whether --enable-cxx was given.
-if test "${enable_cxx+set}" = set; then
-  enableval=$enable_cxx; HAVE_CXX=$enableval
-else
-  HAVE_CXX=yes
-fi
 
 
-if test "$HAVE_CXX" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define CXX_SUPPORT 1
-_ACEOF
 
-else
-  HAVE_CXX=no
-fi
 
 
 
-if test "$HAVE_CXX" = "yes"; then
-  HAVE_CXX_TRUE=
-  HAVE_CXX_FALSE='#'
-else
-  HAVE_CXX_TRUE='#'
-  HAVE_CXX_FALSE=
-fi
 
 
 
-HAVE_OPENGL=no
 
-{ echo "$as_me:$LINENO: checking for X" >&5
-echo $ECHO_N "checking for X... $ECHO_C" >&6; }
 
 
-# Check whether --with-x was given.
-if test "${with_x+set}" = set; then
-  withval=$with_x;
-fi
 
-# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
-if test "x$with_x" = xno; then
-  # The user explicitly disabled X.
-  have_x=disabled
-else
-  case $x_includes,$x_libraries in #(
-    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
-echo "$as_me: error: Cannot use X directory names containing '" >&2;}
-   { (exit 1); exit 1; }; };; #(
-    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  # One or both of the vars are not set, and there is no cached value.
-ac_x_includes=no ac_x_libraries=no
-rm -f -r conftest.dir
-if mkdir conftest.dir; then
-  cd conftest.dir
-  cat >Imakefile <<'_ACEOF'
-incroot:
-       @echo incroot='${INCROOT}'
-usrlibdir:
-       @echo usrlibdir='${USRLIBDIR}'
-libdir:
-       @echo libdir='${LIBDIR}'
-_ACEOF
-  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
-    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-    for ac_var in incroot usrlibdir libdir; do
-      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
-    done
-    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
-    for ac_extension in a so sl; do
-      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
-        test -f "$ac_im_libdir/libX11.$ac_extension"; then
-       ac_im_usrlibdir=$ac_im_libdir; break
-      fi
-    done
-    # Screen out bogus values from the imake configuration.  They are
-    # bogus both because they are the default anyway, and because
-    # using them would break gcc on systems where it needs fixed includes.
-    case $ac_im_incroot in
-       /usr/include) ac_x_includes= ;;
-       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
-    esac
-    case $ac_im_usrlibdir in
-       /usr/lib | /lib) ;;
-       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
-    esac
-  fi
-  cd ..
-  rm -f -r conftest.dir
-fi
 
-# Standard set of common directories for X headers.
-# Check X11 before X11Rn because it is often a symlink to the current release.
-ac_x_header_dirs='
-/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'
 
-if test "$ac_x_includes" = no; then
-  # Guess where to find include files, by looking for Xlib.h.
-  # First, try using that file with no special directory specified.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xlib.h>
-_ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  # We can compile using X headers with no special include directory.
-ac_x_includes=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-  for ac_dir in $ac_x_header_dirs; do
-  if test -r "$ac_dir/X11/Xlib.h"; then
-    ac_x_includes=$ac_dir
-    break
-  fi
-done
-fi
 
-rm -f conftest.err conftest.$ac_ext
-fi # $ac_x_includes = no
 
-if test "$ac_x_libraries" = no; then
-  # Check for the libraries.
-  # See if we find them without any special options.
-  # Don't add to $LIBS permanently.
-  ac_save_LIBS=$LIBS
-  LIBS="-lX11 $LIBS"
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <X11/Xlib.h>
-int
-main ()
-{
-XrmInitialize ()
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  LIBS=$ac_save_LIBS
-# We can link X programs with no special library path.
-ac_x_libraries=
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       LIBS=$ac_save_LIBS
-for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
-do
-  # 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/libX11.$ac_extension"; then
-      ac_x_libraries=$ac_dir
-      break 2
-    fi
-  done
-done
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi # $ac_x_libraries = no
 
-case $ac_x_includes,$ac_x_libraries in #(
-  no,* | *,no | *\'*)
-    # Didn't find X, or a directory has "'" in its name.
-    ac_cv_have_x="have_x=no";; #(
-  *)
-    # Record where we found X for the cache.
-    ac_cv_have_x="have_x=yes\
-       ac_x_includes='$ac_x_includes'\
-       ac_x_libraries='$ac_x_libraries'"
-esac
-fi
-;; #(
-    *) have_x=yes;;
-  esac
-  eval "$ac_cv_have_x"
-fi # $with_x != no
 
-if test "$have_x" != yes; then
-  { echo "$as_me:$LINENO: result: $have_x" >&5
-echo "${ECHO_T}$have_x" >&6; }
-  no_x=yes
-else
-  # If each of the values was on the command line, it overrides each guess.
-  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
-  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
-  # Update the cache value to reflect the command line values.
-  ac_cv_have_x="have_x=yes\
-       ac_x_includes='$x_includes'\
-       ac_x_libraries='$x_libraries'"
-  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
-fi
 
-if test "$no_x" = yes; then
-  # Not all programs may use this symbol, but it does not hurt to define it.
 
-cat >>confdefs.h <<\_ACEOF
-#define X_DISPLAY_MISSING 1
-_ACEOF
 
-  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
-else
-  if test -n "$x_includes"; then
-    X_CFLAGS="$X_CFLAGS -I$x_includes"
-  fi
 
-  # It would also be nice to do this for all -L options, not just this one.
-  if test -n "$x_libraries"; then
-    X_LIBS="$X_LIBS -L$x_libraries"
-    # For Solaris; some versions of Sun CC require a space after -R and
-    # others require no space.  Words are not sufficient . . . .
-    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
-echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
-    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
-    ac_xsave_c_werror_flag=$ac_c_werror_flag
-    ac_c_werror_flag=yes
-    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 { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-       X_LIBS="$X_LIBS -R$x_libraries"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       LIBS="$ac_xsave_LIBS -R $x_libraries"
-       cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
 
-int
-main ()
-{
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  { echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6; }
-         X_LIBS="$X_LIBS -R $x_libraries"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
 
-       { echo "$as_me:$LINENO: result: neither works" >&5
-echo "${ECHO_T}neither works" >&6; }
-fi
+case $host_os in
+aix3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    ac_c_werror_flag=$ac_xsave_c_werror_flag
-    LIBS=$ac_xsave_LIBS
+aix[4-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$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<name>.so
+      # instead of lib<name>.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
+  ;;
 
-  # Check for system-dependent libraries X programs must link with.
-  # Do this before checking for the system-independent R6 libraries
-  # (-lICE), since we may need -lsocket or whatever for X linking.
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; 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'
+    ;;
+  esac
+  ;;
 
-  if test "$ISC" = yes; then
-    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
-  else
-    # Martyn Johnson says this is needed for Ultrix, if the X
-    # libraries were built with DECnet support.  And Karl Berry says
-    # the Alpha needs dnet_stub (dnet does not exist).
-    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char XOpenDisplay ();
-int
-main ()
-{
-return XOpenDisplay ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet  $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 GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dnet_ntoa ();
-int
-main ()
-{
-return dnet_ntoa ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dnet_dnet_ntoa=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_dnet_dnet_ntoa=no
-fi
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
-fi
+bsdi[45]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
 
-    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
-      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
-echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
-if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldnet_stub  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char dnet_ntoa ();
-int
-main ()
-{
-return dnet_ntoa ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_dnet_stub_dnet_ntoa=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
 
-       ac_cv_lib_dnet_stub_dnet_ntoa=no
-fi
+    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}'
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
-echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
-if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
-fi
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    dynamic_linker='Win32 ld.exe'
+    ;;
 
-    fi
-fi
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    LIBS="$ac_xsave_LIBS"
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
 
-    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
-    # to get the SysV transport functions.
-    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
-    # needs -lnsl.
-    # The nsl library prevents programs from opening the X display
-    # on Irix 5.2, according to T.E. Dickey.
-    # The functions gethostbyname, getservbyname, and inet_addr are
-    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
-    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
-echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
-if test "${ac_cv_func_gethostbyname+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 gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define gethostbyname innocuous_gethostbyname
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
+    ;;
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char gethostbyname (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+  *)
+    # Assume MSVC wrapper
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
+    ;;
+  esac
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
 
-#undef gethostbyname
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-/* 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_gethostbyname || defined __stub___gethostbyname
-choke me
-#endif
+dgux*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  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
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
 
-       ac_cv_func_gethostbyname=no
-fi
+gnu*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
 
-    if test $ac_cv_func_gethostbyname = no; then
-      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
-echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
-if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lnsl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_nsl_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+interix[3-9]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-       ac_cv_lib_nsl_gethostbyname=no
-fi
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+       if test "$lt_cv_prog_gnu_ld" = yes; then
+               version_type=linux # correct to gnu/linux during the next big refactor
+       else
+               version_type=irix
+       fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
-if test $ac_cv_lib_nsl_gethostbyname = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
-fi
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
 
-      if test $ac_cv_lib_nsl_gethostbyname = no; then
-       { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
-echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
-if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+        LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char gethostbyname ();
 int
 main ()
 {
-return gethostbyname ();
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_bsd_gethostbyname=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_bsd_gethostbyname=no
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
-echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
-if test $ac_cv_lib_bsd_gethostbyname = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
 fi
 
-      fi
-    fi
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
 
-    # lieder@skyler.mavd.honeywell.com says without -lsocket,
-    # socket/setsockopt and other routines are undefined under SCO ODT
-    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
-    # on later versions), says Simon Leinen: it contains gethostby*
-    # variants that don't use the name server (or something).  -lsocket
-    # must be given before -lnsl if both are needed.  We assume that
-    # if connect needs -lnsl, so does gethostbyname.
-    { echo "$as_me:$LINENO: checking for connect" >&5
-echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
-if test "${ac_cv_func_connect+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 connect to an innocuous variant, in case <limits.h> declares connect.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define connect innocuous_connect
+  # 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
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char connect (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+  # 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'
+  ;;
 
-#undef connect
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char connect ();
-/* 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_connect || defined __stub___connect
-choke me
-#endif
+newsos6)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
 
-int
-main ()
-{
-return connect ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_connect=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
 
-       ac_cv_func_connect=no
-fi
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  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
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
-echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
 
-    if test $ac_cv_func_connect = no; then
-      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
-echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
-if test "${ac_cv_lib_socket_connect+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+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"
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char connect ();
-int
-main ()
-{
-return connect ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_socket_connect=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+rdos*)
+  dynamic_linker=no
+  ;;
 
-       ac_cv_lib_socket_connect=no
-fi
+solaris*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
-echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
-if test $ac_cv_lib_socket_connect = yes; then
-  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
-fi
+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
+  ;;
 
-    fi
+sysv4 | sysv4.3*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
 
-    # Guillermo Gomez says -lposix is necessary on A/UX.
-    { echo "$as_me:$LINENO: checking for remove" >&5
-echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
-if test "${ac_cv_func_remove+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 remove to an innocuous variant, in case <limits.h> declares remove.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define remove innocuous_remove
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux # correct to gnu/linux during the next big refactor
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char remove (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-#undef remove
+uts4*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char remove ();
-/* 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_remove || defined __stub___remove
-choke me
-#endif
-
-int
-main ()
-{
-return remove ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+*)
+  dynamic_linker=no
+  ;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_remove=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
 
-       ac_cv_func_remove=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
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
-echo "${ECHO_T}$ac_cv_func_remove" >&6; }
 
-    if test $ac_cv_func_remove = no; then
-      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
-echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
-if test "${ac_cv_lib_posix_remove+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lposix  $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 GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char remove ();
-int
-main ()
-{
-return remove ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_posix_remove=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cv_lib_posix_remove=no
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
-echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
-if test $ac_cv_lib_posix_remove = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; 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
 
-    fi
 
-    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
-    { echo "$as_me:$LINENO: checking for shmat" >&5
-echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
-if test "${ac_cv_func_shmat+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 shmat to an innocuous variant, in case <limits.h> declares shmat.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shmat innocuous_shmat
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shmat (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
 
-#undef shmat
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char shmat ();
-/* 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_shmat || defined __stub___shmat
-choke me
-#endif
 
-int
-main ()
-{
-return shmat ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_func_shmat=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
-       ac_cv_func_shmat=no
+
+# Enable support for silent build rules
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
-echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+AM_BACKSLASH='\'
 
-    if test $ac_cv_func_shmat = no; then
-      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
-echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
-if test "${ac_cv_lib_ipc_shmat+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+case "${host_os}" in
+    cygwin* | mingw32* | beos* | darwin*)
+        ;;
+    *)
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sin in -lm" >&5
+$as_echo_n "checking for sin in -lm... " >&6; }
+if ${ac_cv_lib_m_sin+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lipc  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 /* Override any GCC internal prototype to avoid an error.
@@ -15540,1815 +16108,1302 @@ cat >>conftest.$ac_ext <<_ACEOF
 #ifdef __cplusplus
 extern "C"
 #endif
-char shmat ();
+char sin ();
 int
 main ()
 {
-return shmat ();
+return sin ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_ipc_shmat=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_sin=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cv_lib_ipc_shmat=no
+  ac_cv_lib_m_sin=no
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
+rm -f core 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_ipc_shmat" >&5
-echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
-if test $ac_cv_lib_ipc_shmat = yes; then
-  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_sin" >&5
+$as_echo "$ac_cv_lib_m_sin" >&6; }
+if test "x$ac_cv_lib_m_sin" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
 fi
 
-    fi
-  fi
+        ;;
+esac
 
-  # Check for libraries that X11R6 Xt/Xaw programs need.
-  ac_save_LDFLAGS=$LDFLAGS
-  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
-  # 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.
-  # John Interrante, Karl Berry
-  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
-echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
-if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lICE $X_EXTRA_LIBS $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+tiff_libs_private=
+
+
+for ac_header in assert.h fcntl.h io.h limits.h malloc.h search.h sys/time.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
+if ${ac_cv_c_const+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char IceConnectionNumber ();
 int
 main ()
 {
-return IceConnectionNumber ();
+
+#ifndef __cplusplus
+  /* Ultrix mips cc rejects this sort of thing.  */
+  typedef int charset[2];
+  const charset cs = { 0, 0 };
+  /* SunOS 4.1.1 cc rejects this.  */
+  char const *const *pcpcc;
+  char **ppc;
+  /* NEC SVR4.0.2 mips cc rejects this.  */
+  struct point {int x, y;};
+  static struct point const zero = {0,0};
+  /* AIX XL C 1.02.0.0 rejects this.
+     It does not let you subtract one const X* pointer from another in
+     an arm of an if-expression whose if-part is not a constant
+     expression */
+  const char *g = "string";
+  pcpcc = &g + (g ? g-g : 0);
+  /* HPUX 7.0 cc rejects these. */
+  ++pcpcc;
+  ppc = (char**) pcpcc;
+  pcpcc = (char const *const *) ppc;
+  { /* SCO 3.2v4 cc rejects this sort of thing.  */
+    char tx;
+    char *t = &tx;
+    char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+    *t++ = 0;
+    if (s) return 0;
+  }
+  { /* Someone thinks the Sun supposedly-ANSI compiler will reject this.  */
+    int x[] = {25, 17};
+    const int *foo = &x[0];
+    ++foo;
+  }
+  { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+    typedef const int *iptr;
+    iptr p = 0;
+    ++p;
+  }
+  { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+       "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+    struct s { int j; const int *ap[3]; } bx;
+    struct s *b = &bx; b->j = 5;
+  }
+  { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+    const int foo = 10;
+    if (!foo) return 0;
+  }
+  return !cs[0] && !zero.x;
+#endif
+
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ac_cv_lib_ICE_IceConnectionNumber=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_const=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_c_const=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+$as_echo "$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+$as_echo "#define const /**/" >>confdefs.h
 
-       ac_cv_lib_ICE_IceConnectionNumber=no
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
-echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
-if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
-  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
 
-  LDFLAGS=$ac_save_LDFLAGS
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
 
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+              not a universal capable compiler
+            #endif
+            typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+       # Check for potential -arch flags.  It is not universal unless
+       # there are at least two -arch flags with different values.
+       ac_arch=
+       ac_prev=
+       for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+        if test -n "$ac_prev"; then
+          case $ac_word in
+            i?86 | x86_64 | ppc | ppc64)
+              if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+                ac_arch=$ac_word
+              else
+                ac_cv_c_bigendian=universal
+                break
+              fi
+              ;;
+          esac
+          ac_prev=
+        elif test "x$ac_word" = "x-arch"; then
+          ac_prev=arch
+        fi
+       done
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+            #include <sys/param.h>
 
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+                    && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+                    && LITTLE_ENDIAN)
+             bogus endian macros
+            #endif
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+               #include <sys/param.h>
 
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+                not big endian
+               #endif
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.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
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+             bogus endian macros
+            #endif
 
-acx_pthread_ok=no
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
 
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+                not big endian
+               #endif
 
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        { echo "$as_me:$LINENO: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-echo $ECHO_N "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... $ECHO_C" >&6; }
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+  ;
+  return 0;
+}
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+short int ascii_mm[] =
+                 { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+               short int ascii_ii[] =
+                 { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+               int use_ascii (int i) {
+                 return ascii_mm[i] + ascii_ii[i];
+               }
+               short int ebcdic_ii[] =
+                 { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+               short int ebcdic_mm[] =
+                 { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+               int use_ebcdic (int i) {
+                 return ebcdic_mm[i] + ebcdic_ii[i];
+               }
+               extern int foo;
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char pthread_join ();
 int
 main ()
 {
-return pthread_join ();
+return use_ascii (foo) == use_ebcdic (foo);
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  acx_pthread_ok=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+             ac_cv_c_bigendian=yes
+           fi
+           if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+             if test "$ac_cv_c_bigendian" = unknown; then
+               ac_cv_c_bigendian=no
+             else
+               # finding both strings is unlikely to happen, but who knows?
+               ac_cv_c_bigendian=unknown
+             fi
+           fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
 
+            /* Are we little or big endian?  From Harbison&Steele.  */
+            union
+            {
+              long int l;
+              char c[sizeof (long int)];
+            } u;
+            u.l = 1;
+            return u.c[sizeof (long int) - 1] == 1;
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-        { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
-echo "${ECHO_T}$acx_pthread_ok" >&6; }
-        if test x"$acx_pthread_ok" = xno; then
-                PTHREAD_LIBS=""
-                PTHREAD_CFLAGS=""
-        fi
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
+    fi
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
 
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
 
-case "${host_cpu}-${host_os}" in
-        *solaris*)
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
 
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthread or
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
+if test "x$ac_cv_type_off_t" = xyes; then :
 
-        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
-        ;;
-esac
+else
 
-if test x"$acx_pthread_ok" = xno; then
-for flag in $acx_pthread_flags; do
+cat >>confdefs.h <<_ACEOF
+#define off_t long int
+_ACEOF
 
-        case $flag in
-                none)
-                { echo "$as_me:$LINENO: checking whether pthreads work without any flags" >&5
-echo $ECHO_N "checking whether pthreads work without any flags... $ECHO_C" >&6; }
-                ;;
+fi
 
-                -*)
-                { echo "$as_me:$LINENO: checking whether pthreads work with $flag" >&5
-echo $ECHO_N "checking whether pthreads work with $flag... $ECHO_C" >&6; }
-                PTHREAD_CFLAGS="$flag"
-                ;;
+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
+if test "x$ac_cv_type_size_t" = xyes; then :
 
-               pthread-config)
-               # Extract the first word of "pthread-config", so it can be a program name with args.
-set dummy pthread-config; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_acx_pthread_config+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test -n "$acx_pthread_config"; then
-  ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_acx_pthread_config="yes"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
 
-  test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no"
-fi
-fi
-acx_pthread_config=$ac_cv_prog_acx_pthread_config
-if test -n "$acx_pthread_config"; then
-  { echo "$as_me:$LINENO: result: $acx_pthread_config" >&5
-echo "${ECHO_T}$acx_pthread_config" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
 fi
 
-
-               if test x"$acx_pthread_config" = xno; then continue; fi
-               PTHREAD_CFLAGS="`pthread-config --cflags`"
-               PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
-               ;;
-
-                *)
-                { echo "$as_me:$LINENO: checking for the pthreads library -l$flag" >&5
-echo $ECHO_N "checking for the pthreads library -l$flag... $ECHO_C" >&6; }
-                PTHREAD_LIBS="-l$flag"
-                ;;
-        esac
-
-        save_LIBS="$LIBS"
-        save_CFLAGS="$CFLAGS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
+$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
+if ${ac_cv_header_time+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <pthread.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+
 int
 main ()
 {
-pthread_t th; pthread_join(th, 0);
-                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
-                     pthread_create(0,0,0,0); pthread_cleanup_pop(0);
+if ((struct tm *) 0)
+return 0;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  acx_pthread_ok=yes
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_time=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
+  ac_cv_header_time=no
 fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
+$as_echo "$ac_cv_header_time" >&6; }
+if test $ac_cv_header_time = yes; then
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
-
-        { echo "$as_me:$LINENO: result: $acx_pthread_ok" >&5
-echo "${ECHO_T}$acx_pthread_ok" >&6; }
-        if test "x$acx_pthread_ok" = xyes; then
-                break;
-        fi
+$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
 
-        PTHREAD_LIBS=""
-        PTHREAD_CFLAGS=""
-done
 fi
 
-# Various other checks:
-if test "x$acx_pthread_ok" = xyes; then
-        save_LIBS="$LIBS"
-        LIBS="$PTHREAD_LIBS $LIBS"
-        save_CFLAGS="$CFLAGS"
-        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
-       { echo "$as_me:$LINENO: checking for joinable pthread attribute" >&5
-echo $ECHO_N "checking for joinable pthread attribute... $ECHO_C" >&6; }
-       attr_name=unknown
-       for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-           cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5
+$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; }
+if ${ac_cv_struct_tm+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <pthread.h>
+#include <sys/types.h>
+#include <time.h>
+
 int
 main ()
 {
-int attr=$attr;
+struct tm tm;
+                                    int *p = &tm.tm_sec;
+                                    return !p;
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  attr_name=$attr; break
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_struct_tm=time.h
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  ac_cv_struct_tm=sys/time.h
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5
+$as_echo "$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
 
+$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h
 
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-       done
-        { echo "$as_me:$LINENO: result: $attr_name" >&5
-echo "${ECHO_T}$attr_name" >&6; }
-        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+
+
+# Obtain size of an 'signed short' and define as SIZEOF_SIGNED_SHORT
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of signed short" >&5
+$as_echo_n "checking size of signed short... " >&6; }
+if ${ac_cv_sizeof_signed_short+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (signed short))" "ac_cv_sizeof_signed_short"        "$ac_includes_default"; then :
+
+else
+  if test "$ac_cv_type_signed_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (signed short)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_signed_short=0
+   fi
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_signed_short" >&5
+$as_echo "$ac_cv_sizeof_signed_short" >&6; }
+
+
 
 cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
+#define SIZEOF_SIGNED_SHORT $ac_cv_sizeof_signed_short
 _ACEOF
 
-        fi
-
-        { echo "$as_me:$LINENO: checking if more special flags are required for pthreads" >&5
-echo $ECHO_N "checking if more special flags are required for pthreads... $ECHO_C" >&6; }
-        flag=no
-        case "${host_cpu}-${host_os}" in
-            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
-            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
-        esac
-        { echo "$as_me:$LINENO: result: ${flag}" >&5
-echo "${ECHO_T}${flag}" >&6; }
-        if test "x$flag" != xno; then
-            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
-        fi
 
-        LIBS="$save_LIBS"
-        CFLAGS="$save_CFLAGS"
 
-        # More AIX lossage: must compile with cc_r
-        # Extract the first word of "cc_r", so it can be a program name with args.
-set dummy cc_r; 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_PTHREAD_CC+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$PTHREAD_CC"; then
-  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+# Obtain size of an 'unsigned short' and define as SIZEOF_UNSIGNED_SHORT
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned short" >&5
+$as_echo_n "checking size of unsigned short... " >&6; }
+if ${ac_cv_sizeof_unsigned_short+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_PTHREAD_CC="cc_r"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned short))" "ac_cv_sizeof_unsigned_short"        "$ac_includes_default"; then :
 
-  test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}"
-fi
-fi
-PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
-if test -n "$PTHREAD_CC"; then
-  { echo "$as_me:$LINENO: result: $PTHREAD_CC" >&5
-echo "${ECHO_T}$PTHREAD_CC" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  if test "$ac_cv_type_unsigned_short" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (unsigned short)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_unsigned_short=0
+   fi
 fi
 
-
-else
-        PTHREAD_CC="$CC"
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_short" >&5
+$as_echo "$ac_cv_sizeof_unsigned_short" >&6; }
 
 
 
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_SHORT $ac_cv_sizeof_unsigned_short
+_ACEOF
 
 
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_pthread_ok" = xyes; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_PTHREAD 1
-_ACEOF
+# Obtain size of an 'signed int' and define as SIZEOF_SIGNED_INT
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of signed int" >&5
+$as_echo_n "checking size of signed int... " >&6; }
+if ${ac_cv_sizeof_signed_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (signed int))" "ac_cv_sizeof_signed_int"        "$ac_includes_default"; then :
 
-        :
 else
-        acx_pthread_ok=no
+  if test "$ac_cv_type_signed_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (signed int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_signed_int=0
+   fi
+fi
 
 fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_signed_int" >&5
+$as_echo "$ac_cv_sizeof_signed_int" >&6; }
 
 
 
-#
-# There isn't a reliable way to know we should use the Apple OpenGL framework
-# without a configure option.  A Mac OS X user may have installed an
-# alternative GL implementation (e.g., Mesa), which may or may not depend on X.
-#
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIGNED_INT $ac_cv_sizeof_signed_int
+_ACEOF
 
-# Check whether --with-apple-opengl-framework was given.
-if test "${with_apple_opengl_framework+set}" = set; then
-  withval=$with_apple_opengl_framework;
-fi
 
-if test "X$with_apple_opengl_framework" = "Xyes"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_APPLE_OPENGL_FRAMEWORK 1
-_ACEOF
+# Obtain size of an 'unsigned int' and define as SIZEOF_UNSIGNED_INT
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5
+$as_echo_n "checking size of unsigned int... " >&6; }
+if ${ac_cv_sizeof_unsigned_int+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int"        "$ac_includes_default"; then :
 
-  GL_LIBS="-framework OpenGL"
 else
-  ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+  if test "$ac_cv_type_unsigned_int" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (unsigned int)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_unsigned_int=0
+   fi
+fi
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5
+$as_echo "$ac_cv_sizeof_unsigned_int" >&6; }
 
-  { echo "$as_me:$LINENO: checking whether we are using the Microsoft C compiler" >&5
-echo $ECHO_N "checking whether we are using the Microsoft C compiler... $ECHO_C" >&6; }
-if test "${ax_cv_c_compiler_ms+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 _MSC_VER
-       choke me
-#endif
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ax_compiler_ms=yes
+
+
+
+# Obtain size of a 'signed long' and define as SIZEOF_SIGNED_LONG
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of signed long" >&5
+$as_echo_n "checking size of signed long... " >&6; }
+if ${ac_cv_sizeof_signed_long+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (signed long))" "ac_cv_sizeof_signed_long"        "$ac_includes_default"; then :
 
-       ax_compiler_ms=no
+else
+  if test "$ac_cv_type_signed_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (signed long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_signed_long=0
+   fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ax_cv_c_compiler_ms=$ax_compiler_ms
-
 fi
-{ echo "$as_me:$LINENO: result: $ax_cv_c_compiler_ms" >&5
-echo "${ECHO_T}$ax_cv_c_compiler_ms" >&6; }
-  if test X$ax_compiler_ms = Xno; then
-    GL_CFLAGS="${PTHREAD_CFLAGS}"
-    GL_LIBS="${PTHREAD_LIBS} -lm"
-  fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_signed_long" >&5
+$as_echo "$ac_cv_sizeof_signed_long" >&6; }
 
-  #
-  # Use x_includes and x_libraries if they have been set (presumably by
-  # AC_PATH_X).
-  #
-  if test "X$no_x" != "Xyes"; then
-    if test -n "$x_includes"; then
-      GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"
-    fi
-    if test -n "$x_libraries"; then
-      GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"
-    fi
-  fi
 
 
-for ac_header in windows.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  { echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&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>
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIGNED_LONG $ac_cv_sizeof_signed_long
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_header_compiler=yes
+
+
+
+# Obtain size of a 'unsigned long' and define as SIZEOF_UNSIGNED_LONG
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5
+$as_echo_n "checking size of unsigned long... " >&6; }
+if ${ac_cv_sizeof_unsigned_long+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long"        "$ac_includes_default"; then :
 
-       ac_header_compiler=no
+else
+  if test "$ac_cv_type_unsigned_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (unsigned long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_unsigned_long=0
+   fi
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5
+$as_echo "$ac_cv_sizeof_unsigned_long" >&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>
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
-        test ! -s conftest.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 tiff@lists.maptools.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 { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+# Obtain size of a 'long long' and define as SIZEOF_SIGNED_LONG_LONG.
+# If 'long long' is not supported then the value defined is zero.
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of signed long long" >&5
+$as_echo_n "checking size of signed long long... " >&6; }
+if ${ac_cv_sizeof_signed_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  eval "$as_ac_Header=\$ac_header_preproc"
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (signed long long))" "ac_cv_sizeof_signed_long_long"        "$ac_includes_default"; then :
 
+else
+  if test "$ac_cv_type_signed_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (signed long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_signed_long_long=0
+   fi
 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_signed_long_long" >&5
+$as_echo "$ac_cv_sizeof_signed_long_long" >&6; }
 
-done
 
 
-  { echo "$as_me:$LINENO: checking for OpenGL library" >&5
-echo $ECHO_N "checking for OpenGL library... $ECHO_C" >&6; }
-if test "${ax_cv_check_gl_libgl+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ax_cv_check_gl_libgl="no"
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lopengl32 -lGL"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_SIGNED_LONG_LONG $ac_cv_sizeof_signed_long_long
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-# if HAVE_WINDOWS_H && defined(_WIN32)
-#   include <windows.h>
-# endif
-# include <GL/gl.h>
-int
-main ()
-{
-glBegin(0)
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ax_cv_check_gl_libgl="${ax_try_lib}"; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
 
-fi
+# Obtain size of a 'unsigned long long' and define as
+# SIZEOF_UNSIGNED_LONG_LONG.  If 'unsigned long long' is not
+# supported then the value defined is zero.
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long long" >&5
+$as_echo_n "checking size of unsigned long long... " >&6; }
+if ${ac_cv_sizeof_unsigned_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long long))" "ac_cv_sizeof_unsigned_long_long"        "$ac_includes_default"; then :
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-  done
-  LIBS=${ax_save_LIBS}
-  CPPFLAGS=${ax_save_CPPFLAGS}
+else
+  if test "$ac_cv_type_unsigned_long_long" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (unsigned long long)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_unsigned_long_long=0
+   fi
 fi
-{ echo "$as_me:$LINENO: result: $ax_cv_check_gl_libgl" >&5
-echo "${ECHO_T}$ax_cv_check_gl_libgl" >&6; }
-
-  if test "X${ax_cv_check_gl_libgl}" = "Xno"; then
-    no_gl="yes"
-    GL_CFLAGS=""
-    GL_LIBS=""
-  else
-    GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"
-  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
 
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long_long" >&5
+$as_echo "$ac_cv_sizeof_unsigned_long_long" >&6; }
 
 
 
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_LONG_LONG $ac_cv_sizeof_unsigned_long_long
+_ACEOF
 
 
 
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+# Obtain the size of an 'unsigned char *' and define as
+# SIZEOF_UNSIGNED_CHAR_P.  Result is available in
+# ac_cv_sizeof_unsigned_char_p.
+# The cast to long int 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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned char *" >&5
+$as_echo_n "checking size of unsigned char *... " >&6; }
+if ${ac_cv_sizeof_unsigned_char_p+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned char *))" "ac_cv_sizeof_unsigned_char_p"        "$ac_includes_default"; then :
 
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  if test "$ac_cv_type_unsigned_char_p" = yes; then
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot compute sizeof (unsigned char *)
+See \`config.log' for more details" "$LINENO" 5; }
+   else
+     ac_cv_sizeof_unsigned_char_p=0
+   fi
 fi
 
-
-    test -n "$CXX" && break
-  done
 fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_char_p" >&5
+$as_echo "$ac_cv_sizeof_unsigned_char_p" >&6; }
 
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
-fi
 
 
-  test -n "$ac_ct_CXX" && break
-done
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_UNSIGNED_CHAR_P $ac_cv_sizeof_unsigned_char_p
+_ACEOF
 
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
-fi
 
-  fi
-fi
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed 8-bit type" >&5
+$as_echo_n "checking for signed 8-bit type... " >&6; }
+INT8_T='signed char'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INT8_T" >&5
+$as_echo "$INT8_T" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT8_T $INT8_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
 
-  ;
-  return 0;
-}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned 8-bit type" >&5
+$as_echo_n "checking for unsigned 8-bit type... " >&6; }
+UINT8_T='unsigned char'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UINT8_T" >&5
+$as_echo "$UINT8_T" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT8_T $UINT8_T
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; 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 core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed 16-bit type" >&5
+$as_echo_n "checking for signed 16-bit type... " >&6; }
+INT16_T='signed short'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INT16_T" >&5
+$as_echo "$INT16_T" >&6; }
 
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT16_T $INT16_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned 16-bit type" >&5
+$as_echo_n "checking for unsigned 16-bit type... " >&6; }
+UINT16_T='unsigned short'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UINT16_T" >&5
+$as_echo "$UINT16_T" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT16_T $UINT16_T
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       CXXFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed 32-bit type" >&5
+$as_echo_n "checking for signed 32-bit type... " >&6; }
+INT32_T='none'
+INT32_FORMAT='none'
+if test $ac_cv_sizeof_signed_int -eq 4
+then
+  INT32_T='signed int'
+  INT32_FORMAT='"%d"'
+elif test $ac_cv_sizeof_signed_long -eq 4
+then
+  INT32_T='signed long'
+  INT32_FORMAT='"%ld"'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INT32_T" >&5
+$as_echo "$INT32_T" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT32_T $INT32_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT32_FORMAT $INT32_FORMAT
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-       ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-        CXXFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned 32-bit type" >&5
+$as_echo_n "checking for unsigned 32-bit type... " >&6; }
+UINT32_T='none'
+UINT32_FORMAT='none'
+if test $ac_cv_sizeof_unsigned_int -eq 4
+then
+  UINT32_T='unsigned int'
+  UINT32_FORMAT='"%u"'
+elif test $ac_cv_sizeof_unsigned_long -eq 4
+then
+  UINT32_T='unsigned long'
+  UINT32_FORMAT='"%lu"'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UINT32_T" >&5
+$as_echo "$UINT32_T" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT32_T $UINT32_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT32_FORMAT $UINT32_FORMAT
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed 64-bit type" >&5
+$as_echo_n "checking for signed 64-bit type... " >&6; }
+INT64_T='none'
+INT64_FORMAT='none'
+if test $ac_cv_sizeof_signed_long -eq 8
+then
+  INT64_T='signed long'
+  INT64_FORMAT='"%ld"'
+elif test $ac_cv_sizeof_signed_long_long -eq 8
+then
+  INT64_T='signed long long'
+  case "${host_os}" in
+    mingw32*)
+      # MinGW32 understands 'long long', but uses printf from WIN32 CRT
+      INT64_FORMAT='"%I64d"'
+      ;;
+    *)
+      INT64_FORMAT='"%lld"'
+      ;;
+  esac
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INT64_T" >&5
+$as_echo "$INT64_T" >&6; }
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
-  fi
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT64_T $INT64_T
+_ACEOF
 
-depcc="$CXX"  am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
+cat >>confdefs.h <<_ACEOF
+#define TIFF_INT64_FORMAT $INT64_FORMAT
+_ACEOF
 
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned 64-bit type" >&5
+$as_echo_n "checking for unsigned 64-bit type... " >&6; }
+UINT64_T='none'
+UINT64_FORMAT='none'
+if test $ac_cv_sizeof_unsigned_long -eq 8
+then
+  UINT64_T='unsigned long'
+  UINT64_FORMAT='"%lu"'
+elif test $ac_cv_sizeof_unsigned_long_long -eq 8
+then
+  UINT64_T='unsigned long long'
+  case "${host_os}" in
+    mingw32*)
+      # MinGW32 understands 'unsigned long long', but uses printf from WIN32 CRT
+      UINT64_FORMAT='"%I64u"'
       ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
+    *)
+      UINT64_FORMAT='"%llu"'
+      ;;
+  esac
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $UINT64_T" >&5
+$as_echo "$UINT64_T" >&6; }
 
-fi
-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT64_T $UINT64_T
+_ACEOF
 
 
+cat >>confdefs.h <<_ACEOF
+#define TIFF_UINT64_FORMAT $UINT64_FORMAT
+_ACEOF
 
-if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
-else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
-fi
 
+# Determine TIFF equivalent of ssize_t
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for signed size type" >&5
+$as_echo_n "checking for signed size type... " >&6; }
+SSIZE_T='unknown'
+SSIZE_FORMAT='unknown'
+if test $ac_cv_sizeof_signed_long -eq $ac_cv_sizeof_unsigned_char_p
+then
+  SSIZE_T='signed long'
+  SSIZE_FORMAT='"%ld"'
+elif test $ac_cv_sizeof_signed_long_long -eq $ac_cv_sizeof_unsigned_char_p
+then
+  SSIZE_T='signed long long'
+  SSIZE_FORMAT='"%lld"'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SSIZE_T" >&5
+$as_echo "$SSIZE_T" >&6; }
 
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
-if test -z "$CXXCPP"; then
-  if test "${ac_cv_prog_CXXCPP+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-      # Double quotes because CXXCPP needs to be expanded
-    for CXXCPP in "$CXX -E" "/lib/cpp"
-    do
-      ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define TIFF_SSIZE_T $SSIZE_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-                    Syntax error
+
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_SSIZE_FORMAT $SSIZE_FORMAT
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       }; then
-  :
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-  # Broken: fails on valid input.
-continue
+
+# Determine the type to use for the difference between two pointers.
+# We will default to the POSIX ptrdiff_t if it is available, but will
+# be prepared for the case when it is not.
+PTRDIFF_T='unknown'
+PTRDIFF_FORMAT='"%ld"'
+ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+  PTRDIFF_T=ptrdiff_t
 fi
 
-rm -f conftest.err conftest.$ac_ext
+if test $PTRDIFF_T = unknown
+then
+  PTRDIFF_T=$SSIZE_T
+  PTRDIFF_FORMAT=$SSIZE_FORMAT
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pointer difference type" >&5
+$as_echo_n "checking for pointer difference type... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTRDIFF_T" >&5
+$as_echo "$PTRDIFF_T" >&6; }
 
-  # OK, works on sane cases.  Now check whether nonexistent headers
-  # can be detected and how.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
+cat >>confdefs.h <<_ACEOF
+#define TIFF_PTRDIFF_T $PTRDIFF_T
 _ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#include <ac_nonexistent.h>
+
+
+cat >>confdefs.h <<_ACEOF
+#define TIFF_PTRDIFF_FORMAT $PTRDIFF_FORMAT
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.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
+ac_fn_c_check_type "$LINENO" "int8" "ac_cv_type_int8" "
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+"
+if test "x$ac_cv_type_int8" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT8 1
+_ACEOF
+
 
-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
+ac_fn_c_check_type "$LINENO" "int16" "ac_cv_type_int16" "
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+"
+if test "x$ac_cv_type_int16" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT16 1
+_ACEOF
 
-    done
-    ac_cv_prog_CXXCPP=$CXXCPP
 
 fi
-  CXXCPP=$ac_cv_prog_CXXCPP
-else
-  ac_cv_prog_CXXCPP=$CXXCPP
-fi
-{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$CXXCPP" >&6; }
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
-  # Use a header file that comes with gcc, so configuring glibc
-  # with a fresh cross-compiler works.
-  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> exists even on freestanding compilers.
-  # On the NeXT, cc -E runs the code through the compiler's parser,
-  # not just through cpp. "Syntax error" is here to catch this case.
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
+ac_fn_c_check_type "$LINENO" "int32" "ac_cv_type_int32" "
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
 #endif
-                    Syntax error
+
+"
+if test "x$ac_cv_type_int32" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_INT32 1
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.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 nonexistent 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 <ac_nonexistent.h>
+for ac_func in floor isascii memmove memset mmap pow setmode sqrt strchr strrchr strstr strtol strtoull
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
 _ACEOF
-if { (ac_try="$ac_cpp conftest.$ac_ext"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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 && {
-        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
-        test ! -s conftest.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
+done
 
-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
-  :
+ac_fn_c_check_func "$LINENO" "getopt" "ac_cv_func_getopt"
+if test "x$ac_cv_func_getopt" = xyes; then :
+  $as_echo "#define HAVE_GETOPT 1" >>confdefs.h
+
 else
-  _lt_caught_CXX_error=yes
+  case " $LIBOBJS " in
+  *" getopt.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS getopt.$ac_objext"
+ ;;
+esac
+
 fi
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_fn_c_check_func "$LINENO" "strcasecmp" "ac_cv_func_strcasecmp"
+if test "x$ac_cv_func_strcasecmp" = xyes; then :
+  $as_echo "#define HAVE_STRCASECMP 1" >>confdefs.h
 
 else
-  _lt_caught_CXX_error=yes
+  case " $LIBOBJS " in
+  *" strcasecmp.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strcasecmp.$ac_objext"
+ ;;
+esac
+
 fi
 
 
+ac_fn_c_check_func "$LINENO" "strtoul" "ac_cv_func_strtoul"
+if test "x$ac_cv_func_strtoul" = xyes; then :
+  $as_echo "#define HAVE_STRTOUL 1" >>confdefs.h
 
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -z "$CXX"; then
-  if test -n "$CCC"; then
-    CXX=$CCC
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+  case " $LIBOBJS " in
+  *" strtoul.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtoul.$ac_objext"
+ ;;
+esac
 
 fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
-  { echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6; }
+
+
+ac_fn_c_check_func "$LINENO" "strtoull" "ac_cv_func_strtoull"
+if test "x$ac_cv_func_strtoull" = xyes; then :
+  $as_echo "#define HAVE_STRTOULL 1" >>confdefs.h
+
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+  case " $LIBOBJS " in
+  *" strtoull.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS strtoull.$ac_objext"
+ ;;
+esac
+
 fi
 
 
-    test -n "$CXX" && break
-  done
-fi
-if test -z "$CXX"; then
-  ac_ct_CXX=$CXX
-  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -n "$ac_ct_CXX"; then
-  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+ac_fn_c_check_func "$LINENO" "lfind" "ac_cv_func_lfind"
+if test "x$ac_cv_func_lfind" = xyes; then :
+  $as_echo "#define HAVE_LFIND 1" >>confdefs.h
+
 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
-    ac_cv_prog_ac_ct_CXX="$ac_prog"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-IFS=$as_save_IFS
+  case " $LIBOBJS " in
+  *" lfind.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS lfind.$ac_objext"
+ ;;
+esac
 
 fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
-  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6; }
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking native cpu bit order" >&5
+$as_echo_n "checking native cpu bit order... " >&6; }
+case "$host_cpu" in
+    i*86*|x86_64*)
+        HOST_FILLORDER=FILLORDER_LSB2MSB
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: lsb2msb" >&5
+$as_echo "lsb2msb" >&6; }
+       ;;
+    *)
+       HOST_FILLORDER=FILLORDER_MSB2LSB
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: msb2lsb" >&5
+$as_echo "msb2lsb" >&6; }
+        ;;
+esac
+
+cat >>confdefs.h <<_ACEOF
+#define HOST_FILLORDER $HOST_FILLORDER
+_ACEOF
+
+
+if test "$ac_cv_c_bigendian" = yes ; then
+    HOST_BIGENDIAN=1
 else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+    HOST_BIGENDIAN=0
 fi
 
+cat >>confdefs.h <<_ACEOF
+#define HOST_BIGENDIAN $HOST_BIGENDIAN
+_ACEOF
 
-  test -n "$ac_ct_CXX" && break
-done
 
-  if test "x$ac_ct_CXX" = x; then
-    CXX="g++"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&5
-echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
-whose name does not start with the host triplet.  If you think this
-configuration is useful to you, please write to autoconf@gnu.org." >&2;}
-ac_tool_warned=yes ;;
-esac
-    CXX=$ac_ct_CXX
-  fi
+#_POSIX_C_SOURCE=2
+#AC_DEFINE_UNQUOTED(_POSIX_C_SOURCE, $_POSIX_C_SOURCE, [Define this macro to a positive integer to control which POSIX functionality is made available.])
+
+HAVE_IEEEFP=1
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_IEEEFP $HAVE_IEEEFP
+_ACEOF
+
+
+
+# Check whether --enable-rpath was given.
+if test "${enable_rpath+set}" = set; then :
+  enableval=$enable_rpath; HAVE_RPATH=$enableval
+else
+  HAVE_RPATH=no
 fi
 
-  fi
+ if test "$HAVE_RPATH" = "yes"; then
+  HAVE_RPATH_TRUE=
+  HAVE_RPATH_FALSE='#'
+else
+  HAVE_RPATH_TRUE='#'
+  HAVE_RPATH_FALSE=
 fi
-# Provide some information about the compiler.
-echo "$as_me:$LINENO: checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (ac_try="$ac_compiler --version >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler --version >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -v >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -v >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-{ (ac_try="$ac_compiler -V >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compiler -V >&5") 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
 
-{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then :
+  enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
+if ${ac_cv_sys_largefile_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ac_cv_sys_largefile_CC=no
+     if test "$GCC" != yes; then
+       ac_save_CC=$CC
+       while :; do
+        # IRIX 6.2 and later do not support large files by default,
+        # so use the C compiler's -n32 option if that helps.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
 int
 main ()
 {
-#ifndef __GNUC__
-       choke me
-#endif
 
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_compiler_gnu=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_compiler_gnu=no
+        if ac_fn_c_try_compile "$LINENO"; then :
+  break
 fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
+rm -f core conftest.err conftest.$ac_objext
+        CC="$CC -n32"
+        if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_largefile_CC=' -n32'; break
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
-if test "${ac_cv_prog_cxx_g+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+rm -f core conftest.err conftest.$ac_objext
+        break
+       done
+       CC=$ac_save_CC
+       rm -f conftest.$ac_ext
+    fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+  if test "$ac_cv_sys_largefile_CC" != no; then
+    CC=$CC$ac_cv_sys_largefile_CC
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if ${ac_cv_sys_file_offset_bits+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
-   ac_cxx_werror_flag=yes
-   ac_cv_prog_cxx_g=no
-   CXXFLAGS="-g"
-   cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
 int
 main ()
 {
@@ -17357,36 +17412,22 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       CXXFLAGS=""
-      cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=no; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
 int
 main ()
 {
@@ -17395,37 +17436,43 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_file_offset_bits=64; break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ac_cv_sys_file_offset_bits=unknown
+  break
+done
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+case $ac_cv_sys_file_offset_bits in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+_ACEOF
+;;
 esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  :
+rm -rf conftest*
+  if test $ac_cv_sys_file_offset_bits = unknown; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
+if ${ac_cv_sys_large_files+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       ac_cxx_werror_flag=$ac_save_cxx_werror_flag
-        CXXFLAGS="-g"
-        cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  while :; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
 int
 main ()
 {
@@ -17434,3045 +17481,2008 @@ main ()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  ac_cv_prog_cxx_g=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=no; break
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+    We can't simply define LARGE_OFF_T to be 9223372036854775807,
+    since some C++ compilers masquerading as C compilers
+    incorrectly reject 9223372036854775807.  */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+  int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+                      && LARGE_OFF_T % 2147483647 == 1)
+                     ? 1 : -1];
+int
+main ()
+{
 
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_sys_large_files=1; break
 fi
-
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+  ac_cv_sys_large_files=unknown
+  break
+done
 fi
-{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
-if test "$ac_test_CXXFLAGS" = set; then
-  CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
-  if test "$GXX" = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-g"
-  fi
-else
-  if test "$GXX" = yes; then
-    CXXFLAGS="-O2"
-  else
-    CXXFLAGS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+$as_echo "$ac_cv_sys_large_files" >&6; }
+case $ac_cv_sys_large_files in #(
+  no | unknown) ;;
+  *)
+cat >>confdefs.h <<_ACEOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+_ACEOF
+;;
+esac
+rm -rf conftest*
   fi
+
+
 fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-depcc="$CXX"  am_compiler_list=
 
-{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
-echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
-if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
-  # We make a subdir and do the tests there.  Otherwise we can end up
-  # making bogus files that we don't know about and never remove.  For
-  # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
-  mkdir conftest.dir
-  # Copy depcomp to subdir because otherwise we won't find it if we're
-  # using a relative directory.
-  cp "$am_depcomp" conftest.dir
-  cd conftest.dir
-  # We will build objects and dependencies in a subdirectory because
-  # it helps to detect inapplicable dependency modes.  For instance
-  # both Tru64's cc and ICC support -MD to output dependencies as a
-  # side effect of compilation, but ICC will put the dependencies in
-  # the current directory while Tru64 will put them in the object
-  # directory.
-  mkdir sub
 
-  am_cv_CXX_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
-  fi
-  for depmode in $am_compiler_list; do
-    # Setup a source with many dependencies, because some compilers
-    # like to wrap large dependency lists on column 80 (with \), and
-    # we should not choose a depcomp mode which is confused by this.
-    #
-    # We need to recreate these files for each test, as the compiler may
-    # overwrite some of them when testing with obscure command lines.
-    # This happens at least with the AIX C compiler.
-    : > sub/conftest.c
-    for i in 1 2 3 4 5 6; do
-      echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # 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
+LIBTIFF_DOCDIR=\${prefix}/share/doc/${PACKAGE}-${LIBTIFF_VERSION}
 
-    case $depmode in
-    nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
-      if test "x$enable_dependency_tracking" = xyes; then
-       continue
-      else
-       break
-      fi
-      ;;
-    none) break ;;
-    esac
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
-    # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.
-    if depmode=$depmode \
-       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
-       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
-       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
-         >/dev/null 2>conftest.err &&
-       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
-       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
-       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
-      # icc doesn't choke on unknown options, it will just issue warnings
-      # or remarks (even with -Werror).  So we grep stderr for any message
-      # that says an option was ignored or not supported.
-      # When given -MP, icc 7.0 and 7.1 complain thusly:
-      #   icc: Command line warning: ignoring option '-M'; no argument required
-      # The diagnosis changed in icc 8.0:
-      #   icc: Command line remark: option '-MP' not supported
-      if (grep 'ignoring option' conftest.err ||
-          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
-        am_cv_CXX_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
 
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CXX_dependencies_compiler_type=none
+# Check whether --with-docdir was given.
+if test "${with_docdir+set}" = set; then :
+  withval=$with_docdir;
 fi
 
+if test "x$with_docdir" != "x" ; then
+  LIBTIFF_DOCDIR=$with_docdir
 fi
-{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
-echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
-CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
 
 
 
-if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
-  am__fastdepCXX_TRUE=
-  am__fastdepCXX_FALSE='#'
+
+# Check whether --enable-ccitt was given.
+if test "${enable_ccitt+set}" = set; then :
+  enableval=$enable_ccitt; HAVE_CCITT=$enableval
 else
-  am__fastdepCXX_TRUE='#'
-  am__fastdepCXX_FALSE=
+  HAVE_CCITT=yes
 fi
 
 
-ac_ext=cpp
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-archive_cmds_need_lc_CXX=no
-allow_undefined_flag_CXX=
-always_export_symbols_CXX=no
-archive_expsym_cmds_CXX=
-export_dynamic_flag_spec_CXX=
-hardcode_direct_CXX=no
-hardcode_libdir_flag_spec_CXX=
-hardcode_libdir_flag_spec_ld_CXX=
-hardcode_libdir_separator_CXX=
-hardcode_minus_L_CXX=no
-hardcode_shlibpath_var_CXX=unsupported
-hardcode_automatic_CXX=no
-inherit_rpath_CXX=no
-module_cmds_CXX=
-module_expsym_cmds_CXX=
-link_all_deplibs_CXX=unknown
-old_archive_cmds_CXX=$old_archive_cmds
-no_undefined_flag_CXX=
-whole_archive_flag_spec_CXX=
-enable_shared_with_static_runtimes_CXX=no
-
-# Source file extension for C++ test sources.
-ac_ext=cpp
+if test "$HAVE_CCITT" = "yes" ; then
 
-# Object file extension for compiled C++ test sources.
-objext=o
-objext_CXX=$objext
+$as_echo "#define CCITT_SUPPORT 1" >>confdefs.h
 
-# No sense in running all these tests if we already determined that
-# the CXX compiler isn't working.  Some variables (like enable_shared)
-# are currently assumed to apply to all compilers on this platform,
-# and will be corrupted by setting them based on a non-working compiler.
-if test "$_lt_caught_CXX_error" != yes; then
-  # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;\n"
+fi
 
-  # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+# Check whether --enable-packbits was given.
+if test "${enable_packbits+set}" = set; then :
+  enableval=$enable_packbits; HAVE_PACKBITS=$enableval
+else
+  HAVE_PACKBITS=yes
+fi
 
-  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
+if test "$HAVE_PACKBITS" = "yes" ; then
 
+$as_echo "#define PACKBITS_SUPPORT 1" >>confdefs.h
 
+fi
 
+# Check whether --enable-lzw was given.
+if test "${enable_lzw+set}" = set; then :
+  enableval=$enable_lzw; HAVE_LZW=$enableval
+else
+  HAVE_LZW=yes
+fi
 
 
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
+if test "$HAVE_LZW" = "yes" ; then
 
-# If no C compiler flags were specified, use CFLAGS.
-LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+$as_echo "#define LZW_SUPPORT 1" >>confdefs.h
 
-# Allow CC to be a program name with arguments.
-compiler=$CC
+fi
 
+# Check whether --enable-thunder was given.
+if test "${enable_thunder+set}" = set; then :
+  enableval=$enable_thunder; HAVE_THUNDER=$enableval
+else
+  HAVE_THUNDER=yes
+fi
 
-  # save warnings/boilerplate of simple test code
-  ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$RM conftest*
 
-  ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$RM conftest*
+if test "$HAVE_THUNDER" = "yes" ; then
 
+$as_echo "#define THUNDER_SUPPORT 1" >>confdefs.h
 
-  # 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
-    $as_unset lt_cv_prog_gnu_ld
-  fi
-  if test -n "${lt_cv_path_LDCXX+set}"; then
-    lt_cv_path_LD=$lt_cv_path_LDCXX
-  else
-    $as_unset lt_cv_path_LD
-  fi
-  test -z "${LDCXX+set}" || LD=$LDCXX
-  CC=${CXX-"c++"}
-  compiler=$CC
-  compiler_CXX=$CC
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+fi
 
+HAVE_NEXT=yes
 
-  if test -n "$compiler"; then
-    # We don't want -fno-exception when compiling C++ code, so set the
-    # no_builtin_flag separately
-    if test "$GXX" = yes; then
-      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
-    else
-      lt_prog_compiler_no_builtin_flag_CXX=
-    fi
+# Check whether --enable-next was given.
+if test "${enable_next+set}" = set; then :
+  enableval=$enable_next; HAVE_NEXT=$enableval
+else
+  HAVE_NEXT=yes
+fi
 
-    if test "$GXX" = yes; then
-      # Set up default GNU C++ configuration
 
+if test "$HAVE_NEXT" = "yes" ; then
 
+$as_echo "#define NEXT_SUPPORT 1" >>confdefs.h
 
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
-else
-  with_gnu_ld=no
 fi
 
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
-echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
-  case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
-    ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
-    ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { echo "$as_me:$LINENO: checking for GNU ld" >&5
-echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
-else
-  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
-echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
-fi
-if test "${lt_cv_path_LD+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break
-       ;;
-      *)
-       test "$with_gnu_ld" != yes && break
-       ;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
+# Check whether --enable-logluv was given.
+if test "${enable_logluv+set}" = set; then :
+  enableval=$enable_logluv; HAVE_LOGLUV=$enableval
 else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
+  HAVE_LOGLUV=yes
 fi
 
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { echo "$as_me:$LINENO: result: $LD" >&5
-echo "${ECHO_T}$LD" >&6; }
-else
-  { echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6; }
+
+if test "$HAVE_LOGLUV" = "yes" ; then
+
+$as_echo "#define LOGLUV_SUPPORT 1" >>confdefs.h
+
 fi
-test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
-echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
-   { (exit 1); exit 1; }; }
-{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
-echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
-if test "${lt_cv_prog_gnu_ld+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+
+# Check whether --enable-mdi was given.
+if test "${enable_mdi+set}" = set; then :
+  enableval=$enable_mdi; HAVE_MDI=$enableval
 else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
+  HAVE_MDI=yes
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
-echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
+if test "$HAVE_MDI" = "yes" ; then
 
+$as_echo "#define MDI_SUPPORT 1" >>confdefs.h
 
+fi
 
 
+HAVE_ZLIB=no
 
-      # Check if GNU C++ uses GNU ld as the underlying linker, since the
-      # archiving commands below assume that GNU ld is being used.
-      if test "$with_gnu_ld" = yes; then
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+# Check whether --enable-zlib was given.
+if test "${enable_zlib+set}" = set; then :
+  enableval=$enable_zlib;
+fi
 
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
 
-        # If archive_cmds runs LD, not CC, wlarc should be empty
-        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
-        #     investigate it a little bit more. (MM)
-        wlarc='${wl}'
+# Check whether --with-zlib-include-dir was given.
+if test "${with_zlib_include_dir+set}" = set; then :
+  withval=$with_zlib_include_dir;
+fi
 
-        # ancient GNU ld didn't support --whole-archive et. al.
-        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
-         $GREP 'no-whole-archive' > /dev/null; then
-          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-        else
-          whole_archive_flag_spec_CXX=
-        fi
-      else
-        with_gnu_ld=no
-        wlarc=
 
-        # A generic and very simple default shared library creation
-        # command for GNU C++ for the case where it uses the native
-        # linker, instead of GNU ld.  If possible, this setting should
-        # overridden to take advantage of the native linker features on
-        # the platform it is being used on.
-        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-      fi
+# Check whether --with-zlib-lib-dir was given.
+if test "${with_zlib_lib_dir+set}" = set; then :
+  withval=$with_zlib_lib_dir;
+fi
 
-      # Commands to make compiler produce verbose output that lists
-      # what "hidden" libraries, object files and flags are used when
-      # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
 
-    else
-      GXX=no
-      with_gnu_ld=no
-      wlarc=
-    fi
-
-    # PORTME: fill in a description of your system's C++ link characteristics
-    { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
-    ld_shlibs_CXX=yes
-    case $host_os in
-      aix3*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-      aix4* | aix5*)
-        if test "$host_cpu" = ia64; then
-          # On IA64, the linker does run time linking by default, so we don't
-          # have to do anything special.
-          aix_use_runtimelinking=no
-          exp_sym_flag='-Bexport'
-          no_entry_flag=""
-        else
-          aix_use_runtimelinking=no
-
-          # Test if we are trying to use run time linking or normal
-          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
-          # need to do runtime linking.
-          case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
-           ;;
-          esac
-
-          exp_sym_flag='-bexport'
-          no_entry_flag='-bnoentry'
-        fi
-
-        # When large executables or shared objects are built, AIX ld can
-        # have problems creating the table of contents.  If linking a library
-        # or program results in "error TOC overflow" add -mminimal-toc to
-        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
-
-        archive_cmds_CXX=''
-        hardcode_direct_CXX=yes
-        hardcode_libdir_separator_CXX=':'
-        link_all_deplibs_CXX=yes
-        file_list_spec_CXX='${wl}-f,'
+if test "x$enable_zlib" != "xno" ; then
 
-        if test "$GXX" = yes; then
-          case $host_os in aix4.[012]|aix4.[012].*)
-          # We only want to do this on AIX 4.2 and lower, the check
-          # below for broken collect2 doesn't work under 4.3+
-         collect2name=`${CC} -print-prog-name=collect2`
-         if test -f "$collect2name" &&
-            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
-         then
-           # We have reworked collect2
-           hardcode_direct_CXX=yes
-         else
-           # We have old collect2
-           hardcode_direct_CXX=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           hardcode_minus_L_CXX=yes
-           hardcode_libdir_flag_spec_CXX='-L$libdir'
-           hardcode_libdir_separator_CXX=
-         fi
-          esac
-          shared_flag='-shared'
-         if test "$aix_use_runtimelinking" = yes; then
-           shared_flag="$shared_flag "'${wl}-G'
-         fi
-        else
-          # not using gcc
-          if test "$host_cpu" = ia64; then
-         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-         # chokes on -Wl,-G. The following line is correct:
-         shared_flag='-G'
-          else
-           if test "$aix_use_runtimelinking" = yes; then
-             shared_flag='${wl}-G'
-           else
-             shared_flag='${wl}-bM:SRE'
-           fi
-          fi
-        fi
+  if test "x$with_zlib_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_zlib_lib_dir $LDFLAGS"
+  fi
 
-        # It seems that -bexpall does not export symbols beginning with
-        # underscore (_), so it is better to generate a list of symbols to
-       # export.
-        always_export_symbols_CXX=yes
-        if test "$aix_use_runtimelinking" = yes; then
-          # Warning - without using the other runtime loading flags (-brtl),
-          # -berok will link without error, but may produce a broken library.
-          allow_undefined_flag_CXX='-berok'
-          # Determine the default libpath from the value encoded in an empty
-          # executable.
-          cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateEnd in -lz" >&5
+$as_echo_n "checking for inflateEnd in -lz... " >&6; }
+if ${ac_cv_lib_z_inflateEnd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lz  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inflateEnd ();
 int
 main ()
 {
-
+return inflateEnd ();
   ;
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-       /^0/ {
-           s/^0  *\(.*\)$/\1/
-           p
-       }
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_z_inflateEnd=yes
+else
+  ac_cv_lib_z_inflateEnd=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateEnd" >&5
+$as_echo "$ac_cv_lib_z_inflateEnd" >&6; }
+if test "x$ac_cv_lib_z_inflateEnd" = xyes; then :
+  zlib_lib=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  zlib_lib=no
+fi
 
+  if test "$zlib_lib" = "no" -a "x$with_zlib_lib_dir" != "x"; then
+    as_fn_error $? "Zlib library not found at $with_zlib_lib_dir" "$LINENO" 5
+  fi
 
+  if test "x$with_zlib_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_zlib_include_dir $CPPFLAGS"
+  fi
+  ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes; then :
+  zlib_h=yes
+else
+  zlib_h=no
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-        else
-          if test "$host_cpu" = ia64; then
-           hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
-           allow_undefined_flag_CXX="-z nodefs"
-           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
-          else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+  if test "$zlib_h" = "no" -a "x$with_zlib_include_dir" != "x" ; then
+    as_fn_error $? "Zlib headers not found at $with_zlib_include_dir" "$LINENO" 5
+  fi
 
-int
-main ()
-{
+  if test "$zlib_lib" = "yes" -a "$zlib_h" = "yes" ; then
+    HAVE_ZLIB=yes
+  fi
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_cxx_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-       /^0/ {
-           s/^0  *\(.*\)$/\1/
-           p
-       }
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
+if test "$HAVE_ZLIB" = "yes" ; then
+
+$as_echo "#define ZIP_SUPPORT 1" >>confdefs.h
+
+  LIBS="-lz $LIBS"
+  tiff_libs_private="-lz ${tiff_libs_private}"
+
+  if test "$HAVE_RPATH" = "yes" -a "x$with_zlib_lib_dir" != "x" ; then
+    LIBDIR="-R $with_zlib_lib_dir $LIBDIR"
+  fi
 
 fi
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
-           hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           no_undefined_flag_CXX=' ${wl}-bernotok'
-           allow_undefined_flag_CXX=' ${wl}-berok'
-           # Exported symbols can be pulled into shared objects from archives
-           whole_archive_flag_spec_CXX='$convenience'
-           archive_cmds_need_lc_CXX=yes
-           # This is similar to how AIX traditionally builds its shared
-           # libraries.
-           archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-          fi
-        fi
-        ;;
+# Check whether --enable-pixarlog was given.
+if test "${enable_pixarlog+set}" = set; then :
+  enableval=$enable_pixarlog; HAVE_PIXARLOG=$enableval
+else
+  HAVE_PIXARLOG=yes
+fi
 
-      beos*)
-       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-         allow_undefined_flag_CXX=unsupported
-         # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-         # support --undefined.  This deserves some investigation.  FIXME
-         archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       else
-         ld_shlibs_CXX=no
-       fi
-       ;;
 
-      chorus*)
-        case $cc_basename in
-          *)
-         # FIXME: insert proper C++ library support
-         ld_shlibs_CXX=no
-         ;;
-        esac
-        ;;
+if test "$HAVE_ZLIB" = "yes" -a "$HAVE_PIXARLOG" = "yes" ; then
 
-      cygwin* | mingw* | pw32*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
-        # as there is no search path for DLLs.
-        hardcode_libdir_flag_spec_CXX='-L$libdir'
-        allow_undefined_flag_CXX=unsupported
-        always_export_symbols_CXX=no
-        enable_shared_with_static_runtimes_CXX=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-           cp $export_symbols $output_objdir/$soname.def;
-          else
-           echo EXPORTS > $output_objdir/$soname.def;
-           cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          ld_shlibs_CXX=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-       case $host_os in
-         rhapsody* | darwin1.[012])
-           allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
-           ;;
-         *) # Darwin 1.3 on
-           case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-             10.[012])
-               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-           ;;
-       esac
-       archive_cmds_need_lc_CXX=no
-       hardcode_direct_CXX=no
-       hardcode_automatic_CXX=yes
-       hardcode_shlibpath_var_CXX=unsupported
-       whole_archive_flag_spec_CXX=''
-       link_all_deplibs_CXX=yes
+$as_echo "#define PIXARLOG_SUPPORT 1" >>confdefs.h
 
-       if test "$GXX" = yes ; then
-         if test "${lt_cv_apple_cc_single_mod+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_cv_apple_cc_single_mod=no
-         if test -z "${LT_MULTI_MODULE}"; then
-           # By default we will add the -single_module flag. You can override
-           # by either setting the environment variable LT_MULTI_MODULE
-           # non-empty at configure time, or by adding -multi-module to the
-           # link flags.
-           echo "int foo(void){return 1;}" > conftest.c
-           $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-               -dynamiclib ${wl}-single_module conftest.c
-           if test -f libconftest.dylib; then
-               lt_cv_apple_cc_single_mod=yes
-               rm libconftest.dylib
-           fi
-           rm conftest.$ac_ext
-         fi
+  HAVE_PIXARLOG=no
 fi
 
-         output_verbose_link_cmd=echo
-         if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then
-          archive_cmds_CXX='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-           archive_expsym_cmds_CXX='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         else
-           archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-           archive_expsym_cmds_CXX='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         fi
-         module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-         module_expsym_cmds_CXX='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       else
-         case $cc_basename in
-           xlc*)
-             output_verbose_link_cmd=echo
-             archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO "$rpath/$soname"` $verstring'
-             module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-             # Don't fix this by using the ld -exported_symbols_list flag,
-             # it doesn't exist in older darwin lds
-             archive_expsym_cmds_CXX='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-             module_expsym_cmds_CXX='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-             ;;
-           *)
-             ld_shlibs_CXX=no
-             ;;
-         esac
-       fi
-       ;;
 
-      dgux*)
-        case $cc_basename in
-          ec++*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
+HAVE_JPEG=no
 
-      freebsd[12]*)
-        # C++ shared libraries reported to be fairly broken before
-       # switch to ELF
-        ld_shlibs_CXX=no
-        ;;
+# Check whether --enable-jpeg was given.
+if test "${enable_jpeg+set}" = set; then :
+  enableval=$enable_jpeg;
+fi
 
-      freebsd-elf*)
-        archive_cmds_need_lc_CXX=no
-        ;;
 
-      freebsd* | kfreebsd*-gnu | dragonfly*)
-        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
-        # conventions
-        ld_shlibs_CXX=yes
-        ;;
+# Check whether --with-jpeg-include-dir was given.
+if test "${with_jpeg_include_dir+set}" = set; then :
+  withval=$with_jpeg_include_dir;
+fi
 
-      gnu*)
-        ;;
 
-      hpux9*)
-        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        export_dynamic_flag_spec_CXX='${wl}-E'
-        hardcode_direct_CXX=yes
-        hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
+# Check whether --with-jpeg-lib-dir was given.
+if test "${with_jpeg_lib_dir+set}" = set; then :
+  withval=$with_jpeg_lib_dir;
+fi
 
-        case $cc_basename in
-          CC*)
-            # FIXME: insert proper C++ library support
-            ld_shlibs_CXX=no
-            ;;
-          aCC*)
-            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            # Commands to make compiler produce verbose output that lists
-            # what "hidden" libraries, object files and flags are used when
-            # linking a shared library.
-            #
-            # There doesn't appear to be a way to prevent this compiler from
-            # explicitly linking system object files so we need to strip them
-            # from the output so that they don't get included in the library
-            # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-            ;;
-          *)
-            if test "$GXX" = yes; then
-              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-            else
-              # FIXME: insert proper C++ library support
-              ld_shlibs_CXX=no
-            fi
-            ;;
-        esac
-        ;;
-
-      hpux10*|hpux11*)
-        if test $with_gnu_ld = no; then
-         hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-         hardcode_libdir_separator_CXX=:
-
-          case $host_cpu in
-            hppa*64*|ia64*)
-              ;;
-            *)
-             export_dynamic_flag_spec_CXX='${wl}-E'
-              ;;
-          esac
-        fi
-        case $host_cpu in
-          hppa*64*|ia64*)
-            hardcode_direct_CXX=no
-            hardcode_shlibpath_var_CXX=no
-            ;;
-          *)
-            hardcode_direct_CXX=yes
-            hardcode_minus_L_CXX=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
-            ;;
-        esac
-
-        case $cc_basename in
-          CC*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          aCC*)
-           case $host_cpu in
-             hppa*64*)
-               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-           ;;
-          *)
-           if test "$GXX" = yes; then
-             if test $with_gnu_ld = no; then
-               case $host_cpu in
-                 hppa*64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      interix3*)
-       hardcode_direct_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec_CXX='${wl}-E'
-       # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
-       # Instead, shared libraries are loaded at an image base (0x10000000 by
-       # default) and relocated if they conflict, which is a slow very memory
-       # consuming and fragmenting process.  To avoid this, we pick a random,
-       # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
-       # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
-       archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
-       ;;
-      irix5* | irix6*)
-        case $cc_basename in
-          CC*)
-           # SGI C++
-           archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
-          *)
-           if test "$GXX" = yes; then
-             if test "$with_gnu_ld" = no; then
-               archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-             else
-               archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-             fi
-           fi
-           link_all_deplibs_CXX=yes
-           ;;
-        esac
-        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-        hardcode_libdir_separator_CXX=:
-        inherit_rpath_CXX=yes
-        ;;
-
-      linux*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-
-           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-
-           # Archives containing C++ object files must be created using
-           # "CC -Bstatic", where "CC" is the KAI C++ compiler.
-           old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           with_gnu_ld=yes
-           # version 8.0 and above of icpc choke on multiply defined symbols
-           # if we add $predep_objects and $postdep_objects, however 7.1 and
-           # earlier do not add the objects themselves.
-           case `$CC -V 2>&1` in
-             *"Version 7."*)
-               archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-             *)  # Version 8.0 or newer
-               tmp_idyn=
-               case $host_cpu in
-                 ia64*) tmp_idyn=' -i_dynamic';;
-               esac
-               archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-               ;;
-           esac
-           archive_cmds_need_lc_CXX=no
-           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-           whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
-           ;;
-          pgCC*)
-            # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [1-5]*)
-             prelink_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-             old_archive_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-               $RANLIB $oldlib'
-             archive_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             archive_expsym_cmds_CXX='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           *) # Version 6 will use weak symbols
-             archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           esac
-
-           hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
-           export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-           whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
-            ;;
-         cxx*)
-           # Compaq C++
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-           archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
-
-           runpath_var=LD_RUN_PATH
-           hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-           hardcode_libdir_separator_CXX=:
-
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
-           ;;
-       esac
-       ;;
-
-      lynxos*)
-        # FIXME: insert proper C++ library support
-       ld_shlibs_CXX=no
-       ;;
 
-      m88k*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-       ;;
+if test "x$enable_jpeg" != "xno" ; then
 
-      mvs*)
-        case $cc_basename in
-          cxx*)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-         *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-       esac
-       ;;
+  if test "x$with_jpeg_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_jpeg_lib_dir $LDFLAGS"
 
-      netbsd*)
-        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-         archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
-         wlarc=
-         hardcode_libdir_flag_spec_CXX='-R$libdir'
-         hardcode_direct_CXX=yes
-         hardcode_shlibpath_var_CXX=no
-       fi
-       # Workaround some broken pre-1.5 toolchains
-       output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
-       ;;
+  fi
 
-      *nto* | *qnx*)
-        ld_shlibs_CXX=yes
-       ;;
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jpeg_read_scanlines in -ljpeg" >&5
+$as_echo_n "checking for jpeg_read_scanlines in -ljpeg... " >&6; }
+if ${ac_cv_lib_jpeg_jpeg_read_scanlines+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljpeg  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-      openbsd2*)
-        # C++ shared libraries are fairly broken
-       ld_shlibs_CXX=no
-       ;;
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char jpeg_read_scanlines ();
+int
+main ()
+{
+return jpeg_read_scanlines ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_jpeg_jpeg_read_scanlines=yes
+else
+  ac_cv_lib_jpeg_jpeg_read_scanlines=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jpeg_jpeg_read_scanlines" >&5
+$as_echo "$ac_cv_lib_jpeg_jpeg_read_scanlines" >&6; }
+if test "x$ac_cv_lib_jpeg_jpeg_read_scanlines" = xyes; then :
+  jpeg_lib=yes
+else
+  jpeg_lib=no
+fi
 
-      openbsd*)
-       hardcode_direct_CXX=yes
-       hardcode_shlibpath_var_CXX=no
-       archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-       hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-         archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-         export_dynamic_flag_spec_CXX='${wl}-E'
-         whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-       fi
-       output_verbose_link_cmd=echo
-       ;;
+  if test "$jpeg_lib" = "no" -a "x$with_jpeg_lib_dir" != "x" ; then
+    as_fn_error $? "IJG JPEG library not found at $with_jpeg_lib_dir" "$LINENO" 5
+  fi
 
-      osf3* | osf4* | osf5*)
-        case $cc_basename in
-          KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
+  if test "x$with_jpeg_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_jpeg_include_dir $CPPFLAGS"
+  fi
+  ac_fn_c_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default"
+if test "x$ac_cv_header_jpeglib_h" = xyes; then :
+  jpeg_h=yes
+else
+  jpeg_h=no
+fi
 
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
 
-           hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-           hardcode_libdir_separator_CXX=:
+  if test "$jpeg_h" = "no" -a "x$with_jpeg_include_dir" != "x" ; then
+    as_fn_error $? "IJG JPEG library headers not found at $with_jpeg_include_dir" "$LINENO" 5
+  fi
 
-           # Archives containing C++ object files must be created using
-           # the KAI C++ compiler.
-           case $host in
-             osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
-             *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
-           esac
-           ;;
-          RCC*)
-           # Rational C++ 2.4.1
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          cxx*)
-           case $host in
-             osf3*)
-               allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-               hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-               ;;
-             *)
-               allow_undefined_flag_CXX=' -expect_unresolved \*'
-               archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-               archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
-                 echo "-hidden">> $lib.exp~
-                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
-                 $RM $lib.exp'
-               hardcode_libdir_flag_spec_CXX='-rpath $libdir'
-               ;;
-           esac
+  if test "$jpeg_lib" = "yes" -a "$jpeg_h" = "yes" ; then
+    HAVE_JPEG=yes
+  fi
 
-           hardcode_libdir_separator_CXX=:
+fi
 
-           # 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 "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
-           ;;
-         *)
-           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-             allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
-             case $host in
-               osf3*)
-                 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-                 ;;
-               *)
-                 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-                 ;;
-             esac
-
-             hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
-             hardcode_libdir_separator_CXX=:
-
-             # Commands to make compiler produce verbose output that lists
-             # what "hidden" libraries, object files and flags are used when
-             # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-
-           else
-             # FIXME: insert proper C++ library support
-             ld_shlibs_CXX=no
-           fi
-           ;;
-        esac
-        ;;
-
-      psos*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      sunos4*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      solaris*)
-        case $cc_basename in
-          CC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-            archive_cmds_need_lc_CXX=yes
-           no_undefined_flag_CXX=' -zdefs'
-           archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           hardcode_libdir_flag_spec_CXX='-R$libdir'
-           hardcode_shlibpath_var_CXX=no
-           case $host_os in
-             solaris2.[0-5] | solaris2.[0-5].*) ;;
-             *)
-               # The C++ compiler is used as linker so we must use $wl
-               # flag to pass the commands to the underlying system
-               # linker. We must also pass each convenience library through
-               # to the system linker between allextract/defaultextract.
-               # The C++ compiler will combine linker options so we
-               # cannot just pass the convenience library names through
-               # without $wl.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
-               ;;
-           esac
-           link_all_deplibs_CXX=yes
-
-           output_verbose_link_cmd='echo'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
-           ;;
-          gcx*)
-           # Green Hills C++ Compiler
-           archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-
-           # The C++ compiler must be used to create the archive.
-           old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
-          *)
-           # GNU C++ compiler with Solaris linker
-           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-             no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require `-G' NOT `-shared' on this
-               # platform.
-               archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-             fi
-
-             hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
-           fi
-           ;;
-        esac
-        ;;
-
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
-      no_undefined_flag_CXX='${wl}-z,text'
-      archive_cmds_need_lc_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      runpath_var='LD_RUN_PATH'
-
-      case $cc_basename in
-        CC*)
-         archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-       *)
-         archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-         ;;
-      esac
-      ;;
-
-      sysv5* | sco3.2v5* | sco5v6*)
-       # Note: We can NOT use -z defs as we might desire, because we do not
-       # link with -lc, and that would cause any symbols used from libc to
-       # always be unresolved, which means just about no library would
-       # ever link correctly.  If we're not using GNU ld we use -z text
-       # though, which does catch some bad symbols but isn't as heavy-handed
-       # as -z defs.
-       no_undefined_flag_CXX='${wl}-z,text'
-       allow_undefined_flag_CXX='${wl}-z,nodefs'
-       archive_cmds_need_lc_CXX=no
-       hardcode_shlibpath_var_CXX=no
-       hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
-       hardcode_libdir_separator_CXX=':'
-       link_all_deplibs_CXX=yes
-       export_dynamic_flag_spec_CXX='${wl}-Bexport'
-       runpath_var='LD_RUN_PATH'
-
-       case $cc_basename in
-          CC*)
-           archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-         *)
-           archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
-           ;;
-       esac
-      ;;
-
-      tandem*)
-        case $cc_basename in
-          NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-          *)
-           # FIXME: insert proper C++ library support
-           ld_shlibs_CXX=no
-           ;;
-        esac
-        ;;
-
-      vxworks*)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-
-      *)
-        # FIXME: insert proper C++ library support
-        ld_shlibs_CXX=no
-        ;;
-    esac
-
-    { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
-    test "$ld_shlibs_CXX" = no && can_build_shared=no
-
-    GCC_CXX="$GXX"
-    LD_CXX="$LD"
-
-    ## CAVEAT EMPTOR:
-    ## There is no encapsulation within the following macros, do not change
-    ## the running order or otherwise move them around unless you know exactly
-    ## what you are doing...
-    # Dependencies to place before and after the object being linked:
-predep_objects_CXX=
-postdep_objects_CXX=
-predeps_CXX=
-postdeps_CXX=
-compiler_lib_search_path_CXX=
-
-cat > conftest.$ac_ext <<_LT_EOF
-class Foo
-{
-public:
-  Foo (void) { a = 0; }
-private:
-  int a;
-};
-_LT_EOF
-
-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
-  # Parse the compiler output and extract the necessary
-  # objects, libraries and library flags.
-
-  # Sentinel used to keep track of whether or not we are before
-  # the conftest object file.
-  pre_test_object_deps_done=no
-
-  # The `*' in the case matches for architectures that use `case' in
-  # $output_verbose_cmd can trigger glob expansion during the loop
-  # eval without this substitution.
-  output_verbose_link_cmd=`$ECHO "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-
-  for p in `eval $output_verbose_link_cmd`; do
-    case $p in
-
-    -L* | -R* | -l*)
-       # Some compilers place space between "-{L,R}" and the path.
-       # Remove the space.
-       if test $p = "-L" ||
-          test $p = "-R"; then
-        prev=$p
-        continue
-       else
-        prev=
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-        case $p in
-        -L* | -R*)
-          # Internal compiler library paths should come after those
-          # provided the user.  The postdeps already come after the
-          # user supplied libs so there is no need to process them.
-          if test -z "$compiler_lib_search_path_CXX"; then
-            compiler_lib_search_path_CXX="${prev}${p}"
-          else
-            compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
-          fi
-          ;;
-        # The "-l" case would never come before the object being
-        # linked, so don't bother handling this case.
-        esac
-       else
-        if test -z "$postdeps_CXX"; then
-          postdeps_CXX="${prev}${p}"
-        else
-          postdeps_CXX="${postdeps_CXX} ${prev}${p}"
-        fi
-       fi
-       ;;
-
-    *.$objext)
-       # This assumes that the test object file only shows up
-       # once in the compiler output.
-       if test "$p" = "conftest.$objext"; then
-        pre_test_object_deps_done=yes
-        continue
-       fi
-
-       if test "$pre_test_object_deps_done" = no; then
-        if test -z "$predep_objects_CXX"; then
-          predep_objects_CXX="$p"
-        else
-          predep_objects_CXX="$predep_objects_CXX $p"
-        fi
-       else
-        if test -z "$postdep_objects_CXX"; then
-          postdep_objects_CXX="$p"
-        else
-          postdep_objects_CXX="$postdep_objects_CXX $p"
-        fi
-       fi
-       ;;
-
-    *) ;; # Ignore the rest.
-
-    esac
-  done
-
-  # Clean up.
-  rm -f a.out a.exe
-else
-  echo "libtool.m4: error: problem compiling CXX test program"
-fi
-
-$RM -f confest.$objext
-
-# PORTME: override above test on systems where it is broken
-case $host_os in
-interix3*)
-  # Interix 3.5 installs completely hosed .la files for C++, so rather than
-  # hack all around it, let's just trust "g++" to DTRT.
-  predep_objects_CXX=
-  postdep_objects_CXX=
-  postdeps_CXX=
-  ;;
-
-solaris*)
-  case $cc_basename in
-  CC*)
-    # Adding this requires a known-good setup of shared libraries for
-    # Sun compiler versions before 5.6, else PIC objects from an old
-    # archive will be linked into the output, leading to subtle bugs.
-    postdeps_CXX='-lCstd -lCrun'
-    ;;
-  esac
-  ;;
-esac
-
-
-case " $postdeps_CXX " in
-*" -lc "*) archive_cmds_need_lc_CXX=no ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    lt_prog_compiler_wl_CXX=
-lt_prog_compiler_pic_CXX=
-lt_prog_compiler_static_CXX=
-
-{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
-
-  # C++ specific cases for pic, static, wl, etc.
-  if test "$GXX" = yes; then
-    lt_prog_compiler_wl_CXX='-Wl,'
-    lt_prog_compiler_static_CXX='-static'
-
-    case $host_os in
-    aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-       # AIX 5 now supports IA64 processor
-       lt_prog_compiler_static_CXX='-Bstatic'
-      fi
-      ;;
-    amigaos*)
-      if test "$host_cpu" = m68k; then
-        # FIXME: we need at least 68020 code to build shared libraries, but
-        # adding the `-m68020' flag to GCC prevents building anything better,
-        # like `-m68040'.
-        lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
-      fi
-      ;;
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-    mingw* | os2* | pw32*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
-      ;;
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_CXX='-fno-common'
-      ;;
-    *djgpp*)
-      # DJGPP does not support shared libraries at all
-      lt_prog_compiler_pic_CXX=
-      ;;
-    interix3*)
-      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
-      # Instead, we relocate shared libraries at runtime.
-      ;;
-    sysv4*MP*)
-      if test -d /usr/nec; then
-       lt_prog_compiler_pic_CXX=-Kconform_pic
-      fi
-      ;;
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case $host_cpu in
-      hppa*64*|ia64*)
-       ;;
-      *)
-       lt_prog_compiler_pic_CXX='-fPIC'
-       ;;
-      esac
-      ;;
-    *qnx* | *nto*)
-      # QNX uses GNU C++, but need to define -shared option too, otherwise
-      # it will coredump.
-      lt_prog_compiler_pic_CXX='-fPIC -shared'
-      ;;
-    *)
-      lt_prog_compiler_pic_CXX='-fPIC'
-      ;;
-    esac
-  else
-    case $host_os in
-      aix4* | aix5*)
-       # All AIX code is PIC.
-       if test "$host_cpu" = ia64; then
-         # AIX 5 now supports IA64 processor
-         lt_prog_compiler_static_CXX='-Bstatic'
-       else
-         lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
-       fi
-       ;;
-      chorus*)
-       case $cc_basename in
-       cxch68*)
-         # Green Hills C++ Compiler
-         # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
-         ;;
-       esac
-       ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-        case $cc_basename in
-          xlc*)
-          lt_prog_compiler_pic_CXX='-qnocommon'
-          lt_prog_compiler_wl_CXX='-Wl,'
-          ;;
-        esac
-        ;;
-      dgux*)
-       case $cc_basename in
-         ec++*)
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         ghcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      freebsd* | kfreebsd*-gnu | dragonfly*)
-       # FreeBSD uses GNU C++
-       ;;
-      hpux9* | hpux10* | hpux11*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-           if test "$host_cpu" != ia64; then
-             lt_prog_compiler_pic_CXX='+Z'
-           fi
-           ;;
-         aCC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
-           case $host_cpu in
-           hppa*64*|ia64*)
-             # +Z the default
-             ;;
-           *)
-             lt_prog_compiler_pic_CXX='+Z'
-             ;;
-           esac
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      interix*)
-       # This is c89, which is MS Visual C++ (no shared libs)
-       # Anyone wants to do a port?
-       ;;
-      irix5* | irix6* | nonstopux*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_static_CXX='-non_shared'
-           # CC pic flag -KPIC is the default.
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      linux*)
-       case $cc_basename in
-         KCC*)
-           # KAI C++ Compiler
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           lt_prog_compiler_pic_CXX='-fPIC'
-           ;;
-         icpc* | ecpc* )
-           # Intel C++
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-static'
-           ;;
-         pgCC*)
-           # Portland Group C++ compiler
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-fpic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         cxx*)
-           # Compaq C++
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      lynxos*)
-       ;;
-      m88k*)
-       ;;
-      mvs*)
-       case $cc_basename in
-         cxx*)
-           lt_prog_compiler_pic_CXX='-W c,exportall'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      netbsd*)
-       ;;
-      *qnx* | *nto*)
-        # QNX uses GNU C++, but need to define -shared option too, otherwise
-        # it will coredump.
-        lt_prog_compiler_pic_CXX='-fPIC -shared'
-        ;;
-      osf3* | osf4* | osf5*)
-       case $cc_basename in
-         KCC*)
-           lt_prog_compiler_wl_CXX='--backend -Wl,'
-           ;;
-         RCC*)
-           # Rational C++ 2.4.1
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         cxx*)
-           # Digital/Compaq C++
-           lt_prog_compiler_wl_CXX='-Wl,'
-           # Make sure the PIC flag is empty.  It appears that all Alpha
-           # Linux and Compaq Tru64 Unix objects are PIC.
-           lt_prog_compiler_pic_CXX=
-           lt_prog_compiler_static_CXX='-non_shared'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      psos*)
-       ;;
-      solaris*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           lt_prog_compiler_wl_CXX='-Qoption ld '
-           ;;
-         gcx*)
-           # Green Hills C++ Compiler
-           lt_prog_compiler_pic_CXX='-PIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sunos4*)
-       case $cc_basename in
-         CC*)
-           # Sun C++ 4.x
-           lt_prog_compiler_pic_CXX='-pic'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-         lcc*)
-           # Lucid
-           lt_prog_compiler_pic_CXX='-pic'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
-       case $cc_basename in
-         CC*)
-           lt_prog_compiler_wl_CXX='-Wl,'
-           lt_prog_compiler_pic_CXX='-KPIC'
-           lt_prog_compiler_static_CXX='-Bstatic'
-           ;;
-       esac
-       ;;
-      tandem*)
-       case $cc_basename in
-         NCC*)
-           # NonStop-UX NCC 3.20
-           lt_prog_compiler_pic_CXX='-KPIC'
-           ;;
-         *)
-           ;;
-       esac
-       ;;
-      vxworks*)
-       ;;
-      *)
-       lt_prog_compiler_can_build_shared_CXX=no
-       ;;
-    esac
+if test "$HAVE_JPEG" = "yes" ; then
+
+$as_echo "#define JPEG_SUPPORT 1" >>confdefs.h
+
+  LIBS="-ljpeg $LIBS"
+  tiff_libs_private="-ljpeg ${tiff_libs_private}"
+
+  if test "$HAVE_RPATH" = "yes" -a "x$with_jpeg_lib_dir" != "x" ; then
+    LIBDIR="-R $with_jpeg_lib_dir $LIBDIR"
   fi
 
-case $host_os in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_CXX=
-    ;;
-  *)
-    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
-    ;;
-esac
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
+fi
 
 
+# Check whether --enable-old-jpeg was given.
+if test "${enable_old_jpeg+set}" = set; then :
+  enableval=$enable_old_jpeg; HAVE_OJPEG=${enableval}
+else
+  HAVE_OJPEG=yes
+fi
+
+
+if test "$HAVE_JPEG" = "yes" -a "$HAVE_OJPEG" = "yes" ; then
+
+$as_echo "#define OJPEG_SUPPORT 1" >>confdefs.h
 
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_CXX"; then
-  { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_pic_works_CXX=no
-   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:19341: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:19345: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s "$ac_outfile"; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
-     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
+  HAVE_OJPEG=no
+fi
+
 
+HAVE_JBIG=no
+
+# Check whether --enable-jbig was given.
+if test "${enable_jbig+set}" = set; then :
+  enableval=$enable_jbig;
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
 
-if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
-    case $lt_prog_compiler_pic_CXX in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
-     esac
-else
-    lt_prog_compiler_pic_CXX=
-     lt_prog_compiler_can_build_shared_CXX=no
+
+# Check whether --with-jbig-include-dir was given.
+if test "${with_jbig_include_dir+set}" = set; then :
+  withval=$with_jbig_include_dir;
 fi
 
+
+# Check whether --with-jbig-lib-dir was given.
+if test "${with_jbig_lib_dir+set}" = set; then :
+  withval=$with_jbig_lib_dir;
 fi
 
 
+if test "x$enable_jbig" != "xno" ; then
 
-#
-# Check to make sure the static flag actually works.
-#
-wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
-{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+  if test "x$with_jbig_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_jbig_lib_dir $LDFLAGS"
+
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for jbg_dec_init in -ljbig" >&5
+$as_echo_n "checking for jbg_dec_init in -ljbig... " >&6; }
+if ${ac_cv_lib_jbig_jbg_dec_init+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  lt_prog_compiler_static_works_CXX=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The linker can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
-       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works_CXX=yes
-       fi
-     else
-       lt_prog_compiler_static_works_CXX=yes
-     fi
-   fi
-   $RM conftest*
-   LDFLAGS="$save_LDFLAGS"
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ljbig  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char jbg_dec_init ();
+int
+main ()
+{
+return jbg_dec_init ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_jbig_jbg_dec_init=yes
+else
+  ac_cv_lib_jbig_jbg_dec_init=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_jbig_jbg_dec_init" >&5
+$as_echo "$ac_cv_lib_jbig_jbg_dec_init" >&6; }
+if test "x$ac_cv_lib_jbig_jbg_dec_init" = xyes; then :
+  jbig_lib=yes
+else
+  jbig_lib=no
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
 
-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
-    :
+  if test "$jbig_lib" = "no" -a "x$with_jbig_lib_dir" != "x" ; then
+    as_fn_error $? "JBIG-KIT library not found at $with_jbig_lib_dir" "$LINENO" 5
+  fi
+
+  if test "x$with_jbig_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_jbig_include_dir $CPPFLAGS"
+  fi
+  ac_fn_c_check_header_mongrel "$LINENO" "jbig.h" "ac_cv_header_jbig_h" "$ac_includes_default"
+if test "x$ac_cv_header_jbig_h" = xyes; then :
+  jbig_h=yes
 else
-    lt_prog_compiler_static_CXX=
+  jbig_h=no
 fi
 
 
+  if test "$jbig_h" = "no" -a "x$with_jbig_include_dir" != "x" ; then
+    as_fn_error $? "JBIG-KIT library headers not found at $with_jbig_include_dir" "$LINENO" 5
+  fi
 
+  if test "$jbig_lib" = "yes" -a "$jbig_h" = "yes" ; then
+    HAVE_JBIG=yes
+  fi
 
-    { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+fi
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:19440: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:19444: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
+if test "$HAVE_JBIG" = "yes" ; then
+
+$as_echo "#define JBIG_SUPPORT 1" >>confdefs.h
+
+  LIBS="-ljbig $LIBS"
+  tiff_libs_private="-ljbig ${tiff_libs_private}"
+
+  if test "$HAVE_RPATH" = "yes" -a "x$with_jbig_lib_dir" != "x" ; then
+    LIBDIR="-R $with_jbig_lib_dir $LIBDIR"
+  fi
+
+  # Older versions of jbigkit lack jbg_newlen
+  for ac_func in jbg_newlen
+do :
+  ac_fn_c_check_func "$LINENO" "jbg_newlen" "ac_cv_func_jbg_newlen"
+if test "x$ac_cv_func_jbg_newlen" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_JBG_NEWLEN 1
+_ACEOF
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+done
 
 
+fi
 
-    { echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
-if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_CXX=no
-   $RM -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:19492: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:19496: \$? = $ac_status" >&5
-   if (exit $ac_status) && test -s out/conftest2.$ac_objext
-   then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
-     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_CXX=yes
-     fi
-   fi
-   chmod u+w . 2>&5
-   $RM conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
-   $RM out/* && rmdir out
-   cd ..
-   $RM -r conftest
-   $RM conftest*
+HAVE_LZMA=no
 
+# Check whether --enable-lzma was given.
+if test "${enable_lzma+set}" = set; then :
+  enableval=$enable_lzma;
 fi
-{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
 
 
+# Check whether --with-lzma-include-dir was given.
+if test "${with_lzma_include_dir+set}" = set; then :
+  withval=$with_lzma_include_dir;
+fi
 
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
-  hard_links=yes
-  $RM conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  { echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6; }
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
-else
-  need_locks=no
+# Check whether --with-lzma-lib-dir was given.
+if test "${with_lzma_lib_dir+set}" = set; then :
+  withval=$with_lzma_lib_dir;
 fi
 
 
+if test "x$enable_lzma" != "xno" ; then
 
-    { echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+  if test "x$with_lzma_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_lzma_lib_dir $LDFLAGS"
+  fi
 
-  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  case $host_os in
-  aix4* | aix5*)
-    # If we're using GNU nm, then we don't want the "-C" option.
-    # -C means demangle to AIX nm, but means don't demangle with GNU nm
-    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    else
-      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
-    fi
-    ;;
-  pw32*)
-    export_symbols_cmds_CXX="$ltdll_cmds"
-  ;;
-  cygwin* | mingw*)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  *)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
-  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lzma_code in -llzma" >&5
+$as_echo_n "checking for lzma_code in -llzma... " >&6; }
+if ${ac_cv_lib_lzma_lzma_code+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llzma  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char lzma_code ();
+int
+main ()
+{
+return lzma_code ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_lzma_lzma_code=yes
+else
+  ac_cv_lib_lzma_lzma_code=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lzma_lzma_code" >&5
+$as_echo "$ac_cv_lib_lzma_lzma_code" >&6; }
+if test "x$ac_cv_lib_lzma_lzma_code" = xyes; then :
+  lzma_lib=yes
+else
+  lzma_lib=no
+fi
+
+  if test "$lzma_lib" = "no" -a "x$with_lzma_lib_dir" != "x"; then
+    as_fn_error $? "lzma library not found at $with_lzma_lib_dir" "$LINENO" 5
+  fi
+
+  if test "x$with_lzma_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_lzma_include_dir $CPPFLAGS"
+  fi
+  ac_fn_c_check_header_mongrel "$LINENO" "lzma.h" "ac_cv_header_lzma_h" "$ac_includes_default"
+if test "x$ac_cv_header_lzma_h" = xyes; then :
+  lzma_h=yes
+else
+  lzma_h=no
+fi
 
-{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
-echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
-test "$ld_shlibs_CXX" = no && can_build_shared=no
 
-with_gnu_ld_CXX=$with_gnu_ld
+  if test "$lzma_h" = "no" -a "x$with_lzma_include_dir" != "x" ; then
+    as_fn_error $? "Liblzma headers not found at $with_lzma_include_dir" "$LINENO" 5
+  fi
 
+  if test "$lzma_lib" = "yes" -a "$lzma_h" = "yes" ; then
+    HAVE_LZMA=yes
+  fi
 
+fi
 
+if test "$HAVE_LZMA" = "yes" ; then
 
+$as_echo "#define LZMA_SUPPORT 1" >>confdefs.h
 
+  LIBS="-llzma $LIBS"
+  tiff_libs_private="-llzma ${tiff_libs_private}"
 
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_CXX" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_CXX=yes
+  if test "$HAVE_RPATH" = "yes" -a "x$with_lzma_lib_dir" != "x" ; then
+    LIBDIR="-R $with_lzma_lib_dir $LIBDIR"
+  fi
 
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_CXX in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
-      $RM conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+fi
 
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_CXX
-       pic_flag=$lt_prog_compiler_pic_CXX
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
-        allow_undefined_flag_CXX=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-         archive_cmds_need_lc_CXX=no
-        else
-         archive_cmds_need_lc_CXX=yes
-        fi
-        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
-      ;;
-    esac
+
+HAVE_JPEG12=no
+
+# Check whether --enable-jpeg12 was given.
+if test "${enable_jpeg12+set}" = set; then :
+  enableval=$enable_jpeg12;
+fi
+
+
+# Check whether --with-jpeg12-include-dir was given.
+if test "${with_jpeg12_include_dir+set}" = set; then :
+  withval=$with_jpeg12_include_dir;
+fi
+
+
+# Check whether --with-jpeg12-lib was given.
+if test "${with_jpeg12_lib+set}" = set; then :
+  withval=$with_jpeg12_lib;
+fi
+
+
+if test "x$enable_jpeg12" == "xyes" ; then
+
+  if test "x$with_jpeg12_lib" != "x" ; then
+    LIBS="$with_jpeg12_lib $LIBS"
   fi
-  ;;
-esac
 
+  HAVE_JPEG12=yes
 
 
+$as_echo "#define JPEG_DUAL_MODE_8_12 1" >>confdefs.h
 
+  if test "x$with_jpeg12_include_dir" != "x" ; then
 
+cat >>confdefs.h <<_ACEOF
+#define LIBJPEG_12_PATH "$with_jpeg12_include_dir/jpeglib.h"
+_ACEOF
 
+  fi
+fi
 
 
 
+# Check whether --enable-cxx was given.
+if test "${enable_cxx+set}" = set; then :
+  enableval=$enable_cxx; HAVE_CXX=$enableval
+else
+  HAVE_CXX=yes
+fi
 
 
+if test "$HAVE_CXX" = "yes" ; then
 
+$as_echo "#define CXX_SUPPORT 1" >>confdefs.h
 
+else
+  HAVE_CXX=no
+fi
 
+ if test "$HAVE_CXX" = "yes"; then
+  HAVE_CXX_TRUE=
+  HAVE_CXX_FALSE='#'
+else
+  HAVE_CXX_TRUE='#'
+  HAVE_CXX_FALSE=
+fi
 
 
 
+HAVE_OPENGL=no
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5
+$as_echo_n "checking for X... " >&6; }
 
 
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then :
+  withval=$with_x;
+fi
 
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #(
+    *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+       @echo incroot='${INCROOT}'
+usrlibdir:
+       @echo usrlibdir='${USRLIBDIR}'
+libdir:
+       @echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl dylib la dll; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+        test -f "$ac_im_libdir/libX11.$ac_extension"; then
+       ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+       /usr/include) ac_x_includes= ;;
+       *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+       /usr/lib | /usr/lib64 | /lib | /lib64) ;;
+       *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
 
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R7/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
 
+/usr/include/X11
+/usr/include/X11R7
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
 
+/usr/local/X11/include
+/usr/local/X11R7/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
 
+/usr/local/include/X11
+/usr/local/include/X11R7
+/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'
 
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+fi # $ac_x_includes = no
 
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  LIBS=$ac_save_LIBS
+for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl dylib la dll; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
 
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+       ac_x_includes='$ac_x_includes'\
+       ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
 
+if test "$have_x" != yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5
+$as_echo "$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+       ac_x_includes='$x_includes'\
+       ac_x_libraries='$x_libraries'"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5
+$as_echo "libraries $x_libraries, headers $x_includes" >&6; }
+fi
 
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
 
+$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h
 
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
 
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5
+$as_echo_n "checking whether -R must be followed by a space... " >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+         X_LIBS="$X_LIBS -R $x_libraries"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5
+$as_echo "neither works" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
 
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
 
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; }
+if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
 
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5
+$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; }
+if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
 
+    fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
 
+    # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
+if test "x$ac_cv_func_gethostbyname" = xyes; then :
 
+fi
 
+    if test $ac_cv_func_gethostbyname = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5
+$as_echo_n "checking for gethostbyname in -lnsl... " >&6; }
+if ${ac_cv_lib_nsl_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  ac_cv_lib_nsl_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5
+$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
 
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5
+$as_echo_n "checking for gethostbyname in -lbsd... " >&6; }
+if ${ac_cv_lib_bsd_gethostbyname+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  ac_cv_lib_bsd_gethostbyname=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5
+$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
 
+      fi
+    fi
 
+    # lieder@skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect"
+if test "x$ac_cv_func_connect" = xyes; then :
 
+fi
 
+    if test $ac_cv_func_connect = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5
+$as_echo_n "checking for connect in -lsocket... " >&6; }
+if ${ac_cv_lib_socket_connect+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-    { echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
-withGCC=$GXX
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$withGCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$sys_lib_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_socket_connect=yes
 else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+  ac_cv_lib_socket_connect=no
 fi
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix4* | aix5*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-          echo ' yes '
-          echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
-       :
-      else
-       can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.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'
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5
+$as_echo "$ac_cv_lib_socket_connect" >&6; }
+if test "x$ac_cv_lib_socket_connect" = xyes; then :
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
     fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
 
-amigaos*)
-  if test "$host_cpu" = m68k; then
-    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'
-  else
-    dynamic_linker=no
-  fi
-  ;;
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove"
+if test "x$ac_cv_func_remove" = xyes; then :
 
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
+fi
 
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
+    if test $ac_cv_func_remove = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5
+$as_echo_n "checking for remove in -lposix... " >&6; }
+if ${ac_cv_lib_posix_remove+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_posix_remove=yes
+else
+  ac_cv_lib_posix_remove=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5
+$as_echo "$ac_cv_lib_posix_remove" >&6; }
+if test "x$ac_cv_lib_posix_remove" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
 
-  case $withGCC,$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~
-      chmod a+x \$dldir/$dlname~
-      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
-        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
-      fi'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $RM \$dlpath'
-    shlibpath_overrides_runpath=yes
+    fi
 
-    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
-    ;;
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat"
+if test "x$ac_cv_func_shmat" = xyes; then :
 
-  *)
-    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
-  ;;
+fi
 
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$withGCC" = 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'
+    if test $ac_cv_func_shmat = no; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5
+$as_echo_n "checking for shmat in -lipc... " >&6; }
+if ${ac_cv_lib_ipc_shmat+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ipc_shmat=yes
+else
+  ac_cv_lib_ipc_shmat=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5
+$as_echo "$ac_cv_lib_ipc_shmat" >&6; }
+if test "x$ac_cv_lib_ipc_shmat" = xyes; then :
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
   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
-  ;;
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # 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.
+  # John Interrante, Karl Berry
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5
+$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; }
+if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then :
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
 
-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'
-  ;;
+  LDFLAGS=$ac_save_LDFLAGS
 
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  if test -x /usr/bin/objformat; then
-    objformat=`/usr/bin/objformat`
-  else
-    case $host_os in
-    freebsd[123]*) objformat=aout ;;
-    *) objformat=elf ;;
-    esac
-  fi
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $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
-    ;;
-  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
-  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  freebsd*) # from 4.6 on
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
+fi
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
 
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case $host_cpu in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  hppa*64*)
-    shrext_cmds='.sl'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-  *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
 
-interix3*)
-  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'
-  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
 
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-       if test "$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
-  ;;
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ax_pthread_ok=no
+
+
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
+$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test x"$ax_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
 
-# This must be Linux ELF.
-linux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
 
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
 
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
 
-knetbsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
 
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
 
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
+case "${host_cpu}-${host_os}" in
+        *solaris*)
 
-*nto* | *qnx*)
-  version_type=qnx
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='ldqnx.so'
-  ;;
 
-openbsd*)
-  version_type=sunos
-  sys_lib_dlsearch_path_spec="/usr/lib"
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  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
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
+        ;;
+
+       *-darwin*)
+       ax_pthread_flags="-pthread $ax_pthread_flags"
        ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
+esac
+
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
+
+        case $flag in
+                none)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
+$as_echo_n "checking whether pthreads work without any flags... " >&6; }
+                ;;
+
+                -*)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
+$as_echo_n "checking whether pthreads work with $flag... " >&6; }
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+               pthread-config)
+               # Extract the first word of "pthread-config", so it can be a program name with args.
+set dummy pthread-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ax_pthread_config+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ax_pthread_config"; then
+  ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_ax_pthread_config="yes"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
   fi
-  ;;
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no"
+fi
+fi
+ax_pthread_config=$ac_cv_prog_ax_pthread_config
+if test -n "$ax_pthread_config"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5
+$as_echo "$ax_pthread_config" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+               if test x"$ax_pthread_config" = xno; then continue; fi
+               PTHREAD_CFLAGS="`pthread-config --cflags`"
+               PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+               ;;
+
+                *)
+                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
+$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
+                                                                                cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+                    static void routine(void* a) {a=0;}
+                    static void* start_routine(void* a) {return a;}
+int
+main ()
+{
+pthread_t th; pthread_attr_t attr;
+                     pthread_create(&th,0,start_routine,0);
+                     pthread_join(th, 0);
+                     pthread_attr_init(&attr);
+                     pthread_cleanup_push(routine, 0);
+                     pthread_cleanup_pop(0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_pthread_ok=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
 
-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"
-  ;;
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
 
-rdos*)
-  dynamic_linker=no
-  ;;
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
+$as_echo "$ax_pthread_ok" >&6; }
+        if test "x$ax_pthread_ok" = xyes; then
+                break;
+        fi
 
-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'
-  ;;
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
 
-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
-  ;;
+if test "x$ax_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
-sysv4 | sysv4.3*)
-  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
-      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
-  ;;
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
+$as_echo_n "checking for joinable pthread attribute... " >&6; }
+       attr_name=unknown
+       for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+           cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <pthread.h>
+int
+main ()
+{
+int attr=$attr; return attr;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  attr_name=$attr; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+       done
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
+$as_echo "$attr_name" >&6; }
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
 
-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
-  ;;
+cat >>confdefs.h <<_ACEOF
+#define PTHREAD_CREATE_JOINABLE $attr_name
+_ACEOF
 
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
+        fi
 
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
+$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5
+$as_echo "${flag}" >&6; }
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        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
-  ;;
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
 
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
+               if test x"$GCC" != xyes; then
+          for ac_prog in xlc_r cc_r
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_PTHREAD_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$PTHREAD_CC"; then
+  ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_PTHREAD_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-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
+fi
+PTHREAD_CC=$ac_cv_prog_PTHREAD_CC
+if test -n "$PTHREAD_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5
+$as_echo "$PTHREAD_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+  test -n "$PTHREAD_CC" && break
+done
+test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}"
+
+        else
+          PTHREAD_CC=$CC
+       fi
+else
+        PTHREAD_CC="$CC"
+fi
 
 
 
 
 
+if test x"$ax_pthread_ok" = xyes; then
 
+$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
 
+        :
+else
+        ax_pthread_ok=no
 
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
 
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the Microsoft C compiler" >&5
+$as_echo_n "checking whether we are using the Microsoft C compiler... " >&6; }
+if ${ax_cv_c_compiler_ms+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
+#ifndef _MSC_VER
+       choke me
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ax_compiler_ms=yes
+else
+  ax_compiler_ms=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ax_cv_c_compiler_ms=$ax_compiler_ms
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_ms" >&5
+$as_echo "$ax_cv_c_compiler_ms" >&6; }
+if test X$ax_compiler_ms = Xno; then :
+  GL_CFLAGS="${PTHREAD_CFLAGS}"; GL_LIBS="${PTHREAD_LIBS} -lm"
+fi
 
+if test "X$no_x" != "Xyes"; then :
+  if test -n "$x_includes"; then :
+  GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"
+fi
+       if test -n "$x_libraries"; then :
+  GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"
+fi
+fi
 
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+for ac_header in GL/gl.h OpenGL/gl.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
+fi
 
+done
 
+CPPFLAGS="${ax_save_CPPFLAGS}"
 
+for ac_header in windows.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "windows.h" "ac_cv_header_windows_h" "$ac_includes_default"
+if test "x$ac_cv_header_windows_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_WINDOWS_H 1
+_ACEOF
 
+fi
 
+done
 
 
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL library" >&5
+$as_echo_n "checking for OpenGL library... " >&6; }
+if ${ax_cv_check_gl_libgl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_check_gl_libgl="no"
+case $host_cpu in
+  x86_64) ax_check_gl_libdir=lib64 ;;
+  *)      ax_check_gl_libdir=lib ;;
+esac
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+LIBS=""
+ax_check_libs="-lopengl32 -lGL"
+for ax_lib in ${ax_check_libs}; do
+  if test X$ax_compiler_ms = Xyes; then :
+  ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
+else
+  ax_try_lib="${ax_lib}"
+fi
+  LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif
+int
+main ()
+{
+glBegin(0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_gl_libgl="${ax_try_lib}"; break
+else
+  ax_check_gl_nvidia_flags="-L/usr/${ax_check_gl_libdir}/nvidia" LIBS="${ax_try_lib} ${ax_check_gl_nvidia_flags} ${GL_LIBS} ${ax_save_LIBS}"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif
+int
+main ()
+{
+glBegin(0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_gl_libgl="${ax_try_lib} ${ax_check_gl_nvidia_flags}"; break
+else
+  ax_check_gl_dylib_flag='-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib' LIBS="${ax_try_lib} ${ax_check_gl_dylib_flag} ${GL_LIBS} ${ax_save_LIBS}"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif
+int
+main ()
+{
+glBegin(0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_gl_libgl="${ax_try_lib} ${ax_check_gl_dylib_flag}"; break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+done
 
+if test "X$ax_cv_check_gl_libgl" = Xno -a "X$no_x" = Xyes; then :
+  LIBS='-framework OpenGL'
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif
+int
+main ()
+{
+glBegin(0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_gl_libgl="$LIBS"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
 
-    { echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
-hardcode_action_CXX=
-if test -n "$hardcode_libdir_flag_spec_CXX" ||
-   test -n "$runpath_var_CXX" ||
-   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+LIBS=${ax_save_LIBS}
+CPPFLAGS=${ax_save_CPPFLAGS}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_gl_libgl" >&5
+$as_echo "$ax_cv_check_gl_libgl" >&6; }
 
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct_CXX" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
-     test "$hardcode_minus_L_CXX" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_CXX=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_CXX=immediate
-  fi
+if test "X$ax_cv_check_gl_libgl" = Xno; then :
+  no_gl=yes; GL_CFLAGS=""; GL_LIBS=""
 else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_CXX=unsupported
+  GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"
 fi
-{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
-echo "${ECHO_T}$hardcode_action_CXX" >&6; }
+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 "$hardcode_action_CXX" = relink ||
-   test "$inherit_rpath_CXX" = yes; 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
 
 
 
 
 
+GLU_CFLAGS="${GL_CFLAGS}"
 
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+for ac_header in GL/glu.h OpenGL/glu.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
 
-  fi # test -n "$compiler"
+fi
 
-  CC=$lt_save_CC
-  LDCXX=$LD
-  LD=$lt_save_LD
-  GCC=$lt_save_GCC
-  with_gnu_ld=$lt_save_with_gnu_ld
-  lt_cv_path_LDCXX=$lt_cv_path_LD
-  lt_cv_path_LD=$lt_save_path_LD
-  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
-fi # test "$_lt_caught_CXX_error" != yes
+done
 
-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
+CPPFLAGS="${ax_save_CPPFLAGS}"
 
 
-GLU_CFLAGS="${GL_CFLAGS}"
-if test "X${with_apple_opengl_framework}" != "Xyes"; then
-  { echo "$as_me:$LINENO: checking for OpenGL Utility library" >&5
-echo $ECHO_N "checking for OpenGL Utility library... $ECHO_C" >&6; }
-if test "${ax_cv_check_glu_libglu+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL Utility library" >&5
+$as_echo_n "checking for OpenGL Utility library... " >&6; }
+if ${ax_cv_check_glu_libglu+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
   ax_cv_check_glu_libglu="no"
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lglu32 -lGLU"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
-    #
-    # libGLU typically links with libstdc++ on POSIX platforms. However,
-    # setting the language to C++ means that test program source is named
-    # "conftest.cc"; and Microsoft cl doesn't know what to do with such a
-    # file.
-    #
-    ac_ext=cpp
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+
+LIBS="${GL_LIBS} ${ax_save_LIBS}"
+ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-    if test X$ax_compiler_ms = Xyes; then
-      ac_ext=c
+if test X$ax_compiler_ms = Xyes; then :
+  ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-    fi
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+fi
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-# if HAVE_WINDOWS_H && defined(_WIN32)
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
 #   include <windows.h>
 # endif
-# include <GL/glu.h>
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# elif defined(HAVE_OPENGL_GLU_H)
+#   include <OpenGL/glu.h>
+# else
+#   error no glu.h
+# endif
 int
 main ()
 {
@@ -20481,117 +19491,186 @@ gluBeginCurve(0)
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
-  ax_cv_check_glu_libglu="${ax_try_lib}"; break
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_glu_libglu=yes
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
+  LIBS=""
+ax_check_libs="-lglu32 -lGLU"
+for ax_lib in ${ax_check_libs}; do
+  if test X$ax_compiler_ms = Xyes; then :
+  ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
+else
+  ax_try_lib="${ax_lib}"
+fi
+  LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# elif defined(HAVE_OPENGL_GLU_H)
+#   include <OpenGL/glu.h>
+# else
+#   error no glu.h
+# endif
+int
+main ()
+{
+gluBeginCurve(0)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_glu_libglu="${ax_try_lib}"; break
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+done
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-    if test X$ax_compiler_ms = Xyes; then
-      ac_ext=cpp
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test X$ax_compiler_ms = Xyes; then :
+  ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
-    fi
-    ac_ext=c
+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
 
-  done
-  LIBS=${ax_save_LIBS}
-  CPPFLAGS=${ax_save_CPPFLAGS}
-fi
-{ echo "$as_me:$LINENO: result: $ax_cv_check_glu_libglu" >&5
-echo "${ECHO_T}$ax_cv_check_glu_libglu" >&6; }
-  if test "X${ax_cv_check_glu_libglu}" = "Xno"; then
-    no_glu="yes"
-    GLU_CFLAGS=""
-    GLU_LIBS=""
-  else
-    GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"
-  fi
-fi
 
+LIBS=${ax_save_LIBS}
+CPPFLAGS=${ax_save_CPPFLAGS}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_glu_libglu" >&5
+$as_echo "$ax_cv_check_glu_libglu" >&6; }
+if test "X$ax_cv_check_glu_libglu" = Xno; then :
+  no_glu=yes; GLU_CFLAGS=""; GLU_LIBS=""
+else
+  if test "X$ax_cv_check_glu_libglu" = Xyes; then :
+  GLU_LIBS="$GL_LIBS"
+else
+  GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"
+fi
+fi
 
 
 
-if test "X$with_apple_opengl_framework" = "Xyes"; then
-  GLUT_CFLAGS="${GLU_CFLAGS}"
-  GLUT_LIBS="-framework GLUT -lobjc ${GL_LIBS}"
+if test "X$ax_cv_check_glu_libglu" != Xno; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for varargs GLU tesselator callback function type" >&5
+$as_echo_n "checking for varargs GLU tesselator callback function type... " >&6; }
+if ${ax_cv_varargs_glu_tesscb+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  GLUT_CFLAGS=${GLU_CFLAGS}
-  GLUT_LIBS=${GLU_LIBS}
+  ax_cv_varargs_glu_tesscb=no
+ax_save_CFLAGS="$CFLAGS"
+CFLAGS="$GL_CFLAGS $CFLAGS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-  #
-  # If X is present, assume GLUT depends on it.
-  #
-  if test "X${no_x}" != "Xyes"; then
-    GLUT_LIBS="${X_PRE_LIBS} -lXmu -lXi ${X_EXTRA_LIBS} ${GLUT_LIBS}"
-  fi
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# else
+#   include <OpenGL/glu.h>
+# endif
+int
+main ()
+{
+GLvoid (*func)(...); gluTessCallback(0, 0, func)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ax_cv_varargs_glu_tesscb=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+CFLAGS="$ax_save_CFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_varargs_glu_tesscb" >&5
+$as_echo "$ax_cv_varargs_glu_tesscb" >&6; }
+if test X$ax_cv_varargs_glu_tesscb = Xyes; then :
 
-  ac_ext=c
+$as_echo "#define HAVE_VARARGS_GLU_TESSCB 1" >>confdefs.h
+
+fi
+fi
+
+
+
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GLU_CFLAGS} ${CPPFLAGS}"
+for ac_header in GL/glut.h GLUT/glut.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+CPPFLAGS="${ax_save_CPPFLAGS}"
+
+GLUT_CFLAGS=${GLU_CFLAGS}
+GLUT_LIBS=${GLU_LIBS}
+
+
+
+if test X$no_x != Xyes; then :
+  GLUT_LIBS="${X_PRE_LIBS} -lXi ${X_EXTRA_LIBS} ${GLUT_LIBS}"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLUT library" >&5
+$as_echo_n "checking for GLUT library... " >&6; }
+if ${ax_cv_check_glut_libglut+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ax_cv_check_glut_libglut="no"
+ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GLUT_CFLAGS} ${CPPFLAGS}"
-
-  { echo "$as_me:$LINENO: checking for GLUT library" >&5
-echo $ECHO_N "checking for GLUT library... $ECHO_C" >&6; }
-if test "${ax_cv_check_glut_libglut+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GLUT_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+LIBS=""
+ax_check_libs="-lglut32 -lglut"
+for ax_lib in ${ax_check_libs}; do
+  if test X$ax_compiler_ms = Xyes; then :
+  ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
 else
-  ax_cv_check_glut_libglut="no"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lglut32 -lglut"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GLUT_LIBS} ${ax_save_LIBS}"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
+  ax_try_lib="${ax_lib}"
+fi
+  LIBS="${ax_try_lib} ${GLUT_LIBS} ${ax_save_LIBS}"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 # if HAVE_WINDOWS_H && defined(_WIN32)
 #   include <windows.h>
 # endif
-# include <GL/glut.h>
+# ifdef HAVE_GL_GLUT_H
+#   include <GL/glut.h>
+# elif defined(HAVE_GLUT_GLUT_H)
+#   include <GLUT/glut.h>
+# else
+#   error no glut.h
+# endif
 int
 main ()
 {
@@ -20600,82 +19679,111 @@ glutMainLoop()
   return 0;
 }
 _ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&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); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest$ac_exeext &&
-       $as_test_x conftest$ac_exeext; then
+if ac_fn_c_try_link "$LINENO"; then :
   ax_cv_check_glut_libglut="${ax_try_lib}"; break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+done
 
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
-      conftest$ac_exeext conftest.$ac_ext
-
-  done
-  LIBS=${ax_save_LIBS}
+if test "X$ax_cv_check_glut_libglut" = Xno -a "X$no_x" = Xyes; then :
+  LIBS='-framework GLUT'
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+# if HAVE_WINDOWS_H && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GLUT_H
+#   include <GL/glut.h>
+# elif defined(HAVE_GLUT_GLUT_H)
+#   include <GLUT/glut.h>
+# else
+#   error no glut.h
+# endif
+int
+main ()
+{
+glutMainLoop()
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ax_cv_check_glut_libglut="$LIBS"
 fi
-{ echo "$as_me:$LINENO: result: $ax_cv_check_glut_libglut" >&5
-echo "${ECHO_T}$ax_cv_check_glut_libglut" >&6; }
-  CPPFLAGS="${ax_save_CPPFLAGS}"
-  ac_ext=c
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+
+CPPFLAGS="${ax_save_CPPFLAGS}"
+LIBS="${ax_save_LIBS}"
+ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_glut_libglut" >&5
+$as_echo "$ax_cv_check_glut_libglut" >&6; }
 
-  if test "X${ax_cv_check_glut_libglut}" = "Xno"; then
-    no_glut="yes"
-    GLUT_CFLAGS=""
-    GLUT_LIBS=""
-  else
-    GLUT_LIBS="${ax_cv_check_glut_libglut} ${GLUT_LIBS}"
-  fi
+if test "X$ax_cv_check_glut_libglut" = Xno; then :
+  no_glut="yes"; GLUT_CFLAGS=""; GLUT_LIBS=""
+else
+  GLUT_LIBS="${ax_cv_check_glut_libglut} ${GLUT_LIBS}"
+fi
+
+
+
+
+
+if test "$no_x" != "yes" -a "$no_gl" != "yes" \
+       -a "$no_glu" != "yes" -a "$no_glut" != "yes" ; then
+  HAVE_OPENGL=yes
+fi
+
+ if test "$HAVE_OPENGL" = "yes"; then
+  HAVE_OPENGL_TRUE=
+  HAVE_OPENGL_FALSE='#'
+else
+  HAVE_OPENGL_TRUE='#'
+  HAVE_OPENGL_FALSE=
 fi
 
 
 
+win32_io_ok=no
+case "${host_os}" in
+    cygwin*)
+        ;;
+    *)
+        if test x"$ac_cv_header_windows_h" = xyes; then
+            win32_io_ok=yes
 
+$as_echo "#define USE_WIN32_FILEIO 1" >>confdefs.h
 
-if test "$no_x" != "yes" -a "$no_gl" != "yes" \
-       -a "$no_glu" != "yes" -a "$no_glut" != "yes" ; then
-  HAVE_OPENGL=yes
+       fi
+        ;;
+esac
+ if test "$win32_io_ok" = yes; then
+  WIN32_IO_TRUE=
+  WIN32_IO_FALSE='#'
+else
+  WIN32_IO_TRUE='#'
+  WIN32_IO_FALSE=
 fi
 
 
 
-if test "$HAVE_OPENGL" = "yes"; then
-  HAVE_OPENGL_TRUE=
-  HAVE_OPENGL_FALSE='#'
-else
-  HAVE_OPENGL_TRUE='#'
-  HAVE_OPENGL_FALSE=
-fi
+
+
 
 
 
 
 # Check whether --enable-strip-chopping was given.
-if test "${enable_strip_chopping+set}" = set; then
+if test "${enable_strip_chopping+set}" = set; then :
   enableval=$enable_strip_chopping; HAVE_STRIPCHOP=$enableval
 else
   HAVE_STRIPCHOP=yes
@@ -20683,7 +19791,7 @@ fi
 
 
 # Check whether --with-default-strip-size was given.
-if test "${with_default_strip_size+set}" = set; then
+if test "${with_default_strip_size+set}" = set; then :
   withval=$with_default_strip_size;
 fi
 
@@ -20691,9 +19799,7 @@ fi
 if test "$HAVE_STRIPCHOP" = "yes" \
        -a "x$with_default_strip_size" != "xno"; then
 
-cat >>confdefs.h <<\_ACEOF
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-_ACEOF
+$as_echo "#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP" >>confdefs.h
 
 
   if test "x$with_default_strip_size" = "x" \
@@ -20710,14 +19816,44 @@ _ACEOF
 fi
 
 
-cat >>confdefs.h <<\_ACEOF
-#define SUBIFD_SUPPORT 1
-_ACEOF
+# Check whether --enable-defer-strile-load was given.
+if test "${enable_defer_strile_load+set}" = set; then :
+  enableval=$enable_defer_strile_load; HAVE_DEFER_STRILE_LOAD=$enableval
+else
+  HAVE_DEFER_STRILE_LOAD=no
+fi
+
+
+if test "$HAVE_DEFER_STRILE_LOAD" = "yes" ; then
+
+$as_echo "#define DEFER_STRILE_LOAD 1" >>confdefs.h
+
+
+fi
+
+
+# Check whether --enable-chunky-strip-read was given.
+if test "${enable_chunky_strip_read+set}" = set; then :
+  enableval=$enable_chunky_strip_read; HAVE_CHUNKY_STRIP_READ=$enableval
+else
+  HAVE_CHUNKY_STRIP_READ=no
+fi
+
+
+if test "$HAVE_CHUNKY_STRIP_READ" = "yes" ; then
+
+$as_echo "#define CHUNKY_STRIP_READ_SUPPORT 1" >>confdefs.h
+
+
+fi
+
+
+$as_echo "#define SUBIFD_SUPPORT 1" >>confdefs.h
 
 
 
 # Check whether --enable-extrasample-as-alpha was given.
-if test "${enable_extrasample_as_alpha+set}" = set; then
+if test "${enable_extrasample_as_alpha+set}" = set; then :
   enableval=$enable_extrasample_as_alpha; HAVE_EXTRASAMPLE_AS_ALPHA=$enableval
 else
   HAVE_EXTRASAMPLE_AS_ALPHA=yes
 
 if test "$HAVE_EXTRASAMPLE_AS_ALPHA" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-_ACEOF
+$as_echo "#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1" >>confdefs.h
 
 fi
 
 
 # Check whether --enable-check-ycbcr-subsampling was given.
-if test "${enable_check_ycbcr_subsampling+set}" = set; then
+if test "${enable_check_ycbcr_subsampling+set}" = set; then :
   enableval=$enable_check_ycbcr_subsampling; CHECK_JPEG_YCBCR_SUBSAMPLING=$enableval
 else
   CHECK_JPEG_YCBCR_SUBSAMPLING=yes
@@ -20743,9 +19877,7 @@ fi
 
 if test "$CHECK_JPEG_YCBCR_SUBSAMPLING" = "yes" ; then
 
-cat >>confdefs.h <<\_ACEOF
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-_ACEOF
+$as_echo "#define CHECK_JPEG_YCBCR_SUBSAMPLING 1" >>confdefs.h
 
 fi
 
@@ -20755,7 +19887,7 @@ fi
 ac_config_headers="$ac_config_headers libtiff/tif_config.h libtiff/tiffconf.h"
 
 
-ac_config_files="$ac_config_files Makefile contrib/Makefile contrib/acorn/Makefile contrib/addtiffo/Makefile contrib/dbs/Makefile contrib/dbs/xtiff/Makefile contrib/iptcutil/Makefile contrib/mac-cw/Makefile contrib/mac-mpw/Makefile contrib/mfs/Makefile contrib/ojpeg/Makefile contrib/pds/Makefile contrib/ras/Makefile contrib/stream/Makefile contrib/tags/Makefile contrib/win_dib/Makefile html/Makefile html/images/Makefile html/man/Makefile libtiff/Makefile man/Makefile port/Makefile test/Makefile tools/Makefile"
+ac_config_files="$ac_config_files Makefile build/Makefile contrib/Makefile contrib/addtiffo/Makefile contrib/dbs/Makefile contrib/dbs/xtiff/Makefile contrib/iptcutil/Makefile contrib/mfs/Makefile contrib/pds/Makefile contrib/ras/Makefile contrib/stream/Makefile contrib/tags/Makefile contrib/win_dib/Makefile html/Makefile html/images/Makefile html/man/Makefile libtiff-4.pc libtiff/Makefile man/Makefile port/Makefile test/Makefile tools/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -20784,12 +19916,13 @@ _ACEOF
     case $ac_val in #(
     *${as_nl}*)
       case $ac_var in #(
-      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
-echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
       esac
       case $ac_var in #(
       _ | IFS | as_nl) ;; #(
-      *) $as_unset $ac_var ;;
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
       esac ;;
     esac
   done
@@ -20797,8 +19930,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
   (set) 2>&1 |
     case $as_nl`(ac_space=' '; set) 2>&1` in #(
     *${as_nl}ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      # `set' does not quote correctly, so add quotesdouble-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
       sed -n \
        "s/'/'\\\\''/g;
          s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
@@ -20820,13 +19953,24 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&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 "$as_me:$LINENO: updating cache $cache_file" >&5
-echo "$as_me: updating cache $cache_file" >&6;}
-    cat confcache >$cache_file
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
   else
-    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
-echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
   fi
 fi
 rm -f confcache
@@ -20839,83 +19983,83 @@ DEFS=-DHAVE_CONFIG_H
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
-  ac_i=`echo "$ac_i" | sed "$ac_script"`
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
   # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
   #    will be set to the directory where LIBOBJS objects are built.
-  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
-  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
 done
 LIBOBJS=$ac_libobjs
 
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+ if test -n "$EXEEXT"; then
+  am__EXEEXT_TRUE=
+  am__EXEEXT_FALSE='#'
+else
+  am__EXEEXT_TRUE='#'
+  am__EXEEXT_FALSE=
+fi
+
 if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-if test -z "${HAVE_RPATH_TRUE}" && test -z "${HAVE_RPATH_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"HAVE_RPATH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_RPATH\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${HAVE_CXX_TRUE}" && test -z "${HAVE_CXX_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"HAVE_CXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_CXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+if test -z "${HAVE_LD_VERSION_SCRIPT_TRUE}" && test -z "${HAVE_LD_VERSION_SCRIPT_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_LD_VERSION_SCRIPT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+
+if test -z "${HAVE_RPATH_TRUE}" && test -z "${HAVE_RPATH_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_RPATH\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${HAVE_CXX_TRUE}" && test -z "${HAVE_CXX_FALSE}"; then
+  as_fn_error $? "conditional \"HAVE_CXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${HAVE_OPENGL_TRUE}" && test -z "${HAVE_OPENGL_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"HAVE_OPENGL\" was never defined.
-Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_OPENGL\" was never defined.
-Usually this means the macro was only invoked conditionally." >&2;}
-   { (exit 1); exit 1; }; }
+  as_fn_error $? "conditional \"HAVE_OPENGL\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${WIN32_IO_TRUE}" && test -z "${WIN32_IO_FALSE}"; then
+  as_fn_error $? "conditional \"WIN32_IO\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
 #! $SHELL
 # Generated by $as_me.
 # Run this file to recreate the current configuration.
@@ -20925,59 +20069,79 @@ cat >$CONFIG_STATUS <<_ACEOF
 debug=false
 ac_cs_recheck=false
 ac_cs_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
 
 # Be more Bourne compatible
 DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+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
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
   # is contrary to our usage.  Disable this feature.
   alias -g '${1+"$@"}'='"$@"'
   setopt NO_GLOB_SUBST
 else
-  case `(set -o) 2>/dev/null` in
-  *posix*) set -o posix ;;
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
 esac
-
 fi
 
 
-
-
-# PATH needs CR
-# 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=';'
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
   else
-    PATH_SEPARATOR=:
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
   fi
-  rm -f conf$$.sh
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
 fi
 
-# Support unset when possible.
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
 fi
 
 
 # there to prevent editors from complaining about space-tab.
 # (If _AS_PATH_WALK were called with IFS unset, it would disable word
 # splitting by setting IFS to empty value.)
-as_nl='
-'
 IFS=" ""       $as_nl"
 
 # Find who we are.  Look in the path if we contain no directory separator.
-case $0 in
+as_myself=
+case $0 in #((
   *[\\/]* ) as_myself=$0 ;;
   *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
 IFS=$as_save_IFS
 
      ;;
@@ -21010,32 +20173,111 @@ if test "x$as_myself" = x; then
   as_myself=$0
 fi
 if test ! -f "$as_myself"; then
-  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  { (exit 1); exit 1; }
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
 fi
 
-# Work around bugs in pre-3.0 UWIN ksh.
-for as_var in ENV MAIL MAILPATH
-do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
 done
 PS1='$ '
 PS2='> '
 PS4='+ '
 
 # NLS nuisances.
-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) >/dev/null 2>&1 && $as_unset $as_var
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
   fi
-done
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
 
-# Required to use basename.
 if expr a : '\(a\)' >/dev/null 2>&1 &&
    test "X`expr 00001 : '.*\(...\)'`" = X001; then
   as_expr=expr
@@ -21049,13 +20291,17 @@ else
   as_basename=false
 fi
 
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
 
-# 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" |
+$as_echo X/"$0" |
     sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
@@ -21070,131 +20316,118 @@ echo X/"$0" |
          }
          s/.*/./; q'`
 
-# CDPATH.
-$as_unset CDPATH
-
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
-
-  # 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 after each line using $LINENO; the second 'sed'
-  # does the real work.  The second script uses 'N' to pair each
-  # line-number line with the line containing $LINENO, 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
-  # scripts with optimization help from Paolo Bonzini.  Blame Lee
-  # E. McMahon (1931-1989) for sed's syntax.  :-)
-  sed -n '
-    p
-    /[$]LINENO/=
-  ' <$as_myself |
-    sed '
-      s/[$]LINENO.*/&-/
-      t lineno
-      b
-      :lineno
-      N
-      :loop
-      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
-      t loop
-      s/-\n.*//
-    ' >$as_me.lineno &&
-  chmod +x "$as_me.lineno" ||
-    { 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 sensitive to this).
-  . "./$as_me.lineno"
-  # Exit status is that of the last command.
-  exit
-}
-
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
 
 ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in
+case `echo -n x` in #(((((
 -n*)
-  case `echo 'x\c'` in
+  case `echo 'xy\c'` in
   *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  *)   ECHO_C='\c';;
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
   esac;;
 *)
   ECHO_N='-n';;
 esac
 
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
 rm -f conf$$ conf$$.exe conf$$.file
 if test -d conf$$.dir; then
   rm -f conf$$.dir/conf$$.file
 else
   rm -f conf$$.dir
-  mkdir conf$$.dir
-fi
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s='ln -s'
-  # ... but there are two gotchas:
-  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
-  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
-  # In both cases, we have to default to `cp -p'.
-  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-    as_ln_s='cp -p'
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -pR'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -pR'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -pR'
+  fi
+else
+  as_ln_s='cp -pR'
 fi
 rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
 rmdir conf$$.dir 2>/dev/null
 
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
 if mkdir -p . 2>/dev/null; then
-  as_mkdir_p=:
+  as_mkdir_p='mkdir -p "$as_dir"'
 else
   test -d ./-p && rmdir ./-p
   as_mkdir_p=false
 fi
 
-if test -x / >/dev/null 2>&1; then
-  as_test_x='test -x'
-else
-  if ls -dL / >/dev/null 2>&1; then
-    as_ls_L_option=L
-  else
-    as_ls_L_option=
-  fi
-  as_test_x='
-    eval sh -c '\''
-      if test -d "$1"; then
-        test -d "$1/.";
-      else
-       case $1 in
-        -*)set "./$1";;
-       esac;
-       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
-       ???[sx]*):;;*)false;;esac;fi
-    '\'' sh
-  '
-fi
-as_executable_p=$as_test_x
+
+# as_fn_executable_p FILE
+# -----------------------
+# Test if FILE is an executable regular file.
+as_fn_executable_p ()
+{
+  test -f "$1" && test -x "$1"
+} # as_fn_executable_p
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
 
 # Sed expression to map a string onto a valid CPP name.
 as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -21204,13 +20437,19 @@ as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
 
 exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
 
-# Save the log message, to keep $[0] and so on meaningful, and to
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by LibTIFF Software $as_me 3.8.2, which was
-generated by GNU Autoconf 2.61.  Invocation command line was
+This file was extended by LibTIFF Software $as_me 4.0.3, which was
+generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -21223,7 +20462,16 @@ on `(hostname || uname -n) 2>/dev/null | sed 1q`
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<_ACEOF
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+case $ac_config_headers in *"
+"*) set x $ac_config_headers; shift; ac_config_headers=$*;;
+esac
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 config_headers="$ac_config_headers"
@@ -21231,22 +20479,25 @@ config_commands="$ac_config_commands"
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
 
-Usage: $0 [OPTIONS] [FILE]...
+Usage: $0 [OPTION]... [TAG]...
 
   -h, --help       print this help, then exit
   -V, --version    print version number and configuration settings, then exit
-  -q, --quiet      do not print progress messages
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
   -d, --debug      don't remove temporary files
       --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                  instantiate the configuration file FILE
-  --header=FILE[:TEMPLATE]
-                  instantiate the configuration header FILE
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+      --header=FILE[:TEMPLATE]
+                   instantiate the configuration header FILE
 
 Configuration files:
 $config_files
@@ -21257,36 +20508,44 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <bug-autoconf@gnu.org>."
+Report bugs to <tiff@lists.maptools.org>."
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-LibTIFF Software config.status 3.8.2
-configured by $0, generated by GNU Autoconf 2.61,
-  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+LibTIFF Software config.status 4.0.3
+configured by $0, generated by GNU Autoconf 2.69,
+  with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
 INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
+test -n "\$AWK" || AWK=awk
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
-# 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.
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
 ac_need_defaults=:
 while test $# != 0
 do
   case $1 in
-  --*=*)
+  --*=?*)
     ac_option=`expr "X$1" : 'X\([^=]*\)='`
     ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
     ac_shift=:
     ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
   *)
     ac_option=$1
     ac_optarg=$2
   -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
     ac_cs_recheck=: ;;
   --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
-    echo "$ac_cs_version"; exit ;;
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
   --debug | --debu | --deb | --de | --d | -d )
     debug=: ;;
   --file | --fil | --fi | --f )
     $ac_shift
-    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
     ac_need_defaults=false;;
   --header | --heade | --head | --hea )
     $ac_shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    as_fn_append CONFIG_HEADERS " '$ac_optarg'"
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    { echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; };;
+    as_fn_error $? "ambiguous option: \`$1'
+Try \`$0 --help' for more information.";;
   --help | --hel | -h )
-    echo "$ac_cs_usage"; exit ;;
+    $as_echo "$ac_cs_usage"; exit ;;
   -q | -quiet | --quiet | --quie | --qui | --qu | --q \
   | -silent | --silent | --silen | --sile | --sil | --si | --s)
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) { echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; } ;;
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
 
-  *) ac_config_targets="$ac_config_targets $1"
+  *) as_fn_append ac_config_targets " $1"
      ac_need_defaults=false ;;
 
   esac
@@ -21341,27 +20607,29 @@ if $ac_cs_silent; then
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 if \$ac_cs_recheck; then
-  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
-  CONFIG_SHELL=$SHELL
+  set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
   export CONFIG_SHELL
-  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  exec "\$@"
 fi
 
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 exec 5>>config.log
 {
   echo
   sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
 ## Running $as_me. ##
 _ASBOX
-  echo "$ac_log"
+  $as_echo "$ac_log"
 } >&5
 
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
 # INIT-COMMANDS
 #
@@ -21375,182 +20643,229 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 sed_quote_subst='$sed_quote_subst'
 double_quote_subst='$double_quote_subst'
 delay_variable_subst='$delay_variable_subst'
-macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`'
-enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`'
-pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`'
-enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`'
-host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`'
-host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`'
-host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`'
-build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`'
-build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`'
-build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`'
-SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`'
-Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`'
-GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`'
-EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`'
-FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`'
-LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`'
-NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`'
-LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`'
-exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`'
-AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`'
-compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`'
-GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`'
-objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`'
-SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`'
-ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`'
-need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`'
-libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`'
-need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`'
-version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`'
-striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`'
-AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`'
-predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`'
-LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`'
-compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
 
 LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
 compiler='$compiler_DEFAULT'
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
 # Quote evaled strings.
-for var in SED \
+for var in AS \
+DLLTOOL \
+OBJDUMP \
+SHELL \
+ECHO \
+PATH_SEPARATOR \
+SED \
 GREP \
 EGREP \
 FGREP \
 LD \
 NM \
 LN_S \
+lt_SP2NL \
+lt_NL2SP \
 reload_flag \
 deplibs_check_method \
 file_magic_cmd \
+file_magic_glob \
+want_nocaseglob \
+sharedlib_from_linklib_cmd \
 AR \
 AR_FLAGS \
+archiver_list_spec \
 STRIP \
 RANLIB \
 CC \
@@ -21559,24 +20874,29 @@ compiler \
 lt_cv_sys_global_symbol_pipe \
 lt_cv_sys_global_symbol_to_cdecl \
 lt_cv_sys_global_symbol_to_c_name_address \
-SHELL \
-ECHO \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+nm_file_list_spec \
 lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_wl \
 lt_prog_compiler_pic \
+lt_prog_compiler_wl \
 lt_prog_compiler_static \
 lt_cv_prog_compiler_c_o \
 need_locks \
+MANIFEST_TOOL \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
 shrext_cmds \
 export_dynamic_flag_spec \
 whole_archive_flag_spec \
+compiler_needs_object \
 with_gnu_ld \
 allow_undefined_flag \
 no_undefined_flag \
 hardcode_libdir_flag_spec \
-hardcode_libdir_flag_spec_ld \
 hardcode_libdir_separator \
-fix_srcfile_path \
 exclude_expsyms \
 include_expsyms \
 file_list_spec \
@@ -21584,41 +20904,44 @@ variables_saved_for_relink \
 libname_spec \
 library_names_spec \
 soname_spec \
+install_override_mode \
 finish_eval \
 old_striplib \
 striplib \
+compiler_lib_search_dirs \
 predep_objects \
 postdep_objects \
 predeps \
 postdeps \
 compiler_lib_search_path \
 LD_CXX \
+reload_flag_CXX \
 compiler_CXX \
 lt_prog_compiler_no_builtin_flag_CXX \
-lt_prog_compiler_wl_CXX \
 lt_prog_compiler_pic_CXX \
+lt_prog_compiler_wl_CXX \
 lt_prog_compiler_static_CXX \
 lt_cv_prog_compiler_c_o_CXX \
 export_dynamic_flag_spec_CXX \
 whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
 with_gnu_ld_CXX \
 allow_undefined_flag_CXX \
 no_undefined_flag_CXX \
 hardcode_libdir_flag_spec_CXX \
-hardcode_libdir_flag_spec_ld_CXX \
 hardcode_libdir_separator_CXX \
-fix_srcfile_path_CXX \
 exclude_expsyms_CXX \
 include_expsyms_CXX \
 file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
 predep_objects_CXX \
 postdep_objects_CXX \
 predeps_CXX \
 postdeps_CXX \
 compiler_lib_search_path_CXX; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -21640,11 +20963,13 @@ module_cmds \
 module_expsym_cmds \
 export_symbols_cmds \
 prelink_cmds \
+postlink_cmds \
 postinstall_cmds \
 postuninstall_cmds \
 finish_cmds \
 sys_lib_search_path_spec \
 sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
 old_archive_cmds_CXX \
 old_archive_from_new_cmds_CXX \
 old_archive_from_expsyms_cmds_CXX \
@@ -21653,10 +20978,11 @@ archive_expsym_cmds_CXX \
 module_cmds_CXX \
 module_expsym_cmds_CXX \
 export_symbols_cmds_CXX \
-prelink_cmds_CXX; do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+prelink_cmds_CXX \
+postlink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -21664,14 +20990,9 @@ prelink_cmds_CXX; do
     esac
 done
 
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\$0 --fallback-echo"')  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\`
-  ;;
-esac
-
 ac_aux_dir='$ac_aux_dir'
 xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
 
 # See if we are running on zsh, and set the options which allow our
 # commands through without removal of \ escapes INIT.
@@ -21693,7 +21014,7 @@ fi
 
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 
 # Handling of arguments.
 for ac_config_target in $ac_config_targets
     "libtiff/tif_config.h") CONFIG_HEADERS="$CONFIG_HEADERS libtiff/tif_config.h" ;;
     "libtiff/tiffconf.h") CONFIG_HEADERS="$CONFIG_HEADERS libtiff/tiffconf.h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "build/Makefile") CONFIG_FILES="$CONFIG_FILES build/Makefile" ;;
     "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;;
-    "contrib/acorn/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/acorn/Makefile" ;;
     "contrib/addtiffo/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/addtiffo/Makefile" ;;
     "contrib/dbs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dbs/Makefile" ;;
     "contrib/dbs/xtiff/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/dbs/xtiff/Makefile" ;;
     "contrib/iptcutil/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/iptcutil/Makefile" ;;
-    "contrib/mac-cw/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/mac-cw/Makefile" ;;
-    "contrib/mac-mpw/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/mac-mpw/Makefile" ;;
     "contrib/mfs/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/mfs/Makefile" ;;
-    "contrib/ojpeg/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/ojpeg/Makefile" ;;
     "contrib/pds/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/pds/Makefile" ;;
     "contrib/ras/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/ras/Makefile" ;;
     "contrib/stream/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/stream/Makefile" ;;
     "html/Makefile") CONFIG_FILES="$CONFIG_FILES html/Makefile" ;;
     "html/images/Makefile") CONFIG_FILES="$CONFIG_FILES html/images/Makefile" ;;
     "html/man/Makefile") CONFIG_FILES="$CONFIG_FILES html/man/Makefile" ;;
+    "libtiff-4.pc") CONFIG_FILES="$CONFIG_FILES libtiff-4.pc" ;;
     "libtiff/Makefile") CONFIG_FILES="$CONFIG_FILES libtiff/Makefile" ;;
     "man/Makefile") CONFIG_FILES="$CONFIG_FILES man/Makefile" ;;
     "port/Makefile") CONFIG_FILES="$CONFIG_FILES port/Makefile" ;;
     "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
     "tools/Makefile") CONFIG_FILES="$CONFIG_FILES tools/Makefile" ;;
 
-  *) { { 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; }; };;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
 done
 
 # after its creation but before its name has been assigned to `$tmp'.
 $debug ||
 {
-  tmp=
+  tmp= ac_tmp=
   trap 'exit_status=$?
-  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
 ' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
+  trap 'as_fn_exit 1' 1 2 13 15
 }
 # Create a (secure) tmp directory for tmp files.
 
 {
   tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
+  test -d "$tmp"
 }  ||
 {
   tmp=./conf$$-$RANDOM
-  (umask 077 && mkdir "$tmp")
-} ||
-{
-   echo "$me: cannot create a temporary directory in ." >&2
-   { (exit 1); exit 1; }
-}
-
-#
-# Set up the sed scripts for 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
-
-_ACEOF
-
-
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
 
-ac_delim='%!_!# '
-for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-SHELL!$SHELL$ac_delim
-PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
-PACKAGE_NAME!$PACKAGE_NAME$ac_delim
-PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
-PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
-PACKAGE_STRING!$PACKAGE_STRING$ac_delim
-PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
-exec_prefix!$exec_prefix$ac_delim
-prefix!$prefix$ac_delim
-program_transform_name!$program_transform_name$ac_delim
-bindir!$bindir$ac_delim
-sbindir!$sbindir$ac_delim
-libexecdir!$libexecdir$ac_delim
-datarootdir!$datarootdir$ac_delim
-datadir!$datadir$ac_delim
-sysconfdir!$sysconfdir$ac_delim
-sharedstatedir!$sharedstatedir$ac_delim
-localstatedir!$localstatedir$ac_delim
-includedir!$includedir$ac_delim
-oldincludedir!$oldincludedir$ac_delim
-docdir!$docdir$ac_delim
-infodir!$infodir$ac_delim
-htmldir!$htmldir$ac_delim
-dvidir!$dvidir$ac_delim
-pdfdir!$pdfdir$ac_delim
-psdir!$psdir$ac_delim
-libdir!$libdir$ac_delim
-localedir!$localedir$ac_delim
-mandir!$mandir$ac_delim
-DEFS!$DEFS$ac_delim
-ECHO_C!$ECHO_C$ac_delim
-ECHO_N!$ECHO_N$ac_delim
-ECHO_T!$ECHO_T$ac_delim
-LIBS!$LIBS$ac_delim
-build_alias!$build_alias$ac_delim
-host_alias!$host_alias$ac_delim
-target_alias!$target_alias$ac_delim
-build!$build$ac_delim
-build_cpu!$build_cpu$ac_delim
-build_vendor!$build_vendor$ac_delim
-build_os!$build_os$ac_delim
-host!$host$ac_delim
-host_cpu!$host_cpu$ac_delim
-host_vendor!$host_vendor$ac_delim
-host_os!$host_os$ac_delim
-INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
-INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
-INSTALL_DATA!$INSTALL_DATA$ac_delim
-CYGPATH_W!$CYGPATH_W$ac_delim
-PACKAGE!$PACKAGE$ac_delim
-VERSION!$VERSION$ac_delim
-ACLOCAL!$ACLOCAL$ac_delim
-AUTOCONF!$AUTOCONF$ac_delim
-AUTOMAKE!$AUTOMAKE$ac_delim
-AUTOHEADER!$AUTOHEADER$ac_delim
-MAKEINFO!$MAKEINFO$ac_delim
-install_sh!$install_sh$ac_delim
-STRIP!$STRIP$ac_delim
-INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
-mkdir_p!$mkdir_p$ac_delim
-AWK!$AWK$ac_delim
-SET_MAKE!$SET_MAKE$ac_delim
-am__leading_dot!$am__leading_dot$ac_delim
-AMTAR!$AMTAR$ac_delim
-am__tar!$am__tar$ac_delim
-am__untar!$am__untar$ac_delim
-MAINTAINER_MODE_TRUE!$MAINTAINER_MODE_TRUE$ac_delim
-MAINTAINER_MODE_FALSE!$MAINTAINER_MODE_FALSE$ac_delim
-MAINT!$MAINT$ac_delim
-LIBTIFF_MAJOR_VERSION!$LIBTIFF_MAJOR_VERSION$ac_delim
-LIBTIFF_MINOR_VERSION!$LIBTIFF_MINOR_VERSION$ac_delim
-LIBTIFF_MICRO_VERSION!$LIBTIFF_MICRO_VERSION$ac_delim
-LIBTIFF_ALPHA_VERSION!$LIBTIFF_ALPHA_VERSION$ac_delim
-LIBTIFF_VERSION!$LIBTIFF_VERSION$ac_delim
-LIBTIFF_VERSION_INFO!$LIBTIFF_VERSION_INFO$ac_delim
-LIBTIFF_RELEASE_DATE!$LIBTIFF_RELEASE_DATE$ac_delim
-CC!$CC$ac_delim
-CFLAGS!$CFLAGS$ac_delim
-LDFLAGS!$LDFLAGS$ac_delim
-CPPFLAGS!$CPPFLAGS$ac_delim
-ac_ct_CC!$ac_ct_CC$ac_delim
-EXEEXT!$EXEEXT$ac_delim
-OBJEXT!$OBJEXT$ac_delim
-DEPDIR!$DEPDIR$ac_delim
-am__include!$am__include$ac_delim
-am__quote!$am__quote$ac_delim
-AMDEP_TRUE!$AMDEP_TRUE$ac_delim
-AMDEP_FALSE!$AMDEP_FALSE$ac_delim
-AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
-CCDEPMODE!$CCDEPMODE$ac_delim
-am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
-am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
-LN_S!$LN_S$ac_delim
-LIBTOOL!$LIBTOOL$ac_delim
-SED!$SED$ac_delim
-GREP!$GREP$ac_delim
-EGREP!$EGREP$ac_delim
-_ACEOF
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
-    break
-  elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
-  else
-    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
-  fi
-done
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
 fi
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-_ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-CEOF$ac_eof
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
 _ACEOF
 
 
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
-  cat >conf$$subs.sed <<_ACEOF
-FGREP!$FGREP$ac_delim
-LD!$LD$ac_delim
-DUMPBIN!$DUMPBIN$ac_delim
-ac_ct_DUMPBIN!$ac_ct_DUMPBIN$ac_delim
-NM!$NM$ac_delim
-AR!$AR$ac_delim
-RANLIB!$RANLIB$ac_delim
-lt_ECHO!$lt_ECHO$ac_delim
-CPP!$CPP$ac_delim
-AS!$AS$ac_delim
-DLLTOOL!$DLLTOOL$ac_delim
-OBJDUMP!$OBJDUMP$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-HAVE_RPATH_TRUE!$HAVE_RPATH_TRUE$ac_delim
-HAVE_RPATH_FALSE!$HAVE_RPATH_FALSE$ac_delim
-LIBTIFF_DOCDIR!$LIBTIFF_DOCDIR$ac_delim
-HAVE_CXX_TRUE!$HAVE_CXX_TRUE$ac_delim
-HAVE_CXX_FALSE!$HAVE_CXX_FALSE$ac_delim
-XMKMF!$XMKMF$ac_delim
-X_CFLAGS!$X_CFLAGS$ac_delim
-X_PRE_LIBS!$X_PRE_LIBS$ac_delim
-X_LIBS!$X_LIBS$ac_delim
-X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim
-acx_pthread_config!$acx_pthread_config$ac_delim
-PTHREAD_CC!$PTHREAD_CC$ac_delim
-PTHREAD_LIBS!$PTHREAD_LIBS$ac_delim
-PTHREAD_CFLAGS!$PTHREAD_CFLAGS$ac_delim
-GL_CFLAGS!$GL_CFLAGS$ac_delim
-GL_LIBS!$GL_LIBS$ac_delim
-CXX!$CXX$ac_delim
-CXXFLAGS!$CXXFLAGS$ac_delim
-ac_ct_CXX!$ac_ct_CXX$ac_delim
-CXXDEPMODE!$CXXDEPMODE$ac_delim
-am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
-am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
-CXXCPP!$CXXCPP$ac_delim
-GLU_CFLAGS!$GLU_CFLAGS$ac_delim
-GLU_LIBS!$GLU_LIBS$ac_delim
-GLUT_CFLAGS!$GLUT_CFLAGS$ac_delim
-GLUT_LIBS!$GLUT_LIBS$ac_delim
-HAVE_OPENGL_TRUE!$HAVE_OPENGL_TRUE$ac_delim
-HAVE_OPENGL_FALSE!$HAVE_OPENGL_FALSE$ac_delim
-LIBDIR!$LIBDIR$ac_delim
-LTLIBOBJS!$LTLIBOBJS$ac_delim
-_ACEOF
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 44; then
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
     break
   elif $ac_last_try; then
-    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
-   { (exit 1); exit 1; }; }
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
 done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
 
-ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
-if test -n "$ac_eof"; then
-  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
-  ac_eof=`expr $ac_eof + 1`
-fi
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
 
-cat >>$CONFIG_STATUS <<_ACEOF
-cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACAWK
 _ACEOF
-sed '
-s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
-s/^/s,@/; s/!/@,|#_!!_#|/
-:n
-t n
-s/'"$ac_delim"'$/,g/; t
-s/$/\\/; p
-N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
-' >>$CONFIG_STATUS <conf$$subs.sed
-rm -f conf$$subs.sed
-cat >>$CONFIG_STATUS <<_ACEOF
-:end
-s/|#_!!_#|//g
-CEOF$ac_eof
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
 # trailing colons and then remove the whole line if VPATH becomes empty
 # (actually we leave an empty line to preserve line numbers).
 if test "x$srcdir" = x.; then
-  ac_vpsub='/^[         ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[    ]*\):*/\1/
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
 s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
 s/^[^=]*=[      ]*$//
 }'
 fi
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_FILES"
 
+# Set up the scripts for CONFIG_HEADERS section.
+# No need to generate them if there are no CONFIG_HEADERS.
+# This happens for instance with `./config.status Makefile'.
+if test -n "$CONFIG_HEADERS"; then
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
+BEGIN {
+_ACEOF
+
+# Transform confdefs.h into an awk script `defines.awk', embedded as
+# here-document in config.status, that substitutes the proper values into
+# config.h.in to produce config.h.
+
+# Create a delimiter string that does not exist in confdefs.h, to ease
+# handling of long lines.
+ac_delim='%!_!# '
+for ac_last_try in false false :; do
+  ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+  if test -z "$ac_tt"; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+# For the awk script, D is an array of macro values keyed by name,
+# likewise P contains macro parameters if any.  Preserve backslash
+# newline sequences.
+
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+sed -n '
+s/.\{148\}/&'"$ac_delim"'/g
+t rset
+:rset
+s/^[    ]*#[    ]*define[       ][      ]*/ /
+t def
+d
+:def
+s/\\$//
+t bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3"/p
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2"/p
+d
+:bsnl
+s/["\\]/\\&/g
+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[    ]*\(.*\)/P["\1"]="\2"\
+D["\1"]=" \3\\\\\\n"\\/p
+t cont
+s/^ \('"$ac_word_re"'\)[        ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p
+t cont
+d
+:cont
+n
+s/.\{148\}/&'"$ac_delim"'/g
+t clear
+:clear
+s/\\$//
+t bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/"/p
+d
+:bsnlc
+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p
+b cont
+' <confdefs.h | sed '
+s/'"$ac_delim"'/"\\\
+"/g' >>$CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  for (key in D) D_is_set[key] = 1
+  FS = "\a"
+}
+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ {
+  line = \$ 0
+  split(line, arg, " ")
+  if (arg[1] == "#") {
+    defundef = arg[2]
+    mac1 = arg[3]
+  } else {
+    defundef = substr(arg[1], 2)
+    mac1 = arg[2]
+  }
+  split(mac1, mac2, "(") #)
+  macro = mac2[1]
+  prefix = substr(line, 1, index(line, defundef) - 1)
+  if (D_is_set[macro]) {
+    # Preserve the white space surrounding the "#".
+    print prefix "define", macro P[macro] D[macro]
+    next
+  } else {
+    # Replace #undef with comments.  This is necessary, for example,
+    # in the case of _POSIX_SOURCE, which is predefined and required
+    # on some systems where configure will not decide to define it.
+    if (defundef == "undef") {
+      print "/*", prefix defundef, macro, "*/"
+      next
+    }
+  }
+}
+{ print }
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
+fi # test -n "$CONFIG_HEADERS"
+
 
-for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+shift
+for ac_tag
 do
   case $ac_tag in
   :[FHLC]) ac_mode=$ac_tag; continue;;
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
-echo "$as_me: error: Invalid tag $ac_tag." >&2;}
-   { (exit 1); exit 1; }; };;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -22058,7 +21384,7 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
     for ac_f
     do
       case $ac_f in
-      -) ac_f="$tmp/stdin";;
+      -) ac_f="$ac_tmp/stdin";;
       *) # Look for the file first in the build tree, then in the source tree
         # (if the path is not absolute).  The absolute path cannot be DOS-style,
         # because $ac_f cannot contain `:'.
@@ -22067,26 +21393,34 @@ echo "$as_me: error: Invalid tag $ac_tag." >&2;}
           [\\/$]*) false;;
           *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
           esac ||
-          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
-echo "$as_me: error: cannot find input file: $ac_f" >&2;}
-   { (exit 1); exit 1; }; };;
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
       esac
-      ac_file_inputs="$ac_file_inputs $ac_f"
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
     done
 
     # Let's still pretend it is `configure' which instantiates (i.e., don't
     # use $as_me), people would be surprised to read:
     #    /* config.h.  Generated by config.status.  */
-    configure_input="Generated from "`IFS=:
-         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
     if test x"$ac_file" != x-; then
       configure_input="$ac_file.  $configure_input"
-      { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
     fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
 
     case $ac_tag in
-    *:-:* | *:-) cat >"$tmp/stdin";;
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
     esac
     ;;
   esac
@@ -22096,42 +21430,7 @@ $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'`
-  { as_dir="$ac_dir"
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$ac_file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22149,20 +21448,15 @@ echo X"$as_dir" |
            q
          }
          s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
+  as_dir="$ac_dir"; as_fn_mkdir_p
   ac_builddir=.
 
 case "$ac_dir" in
 .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
 *)
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
   # A ".." for each directory in $ac_dir_suffix.
-  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
   case $ac_top_builddir_sub in
   "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
   *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -22200,14 +21494,19 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
   *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
 _ACEOF
 
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # If the template does not know about datarootdir, expand it.
 # FIXME: This hack should be removed a few years after 2.60.
 ac_datarootdir_hack=; ac_datarootdir_seen=
-
-case `sed -n '/datarootdir/ {
+ac_sed_dataroot='
+/datarootdir/ {
   p
   q
 }
@@ -22215,36 +21514,37 @@ case `sed -n '/datarootdir/ {
 /@docdir@/p
 /@infodir@/p
 /@localedir@/p
-/@mandir@/p
-' $ac_file_inputs` in
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
 *datarootdir*) ac_datarootdir_seen=yes;;
 *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
-  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
 _ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
   ac_datarootdir_hack='
   s&@datadir@&$datadir&g
   s&@docdir@&$docdir&g
   s&@infodir@&$infodir&g
   s&@localedir@&$localedir&g
   s&@mandir@&$mandir&g
-    s&\\\${datarootdir}&$datarootdir&g' ;;
+  s&\\\${datarootdir}&$datarootdir&g' ;;
 esac
 _ACEOF
 
 # Neutralize VPATH when `$srcdir' = `.'.
 # Shell code in configure.ac might set extrasub.
 # FIXME: do we really want to maintain this feature?
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
 $extrasub
 _ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 :t
 /@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s&@configure_input@&$configure_input&;t t
+s|@configure_input@|$ac_sed_conf_input|;t t
 s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
 s&@srcdir@&$ac_srcdir&;t t
 s&@abs_srcdir@&$ac_abs_srcdir&;t t
 s&@top_srcdir@&$ac_top_srcdir&;t t
@@ -22253,136 +21553,68 @@ s&@builddir@&$ac_builddir&;t t
 s&@abs_builddir@&$ac_abs_builddir&;t t
 s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
 s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
-" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
-  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
-  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
-  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&5
-echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
-which seems to be undefined.  Please make sure it is defined." >&2;}
-
-  rm -f "$tmp/stdin"
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
   case $ac_file in
-  -) cat "$tmp/out"; rm -f "$tmp/out";;
-  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
-  esac
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
   # CONFIG_HEADER
   #
-_ACEOF
-
-# Transform confdefs.h into a sed script `conftest.defines', that
-# substitutes the proper values into config.h.in to produce config.h.
-rm -f conftest.defines conftest.tail
-# First, append a space to every undef/define line, to ease matching.
-echo 's/$/ /' >conftest.defines
-# Then, protect against being on the right side of a sed subst, or in
-# an unquoted here document, in config.status.  If some macros were
-# called several times there might be several #defines for the same
-# symbol, which is useless.  But do not sort them, since the last
-# AC_DEFINE must be honored.
-ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
-# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
-# NAME is the cpp macro being defined, VALUE is the value it is being given.
-# PARAMS is the parameter list in the macro definition--in most cases, it's
-# just an empty string.
-ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'
-ac_dB='\\)[     (].*,\\1define\\2'
-ac_dC=' '
-ac_dD=' ,'
-
-uniq confdefs.h |
-  sed -n '
-       t rset
-       :rset
-       s/^[     ]*#[    ]*define[       ][      ]*//
-       t ok
-       d
-       :ok
-       s/[\\&,]/\\&/g
-       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
-       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
-  ' >>conftest.defines
-
-# Remove the space that was appended to ease matching.
-# Then replace #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-# (The regexp can be short, since the line contains either #define or #undef.)
-echo 's/ $//
-s,^[    #]*u.*,/* & */,' >>conftest.defines
-
-# Break up conftest.defines:
-ac_max_sed_lines=50
-
-# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"
-# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"
-# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"
-# et cetera.
-ac_in='$ac_file_inputs'
-ac_out='"$tmp/out1"'
-ac_nxt='"$tmp/out2"'
-
-while :
-do
-  # Write a here document:
-    cat >>$CONFIG_STATUS <<_ACEOF
-    # First, check the format of the line:
-    cat >"\$tmp/defines.sed" <<\\CEOF
-/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def
-/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def
-b
-:def
-_ACEOF
-  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
-  echo 'CEOF
-    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
-  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
-  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
-  grep . conftest.tail >/dev/null || break
-  rm -f conftest.defines
-  mv conftest.tail conftest.defines
-done
-rm -f conftest.defines conftest.tail
-
-echo "ac_result=$ac_in" >>$CONFIG_STATUS
-cat >>$CONFIG_STATUS <<\_ACEOF
   if test x"$ac_file" != x-; then
-    echo "/* $configure_input  */" >"$tmp/config.h"
-    cat "$ac_result" >>"$tmp/config.h"
-    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;}
+    {
+      $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+    } >"$ac_tmp/config.h" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+    if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+$as_echo "$as_me: $ac_file is unchanged" >&6;}
     else
-      rm -f $ac_file
-      mv "$tmp/config.h" $ac_file
+      rm -f "$ac_file"
+      mv "$ac_tmp/config.h" "$ac_file" \
+       || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
-    echo "/* $configure_input  */"
-    cat "$ac_result"
+    $as_echo "/* $configure_input  */" \
+      && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
-  rm -f "$tmp/out12"
-# Compute $ac_file's index in $config_headers.
+# Compute "$ac_file"'s index in $config_headers.
+_am_arg="$ac_file"
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $ac_file | $ac_file:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X$ac_file : 'X\(//\)[^/]' \| \
-        X$ac_file : 'X\(//\)$' \| \
-        X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
-echo X$ac_file |
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$_am_arg" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22402,29 +21634,40 @@ echo X$ac_file |
          s/.*/./; q'`/stamp-h$_am_stamp_count
  ;;
 
-  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
-echo "$as_me: executing $ac_file commands" >&6;}
+  :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+$as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
   esac
 
 
   case $ac_file$ac_mode in
-    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
-  # Strip MF so we end up with the name of the file.
-  mf=`echo "$mf" | sed -e 's/:.*$//'`
-  # Check whether this is an Automake generated Makefile or not.
-  # We used to match only the files named `Makefile.in', but
-  # some people rename them; so instead we look at the file content.
-  # Grep'ing the first line is not enough: some people post-process
-  # each Makefile.in and add a new line on top of each file to say so.
-  # So let's grep whole file.
-  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
-    dirpart=`$as_dirname -- "$mf" ||
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
+  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # are listed without --file.  Let's play safe and only enable the eval
+  # if we detect the quoting.
+  case $CONFIG_FILES in
+  *\'*) eval set x "$CONFIG_FILES" ;;
+  *)   set x $CONFIG_FILES ;;
+  esac
+  shift
+  for mf
+  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 -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
+      dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$mf" : 'X\(//\)[^/]' \| \
         X"$mf" : 'X\(//\)$' \| \
         X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$mf" |
+$as_echo X"$mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22442,68 +21685,31 @@ echo X"$mf" |
            q
          }
          s/.*/./; q'`
-  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" ||
+    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"`
+    # 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'`; do
+      # Make sure the directory exists.
+      test -f "$dirpart/$file" && continue
+      fdir=`$as_dirname -- "$file" ||
 $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$file" : 'X\(//\)[^/]' \| \
         X"$file" : 'X\(//\)$' \| \
         X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-    { as_dir=$dirpart/$fdir
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-echo X"$as_dir" |
+$as_echo X"$file" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22521,16 +21727,12 @@ echo X"$as_dir" |
            q
          }
          s/.*/./; q'`
-      test -d "$as_dir" && break
+      as_dir=$dirpart/$fdir; as_fn_mkdir_p
+      # echo "creating $dirpart/$file"
+      echo '# dummy' > "$dirpart/$file"
     done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
-echo "$as_me: error: cannot create directory $as_dir" >&2;}
-   { (exit 1); exit 1; }; }; }
-    # echo "creating $dirpart/$file"
-    echo '# dummy' > "$dirpart/$file"
   done
-done
+}
  ;;
     "libtool":C)
 
@@ -22548,36 +21750,38 @@ done
 #! $SHELL
 
 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
 #
-# This file is part of GNU Libtool:
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#   This file is part of GNU Libtool.
 #
-# 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.
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
 #
-# 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.
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
 #
-# 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.
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
-# 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.
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
-# TEST SUITE MARKER ## BEGIN SOURCABLE
 
 # The names of the tagged configurations supported by this script.
 available_tags="CXX "
@@ -22588,6 +21792,15 @@ available_tags="CXX "
 macro_version=$macro_version
 macro_revision=$macro_revision
 
+# Assembler program.
+AS=$lt_AS
+
+# DLL creation program.
+DLLTOOL=$lt_DLLTOOL
+
+# Object dumper program.
+OBJDUMP=$lt_OBJDUMP
+
 # Whether or not to build shared libraries.
 build_libtool_libs=$enable_shared
 
@@ -22600,6 +21813,15 @@ pic_mode=$pic_mode
 # Whether or not to optimize for fast installation.
 fast_install=$enable_fast_install
 
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The PATH separator for the build system.
+PATH_SEPARATOR=$lt_PATH_SEPARATOR
+
 # The host system.
 host_alias=$host_alias
 host=$host
@@ -22640,20 +21862,45 @@ objext=$ac_objext
 # Executable file suffix (normally "").
 exeext=$exeext
 
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# convert \$build file names to \$host format.
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+
+# convert \$build files to toolchain format.
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
 
-# Command to use when deplibs_check_method == "file_magic".
+# Command to use when deplibs_check_method = "file_magic".
 file_magic_cmd=$lt_file_magic_cmd
 
+# How to find potential files when deplibs_check_method = "file_magic".
+file_magic_glob=$lt_file_magic_glob
+
+# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
+want_nocaseglob=$lt_want_nocaseglob
+
+# Command to associate shared and link libraries.
+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
+
 # The archiver.
 AR=$lt_AR
+
+# Flags to create an archive.
 AR_FLAGS=$lt_AR_FLAGS
 
+# How to feed a file listing to the archiver.
+archiver_list_spec=$lt_archiver_list_spec
+
 # A symbol stripping program.
 STRIP=$lt_STRIP
 
@@ -22662,6 +21909,9 @@ RANLIB=$lt_RANLIB
 old_postinstall_cmds=$lt_old_postinstall_cmds
 old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
 # A C compiler.
 LTCC=$lt_CC
 
@@ -22677,14 +21927,17 @@ 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
 
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
+# Specify filename containing input files for \$NM.
+nm_file_list_spec=$lt_nm_file_list_spec
 
-# An echo program that does not interpret backslashes.
-ECHO=$lt_ECHO
+# The root where to search for dependent libraries,and in which our libraries should be installed.
+lt_sysroot=$lt_sysroot
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
 
 # Used to examine libraries when file_magic_cmd begins with "file".
 MAGIC_CMD=$MAGIC_CMD
@@ -22692,6 +21945,24 @@ MAGIC_CMD=$MAGIC_CMD
 # Must we lock files when doing compilation?
 need_locks=$lt_need_locks
 
+# Manifest tool.
+MANIFEST_TOOL=$lt_MANIFEST_TOOL
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
 # Old archive suffix (normally "a").
 libext=$libext
 
@@ -22733,6 +22004,9 @@ library_names_spec=$lt_library_names_spec
 # The coded name of the library, if different from the real name.
 soname_spec=$lt_soname_spec
 
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
 # Command to use after installation of a shared archive.
 postinstall_cmds=$lt_postinstall_cmds
 
@@ -22768,19 +22042,14 @@ dlopen_self_static=$enable_dlopen_self_static
 old_striplib=$lt_old_striplib
 striplib=$lt_striplib
 
-# Assembler program.
-AS=$AS
-
-# DLL creation program.
-DLLTOOL=$DLLTOOL
-
-# Object dumper program.
-OBJDUMP=$OBJDUMP
-
 
 # The linker used to build libraries.
 LD=$lt_LD
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
 # Commands used to build an old-style archive.
 old_archive_cmds=$lt_old_archive_cmds
 
@@ -22793,12 +22062,12 @@ with_gcc=$GCC
 # Compiler flag to turn off builtin functions.
 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
-
 # Additional compiler flags for building library objects.
 pic_flag=$lt_lt_prog_compiler_pic
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
 # Compiler flag to prevent dynamic linking.
 link_static_flag=$lt_lt_prog_compiler_static
 
@@ -22817,6 +22086,9 @@ export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
 # Compiler flag to generate shared objects directly from archives.
 whole_archive_flag_spec=$lt_whole_archive_flag_spec
 
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
 # Create an old-style archive from a shared archive.
 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
 
@@ -22845,10 +22117,6 @@ no_undefined_flag=$lt_no_undefined_flag
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
@@ -22856,6 +22124,12 @@ hardcode_libdir_separator=$lt_hardcode_libdir_separator
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct
 
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
 # into the resulting binary.
 hardcode_minus_L=$hardcode_minus_L
@@ -22876,9 +22150,6 @@ inherit_rpath=$inherit_rpath
 # Whether libtool must link a program against all its dependency libraries.
 link_all_deplibs=$link_all_deplibs
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path
-
 # Set to "yes" if exported symbols are required.
 always_export_symbols=$always_export_symbols
 
@@ -22894,12 +22165,18 @@ include_expsyms=$lt_include_expsyms
 # Commands necessary for linking programs (against libraries) with templates.
 prelink_cmds=$lt_prelink_cmds
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds
+
 # Specify filename containing input files.
 file_list_spec=$lt_file_list_spec
 
 # How to hardcode a shared library path into an executable.
 hardcode_action=$hardcode_action
 
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
 # Dependencies to place before and after the objects being linked to
 # create a shared library.
 predep_objects=$lt_predep_objects
@@ -22913,10 +22190,6 @@ compiler_lib_search_path=$lt_compiler_lib_search_path
 
 # ### END LIBTOOL CONFIG
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
 _LT_EOF
 
   case $host_os in
@@ -22941,89 +22214,169 @@ ltmain="$ac_aux_dir/ltmain.sh"
   # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
-
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
-
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-_LT_EOF
-esac
-
-
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  mv -f "$cfgfile" "$ofile" ||
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
+
+  if test x"$xsi_shell" = xyes; then
+  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
+func_dirname ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_basename ()$/,/^} # func_basename /c\
+func_basename ()\
+{\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
+func_dirname_and_basename ()\
+{\
+\    case ${1} in\
+\      */*) func_dirname_result="${1%/*}${2}" ;;\
+\      *  ) func_dirname_result="${3}" ;;\
+\    esac\
+\    func_basename_result="${1##*/}"\
+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
+func_stripname ()\
+{\
+\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
+\    # positional parameters, so assign one to ordinary parameter first.\
+\    func_stripname_result=${3}\
+\    func_stripname_result=${func_stripname_result#"${1}"}\
+\    func_stripname_result=${func_stripname_result%"${2}"}\
+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
+func_split_long_opt ()\
+{\
+\    func_split_long_opt_name=${1%%=*}\
+\    func_split_long_opt_arg=${1#*=}\
+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
+func_split_short_opt ()\
+{\
+\    func_split_short_opt_arg=${1#??}\
+\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
+func_lo2o ()\
+{\
+\    case ${1} in\
+\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
+\      *)    func_lo2o_result=${1} ;;\
+\    esac\
+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_xform ()$/,/^} # func_xform /c\
+func_xform ()\
+{\
+    func_xform_result=${1%.*}.lo\
+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_arith ()$/,/^} # func_arith /c\
+func_arith ()\
+{\
+    func_arith_result=$(( $* ))\
+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_len ()$/,/^} # func_len /c\
+func_len ()\
+{\
+    func_len_result=${#1}\
+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  sed -e '/^func_append ()$/,/^} # func_append /c\
+func_append ()\
+{\
+    eval "${1}+=\\${2}"\
+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
+func_append_quoted ()\
+{\
+\    func_quote_for_eval "${2}"\
+\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
+fi
+
+
+   mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 
@@ -23035,6 +22388,10 @@ esac
 # The linker used to build libraries.
 LD=$lt_LD_CXX
 
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
 # Commands used to build an old-style archive.
 old_archive_cmds=$lt_old_archive_cmds_CXX
 
@@ -23047,12 +22404,12 @@ with_gcc=$GCC_CXX
 # Compiler flag to turn off builtin functions.
 no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
-
 # Additional compiler flags for building library objects.
 pic_flag=$lt_lt_prog_compiler_pic_CXX
 
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
 # Compiler flag to prevent dynamic linking.
 link_static_flag=$lt_lt_prog_compiler_static_CXX
 
@@ -23071,6 +22428,9 @@ export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
 # Compiler flag to generate shared objects directly from archives.
 whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
 
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
 # Create an old-style archive from a shared archive.
 old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
 
@@ -23099,10 +22459,6 @@ no_undefined_flag=$lt_no_undefined_flag_CXX
 # This must work even if \$libdir does not exist
 hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# If ld is used when linking, flag to hardcode \$libdir into a binary
-# during linking.  This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
-
 # Whether we need a single "-rpath" flag with a separated argument.
 hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
@@ -23110,6 +22466,12 @@ hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 # DIR into the resulting binary.
 hardcode_direct=$hardcode_direct_CXX
 
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
 # Set to "yes" if using the -LDIR flag during linking hardcodes DIR
 # into the resulting binary.
 hardcode_minus_L=$hardcode_minus_L_CXX
@@ -23130,9 +22492,6 @@ inherit_rpath=$inherit_rpath_CXX
 # Whether libtool must link a program against all its dependency libraries.
 link_all_deplibs=$link_all_deplibs_CXX
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path=$lt_fix_srcfile_path_CXX
-
 # Set to "yes" if exported symbols are required.
 always_export_symbols=$always_export_symbols_CXX
 
@@ -23148,12 +22507,18 @@ include_expsyms=$lt_include_expsyms_CXX
 # Commands necessary for linking programs (against libraries) with templates.
 prelink_cmds=$lt_prelink_cmds_CXX
 
+# Commands necessary for finishing linking programs.
+postlink_cmds=$lt_postlink_cmds_CXX
+
 # Specify filename containing input files.
 file_list_spec=$lt_file_list_spec_CXX
 
 # How to hardcode a shared library path into an executable.
 hardcode_action=$hardcode_action_CXX
 
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
 # Dependencies to place before and after the objects being linked to
 # create a shared library.
 predep_objects=$lt_predep_objects_CXX
@@ -23174,11 +22539,13 @@ _LT_EOF
 done # for ac_tag
 
 
-{ (exit 0); exit 0; }
+as_fn_exit 0
 _ACEOF
-chmod +x $CONFIG_STATUS
 ac_clean_files=$ac_clean_files_save
 
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
 
 # configure is writing to config.log, and then calls config.status.
 # config.status does its own redirection, appending to config.log.
@@ -23198,7 +22565,11 @@ if test "$no_create" != yes; then
   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; }
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
@@ -23211,7 +22582,9 @@ echo "  Documentation directory:            ${LIBTIFF_DOCDIR}"
 echo "  C compiler:                         ${CC} ${CFLAGS}"
 echo "  C++ compiler:                       ${CXX} ${CXXFLAGS}"
 echo "  Enable runtime linker paths:        ${HAVE_RPATH}"
+echo "  Enable linker symbol versioning:    ${have_ld_version_script}"
 echo "  Support Microsoft Document Imaging: ${HAVE_MDI}"
+echo "  Use win32 IO:                       ${win32_io_ok}"
 echo ""
 echo " Support for internal codecs:"
 echo "  CCITT Group 3 & 4 algorithms:       ${HAVE_CCITT}"
@@ -23226,6 +22599,9 @@ echo "  ZLIB support:                       ${HAVE_ZLIB}"
 echo "  Pixar log-format algorithm:         ${HAVE_PIXARLOG}"
 echo "  JPEG support:                       ${HAVE_JPEG}"
 echo "  Old JPEG support:                   ${HAVE_OJPEG}"
+echo "  JPEG 8/12 bit dual mode:            ${HAVE_JPEG12}"
+echo "  ISO JBIG support:                   ${HAVE_JBIG}"
+echo "  LZMA2 support:                      ${HAVE_LZMA}"
 echo ""
 echo "  C++ support:                        ${HAVE_CXX}"
 echo ""
index 7b72c1856682628f1e459c1ddf9c867b2bb2b054..e1b8d407ab064ca8c62d170b4e92ca7b4a58d594 100644 (file)
@@ -24,14 +24,13 @@ dnl OF THIS SOFTWARE.
 
 dnl Process this file with autoconf to produce a configure script.
 
-AC_PREREQ(2.59)
-AC_INIT([LibTIFF Software], 3.8.2, [tiff@lists.maptools.org], tiff)
+AC_PREREQ(2.64)
+AC_INIT([LibTIFF Software],[4.0.3],[tiff@lists.maptools.org],[tiff])
 AC_CONFIG_AUX_DIR(config)
 AC_CONFIG_MACRO_DIR(m4)
 AC_LANG(C)
 
-dnl Compute the canonical build and host system type variables
-AC_CANONICAL_BUILD
+dnl Compute the canonical host (run-time) system type variable
 AC_CANONICAL_HOST
 
 AM_INIT_AUTOMAKE
@@ -40,26 +39,60 @@ AM_MAINTAINER_MODE
 
 dnl Versioning.
 dnl Don't fill the ALPHA_VERSION field, if not applicable.
-LIBTIFF_MAJOR_VERSION=3
-LIBTIFF_MINOR_VERSION=8
-LIBTIFF_MICRO_VERSION=2
+LIBTIFF_MAJOR_VERSION=4
+LIBTIFF_MINOR_VERSION=0
+LIBTIFF_MICRO_VERSION=3
 LIBTIFF_ALPHA_VERSION=
 LIBTIFF_VERSION=$LIBTIFF_MAJOR_VERSION.$LIBTIFF_MINOR_VERSION.$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION
 dnl This will be used with the 'make release' target
 LIBTIFF_RELEASE_DATE=`date +"%Y%m%d"`
 
+dnl Libtool library revision control info
+dnl See the libtool documentation under the heading "Libtool's versioning
+dnl system" in order to understand the meaning of these fields
+dnl
+dnl current
+dnl      The most recent interface number that this library implements.
+dnl revision
+dnl      The implementation number of the current interface.
+dnl age
+dnl      The difference between the newest and oldest interfaces that
+dnl      this library implements. In other words, the library implements
+dnl      all the interface numbers in the range from number current -
+dnl      age to current.
+dnl
+dnl Here are a set of rules to help you update your library version
+dnl information:
+dnl
+dnl  1. Start with version information of `0:0:0' for each libtool library.
+dnl  2. Update the version information only immediately before a public
+dnl     release of your software. More frequent updates are unnecessary, and
+dnl     only guarantee that the current interface number gets larger faster.
+dnl  3. If the library source code has changed at all since the last update,
+dnl     then increment revision (`c:r:a' becomes `c:r+1:a').
+dnl  4. If any interfaces have been added, removed, or changed since the last
+dnl     update, increment current, and set revision to 0.
+dnl  5. If any interfaces have been added since the last public release, then
+dnl     increment age.
+dnl  6. If any interfaces have been removed since the last public release,
+dnl     then set age to 0.                                
+LIBTIFF_CURRENT=7
+LIBTIFF_REVISION=0
+LIBTIFF_AGE=2
+LIBTIFF_VERSION_INFO=$LIBTIFF_CURRENT:$LIBTIFF_REVISION:$LIBTIFF_AGE
+
 # This is a special hack for OpenBSD and MirOS systems. The dynamic linker
 # in OpenBSD uses some special semantics for shared libraries. Their soname
 # contains only two numbers, major and minor.
 # See http://bugzilla.remotesensing.org/show_bug.cgi?id=838 for details.
-case "$target_os" in
-    openbsd* | mirbsd*)
-       LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION:0
-       ;;
-    *)
-       LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION:$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION$LIBTIFF_ALPHA_VERSION
-       ;;
-esac
+#case "$host_os" in
+#    openbsd* | mirbsd*)
+#      LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION:0
+#      ;;
+#    *)
+#      LIBTIFF_VERSION_INFO=$LIBTIFF_MAJOR_VERSION:$LIBTIFF_MINOR_VERSION:$LIBTIFF_MICRO_VERSION
+#      ;;
+#esac
 
 AC_SUBST(LIBTIFF_MAJOR_VERSION)
 AC_SUBST(LIBTIFF_MINOR_VERSION)
@@ -78,23 +111,63 @@ VL_PROG_CC_WARNINGS()
 
 AC_PROG_INSTALL
 AC_PROG_LN_S
-AC_PROG_LIBTOOL
-AC_LIBTOOL_WIN32_DLL
 
-dnl Checks for libraries.
-AC_CHECK_LIB([c], [main])
 
-dnl We don't need to add math library at all targets
-case "$target_os" in
+# Check if LD supports linker scripts, and define automake conditional
+# HAVE_LD_VERSION_SCRIPT if so.  This functionality is currently
+# constrained to compilers using GNU ld on ELF systems or systems
+# which provide an adequate emulation thereof.
+AC_ARG_ENABLE([ld-version-script],
+  AS_HELP_STRING([--enable-ld-version-script],
+    [enable linker version script (default is disabled)]),
+    [have_ld_version_script=$enableval], [have_ld_version_script=no])
+if test "$have_ld_version_script" != no; then
+  AC_MSG_CHECKING([if LD -Wl,--version-script works])
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
+  cat > conftest.map <<EOF
+VERS_1 {
+        global: sym;
+};
+
+VERS_2 {
+        global: sym;
+} VERS_1;
+EOF
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
+                 [have_ld_version_script=yes], [have_ld_version_script=no])
+  rm -f conftest.map
+  LDFLAGS="$save_LDFLAGS"
+  AC_MSG_RESULT($have_ld_version_script)
+fi
+AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
+
+
+dnl Tests for Windows
+AC_EXEEXT
+AC_OBJEXT
+
+dnl initialize libtool
+LT_INIT([win32-dll])
+LT_LANG([C++])
+
+# Enable support for silent build rules
+AM_SILENT_RULES
+
+dnl We don't need to add math library to all targets
+case "${host_os}" in
     cygwin* | mingw32* | beos* | darwin*)
         ;;
     *)
-       AC_CHECK_LIB(m,main,,,)
+       AC_CHECK_LIB(m,sin,,,)
         ;;
 esac
 
+tiff_libs_private=
+AC_SUBST(tiff_libs_private)
+
 dnl Checks for header files.
-AC_CHECK_HEADERS([assert.h fcntl.h limits.h malloc.h search.h sys/time.h unistd.h])
+AC_CHECK_HEADERS([assert.h fcntl.h io.h limits.h malloc.h search.h sys/time.h unistd.h])
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -102,10 +175,181 @@ AC_C_INLINE
 AC_C_BIGENDIAN
 AC_TYPE_OFF_T
 AC_TYPE_SIZE_T
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
 AC_HEADER_TIME
 AC_STRUCT_TM
+
+dnl ---------------------------------------------------------------------------
+dnl Compute sized types for current CPU and compiler options
+dnl ---------------------------------------------------------------------------
+
+# Obtain size of an 'signed short' and define as SIZEOF_SIGNED_SHORT
+AC_CHECK_SIZEOF(signed short)
+
+# Obtain size of an 'unsigned short' and define as SIZEOF_UNSIGNED_SHORT
+AC_CHECK_SIZEOF(unsigned short)
+
+# Obtain size of an 'signed int' and define as SIZEOF_SIGNED_INT
+AC_CHECK_SIZEOF(signed int)
+
+# Obtain size of an 'unsigned int' and define as SIZEOF_UNSIGNED_INT
+AC_CHECK_SIZEOF(unsigned int)
+
+# Obtain size of a 'signed long' and define as SIZEOF_SIGNED_LONG
+AC_CHECK_SIZEOF(signed long)
+
+# Obtain size of a 'unsigned long' and define as SIZEOF_UNSIGNED_LONG
+AC_CHECK_SIZEOF(unsigned long)
+
+# Obtain size of a 'long long' and define as SIZEOF_SIGNED_LONG_LONG.
+# If 'long long' is not supported then the value defined is zero.
+AC_CHECK_SIZEOF(signed long long)
+
+# Obtain size of a 'unsigned long long' and define as
+# SIZEOF_UNSIGNED_LONG_LONG.  If 'unsigned long long' is not
+# supported then the value defined is zero.
+AC_CHECK_SIZEOF(unsigned long long)
+
+# Obtain the size of an 'unsigned char *' and define as
+# SIZEOF_UNSIGNED_CHAR_P.  Result is available in
+# ac_cv_sizeof_unsigned_char_p.
+AC_CHECK_SIZEOF(unsigned char *)
+
+AC_MSG_CHECKING(for signed 8-bit type)
+INT8_T='signed char'
+AC_MSG_RESULT($INT8_T)
+AC_DEFINE_UNQUOTED(TIFF_INT8_T,$INT8_T,[Signed 8-bit type])
+
+AC_MSG_CHECKING(for unsigned 8-bit type)
+UINT8_T='unsigned char'
+AC_MSG_RESULT($UINT8_T)
+AC_DEFINE_UNQUOTED(TIFF_UINT8_T,$UINT8_T,[Unsigned 8-bit type])
+
+AC_MSG_CHECKING(for signed 16-bit type)
+INT16_T='signed short'
+AC_MSG_RESULT($INT16_T)
+AC_DEFINE_UNQUOTED(TIFF_INT16_T,$INT16_T,[Signed 16-bit type])
+
+
+AC_MSG_CHECKING(for unsigned 16-bit type)
+UINT16_T='unsigned short'
+AC_MSG_RESULT($UINT16_T)
+AC_DEFINE_UNQUOTED(TIFF_UINT16_T,$UINT16_T,[Unsigned 16-bit type])
+
+AC_MSG_CHECKING(for signed 32-bit type)
+INT32_T='none'
+INT32_FORMAT='none'
+if test $ac_cv_sizeof_signed_int -eq 4
+then
+  INT32_T='signed int'
+  INT32_FORMAT='"%d"'
+elif test $ac_cv_sizeof_signed_long -eq 4
+then
+  INT32_T='signed long'
+  INT32_FORMAT='"%ld"'
+fi
+AC_MSG_RESULT($INT32_T)
+AC_DEFINE_UNQUOTED(TIFF_INT32_T,$INT32_T,[Signed 32-bit type])
+AC_DEFINE_UNQUOTED(TIFF_INT32_FORMAT,$INT32_FORMAT,[Signed 32-bit type formatter])
+
+AC_MSG_CHECKING(for unsigned 32-bit type)
+UINT32_T='none'
+UINT32_FORMAT='none'
+if test $ac_cv_sizeof_unsigned_int -eq 4
+then
+  UINT32_T='unsigned int'
+  UINT32_FORMAT='"%u"'
+elif test $ac_cv_sizeof_unsigned_long -eq 4
+then
+  UINT32_T='unsigned long'
+  UINT32_FORMAT='"%lu"'
+fi
+AC_MSG_RESULT($UINT32_T)
+AC_DEFINE_UNQUOTED(TIFF_UINT32_T,$UINT32_T,[Unsigned 32-bit type])
+AC_DEFINE_UNQUOTED(TIFF_UINT32_FORMAT,$UINT32_FORMAT,[Unsigned 32-bit type formatter])
+
+AC_MSG_CHECKING(for signed 64-bit type)
+INT64_T='none'
+INT64_FORMAT='none'
+if test $ac_cv_sizeof_signed_long -eq 8
+then
+  INT64_T='signed long'
+  INT64_FORMAT='"%ld"'
+elif test $ac_cv_sizeof_signed_long_long -eq 8
+then
+  INT64_T='signed long long'
+  case "${host_os}" in
+    mingw32*)
+      # MinGW32 understands 'long long', but uses printf from WIN32 CRT
+      INT64_FORMAT='"%I64d"'
+      ;;
+    *)
+      INT64_FORMAT='"%lld"'
+      ;;
+  esac
+fi
+
+
+AC_MSG_RESULT($INT64_T)
+AC_DEFINE_UNQUOTED(TIFF_INT64_T,$INT64_T,[Signed 64-bit type])
+AC_DEFINE_UNQUOTED(TIFF_INT64_FORMAT,$INT64_FORMAT,[Signed 64-bit type formatter])
+
+AC_MSG_CHECKING(for unsigned 64-bit type)
+UINT64_T='none'
+UINT64_FORMAT='none'
+if test $ac_cv_sizeof_unsigned_long -eq 8
+then
+  UINT64_T='unsigned long'
+  UINT64_FORMAT='"%lu"'
+elif test $ac_cv_sizeof_unsigned_long_long -eq 8
+then
+  UINT64_T='unsigned long long'
+  case "${host_os}" in
+    mingw32*)
+      # MinGW32 understands 'unsigned long long', but uses printf from WIN32 CRT
+      UINT64_FORMAT='"%I64u"'
+      ;;
+    *)
+      UINT64_FORMAT='"%llu"'
+      ;;
+  esac
+fi
+AC_MSG_RESULT($UINT64_T)
+AC_DEFINE_UNQUOTED(TIFF_UINT64_T,$UINT64_T,[Unsigned 64-bit type])
+AC_DEFINE_UNQUOTED(TIFF_UINT64_FORMAT,$UINT64_FORMAT,[Unsigned 64-bit type formatter])
+
+# Determine TIFF equivalent of ssize_t
+AC_MSG_CHECKING(for signed size type)
+SSIZE_T='unknown'
+SSIZE_FORMAT='unknown'
+if test $ac_cv_sizeof_signed_long -eq $ac_cv_sizeof_unsigned_char_p
+then
+  SSIZE_T='signed long'
+  SSIZE_FORMAT='"%ld"'
+elif test $ac_cv_sizeof_signed_long_long -eq $ac_cv_sizeof_unsigned_char_p
+then
+  SSIZE_T='signed long long'
+  SSIZE_FORMAT='"%lld"'
+fi
+AC_MSG_RESULT($SSIZE_T)
+AC_DEFINE_UNQUOTED(TIFF_SSIZE_T,$SSIZE_T,[Signed size type])
+AC_DEFINE_UNQUOTED(TIFF_SSIZE_FORMAT,$SSIZE_FORMAT,[Signed size type formatter])
+
+# Determine the type to use for the difference between two pointers.
+# We will default to the POSIX ptrdiff_t if it is available, but will
+# be prepared for the case when it is not.
+PTRDIFF_T='unknown'
+PTRDIFF_FORMAT='"%ld"'
+AC_CHECK_TYPE(ptrdiff_t,[PTRDIFF_T=ptrdiff_t])
+if test $PTRDIFF_T = unknown
+then
+  PTRDIFF_T=$SSIZE_T
+  PTRDIFF_FORMAT=$SSIZE_FORMAT
+fi
+AC_MSG_CHECKING(for pointer difference type)
+AC_MSG_RESULT($PTRDIFF_T)
+AC_DEFINE_UNQUOTED(TIFF_PTRDIFF_T,$PTRDIFF_T,[Pointer difference type])
+AC_DEFINE_UNQUOTED(TIFF_PTRDIFF_FORMAT,$PTRDIFF_FORMAT,[Pointer difference type formatter])
+
 dnl Some compilers (IBM VisualAge) has these types defined, so check it here:
 AC_CHECK_TYPES([int8, int16, int32],,,
 [
@@ -115,20 +359,21 @@ AC_CHECK_TYPES([int8, int16, int32],,,
 ])
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS([floor isascii memmove memset mmap pow sqrt strchr strrchr strstr strtol])
+AC_CHECK_FUNCS([floor isascii memmove memset mmap pow setmode sqrt strchr strrchr strstr strtol strtoull])
 
 dnl Will use local replacements for unavailable functions
 AC_REPLACE_FUNCS(getopt)
 AC_REPLACE_FUNCS(strcasecmp)
 AC_REPLACE_FUNCS(strtoul)
+AC_REPLACE_FUNCS(strtoull)
 AC_REPLACE_FUNCS(lfind)
 
 dnl ---------------------------------------------------------------------------
 dnl Check the native cpu bit order.
 dnl ---------------------------------------------------------------------------
 AC_MSG_CHECKING([native cpu bit order])
-case "$target_cpu" in
-    i*86*)
+case "$host_cpu" in
+    i*86*|x86_64*)
         HOST_FILLORDER=FILLORDER_LSB2MSB
        AC_MSG_RESULT([lsb2msb])
        ;;
@@ -310,6 +555,7 @@ fi
 if test "$HAVE_ZLIB" = "yes" ; then
   AC_DEFINE(ZIP_SUPPORT,1,[Support Deflate compression])
   LIBS="-lz $LIBS"
+  tiff_libs_private="-lz ${tiff_libs_private}"
 
   if test "$HAVE_RPATH" = "yes" -a "x$with_zlib_lib_dir" != "x" ; then
     LIBDIR="-R $with_zlib_lib_dir $LIBDIR"
@@ -378,6 +624,7 @@ fi
 if test "$HAVE_JPEG" = "yes" ; then
   AC_DEFINE(JPEG_SUPPORT,1,[Support JPEG compression (requires IJG JPEG library)])
   LIBS="-ljpeg $LIBS"
+  tiff_libs_private="-ljpeg ${tiff_libs_private}"
 
   if test "$HAVE_RPATH" = "yes" -a "x$with_jpeg_lib_dir" != "x" ; then
     LIBDIR="-R $with_jpeg_lib_dir $LIBDIR"
@@ -390,17 +637,156 @@ dnl Check for Old JPEG.
 dnl ---------------------------------------------------------------------------
 
 AC_ARG_ENABLE(old-jpeg,
-             AS_HELP_STRING([--enable-old-jpeg],
-                            [enable support for Old JPEG compresson (read contrib/ojpeg/README first! Compilation fails with unpatched IJG JPEG library)]),
-             [HAVE_OJPEG=$enableval], [HAVE_OJPEG=no])
+             AS_HELP_STRING([--disable-old-jpeg],
+                            [disable support for Old JPEG compresson (read-only, enabled by default)]),
+             [HAVE_OJPEG=${enableval}], [HAVE_OJPEG=yes])
 
 if test "$HAVE_JPEG" = "yes" -a "$HAVE_OJPEG" = "yes" ; then
   AC_DEFINE(OJPEG_SUPPORT, 1,
-           [Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation fails with unpatched IJG JPEG library)])
+           [Support Old JPEG compresson (read-only)])
 else
   HAVE_OJPEG=no
 fi
 
+dnl ---------------------------------------------------------------------------
+dnl Check for JBIG-KIT.
+dnl ---------------------------------------------------------------------------
+
+HAVE_JBIG=no
+
+AC_ARG_ENABLE(jbig,
+             AS_HELP_STRING([--disable-jbig],
+                            [disable JBIG-KIT usage (required for ISO JBIG compression, enabled by default)]),,)
+AC_ARG_WITH(jbig-include-dir,
+           AS_HELP_STRING([--with-jbig-include-dir=DIR],
+                          [location of JBIG-KIT headers]),,)
+AC_ARG_WITH(jbig-lib-dir,
+           AS_HELP_STRING([--with-jbig-lib-dir=DIR],
+                          [location of JBIG-KIT library binary]),,)
+
+if test "x$enable_jbig" != "xno" ; then
+
+  if test "x$with_jbig_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_jbig_lib_dir $LDFLAGS"
+  
+  fi
+  
+  AC_CHECK_LIB(jbig, jbg_dec_init, [jbig_lib=yes], [jbig_lib=no],)
+  if test "$jbig_lib" = "no" -a "x$with_jbig_lib_dir" != "x" ; then
+    AC_MSG_ERROR([JBIG-KIT library not found at $with_jbig_lib_dir])
+  fi
+    
+  if test "x$with_jbig_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_jbig_include_dir $CPPFLAGS"
+  fi
+  AC_CHECK_HEADER(jbig.h, [jbig_h=yes], [jbig_h=no])
+  if test "$jbig_h" = "no" -a "x$with_jbig_include_dir" != "x" ; then
+    AC_MSG_ERROR([JBIG-KIT library headers not found at $with_jbig_include_dir])
+  fi
+
+  if test "$jbig_lib" = "yes" -a "$jbig_h" = "yes" ; then
+    HAVE_JBIG=yes
+  fi
+
+fi
+
+if test "$HAVE_JBIG" = "yes" ; then
+  AC_DEFINE(JBIG_SUPPORT,1,[Support ISO JBIG compression (requires JBIG-KIT library)])
+  LIBS="-ljbig $LIBS"
+  tiff_libs_private="-ljbig ${tiff_libs_private}"
+
+  if test "$HAVE_RPATH" = "yes" -a "x$with_jbig_lib_dir" != "x" ; then
+    LIBDIR="-R $with_jbig_lib_dir $LIBDIR"
+  fi
+
+  # Older versions of jbigkit lack jbg_newlen
+  AC_CHECK_FUNCS([jbg_newlen])
+
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl Check for liblzma2.
+dnl ---------------------------------------------------------------------------
+
+HAVE_LZMA=no
+
+AC_ARG_ENABLE(lzma,
+             AS_HELP_STRING([--disable-lzma],
+                            [disable liblzma usage (required for LZMA2 compression, enabled by default)]),,)
+AC_ARG_WITH(lzma-include-dir,
+           AS_HELP_STRING([--with-lzma-include-dir=DIR],
+                          [location of liblzma headers]),,)
+AC_ARG_WITH(lzma-lib-dir,
+           AS_HELP_STRING([--with-lzma-lib-dir=DIR],
+                          [location of liblzma library binary]),,)
+
+if test "x$enable_lzma" != "xno" ; then
+
+  if test "x$with_lzma_lib_dir" != "x" ; then
+    LDFLAGS="-L$with_lzma_lib_dir $LDFLAGS"
+  fi
+  
+  AC_CHECK_LIB(lzma, lzma_code, [lzma_lib=yes], [lzma_lib=no],)
+  if test "$lzma_lib" = "no" -a "x$with_lzma_lib_dir" != "x"; then
+    AC_MSG_ERROR([lzma library not found at $with_lzma_lib_dir])
+  fi
+    
+  if test "x$with_lzma_include_dir" != "x" ; then
+    CPPFLAGS="-I$with_lzma_include_dir $CPPFLAGS"
+  fi
+  AC_CHECK_HEADER(lzma.h, [lzma_h=yes], [lzma_h=no])
+  if test "$lzma_h" = "no" -a "x$with_lzma_include_dir" != "x" ; then
+    AC_MSG_ERROR([Liblzma headers not found at $with_lzma_include_dir])
+  fi
+
+  if test "$lzma_lib" = "yes" -a "$lzma_h" = "yes" ; then
+    HAVE_LZMA=yes
+  fi
+
+fi
+
+if test "$HAVE_LZMA" = "yes" ; then
+  AC_DEFINE(LZMA_SUPPORT,1,[Support LZMA2 compression])
+  LIBS="-llzma $LIBS"
+  tiff_libs_private="-llzma ${tiff_libs_private}"
+
+  if test "$HAVE_RPATH" = "yes" -a "x$with_lzma_lib_dir" != "x" ; then
+    LIBDIR="-R $with_lzma_lib_dir $LIBDIR"
+  fi
+
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl Should 8/12 bit jpeg mode be enabled?
+dnl ---------------------------------------------------------------------------
+
+HAVE_JPEG12=no
+
+AC_ARG_ENABLE(jpeg12,
+             AS_HELP_STRING([--enable-jpeg12],
+                            [enable libjpeg 8/12bit dual mode]),,)
+AC_ARG_WITH(jpeg12-include-dir,
+           AS_HELP_STRING([--with-jpeg12-include-dir=DIR],
+                          [location of libjpeg 12bit headers]),,)
+AC_ARG_WITH(jpeg12-lib,
+           AS_HELP_STRING([--with-jpeg12-lib=LIBRARY],
+                          [path to libjpeg 12bit library]),,)
+
+if test "x$enable_jpeg12" == "xyes" ; then
+
+  if test "x$with_jpeg12_lib" != "x" ; then
+    LIBS="$with_jpeg12_lib $LIBS"
+  fi
+  
+  HAVE_JPEG12=yes
+
+  AC_DEFINE(JPEG_DUAL_MODE_8_12,1,[8/12 bit libjpeg dual mode enabled])
+  if test "x$with_jpeg12_include_dir" != "x" ; then
+    AC_DEFINE_UNQUOTED(LIBJPEG_12_PATH,"$with_jpeg12_include_dir/jpeglib.h",[12bit libjpeg primary include file with path])
+  fi
+fi
+
+
 dnl ---------------------------------------------------------------------------
 dnl Check for C++.
 dnl ---------------------------------------------------------------------------
@@ -424,10 +810,17 @@ dnl ---------------------------------------------------------------------------
 
 HAVE_OPENGL=no
 
+
 AC_PATH_XTRA
 
+dnl AX_CHECK_GL sets GL_CFLAGS & GL_LIBS.  Also PTHREAD_LIBS,
+dnl PTHREAD_CFLAGS, & PTHREAD_CC as a side-effect
 AX_CHECK_GL
+
+dnl AX_CHECK_GLU sets GLU_CFLAGS & GLU_LIBS
 AX_CHECK_GLU
+
+dnl AX_CHECK_GLUT sets GLUT_CFLAGS & GLUT_LIBS
 AX_CHECK_GLUT
 
 if test "$no_x" != "yes" -a "$no_gl" != "yes" \
@@ -437,6 +830,39 @@ fi
 
 AM_CONDITIONAL(HAVE_OPENGL, test "$HAVE_OPENGL" = "yes")
 
+dnl ---------------------------------------------------------------------------
+dnl Check for Win32 IO: make sure we have windows.h but not cygwin
+dnl this must be after the ogl test, since that looks for windows.h and we
+dnl test it
+dnl ---------------------------------------------------------------------------
+
+win32_io_ok=no
+case "${host_os}" in
+    cygwin*)
+        ;;
+    *)
+        if test x"$ac_cv_header_windows_h" = xyes; then 
+            win32_io_ok=yes
+           AC_DEFINE(USE_WIN32_FILEIO,1,[define to use win32 IO system])
+       fi
+        ;;
+esac
+AM_CONDITIONAL([WIN32_IO], [test "$win32_io_ok" = yes])
+
+dnl ---------------------------------------------------------------------------
+dnl Check for X Athena Widgets
+dnl ---------------------------------------------------------------------------
+
+dnl HAVE_XAW=no
+
+dnl ICE_FIND_ATHENA
+
+dnl if test "$no_xaw" != "yes" ; then
+dnl   HAVE_XAW=yes
+dnl fi
+
+dnl AM_CONDITIONAL(HAVE_XAW, test "$HAVE_XAW" = "yes")
+
 dnl ===========================================================================
 dnl ``Orthogonal Features''
 dnl ===========================================================================
@@ -466,6 +892,38 @@ if test "$HAVE_STRIPCHOP" = "yes" \
 
 fi
 
+dnl ---------------------------------------------------------------------------
+dnl Should we try to defer loading of strip/tile offsets and sizes to 
+dnl optimize directory scanning?  These is an experimental feature for 
+dnl libtiff 4.0.
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_ENABLE(defer-strile-load,
+             AS_HELP_STRING([--enable-defer-strile-load],
+                            [enable deferred strip/tile offset/size loading (experimental)]),
+             [HAVE_DEFER_STRILE_LOAD=$enableval], [HAVE_DEFER_STRILE_LOAD=no])
+
+if test "$HAVE_DEFER_STRILE_LOAD" = "yes" ; then
+  AC_DEFINE(DEFER_STRILE_LOAD,1,[enable deferred strip/tile offset/size loading (experimental)])
+
+fi
+
+dnl ---------------------------------------------------------------------------
+dnl Check for support of CHUNKY_STRIP_READ_SUPPORT, a mechanism to allowing
+dnl reading large strips (usually one strip files) in chunks when using
+dnl TIFFReadScanline().  This is an experimental feature in libtiff 4.0.
+dnl ---------------------------------------------------------------------------
+
+AC_ARG_ENABLE(chunky-strip-read,
+             AS_HELP_STRING([--enable-chunky-strip-read],
+                            [enable reading large strips in chunks for TIFFReadScanline() (experimental)]),
+             [HAVE_CHUNKY_STRIP_READ=$enableval], [HAVE_CHUNKY_STRIP_READ=no])
+
+if test "$HAVE_CHUNKY_STRIP_READ" = "yes" ; then
+  AC_DEFINE(CHUNKY_STRIP_READ_SUPPORT,1,[enable partial strip reading for large strips (experimental)])
+
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl Default subifd support.
 dnl ---------------------------------------------------------------------------
@@ -509,16 +967,13 @@ AC_SUBST(LIBDIR)
 AC_CONFIG_HEADERS([libtiff/tif_config.h libtiff/tiffconf.h])
 
 AC_CONFIG_FILES([Makefile \
+                build/Makefile \
                 contrib/Makefile \
-                contrib/acorn/Makefile \
                 contrib/addtiffo/Makefile \
                 contrib/dbs/Makefile \
                 contrib/dbs/xtiff/Makefile \
                 contrib/iptcutil/Makefile \
-                contrib/mac-cw/Makefile \
-                contrib/mac-mpw/Makefile \
                 contrib/mfs/Makefile \
-                contrib/ojpeg/Makefile \
                 contrib/pds/Makefile \
                 contrib/ras/Makefile \
                 contrib/stream/Makefile \
@@ -527,6 +982,7 @@ AC_CONFIG_FILES([Makefile \
                  html/Makefile \
                 html/images/Makefile \
                 html/man/Makefile \
+                 libtiff-4.pc \
                  libtiff/Makefile \
                  man/Makefile \
                 port/Makefile \
@@ -546,7 +1002,9 @@ LOC_MSG([  Documentation directory:            ${LIBTIFF_DOCDIR}])
 LOC_MSG([  C compiler:                         ${CC} ${CFLAGS}])
 LOC_MSG([  C++ compiler:                       ${CXX} ${CXXFLAGS}])
 LOC_MSG([  Enable runtime linker paths:        ${HAVE_RPATH}])
+LOC_MSG([  Enable linker symbol versioning:    ${have_ld_version_script}])
 LOC_MSG([  Support Microsoft Document Imaging: ${HAVE_MDI}])
+LOC_MSG([  Use win32 IO:                       ${win32_io_ok}])
 LOC_MSG()
 LOC_MSG([ Support for internal codecs:])
 LOC_MSG([  CCITT Group 3 & 4 algorithms:       ${HAVE_CCITT}])
@@ -561,9 +1019,13 @@ LOC_MSG([  ZLIB support:                       ${HAVE_ZLIB}])
 LOC_MSG([  Pixar log-format algorithm:         ${HAVE_PIXARLOG}])
 LOC_MSG([  JPEG support:                       ${HAVE_JPEG}])
 LOC_MSG([  Old JPEG support:                   ${HAVE_OJPEG}])
+LOC_MSG([  JPEG 8/12 bit dual mode:            ${HAVE_JPEG12}])
+LOC_MSG([  ISO JBIG support:                   ${HAVE_JBIG}])
+LOC_MSG([  LZMA2 support:                      ${HAVE_LZMA}])
 LOC_MSG()
 LOC_MSG([  C++ support:                        ${HAVE_CXX}])
 LOC_MSG()
+dnl LOC_MSG([  X Athena Widgets support:           ${HAVE_XAW}])
 LOC_MSG([  OpenGL support:                     ${HAVE_OPENGL}])
 LOC_MSG()
 
diff --git a/src/tiff/configure.com b/src/tiff/configure.com
new file mode 100644 (file)
index 0000000..2267517
--- /dev/null
@@ -0,0 +1,1357 @@
+$! $Id: configure.com,v 1.3 2012-07-29 15:45:29 tgl Exp $
+$!
+$! OpenVMS configure procedure for libtiff
+$! (c) Alexey Chupahin  22-NOV-2007
+$! elvis_75@mail.ru
+$!
+$! Permission to use, copy, modify, distribute, and sell this software and 
+$! its documentation for any purpose is hereby granted without fee, provided
+$! that (i) the above copyright notices and this permission notice appear in
+$! all copies of the software and related documentation, and (ii) the names of
+$! Sam Leffler and Silicon Graphics may not be used in any advertising or
+$! publicity relating to the software without the specific, prior written
+$! permission of Sam Leffler and Silicon Graphics.
+$! 
+$! THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+$! EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+$! WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+$! 
+$! IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+$! ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+$! OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+$! WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+$! LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+$! OF THIS SOFTWARE.
+$!
+$!
+$ SET NOON
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT "Configuring libTIFF library"
+$WRITE SYS$OUTPUT " "
+$! Checking architecture
+$DECC = F$SEARCH("SYS$SYSTEM:DECC$COMPILER.EXE") .NES. ""
+$IF (.NOT. DECC) THEN $WRITE SYS$OUTPUT  "BAD compiler" GOTO EXIT
+$    IF F$GETSYI("ARCH_TYPE").EQ.1 THEN CPU = "VAX"
+$    IF F$GETSYI("ARCH_TYPE").EQ.2 THEN CPU = "Alpha"
+$    IF F$GETSYI("ARCH_TYPE").EQ.3 THEN CPU = "I64"
+$    OS = F$GETSYI("VERSION")
+$WRITE SYS$OUTPUT "Checking architecture       ...  ", CPU
+$WRITE SYS$OUTPUT "Checking OS                 ...  OpenVMS ",OS
+$SHARED=0
+$IF ( (CPU.EQS."Alpha").OR.(CPU.EQS."I64") )
+$  THEN
+$       SHARED=64
+$  ELSE
+$       SHARED=32
+$ENDIF
+$MMS = F$SEARCH("SYS$SYSTEM:MMS.EXE") .NES. ""
+$MMK = F$TYPE(MMK) 
+$IF (MMS .OR. MMK.NES."") THEN GOTO TEST_LIBRARIES
+$! I cant find any make tool
+$GOTO EXIT
+$!
+$!
+$TEST_LIBRARIES:
+$!   Setting as MAKE utility one of MMS or MMK. I prefer MMS.
+$IF (MMK.NES."") THEN MAKE="MMK"
+$IF (MMS) THEN MAKE="MMS"
+$WRITE SYS$OUTPUT "Checking build utility      ...  ''MAKE'"
+$WRITE SYS$OUTPUT " "
+$!
+$!
+$IF (P1.EQS."STATIC").OR.(P1.EQS."static") THEN SHARED=0
+$!
+$!
+$!"Checking for strcasecmp "
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
+       #include  <strings.h>
+       #include  <stdlib.h>
+
+    int main()
+       {
+        if (strcasecmp("bla", "Bla")==0) exit(0);
+          else exit(2);
+       }
+$!
+$TMP = $STATUS
+$DEASS SYS$ERROR
+$DEAS  SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$  THEN
+$       HAVE_STRCASECMP=0
+$       GOTO NEXT1
+$ENDIF
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST
+$TMP = $STATUS
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$  THEN
+$       HAVE_STRCASECMP=0
+$       GOTO NEXT1
+$ENDIF
+$!
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$RUN TEST
+$IF ($STATUS .NE. %X00000001)
+$  THEN
+$      HAVE_STRCASECMP=0
+$  ELSE
+$       HAVE_STRCASECMP=1
+$ENDIF
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$NEXT1:
+$IF (HAVE_STRCASECMP.EQ.1)
+$  THEN
+$      WRITE SYS$OUTPUT "Checking for strcasecmp ...   Yes"    
+$  ELSE
+$      WRITE SYS$OUTPUT "Checking for strcasecmp ...   No"
+$ENDIF
+$!
+$!
+
+$!"Checking for lfind "
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
+        #include  <search.h>
+
+    int main()
+        {
+        lfind((const void *)key, (const void *)NULL, (size_t *)NULL,
+           (size_t) 0, NULL);
+        }
+$!
+$TMP = $STATUS
+$DEASS SYS$ERROR
+$DEAS  SYS$OUTPUT
+$IF (TMP .NE. %X10B90001)
+$  THEN
+$       HAVE_LFIND=0
+$       GOTO NEXT2
+$ENDIF
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST
+$TMP = $STATUS
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$  THEN
+$       HAVE_LFIND=0
+$       GOTO NEXT2
+$  ELSE
+$        HAVE_LFIND=1
+$ENDIF
+$!
+$NEXT2:
+$IF (HAVE_LFIND.EQ.1)
+$  THEN
+$       WRITE SYS$OUTPUT "Checking for lfind ...   Yes"
+$  ELSE
+$       WRITE SYS$OUTPUT "Checking for lfind ...   No"
+$ENDIF
+$!
+$!
+$!"Checking for correct zlib library    "
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(ZLIB) SYS$INPUT
+      #include <stdlib.h>
+      #include <stdio.h>
+      #include <zlib.h>
+   int main()
+     {
+       printf("checking version zlib:  %s\n",zlibVersion());
+     }
+$TMP = $STATUS
+$DEASS SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10B90001) 
+$  THEN 
+$      HAVE_ZLIB=0
+$      GOTO EXIT
+$ENDIF
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,ZLIB:LIBZ/LIB 
+$TMP = $STATUS
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001) 
+$  THEN 
+$      HAVE_ZLIB=0
+$       GOTO EXIT
+$  ELSE
+$      HAVE_ZLIB=1
+$ENDIF
+$IF (HAVE_ZLIB.EQ.1)
+$  THEN
+$       WRITE SYS$OUTPUT "Checking for correct zlib library ...   Yes"
+$  ELSE
+$      WRITE SYS$OUTPUT "Checking for correct zlib library ...   No"
+$       WRITE SYS$OUTPUT "This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$ENDIF
+$RUN TEST
+$!
+
+$DEL TEST.OBJ;*
+$! Checking for JPEG ...
+$ DEFINE SYS$ERROR _NLA0:
+$ DEFINE SYS$OUTPUT _NLA0:
+$ CC/OBJECT=TEST.OBJ/INCLUDE=(JPEG) SYS$INPUT
+      #include <stdlib.h>
+      #include <stdio.h>
+      #include <jpeglib.h>
+      #include <jversion.h>    
+   int main()
+     {
+       printf("checking version jpeg:  %s\n",JVERSION);
+       jpeg_quality_scaling(0);
+        return 0;
+     }
+$TMP = $STATUS
+$DEASS SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10B90001)
+$  THEN
+$       WRITE SYS$OUTPUT "Checking for static jpeg library ...   No"
+$      HAVE_JPEG=0
+$ENDIF
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,JPEG:LIBJPEG/LIB
+$TMP = $STATUS
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$  THEN
+$      HAVE_JPEG=0
+$  ELSE
+$      HAVE_JPEG=1
+$ENDIF
+$IF (HAVE_JPEG.EQ.1)
+$  THEN
+$       WRITE SYS$OUTPUT "Checking for static jpeg library ...   Yes"
+$       JPEG_LIBRARY_PATH="JPEG:LIBJPEG/LIB"
+$       RUN TEST
+$  ELSE
+$       WRITE SYS$OUTPUT "Checking for static jpeg library ...   No"
+$ENDIF
+$!
+$!"Checking for SHARED JPEG library    "
+$OPEN/WRITE OUT TEST.OPT
+$WRITE OUT "SYS$SHARE:LIBJPEG$SHR/SHARE"
+$WRITE OUT "ZLIB:LIBZ/LIB"
+$CLOSE OUT
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$LINK/EXE=TEST TEST,TEST/OPT
+$TMP = $STATUS
+$DEAS  SYS$ERROR
+$DEAS  SYS$OUTPUT
+$!WRITE SYS$OUTPUT TMP
+$IF (TMP .NE. %X10000001)
+$  THEN
+$       HAVE_JPEG_SHARED=0
+$  ELSE
+$       HAVE_JPEG_SHARED=1
+$ENDIF
+$IF (HAVE_JPEG_SHARED.EQ.1)
+$  THEN
+$       WRITE SYS$OUTPUT "Checking for shared jpeg library ...   Yes"
+$       JPEG_LIBRARY_PATH="SYS$SHARE:LIBJPEG$SHR/SHARE"
+$  ELSE
+$       WRITE SYS$OUTPUT "Checking for shared jpeg library ...   No"
+$ENDIF
+$!
+$ IF ( (HAVE_JPEG_SHARED.EQ.0).AND.(HAVE_JPEG.EQ.0) )
+$    THEN
+$       WRITE SYS$OUTPUT "No JPEG library installed. This is fatal. Please download and install good library from fafner.dyndns.org/~alexey/libsdl/public.html"
+$       GOTO EXIT
+$ ENDIF
+$!
+$!
+$!
+$! Checking for X11 ...
+$IF F$TRNLNM("DECW$INCLUDE") .NES. ""
+$  THEN
+$      WRITE SYS$OUTPUT "Checking for X11 ...   Yes"
+$  ELSE
+$      WRITE SYS$OUTPUT "Checking for X11 ...   No"
+$      WRITE SYS$OUTPUT "This is fatal. Please install X11 software"
+$      GOTO EXIT
+$ENDIF
+$!
+$!WRITING BUILD FILES
+$OPEN/WRITE OUT BUILD.COM
+$ WRITE OUT "$set def [.port]"
+$ WRITE OUT "$",MAKE
+$ WRITE OUT "$set def [-.libtiff]"
+$ WRITE OUT "$",MAKE
+$ WRITE OUT "$set def [-.tools]"
+$ WRITE OUT "$",MAKE
+$ WRITE OUT "$set def [-]"
+$ WRITE OUT "$cop [.PORT]LIBPORT.OLB [.LIBTIFF]LIBPORT.OLB"
+$ WRITE OUT "$ CURRENT = F$ENVIRONMENT (""DEFAULT"") "
+$ WRITE OUT "$TIFF=CURRENT"
+$ WRITE OUT "$OPEN/WRITE OUTT LIBTIFF$STARTUP.COM"
+$ WRITE OUT "$TIFF[F$LOCATE(""]"",TIFF),9]:="".LIBTIFF]"""
+$ WRITE OUT "$WRITE OUTT ""DEFINE TIFF ","'","'","TIFF'"" "
+$ WRITE OUT "$TIFF=CURRENT"
+$ WRITE OUT "$TIFF[F$LOCATE(""]"",TIFF),7]:="".TOOLS]"""
+$ WRITE OUT "$WRITE OUTT ""BMP2TIFF:==$", "'","'","TIFF'BMP2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""FAX2PS:==$", "'","'","TIFF'FAX2PS"""
+$ WRITE OUT "$WRITE OUTT ""FAX2TIFF:==$", "'","'","TIFF'FAX2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""GIF2TIFF:==$", "'","'","TIFF'GIF2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""PAL2RGB:==$", "'","'","TIFF'PAL2RGB"""
+$ WRITE OUT "$WRITE OUTT ""PPM2TIFF:==$", "'","'","TIFF'PPM2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""RAS2TIFF:==$", "'","'","TIFF'RAS2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""RAW2TIFF:==$", "'","'","TIFF'RAW2TIFF"""
+$ WRITE OUT "$WRITE OUTT ""RGB2YCBCR:==$", "'","'","TIFF'RGB2YCBCR"""
+$ WRITE OUT "$WRITE OUTT ""THUMBNAIL:==$", "'","'","TIFF'THUMBNAIL"""
+$ WRITE OUT "$WRITE OUTT ""TIFF2BW:==$", "'","'","TIFF'TIFF2BW"""
+$ WRITE OUT "$WRITE OUTT ""TIFF2PDF:==$", "'","'","TIFF'TIFF2PDF"""
+$ WRITE OUT "$WRITE OUTT ""TIFF2PS:==$", "'","'","TIFF'TIFF2PS"""
+$ WRITE OUT "$WRITE OUTT ""TIFF2RGBA:==$", "'","'","TIFF'TIFF2RGBA"""
+$ WRITE OUT "$WRITE OUTT ""TIFFCMP:==$", "'","'","TIFF'TIFFCMP"""
+$ WRITE OUT "$WRITE OUTT ""TIFFCP:==$", "'","'","TIFF'TIFFCP"""
+$ WRITE OUT "$WRITE OUTT ""TIFFDITHER:==$", "'","'","TIFF'TIFFDITHER"""
+$ WRITE OUT "$WRITE OUTT ""TIFFDUMP:==$", "'","'","TIFF'TIFFDUMP"""
+$ WRITE OUT "$WRITE OUTT ""TIFFINFO:==$", "'","'","TIFF'TIFFINFO"""
+$ WRITE OUT "$WRITE OUTT ""TIFFMEDIAN:==$", "'","'","TIFF'TIFFMEDIAN"""
+$ WRITE OUT "$WRITE OUTT ""TIFFCROP:==$", "'","'","TIFF'TIFFCROP"""
+$ WRITE OUT "$WRITE OUTT ""TIFFSET:==$", "'","'","TIFF'TIFFSET"""
+$ WRITE OUT "$CLOSE OUTT"
+$ WRITE OUT "$OPEN/WRITE OUTT [.LIBTIFF]LIBTIFF.OPT"
+$ WRITE OUT "$WRITE OUTT ""TIFF:TIFF/LIB""
+$ WRITE OUT "$WRITE OUTT ""TIFF:LIBPORT/LIB""
+$ WRITE OUT "$WRITE OUTT ""JPEG:LIBJPEG/LIB""
+$ WRITE OUT "$WRITE OUTT ""ZLIB:LIBZ/LIB""
+$ WRITE OUT "$CLOSE OUTT"
+$!
+$ WRITE OUT "$WRITE SYS$OUTPUT "" "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""LIBTIFF$STARTUP.COM has been created. "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""This file setups all logicals needed. It should be execute before using LibTIFF "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""Nice place to call it - LOGIN.COM "" "
+$ WRITE OUT "$WRITE SYS$OUTPUT """" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""Using the library:"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""CC/INC=TIFF ASCII_TAG.C"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""LINK ASCII_TAG,TIFF:LIBTIFF/OPT"" "
+$ WRITE OUT "$WRITE SYS$OUTPUT ""***************************************************************************** "" "
+$CLOSE OUT
+$!
+$! DESCRIP.MMS in [.PORT]
+$OBJ="dummy.obj"
+$IF HAVE_STRCASECMP.NE.1 
+$  THEN 
+$     OBJ=OBJ+",strcasecmp.obj"
+$ENDIF
+$IF HAVE_LFIND.NE.1   
+$   THEN 
+$       OBJ=OBJ+",lfind.obj"
+$ENDIF
+$OPEN/WRITE OUT [.PORT]DESCRIP.MMS
+$WRITE OUT "OBJ=",OBJ
+$WRITE OUT ""
+$WRITE OUT "LIBPORT.OLB : $(OBJ)"
+$WRITE OUT "   LIB/CREA LIBPORT $(OBJ)"
+$WRITE OUT ""
+$WRITE OUT ""
+$WRITE OUT "dummy.obj : dummy.c"
+$WRITE OUT "         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)"
+$WRITE OUT ""
+$WRITE OUT ""
+$WRITE OUT "strcasecmp.obj : strcasecmp.c"
+$WRITE OUT "         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)"
+$WRITE OUT ""
+$WRITE OUT ""
+$WRITE OUT "lfind.obj : lfind.c"
+$WRITE OUT "         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)"
+$WRITE OUT ""
+$WRITE OUT ""
+$CLOSE OUT
+$!
+$!
+$WRITE SYS$OUTPUT "Creating LIBTIFF$DEF.OPT"
+$IF (SHARED.EQ.64)
+$ THEN
+$       COPY SYS$INPUT TIFF$DEF.OPT
+SYMBOL_VECTOR= (-
+TIFFOpen=PROCEDURE,-
+TIFFGetVersion=PROCEDURE,-
+TIFFCleanup=PROCEDURE,-
+TIFFClose=PROCEDURE,-
+TIFFFlush=PROCEDURE,-
+TIFFFlushData=PROCEDURE,-
+TIFFGetField=PROCEDURE,-
+TIFFVGetField=PROCEDURE,-
+TIFFGetFieldDefaulted=PROCEDURE,-
+TIFFVGetFieldDefaulted=PROCEDURE,-
+TIFFGetTagListEntry=PROCEDURE,-
+TIFFGetTagListCount=PROCEDURE,-
+TIFFReadDirectory=PROCEDURE,-
+TIFFScanlineSize=PROCEDURE,-
+TIFFStripSize=PROCEDURE,-
+TIFFVStripSize=PROCEDURE,-
+TIFFRawStripSize=PROCEDURE,-
+TIFFTileRowSize=PROCEDURE,-
+TIFFTileSize=PROCEDURE,-
+TIFFVTileSize=PROCEDURE,-
+TIFFFileno=PROCEDURE,-
+TIFFSetFileno=PROCEDURE,-
+TIFFGetMode=PROCEDURE,-
+TIFFIsTiled=PROCEDURE,-
+TIFFIsByteSwapped=PROCEDURE,-
+TIFFIsBigEndian=PROCEDURE,-
+TIFFIsMSB2LSB=PROCEDURE,-
+TIFFIsUpSampled=PROCEDURE,-
+TIFFCIELabToRGBInit=PROCEDURE,-
+TIFFCIELabToXYZ=PROCEDURE,-
+TIFFXYZToRGB=PROCEDURE,-
+TIFFYCbCrToRGBInit=PROCEDURE,-
+TIFFYCbCrtoRGB=PROCEDURE,-
+TIFFCurrentRow=PROCEDURE,-
+TIFFCurrentDirectory=PROCEDURE,-
+TIFFCurrentStrip=PROCEDURE,-
+TIFFCurrentTile=PROCEDURE,-
+TIFFDataWidth=PROCEDURE,-
+TIFFReadBufferSetup=PROCEDURE,-
+TIFFWriteBufferSetup=PROCEDURE,-
+TIFFSetupStrips=PROCEDURE,-
+TIFFLastDirectory=PROCEDURE,-
+TIFFSetDirectory=PROCEDURE,-
+TIFFSetSubDirectory=PROCEDURE,-
+TIFFUnlinkDirectory=PROCEDURE,-
+TIFFSetField=PROCEDURE,-
+TIFFVSetField=PROCEDURE,-
+TIFFCheckpointDirectory=PROCEDURE,-
+TIFFWriteDirectory=PROCEDURE,-
+TIFFRewriteDirectory=PROCEDURE,-
+TIFFPrintDirectory=PROCEDURE,-
+TIFFReadScanline=PROCEDURE,-
+TIFFWriteScanline=PROCEDURE,-
+TIFFReadRGBAImage=PROCEDURE,-
+TIFFReadRGBAImageOriented=PROCEDURE,-
+TIFFFdOpen=PROCEDURE,-
+TIFFClientOpen=PROCEDURE,-
+TIFFFileName=PROCEDURE,-
+TIFFError=PROCEDURE,-
+TIFFErrorExt=PROCEDURE,-
+TIFFWarning=PROCEDURE,-
+TIFFWarningExt=PROCEDURE,-
+TIFFSetErrorHandler=PROCEDURE,-
+TIFFSetErrorHandlerExt=PROCEDURE,-
+TIFFSetWarningHandler=PROCEDURE,-
+TIFFSetWarningHandlerExt=PROCEDURE,-
+TIFFComputeTile=PROCEDURE,-
+TIFFCheckTile=PROCEDURE,-
+TIFFNumberOfTiles=PROCEDURE,-
+TIFFReadTile=PROCEDURE,-
+TIFFWriteTile=PROCEDURE,-
+TIFFComputeStrip=PROCEDURE,-
+TIFFNumberOfStrips=PROCEDURE,-
+TIFFRGBAImageBegin=PROCEDURE,-
+TIFFRGBAImageGet=PROCEDURE,-
+TIFFRGBAImageEnd=PROCEDURE,-
+TIFFReadEncodedStrip=PROCEDURE,-
+TIFFReadRawStrip=PROCEDURE,-
+TIFFReadEncodedTile=PROCEDURE,-
+TIFFReadRawTile=PROCEDURE,-
+TIFFReadRGBATile=PROCEDURE,-
+TIFFReadRGBAStrip=PROCEDURE,-
+TIFFWriteEncodedStrip=PROCEDURE,-
+TIFFWriteRawStrip=PROCEDURE,-
+TIFFWriteEncodedTile=PROCEDURE,-
+TIFFWriteRawTile=PROCEDURE,-
+TIFFSetWriteOffset=PROCEDURE,-
+TIFFSwabDouble=PROCEDURE,-
+TIFFSwabShort=PROCEDURE,-
+TIFFSwabLong=PROCEDURE,-
+TIFFSwabArrayOfShort=PROCEDURE,-
+TIFFSwabArrayOfLong=PROCEDURE,-
+TIFFSwabArrayOfDouble=PROCEDURE,-
+TIFFSwabArrayOfTriples=PROCEDURE,-
+TIFFReverseBits=PROCEDURE,-
+TIFFGetBitRevTable=PROCEDURE,-
+TIFFDefaultStripSize=PROCEDURE,-
+TIFFDefaultTileSize=PROCEDURE,-
+TIFFRasterScanlineSize=PROCEDURE,-
+_TIFFmalloc=PROCEDURE,-
+_TIFFrealloc=PROCEDURE,-
+_TIFFfree=PROCEDURE,-
+_TIFFmemset=PROCEDURE,-
+_TIFFmemcpy=PROCEDURE,-
+_TIFFmemcmp=PROCEDURE,-
+TIFFCreateDirectory=PROCEDURE,-
+TIFFSetTagExtender=PROCEDURE,-
+TIFFMergeFieldInfo=PROCEDURE,-
+TIFFFindFieldInfo=PROCEDURE,-
+TIFFFindFieldInfoByName=PROCEDURE,-
+TIFFFieldWithName=PROCEDURE,-
+TIFFFieldWithTag=PROCEDURE,-
+TIFFFieldTag=PROCEDURE,-
+TIFFFieldName=PROCEDURE,-
+TIFFFieldDataType=PROCEDURE,-
+TIFFFieldPassCount=PROCEDURE,-
+TIFFFieldReadCount=PROCEDURE,-
+TIFFFieldWriteCount=PROCEDURE,-
+TIFFCurrentDirOffset=PROCEDURE,-
+TIFFWriteCheck=PROCEDURE,-
+TIFFRGBAImageOK=PROCEDURE,-
+TIFFNumberOfDirectories=PROCEDURE,-
+TIFFSetFileName=PROCEDURE,-
+TIFFSetClientdata=PROCEDURE,-
+TIFFSetMode=PROCEDURE,-
+TIFFClientdata=PROCEDURE,-
+TIFFGetReadProc=PROCEDURE,-
+TIFFGetWriteProc=PROCEDURE,-
+TIFFGetSeekProc=PROCEDURE,-
+TIFFGetCloseProc=PROCEDURE,-
+TIFFGetSizeProc=PROCEDURE,-
+TIFFGetMapFileProc=PROCEDURE,-
+TIFFGetUnmapFileProc=PROCEDURE,-
+TIFFIsCODECConfigured=PROCEDURE,-
+TIFFGetConfiguredCODECs=PROCEDURE,-
+TIFFFindCODEC=PROCEDURE,-
+TIFFRegisterCODEC=PROCEDURE,-
+TIFFUnRegisterCODEC=PROCEDURE,-
+TIFFFreeDirectory=PROCEDURE,-
+TIFFReadCustomDirectory=PROCEDURE,-
+TIFFReadEXIFDirectory=PROCEDURE,-
+TIFFAccessTagMethods=PROCEDURE,-
+TIFFGetClientInfo=PROCEDURE,-
+TIFFSetClientInfo=PROCEDURE,-
+TIFFReassignTagToIgnore=PROCEDURE-
+)
+
+$ENDIF
+$IF (SHARED.EQ.32)
+$ THEN
+$       COPY SYS$INPUT TIFF$DEF.OPT
+UNIVERSAL=TIFFOpen
+UNIVERSAL=TIFFGetVersion
+UNIVERSAL=TIFFCleanup
+UNIVERSAL=TIFFClose
+UNIVERSAL=TIFFFlush
+UNIVERSAL=TIFFFlushData
+UNIVERSAL=TIFFGetField
+UNIVERSAL=TIFFVGetField
+UNIVERSAL=TIFFGetFieldDefaulted
+UNIVERSAL=TIFFVGetFieldDefaulted
+UNIVERSAL=TIFFGetTagListEntry
+UNIVERSAL=TIFFGetTagListCount
+UNIVERSAL=TIFFReadDirectory
+UNIVERSAL=TIFFScanlineSize
+UNIVERSAL=TIFFStripSize
+UNIVERSAL=TIFFVStripSize
+UNIVERSAL=TIFFRawStripSize
+UNIVERSAL=TIFFTileRowSize
+UNIVERSAL=TIFFTileSize
+UNIVERSAL=TIFFVTileSize
+UNIVERSAL=TIFFFileno
+UNIVERSAL=TIFFSetFileno
+UNIVERSAL=TIFFGetMode
+UNIVERSAL=TIFFIsTiled
+UNIVERSAL=TIFFIsByteSwapped
+UNIVERSAL=TIFFIsBigEndian
+UNIVERSAL=TIFFIsMSB2LSB
+UNIVERSAL=TIFFIsUpSampled
+UNIVERSAL=TIFFCIELabToRGBInit
+UNIVERSAL=TIFFCIELabToXYZ
+UNIVERSAL=TIFFXYZToRGB
+UNIVERSAL=TIFFYCbCrToRGBInit
+UNIVERSAL=TIFFYCbCrtoRGB
+UNIVERSAL=TIFFCurrentRow
+UNIVERSAL=TIFFCurrentDirectory
+UNIVERSAL=TIFFCurrentStrip
+UNIVERSAL=TIFFCurrentTile
+UNIVERSAL=TIFFDataWidth
+UNIVERSAL=TIFFReadBufferSetup
+UNIVERSAL=TIFFWriteBufferSetup
+UNIVERSAL=TIFFSetupStrips
+UNIVERSAL=TIFFLastDirectory
+UNIVERSAL=TIFFSetDirectory
+UNIVERSAL=TIFFSetSubDirectory
+UNIVERSAL=TIFFUnlinkDirectory
+UNIVERSAL=TIFFSetField
+UNIVERSAL=TIFFVSetField
+UNIVERSAL=TIFFCheckpointDirectory
+UNIVERSAL=TIFFWriteDirectory
+UNIVERSAL=TIFFRewriteDirectory
+UNIVERSAL=TIFFPrintDirectory
+UNIVERSAL=TIFFReadScanline
+UNIVERSAL=TIFFWriteScanline
+UNIVERSAL=TIFFReadRGBAImage
+UNIVERSAL=TIFFReadRGBAImageOriented
+UNIVERSAL=TIFFFdOpen
+UNIVERSAL=TIFFClientOpen
+UNIVERSAL=TIFFFileName
+UNIVERSAL=TIFFError
+UNIVERSAL=TIFFErrorExt
+UNIVERSAL=TIFFWarning
+UNIVERSAL=TIFFWarningExt
+UNIVERSAL=TIFFSetErrorHandler
+UNIVERSAL=TIFFSetErrorHandlerExt
+UNIVERSAL=TIFFSetWarningHandler
+UNIVERSAL=TIFFSetWarningHandlerExt
+UNIVERSAL=TIFFComputeTile
+UNIVERSAL=TIFFCheckTile
+UNIVERSAL=TIFFNumberOfTiles
+UNIVERSAL=TIFFReadTile
+UNIVERSAL=TIFFWriteTile
+UNIVERSAL=TIFFComputeStrip
+UNIVERSAL=TIFFNumberOfStrips
+UNIVERSAL=TIFFRGBAImageBegin
+UNIVERSAL=TIFFRGBAImageGet
+UNIVERSAL=TIFFRGBAImageEnd
+UNIVERSAL=TIFFReadEncodedStrip
+UNIVERSAL=TIFFReadRawStrip
+UNIVERSAL=TIFFReadEncodedTile
+UNIVERSAL=TIFFReadRawTile
+UNIVERSAL=TIFFReadRGBATile
+UNIVERSAL=TIFFReadRGBAStrip
+UNIVERSAL=TIFFWriteEncodedStrip
+UNIVERSAL=TIFFWriteRawStrip
+UNIVERSAL=TIFFWriteEncodedTile
+UNIVERSAL=TIFFWriteRawTile
+UNIVERSAL=TIFFSetWriteOffset
+UNIVERSAL=TIFFSwabDouble
+UNIVERSAL=TIFFSwabShort
+UNIVERSAL=TIFFSwabLong
+UNIVERSAL=TIFFSwabArrayOfShort
+UNIVERSAL=TIFFSwabArrayOfLong
+UNIVERSAL=TIFFSwabArrayOfDouble
+UNIVERSAL=TIFFSwabArrayOfTriples
+UNIVERSAL=TIFFReverseBits
+UNIVERSAL=TIFFGetBitRevTable
+UNIVERSAL=TIFFDefaultStripSize
+UNIVERSAL=TIFFDefaultTileSize
+UNIVERSAL=TIFFRasterScanlineSize
+UNIVERSAL=_TIFFmalloc
+UNIVERSAL=_TIFFrealloc
+UNIVERSAL=_TIFFfree
+UNIVERSAL=_TIFFmemset
+UNIVERSAL=_TIFFmemcpy
+UNIVERSAL=_TIFFmemcmp
+UNIVERSAL=TIFFCreateDirectory
+UNIVERSAL=TIFFSetTagExtender
+UNIVERSAL=TIFFMergeFieldInfo
+UNIVERSAL=TIFFFindFieldInfo
+UNIVERSAL=TIFFFindFieldInfoByName
+UNIVERSAL=TIFFFieldWithName
+UNIVERSAL=TIFFFieldWithTag
+UNIVERSAL=TIFFFieldTag
+UNIVERSAL=TIFFFieldName
+UNIVERSAL=TIFFFieldDataType
+UNIVERSAL=TIFFFieldPassCount
+UNIVERSAL=TIFFFieldReadCount
+UNIVERSAL=TIFFFieldWriteCount
+UNIVERSAL=TIFFCurrentDirOffset
+UNIVERSAL=TIFFWriteCheck
+UNIVERSAL=TIFFRGBAImageOK
+UNIVERSAL=TIFFNumberOfDirectories
+UNIVERSAL=TIFFSetFileName
+UNIVERSAL=TIFFSetClientdata
+UNIVERSAL=TIFFSetMode
+UNIVERSAL=TIFFClientdata
+UNIVERSAL=TIFFGetReadProc
+UNIVERSAL=TIFFGetWriteProc
+UNIVERSAL=TIFFGetSeekProc
+UNIVERSAL=TIFFGetCloseProc
+UNIVERSAL=TIFFGetSizeProc
+UNIVERSAL=TIFFGetMapFileProc
+UNIVERSAL=TIFFGetUnmapFileProc
+UNIVERSAL=TIFFIsCODECConfigured
+UNIVERSAL=TIFFGetConfiguredCODECs
+UNIVERSAL=TIFFFindCODEC
+UNIVERSAL=TIFFRegisterCODEC
+UNIVERSAL=TIFFUnRegisterCODEC
+UNIVERSAL=TIFFFreeDirectory
+UNIVERSAL=TIFFReadCustomDirectory
+UNIVERSAL=TIFFReadEXIFDirectory
+UNIVERSAL=TIFFAccessTagMethods
+UNIVERSAL=TIFFGetClientInfo
+UNIVERSAL=TIFFSetClientInfo
+UNIVERSAL=TIFFReassignTagToIgnore
+$ENDIF
+$!
+$!
+$! Writing TIFF$SHR.OPT file to build TOOLS
+$ IF (SHARED.GT.0)
+$   THEN
+$       OPEN/WRITE OUT TIFF$SHR.OPT
+$       WRITE OUT "[]TIFF/LIB"
+$       WRITE OUT "[-.PORT]LIBPORT/LIB"
+$       WRITE OUT JPEG_LIBRARY_PATH
+$       WRITE OUT "ZLIB:LIBZ/LIB"
+$       CLOSE OUT
+$ ENDIF
+$!
+$!
+$! Writing OPT.OPT file to build TOOLS
+$OPEN/WRITE OUT OPT.OPT
+$ IF (SHARED.GT.0)
+$   THEN
+$       WRITE OUT "[-.LIBTIFF]TIFF$SHR/SHARE"
+$       WRITE OUT JPEG_LIBRARY_PATH
+$   ELSE
+$       WRITE OUT "[-.LIBTIFF]TIFF/LIB"
+$       WRITE OUT "[-.PORT]LIBPORT/LIB"
+$       WRITE OUT JPEG_LIBRARY_PATH
+$ ENDIF
+$ WRITE OUT "ZLIB:LIBZ/LIB"
+$CLOSE OUT
+$!
+$!
+$COPY SYS$INPUT [.LIBTIFF]DESCRIP.MMS
+# (c) Alexey Chupahin 22-NOV-2007
+# OpenVMS 7.3-1, DEC 2000 mod.300
+# OpenVMS 8.3,   HP rx1620
+# Makefile for DEC C compilers.
+#
+
+INCL    = /INCLUDE=(JPEG,ZLIB,[])
+
+CFLAGS =  $(INCL)
+
+OBJ_SYSDEP_MODULE = tif_vms.obj
+
+OBJ     = \
+tif_aux.obj,\
+tif_close.obj,\
+tif_codec.obj,\
+tif_color.obj,\
+tif_compress.obj,\
+tif_dir.obj,\
+tif_dirinfo.obj,\
+tif_dirread.obj,\
+tif_dirwrite.obj,\
+tif_dumpmode.obj,\
+tif_error.obj,\
+tif_extension.obj,\
+tif_fax3.obj,\
+tif_fax3sm.obj,\
+tif_flush.obj,\
+tif_getimage.obj,\
+tif_jbig.obj,\
+tif_jpeg.obj,\
+tif_luv.obj,\
+tif_lzw.obj,\
+tif_next.obj,\
+tif_ojpeg.obj,\
+tif_open.obj,\
+tif_packbits.obj,\
+tif_pixarlog.obj,\
+tif_predict.obj,\
+tif_print.obj,\
+tif_read.obj,\
+tif_strip.obj,\
+tif_swab.obj,\
+tif_thunder.obj,\
+tif_tile.obj,\
+tif_version.obj,\
+tif_warning.obj,\
+tif_write.obj,\
+tif_zip.obj, $(OBJ_SYSDEP_MODULE)
+
+$IF (SHARED.GT.0)
+$ THEN
+$       APP SYS$INPUT [.LIBTIFF]DESCRIP.MMS
+ALL : tiff.olb, tiff$shr.exe
+        $WRITE SYS$OUTPUT "Done"
+
+tiff$shr.exe : tiff.olb
+        LINK/SHARE=TIFF$SHR.EXE TIF_AUX,[-]TIFF$DEF/OPT, [-]TIFF$SHR/OPT
+        COPY TIFF$SHR.EXE SYS$SHARE
+        PURGE SYS$SHARE:TIFF$SHR.EXE
+
+$ ELSE
+$       APP SYS$INPUT [.LIBTIFF]DESCRIP.MMS
+ALL : tiff.olb
+        $WRITE SYS$OUTPUT "Done"
+
+$ENDIF
+$!
+$!
+$ APP SYS$INPUT [.LIBTIFF]DESCRIP.MMS
+
+tiff.olb :  $(OBJ)
+        lib/crea tiff.olb $(OBJ)
+
+#tif_config.h : tif_config.h-vms
+#        copy tif_config.h-vms tif_config.h
+#
+#tiffconf.h : tiffconf.h-vms
+#        copy tiffconf.h-vms tiffconf.h
+
+tif_aux.obj : tif_aux.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_close.obj : tif_close.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_codec.obj : tif_codec.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_color.obj : tif_color.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_compress.obj : tif_compress.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_dir.obj : tif_dir.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_dirinfo.obj : tif_dirinfo.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_dirread.obj : tif_dirread.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_dirwrite.obj : tif_dirwrite.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_dumpmode.obj : tif_dumpmode.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_error.obj : tif_error.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_extension.obj : tif_extension.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_fax3.obj : tif_fax3.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_fax3sm.obj : tif_fax3sm.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_flush.obj : tif_flush.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_getimage.obj : tif_getimage.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_jbig.obj : tif_jbig.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_jpeg.obj : tif_jpeg.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_luv.obj : tif_luv.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_lzw.obj : tif_lzw.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_next.obj : tif_next.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_ojpeg.obj : tif_ojpeg.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_open.obj : tif_open.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_packbits.obj : tif_packbits.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_pixarlog.obj : tif_pixarlog.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_predict.obj : tif_predict.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_print.obj : tif_print.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_read.obj : tif_read.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_strip.obj : tif_strip.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_swab.obj : tif_swab.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_thunder.obj : tif_thunder.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_tile.obj : tif_tile.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_unix.obj : tif_unix.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_version.obj : tif_version.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_warning.obj : tif_warning.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_write.obj : tif_write.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tif_zip.obj : tif_zip.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+
+clean :
+        del *.obj;*
+        del *.olb;*
+$!
+$!
+$!
+$COPY SYS$INPUT [.TOOLS]DESCRIP.MMS
+# (c) Alexey Chupahin 22-NOV-2007
+# OpenVMS 7.3-1, DEC 2000 mod.300
+# OpenVMS 8.3,   HP rx1620
+INCL            = /INCL=([],[-.LIBTIFF])
+CFLAGS = $(INCL)
+LIBS = [-]OPT/OPT
+
+OBJ=\
+bmp2tiff.exe,\
+fax2ps.exe,\
+fax2tiff.exe,\
+gif2tiff.exe,\
+pal2rgb.exe,\
+ppm2tiff.exe,\
+ras2tiff.exe,\
+raw2tiff.exe,\
+rgb2ycbcr.exe,\
+thumbnail.exe,\
+tiff2bw.exe,\
+tiff2pdf.exe,\
+tiff2ps.exe,\
+tiff2rgba.exe,\
+tiffcmp.exe,\
+tiffcp.exe,\
+tiffcrop.exe,\
+tiffdither.exe,\
+tiffdump.exe,\
+tiffinfo.exe,\
+tiffmedian.exe,\
+tiffset.exe,\
+tiffsplit.exe,\
+ycbcr.exe
+
+all : $(OBJ)
+       $!
+
+bmp2tiff.obj : bmp2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+bmp2tiff.exe : bmp2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+fax2ps.obj : fax2ps.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+fax2ps.exe : fax2ps.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+fax2tiff.obj : fax2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+fax2tiff.exe : fax2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+gif2tiff.obj : gif2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+gif2tiff.exe : gif2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+pal2rgb.obj : pal2rgb.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+pal2rgb.exe : pal2rgb.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+ppm2tiff.obj : ppm2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+ppm2tiff.exe : ppm2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+ras2tiff.obj : ras2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+ras2tiff.exe : ras2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+raw2tiff.obj : raw2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+raw2tiff.exe : raw2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+rgb2ycbcr.obj : rgb2ycbcr.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+rgb2ycbcr.exe : rgb2ycbcr.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+sgi2tiff.obj : sgi2tiff.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+sgi2tiff.exe : sgi2tiff.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+sgisv.obj : sgisv.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+sgisv.exe : sgisv.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+thumbnail.obj : thumbnail.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+thumbnail.exe : thumbnail.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiff2bw.obj : tiff2bw.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiff2bw.exe : tiff2bw.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiff2pdf.obj : tiff2pdf.c
+         $(CC) $(CFLAGS) /NOWARN $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiff2pdf.exe : tiff2pdf.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiff2ps.obj : tiff2ps.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiff2ps.exe : tiff2ps.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiff2rgba.obj : tiff2rgba.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiff2rgba.exe : tiff2rgba.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffcmp.obj : tiffcmp.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffcmp.exe : tiffcmp.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffcp.obj : tiffcp.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffcp.exe : tiffcp.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffcrop.obj : tiffcrop.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffcrop.exe : tiffcrop.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffdither.obj : tiffdither.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffdither.exe : tiffdither.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffdump.obj : tiffdump.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffdump.exe : tiffdump.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffgt.obj : tiffgt.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffgt.exe : tiffgt.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffinfo.obj : tiffinfo.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffinfo.exe : tiffinfo.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffmedian.obj : tiffmedian.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffmedian.exe : tiffmedian.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffset.obj : tiffset.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffset.exe : tiffset.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+tiffsplit.obj : tiffsplit.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+tiffsplit.exe : tiffsplit.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+ycbcr.obj : ycbcr.c
+         $(CC) $(CFLAGS) $(MMS$SOURCE) /OBJ=$(MMS$TARGET)
+
+ycbcr.exe : ycbcr.obj
+         LINK/EXE=$(MMS$TARGET)  $(MMS$SOURCE), $(LIBS)
+
+CLEAN :
+       DEL ALL.;*
+       DEL *.OBJ;*
+       DEL *.EXE;*
+
+$!
+$!
+$!
+$!copiing and patching TIFF_CONF.H, TIF_CONFIG.H
+$!
+$CURRENT = F$ENVIRONMENT (""DEFAULT"")
+$CURRENT[F$LOCATE("]",CURRENT),9]:=".LIBTIFF]"
+$WRITE SYS$OUTPUT "Creating TIFFCONF.H and TIF_CONFIG.H"
+$COPY SYS$INPUT 'CURRENT'TIFFCONF.H
+/*
+  Configuration defines for installed libtiff.
+  This file maintained for backward compatibility. Do not use definitions
+  from this file in your programs.
+*/
+
+#ifndef _TIFFCONF_
+#define _TIFFCONF_
+
+/* Define to 1 if the system has the type `int16'. */
+//#define HAVE_INT16
+
+/* Define to 1 if the system has the type `int32'. */
+//#define  HAVE_INT32
+
+/* Define to 1 if the system has the type `int8'. */
+//#define HAVE_INT8
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Compatibility stuff. */
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+
+#ifdef __IEEE_FLOAT
+#define HAVE_IEEEFP 1
+#endif
+
+#define HAVE_GETOPT 1
+
+/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
+   (Intel) */
+#define HOST_BIGENDIAN 0
+
+/* Support CCITT Group 3 & 4 algorithms */
+#define CCITT_SUPPORT 1
+
+/* Support LogLuv high dynamic range encoding */
+#define LOGLUV_SUPPORT 1
+
+/* Support LZW algorithm */
+#define LZW_SUPPORT 1
+
+/* Support NeXT 2-bit RLE algorithm */
+#define NEXT_SUPPORT 1
+
+/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
+   fails with unpatched IJG JPEG library) */
+
+/* Support Macintosh PackBits algorithm */
+#define PACKBITS_SUPPORT 1
+
+/* Support Pixar log-format algorithm (requires Zlib) */
+#define PIXARLOG_SUPPORT 1
+
+/* Support ThunderScan 4-bit RLE algorithm */
+#define THUNDER_SUPPORT 1
+
+/* Support Deflate compression */
+/* #undef ZIP_SUPPORT */
+
+/* Support strip chopping (whether or not to convert single-strip uncompressed
+   images to mutiple strips of ~8Kb to reduce memory usage) */
+#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
+
+/* Enable SubIFD tag (330) support */
+#define SUBIFD_SUPPORT 1
+
+/* Treat extra sample as alpha (default enabled). The RGBA interface will
+   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
+   packages produce RGBA files but don't mark the alpha properly. */
+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
+
+/* Pick up YCbCr subsampling info from the JPEG data stream to support files
+   lacking the tag (default enabled). */
+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
+
+/*
+ * Feature support definitions.
+ * XXX: These macros are obsoleted. Don't use them in your apps!
+ * Macros stays here for backward compatibility and should be always defined.
+ */
+#define COLORIMETRY_SUPPORT
+#define YCBCR_SUPPORT
+#define CMYK_SUPPORT
+#define ICC_SUPPORT
+#define PHOTOSHOP_SUPPORT
+#define IPTC_SUPPORT
+
+#endif /* _TIFFCONF_ */
+
+$COPY SYS$INPUT 'CURRENT'TIF_CONFIG.H
+/* Define to 1 if you have the <assert.h> header file. */
+
+#ifndef HAVE_GETOPT
+#  define HAVE_GETOPT 1
+#endif
+
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+
+#ifdef __IEEE_FLOAT
+#define HAVE_IEEEFP 1
+#endif
+
+#define HAVE_UNISTD_H 1
+
+#define HAVE_STRING_H 1
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+//#define HAVE_IO_H 1
+
+/* Define to 1 if you have the <search.h> header file. */
+//#define HAVE_SEARCH_H 1
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Set the native cpu bit order */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+/*
+#ifndef __cplusplus
+# ifndef inline
+#  define inline __inline
+# endif
+#endif
+*/
+
+/* Support CCITT Group 3 & 4 algorithms */
+#define CCITT_SUPPORT 1
+
+/* Pick up YCbCr subsampling info from the JPEG data stream to support files
+   lacking the tag (default enabled). */
+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
+/* Support C++ stream API (requires C++ compiler) */
+#define CXX_SUPPORT 1
+
+/* Treat extra sample as alpha (default enabled). The RGBA interface will
+   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
+      packages produce RGBA files but don't mark the alpha properly. */
+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
+
+/* little Endian */
+#define HOST_BIGENDIAN 0
+#define JPEG_SUPPORT 1
+#define LOGLUV_SUPPORT 1
+/* Support LZW algorithm */
+#define LZW_SUPPORT 1
+
+/* Support Microsoft Document Imaging format */
+#define MDI_SUPPORT 1
+
+/* Support NeXT 2-bit RLE algorithm */
+#define NEXT_SUPPORT 1
+#define OJPEG_SUPPORT 1
+
+/* Name of package */
+#define PACKAGE "tiff"
+
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "tiff@lists.maptools.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "LibTIFF Software"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "LibTIFF Software 3.9.0beta for VMS"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "tiff"
+
+$PURGE 'CURRENT'TIFFCONF.H
+$PURGE 'CURRENT'TIF_CONFIG.H
+$OPEN/APPEND OUT 'CURRENT'TIF_CONFIG.H
+$IF HAVE_LFIND.EQ.1
+$   THEN
+$       WRITE OUT "#define HAVE_SEARCH_H 1"
+$   ELSE
+$       WRITE OUT "#undef HAVE_SEARCH_H"
+$ENDIF
+$CLOSE OUT
+$!
+$!
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT " "
+$WRITE SYS$OUTPUT "Now you can type @BUILD "
+$!
+$EXIT:
+$DEFINE SYS$ERROR _NLA0:
+$DEFINE SYS$OUTPUT _NLA0:
+$DEL TEST.OBJ;*
+$DEL TEST.C;*
+$DEL TEST.EXE;*
+$DEAS SYS$ERROR
+$DEAS SYS$OUTPUT
index af77f524bdf91a6428615a97c4c5a73e413bd5ca..b231ef91e37da76da10943322db484992bf24677 100644 (file)
@@ -25,5 +25,5 @@
 
 EXTRA_DIST = README
 
-SUBDIRS = acorn addtiffo dbs iptcutil mac-cw mac-mpw mfs ojpeg pds ras stream tags win_dib
+SUBDIRS = addtiffo dbs iptcutil mfs pds ras stream tags win_dib
 
index 868b72ac463fcc8b460c086728e67373b47f1768..e5b0741aef87eec85dad6810667748456246d114 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,36 +74,84 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
-       install-exec-recursive install-info-recursive \
-       install-recursive installcheck-recursive installdirs-recursive \
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-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
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -109,6 +171,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -123,12 +186,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -147,20 +205,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -172,64 +235,68 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README
-SUBDIRS = acorn addtiffo dbs iptcutil mac-cw mac-mpw mfs ojpeg pds ras stream tags win_dib
+SUBDIRS = addtiffo dbs iptcutil mfs pds ras stream tags win_dib
 all: all-recursive
 
 .SUFFIXES:
@@ -237,14 +304,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -262,6 +329,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -269,18 +337,14 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
+# 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) $(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -289,7 +353,11 @@ $(RECURSIVE_TARGETS):
        done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -297,51 +365,23 @@ $(RECURSIVE_TARGETS):
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-       @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); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
        done
 ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -349,14 +389,14 @@ ID: $(HEADERS) $(SOURCES) $(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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
@@ -368,81 +408,112 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test ! -f $$subdir/TAGS || \
-             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
-       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+       @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 && \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
              $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$top_distdir" \
-               distdir="$$distdir/$$subdir" \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
                distdir) \
              || exit 1; \
          fi; \
@@ -462,16 +533,22 @@ install-am: all-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
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -482,8 +559,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-       distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -491,18 +567,38 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -521,22 +617,26 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-       clean clean-generic clean-libtool clean-recursive ctags \
-       ctags-recursive distclean distclean-generic distclean-libtool \
-       distclean-recursive distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-exec install-exec-am install-info \
-       install-info-am install-man install-strip installcheck \
-       installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic maintainer-clean-recursive \
-       mostlyclean mostlyclean-generic mostlyclean-libtool \
-       mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
-       uninstall uninstall-am uninstall-info-am
+uninstall-am:
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-generic distclean-libtool distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       installdirs-am maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+       ps ps-am tags tags-recursive uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/src/tiff/contrib/acorn/Makefile.acorn b/src/tiff/contrib/acorn/Makefile.acorn
deleted file mode 100644 (file)
index 8f01477..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-# Project:   LibTIFF
-
-
-# Toolflags:
-CCflags = -c -zo -ffah -depend !Depend -IC:
-C++flags = -c -depend !Depend -IC: -throwback
-Linkflags = -aif -c++ -o $@
-DrLinkflags = -nounused -aif -c++ -o $@
-ObjAsmflags = -throwback -NoCache -depend !Depend
-CMHGflags = 
-LibFileflags = -c -o $@
-Squeezeflags = -o $@
-
-
-# Final targets:
-@.o.LIBTIFF:   \
-        @.o.tif_acorn \
-        @.o.tif_aux \
-        @.o.tif_close \
-        @.o.tif_codec \
-       @.o.tif_compress \
-       @.o.tif_dir \
-       @.o.tif_dirinfo \
-       @.o.tif_dirread \
-       @.o.tif_dirwrite \
-       @.o.tif_dumpmode \
-       @.o.tif_error \
-       @.o.tif_fax3 \
-       @.o.tif_flush \
-       @.o.tif_getimage \
-       @.o.tif_jpeg \
-       @.o.tif_lzw \
-       @.o.tif_next \
-       @.o.tif_open \
-       @.o.tif_packbits \
-       @.o.tif_predict \
-       @.o.tif_print \
-       @.o.tif_read \
-       @.o.tif_strip \
-       @.o.tif_swab \
-       @.o.tif_thunder \
-       @.o.tif_tile \
-       @.o.tif_version \
-       @.o.tif_warning \
-       @.o.tif_write \
-       @.o.tif_zip \
-       @.o.tif_fax3sm \
-       @.h.version 
-       LibFile $(LibFileflags) \
-       @.o.tif_acorn \
-       @.o.tif_aux \
-       @.o.tif_close \
-       @.o.tif_codec \
-       @.o.tif_compress \
-       @.o.tif_dir \
-       @.o.tif_dirinfo \
-       @.o.tif_dirread \
-       @.o.tif_dirwrite \
-       @.o.tif_dumpmode \
-       @.o.tif_error \
-       @.o.tif_fax3 \
-       @.o.tif_flush \
-       @.o.tif_getimage \
-       @.o.tif_jpeg \
-       @.o.tif_lzw \
-       @.o.tif_next \
-       @.o.tif_open \
-       @.o.tif_packbits \
-       @.o.tif_predict \
-       @.o.tif_print \
-       @.o.tif_read \
-       @.o.tif_strip \
-       @.o.tif_swab \
-       @.o.tif_thunder \
-       @.o.tif_tile \
-       @.o.tif_version \
-       @.o.tif_warning \
-       @.o.tif_write \
-       @.o.tif_zip \
-       @.o.tif_fax3sm 
-
-
-# User-editable dependencies:
-@.mkversion:   @.o.mkversion C:o.Stubs 
-       Link $(linkflags) @.o.mkversion C:o.Stubs 
-@.h.version:   @.VERSION @.mkversion 
-       <Prefix$Dir>.mkversion -v @.VERSION -a @.tiff/alpha @.h.version 
-@.mkg3states:   @.o.mkg3states @.o.getopt C:o.Stubs 
-       link $(linkflags) @.o.mkg3states C:o.Stubs @.o.getopt 
-@.c.tif_fax3sm:   @.mkg3states 
-       <Prefix$Dir>.mkg3states -c const @.c.tif_fax3sm 
-
-# Static dependencies:
-@.o.tif_acorn:   @.c.tif_acorn
-       cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn 
-@.o.tif_aux:   @.c.tif_aux
-       cc $(ccflags) -o @.o.tif_aux @.c.tif_aux 
-@.o.tif_close:   @.c.tif_close
-       cc $(ccflags) -o @.o.tif_close @.c.tif_close 
-@.o.tif_codec:   @.c.tif_codec
-       cc $(ccflags) -o @.o.tif_codec @.c.tif_codec 
-@.o.tif_compress:   @.c.tif_compress
-       cc $(ccflags) -o @.o.tif_compress @.c.tif_compress 
-@.o.tif_dir:   @.c.tif_dir
-       cc $(ccflags) -o @.o.tif_dir @.c.tif_dir 
-@.o.tif_dirinfo:   @.c.tif_dirinfo
-       cc $(ccflags) -o @.o.tif_dirinfo @.c.tif_dirinfo 
-@.o.tif_dirread:   @.c.tif_dirread
-       cc $(ccflags) -o @.o.tif_dirread @.c.tif_dirread 
-@.o.tif_dirwrite:   @.c.tif_dirwrite
-       cc $(ccflags) -o @.o.tif_dirwrite @.c.tif_dirwrite 
-@.o.tif_dumpmode:   @.c.tif_dumpmode
-       cc $(ccflags) -o @.o.tif_dumpmode @.c.tif_dumpmode 
-@.o.tif_error:   @.c.tif_error
-       cc $(ccflags) -o @.o.tif_error @.c.tif_error 
-@.o.tif_fax3:   @.c.tif_fax3
-       cc $(ccflags) -o @.o.tif_fax3 @.c.tif_fax3 
-@.o.tif_flush:   @.c.tif_flush
-       cc $(ccflags) -o @.o.tif_flush @.c.tif_flush 
-@.o.tif_getimage:   @.c.tif_getimage
-       cc $(ccflags) -o @.o.tif_getimage @.c.tif_getimage 
-@.o.tif_jpeg:   @.c.tif_jpeg
-       cc $(ccflags) -o @.o.tif_jpeg @.c.tif_jpeg 
-@.o.tif_lzw:   @.c.tif_lzw
-       cc $(ccflags) -o @.o.tif_lzw @.c.tif_lzw 
-@.o.tif_next:   @.c.tif_next
-       cc $(ccflags) -o @.o.tif_next @.c.tif_next 
-@.o.tif_open:   @.c.tif_open
-       cc $(ccflags) -o @.o.tif_open @.c.tif_open 
-@.o.tif_packbits:   @.c.tif_packbits
-       cc $(ccflags) -o @.o.tif_packbits @.c.tif_packbits 
-@.o.tif_predict:   @.c.tif_predict
-       cc $(ccflags) -o @.o.tif_predict @.c.tif_predict 
-@.o.tif_print:   @.c.tif_print
-       cc $(ccflags) -o @.o.tif_print @.c.tif_print 
-@.o.tif_read:   @.c.tif_read
-       cc $(ccflags) -o @.o.tif_read @.c.tif_read 
-@.o.tif_strip:   @.c.tif_strip
-       cc $(ccflags) -o @.o.tif_strip @.c.tif_strip 
-@.o.tif_swab:   @.c.tif_swab
-       cc $(ccflags) -o @.o.tif_swab @.c.tif_swab 
-@.o.tif_thunder:   @.c.tif_thunder
-       cc $(ccflags) -o @.o.tif_thunder @.c.tif_thunder 
-@.o.tif_tile:   @.c.tif_tile
-       cc $(ccflags) -o @.o.tif_tile @.c.tif_tile 
-@.o.tif_version:   @.c.tif_version
-       cc $(ccflags) -o @.o.tif_version @.c.tif_version 
-@.o.tif_warning:   @.c.tif_warning
-       cc $(ccflags) -o @.o.tif_warning @.c.tif_warning 
-@.o.tif_write:   @.c.tif_write
-       cc $(ccflags) -o @.o.tif_write @.c.tif_write 
-@.o.tif_zip:   @.c.tif_zip
-       cc $(ccflags) -o @.o.tif_zip @.c.tif_zip 
-@.o.mkg3states:   @.c.mkg3states
-       cc $(ccflags) -o @.o.mkg3states @.c.mkg3states 
-@.o.getopt:   @.c.getopt
-       cc $(ccflags) -o @.o.getopt @.c.getopt 
-@.o.mkspans:   @.c.mkspans
-       cc $(ccflags) -o @.o.mkspans @.c.mkspans 
-@.o.tif_fax3sm:   @.c.tif_fax3sm
-       cc $(ccflags) -o @.o.tif_fax3sm @.c.tif_fax3sm 
-@.o.mkversion:   @.c.mkversion
-       cc $(ccflags) -o @.o.mkversion @.c.mkversion 
-
-# Dynamic dependencies:
diff --git a/src/tiff/contrib/acorn/Makefile.am b/src/tiff/contrib/acorn/Makefile.am
deleted file mode 100644 (file)
index 3b5be71..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-
-EXTRA_DIST = Makefile.acorn ReadMe SetVars cleanlib convert install
-
diff --git a/src/tiff/contrib/acorn/Makefile.in b/src/tiff/contrib/acorn/Makefile.in
deleted file mode 100644 (file)
index d009c86..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  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@
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = contrib/acorn
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
-       $(top_builddir)/libtiff/tiffconf.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GLUT_CFLAGS = @GLUT_CFLAGS@
-GLUT_LIBS = @GLUT_LIBS@
-GLU_CFLAGS = @GLU_CFLAGS@
-GLU_LIBS = @GLU_LIBS@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDIR = @LIBDIR@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@
-LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@
-LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@
-LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@
-LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@
-LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
-LIBTIFF_VERSION = @LIBTIFF_VERSION@
-LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-NM = @NM@
-OBJDUMP = @OBJDUMP@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-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@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-EXTRA_DIST = Makefile.acorn ReadMe SetVars cleanlib convert install
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/acorn/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/acorn/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
-         if test -d $$d/$$file; then \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-           fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-         else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -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."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tiff/contrib/acorn/ReadMe b/src/tiff/contrib/acorn/ReadMe
deleted file mode 100644 (file)
index dc16a79..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-Building the Software on an Acorn RISC OS system
-
-The directory contrib/acorn contains support for compiling the library under
-Acorn C/C++ under Acorn's RISC OS 3.10 or above. Subsequent pathnames will
-use the Acorn format: The full-stop or period character is a pathname
-delimeter, and the slash character is not interpreted; the reverse position
-from Unix. Thus "libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c".
-
-This support was contributed by Peter Greenham.
-(peterg@angmulti.demon.co.uk).
-
-Installing LibTIFF:
-
-LIBTIFF uses several files which have names longer than the normal RISC OS
-maximum of ten characters. This complicates matters. Maybe one day Acorn will
-address the problem and implement long filenames properly. Until then this
-gets messy, especially as I'm trying to do this with obeyfiles and not have
-to include binaries in this distribution.
-
-First of all, ensure you have Truncate configured on (type *Configure
-Truncate On) Although it is, of course, preferable to have long filenames,
-LIBTIFF can be installed with short filenames, and it will compile and link
-without problems. However, getting it there is more problematic.
-contrib.acorn.install is an installation obeyfile which will create a normal
-Acorn-style library from the source (ie: with c, h and o folders etc.), but
-needs the distribution library to have been unpacked into a location which is
-capable of supporting long filenames, even if only temporarily.
-
-My recommendation, until Acorn address this problem properly, is to use Jason
-Tribbeck's LongFilenames , or any other working system that gives you long
-filenames, like a nearby NFS server for instance.
-
-If you are using Longfilenames, even if only temporarily to install LIBTIFF,
-unpack the TAR into a RAMDisc which has been longfilenamed (ie: *addlongfs
-ram) and then install from there to the hard disk. Unfortunately
-Longfilenames seems a bit unhappy about copying a bunch of long-named files
-across the same filing system, but is happy going between systems. You'll
-need to create a ramdisk of about 2Mb.
-
-Now you can run the installation script I've supplied (in contrib.acorn),
-which will automate the process of installing LIBTIFF as an Acorn-style
-library. The syntax is as follows:
-
-install <source_dir> <dest_dir>
-
-Install will then create <dest_dir> and put the library in there. For
-example, having used LongFilenames on the RAMDisk and unpacked the library
-into there, you can then type:
-
-Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$ ADFS::4.$.LIBTIFF
-
-It doesn't matter if the destination location can cope with long filenames or
-not. The filenames will be truncated if necessary (*Configure Truncate On if
-you get errors) and all will be well.
-
-Compiling LibTIFF:
-
-Once the LibTIFF folder has been created and the files put inside, making the
-library should be just a matter of running 'SetVars' to set the appropriate
-system variables, then running 'Makefile'.
-
-OSLib
-
-OSLib is a comprehensive API for RISC OS machines, written by Jonathan
-Coxhead of Acorn Computers (although OSLib is not an official Acorn product).
-Using the OSLib SWI veneers produces code which is more compact and more
-efficient than code written using _kernel_swi or _swi. The Acorn port of
-LibTIFF can take advantage of this if present. Edit the Makefile and go to
-the Static dependencies section. The first entry is:
-
-# Static dependencies:
-@.o.tif_acorn:   @.c.tif_acorn
-        cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn  
-Change the cc line to:
-
-        cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn  
-
-Remember, however, that OSLib is only recommended for efficiency's sake. It
-is not required.
diff --git a/src/tiff/contrib/acorn/SetVars b/src/tiff/contrib/acorn/SetVars
deleted file mode 100755 (executable)
index ea12d71..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Set LibTIFF$Dir <Obey$Dir>
-Set LibTIFF$Path <LibTIFF$Dir>.
-Set C$Path <C$Path>,LibTIFF:
diff --git a/src/tiff/contrib/acorn/cleanlib b/src/tiff/contrib/acorn/cleanlib
deleted file mode 100755 (executable)
index 78a2d03..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-IfThere LibTIFF:o.* THEN Wipe LibTIFF:o.* ~CFR~V
-IfThere LibTIFF:c.tif_fax3sm THEN Delete LibTIFF:c.tif_fax3sm
-IfThere LibTIFF:mkg3states THEN Delete LibTIFF:mkg3states
-IfThere LibTIFF:h.version THEN Delete LibTIFF:h.version
-IfThere LibTIFF:mkversion THEN Delete LibTIFF:mkversion
diff --git a/src/tiff/contrib/acorn/convert b/src/tiff/contrib/acorn/convert
deleted file mode 100644 (file)
index 1f64ed2..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-RISC OS Conversion log
-======================
-
-mkversion.c
-~~~~~~~~~~~
-The RISC OS command-line does not allow the direct creation of the version.h
-file in the proper manner. To remedy this in such a way that the version
-header is made at compiletime, I wrote this small program. It is fully
-portable, so should work quite happily for any other platform that might need
-it.
-
-msg3states.c
-~~~~~~~~~~~~
-Needed getopt.c from the port folder, then compiled and worked fine.
-
-
-tiff.h
-~~~~~~
-
-====1====
-
-The symbol _MIPS_SZLONG, if not defined, causes a compiler error. Fixed by
-ensuring it does exist. This looks to me like this wouldn't be an
-Acorn-specific problem. The new code fragment is as follows:
-
-#ifndef _MIPS_SZLONG
-#define _MIPS_SZLONG 32
-#endif
-#if defined(__alpha) || _MIPS_SZLONG == 64
-
-
-
-tiffcomp.h
-~~~~~~~~~~
-
-====1====
-
-#if !defined(__MWERKS__) && !defined(THINK_C)
-#include <sys/types.h>
-#endif
-
-Acorn also doesn't have this header so:
-
-#if !defined(__MWERKS__) && !defined(THINK_C) && !defined(__acorn)
-#include <sys/types.h>
-#endif
-
-====2====
-
-#ifdef VMS
-#include <file.h>
-#include <unixio.h>
-#else
-#include <fcntl.h>
-#endif
-
-This seems to indicate that fcntl.h is included on all systems except
-VMS. Odd, because I've never heard of it before. Sure it's in the ANSI
-definition? Anyway, following change:
-
-#ifdef VMS
-#include <file.h>
-#include <unixio.h>
-#else
-#ifndef __acorn
-#include <fcntl.h>
-#endif
-#endif
-
-This will probably change when I find out what it wants from fcntl.h!
-
-====3====
-
-#if defined(__MWERKS__) || defined(THINK_C) || defined(applec)
-#include <stdlib.h>
-#define        BSDTYPES
-#endif
-
-Added RISC OS to above thus:
-
-#if defined(__MWERKS__) || defined(THINK_C) || defined(applec) || defined(__acorn)
-#include <stdlib.h>
-#define        BSDTYPES
-#endif
-
-====4====
-
-/*
- * The library uses the ANSI C/POSIX SEEK_*
- * definitions that should be defined in unistd.h
- * (except on VMS where they are in stdio.h and
- * there is no unistd.h).
- */
-#ifndef SEEK_SET
-#if !defined(VMS) && !defined (applec) && !defined(THINK_C) && !defined(__MWERKS__)
-#include <unistd.h>
-#endif
-
-RISC OS is like VMS and Mac in this regard. So changed to:
-
-/*
- * The library uses the ANSI C/POSIX SEEK_*
- * definitions that should be defined in unistd.h
- * (except on VMS or the Mac or RISC OS, where they are in stdio.h and
- * there is no unistd.h).
- */
-#ifndef SEEK_SET
-#if !defined(VMS) && !defined (applec) && !defined(THINK_C) && !defined(__MWERKS__) && !defined(__acorn)
-#include <unistd.h>
-#endif
-#endif
-
-====5====
-
-NB: HAVE_IEEEFP is defined in tiffconf.h, not tiffcomp.h as mentioned
-in libtiff.README. (Note written on original port from 3.4beta004)
-
-Acorn C/C++ claims to accord with IEEE 754, so no change (yet) to
-tiffconf.h.
-
-====6====
-
-Unsure about whether this compiler supports inline functions. Will
-leave it on for the time being and see if it works! (Likely if
-everything else does.)
-
-... Seems to be OK ...
-
-====7====
-
-Added to the end:
-
-/*
- * osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
- * on C alone. For that reason, the relevant functions have been
- * implemented by myself in tif_acorn.c, and the elements from the header
- * included here.
- */
-
-#ifdef __acorn
-#ifdef __cplusplus
-#include <osfcn.h>
-#else
-#include "kernel.h"
-#define        O_RDONLY        0
-#define        O_WRONLY        1
-#define        O_RDWR          2
-#define        O_APPEND        8
-#define        O_CREAT         0x200
-#define        O_TRUNC         0x400
-typedef long off_t;
-extern int open(const char *name, int flags, int mode);
-extern int close(int fd);
-extern int write(int fd, const char *buf, int nbytes);
-extern int read(int fd, char *buf, int nbytes);
-extern off_t lseek(int fd, off_t offset, int whence);
-#endif
-#endif
-
-
-===============================================================================
-
-tif_acorn.c
-~~~~~~~~~~~
-
-Created file tif_acorn.c, copied initially from tif_unix.c
-
-Documented internally where necessary.
-
-Note that I have implemented the low-level file-handling functions normally
-found in osfcn.h in here, and put the header info at the bottom of
-tiffcomp.h. This is further documented from a RISC OS perspective inside the
-file.
-
-===============================================================================
diff --git a/src/tiff/contrib/acorn/install b/src/tiff/contrib/acorn/install
deleted file mode 100755 (executable)
index fa49d1b..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-If "%0" = "" Then Error Syntax: install |<source_dir> |<dest_dir>
-If "%1" = "" Then Error Syntax: install |<source_dir> |<dest_dir>
-Set LibTiffInstall$Dir %0
-Set LibTiff$Dir %1
-Set Alias$CPY Copy <LibTiffInstall$Dir>.%%0 <LibTiff$Dir>.%%1 ~C~DF~NRV
-CDir <LibTiff$Dir>
-CDir <LibTiff$Dir>.c
-CDir <LibTiff$Dir>.h
-CDir <LibTiff$Dir>.o
-CPY COPYRIGHT                  COPYRIGHT
-CPY README                     README
-CPY VERSION                    VERSION
-CPY dist.tiff/alpha             tiff/alpha
-CPY contrib.acorn.SetVars      SetVars
-CPY contrib.acorn.Makefile     Makefile
-CPY contrib.acorn.cleanlib      cleanlib
-CPY port.getopt/c              c.getopt
-CPY libtiff.mkg3states/c       c.mkg3states
-CPY libtiff.mkspans/c          c.mkspans
-CPY libtiff.mkversion/c                c.mkversion
-CPY libtiff.tif_acorn/c                c.tif_acorn
-CPY libtiff.tif_aux/c          c.tif_aux
-CPY libtiff.tif_close/c                c.tif_close
-CPY libtiff.tif_codec/c                c.tif_codec
-CPY libtiff.tif_compress/c     c.tif_compre
-CPY libtiff.tif_dir/c          c.tif_dir
-CPY libtiff.tif_dirinfo/c      c.tif_dirinf
-CPY libtiff.tif_dirread/c      c.tif_dirrea
-CPY libtiff.tif_dirwrite/c     c.tif_dirwri
-CPY libtiff.tif_dumpmode/c     c.tif_dumpmo
-CPY libtiff.tif_error/c                c.tif_error
-CPY libtiff.tif_fax3/c         c.tif_fax3
-CPY libtiff.tif_flush/c                c.tif_flush
-CPY libtiff.tif_getimage/c     c.tif_getima
-CPY libtiff.tif_jpeg/c         c.tif_jpeg
-CPY libtiff.tif_lzw/c          c.tif_lzw
-CPY libtiff.tif_next/c         c.tif_next
-CPY libtiff.tif_open/c         c.tif_open
-CPY libtiff.tif_packbits/c     c.tif_packbi
-CPY libtiff.tif_predict/c      c.tif_predic
-CPY libtiff.tif_print/c                c.tif_print
-CPY libtiff.tif_read/c         c.tif_read
-CPY libtiff.tif_strip/c                c.tif_strip
-CPY libtiff.tif_swab/c         c.tif_swab
-CPY libtiff.tif_thunder/c      c.tif_thunde
-CPY libtiff.tif_tile/c         c.tif_tile
-CPY libtiff.tif_version/c      c.tif_versio
-CPY libtiff.tif_warning/c      c.tif_warnin
-CPY libtiff.tif_write/c                c.tif_write
-CPY libtiff.tif_zip/c          c.tif_zip
-CPY libtiff.t4/h               h.t4
-CPY libtiff.tiff/h             h.tiff
-CPY libtiff.tiffcomp/h         h.tiffcomp
-CPY libtiff.tiffconf/h         h.tiffconf
-CPY libtiff.tiffio/h           h.tiffio
-CPY libtiff.tiffiop/h          h.tiffiop
-CPY libtiff.tif_dir/h          h.tif_dir
-CPY libtiff.tif_fax3/h         h.tif_fax3
-CPY libtiff.tif_predict/h      h.tif_predic
-SetType <LibTiff$Dir>.COPYRIGHT                Text
-SetType <LibTiff$Dir>.README           Text
-SetType <LibTiff$Dir>.VERSION          Text
-SetType <LibTiff$Dir>.tiff/alpha        Text
-SetType <LibTiff$Dir>.SetVars          Obey
-SetType <LibTiff$Dir>.Makefile         fe1
-SetType <LibTiff$Dir>.cleanlib          Obey
-SetType <LibTiff$Dir>.c.getopt         Text
-SetType <LibTiff$Dir>.c.mkg3states     Text
-SetType <LibTiff$Dir>.c.mkspans                Text
-SetType <LibTiff$Dir>.c.mkversion      Text
-SetType <LibTiff$Dir>.c.tif_acorn      Text
-SetType <LibTiff$Dir>.c.tif_aux                Text
-SetType <LibTiff$Dir>.c.tif_close      Text
-SetType <LibTiff$Dir>.c.tif_codec      Text
-SetType <LibTiff$Dir>.c.tif_compre     Text
-SetType <LibTiff$Dir>.c.tif_dir                Text
-SetType <LibTiff$Dir>.c.tif_dirinf     Text
-SetType <LibTiff$Dir>.c.tif_dirrea     Text
-SetType <LibTiff$Dir>.c.tif_dirwri     Text
-SetType <LibTiff$Dir>.c.tif_dumpmo     Text
-SetType <LibTiff$Dir>.c.tif_error      Text
-SetType <LibTiff$Dir>.c.tif_fax3       Text
-SetType <LibTiff$Dir>.c.tif_flush      Text
-SetType <LibTiff$Dir>.c.tif_getima     Text
-SetType <LibTiff$Dir>.c.tif_jpeg       Text
-SetType <LibTiff$Dir>.c.tif_lzw                Text
-SetType <LibTiff$Dir>.c.tif_next       Text
-SetType <LibTiff$Dir>.c.tif_open       Text
-SetType <LibTiff$Dir>.c.tif_packbi     Text
-SetType <LibTiff$Dir>.c.tif_predic     Text
-SetType <LibTiff$Dir>.c.tif_print      Text
-SetType <LibTiff$Dir>.c.tif_read       Text
-SetType <LibTiff$Dir>.c.tif_strip      Text
-SetType <LibTiff$Dir>.c.tif_swab       Text
-SetType <LibTiff$Dir>.c.tif_thunde     Text
-SetType <LibTiff$Dir>.c.tif_tile       Text
-SetType <LibTiff$Dir>.c.tif_versio     Text
-SetType <LibTiff$Dir>.c.tif_warnin     Text
-SetType <LibTiff$Dir>.c.tif_write      Text
-SetType <LibTiff$Dir>.c.tif_zip                Text
-SetType <LibTiff$Dir>.h.t4             Text
-SetType <LibTiff$Dir>.h.tiff           Text
-SetType <LibTiff$Dir>.h.tiffcomp       Text
-SetType <LibTiff$Dir>.h.tiffconf       Text
-SetType <LibTiff$Dir>.h.tiffio         Text
-SetType <LibTiff$Dir>.h.tiffiop                Text
-SetType <LibTiff$Dir>.h.tif_dir                Text
-SetType <LibTiff$Dir>.h.tif_fax3       Text
-SetType <LibTiff$Dir>.h.tif_predic     Text
-Unset Alias$CPY
-Unset LibTiffInstall$Dir
-| Now attempt to restore longfilename status. If it causes an error, OK.
-Set Alias$RN Rename <LibTiff$Dir>.%%0 <LibTiff$Dir>.%%1
-Unset LibTiff$Dir
-RN c.tif_compre c.tif_compress
-RN c.tif_dirinf c.tif_dirinfo
-RN c.tif_dirrea c.tif_dirread
-RN c.tif_dirwri c.tif_dirwrite
-RN c.tif_dumpmo c.tif_dumpmode
-RN c.tif_getima c.tif_getimage
-RN c.tif_packbi c.tif_packbits
-RN c.tif_predic c.tif_predict
-RN c.tif_thunde c.tif_thunder
-RN c.tif_versio c.tif_version
-RN c.tif_warnin c.tif_warning
-RN h.tif_predic h.tif_predict
-Unset Alias$RN
-Echo All done!
index aed05b820454b4f8a9e2e43b9da1ad42350a917b..d634a152d3d1d56638a31211c81bbe963149f522 100644 (file)
@@ -32,5 +32,5 @@ noinst_PROGRAMS = addtiffo
 addtiffo_SOURCES = addtiffo.c tif_overview.c tif_ovrcache.c tif_ovrcache.h
 addtiffo_LDADD = $(LIBTIFF)
 
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 
index 96f43f27fa4dbeb02d85bb110a8e960f1b6e503a..e442b40e558ae1b80fc7af0430a15b0594c5a7e4 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,47 +75,79 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 noinst_PROGRAMS = addtiffo$(EXEEXT)
 subdir = contrib/addtiffo
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
 am_addtiffo_OBJECTS = addtiffo.$(OBJEXT) tif_overview.$(OBJEXT) \
        tif_ovrcache.$(OBJEXT)
 addtiffo_OBJECTS = $(am_addtiffo_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/libtiff/libtiff.la
-addtiffo_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+addtiffo_DEPENDENCIES = $(LIBTIFF)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(addtiffo_SOURCES)
 DIST_SOURCES = $(addtiffo_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -121,6 +167,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -135,12 +182,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -159,20 +201,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -184,67 +231,71 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 EXTRA_DIST = README Makefile.vc
 addtiffo_SOURCES = addtiffo.c tif_overview.c tif_ovrcache.c tif_ovrcache.h
 addtiffo_LDADD = $(LIBTIFF)
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 all: all-am
 
 .SUFFIXES:
@@ -253,14 +304,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/addtiffo/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/addtiffo/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/addtiffo/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/addtiffo/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -278,16 +329,19 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-addtiffo$(EXEEXT): $(addtiffo_OBJECTS) $(addtiffo_DEPENDENCIES) 
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+addtiffo$(EXEEXT): $(addtiffo_OBJECTS) $(addtiffo_DEPENDENCIES) $(EXTRA_addtiffo_DEPENDENCIES) 
        @rm -f addtiffo$(EXEEXT)
-       $(LINK) $(addtiffo_LDFLAGS) $(addtiffo_OBJECTS) $(addtiffo_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(addtiffo_OBJECTS) $(addtiffo_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -300,25 +354,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_ovrcache.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -326,82 +380,99 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -419,16 +490,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -442,7 +519,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-am
 
@@ -450,18 +527,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -482,19 +579,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstPROGRAMS ctags distclean \
+       clean-libtool clean-noinstPROGRAMS cscopelist ctags distclean \
        distclean-compile distclean-generic distclean-libtool \
        distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-exec \
-       install-exec-am install-info install-info-am install-man \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-strip installcheck installcheck-am installdirs \
        maintainer-clean maintainer-clean-generic mostlyclean \
        mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-info-am
+       pdf pdf-am ps ps-am tags uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index f2adef84d20b97d2592bc5540d600339a0dd0019..f9fe8bf386362c9eb4b8d21390b8ac456fb4898c 100644 (file)
  ******************************************************************************
  *
  * $Log: addtiffo.c,v $
+ * Revision 1.7  2010-06-08 18:55:15  bfriesen
+ * * contrib: Add an emacs formatting mode footer to all source files
+ * so that emacs can be effectively used.
+ *
  * Revision 1.6  2005/12/16 05:59:55  fwarmerdam
  * Major upgrade to support YCbCr subsampled jpeg images
  *
@@ -163,3 +167,10 @@ int main( int argc, char ** argv )
 
     return( 0 );
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 317eceaf438f35f1733a139b0ffa5ddaed9d22ba..156c08125273d1858197eeef121821aa9f768780 100644 (file)
@@ -77,7 +77,7 @@ void TIFFBuildOverviews( TIFF *, int, int *, int, const char *,
 /*      function is called.                                             */
 /************************************************************************/
 
-uint32 TIFF_WriteOverview( TIFF *hTIFF, int nXSize, int nYSize,
+uint32 TIFF_WriteOverview( TIFF *hTIFF, uint32 nXSize, uint32 nYSize,
                            int nBitsPerPixel, int nPlanarConfig, int nSamples, 
                            int nBlockXSize, int nBlockYSize,
                            int bTiled, int nCompressFlag, int nPhotometric,
@@ -89,8 +89,10 @@ uint32 TIFF_WriteOverview( TIFF *hTIFF, int nXSize, int nYSize,
                            int nHorSubsampling, int nVerSubsampling )
 
 {
-    uint32     nBaseDirOffset;
-    uint32     nOffset;
+    toff_t     nBaseDirOffset;
+    toff_t     nOffset;
+
+    (void) bUseSubIFDs;
 
     nBaseDirOffset = TIFFCurrentDirOffset( hTIFF );
 
@@ -161,10 +163,11 @@ uint32 TIFF_WriteOverview( TIFF *hTIFF, int nXSize, int nYSize,
 static void 
 TIFF_GetSourceSamples( double * padfSamples, unsigned char *pabySrc, 
                        int nPixelBytes, int nSampleFormat, 
-                       int nXSize, int nYSize, 
+                       uint32 nXSize, uint32 nYSize, 
                        int nPixelOffset, int nLineOffset )
 {
-    int  iXOff, iYOff, iSample;
+    uint32  iXOff, iYOff;
+    int     iSample;
 
     iSample = 0;
 
@@ -256,15 +259,16 @@ TIFF_SetSample( unsigned char * pabyData, int nPixelBytes, int nSampleFormat,
 
 static
 void TIFF_DownSample( unsigned char *pabySrcTile,
-                      int nBlockXSize, int nBlockYSize,
+                      uint32 nBlockXSize, uint32 nBlockYSize,
                       int nPixelSkewBits, int nBitsPerPixel,
                       unsigned char * pabyOTile,
-                      int nOBlockXSize, int nOBlockYSize,
-                      int nTXOff, int nTYOff, int nOMult,
+                      uint32 nOBlockXSize, uint32 nOBlockYSize,
+                      uint32 nTXOff, uint32 nTYOff, int nOMult,
                       int nSampleFormat, const char * pszResampling )
 
 {
-    int                i, j, k, nPixelBytes = (nBitsPerPixel) / 8;
+    uint32     i, j;
+    int         k, nPixelBytes = (nBitsPerPixel) / 8;
     int                nPixelGroupBytes = (nBitsPerPixel+nPixelSkewBits)/8;
     unsigned char *pabySrc, *pabyDst;
     double      *padfSamples;
@@ -324,14 +328,13 @@ void TIFF_DownSample( unsigned char *pabySrcTile,
             for( i = 0; i*nOMult < nBlockXSize; i++ )
             {
                 double   dfTotal;
-                int      iSample;
-                int      nXSize, nYSize;
+                uint32   nXSize, nYSize, iSample;
 
                 if( i + nTXOff >= nOBlockXSize )
                     break;
 
-                nXSize = MIN(nOMult,nBlockXSize-i);
-                nYSize = MIN(nOMult,nBlockYSize-j);
+                nXSize = MIN((uint32)nOMult,nBlockXSize-i);
+                nYSize = MIN((uint32)nOMult,nBlockYSize-j);
 
                 TIFF_GetSourceSamples( padfSamples, pabySrc,
                                        nPixelBytes, nSampleFormat,
@@ -357,125 +360,108 @@ void TIFF_DownSample( unsigned char *pabySrcTile,
     free( padfSamples );
 }
 
+/************************************************************************/
+/*                     TIFF_DownSample_Subsampled()                     */
+/************************************************************************/
 static
 void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample,
-                                 int nBlockXSize, int nBlockYSize,
+                                 uint32 nBlockXSize, uint32 nBlockYSize,
                                  unsigned char * pabyOTile,
-                                 int nOBlockXSize, int nOBlockYSize,
-                                 int nTXOff, int nTYOff, int nOMult,
-                                 const char * pszResampling,
+                                 uint32 nOBlockXSize, uint32 nOBlockYSize,
+                                 uint32 nTXOff, uint32 nTYOff, int nOMult,
+                                 const char *pszResampling,
                                  int nHorSubsampling, int nVerSubsampling )
 {
     /* TODO: test with variety of subsampling values, and incovinient tile/strip sizes */
-       int nSampleBlockSize;
+    int nSampleBlockSize;
     int nSourceSampleRowSize;
     int nDestSampleRowSize;
-    int nSourceX, nSourceY;
-    int nSourceXSec, nSourceYSec;
-    int nSourceXSecEnd, nSourceYSecEnd;
-    int nDestX, nDestY;
+    uint32  nSourceX, nSourceY;
+    uint32  nSourceXSec, nSourceYSec;
+    uint32  nSourceXSecEnd, nSourceYSecEnd;
+    uint32  nDestX, nDestY;
     int nSampleOffsetInSampleBlock;
-    unsigned char * pSourceBase;
-    unsigned char * pDestBase;
-    int nSourceBaseInc;
-    unsigned char * pSourceBaseEnd;
     unsigned int nCummulator;
     unsigned int nCummulatorCount;
 
     nSampleBlockSize = nHorSubsampling * nVerSubsampling + 2;
-    nSourceSampleRowSize = ( ( nBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize;
-    nDestSampleRowSize = ( ( nOBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize;
+    nSourceSampleRowSize = 
+        ( ( nBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize;
+    nDestSampleRowSize = 
+        ( ( nOBlockXSize + nHorSubsampling - 1 ) / nHorSubsampling ) * nSampleBlockSize;
 
     if( strncmp(pszResampling,"nearest",4) == 0
-            || strncmp(pszResampling,"NEAR",4) == 0 )
-       {
+        || strncmp(pszResampling,"NEAR",4) == 0 )
+    {
        if( nSample == 0 )
         {
-#ifdef NOOPTIMIZATION
-               /*
-             * This version is not optimized, and should not be used except as documentation and as more clear
-             * starting point for bug fixes (hope not) and extension
-             */
-             for( nSourceY = 0, nDestY = nTYOff; nSourceY < nBlockYSize; nSourceY += nOMult, nDestY ++)
-             {
-                for( nSourceX = 0, nDestX = nTXOff; nSourceX < nBlockXSize; nSourceX += nOMult, nDestX ++)
+            for( nSourceY = 0, nDestY = nTYOff; 
+                 nSourceY < nBlockYSize; 
+                 nSourceY += nOMult, nDestY ++)
+            {
+                if( nDestY >= nOBlockYSize )
+                    break;
+
+                for( nSourceX = 0, nDestX = nTXOff; 
+                     nSourceX < nBlockXSize; 
+                     nSourceX += nOMult, nDestX ++)
                 {
+                    if( nDestX >= nOBlockXSize )
+                        break;
+
                     * ( pabyOTile + ( nDestY / nVerSubsampling ) * nDestSampleRowSize
-                                  + ( nDestY % nVerSubsampling ) * nHorSubsampling
-                                  + ( nDestX / nHorSubsampling ) * nSampleBlockSize
-                                  + ( nDestX % nHorSubsampling ) ) =
+                        + ( nDestY % nVerSubsampling ) * nHorSubsampling
+                        + ( nDestX / nHorSubsampling ) * nSampleBlockSize
+                        + ( nDestX % nHorSubsampling ) ) =
                         * ( pabySrcTile + ( nSourceY / nVerSubsampling ) * nSourceSampleRowSize
-                                        + ( nSourceY % nVerSubsampling ) * nHorSubsampling
-                                        + ( nSourceX / nHorSubsampling ) * nSampleBlockSize
-                                        + ( nSourceX % nHorSubsampling ) );
+                            + ( nSourceY % nVerSubsampling ) * nHorSubsampling
+                            + ( nSourceX / nHorSubsampling ) * nSampleBlockSize
+                            + ( nSourceX % nHorSubsampling ) );
                 }
             }
-#else
-            for( nSourceY = 0, nDestY = nTYOff; nSourceY < nBlockYSize; nSourceY += nOMult, nDestY ++)
-            {
-                pSourceBase = pabySrcTile + ( nSourceY / nVerSubsampling ) * nSourceSampleRowSize
-                                          + ( nSourceY % nVerSubsampling ) * nHorSubsampling;
-                pDestBase = pabyOTile + ( nDestY / nVerSubsampling ) * nDestSampleRowSize
-                                      + ( nDestY % nVerSubsampling ) * nHorSubsampling;
-                for( nSourceX = 0, nDestX = nTXOff; nSourceX < nBlockXSize; nSourceX += nOMult, nDestX ++)
-                {
-                    * ( pDestBase + ( nDestX / nHorSubsampling ) * nSampleBlockSize
-                                  + ( nDestX % nHorSubsampling ) ) =
-                        * ( pSourceBase + ( nSourceX / nHorSubsampling ) * nSampleBlockSize
-                                        + ( nSourceX % nHorSubsampling ) );
-                }
-            }
-#endif
         }
         else
         {
-#ifdef NOOPTIMIZATION
-               /*
-             * This version is not optimized, and should not be used except as documentation and as more clear
-             * starting point for bug fixes (hope not) and extension
-             */
             nSampleOffsetInSampleBlock = nHorSubsampling * nVerSubsampling + nSample - 1;
-            for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); nSourceY < ( nBlockYSize / nVerSubsampling );
-                                nSourceY += nOMult, nDestY ++)
+            for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); 
+                 nSourceY < ( nBlockYSize / nVerSubsampling );
+                 nSourceY += nOMult, nDestY ++)
             {
-               for( nSourceX = 0, nDestX = ( nTXOff / nHorSubsampling ); nSourceX < ( nBlockXSize / nHorSubsampling );
-                                        nSourceX += nOMult, nDestX ++)
+                if( nDestY*nVerSubsampling >= nOBlockYSize )
+                    break;
+
+               for( nSourceX = 0, nDestX = ( nTXOff / nHorSubsampling ); 
+                     nSourceX < ( nBlockXSize / nHorSubsampling );
+                     nSourceX += nOMult, nDestX ++)
                 {
+                    if( nDestX*nHorSubsampling >= nOBlockXSize )
+                        break;
+
                     * ( pabyOTile + nDestY * nDestSampleRowSize
-                                  + nDestX * nSampleBlockSize
-                                  + nSampleOffsetInSampleBlock ) =
+                        + nDestX * nSampleBlockSize
+                        + nSampleOffsetInSampleBlock ) =
                        * ( pabySrcTile + nSourceY * nSourceSampleRowSize
-                                        + nSourceX * nSampleBlockSize
-                                        + nSampleOffsetInSampleBlock );
+                            + nSourceX * nSampleBlockSize
+                            + nSampleOffsetInSampleBlock );
                 }
             }
-#else
-            nSampleOffsetInSampleBlock = nHorSubsampling * nVerSubsampling + nSample - 1;
-            nSourceBaseInc = nOMult * nSampleBlockSize;
-            for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); nSourceY < ( nBlockYSize / nVerSubsampling);
-                                nSourceY += nOMult, nDestY ++)
-            {
-                pSourceBase = pabySrcTile + nSourceY * nSourceSampleRowSize
-                                          + nSampleOffsetInSampleBlock;
-                pSourceBaseEnd = pSourceBase + ( ( ( nBlockXSize / nHorSubsampling ) + nOMult - 1 ) / nOMult ) * nSourceBaseInc;
-                pDestBase = pabyOTile + nDestY * nDestSampleRowSize
-                                      + ( nTXOff / nHorSubsampling ) * nSampleBlockSize
-                                      + nSampleOffsetInSampleBlock;
-                for( ; pSourceBase < pSourceBaseEnd; pSourceBase += nSourceBaseInc, pDestBase += nSampleBlockSize)
-                    * pDestBase = * pSourceBase;
-            }
-#endif
         }
     }
     else if( strncmp(pszResampling,"averag",6) == 0
-                 || strncmp(pszResampling,"AVERAG",6) == 0 )
+             || strncmp(pszResampling,"AVERAG",6) == 0 )
     {
        if( nSample == 0 )
         {
             for( nSourceY = 0, nDestY = nTYOff; nSourceY < nBlockYSize; nSourceY += nOMult, nDestY ++)
             {
+                if( nDestY >= nOBlockYSize )
+                    break;
+
                 for( nSourceX = 0, nDestX = nTXOff; nSourceX < nBlockXSize; nSourceX += nOMult, nDestX ++)
                 {
+                    if( nDestX >= nOBlockXSize )
+                        break;
+
                     nSourceXSecEnd = nSourceX + nOMult;
                     if( nSourceXSecEnd > nBlockXSize )
                         nSourceXSecEnd = nBlockXSize;
@@ -488,16 +474,16 @@ void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample,
                         for( nSourceXSec = nSourceX; nSourceXSec < nSourceXSecEnd; nSourceXSec ++)
                         {
                             nCummulator += * ( pabySrcTile + ( nSourceYSec / nVerSubsampling ) * nSourceSampleRowSize
-                                                           + ( nSourceYSec % nVerSubsampling ) * nHorSubsampling
-                                                           + ( nSourceXSec / nHorSubsampling ) * nSampleBlockSize
-                                                           + ( nSourceXSec % nHorSubsampling ) );
+                                               + ( nSourceYSec % nVerSubsampling ) * nHorSubsampling
+                                               + ( nSourceXSec / nHorSubsampling ) * nSampleBlockSize
+                                               + ( nSourceXSec % nHorSubsampling ) );
                         }
                     }
                     nCummulatorCount = ( nSourceXSecEnd - nSourceX ) * ( nSourceYSecEnd - nSourceY );
                     * ( pabyOTile + ( nDestY / nVerSubsampling ) * nDestSampleRowSize
-                                  + ( nDestY % nVerSubsampling ) * nHorSubsampling
-                                  + ( nDestX / nHorSubsampling ) * nSampleBlockSize
-                                  + ( nDestX % nHorSubsampling ) ) =
+                        + ( nDestY % nVerSubsampling ) * nHorSubsampling
+                        + ( nDestX / nHorSubsampling ) * nSampleBlockSize
+                        + ( nDestX % nHorSubsampling ) ) =
                         ( ( nCummulator + ( nCummulatorCount >> 1 ) ) / nCummulatorCount );
                 }
             }
@@ -506,11 +492,17 @@ void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample,
         {
             nSampleOffsetInSampleBlock = nHorSubsampling * nVerSubsampling + nSample - 1;
             for( nSourceY = 0, nDestY = ( nTYOff / nVerSubsampling ); nSourceY < ( nBlockYSize / nVerSubsampling );
-                             nSourceY += nOMult, nDestY ++)
+                 nSourceY += nOMult, nDestY ++)
             {
+                if( nDestY*nVerSubsampling >= nOBlockYSize )
+                    break;
+
                 for( nSourceX = 0, nDestX = ( nTXOff / nHorSubsampling ); nSourceX < ( nBlockXSize / nHorSubsampling );
-                                 nSourceX += nOMult, nDestX ++)
+                     nSourceX += nOMult, nDestX ++)
                 {
+                    if( nDestX*nHorSubsampling >= nOBlockXSize )
+                        break;
+
                     nSourceXSecEnd = nSourceX + nOMult;
                     if( nSourceXSecEnd > ( nBlockXSize / nHorSubsampling ) )
                         nSourceXSecEnd = ( nBlockXSize / nHorSubsampling );
@@ -523,14 +515,14 @@ void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample,
                         for( nSourceXSec = nSourceX; nSourceXSec < nSourceXSecEnd; nSourceXSec ++)
                         {
                             nCummulator += * ( pabySrcTile + nSourceYSec * nSourceSampleRowSize
-                                                           + nSourceXSec * nSampleBlockSize
-                                                           + nSampleOffsetInSampleBlock );
+                                               + nSourceXSec * nSampleBlockSize
+                                               + nSampleOffsetInSampleBlock );
                         }
                     }
                     nCummulatorCount = ( nSourceXSecEnd - nSourceX ) * ( nSourceYSecEnd - nSourceY );
                     * ( pabyOTile + nDestY * nDestSampleRowSize
-                                  + nDestX * nSampleBlockSize
-                                  + nSampleOffsetInSampleBlock ) =
+                        + nDestX * nSampleBlockSize
+                        + nSampleOffsetInSampleBlock ) =
                         ( ( nCummulator + ( nCummulatorCount >> 1 ) ) / nCummulatorCount );
                 }
             }
@@ -546,13 +538,14 @@ void TIFF_DownSample_Subsampled( unsigned char *pabySrcTile, int nSample,
 /************************************************************************/
 
 void TIFF_ProcessFullResBlock( TIFF *hTIFF, int nPlanarConfig,
-                               int bSubsampled, int nHorSubsampling, int nVerSubsampling,
+                               int bSubsampled,
+                               int nHorSubsampling, int nVerSubsampling,
                                int nOverviews, int * panOvList,
                                int nBitsPerPixel,
                                int nSamples, TIFFOvrCache ** papoRawBIs,
-                               int nSXOff, int nSYOff,
+                               uint32 nSXOff, uint32 nSYOff,
                                unsigned char *pabySrcTile,
-                               int nBlockXSize, int nBlockYSize,
+                               uint32 nBlockXSize, uint32 nBlockYSize,
                                int nSampleFormat, const char * pszResampling )
     
 {
@@ -592,10 +585,10 @@ void TIFF_ProcessFullResBlock( TIFF *hTIFF, int nPlanarConfig,
         {
             TIFFOvrCache *poRBI = papoRawBIs[iOverview];
             unsigned char *pabyOTile;
-            int        nTXOff, nTYOff, nOXOff, nOYOff, nOMult;
-            int        nOBlockXSize = poRBI->nBlockXSize;
-            int        nOBlockYSize = poRBI->nBlockYSize;
-            int        nSkewBits, nSampleByteOffset; 
+            uint32  nTXOff, nTYOff, nOXOff, nOYOff, nOMult;
+            uint32  nOBlockXSize = poRBI->nBlockXSize;
+            uint32  nOBlockYSize = poRBI->nBlockYSize;
+            int     nSkewBits, nSampleByteOffset; 
 
             /*
              * Fetch the destination overview tile
@@ -706,6 +699,9 @@ void TIFFBuildOverviews( TIFF *hTIFF, int nOverviews, int * panOvList,
     uint16             *panRedMap, *panGreenMap, *panBlueMap;
     TIFFErrorHandler    pfnWarning;
 
+    (void) pfnProgress;
+    (void) pProgressData;
+
 /* -------------------------------------------------------------------- */
 /*      Get the base raster size.                                       */
 /* -------------------------------------------------------------------- */
@@ -810,14 +806,14 @@ void TIFFBuildOverviews( TIFF *hTIFF, int nOverviews, int * panOvList,
 
     for( i = 0; i < nOverviews; i++ )
     {
-        int    nOXSize, nOYSize, nOBlockXSize, nOBlockYSize;
-        uint32  nDirOffset;
+        uint32  nOXSize, nOYSize, nOBlockXSize, nOBlockYSize;
+        toff_t  nDirOffset;
 
         nOXSize = (nXSize + panOvList[i] - 1) / panOvList[i];
         nOYSize = (nYSize + panOvList[i] - 1) / panOvList[i];
 
-        nOBlockXSize = MIN((int)nBlockXSize,nOXSize);
-        nOBlockYSize = MIN((int)nBlockYSize,nOYSize);
+        nOBlockXSize = MIN(nBlockXSize,nOXSize);
+        nOBlockYSize = MIN(nBlockYSize,nOYSize);
 
         if( bTiled )
         {
@@ -894,3 +890,10 @@ void TIFFBuildOverviews( TIFF *hTIFF, int nOverviews, int * panOvList,
 }
 
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index eb8607d96a3dc56d775125c2f25c01d25de940cc..dac8e7c8da47694b4a098dd8af53b2d2d5d736a8 100644 (file)
 /*      existing TIFF directory.                                        */
 /************************************************************************/
 
-TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, int nDirOffset )
+TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, toff_t nDirOffset )
 
 {
     TIFFOvrCache       *psCache;
-    uint32             nBaseDirOffset;
+    toff_t             nBaseDirOffset;
 
     psCache = (TIFFOvrCache *) _TIFFmalloc(sizeof(TIFFOvrCache));
     psCache->nDirOffset = nDirOffset;
@@ -136,8 +136,9 @@ static void TIFFWriteOvrRow( TIFFOvrCache * psCache )
 {
     int                nRet, iTileX, iTileY = psCache->nBlockOffset;
     unsigned char *pabyData;
-    uint32     nBaseDirOffset;
-    
+    toff_t     nBaseDirOffset;
+    uint32      RowsInStrip;
+
 /* -------------------------------------------------------------------- */
 /*      If the output cache is multi-byte per sample, and the file      */
 /*      being written to is of a different byte order than the current  */
@@ -169,72 +170,72 @@ static void TIFFWriteOvrRow( TIFFOvrCache * psCache )
 /* -------------------------------------------------------------------- */
 /*      Write blocks to TIFF file.                                      */
 /* -------------------------------------------------------------------- */
-    for( iTileX = 0; iTileX < psCache->nBlocksPerRow; iTileX++ )
-    {
-        int nTileID;
-
-        if (psCache->nPlanarConfig == PLANARCONFIG_SEPARATE)
-        {
-            int iSample;
-
-            for( iSample = 0; iSample < psCache->nSamples; iSample++ )
-            {
-                pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, iSample );
-
-                if( psCache->bTiled )
-                {
-                    nTileID =
-                        TIFFComputeTile( psCache->hTIFF,
-                                         iTileX * psCache->nBlockXSize,
-                                         iTileY * psCache->nBlockYSize,
-                                         0, (tsample_t) iSample );
-                    TIFFWriteEncodedTile( psCache->hTIFF, nTileID, 
-                                          pabyData,
-                                          TIFFTileSize(psCache->hTIFF) );
-                }
-                else
-                {
-                    nTileID =
-                        TIFFComputeStrip( psCache->hTIFF,
-                                          iTileY * psCache->nBlockYSize,
-                                          (tsample_t) iSample );
-
-                    TIFFWriteEncodedStrip( psCache->hTIFF, nTileID,
-                                           pabyData,
-                                           TIFFStripSize(psCache->hTIFF) );
-                }
-            }
-
-        }
-        else
-        {
-            pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, 0 );
-
-            if( psCache->bTiled )
-            {
-                nTileID =
-                    TIFFComputeTile( psCache->hTIFF,
-                                     iTileX * psCache->nBlockXSize,
-                                     iTileY * psCache->nBlockYSize,
-                                     0, 0 );
-                TIFFWriteEncodedTile( psCache->hTIFF, nTileID, 
-                                      pabyData,
-                                      TIFFTileSize(psCache->hTIFF) );
-            }
-            else
-            {
-                nTileID =
-                    TIFFComputeStrip( psCache->hTIFF,
-                                      iTileY * psCache->nBlockYSize,
-                                      0 );
-
-                TIFFWriteEncodedStrip( psCache->hTIFF, nTileID,
-                                       pabyData,
-                                       TIFFStripSize(psCache->hTIFF) );
-            }
-        }
-    }
-    /* TODO: add checks on error status return of TIFFWriteEncodedTile and TIFFWriteEncodedStrip */
+       for( iTileX = 0; iTileX < psCache->nBlocksPerRow; iTileX++ )
+       {
+               int nTileID;
+
+               if (psCache->nPlanarConfig == PLANARCONFIG_SEPARATE)
+               {
+                       int iSample;
+
+                       for( iSample = 0; iSample < psCache->nSamples; iSample++ )
+                       {
+                               pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, iSample );
+
+                               if( psCache->bTiled )
+                               {
+                                       nTileID = TIFFComputeTile( psCache->hTIFF,
+                                           iTileX * psCache->nBlockXSize,
+                                           iTileY * psCache->nBlockYSize,
+                                           0, (tsample_t) iSample );
+                                       TIFFWriteEncodedTile( psCache->hTIFF, nTileID,
+                                           pabyData,
+                                           TIFFTileSize(psCache->hTIFF) );
+                               }
+                               else
+                               {
+                                       nTileID = TIFFComputeStrip( psCache->hTIFF,
+                                           iTileY * psCache->nBlockYSize,
+                                           (tsample_t) iSample );
+                                       RowsInStrip=psCache->nBlockYSize;
+                                       if ((iTileY+1)*psCache->nBlockYSize>psCache->nYSize)
+                                               RowsInStrip=psCache->nYSize-iTileY*psCache->nBlockYSize;
+                                       TIFFWriteEncodedStrip( psCache->hTIFF, nTileID,
+                                           pabyData,
+                                           TIFFVStripSize(psCache->hTIFF,RowsInStrip) );
+                               }
+                       }
+
+               }
+               else
+               {
+                       pabyData = TIFFGetOvrBlock( psCache, iTileX, iTileY, 0 );
+
+                       if( psCache->bTiled )
+                       {
+                               nTileID = TIFFComputeTile( psCache->hTIFF,
+                                   iTileX * psCache->nBlockXSize,
+                                   iTileY * psCache->nBlockYSize,
+                                   0, 0 );
+                               TIFFWriteEncodedTile( psCache->hTIFF, nTileID,
+                                   pabyData,
+                                   TIFFTileSize(psCache->hTIFF) );
+                       }
+                       else
+                       {
+                               nTileID = TIFFComputeStrip( psCache->hTIFF,
+                                   iTileY * psCache->nBlockYSize,
+                                   0 );
+                               RowsInStrip=psCache->nBlockYSize;
+                               if ((iTileY+1)*psCache->nBlockYSize>psCache->nYSize)
+                                       RowsInStrip=psCache->nYSize-iTileY*psCache->nBlockYSize;
+                               TIFFWriteEncodedStrip( psCache->hTIFF, nTileID,
+                                   pabyData,
+                                   TIFFVStripSize(psCache->hTIFF,RowsInStrip) );
+                       }
+               }
+       }
+       /* TODO: add checks on error status return of TIFFWriteEncodedTile and TIFFWriteEncodedStrip */
 
 /* -------------------------------------------------------------------- */
 /*      Rotate buffers.                                                 */
@@ -331,3 +332,10 @@ void TIFFDestroyOvrCache( TIFFOvrCache * psCache )
     _TIFFfree( psCache->pabyRow2Blocks );
     _TIFFfree( psCache );
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 3298c872759163e101f86e445c892c8f7b9b16e5..0ad10829dd45a5f3dadb492de423c3859016954b 100644 (file)
@@ -51,8 +51,8 @@ typedef struct
     uint16      nPlanarConfig;
     uint32     nBlockXSize;
     uint32     nBlockYSize;
-    uint32     nBytesPerBlock;
-    uint32      nBytesPerRow;
+    toff_t     nBytesPerBlock;
+    toff_t      nBytesPerRow;
 
     int                nBlocksPerRow;
     int                nBlocksPerColumn;
@@ -61,13 +61,13 @@ typedef struct
     unsigned char *pabyRow1Blocks;
     unsigned char *pabyRow2Blocks;
 
-    int                nDirOffset;
+    toff_t     nDirOffset;
     TIFF       *hTIFF;
     int                bTiled;
     
 } TIFFOvrCache;
 
-TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, int nDirOffset );
+TIFFOvrCache *TIFFCreateOvrCache( TIFF *hTIFF, toff_t nDirOffset );
 unsigned char *TIFFGetOvrBlock( TIFFOvrCache *psCache, int iTileX, int iTileY,
                                 int iSample );
 unsigned char *TIFFGetOvrBlock_Subsampled( TIFFOvrCache *psCache, int iTileX, int iTileY );
@@ -76,17 +76,12 @@ void           TIFFDestroyOvrCache( TIFFOvrCache * );
 void TIFFBuildOverviews( TIFF *, int, int *, int, const char *,
                          int (*)(double,void*), void * );
 
-void TIFF_ProcessFullResBlock( TIFF *hTIFF, int nPlanarConfig,
-                               int bSubsampled, int nHorSamples, int nVerSamples,
-                               int nOverviews, int * panOvList,
-                               int nBitsPerPixel, 
-                               int nSamples, TIFFOvrCache ** papoRawBIs,
-                               int nSXOff, int nSYOff,
-                               unsigned char *pabySrcTile,
-                               int nBlockXSize, int nBlockYSize,
-                               int nSampleFormat, const char * pszResampling );
+void TIFF_ProcessFullResBlock( TIFF *, int, int, int, int, int, int *, int, 
+                               int, TIFFOvrCache **, uint32, uint32,
+                               unsigned char *, uint32, uint32,
+                               int, const char * );
 
-uint32 TIFF_WriteOverview( TIFF *, int, int, int, int, int, int, int,
+uint32 TIFF_WriteOverview( TIFF *, uint32, uint32, int, int, int, int, int,
                            int, int, int, int, unsigned short *,
                            unsigned short *, unsigned short *, int,
                            int, int);
@@ -99,3 +94,10 @@ uint32 TIFF_WriteOverview( TIFF *, int, int, int, int, int, int, int,
     
 #endif /* ndef TIF_OVRCACHE_H_INCLUDED */
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 034647195194d81ef0152c355aa88f457eb8afa7..07873779135143e73c13d25cc9d6fc049a86e6e5 100644 (file)
@@ -40,5 +40,5 @@ tiff_palette_LDADD = $(LIBTIFF)
 tiff_rgb_SOURCES = tiff-rgb.c
 tiff_rgb_LDADD = $(LIBTIFF)
 
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 
index b4648083ef51722ae665e090956c08a1ff4b956a..734ef1a4ec3b3242e2c5889f5a0868091a4b9ff8 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,65 +75,128 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 noinst_PROGRAMS = tiff-bi$(EXEEXT) tiff-grayscale$(EXEEXT) \
        tiff-palette$(EXEEXT) tiff-rgb$(EXEEXT)
 subdir = contrib/dbs
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
 am_tiff_bi_OBJECTS = tiff-bi.$(OBJEXT)
 tiff_bi_OBJECTS = $(am_tiff_bi_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/libtiff/libtiff.la
-tiff_bi_DEPENDENCIES = $(am__DEPENDENCIES_1)
+tiff_bi_DEPENDENCIES = $(LIBTIFF)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 am_tiff_grayscale_OBJECTS = tiff-grayscale.$(OBJEXT)
 tiff_grayscale_OBJECTS = $(am_tiff_grayscale_OBJECTS)
-tiff_grayscale_DEPENDENCIES = $(am__DEPENDENCIES_1)
+tiff_grayscale_DEPENDENCIES = $(LIBTIFF)
 am_tiff_palette_OBJECTS = tiff-palette.$(OBJEXT)
 tiff_palette_OBJECTS = $(am_tiff_palette_OBJECTS)
-tiff_palette_DEPENDENCIES = $(am__DEPENDENCIES_1)
+tiff_palette_DEPENDENCIES = $(LIBTIFF)
 am_tiff_rgb_OBJECTS = tiff-rgb.$(OBJEXT)
 tiff_rgb_OBJECTS = $(am_tiff_rgb_OBJECTS)
-tiff_rgb_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+tiff_rgb_DEPENDENCIES = $(LIBTIFF)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(tiff_bi_SOURCES) $(tiff_grayscale_SOURCES) \
        $(tiff_palette_SOURCES) $(tiff_rgb_SOURCES)
 DIST_SOURCES = $(tiff_bi_SOURCES) $(tiff_grayscale_SOURCES) \
        $(tiff_palette_SOURCES) $(tiff_rgb_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
-       install-exec-recursive install-info-recursive \
-       install-recursive installcheck-recursive installdirs-recursive \
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-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
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -139,6 +216,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -153,12 +231,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -177,20 +250,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -202,62 +280,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 SUBDIRS = xtiff
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 EXTRA_DIST = README
@@ -269,7 +351,7 @@ tiff_palette_SOURCES = tiff-palette.c
 tiff_palette_LDADD = $(LIBTIFF)
 tiff_rgb_SOURCES = tiff-rgb.c
 tiff_rgb_LDADD = $(LIBTIFF)
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 all: all-recursive
 
 .SUFFIXES:
@@ -278,14 +360,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/dbs/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/dbs/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/dbs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/dbs/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -303,25 +385,28 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-tiff-bi$(EXEEXT): $(tiff_bi_OBJECTS) $(tiff_bi_DEPENDENCIES) 
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+tiff-bi$(EXEEXT): $(tiff_bi_OBJECTS) $(tiff_bi_DEPENDENCIES) $(EXTRA_tiff_bi_DEPENDENCIES) 
        @rm -f tiff-bi$(EXEEXT)
-       $(LINK) $(tiff_bi_LDFLAGS) $(tiff_bi_OBJECTS) $(tiff_bi_LDADD) $(LIBS)
-tiff-grayscale$(EXEEXT): $(tiff_grayscale_OBJECTS) $(tiff_grayscale_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff_bi_OBJECTS) $(tiff_bi_LDADD) $(LIBS)
+tiff-grayscale$(EXEEXT): $(tiff_grayscale_OBJECTS) $(tiff_grayscale_DEPENDENCIES) $(EXTRA_tiff_grayscale_DEPENDENCIES) 
        @rm -f tiff-grayscale$(EXEEXT)
-       $(LINK) $(tiff_grayscale_LDFLAGS) $(tiff_grayscale_OBJECTS) $(tiff_grayscale_LDADD) $(LIBS)
-tiff-palette$(EXEEXT): $(tiff_palette_OBJECTS) $(tiff_palette_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff_grayscale_OBJECTS) $(tiff_grayscale_LDADD) $(LIBS)
+tiff-palette$(EXEEXT): $(tiff_palette_OBJECTS) $(tiff_palette_DEPENDENCIES) $(EXTRA_tiff_palette_DEPENDENCIES) 
        @rm -f tiff-palette$(EXEEXT)
-       $(LINK) $(tiff_palette_LDFLAGS) $(tiff_palette_OBJECTS) $(tiff_palette_LDADD) $(LIBS)
-tiff-rgb$(EXEEXT): $(tiff_rgb_OBJECTS) $(tiff_rgb_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff_palette_OBJECTS) $(tiff_palette_LDADD) $(LIBS)
+tiff-rgb$(EXEEXT): $(tiff_rgb_OBJECTS) $(tiff_rgb_DEPENDENCIES) $(EXTRA_tiff_rgb_DEPENDENCIES) 
        @rm -f tiff-rgb$(EXEEXT)
-       $(LINK) $(tiff_rgb_LDFLAGS) $(tiff_rgb_OBJECTS) $(tiff_rgb_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(tiff_rgb_OBJECTS) $(tiff_rgb_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -335,25 +420,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiff-rgb.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -361,18 +446,14 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 # This directory's subdirectories are mostly independent; you can cd
-# into them and run `make' without going through this Makefile.
-# To change the values of `make' variables: instead of editing Makefiles,
-# (1) if the variable is set in `config.status', edit `config.status'
-#     (which will cause the Makefiles to be regenerated when you run `make');
-# (2) otherwise, pass the desired values on the `make' command line.
-$(RECURSIVE_TARGETS):
-       @failcom='exit 1'; \
+# 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) $(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -381,7 +462,11 @@ $(RECURSIVE_TARGETS):
        done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -389,51 +474,23 @@ $(RECURSIVE_TARGETS):
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-       @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); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
        done
 ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -441,14 +498,14 @@ ID: $(HEADERS) $(SOURCES) $(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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
@@ -460,81 +517,112 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test ! -f $$subdir/TAGS || \
-             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
-       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+       @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 && \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
              $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$top_distdir" \
-               distdir="$$distdir/$$subdir" \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
                distdir) \
              || exit 1; \
          fi; \
@@ -554,16 +642,22 @@ install-am: all-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
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -577,7 +671,7 @@ distclean: distclean-recursive
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-recursive
 
@@ -585,18 +679,38 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -617,23 +731,27 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
 
-uninstall-info: uninstall-info-recursive
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
 
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-       clean clean-generic clean-libtool clean-noinstPROGRAMS \
-       clean-recursive ctags ctags-recursive distclean \
-       distclean-compile distclean-generic distclean-libtool \
-       distclean-recursive distclean-tags distdir dvi dvi-am html \
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       clean-noinstPROGRAMS cscopelist cscopelist-recursive ctags \
+       ctags-recursive distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
        html-am info info-am install install-am install-data \
-       install-data-am install-exec install-exec-am install-info \
-       install-info-am install-man install-strip installcheck \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
        installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic maintainer-clean-recursive \
-       mostlyclean mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-       tags tags-recursive uninstall uninstall-am uninstall-info-am
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags tags-recursive uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index f54eeccdda6e096d0e77fbeed053ddd2875e461f..6e2a3d77316946c1e1d24744b85ed98e2c7b5dbe 100644 (file)
@@ -82,3 +82,10 @@ int main(int argc, char **argv)
     TIFFClose(tif);
     return 0;
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 551d254fb72b076d1adc9bd404461b56a761c9fd..e53c571808a9a1a9b041075ce7e89a5814d264e3 100644 (file)
@@ -86,6 +86,7 @@ int main(int argc, char **argv)
 
     if ((tif = TIFFOpen(argv[3], "w")) == NULL) {
         fprintf(stderr, "can't open %s as a TIFF file\n", argv[3]);
+               free(gray);
         return 0;
     }
 
@@ -137,3 +138,10 @@ Usage()
     fprintf(stderr, "Usage: %s -depth (8 | 4 | 2) tiff-image\n", programName);
     exit(0);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 458ca7ee75269981be8e73ce1af58a4f1703f41c..76632729d45abd89cacb2c382f62f66fd6a446f7 100644 (file)
@@ -219,6 +219,7 @@ int main(int argc, char **argv)
 
     if ((tif = TIFFOpen(argv[3], "w")) == NULL) {
         fprintf(stderr, "can't open %s as a TIFF file\n", argv[3]);
+               free(red);free(green);free(blue);
         return 0;
     }
 
@@ -274,3 +275,10 @@ Usage()
     fprintf(stderr, "Usage: %s -depth (8 | 4 | 2 | 1) tiff-image\n", programName);
     exit(0);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 79870f723f2d6f3e6268ab9838cb23e101a8de37..9a7bbcf828c7841140e842975893ebc286b5e710 100644 (file)
@@ -192,3 +192,10 @@ Usage()
     fprintf(stderr, "Usage: %s -gamma gamma tiff-image\n", programName);
     exit(0);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index f709860928938995fe54c96df7d32a65374461fd..749f5ceb6894564230ad8f9b464814a8f07df603 100644 (file)
@@ -1,4 +1,3 @@
-# $Id: Makefile.am,v 1.2 2006/03/23 14:54:01 dron Exp $
 #
 # Tag Image File Format (TIFF) Software
 #
 
 # Process this file with automake to produce Makefile.in.
 
-EXTRA_DIST = Imakefile README patchlevel.h xtiff.c xtifficon.h
+#LIBTIFF = $(top_builddir)/libtiff/libtiff.la
+
+EXTRA_DIST = README patchlevel.h xtiff.c xtifficon.h
+
+#noinst_PROGRAMS =
+
+#if HAVE_XAW
+#noinst_PROGRAMS += xtiff
+#endif
+
+#xtiff_SOURCES = patchlevel.h xtiff.c xtifficon.h
+#xtiff_CFLAGS = $(CFLAGS) $(XAW_CFLAGS) $(AM_CFLAGS)
+#xtiff_LDADD = $(LIBTIFF) $(X_LIBS) $(XAW_LIBS)
+
+#INCLUDES = -I$(top_srcdir)/libtiff
 
index 1d5644981d3d234030dd2ba31f5e9d7c11a9823a..4ecfb0c244def7139a4165460c1f5704eebf481c 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
@@ -14,7 +14,6 @@
 
 @SET_MAKE@
 
-# $Id: Makefile.in,v 1.32 2006/03/23 14:54:01 dron Exp $
 #
 # Tag Image File Format (TIFF) Software
 #
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
+
+#LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -62,27 +77,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/dbs/xtiff
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -102,6 +134,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -116,12 +149,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -140,20 +168,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -165,63 +198,67 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
-EXTRA_DIST = Imakefile README patchlevel.h xtiff.c xtifficon.h
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = README patchlevel.h xtiff.c xtifficon.h
 all: all-am
 
 .SUFFIXES:
@@ -229,14 +266,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/dbs/xtiff/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/dbs/xtiff/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/dbs/xtiff/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/dbs/xtiff/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -254,47 +291,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -312,16 +351,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -332,7 +377,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -340,18 +385,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -370,17 +435,33 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
+
+#noinst_PROGRAMS =
+
+#if HAVE_XAW
+#noinst_PROGRAMS += xtiff
+#endif
+
+#xtiff_SOURCES = patchlevel.h xtiff.c xtifficon.h
+#xtiff_CFLAGS = $(CFLAGS) $(XAW_CFLAGS) $(AM_CFLAGS)
+#xtiff_LDADD = $(LIBTIFF) $(X_LIBS) $(XAW_LIBS)
+
+#INCLUDES = -I$(top_srcdir)/libtiff
 
 # 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.
index 935ec354b717b10af4bcd36ea15dfed3a1d64a01..538b6d97565708f78486b8ba498f5985d1cbb408 100644 (file)
@@ -1 +1,8 @@
 #define PATCHLEVEL 0
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 918265ec23ad4909e61fdaec59ef3aaaf68093d3..82541b615ddd39475703c41e612cdcc9d0d06a0a 100644 (file)
@@ -1,4 +1,6 @@
 /*
+ * $Id$
+ *
  * xtiff - view a TIFF file in an X window
  *
  * Dan Sears
@@ -54,6 +56,7 @@
  */
 #include <math.h>
 #include <stdio.h>
+#include <stdlib.h>
 #include <tiffio.h>
 #include <X11/Xatom.h>
 #include <X11/Intrinsic.h>
@@ -69,7 +72,7 @@
 #include "xtifficon.h"
 
 #define TIFF_GAMMA      "2.2"     /* default gamma from the TIFF 5.0 spec */
-#define ROUND(x)        (u_short) ((x) + 0.5)
+#define ROUND(x)        (uint16) ((x) + 0.5)
 #define SCALE(x, s)     (((x) * 65535L) / (s))
 #define MCHECK(m)       if (!m) { fprintf(stderr, "malloc failed\n"); exit(0); }
 #define MIN(a, b)       (((a) < (b)) ? (a) : (b))
@@ -84,7 +87,7 @@
 #define PP(args)    ()
 #endif
 
-void main PP((int argc, char **argv));
+int main PP((int argc, char **argv));
 void OpenTIFFFile PP((void));
 void GetTIFFHeader PP((void));
 void SetNameLabel PP((void));
@@ -130,8 +133,8 @@ typedef struct {
     Boolean help;
     float gamma;
     Boolean usePixmap;
-    int viewportWidth;
-    int viewportHeight;
+    uint32 viewportWidth;
+    uint32 viewportHeight;
     int translate;
     Boolean verbose;
 } AppData, *AppDataPtr;
@@ -229,14 +232,14 @@ XImage *            xImage;
 GC                  xWinGc;
 int                 xImageDepth, xScreen, xRedMask, xGreenMask, xBlueMask,
                     xOffset = 0, yOffset = 0, grabX = -1, grabY = -1;
-u_char              basePixel = 0;
+unsigned char       basePixel = 0;
 
 /*
  * TIFF data structures
  */
 TIFF *              tfFile = NULL;
-u_long              tfImageWidth, tfImageHeight;
-u_short             tfBitsPerSample, tfSamplesPerPixel, tfPlanarConfiguration,
+uint32              tfImageWidth, tfImageHeight;
+uint16              tfBitsPerSample, tfSamplesPerPixel, tfPlanarConfiguration,
                     tfPhotometricInterpretation, tfGrayResponseUnit,
                     tfImageDepth, tfBytesPerRow;
 int                 tfDirectory = 0, tfMultiPage = False;
@@ -252,15 +255,13 @@ double              *dRed, *dGreen, *dBlue;
 /*
  * shared data structures
  */
-u_short *           redMap = NULL, *greenMap = NULL, *blueMap = NULL,
+uint16 *            redMap = NULL, *greenMap = NULL, *blueMap = NULL,
                     *grayMap = NULL, colormapSize;
-u_char *            imageMemory;
+char *             imageMemory;
 char *              fileName;
 
-void
-main(argc, argv)
-    int argc;
-    char ** argv;
+int
+main(int argc, char **argv)
 {
     XSetWindowAttributes window_attributes;
     Widget widget_list[3];
@@ -379,6 +380,8 @@ main(argc, argv)
     CreateXImage();
 
     XtMainLoop();
+
+    return 0;
 }
 
 void
@@ -450,9 +453,9 @@ GetTIFFHeader()
      */
     switch (tfPhotometricInterpretation) {
     case PHOTOMETRIC_RGB:
-       redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-       greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-       blueMap = (u_short *) malloc(colormapSize * sizeof(u_short));
+       redMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+       greenMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+       blueMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
        MCHECK(redMap); MCHECK(greenMap); MCHECK(blueMap);
        for (i = 0; i < colormapSize; i++)
            dRed[i] = dGreen[i] = dBlue[i]
@@ -461,9 +464,9 @@ GetTIFFHeader()
     case PHOTOMETRIC_PALETTE:
         if (!TIFFGetField(tfFile, TIFFTAG_COLORMAP,
                 &redMap, &greenMap, &blueMap)) {
-            redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-            greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-            blueMap = (u_short *) malloc(colormapSize * sizeof(u_short));
+            redMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+            greenMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+            blueMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
             MCHECK(redMap); MCHECK(greenMap); MCHECK(blueMap);
             for (i = 0; i < colormapSize; i++)
                 dRed[i] = dGreen[i] = dBlue[i]
@@ -478,18 +481,18 @@ GetTIFFHeader()
         }
         break;
     case PHOTOMETRIC_MINISWHITE:
-        redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-        greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-        blueMap = (u_short *) malloc(colormapSize * sizeof(u_short));
+        redMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+        greenMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+        blueMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
         MCHECK(redMap); MCHECK(greenMap); MCHECK(blueMap);
        for (i = 0; i < colormapSize; i++)
            dRed[i] = dGreen[i] = dBlue[i] = (double)
                 SCALE(colormapSize-1-i, colormapSize-1);
         break;
     case PHOTOMETRIC_MINISBLACK:
-        redMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-        greenMap = (u_short *) malloc(colormapSize * sizeof(u_short));
-        blueMap = (u_short *) malloc(colormapSize * sizeof(u_short));
+        redMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+        greenMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
+        blueMap = (uint16 *) malloc(colormapSize * sizeof(uint16));
         MCHECK(redMap); MCHECK(greenMap); MCHECK(blueMap);
        for (i = 0; i < colormapSize; i++)
            dRed[i] = dGreen[i] = dBlue[i] = (double) SCALE(i, colormapSize-1);
@@ -575,9 +578,9 @@ static char* classNames[] = {
 void
 GetVisual()
 {
-    register XColor *colors = NULL;
-    register u_long *pixels = NULL;
-    register int i;
+    XColor *colors = NULL;
+    unsigned long *pixels = NULL;
+    unsigned long i;
 
     switch (tfImageDepth) {
     /*
@@ -595,7 +598,7 @@ GetVisual()
         MCHECK(colors);
 
         for (i = 0; i < colormapSize; i++) {
-            colors[i].pixel = (u_long) (i << 16) + (i << 8) + i;
+            colors[i].pixel = (i << 16) + (i << 8) + i;
             colors[i].red = redMap[i];
             colors[i].green = greenMap[i];
             colors[i].blue = blueMap[i];
@@ -630,7 +633,7 @@ GetVisual()
         MCHECK(colors);
 
         for (i = 0; i < colormapSize; i++) {
-            colors[i].pixel = (u_long) i;
+            colors[i].pixel = i;
             colors[i].red = redMap[i];
             colors[i].green = greenMap[i];
             colors[i].blue = blueMap[i];
@@ -652,11 +655,12 @@ GetVisual()
         else {
             xColormap = XCreateColormap(xDisplay, RootWindow(xDisplay, xScreen),
                 xVisual, AllocNone);
-            pixels = (u_long *) malloc(colormapSize * sizeof(u_long));
+            pixels = (unsigned long *)
+                malloc(colormapSize * sizeof(unsigned long));
             MCHECK(pixels);
             (void) XAllocColorCells(xDisplay, xColormap, True,
                 NULL, 0, pixels, colormapSize);
-            basePixel = (u_char) pixels[0];
+            basePixel = (unsigned char) pixels[0];
             free(pixels);
         }
         XStoreColors(xDisplay, xColormap, colors, colormapSize);
@@ -733,14 +737,15 @@ void
 GetTIFFImage()
 {
     int pixel_map[3], red_shift, green_shift, blue_shift;
-    register u_char *scan_line, *output_p, *input_p;
-    register int i, j, s;
+    char *scan_line, *output_p, *input_p;
+    uint32 i, j;
+    uint16 s;
 
-    scan_line = (u_char *) malloc(tfBytesPerRow = TIFFScanlineSize(tfFile));
+    scan_line = (char *) malloc(tfBytesPerRow = TIFFScanlineSize(tfFile));
     MCHECK(scan_line);
 
     if ((tfImageDepth == 32) || (tfImageDepth == 24)) {
-        output_p = imageMemory = (u_char *)
+        output_p = imageMemory = (char *)
             malloc(tfImageWidth * tfImageHeight * 4);
         MCHECK(imageMemory);
 
@@ -792,7 +797,7 @@ GetTIFFImage()
         }
     } else {
         if (xImageDepth == tfImageDepth) {
-            output_p = imageMemory = (u_char *)
+            output_p = imageMemory = (char *)
                 malloc(tfBytesPerRow * tfImageHeight);
             MCHECK(imageMemory);
 
@@ -800,7 +805,7 @@ GetTIFFImage()
                 if (TIFFReadScanline(tfFile, output_p, i, 0) < 0)
                     break;
         } else if ((xImageDepth == 8) && (tfImageDepth == 4)) {
-            output_p = imageMemory = (u_char *)
+            output_p = imageMemory = (char *)
                 malloc(tfBytesPerRow * 2 * tfImageHeight + 2);
             MCHECK(imageMemory);
 
@@ -820,7 +825,7 @@ GetTIFFImage()
                 }
             }
         } else if ((xImageDepth == 8) && (tfImageDepth == 2)) {
-            output_p = imageMemory = (u_char *)
+            output_p = imageMemory = (char *)
                 malloc(tfBytesPerRow * 4 * tfImageHeight + 4);
             MCHECK(imageMemory);
 
@@ -837,7 +842,7 @@ GetTIFFImage()
                 }
             }
         } else if ((xImageDepth == 4) && (tfImageDepth == 2)) {
-            output_p = imageMemory = (u_char *)
+            output_p = imageMemory = (char *)
                 malloc(tfBytesPerRow * 2 * tfImageHeight + 2);
             MCHECK(imageMemory);
 
@@ -1273,3 +1278,13 @@ Usage()
     fprintf(stderr, "\t[-verbose (True | False)]\n");
     exit(0);
 }
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 8ee16674c6fdbefa54c5f585548d4c7c33b3f39b..3eac48efc5e5c8e0442bf38303c33e47da81d5ac 100644 (file)
@@ -12,3 +12,10 @@ static char xtifficon_bits[] = {
    0x80, 0x61, 0xfc, 0x03, 0xc0, 0x60, 0xf8, 0x07, 0xc0, 0x60, 0xf0, 0x0f,
    0x60, 0x60, 0xe0, 0x1f, 0x30, 0x60, 0xe0, 0x1f, 0x18, 0x60, 0xc0, 0x3f,
    0x0c, 0x60, 0x80, 0x7f, 0x06, 0x00, 0x00, 0xff};
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 9b94ed79a2d40d62bd6e17292172b4a71012d2db..9caedf14727fab3876acdf7cf82e75211add1ed9 100644 (file)
@@ -32,5 +32,5 @@ noinst_PROGRAMS = iptcutil
 iptcutil_SOURCES = iptcutil.c
 iptcutil_LDADD = $(LIBTIFF)
 
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 
index 24d441c311970653142826b3683a743f783bfaa6..eb4b82cb5d0e2914c723a7bfc76430a42fc39d0f 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,46 +75,78 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 noinst_PROGRAMS = iptcutil$(EXEEXT)
 subdir = contrib/iptcutil
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 PROGRAMS = $(noinst_PROGRAMS)
 am_iptcutil_OBJECTS = iptcutil.$(OBJEXT)
 iptcutil_OBJECTS = $(am_iptcutil_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/libtiff/libtiff.la
-iptcutil_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+iptcutil_DEPENDENCIES = $(LIBTIFF)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(iptcutil_SOURCES)
 DIST_SOURCES = $(iptcutil_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -120,6 +166,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -134,12 +181,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -158,20 +200,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -183,67 +230,71 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 EXTRA_DIST = README test.iptc test.txt
 iptcutil_SOURCES = iptcutil.c
 iptcutil_LDADD = $(LIBTIFF)
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 all: all-am
 
 .SUFFIXES:
@@ -252,14 +303,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/iptcutil/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/iptcutil/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/iptcutil/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/iptcutil/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -277,16 +328,19 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-iptcutil$(EXEEXT): $(iptcutil_OBJECTS) $(iptcutil_DEPENDENCIES) 
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+iptcutil$(EXEEXT): $(iptcutil_OBJECTS) $(iptcutil_DEPENDENCIES) $(EXTRA_iptcutil_DEPENDENCIES) 
        @rm -f iptcutil$(EXEEXT)
-       $(LINK) $(iptcutil_LDFLAGS) $(iptcutil_OBJECTS) $(iptcutil_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(iptcutil_OBJECTS) $(iptcutil_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -297,25 +351,25 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iptcutil.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -323,82 +377,99 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -416,16 +487,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -439,7 +516,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-am
 
@@ -447,18 +524,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -479,19 +576,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstPROGRAMS ctags distclean \
+       clean-libtool clean-noinstPROGRAMS cscopelist ctags distclean \
        distclean-compile distclean-generic distclean-libtool \
        distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-exec \
-       install-exec-am install-info install-info-am install-man \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-strip installcheck installcheck-am installdirs \
        maintainer-clean maintainer-clean-generic mostlyclean \
        mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-info-am
+       pdf pdf-am ps ps-am tags uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index c3297520a6e22bec6b4abff21ce64b1a50a705ea..288b7db5fee23d23311d40b69ed6078a9f5db179 100644 (file)
@@ -5,7 +5,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <memory.h>
 #include <ctype.h>
 
 #ifdef HAVE_STRINGS_H
@@ -294,7 +293,10 @@ int formatIPTC(FILE *ifile, FILE *ofile)
     {
       c = str[tagindx] = getc(ifile);
       if (c == EOF)
-        return -1;
+      {
+          free(str);
+          return -1;
+      }
     }
     str[ taglen ] = 0;
 
@@ -332,12 +334,12 @@ char *super_fgets(char *b, int *blen, FILE *file)
     c=fgetc(file);
     if (c == EOF || c == '\n')
       break;
-    if (((int)q - (int)b + 1 ) >= (int) len)
+    if (((long)q - (long)b + 1 ) >= (long) len)
       {
-        int
+        long
           tlen;
 
-        tlen=(int)q-(int)b;
+        tlen=(long)q-(long)b;
         len<<=1;
         b=(char *) realloc((char *) b,(len+2));
         if ((char *) b == (char *) NULL)
@@ -352,7 +354,7 @@ char *super_fgets(char *b, int *blen, FILE *file)
       int
         tlen;
 
-      tlen=(int)q - (int)b;
+      tlen=(long)q - (long)b;
       if (tlen == 0)
         return (char *) NULL;
       b[tlen] = '\0';
@@ -385,7 +387,7 @@ int main(int argc, char *argv[])
 
   if( argc < 2 )
     {
-      printf(usage);
+      puts(usage);
            return 1;
     }
 
@@ -444,7 +446,7 @@ int main(int argc, char *argv[])
       }
     else
       {
-        printf(usage);
+        puts(usage);
              return 1;
       }
   }
@@ -932,3 +934,10 @@ byebye:
 
   return 0;
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/contrib/mac-cw/Makefile.am b/src/tiff/contrib/mac-cw/Makefile.am
deleted file mode 100644 (file)
index 827fa31..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-
-EXTRA_DIST = Makefile.script README mac_main.c mac_main.h metrowerks.note mkg3_main.c version.h
-
diff --git a/src/tiff/contrib/mac-cw/Makefile.in b/src/tiff/contrib/mac-cw/Makefile.in
deleted file mode 100644 (file)
index 964c03f..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  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@
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = contrib/mac-cw
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
-       $(top_builddir)/libtiff/tiffconf.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GLUT_CFLAGS = @GLUT_CFLAGS@
-GLUT_LIBS = @GLUT_LIBS@
-GLU_CFLAGS = @GLU_CFLAGS@
-GLU_LIBS = @GLU_LIBS@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDIR = @LIBDIR@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@
-LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@
-LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@
-LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@
-LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@
-LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
-LIBTIFF_VERSION = @LIBTIFF_VERSION@
-LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-NM = @NM@
-OBJDUMP = @OBJDUMP@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-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@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-EXTRA_DIST = Makefile.script README mac_main.c mac_main.h metrowerks.note mkg3_main.c version.h
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/mac-cw/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/mac-cw/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
-         if test -d $$d/$$file; then \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-           fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-         else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -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."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tiff/contrib/mac-cw/Makefile.script b/src/tiff/contrib/mac-cw/Makefile.script
deleted file mode 100644 (file)
index 85614c8..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-
-(* You must manually set the top-level PATHNAME here; everything else is automatic *)
-
-set PATHNAME to "ritter:tiff-v3.4beta028:"
-set PRINTING to "NO"
-
-set MKG3STATES to PATHNAME & "mkg3states.mw"
-set LIBTIFF to PATHNAME & "libtiff-68K.mw"
-set TIFFINFO to PATHNAME & "tiffinfo.mw"
-
-with timeout of 60000 seconds
-       tell application "MW C/C++ 68K 1.2.2"
-               
-               activate
-               
-               
-               (* Create tif_fax3sm.c file *)
-               Create Project {file MKG3STATES}
-               Add Files {"mkg3states.c", "mkg3_main.c", "getopt.c"}
-               Add Files {"MacOS.lib"} To Segment 2
-               Add Files {"ANSI (4i/8d) C.68K.Lib"} To Segment 3
-               Add Files {"SIOUX.68K.Lib"} To Segment 4
-               Add Files {"MathLib68K (4i/8d).Lib"} To Segment 5
-               
-               Set Preferences To {Activate CPlusPlus:false, ARM Conformance:false, ANSI Keywords Only:false, Require Function Prototypes:false, Expand Trigraph Sequences:false, Enums Always Ints:false, MPW Pointer Type Rules:false, Prefix File:"mac_main.h"}
-               Set Preferences To {Illegal Pragmas:false, Empty Declarations:false, Possible Errors:false, Unused Variables:false, Unused Arguments:false, Extra Commas:false, Extended Error Checking:false}
-               Set Preferences To {Code Model:2, Struct Alignment:0, MC68020 CodeGen:false, MC68881 CodeGen:false, Four Bytes Ints:true, Eight Byte Double:true, Peephole Optimizer:true, CSE Optimizer:true, Optimize For Size:true, Far Data:true, Use Profiler:false, Far Virtual Function Tables:false, Far String Constants:true}
-               Set Preferences To {MacsBug Symbols:2, Generate SYM File:false, Full Path In Sym Files:true, Generate Link Map:false, Generate A6 Stack Frames:true, The Debugger Aware:false, Link Single Segment:false, Fast Link:true}
-               Set Preferences To {Project Type:0, File Name:"mkg3states", File Creator:"????", File Type:"APPL"}
-               
-               Make Project
-               Run Project
-               Remove Binaries
-               Close Project
-               
-               
-               (* Create LIBTIFF *)
-               Create Project {file LIBTIFF}
-               Add Files {"tif_apple.c", "tif_aux.c", "tif_close.c", "tif_codec.c", "tif_compress.c", "tif_dumpmode.c", "tif_error.c", "tif_flush.c", "tif_lzw.c", "tif_next.c", "tif_open.c", "tif_packbits.c"}
-               Add Files {"tif_fax3.c"} To Segment 2
-               Add Files {"tif_dirinfo.c", "tif_dir.c", "tif_dirwrite.c", "tif_dirread.c"} To Segment 3
-               Add Files {"tif_predict.c", "tif_print.c", "tif_read.c", "tif_strip.c", "tif_swab.c", "tif_thunder.c", "tif_tile.c", "tif_version.c", "tif_zip.c", "tif_jpeg.c", "tif_warning.c", "tif_write.c"} To Segment 4
-               Add Files {"tif_fax3sm.c"} To Segment 5
-               Add Files {"tif_getimage.c"} To Segment 6
-               
-               Set Preferences To {Activate CPlusPlus:false, ARM Conformance:false, ANSI Keywords Only:false, Require Function Prototypes:false, Expand Trigraph Sequences:false, Enums Always Ints:false, MPW Pointer Type Rules:false, Prefix File:"MacHeaders68K"}
-               Set Preferences To {Illegal Pragmas:false, Empty Declarations:false, Possible Errors:false, Unused Variables:false, Unused Arguments:false, Extra Commas:false, Extended Error Checking:false}
-               Set Preferences To {Code Model:2, Struct Alignment:0, MC68020 CodeGen:false, MC68881 CodeGen:false, Four Bytes Ints:true, Eight Byte Double:true, Peephole Optimizer:true, CSE Optimizer:true, Optimize For Size:true, Far Data:true, Use Profiler:false, Far Virtual Function Tables:false, Far String Constants:true}
-               Set Preferences To {MacsBug Symbols:2, Generate SYM File:true, Full Path In Sym Files:true, Generate Link Map:false, Generate A6 Stack Frames:true, The Debugger Aware:false, Link Single Segment:false, Fast Link:true}
-               Set Preferences To {Project Type:2, File Name:"libtiff-68K", File Creator:"????", File Type:"APPL"}
-               Make Project
-               Close Project
-
-               Create Project {file TIFFINFO}
-               Add Files {"tiffinfo.c", "mac_main.c", "getopt.c"}
-               Add Files {"MacOS.lib"} To Segment 2
-               Add Files {"ANSI (4i/8d) C.68K.Lib"} To Segment 3
-               Add Files {"SIOUX.68K.Lib"} To Segment 4
-               Add Files {"MathLib68K (4i/8d).Lib"} To Segment 5
-               Add Files {"libtiff-68K"} To Segment 6
-               
-               Set Preferences To {Activate CPlusPlus:false, ARM Conformance:false, ANSI Keywords Only:false, Require Function Prototypes:false, Expand Trigraph Sequences:false, Enums Always Ints:false, MPW Pointer Type Rules:false, Prefix File:"mac_main.h"}
-               Set Preferences To {Illegal Pragmas:false, Empty Declarations:false, Possible Errors:false, Unused Variables:false, Unused Arguments:false, Extra Commas:false, Extended Error Checking:false}
-               Set Preferences To {Code Model:2, Struct Alignment:0, MC68020 CodeGen:false, MC68881 CodeGen:false, Four Bytes Ints:true, Eight Byte Double:true, Peephole Optimizer:true, CSE Optimizer:true, Optimize For Size:true, Far Data:true, Use Profiler:false, Far Virtual Function Tables:false, Far String Constants:true}
-               Set Preferences To {MacsBug Symbols:2, Generate SYM File:false, Full Path In Sym Files:true, Generate Link Map:false, Generate A6 Stack Frames:true, The Debugger Aware:false, Link Single Segment:false, Fast Link:true}
-               Set Preferences To {Project Type:0, File Name:"tiffinfo", File Creator:"????", File Type:"APPL"}
-               
-               Make Project
-               Close Project
-               
-       end tell
-end timeout
diff --git a/src/tiff/contrib/mac-cw/README b/src/tiff/contrib/mac-cw/README
deleted file mode 100644 (file)
index a973469..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-----------------------------------------------------
-Build instructions for LIBTIFF - CodeWarrior (6.1):
-----------------------------------------------------
-
-In this directory you will find a Makefile.script Applescript
-file, which should be run in order to build the libtiff code
-using MetroWerks CodeWarrior.
-
-Refer to the "metrowerks.note" instructions on building the
-library for 68k and PowerPC native code, as well as building
-some of the libtiff tools, which are rather unix-like, but
-at least give an example of how to link everything together.
-
-  Questions, comments, bug reports to Niles Ritter
-  (ndr@tazboy.jpl.nasa.gov). Sam Leffler takes no responsibility
-  for the viability of this stuff.
-  
-    -Niles.
diff --git a/src/tiff/contrib/mac-cw/mac_main.c b/src/tiff/contrib/mac-cw/mac_main.c
deleted file mode 100644 (file)
index 294655d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  mac_main.c -- The REAL entry point which
- *   calls the tools main code. For the tools
- *   the symbol "main" has been #defined to "tool_main"
- *   so that this entry point may be used to access
- *   the user-input first.
- */
-
-#undef main
-
-int
-main()
-{
-       int argc;
-       char **argv;
-       
-       argc=ccommand(&argv);
-
-       return tool_main(argc,argv);  // Call the tool "main()" routine
-}
diff --git a/src/tiff/contrib/mac-cw/mac_main.h b/src/tiff/contrib/mac-cw/mac_main.h
deleted file mode 100644 (file)
index 523300f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/* 
- * mac_main.h  -- redefines main entry point
- */
-#ifndef _mac_main_h
-#define _mac_main_h
-
-#undef main
-#define main tool_main
-
-#endif  /* _mac_main_h */
-
diff --git a/src/tiff/contrib/mac-cw/metrowerks.note b/src/tiff/contrib/mac-cw/metrowerks.note
deleted file mode 100644 (file)
index 9917cfd..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-----------------------------------------------------
-Build instructions for LIBTIFF - CodeWarrior (6.1):
-----------------------------------------------------
-
-Note: there is a bug in CW earlier than 6.1 which will generate
-16-bit offset link errors for any projects using libtiff; you must
-download the CodeWarrior 6.1 patch located at:
-
-  ftp://ftp.metrowerks.com/pub/updates/metro-patches-61.hqx
-
-unpack the archive, insert the files and recompile the libraries
-using the AppleScript provided.
-
-
-1. Make sure that the directory containing these files is under
-   the "contrib" directory of the tiff folder; otherwise, some
-   access path preferences will need to be updated.
-
-2. The instructions below are for the 68k platform build. 
-    A similar script can be put together for the PPC version,
-    or you can just directly convert the projects. Be sure to
-   use the native libraries as well. NOTE: if anyone cooks  
-  up an equivalent script for PPC, send it to me and I'll include
-  it with the rest of the package.
-
-3.   Open the file Makefile.script with an AppleScript Editor
-   and change the PATHNAME variable to point to your
-   top-level TIFF directory
-
-4. Run the Script. It will do the following things:
-   4a. Prompt you for the current location of the CodeWarrior 68K
-   program.
-
-   4b. Create the source file "tif_fax3sm.c":
-
-        i) Build the project CW project mkg3states.cw. It will
-     produce a small program called mkg3states. Only a
-     68k version is provided, since you only have to run
-     this code once, and it only takes a few seconds.
-     
-        ii) Run the built mkg3states program: 
-        
-    The program will temporarily take over ALL of the CPU, so
-    don't panic. After a few seconds it will produce a file called
-    "tif_fax3sm.c".
-
-  4c. Build the library project libtiff-68K.mw, producing library
-   called libtiff-68K.
-
-  4d. Build program project tiffinfo.mw; it will produce a
-   program called tiffinfo, which can dump the tiff tags of
-   a named file. Passing in no arguments will dump a help file
-   for the program. It is unix-flavored, but hey, it works.
-
-5  When the script finishes, you will have a usable libtiff-68K
-   library, a passable "tiffinfo" program, and the projects used
-   to build them. Note that to get tiffinfo to work I have put 
-   an include file in the project that redefines main(), and
-   then have a mac_main.c program that calls ccommand() first
-   and passes that to the actual main code. A real mac app,
-   of course, would never use this stuff at all...
-
- . The tiffinfo.mw project may be used as a template to build
-   most of the other libtiff tools, or your own code. When
-   modifying a copy of the project, you will most likely need
-   to update the "Access Paths" directory if it is moved out of
-   the contrib folder.
-   
-6. If you are going to create a project from scratch, be sure
-   to set up the preferences with 
-   
-      4-byte ints
-      8-byte doubles
-      Far Code/Far Data
-      Large Linking model
-      
-   and everything should work fine. If the console-style error
-   reports bother you, you can always override the error and
-   warning mechanism with TIFFSetErrorHandler to do something
-   more Mac-like.
-
-Questions, comments to Niles Ritter (ndr@tazboy.jpl.nasa.gov).
-
diff --git a/src/tiff/contrib/mac-cw/mkg3_main.c b/src/tiff/contrib/mac-cw/mkg3_main.c
deleted file mode 100644 (file)
index b31c8d1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- *  mkg3_main.c -- passes fake arguments into main
- */
-
-#undef main
-
-int
-main()
-{
-       static char *argv[4] = {
-        "mkg3states", "-c", "const", "tif_fax3sm.c" };
-       
-       return tool_main(4,argv);  // Call the tool "main()" routine
-}
diff --git a/src/tiff/contrib/mac-cw/version.h b/src/tiff/contrib/mac-cw/version.h
deleted file mode 100644 (file)
index 3c5c56e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#define VERSION \
-"LIBTIFF, Version 3.4beta028 \n"\
-"Copyright (c) 1988-1995 Sam Leffler\n"\
-"Copyright (c) 1991-1996 Silicon Graphics, Inc."
diff --git a/src/tiff/contrib/mac-mpw/BUILD.mpw b/src/tiff/contrib/mac-mpw/BUILD.mpw
deleted file mode 100644 (file)
index 7abf83a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# BUILD.mpw:  
-#
-#   Full build for Apple Macintosh Programmer's Workshop (MPW).
-#
-#  This is an executable MPW script which creates various
-#  utilities, sets up the MPW makefiles and runs the builds.
-#  This script should be run at the top level TIFF directory with:
-#
-#     directory :::
-#     :contrib:mac-mpw:BUILD.mpw
-#
-#  NOTE: The full build requires that MPW have at least 6 MB
-#   allocated to it to compile the CCITT Fax codec tables. To
-#   deactivate CCITT compression edit the file :contrib:mac:libtiff.make
-#   first and follow the directions for disabling Fax decoding.
-#
-#  All TIFF tools are built as MPW tools, executable from the
-#  MPW shell or other compatible tool server.
-#
-#  Written by: Niles Ritter (ndr@tazboy.jpl.nasa.gov).
-#
-
-echo "############# Full Scratch Build for MPW #############"
-
-# Create the ascii->mpw translation tool; this is used to
-# convert standard ASCII files into ones using the special
-# MPW characters, which don't live comfortably in unix tar files.
-#
-echo "######## Creating ASCII->MPW translator ########"
-set contrib ':contrib:mac-mpw:'
-directory {contrib}
-createmake -tool mactrans mactrans.c > dev:null
-make -f mactrans.make | streamedit -e "/CSANELib/||/Math/||/ToolLibs/ del" > mactrans.bld
-execute mactrans.bld  > dev:null
-delete -y mactrans.make mactrans.bld mactrans.c.o || set status 0
-directory :::   #An mpw trick for going up two levels
-
-# Create the top-level Makefile and run it
-echo "######## Creating Makefile ########"
-catenate {contrib}top.make | {contrib}mactrans > Makefile
-
-echo "######## Running Makefile ########"
-make  > build.mpw
-execute build.mpw
-echo "############# MPW Build Complete #############"
-exit 0
-
diff --git a/src/tiff/contrib/mac-mpw/Makefile.am b/src/tiff/contrib/mac-mpw/Makefile.am
deleted file mode 100644 (file)
index fd1e663..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-
-EXTRA_DIST = BUILD.mpw README libtiff.make mactrans.c port.make tools.make top.make
-
diff --git a/src/tiff/contrib/mac-mpw/Makefile.in b/src/tiff/contrib/mac-mpw/Makefile.in
deleted file mode 100644 (file)
index 6924278..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  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@
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = contrib/mac-mpw
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
-       $(top_builddir)/libtiff/tiffconf.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GLUT_CFLAGS = @GLUT_CFLAGS@
-GLUT_LIBS = @GLUT_LIBS@
-GLU_CFLAGS = @GLU_CFLAGS@
-GLU_LIBS = @GLU_LIBS@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDIR = @LIBDIR@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@
-LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@
-LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@
-LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@
-LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@
-LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
-LIBTIFF_VERSION = @LIBTIFF_VERSION@
-LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-NM = @NM@
-OBJDUMP = @OBJDUMP@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-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@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-EXTRA_DIST = BUILD.mpw README libtiff.make mactrans.c port.make tools.make top.make
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/mac-mpw/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/mac-mpw/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
-         if test -d $$d/$$file; then \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-           fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-         else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -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."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tiff/contrib/mac-mpw/README b/src/tiff/contrib/mac-mpw/README
deleted file mode 100644 (file)
index 053b0d0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-######################
-About contrib:mac-mpw:
-######################
-
-This directory contains all of the utilities and makefile source
-to build the LIBTIFF library and tools from the MPW Shell. The
-file BUILD.mpw in this directory is an executable script
-which uses all of these files to create the MPW makefiles and 
-run them. 
-
-The <file>.make files are not MPW makefiles as such,
-but are when run through the "mactrans" program, which turns
-the ascii "%nn" metacharacters into the standard weird MPW
-make characters.
-
-This translation trick is necessary to protect the files when
-they are put into unix tarfiles, which tend to mangle the
-special characters.
-
- --Niles Ritter (ndr@tazboy.jpl.nasa.gov)
diff --git a/src/tiff/contrib/mac-mpw/libtiff.make b/src/tiff/contrib/mac-mpw/libtiff.make
deleted file mode 100644 (file)
index ee5296e..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-#
-# Tag Image File Format Library
-#
-# Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 Sam Leffler
-# Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
-# 
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-#
-
-#
-# Makefile for Mac using MPW 3.3.1 and MPW C 3.2.4
-#
-#  Note:  This file must be run through "mactrans" before it can
-#  be recognized by MPW as a valid makefile. The problem is that MPW
-#  uses special non-ASCII characters, which tend to get mangled when stored
-#  in unix tar files, etc. "mactrans" is built as part of the TIFF MPW build.
-#
-#
-
-DEPTH   = ::
-
-# FAX Options: If you do not wish to include the FAX options, uncomment
-# the first four definitions and comment out the next four 
-# definitions. Note that to build programs with the FAX libraries you
-# have to include "-model far" in your compile and link statements.
-#
-# Also, to build the fax code (including the tif_fax3sm.c file, which is
-# created by the MPW tool "mkg3states", also built below), you will
-# need to size the MPW program up to about 6 megabytes or so.
-
-#FAX_OPTIONS = 
-#FAX_OBJECTS =         
-#FAX_SOURCES = tif_fax3.c 
-#FAX_CONFIG = 
-
-FAX_OPTIONS = -model far
-FAX_OBJECTS =  tif_fax3.c.o tif_fax3sm.c.o
-FAX_SOURCES = tif_fax3.c tif_fax3sm.c
-FAX_CONFIG = -d CCITT_SUPPORT
-
-NULL=
-
-RM = delete -y -i 
-COPTS = 
-
-LIBPORT=::port:libport.o
-
-#
-.c.o %c4 .c
-       {C} -model far {CFLAGS} -s {Default} {DepDir}{Default}.c -o {TargDir}{Default}.c.o
-
-
-CONF_LIBRARY= %b6
-       -d HAVE_IEEEFP=1 %b6
-       -d BSDTYPES 
-
-CONF_COMPRESSION= %b6
-       {FAX_CONFIG} %b6
-       -d COMPRESSION_SUPPORT %b6
-       -d PACKBITS_SUPPORT     %b6
-       -d LZW_SUPPORT  %b6
-       -d THUNDER_SUPPORT %b6
-       -d NEXT_SUPPORT 
-
-CFLAGS=        {FAX_OPTIONS} {IPATH} {CONF_LIBRARY} {CONF_COMPRESSION} 
-
-INCS=  tiff.h tiffio.h
-
-SRCS=  %b6
-       {FAX_SOURCES} %b6
-       tif_apple.c %b6
-       tif_aux.c %b6
-       tif_close.c %b6
-       tif_codec.c %b6
-       tif_compress.c %b6
-       tif_dir.c %b6
-       tif_dirinfo.c %b6
-       tif_dirread.c %b6
-       tif_dirwrite.c %b6
-       tif_dumpmode.c %b6
-       tif_error.c %b6
-       tif_getimage.c %b6
-       tif_jpeg.c %b6
-       tif_flush.c %b6
-       tif_lzw.c %b6
-       tif_next.c %b6
-       tif_open.c %b6
-       tif_packbits.c %b6
-       tif_predict.c %b6
-       tif_print.c %b6
-       tif_read.c %b6
-       tif_swab.c %b6
-       tif_strip.c %b6
-       tif_thunder.c %b6
-       tif_tile.c %b6
-       tif_version.c %b6
-       tif_warning.c %b6
-       tif_write.c %b6
-       tif_zip.c %b6
-       {NULL}
-
-OBJS=  %b6
-       {FAX_OBJECTS} %b6
-       tif_apple.c.o %b6
-       tif_aux.c.o %b6
-       tif_close.c.o %b6
-       tif_codec.c.o %b6
-       tif_compress.c.o %b6
-       tif_dir.c.o %b6
-       tif_dirinfo.c.o %b6
-       tif_dirread.c.o %b6
-       tif_dirwrite.c.o %b6
-       tif_dumpmode.c.o %b6
-       tif_error.c.o %b6
-       tif_getimage.c.o %b6
-       tif_jpeg.c.o %b6
-       tif_flush.c.o %b6
-       tif_lzw.c.o %b6
-       tif_next.c.o %b6
-       tif_open.c.o %b6
-       tif_packbits.c.o %b6
-       tif_predict.c.o %b6
-       tif_print.c.o %b6
-       tif_read.c.o %b6
-       tif_swab.c.o %b6
-       tif_strip.c.o %b6
-       tif_thunder.c.o %b6
-       tif_tile.c.o %b6
-       tif_version.c.o %b6
-       tif_warning.c.o %b6
-       tif_write.c.o %b6
-       tif_zip.c.o %b6
-       {NULL}
-
-ALL=libtiff.o
-
-all %c4 {ALL}
-
-libtiff.o %c4 {OBJS}
-       Lib  {OBJS} -o libtiff.o
-       
-
-{OBJS} %c4 tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
-
-#
-# The finite state machine tables used by the G3/G4 decoders
-# are generated by the mkg3states program.  On systems without
-# make these rules have to be manually carried out.
-#
-tif_fax3sm.c %c4 mkg3states tif_fax3.h
-        {RM} tif_fax3sm.c || set status 0
-       :mkg3states -c const tif_fax3sm.c
-
-mkg3states.c.o %c4 mkg3states.c
-   C -model far  mkg3states.c -o mkg3states.c.o
-
-mkg3states %c4%c4 mkg3states.c.o
-       Link -model far -d -c 'MPS ' -t MPST %b6
-               mkg3states.c.o %b6
-               {LIBPORT} %b6
-               "{CLibraries}"StdClib.o %b6
-               "{Libraries}"Stubs.o %b6
-               "{Libraries}"Runtime.o %b6
-               "{Libraries}"Interface.o %b6
-               -o mkg3states
-
-ALPHA   = "{DEPTH}dist:tiff.alpha"
-VERSION = "{DEPTH}VERSION"
-
-version.h %c4 {VERSION} {ALPHA}
-        Set VERSION1 `catenate {VERSION}` 
-        Set VERSION2 "{VERSION1}`streamedit -e "1 rep /%a5%c5 %c5 (%c5)%a81/ %a81" {ALPHA}`" 
-        delete -y -i version.h || set status 0
-       echo '#define VERSION "LIBTIFF, Version' {VERSION2} '\nCopyright (c) 1988-1995 Sam Leffler\nCopyright (c) 1991-1995 Silicon Graphics, Inc."' >version.h
-
-tif_version.c.o %c4 version.h
-
-clean %c4
-       {RM} {ALL}  || set status 0
-       {RM} {OBJS} || set status 0
-       {RM} mkg3states || set status 0
-       {RM} mkg3states.c.o || set status 0
-       {RM} tif_fax3sm.c%c5 || set status 0
-       {RM} version.h || set status 0
diff --git a/src/tiff/contrib/mac-mpw/mactrans.c b/src/tiff/contrib/mac-mpw/mactrans.c
deleted file mode 100644 (file)
index 5e321b9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  mactrans.c  -- Hack filter used to generate MPW files 
- *    with special characters from pure ASCII, denoted "%nn" 
- *    where nn is hex. (except for "%%", which is literal '%').
- *
- *  calling sequence:
- *
- *    catenate file | mactrans [-toascii | -fromascii] > output
- *
- *    Written by: Niles Ritter.
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <ctype.h>
-
-void to_ascii(void);
-void from_ascii(void);
-
-main(int argc, char *argv[])
-{
-       if (argc<2 || argv[1][1]=='f') from_ascii();
-       else to_ascii();
-       exit (0);
-}
-
-void from_ascii(void)
-{
-    char c;
-    int d;
-    while ((c=getchar())!=EOF)
-    {
-       if (c!='%' || (c=getchar())=='%') putchar(c);
-       else
-       {
-               ungetc(c,stdin);
-               scanf("%2x",&d);
-               *((unsigned char *)&c) = d;
-               putchar(c);
-       }
-    }
-}
-
-void to_ascii(void)
-{
-    char c;
-    int d;
-    while ((c=getchar())!=EOF)
-    {
-       if (isascii(c)) putchar (c);
-       else
-       {
-               d = *((unsigned char *)&c);
-               printf("%%%2x",d);
-       }
-    }
-}
diff --git a/src/tiff/contrib/mac-mpw/port.make b/src/tiff/contrib/mac-mpw/port.make
deleted file mode 100644 (file)
index 492c527..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Tag Image File Format Library
-#
-# Copyright (c) 1995 Sam Leffler
-# Copyright (c) 1995 Silicon Graphics, Inc.
-# 
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-#
-DEPTH= ::
-SRCDIR= :
-
-NULL   =
-CC     = C
-AR     = Lib
-AROPTS = 
-RM= delete -y
-
-IPATH  =  -I {DEPTH} -I {SRCDIR}
-COPTS  = 
-OPTIMIZER=
-CFLAGS =  {COPTS} {OPTIMIZER} {IPATH}
-
-CFILES = 
-OBJECTS        = getopt.c.o
-TARGETS        = libport.o
-
-.c.o %c4 .c
-       {CC} -model far {COptions} {CFLAGS} -s {Default} {DepDir}{Default}.c -o {TargDir}{Default}.c.o
-
-all %c4  {TARGETS}
-
-libport.o %c4  {OBJECTS}
-       {AR} {OBJECTS} -o libport.o
-       
-clean %c4
-       {RM} {TARGETS} {OBJECTS} || set status 0
diff --git a/src/tiff/contrib/mac-mpw/tools.make b/src/tiff/contrib/mac-mpw/tools.make
deleted file mode 100644 (file)
index 13b14e4..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-#
-# Tag Image File Format Library
-#
-# Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 Sam Leffler
-# Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
-# 
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Stanford and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-#
-
-#
-# Makefile for Mac using MPW 3.2.3 and MPW C 3.2.4
-#
-COPTS = -model far
-
-.c.o %c4 .c
-       {C} {COPTS} {CFLAGS} -s {Default} {DepDir}{Default}.c -o {TargDir}{Default}.c.o
-
-RM = delete -y -i
-
-CONF_LIBRARY= %b6
-       -d USE_CONST=0 %b6
-       -d BSDTYPES
-NULL=
-
-IPATH= -I ::libtiff
-
-CFLAGS=        -w -m {IPATH} {CONF_LIBRARY}
-
-LIBPORT= ::port:libport.o
-
-LOptions= -model far -w -srt -d -c 'MPS ' -t MPST
-
-LIBTIFF= ::libtiff:libtiff.o
-
-LIBS=  {LIBTIFF} %b6
-       {LIBPORT} %b6
-       "{CLibraries}"CSANELib.o  %b6
-       "{CLibraries}"Math.o  %b6
-       "{CLibraries}"StdClib.o  %b6
-       "{Libraries}"Stubs.o  %b6
-       "{Libraries}"Runtime.o  %b6
-       "{Libraries}"Interface.o  %b6
-       "{Libraries}"ToolLibs.o  %b6
-       {NULL}
-
-SRCS= %b6
-       pal2rgb.c %b6
-       ras2tiff.c %b6
-       thumbnail.c %b6
-       tiff2bw.c %b6
-       tiff2ps.c %b6
-       tiffcmp.c %b6
-       tiffcp.c %b6
-       tiffdither.c %b6
-       tiffdump.c %b6
-       tiffinfo.c %b6
-       tiffmedian.c %b6
-       {NULL}
-       
-MACHALL=ras2tiff
-
-ALL= %b6
-       tiffinfo  %b6
-       tiffcmp  %b6
-       tiffcp  %b6
-       tiffdump  %b6
-       tiffmedian  %b6
-       tiff2bw  %b6
-       tiffdither  %b6
-       tiff2ps  %b6
-       pal2rgb  %b6
-       gif2tiff  %b6
-       {MACHALL}
-
-all %c4 {ALL}
-
-tiffinfo %c4 tiffinfo.c.o {LIBTIFF} 
-       Link {LOptions} tiffinfo.c.o {LIBS} -o tiffinfo
-       
-tiffcmp %c4 tiffcmp.c.o {LIBTIFF}
-       Link {LOptions} tiffcmp.c.o {LIBS} -o tiffcmp
-       
-tiffcp %c4 tiffcp.c.o {LIBTIFF}
-       Link {LOptions} tiffcp.c.o {LIBS} -o tiffcp
-       
-tiffdump %c4 tiffdump.c.o {LIBTIFF}
-       Link {LOptions} tiffdump.c.o {LIBS} -o tiffdump 
-       
-tiffmedian %c4 tiffmedian.c.o {LIBTIFF}
-       Link {LOptions} tiffmedian.c.o {LIBS} -o tiffmedian
-       
-tiff2ps %c4 tiff2ps.c.o {LIBTIFF}
-       Link {LOptions} tiff2ps.c.o {LIBS} -o tiff2ps
-       
-# junky stuff...
-# convert RGB image to B&W
-tiff2bw %c4 tiff2bw.c.o {LIBTIFF}
-       Link {LOptions} tiff2bw.c.o {LIBS} -o tiff2bw
-       
-# convert B&W image to bilevel w/ FS dithering
-tiffdither %c4 tiffdither.c.o {LIBTIFF}
-       Link {LOptions} tiffdither.c.o {LIBS} -o tiffdither
-       
-# GIF converter
-gif2tiff %c4 gif2tiff.c.o {LIBTIFF}
-       Link {LOptions} gif2tiff.c.o {LIBS} -o gif2tiff
-       
-# convert Palette image to RGB
-pal2rgb %c4 pal2rgb.c.o {LIBTIFF}
-       Link {LOptions} pal2rgb.c.o {LIBS} -o pal2rgb
-       
-# Sun rasterfile converter
-ras2tiff %c4 ras2tiff.c.o {LIBTIFF}
-       Link {LOptions} ras2tiff.c.o {LIBS} -o ras2tiff
-
-# generate thumbnail images from fax
-thumbnail %c4 thumbnail.c.o {LIBTIFF}
-        Link {LOptions} thumbnail.c.o {LIBS} -o thumbnail
-       
-clean %c4
-       {RM} {ALL} %c5.c.o ycbcr
diff --git a/src/tiff/contrib/mac-mpw/top.make b/src/tiff/contrib/mac-mpw/top.make
deleted file mode 100644 (file)
index 5a6a29b..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-#
-# Tag Image File Format Library
-#
-# Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994 Sam Leffler
-# Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
-# 
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Stanford and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-#
-
-#
-# Makefile for Mac using MPW 3.2.3 and MPW C 3.2.4
-#
-#
-#  Written by: Niles D. Ritter
-#
-
-RM= delete -y -i
-PORT=:port:
-LIBTIFF=:libtiff:
-TOOLS=:tools:
-CONTRIB=:contrib:mac-mpw:
-
-MACTRANS="{CONTRIB}mactrans"
-
-NULL=
-
-MAKEFILES = %b6
-       {PORT}Makefile %b6
-       {LIBTIFF}Makefile %b6
-       {TOOLS}Makefile %b6
-       {NULL}
-       
-all %c4 PORT LIBTIFF TOOLS
-
-MAKEFILES %c4 {MAKEFILES}
-TOOLS %c4 LIBTIFF
-
-LIBTIFF %c4 PORT
-
-# Create the port routines
-PORT %c4 {PORT}Makefile
-       directory {PORT}
-       (make || set status 0) > build.mpw
-       set echo 1
-       execute build.mpw
-       set echo 0
-       {RM} build.mpw  || set status 0
-       directory ::
-
-# Create the port routines
-LIBTIFF %c4 {LIBTIFF}Makefile
-       directory {LIBTIFF}
-       (make || set status 0) > build.mpw
-       set echo 1
-       execute build.mpw
-       set echo 0
-       {RM} build.mpw  || set status 0
-       directory ::
-
-# Create the tools
-TOOLS %c4 {TOOLS}Makefile
-       directory {TOOLS}
-       (make || set status 0) > build.mpw
-       set echo 1
-       execute build.mpw
-       set echo 0
-       {RM} build.mpw  || set status 0
-       directory ::
-
-# Makefile dependencies
-{PORT}Makefile  %c4 {CONTRIB}port.make
-       catenate {CONTRIB}port.make | {MACTRANS} > {PORT}Makefile
-
-{LIBTIFF}Makefile  %c4 {CONTRIB}libtiff.make
-       catenate {CONTRIB}libtiff.make | {MACTRANS} > {LIBTIFF}Makefile
-
-{TOOLS}Makefile  %c4 {CONTRIB}tools.make
-       catenate {CONTRIB}tools.make | {MACTRANS} > {TOOLS}Makefile
-
-
-clean %c4  clean.port clean.contrib clean.libtiff clean.tools clean.make
-
-clean.port %c4
-       directory {PORT}
-       (make clean || set status 0) > purge
-       purge
-       {RM} purge  || set status 0
-       {RM} Makefile || set status 0
-       {RM} build.mpw || set status 0
-       cd ::
-
-clean.contrib %c4
-       {RM} {MACTRANS} || set status 0
-       
-clean.libtiff %c4
-       directory {LIBTIFF}
-       (make clean || set status 0) > purge
-       purge
-       {RM} purge  || set status 0
-       {RM} Makefile || set status 0
-       {RM} build.mpw || set status 0
-       cd ::
-
-clean.tools %c4
-       directory {TOOLS}
-       (make clean || set status 0) > purge
-       purge
-       {RM} purge  || set status 0
-       {RM} Makefile || set status 0
-       {RM} build.mpw || set status 0
-       cd ::
-
-clean.make %c4
-       {RM} {MAKEFILES} || set status 0
-       {RM} build.mpw || set status 0
-
index a6e06747afa5741a00e9f3a2e1a0f28be8b93ee0..37ac4c25acbf3ce04a67a6318702932beb21bd70 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/mfs
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README mfs_file.c
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/mfs/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/mfs/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/mfs/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/mfs/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 53a7c4c205365c14968aa155b4b17cb70993de4e..6675e2a38ac7bc418423aa5dbb5d263ae81b37c5 100644 (file)
@@ -577,3 +577,10 @@ static void mem_init ()
     }
 }
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/contrib/ojpeg/Makefile.am b/src/tiff/contrib/ojpeg/Makefile.am
deleted file mode 100644 (file)
index b33e05e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-
-EXTRA_DIST = README jdhuff_add.c
-
diff --git a/src/tiff/contrib/ojpeg/Makefile.in b/src/tiff/contrib/ojpeg/Makefile.in
deleted file mode 100644 (file)
index efc2694..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  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@
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and 
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-# 
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
-# 
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
-# OF THIS SOFTWARE.
-
-# Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = contrib/ojpeg
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
-       $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
-       $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-       $(ACLOCAL_M4)
-mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
-       $(top_builddir)/libtiff/tiffconf.h
-CONFIG_CLEAN_FILES =
-SOURCES =
-DIST_SOURCES =
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-FGREP = @FGREP@
-GLUT_CFLAGS = @GLUT_CFLAGS@
-GLUT_LIBS = @GLUT_LIBS@
-GLU_CFLAGS = @GLU_CFLAGS@
-GLU_LIBS = @GLU_LIBS@
-GL_CFLAGS = @GL_CFLAGS@
-GL_LIBS = @GL_LIBS@
-GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBDIR = @LIBDIR@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@
-LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@
-LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@
-LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@
-LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@
-LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
-LIBTIFF_VERSION = @LIBTIFF_VERSION@
-LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-NM = @NM@
-OBJDUMP = @OBJDUMP@
-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@
-PTHREAD_CC = @PTHREAD_CC@
-PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
-PTHREAD_LIBS = @PTHREAD_LIBS@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-X_CFLAGS = @X_CFLAGS@
-X_EXTRA_LIBS = @X_EXTRA_LIBS@
-X_LIBS = @X_LIBS@
-X_PRE_LIBS = @X_PRE_LIBS@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-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@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-lt_ECHO = @lt_ECHO@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_os = @target_os@
-target_vendor = @target_vendor@
-EXTRA_DIST = README jdhuff_add.c
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-       @for dep in $?; do \
-         case '$(am__configure_deps)' in \
-           *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
-             exit 1;; \
-         esac; \
-       done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/ojpeg/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/ojpeg/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-       @case '$?' in \
-         *config.status*) \
-           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-         *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-       esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-mostlyclean-libtool:
-       -rm -f *.lo
-
-clean-libtool:
-       -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-tags: TAGS
-TAGS:
-
-ctags: CTAGS
-CTAGS:
-
-
-distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
-         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
-         if test -d $$d/$$file; then \
-           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-           fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-         else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
-           || exit 1; \
-         fi; \
-       done
-check-am: all-am
-check: check-am
-all-am: Makefile
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-       -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."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-       -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-       -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: all all-am check check-am clean clean-generic clean-libtool \
-       distclean distclean-generic distclean-libtool distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/src/tiff/contrib/ojpeg/README b/src/tiff/contrib/ojpeg/README
deleted file mode 100644 (file)
index 548902d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-For the broadest possible support for OJPEG files the following steps are 
-necessary:
-
- o Ensure you are able to build with JPEG support (see config.site).
-
- o Uncomment OJPEG="yes" statement in config.site file or
-   #define OJPEG_SUPPORT somewhere.  This can be put in tiffconf.h for
-   instance.
-
- o Append the jdhuff_add.c code to the end of jdhuff.c within the IJG JPEG
-   libraries jdhuff.c file and recompile libjpeg (jpeg-6b tested).
-
- o Rebuild cleanly.
-
-
-OJPEG support implemented by Scott Marovich at HP (marovich@hpl.hp.com).
-
----
-
-For notes on further improved JPEG-in-TIFF support also see the following
-bug in bugzilla:
-
-  http://bugzilla.remotesensing.org/show_bug.cgi?id=156
diff --git a/src/tiff/contrib/ojpeg/jdhuff_add.c b/src/tiff/contrib/ojpeg/jdhuff_add.c
deleted file mode 100644 (file)
index 8d4221b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * BEWARE OF KLUDGE:  This subroutine is a hack for decoding illegal JPEG-in-
- *                    TIFF encapsulations produced by Microsoft's Wang Imaging
- * for Windows application with the public-domain TIFF Library.  Based upon an
- * examination of selected output files, this program apparently divides a JPEG
- * bit-stream into consecutive horizontal TIFF "strips", such that the JPEG
- * encoder's/decoder's DC coefficients for each image component are reset before
- * each "strip".  Moreover, a "strip" is not necessarily encoded in a multiple
- * of 8 bits, so one must sometimes discard 1-7 bits at the end of each "strip"
- * for alignment to the next input-Byte storage boundary.  IJG JPEG Library
- * decoder state is not normally exposed to client applications, so this sub-
- * routine provides the TIFF Library with a "hook" to make these corrections.
- * It should be called after "jpeg_start_decompress()" and before
- * "jpeg_finish_decompress()", just before decoding each "strip" using
- * "jpeg_read_raw_data()" or "jpeg_read_scanlines()".
- *
- * This kludge is not sanctioned or supported by the Independent JPEG Group, and
- * future changes to the IJG JPEG Library might invalidate it.  Do not send bug
- * reports about this code to IJG developers.  Instead, contact the author for
- * advice: Scott B. Marovich <marovich@hpl.hp.com>, Hewlett-Packard Labs, 6/01.
- */
-GLOBAL(void)
-jpeg_reset_huff_decode (register j_decompress_ptr cinfo,register float *refbw)
-{ register huff_entropy_ptr entropy = (huff_entropy_ptr)cinfo->entropy;
-  register int ci = 0;
-
-  /* Re-initialize DC predictions */
-  do entropy->saved.last_dc_val[ci] = -refbw[ci << 1];
-  while (++ci < cinfo->comps_in_scan);
-  /* Discard encoded input bits, up to the next Byte boundary */
-  entropy->bitstate.bits_left &= ~7;
-}
index 07be12d4ecceebc5f3dcb015296dbf5797e310e0..ddcab31b9b1713bbcfdd8e41f1b86d465e9a7f8c 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/pds
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README tif_imageiter.c tif_imageiter.h tif_pdsdirread.c tif_pdsdirwrite.c
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/pds/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/pds/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/pds/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/pds/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index c2c67ac087ba85a57cef3be86b57dcf2260f93aa..e025dc52347e24049558557d2738cf31d3a17342 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_imageiter.c,v 1.3 2005/12/21 12:23:13 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_imageiter.c,v 1.4 2010-06-08 18:55:15 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1991-1996 Sam Leffler
@@ -516,3 +516,10 @@ main(int argc, char **argv)
     
 }
 #endif
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 5b7ea40ac5dff5b58ac8288e726d3b1bcd5db379..e7dbe46cc476f369e2eb4a5c4272a0bd1575cb73 100644 (file)
@@ -55,3 +55,10 @@ struct _TIFFImageIter {
            ImageIterTileSeparateRoutine        separate;
        } callback;                             /* fn to exec for each block */
 };
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index ce197d5eec8e371c3068bd62b84975979b77f180..37e513ae334b130caf63a36d3922f8fffcf1b1ce 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_pdsdirread.c,v 1.3 2005/12/21 12:23:13 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_pdsdirread.c,v 1.4 2010-06-08 18:55:15 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1996 Sam Leffler
@@ -1122,3 +1122,10 @@ ChopUpSingleUncompressedStrip(TIFF* tif)
        td->td_stripoffset = newoffsets;
 }
 #endif /* STRIPCHOP_SUPPORT */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 9a80c04c3202299643b6cbe8cfd0845a6eb5d2b9..3c632da695d6155af24ce224a4450667100907ac 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_pdsdirwrite.c,v 1.3 2005/12/21 12:23:13 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/contrib/pds/tif_pdsdirwrite.c,v 1.4 2010-06-08 18:55:15 bfriesen Exp $ */
 
 /* When writing data to TIFF files, it is often useful to store application-
    specific data in a private TIFF directory so that the tags don't need to
@@ -962,3 +962,10 @@ TIFFLinkDirectory(TIFF* tif)
        }
        return (1);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 7d6ae4967c22818d3c72768a7ff6892b45247d43..602ae86428a88702cdcb12173e64eb1a5d5c763d 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/ras
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README ras2tif.c tif2ras.c
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/ras/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/ras/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/ras/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/ras/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index b11b879982a564d437db6573196a6ba6fff6c858..c44b313e348ea28ac6c588e66f729720d103bf5f 100644 (file)
@@ -245,3 +245,10 @@ main(argc, argv)
 
     exit(0);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index c28904b6b3b0b5f579650436d7a2072388dc43c2..45b9bce45359d954b01caf9092eb9d3bf7dc5061 100644 (file)
@@ -335,3 +335,10 @@ main(argc, argv)
 
     exit(0);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 3801ad76ef4a450060bb68d1f519d0d87c7920d7..67d5f93ecfa329e04ea86954b99b76b7ee277adf 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/stream
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README tiffstream.cpp tiffstream.h
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/stream/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/stream/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/stream/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/stream/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 98eb2299817a6529fd98665fb5f6788ec9278dbf..ffff687581eb06271c5d73969b1407b1673cfc51 100644 (file)
@@ -229,4 +229,10 @@ TiffStream::isOpen(thandle_t fd)
        return (ts->m_inStream != NULL ||
                   ts->m_outStream != NULL ||
                   ts->m_ioStream != NULL);
-}
\ No newline at end of file
+}/*
+ * Local Variables:
+ * mode: c++
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 58f9e035ea3e90d527255206672292bdb788e9b3..a583ae24b2807205f3500ffbe1995d30391a3127 100644 (file)
@@ -60,4 +60,11 @@ private:
        
 };
 
-#endif // _TIFF_STREAM_H_
\ No newline at end of file
+#endif // _TIFF_STREAM_H_
+/*
+ * Local Variables:
+ * mode: c++
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index a5ba8a0323ea7e3c9615bec003ebbda125786cfd..f32615010f3c850cf3cf58c6b7917bb908124a31 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/tags
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = README listtif.c maketif.c xtif_dir.c xtiffio.h xtiffiop.h
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/tags/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/tags/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/tags/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/tags/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 2ea12cea715d236399e4e2e3972c9c6cb1ac6366..605de84377dfa0b738c8dc3bf33d5bfb67f6e029 100644 (file)
@@ -30,3 +30,10 @@ failure:
        exit (-1);
 }
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 99a9ef037a4b484abc1cc08ba73455e7ba9f11e4..e965201a60c3a0f485ce445379dc38eca188a515 100644 (file)
@@ -68,3 +68,10 @@ void WriteImage(TIFF *tif)
 
 
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 7b9ef915885da983815ba363fe6f8a3cf5936d4d..e67a6abf78909846e50afa8c4b4f302da9e22115 100644 (file)
@@ -341,3 +341,10 @@ XTIFFClose(TIFF *tif)
        _XTIFFFreeDirectory(xt);
        _TIFFfree(xt);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 2aea724d62b1aab0fc2ab56595d57d547231e754..e8600df0702c0fd3ba51e99a4d17d68dd0f5738f 100644 (file)
@@ -50,3 +50,10 @@ extern void  XTIFFClose(TIFF *tif);
 
 #endif /* __xtiffio_h */
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 0d3f1f2cc9ebffe16cf7fa2b6ca7f6a18e3f77f4..9d534a8343b4ea4ceb4f7e87930df859c6771ce6 100644 (file)
@@ -63,3 +63,10 @@ typedef struct xtiff xtiff;
 #define XTIFF_INITIALIZED 0x80000000
        
 #endif /* __xtiffiop_h */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 30399c8067b88868979c0165b6b958f628240953..b58adf644752c44bad87469e6b4d229d0697d1e0 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,27 +74,44 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = contrib/win_dib
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -100,6 +131,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -114,12 +146,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -138,20 +165,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -163,62 +195,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 EXTRA_DIST = Makefile.w95 README.Tiffile README.tiff2dib Tiffile.cpp tiff2dib.c
 all: all-am
 
@@ -227,14 +263,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  contrib/win_dib/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  contrib/win_dib/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/win_dib/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign contrib/win_dib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -252,47 +288,49 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -310,16 +348,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -330,7 +374,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -338,18 +382,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -368,17 +432,21 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
-       install-info install-info-am install-man install-strip \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-info-am
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 6e371d3dd01b202f92db66e2585f607860eb1c7a..9d958b1c8eec3e4b3b8223cded0fd1dcab3d5b82 100644 (file)
@@ -440,3 +440,10 @@ getStripContig1Bit(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
     return (ret);
 }
 
+/*
+ * Local Variables:
+ * mode: c++
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index f5d4040f8708f66bf81d20e285b5bc9b5c1ab06f..475ef304a18ac2d2d3b8dc762c83b6dbfda8bd38 100644 (file)
@@ -370,3 +370,10 @@ WORD DIBNumColors(LPSTR lpDIB)
       return 0;
       }
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 6941dfb0eec0d7d61b55b0f82956f4284f8156f7..8cb6706cb592dce43d8195be4e589534d77bfcf4 100644 (file)
@@ -1,4 +1,3 @@
-# $Id: Makefile.am,v 1.16 2006/03/23 14:54:01 dron Exp $
 #
 # Tag Image File Format (TIFF) Software
 #
@@ -73,7 +72,13 @@ docfiles = \
        v3.7.4.html \
        v3.8.0.html \
        v3.8.1.html \
-       v3.8.2.html
+       v3.8.2.html \
+       v3.9.0beta.html \
+       v3.9.1.html \
+       v3.9.2.html \
+       v4.0.0.html \
+       v4.0.1.html \
+       v4.0.2.html
 
 dist_doc_DATA = $(docfiles)
 
index 7aa9f826b4168f4b591dc41b2e9efa7aa5bf5c58..9bb4c60a7fb5244873a3c80fbd3366a7c1a3f04b 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
@@ -14,7 +14,6 @@
 
 @SET_MAKE@
 
-# $Id: Makefile.in,v 1.46 2006/03/23 14:54:01 dron Exp $
 #
 # Tag Image File Format (TIFF) Software
 #
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -63,46 +76,113 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = html
 DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
+       $(srcdir)/Makefile.in $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
        html-recursive info-recursive install-data-recursive \
-       install-exec-recursive install-info-recursive \
-       install-recursive installcheck-recursive installdirs-recursive \
-       pdf-recursive ps-recursive uninstall-info-recursive \
-       uninstall-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
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(docdir)"
-dist_docDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_doc_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
+  distclean-recursive maintainer-clean-recursive
+AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
+       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+       distdir
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+am__relativize = \
+  dir0=`pwd`; \
+  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
+  sed_rest='s,^[^/]*/*,,'; \
+  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
+  sed_butlast='s,/*[^/]*$$,,'; \
+  while test -n "$$dir1"; do \
+    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
+    if test "$$first" != "."; then \
+      if test "$$first" = ".."; then \
+        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
+        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
+      else \
+        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
+        if test "$$first2" = "$$first"; then \
+          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
+        else \
+          dir2="../$$dir2"; \
+        fi; \
+        dir0="$$dir0"/"$$first"; \
+      fi; \
+    fi; \
+    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
+  done; \
+  reldir="$$dir2"
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -122,6 +202,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -136,12 +217,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -160,20 +236,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -185,63 +266,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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 = $(LIBTIFF_DOCDIR)/html
+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@
-lt_ECHO = @lt_ECHO@
 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@
-docdir = $(LIBTIFF_DOCDIR)/html
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 docfiles = \
        addingtags.html \
        bugs.html \
@@ -288,7 +372,13 @@ docfiles = \
        v3.7.4.html \
        v3.8.0.html \
        v3.8.1.html \
-       v3.8.2.html
+       v3.8.2.html \
+       v3.9.0beta.html \
+       v3.9.1.html \
+       v3.9.2.html \
+       v4.0.0.html \
+       v4.0.1.html \
+       v4.0.2.html
 
 dist_doc_DATA = $(docfiles)
 SUBDIRS = images man
@@ -299,14 +389,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  html/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  html/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign html/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign html/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -324,42 +414,43 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 install-dist_docDATA: $(dist_doc_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-         $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
        done
 
 uninstall-dist_docDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(docdir)/$$f"; \
-       done
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
 
 # 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'; \
+# 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) $(RECURSIVE_CLEAN_TARGETS):
+       @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
            *=* | --[!k]*);; \
@@ -368,7 +459,11 @@ $(RECURSIVE_TARGETS):
        done; \
        dot_seen=no; \
        target=`echo $@ | sed s/-recursive//`; \
-       list='$(SUBDIRS)'; for subdir in $$list; do \
+       case "$@" in \
+         distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+         *) list='$(SUBDIRS)' ;; \
+       esac; \
+       for subdir in $$list; do \
          echo "Making $$target in $$subdir"; \
          if test "$$subdir" = "."; then \
            dot_seen=yes; \
@@ -376,51 +471,23 @@ $(RECURSIVE_TARGETS):
          else \
            local_target="$$target"; \
          fi; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+         ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
          || eval $$failcom; \
        done; \
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-       @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); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
        done
 ctags-recursive:
        list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+       done
+cscopelist-recursive:
+       list='$(SUBDIRS)'; for subdir in $$list; do \
+         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
        done
 
 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
@@ -428,14 +495,14 @@ ID: $(HEADERS) $(SOURCES) $(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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
          include_option=--etags-include; \
@@ -447,81 +514,112 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        list='$(SUBDIRS)'; for subdir in $$list; do \
          if test "$$subdir" = .; then :; else \
            test ! -f $$subdir/TAGS || \
-             tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+             set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
-       list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+       @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 && \
+           $(am__make_dryrun) \
+             || test -d "$(distdir)/$$subdir" \
+             || $(MKDIR_P) "$(distdir)/$$subdir" \
+             || exit 1; \
+           dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
+           $(am__relativize); \
+           new_distdir=$$reldir; \
+           dir1=$$subdir; dir2="$(top_distdir)"; \
+           $(am__relativize); \
+           new_top_distdir=$$reldir; \
+           echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
+           echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
+           ($(am__cd) $$subdir && \
              $(MAKE) $(AM_MAKEFLAGS) \
-               top_distdir="$$top_distdir" \
-               distdir="$$distdir/$$subdir" \
+               top_distdir="$$new_top_distdir" \
+               distdir="$$new_distdir" \
+               am__remove_distdir=: \
+               am__skip_length_check=: \
+               am__skip_mode_fix=: \
                distdir) \
              || exit 1; \
          fi; \
@@ -532,7 +630,7 @@ all-am: Makefile $(DATA)
 installdirs: installdirs-recursive
 installdirs-am:
        for dir in "$(DESTDIR)$(docdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-recursive
 install-exec: install-exec-recursive
@@ -544,16 +642,22 @@ install-am: all-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
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -564,8 +668,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-recursive
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-       distclean-tags
+distclean-am: clean-am distclean-generic distclean-tags
 
 dvi: dvi-recursive
 
@@ -573,18 +676,38 @@ dvi-am:
 
 html: html-recursive
 
+html-am:
+
 info: info-recursive
 
 info-am:
 
 install-data-am: install-dist_docDATA
 
+install-dvi: install-dvi-recursive
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-recursive
+
+install-html-am:
+
 install-info: install-info-recursive
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-recursive
+
+install-pdf-am:
+
+install-ps: install-ps-recursive
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -603,23 +726,27 @@ ps: ps-recursive
 
 ps-am:
 
-uninstall-am: uninstall-dist_docDATA uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
-       clean clean-generic clean-libtool clean-recursive ctags \
-       ctags-recursive distclean distclean-generic distclean-libtool \
-       distclean-recursive distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-dist_docDATA install-exec \
-       install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       maintainer-clean-recursive mostlyclean mostlyclean-generic \
-       mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
-       tags tags-recursive uninstall uninstall-am \
-       uninstall-dist_docDATA uninstall-info-am
+uninstall-am: uninstall-dist_docDATA
+
+.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
+       cscopelist-recursive ctags-recursive install-am install-strip \
+       tags-recursive
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+       all all-am check check-am clean clean-generic clean-libtool \
+       cscopelist cscopelist-recursive ctags ctags-recursive \
+       distclean distclean-generic distclean-libtool distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dist_docDATA \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
+       uninstall uninstall-am uninstall-dist_docDATA
+
 
 # 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.
index 9eeb8a55dc95116d3899f3062754182cf2ba2823..f09b7550b92f37a9902203bfef1c3ae1876aced9 100644 (file)
@@ -14,16 +14,26 @@ This software is free.  Please let us know when you find a problem or
 fix a bug.
 
 <P>
-Thanks to <A HREF=http://www.remotesensing.org/>remotesensing.org</a>, libtiff now uses bugzilla to track bugs. 
+Thanks to <A HREF=http://www.maptools.org/>MapTools.org</a>, libtiff now uses
+bugzilla to track bugs.  All bugs filed in the older bugzilla at
+bugzilla.remotesensing.org (pre April 2008) have unfortunately been lost. 
 <P>
 If you think you've discovered a bug, please first check to see if it is 
 already known by looking at the list of already reported bugs.  You can do so 
 by visiting the buglist at 
-<A HREF=http://bugzilla.remotesensing.org/buglist.cgi?product=libtiff>http://bugzilla.remotesensing.org/buglist.cgi?product=libtiff</A>.  Also verify that 
+<A HREF=http://bugzilla.maptools.org/buglist.cgi?product=libtiff>http://bugzilla.maptools.org/buglist.cgi?product=libtiff</A>.  Also verify that 
 the problem is still reproducable with the current development software 
 from CVS. 
-<p>
-If you'd like to enter a new bug, you can do so at <A HREF=http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff>http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff</A>.  
+<P>
+If you'd like to enter a new bug, you can do so at
+<A HREF=http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff>http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff</A>.  
+<P>
+If you'd like to inform us about some kind of security issue that should not
+be disclosed for a period of time, then you can contact maintainers directly.
+Send a copies of your report to the following people: Frank Warmerdam
+<a href="mailto:warmerdam@pobox.com">&lt;warmerdam@pobox.com&gt;</a>,
+Andrey Kiselev
+<a href="mailto:dron@ak4719.spb.edu">&lt;dron@ak4719.spb.edu&gt;</a>.
 <P>
 
 Of course, reporting bugs is no substitute for discussion.  The 
@@ -48,6 +58,6 @@ Systems</a>. <p>
 
 <HR>
 
-Last updated: $Date: 2005/07/26 14:43:24 $
+Last updated: $Date: 2008/09/03 08:05:04 $
 </BODY>
 </HTML>
index e0b21575c0b512f0c09dba999a79d89aefce885b..ad8e1893de783e06adf3296de0051d12db01a2fe 100644 (file)
@@ -2,7 +2,7 @@
 <html>
 <head>
 <meta name="generator" content=
-"HTML Tidy for Solaris (vers 12 April 2005), see www.w3.org">
+"HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
 <title>Building the TIFF Software Distribution</title>
 </head>
 <body bgcolor="white">
 "1" hspace="6"> Building the Software Distribution</font></h1>
 <ul>
 <li><a href="#UNIX">Building on a UNIX system</a>.</li>
-<li><a href="#MacMPW">Building on a Macintosh system with
-MPW</a>.</li>
-<li><a href="#MacCW">Building on a Macintosh system with
-CodeWarrior</a>.</li>
 <li><a href="#PC">Building on an MS-DOS or Windows system</a>.</li>
-<li><a href="#DJGPP">Building on MS-DOS with the DJGPP v2
-compiler</a>.</li>
 <li><a href="#VMS">Building on a VMS system</a>.</li>
-<li><a href="#Acorn">Building on an Acorn RISC OS system</a>.</li>
 <li><a href="#Other">Building the Software on Other
 Systems</a></li>
 </ul>
@@ -27,9 +20,9 @@ Systems</a></li>
 This chapter contains step-by-step instructions on how to configure
 and build the TIFF software distribution. The software is most
 easily built on a UNIX system, but with a little bit of work it can
-easily be built and used on other non-UNIX platforms. <a name=
-"UNIX" id="UNIX"></a>
+easily be built and used on other non-UNIX platforms.
 <hr>
+<a name="UNIX" id="UNIX"></a>
 <h2>Building on a UNIX System</h2>
 To build the software on a UNIX system you need to first run the
 configure shell script that is located in the top level of the
@@ -40,25 +33,23 @@ simply run <tt>make</tt> (or <tt>gmake</tt>) to build the software
 and then <tt>make install</tt> to do the installation; for example:
 <div style="margin-left: 2em">
 <pre>
-hyla% <b>cd tiff-v3.4beta099</b>
+hyla% <b>cd ./tiff-4.0.0</b>
 hyla% <b>./configure</b>
     <i>...lots of messages...</i>
 hyla% <b>make</b>
     <i>...lots of messages...</i>
+hyla% <b>make check</b>
+    <i>...lots of messages...</i>
 hyla# <b>make install</b>
 </pre></div>
-Supplied makefiles are depend on GNU <tt>make</tt> utility, so you
-will need the one. Depending on your installation <b>make</b>
-command may invoke standard system <tt>make</tt> and <b>gmake</b>
-invoke GNU make. In this case you should use former. If you don't
-have <tt>make</tt> at all, but only <tt>gmake</tt>, you should
-export environment variable <tt>MAKE=gmake</tt> before
-<b>./configure</b>.
+Supplied makefiles are dependent on a <tt>make</tt> utility and a C
+(and optionally a C++ compiler), so you will need these tools.
 <p>In general, the software is designed such that the following
 should be ``<i>make-able</i>'' in each directory:</p>
 <div style="margin-left: 2em">
 <pre>
 make [all]      build stuff
+make check      run the test suite
 make install    build&amp;install stuff
 make clean      remove .o files, executables and cruft
 make distclean  remove everything, that can be recreated
@@ -75,28 +66,34 @@ can configure the software so that it is built in the same
 directories as the source code.
 <div style="margin-left: 2em">
 <pre>
-hyla% <b>cd tiff-v3.4beta099</b>
-hyla% <b>ls</b>
-COPYRIGHT       VERSION         config.sub      dist            man
-Makefile.in     config.guess    configure       html            port
-README          config.site     contrib         libtiff         tools
+hyla% <b>gzip -dc tiff-4.0.0.tar.gz | tar -xf -</b>
+hyla% <b>cd ./tiff-4.0.0</b>
 hyla% <b>./configure</b>
+hyla% <b>make</b>
+hyla% <b>make check</b>
+hyla% <b>make install</b>
 </pre></div>
 <p>Otherwise, you can configure a build tree that is parallel to
-the source tree hierarchy but which contains only configured files
-and files created during the build procedure.</p>
+the source tree hierarchy (or in some completely different place)
+but which contains only configured files and files created during
+the build procedure.</p>
 <div style="margin-left: 2em">
 <pre>
-hyla% <b>cd tiff-v3.4beta099</b>
-hyla% <b>mkdir obj obj/mycpu</b>
-hyla% <b>cd obj/mycpu</b>
-hyla% <b>../../configure</b>
+hyla% <b>gzip -dc tiff-4.0.0.tar.gz | tar -xf -</b>
+hyla% <b>mkdir tiff-4.0.0-build</b>
+hyla% <b>cd ./tiff-4.0.0-build</b>
+hyla% <b>../tiff-4.0.0/configure</b>
+hyla% <b>make</b>
+hyla% <b>make check</b>
+hyla% <b>make install</b>
 </pre></div>
 This second scheme is useful for:
 <ul>
 <li>building multiple targets from a single source tree</li>
 <li>building from a read-only source tree (e.g. if you receive the
 distribution on CD-ROM)</li>
+<li>sharing the source files via a network, but building on
+multiple systems</li>
 </ul>
 <a name="ConfigOptions" id="ConfigOptions"></a>
 <hr width="65%" align="right">
@@ -117,8 +114,8 @@ the directories where the software is to be installed. By default
 the software is installed in the <b>/usr/local</b> hierarchy. To
 change this behaviour the appropriate parameters can be specified
 on the command line to configure. Run <b>./configure --help</b> to
-get a list of possible options. Installation related options are
-shown below.</p>
+get a full list of possible options. Standard installation related
+options are shown below.</p>
 <pre>
 <tt>
 Installation directories:
@@ -135,18 +132,21 @@ 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]
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/tiff]
+  --htmldir=DIR           html documentation [DOCDIR]
 
 Program names:
   --program-prefix=PREFIX            prepend PREFIX to installed program names
@@ -173,10 +173,17 @@ shared libraries can significantly reduce the disk space needed for
 users of the TIFF software. If shared libarries are not used then
 the code is statically linked into each application that uses it.
 By default both types of binaries is configured.</p>
-<p><tt>--enable-rpath&nbsp;&nbsp;&nbsp;&nbsp;Enable runtime linker
-paths (-R libtool option)</tt></p>
+<p>
+<tt>--enable-rpath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable
+runtime linker paths (-R libtool option)</tt></p>
 <p>Add library directories (see other options below) to the TIFF
 library run-time linker path.</p>
+<p><tt>--enable-ld-version-script&nbsp;&nbsp;Enable linker version
+script (default is disabled)</tt></p>
+<p>Add shared library symbol versioning on ELF-based systems (e.g.
+Linux and FreeBSD) which use the GNU linker. This is needed if
+several major versions of libtiff might be loaded at once into the
+same program.</p>
 </dd>
 <dt><i>JPEG Support</i></dt>
 <dd><tt>--disable-jpeg&nbsp;&nbsp;&nbsp;&nbsp;disable IJG JPEG
@@ -189,245 +196,25 @@ library binary)</tt></dd>
 TIFF images with JPEG-encoded data. Support for JPEG-encoded data
 requires the Independent JPEG Group (IJG) <tt>libjpeg</tt>
 distribution; this software is available at <a href=
-"ftp://ftp.uu.net/graphics/jpeg/">ftp.uu.net:/graphics/jpeg/</a>.
-<b>configure</b> script automatically tries to search the working
-IJG JPEG installation. If it fails to find library, JPEG support
-will be automatically disabled.If you want specify the exact paths
-to library binary and headers, use above switches for that.</dd>
+"http://www.ijg.org/">http://www.ijg.org/</a>. <b>configure</b>
+script automatically tries to search for a working IJG JPEG
+installation. If it fails to find library, JPEG support will be
+automatically disabled.If you want specify the exact paths to
+library binary and headers, use above switches for that.</dd>
 <dt><i>ZIP Support</i></dt>
 <dd>The <tt>ZIP</tt> support enables support for the handling of
 TIFF images with deflate-encoded data. Support for deflate-encoded
 data requires the freely available <tt>zlib</tt> distribution
 written by Jean-loup Gailly and Mark Adler; this software is
 available at <a href=
-"ftp://ftp.uu.net/pub/archiving/zip/zlib/">ftp.uu.net:/pub/archiving/zip/zlib/</a>
-(or try <a href=
-"ftp://quest.jpl.nasa.gov/beta/zlib/">quest.jpl.nasa.gov:/beta/zlib/</a>).
-If ZIP support is enabled the <tt>DIRS_LIBINC</tt> and
-<tt>DIR_GZLIB</tt> parameters should also be set (see below). By
-default this package is not configured.</dd>
+"http://www.zlib.org/">http://www.zlib.org/</a>. If ZIP support is
+enabled the <tt>DIRS_LIBINC</tt> and <tt>DIR_GZLIB</tt> parameters
+should also be set (see below). By default this package is not
+configured.</dd>
 </dl>
 <a name="Sample" id="Sample"></a>
 <hr width="65%" align="right">
-<h3>A Sample Configuration Session</h3>
-This section shows a sample configuration session and describes the
-work done. The session is shown indented in a <tt>fixed width
-font</tt> with user-supplied input in a <tt><b>bold font</b></tt>.
-Comments are shown in a normal or <i>italic</i> font. This session
-was collected on a 486 machine running BSDI 1.1.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-wullbrandt% <b>mkdir tiff</b>
-wullbrandt% <b>cd tiff</b>
-wullbrandt% <b>ln -s /hosts/oxford/usr/people/sam/tiff src</b>
-</tt>
-</pre></div>
-A build tree separate from the source tree is used here. In fact,
-in this case the distribution is accessed from a read-only
-NFS-mounted filesystem.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-wullbrandt% <b>src/configure</b>
-Configuring TIFF Software v3.4beta015.
-
-Reading site-wide parameters from ../tiff-v3.4beta015/config.site.
-Reading local parameters from config.local.
-Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system!
-</tt>
-</pre></div>
-Note that configure announces the distribution version and the
-deduced target configuration (<tt>i386-unknown-bsdi1.1</tt> here).
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Using /usr/local/bin/gcc for a C compiler (set CC to override).
-Looks like /usr/local/bin/gcc supports the -g option.
-Using " -g" for C compiler options.
-</tt>
-</pre></div>
-configure checked the normal shell search path for potential ANSI C
-compilers. The compiler is selected according to it properly
-compiling a small ANSI C test program. A specific compiler may be
-requested by setting the <tt>CC</tt> environment variable to the
-appropriate pathname, by supplying the parameter on the command
-line, e.g. <tt>-with-CC=gcc</tt>, or by setting <tt>CC</tt> in a
-configuration file.
-<p><img src="images/info.gif" align="left" hspace="10"> <em>Note
-that an ANSI C compiler is required to build the software. If a C
-compiler requires options to enable ANSI C compilation, they can be
-specified with the <tt>ENVOPTS</tt> parameter.</em></p>
-<p>Once a compiler is selected configure checks to see if the
-compiler accepts a -g option to enable the generation of debugging
-symbols, and if the compiler includes an ANSI C preprocessor.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Using /usr/ucb/make to configure the software.
-</tt>
-</pre></div>
-Next various system-specific libraries that may or may not be
-needed are checked for (none are needed in this case). If your
-system requires a library that is not automatically included it can
-be specified by setting the <tt>MACHDEPLIBS</tt> parameter.
-<p><i>Creating port.h.</i> The <b>port.h</b> file is included by
-all the C code in the library (but not the tools). It includes
-definitions for functions and type definitions that are missing
-from system include files, <tt>#defines</tt> to enable or disable
-system-specific functionality, and other odds and ends.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Creating libtiff/port.h with necessary definitions.
-... using LSB2MSB bit order for your i386 cpu
-... using big-endian byte order for your i386 cpu
-... configure use of mmap for memory-mapped files
-... O_RDONLY is in &lt;fcntl.h&gt;
-... using double for promoted floating point parameters
-... enabling use of inline functions
-Done creating libtiff/port.h.
-</tt>
-</pre></div>
-This file can take a long time to create so configure generates the
-file only when it is needed, either because the file does not exist
-or because a different target or compiler is to be used. Note that
-running "<tt>make distclean</tt>" in the top-level directory of the
-build tree will remove the <b>port.h</b> file (along with all the
-other files generated by configure).
-<p><i>Selecting emulated library functions.</i> Certain library
-functions used by the tools are not present on all systems and can
-be emulated using other system functionality. configure checks for
-the presence of such functions and if they are missing, will
-configure emulation code from the <b>port</b> directory to use
-instead. Building the TIFF software on unsupported systems may
-require adding to the code to the <b>port</b> directory.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Checking system libraries for functionality to emulate.
-Done checking system libraries.
-</tt>
-</pre></div>
-If a routine must be emulated and configure does not automatically
-check for it, the routine name can be specified using the
-<tt>PORTFUNCS</tt> parameter. To add emulation support for a new
-function <tt>foo</tt>, create a file <b>port/foo.c</b> that
-contains the emulation code and then set <tt>PORTFUNCS=foo</tt> in
-a configuration file or modify the configure script to
-automatically check for the missing function.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Checking for Dynamic Shared Object (DSO) support.
-Done checking for DSO support.
-</tt>
-</pre></div>
-If the <tt>DSO</tt> package is enabled (<tt>DSO=auto</tt> or
-<tt>DSO=yes</tt>), then configure will verify the system and
-compiler are capable of constructing SVR4-style DSO's in the
-expected way. Note that while a system may support DSO's the
-compiler may not be capable of generating the required
-position-independent code and/or the compiler may not pass the
-needed options through to the loader.
-<p><i>Selecting utility programs.</i> configure locates various
-system utility programs that are used during installation of the
-software.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Selecting programs used during installation.
-Looks like mv supports the -f option to force a move.
-Looks like /bin/ln supports the -s option to create a symbolic link.
-Done selecting programs.
-</tt>
-</pre></div>
-<p><i>Selecting default configuration parameters.</i> The remainder
-of the work done by configure involves setting up configuration
-parameters that control the placement and setup of files during the
-installation procedure.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Selecting default TIFF configuration parameters.
-
-Looks like manual pages go in /usr/contrib/man.
-Looks like manual pages should be installed with bsd-nroff-gzip-0.gz.
-
-TIFF configuration parameters are:
-
-[ 1] Directory for tools:               /usr/contrib/bin
-[ 2] Directory for libraries:           /usr/contrib/lib
-[ 3] Directory for include files:       /usr/contrib/include
-[ 4] Directory for manual pages:        /usr/contrib/man
-[ 5] Manual page installation scheme:   bsd-nroff-gzip-0.gz
-
-Are these ok [yes]? 
-</tt>
-</pre></div>
-At this point you can interactively modify any of the displayed
-parameters. Hitting a carriage return or typing <tt>yes</tt> will
-accept the current parameters. Typing one of the number displayed
-along the left hand side causes configure to prompt for a new value
-of the specified parameter. Typing anything else causes configure
-to prompt for a new value <em>for each parameter</em>. In general
-hitting carriage return will accept the current value and typing
-anything that is unacceptable will cause a help message to be
-displayed. A description of each of the configuration parameters is
-given below.
-<p>Once acceptable parameters are setup configure will generate all
-the files that depend on these parameters. Note that certain files
-may or may not be created based on the configuration of optional
-packages and/or the functions supported by target system.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Creating Makefile from ../tiff-v3.4beta015/Makefile.in
-Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in
-Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in
-Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in
-Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in
-Done.
-</tt>
-</pre></div>
-<a name="DSOSupport" id="DSOSupport"></a>
-<hr>
-<h3>Shared Library Support</h3>
-It is desirable to make the TIFF library be a shared object on
-systems that have support for shared libraries. Unfortunately the
-rules to use to build a shared library vary between operating
-systems and even compilers. The distributed software includes
-support for building a shared version of the library on a number of
-different systems. This support is split between rules in the file
-<b>libtiff/Makefile.in</b> that construct the shared library and
-checks done by the <tt>configure</tt> script to verify that the
-expected rules are supported by compilation tools for the target
-system.
-<p>To add new support for building a shared library both these
-files must be updated. In the configure script search for the
-section where the autoconfiguration setting of the <tt>DSO</tt>
-parameter is handled and add a new case for the target system that
-sets the <tt>DSOSUF</tt>, <tt>DSOLD</tt>, <tt>DSOOPTS</tt>, and
-<tt>LIBCOPTS</tt> options as appropriate for the system.
-<tt>DSOSUF</tt> specifies the filename suffix used for the shared
-library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based
-systems). <tt>DSOLD</tt> specifies the program to use to build the
-shared library from a compiled object file; typically ``${LD}''
-though on some systems it is better to use the C compiler directly
-so system-dependent options and libraries are automatically
-supplied. <tt>DSOOPTS</tt> are options that must be specified to
-<tt>DSOLD</tt> when building the shared library. <tt>LIBCOPTS</tt>
-are options to pass to the C compiler when constructing a
-relocatable object file to include in a shared library; e.g. ``-K
-PIC'' on a Sun system. The <tt>DSO</tt> parameter must also be set
-to a unique label that identifies the target system and compilation
-tools. This label is used to select a target in
-<b>libtiff/Makefile.in</b> to do the actual work in building the
-shared library. Finally, to complete support for the shared library
-added the appropriate rules to <b>libtiff/Makefile.in</b> under the
-target specified in the <tt>configure</tt> script. <a name="PC" id=
-"PC"></a></p>
-<hr>
+<a name="PC" id="PC"></a>
 <h2>Building the Software under Windows 95/98/NT/2000 with MS
 VC++</h2>
 With Microsoft Visual C++ installed, and properly configured for
@@ -441,7 +228,7 @@ conventions, which work with MSVC but do not work with Windows
 can extract the files using Windows normal line termination
 conventions with a command similar to:</p>
 <pre>
-  unzip -aa -a tiff-3.7.4.zip
+  unzip -aa -a tiff-4.0.0.zip
 </pre>
 <p>By default libtiff expects that a pre-built zlib and jpeg
 library are provided by the user. If this is not the case, then you
@@ -453,20 +240,20 @@ true for Windows. However, by taking this approach, libtiff will
 not be able to open some TIFF files.</p>
 <p>To build using the provided makefile.vc you may use:</p>
 <pre>
-  C:\tiff-3.7.4&gt; nmake /f makefile.vc clean
-  C:\tiff-3.7.4&gt; nmake /f makefile.vc
+  C:\tiff-4.0.0&gt; nmake /f makefile.vc clean
+  C:\tiff-4.0.0&gt; nmake /f makefile.vc
 
     or (the hard way)
 
-  C:\tiff-3.7.4&gt; cd port
-  C:\tiff-3.7.4\port&gt; nmake /f makefile.vc clean
-  C:\tiff-3.7.4\port&gt; nmake /f makefile.vc
-  C:\tiff-3.7.4&gt; cd ../libtiff
-  C:\tiff-3.7.4\libtiff&gt; nmake /f makefile.vc clean
-  C:\tiff-3.7.4\libtiff&gt; nmake /f makefile.vc
-  C:\tiff-3.7.4\libtiff&gt; cd ..\tools
-  C:\tiff-3.7.4\tools&gt; nmake /f makefile.vc clean
-  C:\tiff-3.7.4\tools&gt; nmake /f makefile.vc
+  C:\tiff-4.0.0&gt; cd port
+  C:\tiff-4.0.0\port&gt; nmake /f makefile.vc clean
+  C:\tiff-4.0.0\port&gt; nmake /f makefile.vc
+  C:\tiff-4.0.0&gt; cd ../libtiff
+  C:\tiff-4.0.0\libtiff&gt; nmake /f makefile.vc clean
+  C:\tiff-4.0.0\libtiff&gt; nmake /f makefile.vc
+  C:\tiff-4.0.0\libtiff&gt; cd ..\tools
+  C:\tiff-4.0.0\tools&gt; nmake /f makefile.vc clean
+  C:\tiff-4.0.0\tools&gt; nmake /f makefile.vc
 </pre>
 <p>This will build the library file
 <tt>libtiff\libtiff\libtiff.lib</tt>. This can be used in Win32
@@ -479,70 +266,8 @@ import library (libtiff_i.lib). Any builds using libtiff will need
 to include the LIBTIFF\LIBTIFF directory in the include path.</p>
 <p>The <tt>libtiff\tools\makefile.vc</tt> should build .exe's for
 all the standard TIFF tool programs.</p>
-<p><a name="DJGPP" id="DJGPP"></a></p>
-<hr>
-<h2>Building the Software under MS/DOS with the DJGPP v2
-compiler</h2>
-[<i>From the file <b>contrib/dosdjgpp/README</b>.</i>]
-<p>The directory <b>contrib/dosdjgpp</b> contains the files
-necessary to build the library and tools with the DJGPP v2 compiler
-under MSDOS.</p>
-<p>All you have to do is copy the files in the directory into the
-respective directories and run make. If you want, you can use the
-<b>conf.bat</b> script to do that for you, make sure that the file
-is stored with MSDOS text EOL-convention (CR/LF), otherwise the
-<b>command.com</b> will not do anything.</p>
-<p>Note that you probably will not be able to build the library
-with the v1.x versions of djgpp, due to two problems. First, the
-top makefile calls a sub-make for each directory and you are likely
-to run out of memory, since each recursive invocation of a djgpp
-v1.x program requires about 130k, to avoid that, you can enter the
-directories manually and call make (well, there are only two dirs).
-The 2nd problem is that djgpp 1.x doesn't call the coff2exe
-(stubify) program when creating an executable. This means that all
-programs compiled are not converted to exe and consequently are not
-available for calling directly. For the tools directory, you can
-just call coff2exe for each program after make finishes, but in the
-libtiff directory, a few programs are created during the make
-process that have to be called for make to continue (e.g.
-mkg3states). Make will probably report an error at each such stage.
-To fix that, either add a coff2exe call before each program is
-called or call coff2exe manually and rerun make (there 2-3 such
-programs). <a name="MacMPW" id="MacMPW"></a></p>
-<hr>
-<h2>Building the Software on a Macintosh with MPW</h2>
-The directory <b>contrib/mac-mpw</b> contains support for compiling
-the library and tools under the MPW Shell on a Macintosh system.
-This support was contributed by Niles Ritter (<a href=
-"mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
-<p>[<i>From the file <b>contrib/mac-mpw/README</b>.</i>]</p>
-<p>This directory contains all of the utilities and makefile source
-to build the LIBTIFF library and tools from the MPW Shell. The file
-BUILD.mpw in this directory is an executable script which uses all
-of these files to create the MPW makefiles and run them.</p>
-<p>The &lt;file&gt;.make files are not MPW makefiles as such, but
-are when run through the "mactrans" program, which turns the ascii
-"%nn" metacharacters into the standard weird MPW make
-characters.</p>
-<p>This translation trick is necessary to protect the files when
-they are put into unix tarfiles, which tend to mangle the special
-characters. <a name="MacCW" id="MacCW"></a></p>
-<hr>
-<h2>Building the Software on a Macintosh with CodeWarrior</h2>
-The directory <b>contrib/mac-cw</b> contains support for compiling
-the library and tools with MetroWerks CodeWarrior 6.1 on a
-Macintosh system. This support was contributed by Niles Ritter
-(<a href=
-"mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
-<p>[<i>From the file <b>contrib/mac-cw/README</b>.</i>] In this
-directory you will find a Makefile.script Applescript file, which
-should be run in order to build the libtiff code using MetroWerks
-CodeWarrior. Refer to the "metrowerks.note" instructions on
-building the library for 68k and PowerPC native code, as well as
-building some of the libtiff tools, which are rather unix-like, but
-at least give an example of how to link everything together.
-<a name="VMS" id="VMS"></a></p>
 <hr>
+<a name="VMS" id="VMS"></a>
 <h2>Building the Software on a VMS System</h2>
 The VMS port was done by Karsten Spang (<a href=
 "mailto:krs@kampsax.dk">krs@kampsax.dk</a>), who also "sort of"
@@ -657,88 +382,9 @@ defined. This method is recommended if you want to run your program
 on another machine, and for some reason don't want to have the
 library on that machine. If you plan to have more than one program
 (including the tools) on the machine, it is recommended that you
-copy the library to the other machine and use method 1. <a name=
-"Acorn" id="Acorn"></a></p>
-<hr>
-<h2>Building the Software on an Acorn RISC OS system</h2>
-The directory <b>contrib/acorn</b> contains support for compiling
-the library under Acorn C/C++ under Acorn's RISC OS 3.10 or above.
-Subsequent pathnames will use the Acorn format: The full-stop or
-period character is a pathname delimeter, and the slash character
-is not interpreted; the reverse position from Unix. Thus
-"libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c".
-<p>This support was contributed by Peter Greenham. (<a href=
-"mailto:peter@enlarion.demon.co.uk">peter@enlarion.demon.co.uk</a>).</p>
-<h3>Installing LibTIFF:</h3>
-<p>LIBTIFF uses several files which have names longer than the
-normal RISC OS maximum of ten characters. This complicates matters.
-Maybe one day Acorn will address the problem and implement long
-filenames properly. Until then this gets messy, especially as I'm
-trying to do this with obeyfiles and not have to include binaries
-in this distribution.</p>
-<p>First of all, ensure you have Truncate configured on (type
-<tt>*Configure Truncate On</tt>)</p>
-<p>Although it is, of course, preferable to have long filenames,
-LIBTIFF can be installed with short filenames, and it will compile
-and link without problems. However, <i>getting</i> it there is more
-problematic. <b>contrib.acorn.install</b> is an installation
-obeyfile which will create a normal Acorn-style library from the
-source (ie: with c, h and o folders etc.), but needs the
-distribution library to have been unpacked into a location which is
-capable of supporting long filenames, even if only temporarily.</p>
-<p>My recommendation, until Acorn address this problem properly, is
-to use Jason Tribbeck's <a href=
-"ftp://ftp.demon.co.uk/pub/mirrors/hensa/micros/arch/riscos/c/c020/longfiles.arc">
-LongFilenames</a>, or any other working system that gives you long
-filenames, like a nearby NFS server for instance.</p>
-<p>If you are using Longfilenames, even if only temporarily to
-install LIBTIFF, unpack the TAR into a RAMDisc which has been
-longfilenamed (ie: <tt>*addlongfs ram</tt>) and then install from
-there to the hard disk. Unfortunately Longfilenames seems a bit
-unhappy about copying a bunch of long-named files across the same
-filing system, but is happy going between systems. You'll need to
-create a ramdisk of about 2Mb.</p>
-<p>Now you can run the installation script I've supplied (in
-contrib.acorn), which will automate the process of installing
-LIBTIFF as an Acorn-style library. The syntax is as follows:</p>
-<p><tt>install &lt;source_dir&gt; &lt;dest_dir&gt;</tt></p>
-<p>Install will then create &lt;dest_dir&gt; and put the library in
-there. For example, having used LongFilenames on the RAMDisk and
-unpacked the library into there, you can then type:</p>
-<p><tt>Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$
-ADFS::4.$.LIBTIFF</tt></p>
-<p>It doesn't matter if the destination location can cope with long
-filenames or not. The filenames will be truncated if necessary
-(*Configure Truncate On if you get errors) and all will be
-well.</p>
-<h3>Compiling LibTIFF:</h3>
-<p>Once the LibTIFF folder has been created and the files put
-inside, making the library should be just a matter of running
-'<b>SetVars</b>' to set the appropriate system variables, then
-running '<b>Makefile</b>'.</p>
-<p><b>OSLib</b></p>
-<p><a href=
-"ftp://ftp.acorn.co.uk/pub/riscos/releases/oslib/oslib.arc">OSLib</a>
-is a comprehensive API for RISC OS machines, written by Jonathan
-Coxhead of Acorn Computers (although OSLib is not an official Acorn
-product). Using the OSLib SWI veneers produces code which is more
-compact and more efficient than code written using _kernel_swi or
-_swi. The Acorn port of LibTIFF can take advantage of this if
-present. Edit the Makefile and go to the Static dependencies
-section. The first entry is:</p>
-<pre>
-# Static dependencies:
-@.o.tif_acorn:   @.c.tif_acorn
-        cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn 
-</pre>
-<p>Change the cc line to:</p>
-<pre>
-        cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn 
-</pre>
-<p>Remember, however, that OSLib is only <i>recommended</i> for
-efficiency's sake. It is not required. <a name="Other" id=
-"Other"></a></p>
+copy the library to the other machine and use method 1.</p>
 <hr>
+<a name="Other" id="Other"></a>
 <h2>Building the Software on Other Systems</h2>
 This section contains information that might be useful if you are
 working on a non-UNIX system that is not directly supported. All
@@ -828,8 +474,6 @@ libtiff/tif_fax3.h              CCITT Group 3/4-related definitions
 libtiff/tif_predict.h           private defs for Predictor tag support
 libtiff/uvcode.h                LogL/LogLuv codec-specific definitions
 libtiff/version.h               version string (generated by Makefile)
-
-libtiff/tif_acorn.c             Acorn-related OS support
 libtiff/tif_apple.c             Apple-related OS support
 libtiff/tif_atari.c             Atari-related OS support
 libtiff/tif_aux.c               auxilary directory-related functions
@@ -875,6 +519,6 @@ libtiff/mkspans.c               program to generate black-white span tables
 libtiff/mkversion.c             program to generate libtiff/version.h.
 </pre>
 <hr>
-Last updated: $Date: 2005/12/24 22:25:05 $
+Last updated: $Date: 2012-02-18 21:36:31 $
 </body>
 </html>
index e3e754fb625ce7b8c4bd6b0a7fa8e0923c06a5a1..73fc8af3a83523f65ed8cab88d7ac72aa31d7d36 100644 (file)
@@ -14,8 +14,8 @@ TIFF Documentation
 <P>
 A copy of the 6.0 specification is available from Adobe at
 <A HREF="http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf</A>, or from the libtiff
-ftp site at <a href="ftp://ftp.remotesensing.org/pub/libtiff/TIFF6.pdf">
-ftp://ftp.remotesensing.org/pub/libtiff/TIFF6.pdf</A>.<p>
+ftp site at <a href="ftp://ftp.remotesensing.org/pub/libtiff/doc/TIFF6.pdf">
+ftp://ftp.remotesensing.org/pub/libtiff/doc/TIFF6.pdf</A>.<p>
 
 <P>
 Draft <a href="TIFFTechNote2.html">TIFF Technical Note #2</A> covers problems 
@@ -45,7 +45,7 @@ a TIFF variation supporting files larger than 4GB.
 <HR>
 
 <ADDRESS>
- Last updated: $Date: 2004/12/02 14:51:19 $
+ Last updated: $Date: 2006/07/10 18:13:52 $
 </ADDRESS>
 
 </BODY>
index 5f71c020c93405ff9a4db96d0312e38b63ebbdd7..a78ae2fe9da4342c3eaeab93e8f589b472983db3 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,37 +75,73 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = html/images
 DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
+       $(srcdir)/Makefile.in $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(docdir)"
-dist_docDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_doc_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -111,6 +161,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -125,12 +176,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -149,20 +195,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -174,63 +225,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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 = $(LIBTIFF_DOCDIR)/html/images
+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@
-lt_ECHO = @lt_ECHO@
 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@
-docdir = $(LIBTIFF_DOCDIR)/html/images
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 docfiles = \
        back.gif \
        bali.jpg \
@@ -257,14 +311,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  html/images/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  html/images/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign html/images/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign html/images/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -282,64 +336,70 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 install-dist_docDATA: $(dist_doc_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-         $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
        done
 
 uninstall-dist_docDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(docdir)/$$f"; \
-       done
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -348,7 +408,7 @@ check: check-am
 all-am: Makefile $(DATA)
 installdirs:
        for dir in "$(DESTDIR)$(docdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -360,16 +420,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -380,7 +446,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -388,18 +454,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am: install-dist_docDATA
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -418,18 +504,22 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_docDATA uninstall-info-am
+uninstall-am: uninstall-dist_docDATA
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dist_docDATA install-exec \
-       install-exec-am install-info install-info-am install-man \
+       install-data install-data-am install-dist_docDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-strip installcheck installcheck-am installdirs \
        maintainer-clean maintainer-clean-generic mostlyclean \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       uninstall uninstall-am uninstall-dist_docDATA \
-       uninstall-info-am
+       uninstall uninstall-am uninstall-dist_docDATA
+
 
 # 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.
index e48544ee3594b937e47cb1eed545e5058a98b0b1..17db67a8a370c7a07c94f1e9e042bef6860e8e12 100644 (file)
     </tr>
     <tr>
       <th>Latest Stable Release</th>
-      <td><a href="v3.8.2.html">v3.8.2</a></td>
-    </tr>
-    <tr>
-      <th>Latest Development Release</th>
-      <td><a href="v3.8.2.html">v3.8.2</a></td>
+      <td><a href="v4.0.3.html">v4.0.3</a></td>
     </tr>
     <tr>
       <th>Master Download Site</th>
-      <td><a href="ftp://ftp.remotesensing.org/pub/libtiff">ftp.remotesensing.org</a>, directory pub/libtiff</td>
-    </tr>
-    <tr>
-      <th>Mirror Download Site</th>
-      <td><a href="http://libtiff.maptools.org/dl/">http://libtiff.maptools.org/dl/</a></td>
+      <td><a href="http://download.osgeo.org/libtiff">download.osgeo.org</a>, directory libtiff</td>
     </tr>
     <tr>
       <th>Windows Binaries</th>
     <tr>
       <th>Anonymous CVS</th>
       <td><tt>export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot<br>
-        cvs login # use empty password"<br>
-        cvs checkout libtiff<br></tt></td>
+       cvs login</tt><br>
+       (use empty password)<br>
+       <tt>cvs checkout libtiff<br></tt>
+       to get the stable libtiff code or<br>
+       <tt>cvs checkout -r branch-3-9 libtiff</tt><br>
+       to get the previous stable branch supporting the 3.9.X release series.</td>
     </tr>
   </table>
   <hr>
   </p>
   <p>
     Included in this software distribution is a library, libtiff, for
-    reading and writing TIFF, a small collection of tools for doing simple
-    manipulations of TIFF images on UNIX systems,
-    and documentation on the library and
-    tools.  A small assortment of TIFF-related software for UNIX
-    that has been contributed by others is also included.
+    reading and writing TIFF, a small collection of tools for doing
+    simple manipulations of TIFF images, and documentation on the
+    library and tools.  Libtiff is a portable software, it was built
+    and tested on various systems: UNIX flavors (Linux, BSD, Solaris,
+    MacOS X), Windows, and OpenVMS.  It should be possible to port
+    libtiff and additional tools on other OSes.
   </p>
   <p>
     The library, along with associated tool programs, should handle most of
     your needs for reading and writing TIFF images on 32- and 64-bit
-    machines.  This software can also be used on older 16-bit systems
-    though it may require some effort and you may need to leave out some of
-    the compression support.
+    machines.
   </p>
   <p>
-    The software was orginally authored and maintained by Sam Leffler.
-    While he keeps a fatherly eye on the mailing list, he is no longer
-    responsible for day to day maintenance.
+    The software was originally authored and maintained by Sam Leffler.
   </p>
   <p>
     Questions should be sent to the TIFF mailing list:
@@ -94,7 +87,9 @@
     The persons responsible for putting up this site and putting together
     versions &gt;= 3.5.1 are
     <a href="http://pobox.com/~warmerdam">Frank Warmerdam</a>,
-    <a href="mailto:dron@ak4719.spb.edu">Andrey Kiselev</a> and Mike Welles.
+    <a href="mailto:dron@ak4719.spb.edu">Andrey Kiselev</a>,
+    <a href="mailto:bfriesen@GraphicsMagick.org">Bob Friesenhahn</a>, 
+    Joris Van Damme and Lee Howard.
   </p>
   <p>
     The following sections are included in this documentation:
     <li><a href="misc.html">Acknowledgements and copyright issues</a></li>
     <li><a href="man/index.html">Man Pages</a></li>
   </ul>
+  <p>
+    <b>BigTIFF News</b>
+  </p>
+  <ul>
+    <li><a href="BigTIFFProposal.html">BigTIFF project proposal</a> (work is completed!)</li>
+    <li><a href="bigtiffpr.html">Press release: Currently extending LibTiff</a> (work is completed!)</li>
+  </ul>
   <hr>
   <p>
-    Last updated  $Date: 2006/03/23 14:54:01 $.
+    Last updated  $Date: 2012-06-16 00:19:37 $.
   </p>
 </body>
 </html>
index 885f9567e411d4db6ebcb980945ed8106ee0bd3b..ca222deabb2c0c34cd118be8207b32cf29a94f28 100644 (file)
@@ -39,6 +39,12 @@ docfiles = \
        TIFFcolor.3tiff.html \
        TIFFDataWidth.3tiff.html \
        TIFFError.3tiff.html \
+       TIFFFieldDataType.3tiff.html \
+       TIFFFieldName.3tiff.html \
+       TIFFFieldPassCount.3tiff.html \
+       TIFFFieldReadCount.3tiff.html \
+       TIFFFieldTag.3tiff.html \
+       TIFFFieldWriteCount.3tiff.html \
        TIFFFlush.3tiff.html \
        TIFFGetField.3tiff.html \
        TIFFmemory.3tiff.html \
@@ -70,6 +76,7 @@ docfiles = \
        TIFFWriteRawTile.3tiff.html \
        TIFFWriteScanline.3tiff.html \
        TIFFWriteTile.3tiff.html \
+       bmp2tiff.1.html \
        fax2ps.1.html \
        fax2tiff.1.html \
        gif2tiff.1.html \
@@ -86,6 +93,7 @@ docfiles = \
        tiff2rgba.1.html \
        tiffcmp.1.html \
        tiffcp.1.html \
+       tiffcrop.1.html \
        tiffdither.1.html \
        tiffdump.1.html \
        tiffgt.1.html \
@@ -101,9 +109,9 @@ INDEXSTART = '<HTML><HEAD><TITLE>Libtiff HTML manpage index</TITLE></HEAD><BODY
 INDEXEND = '</ul></BODY></HTML>'
 
 .PHONY: index
-index: $(docfiles)
+index:
        ${ECHO} ${INDEXSTART} > $(indexfile)
-       for i in $^; do                                                 \
+       for i in $(docfiles); do                                        \
                ${ECHO} '<li><A HREF='$$i'>'$$i'</a>' >> $(indexfile);  \
        done
        ${ECHO} ${INDEXEND} >> $(indexfile)
@@ -111,7 +119,7 @@ index: $(docfiles)
 manpages = $(docfiles:.html=)
 
 .PHONY: htmldoc
-htmldoc: index
+htmldoc:
        for i in $(manpages); do                                        \
                ${GROFF} $(MANSRCDIR)/$$i > $(HTMLMANDIR)/$$i.html;     \
        done
index 5836a94048bbde538d31c0ac642b3ab20ff0424c..86f71e980d023627e14c9398fd42b7f0b72bfd30 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,37 +75,73 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = html/man
 DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
+       $(srcdir)/Makefile.in $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(docdir)"
-dist_docDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_doc_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -111,6 +161,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -125,12 +176,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -149,20 +195,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -174,63 +225,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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 = $(LIBTIFF_DOCDIR)/html/man
+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@
-lt_ECHO = @lt_ECHO@
 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@
-docdir = $(LIBTIFF_DOCDIR)/html/man
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 MANSRCDIR = $(top_srcdir)/man
 HTMLMANDIR = $(top_srcdir)/html/man
 GROFF = groff -Thtml -mandoc
@@ -244,6 +298,12 @@ docfiles = \
        TIFFcolor.3tiff.html \
        TIFFDataWidth.3tiff.html \
        TIFFError.3tiff.html \
+       TIFFFieldDataType.3tiff.html \
+       TIFFFieldName.3tiff.html \
+       TIFFFieldPassCount.3tiff.html \
+       TIFFFieldReadCount.3tiff.html \
+       TIFFFieldTag.3tiff.html \
+       TIFFFieldWriteCount.3tiff.html \
        TIFFFlush.3tiff.html \
        TIFFGetField.3tiff.html \
        TIFFmemory.3tiff.html \
@@ -275,6 +335,7 @@ docfiles = \
        TIFFWriteRawTile.3tiff.html \
        TIFFWriteScanline.3tiff.html \
        TIFFWriteTile.3tiff.html \
+       bmp2tiff.1.html \
        fax2ps.1.html \
        fax2tiff.1.html \
        gif2tiff.1.html \
@@ -291,6 +352,7 @@ docfiles = \
        tiff2rgba.1.html \
        tiffcmp.1.html \
        tiffcp.1.html \
+       tiffcrop.1.html \
        tiffdither.1.html \
        tiffdump.1.html \
        tiffgt.1.html \
@@ -311,14 +373,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  html/man/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  html/man/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign html/man/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign html/man/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -336,64 +398,70 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 install-dist_docDATA: $(dist_doc_DATA)
        @$(NORMAL_INSTALL)
-       test -z "$(docdir)" || $(mkdir_p) "$(DESTDIR)$(docdir)"
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
-         $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
        done
 
 uninstall-dist_docDATA:
        @$(NORMAL_UNINSTALL)
-       @list='$(dist_doc_DATA)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
-         rm -f "$(DESTDIR)$(docdir)/$$f"; \
-       done
+       @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -402,7 +470,7 @@ check: check-am
 all-am: Makefile $(DATA)
 installdirs:
        for dir in "$(DESTDIR)$(docdir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -414,16 +482,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -434,7 +508,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -442,18 +516,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am: install-dist_docDATA
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -472,33 +566,37 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_docDATA uninstall-info-am
+uninstall-am: uninstall-dist_docDATA
+
+.MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dist_docDATA install-exec \
-       install-exec-am install-info install-info-am install-man \
+       install-data install-data-am install-dist_docDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
        install-strip installcheck installcheck-am installdirs \
        maintainer-clean maintainer-clean-generic mostlyclean \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       uninstall uninstall-am uninstall-dist_docDATA \
-       uninstall-info-am
+       uninstall uninstall-am uninstall-dist_docDATA
 
 
 .PHONY: index
-index: $(docfiles)
+index:
        ${ECHO} ${INDEXSTART} > $(indexfile)
-       for i in $^; do                                                 \
+       for i in $(docfiles); do                                        \
                ${ECHO} '<li><A HREF='$$i'>'$$i'</a>' >> $(indexfile);  \
        done
        ${ECHO} ${INDEXEND} >> $(indexfile)
 
 .PHONY: htmldoc
-htmldoc: index
+htmldoc:
        for i in $(manpages); do                                        \
                ${GROFF} $(MANSRCDIR)/$$i > $(HTMLMANDIR)/$$i.html;     \
        done
+
 # 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:
index 0a92e318af9d0872a8615c200d4d6195ba8479c6..720ca327f7643988af11f1c7b1223dfeabb7fc6a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:15 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 5d82ef49659d3d8793b997031f24b2051b5f5d48..575e3cb8cae1b5db225876c8210026d783b6767d 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index c7453c3eca936f8af4c1dc2ecd34631827e2dc3e..721cec7ecdd676af554f924cb8d8ce4ce1a4727e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
diff --git a/src/tiff/html/man/TIFFFieldDataType.3tiff.html b/src/tiff/html/man/TIFFFieldDataType.3tiff.html
new file mode 100644 (file)
index 0000000..d6a463f
--- /dev/null
@@ -0,0 +1,89 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldDataType</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldDataType</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldDataType
+&minus; Get TIFF data type from field information</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFDataType
+TIFFFieldDataType(const TIFFField*</b>
+<i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldDataType</b>
+returns the data type stored in a TIFF field.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldDataType</b>
+returns a member of the enum type <b>TIFFDataType</b>.</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
diff --git a/src/tiff/html/man/TIFFFieldName.3tiff.html b/src/tiff/html/man/TIFFFieldName.3tiff.html
new file mode 100644 (file)
index 0000000..b270d4a
--- /dev/null
@@ -0,0 +1,86 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldName</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldName</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldName
+&minus; Get TIFF field name from field information</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>const char*
+TIFFFieldName(const TIFFField*</b> <i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldName</b>
+returns the textual name for a TIFF field.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldName</b>
+returns a constant C string.</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
diff --git a/src/tiff/html/man/TIFFFieldPassCount.3tiff.html b/src/tiff/html/man/TIFFFieldPassCount.3tiff.html
new file mode 100644 (file)
index 0000000..480f736
--- /dev/null
@@ -0,0 +1,98 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldPassCount</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldPassCount</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldPassCount
+&minus; Get whether to pass a count to TIFFGet/SetField</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFFieldPassCount(const TIFFField*</b>
+<i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldPassCount</b>
+returns true (nonzero) if <b>TIFFGetField</b> and
+<b>TIFFSetField</b> expect a <i>count</i> value to be passed
+before the actual data pointer.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">When a
+<i>count</i> is required, it will be of type <b>uint32</b>
+when <b>TIFFFieldReadCount</b> reports
+<b>TIFF_VARIABLE2</b>, and of type <b>uint16</b> otherwise.
+(This distinction is critical for use of
+<b>TIFFGetField</b>, but normally not so for use of
+<b>TIFFSetField</b>.)</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldPassCount</b>
+returns an integer that is always 1 (true) or 0 (false).</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
diff --git a/src/tiff/html/man/TIFFFieldReadCount.3tiff.html b/src/tiff/html/man/TIFFFieldReadCount.3tiff.html
new file mode 100644 (file)
index 0000000..c77d4d3
--- /dev/null
@@ -0,0 +1,101 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldReadCount</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldReadCount</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldReadCount
+&minus; Get number of values to be read from field</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFFieldReadCount(const TIFFField*</b>
+<i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldReadCount</b>
+returns the number of values available to be read from the
+specified TIFF field; that is, the number of arguments that
+should be supplied to <b>TIFFGetField</b>. For most field
+types this is a small positive integer, typically 1 or 2,
+but there are some special values: <b><br>
+TIFF_VARIABLE</b> indicates that a variable number of values
+is possible; then, a <b>uint16</b> <i>count</i> argument and
+a pointer <i>data</i> argument must be supplied to
+<b>TIFFGetField</b>. <b><br>
+TIFF_VARIABLE2</b> is the same as <b>TIFF_VARIABLE</b>
+except that the <i>count</i> argument must have type
+<b>uint32</b>. <b><br>
+TIFF_SPP</b> indicates that the number of arguments is equal
+to the image&rsquo;s number of samples per pixel.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldReadCount</b>
+returns an integer.</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
diff --git a/src/tiff/html/man/TIFFFieldTag.3tiff.html b/src/tiff/html/man/TIFFFieldTag.3tiff.html
new file mode 100644 (file)
index 0000000..d1cc04a
--- /dev/null
@@ -0,0 +1,88 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldTag</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldTag</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldTag
+&minus; Get TIFF field tag value from field information</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>uint32
+TIFFFieldTag(const TIFFField*</b> <i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldTag</b>
+returns the numeric tag value for a TIFF field. This can be
+compared to various constants exported by the <b>libtiff</b>
+header files, such as <b>TIFFTAG_IMAGEWIDTH</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldTag</b>
+returns an integer tag value.</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
diff --git a/src/tiff/html/man/TIFFFieldWriteCount.3tiff.html b/src/tiff/html/man/TIFFFieldWriteCount.3tiff.html
new file mode 100644 (file)
index 0000000..d72a8e3
--- /dev/null
@@ -0,0 +1,108 @@
+<!-- Creator     : groff version 1.21 -->
+<!-- CreationDate: Sun Jul 29 12:12:01 2012 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title>TIFFFieldWriteCount</title>
+
+</head>
+<body>
+
+<h1 align="center">TIFFFieldWriteCount</h1>
+
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#RETURN VALUES">RETURN VALUES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+
+
+<h2>NAME
+<a name="NAME"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFFieldWriteCount
+&minus; Get number of values to be written to field</p>
+
+<h2>SYNOPSIS
+<a name="SYNOPSIS"></a>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFFieldWriteCount(const TIFFField*</b>
+<i>fip</i><b>)</b></p>
+
+<h2>DESCRIPTION
+<a name="DESCRIPTION"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldWriteCount</b>
+returns the number of values to be written into the
+specified TIFF field; that is, the number of arguments that
+should be supplied to <b>TIFFSetField</b>. For most field
+types this is a small positive integer, typically 1 or 2,
+but there are some special values: <b><br>
+TIFF_VARIABLE</b> indicates that a variable number of values
+is possible; then, a <b>uint16</b> <i>count</i> argument and
+a pointer <i>data</i> argument must be supplied to
+<b>TIFFSetField</b>. <b><br>
+TIFF_VARIABLE2</b> is the same as <b>TIFF_VARIABLE</b>
+except that the <i>count</i> argument must have type
+<b>uint32</b>. (On most modern machines, this makes no
+practical difference, and the <i>count</i> argument can
+simply be an <b>int</b> in either case.) <b><br>
+TIFF_SPP</b> indicates that the number of arguments must be
+equal to the image&rsquo;s number of samples per pixel.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a
+field information pointer previously returned by
+<b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or
+<b>TIFFFieldWithName</b>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">For most field
+types, <b>TIFFFieldWriteCount</b> returns the same value as
+<b>TIFFFieldReadCount</b>, but there are some
+exceptions.</p>
+
+<h2>RETURN VALUES
+<a name="RETURN VALUES"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldWriteCount</b>
+returns an integer.</p>
+
+<h2>SEE ALSO
+<a name="SEE ALSO"></a>
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
+<hr>
+</body>
+</html>
index 5e5a51034718e0146c263df5ca7231bcdb3aeec6..742f3aeedc392f78ec3629185a906b0ba1db0da7 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index ca114a354bce673ebf6ab3722d4161b117eae7fa..bd2f78bb2203d4b3720af4b552aab577c7be3d87 100644 (file)
@@ -1,14 +1,25 @@
-<!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- Creator     : groff version 1.20.1 -->
+<!-- CreationDate: Thu May  6 13:48:43 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
 <title>TIFFGetField</title>
+
 </head>
 <body>
 
-<h1 align=center>TIFFGetField</h1>
+<h1 align="center">TIFFGetField</h1>
+
 <a href="#NAME">NAME</a><br>
 <a href="#SYNOPSIS">SYNOPSIS</a><br>
 <a href="#DESCRIPTION">DESCRIPTION</a><br>
 <a href="#SEE ALSO">SEE ALSO</a><br>
 
 <hr>
+
+
+<h2>NAME
 <a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFGetField, TIFFVGetField &minus; get the value(s) of a
-tag in an open <small>TIFF</small> file</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFGetField,
+TIFFVGetField &minus; get the value(s) of a tag in an open
+<small>TIFF</small> file</p>
+
+<h2>SYNOPSIS
 <a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
 <i>tag</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdarg.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFVGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
-<i>tag</i><b>, va_list</b> <i>ap</i><b>)<br>
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;stdarg.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFVGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
+<i>tag</i><b>, va_list</b> <i>ap</i><b>) <br>
 int TIFFGetFieldDefaulted(TIFF *</b><i>tif</i><b>,
-ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>)<br>
+ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>) <br>
 int TIFFVGetFieldDefaulted(TIFF *</b><i>tif</i><b>,
 ttag_t</b> <i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p>
-</td>
-</table>
+
+<h2>DESCRIPTION
 <a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFGetField</i> returns the value of a tag or
-pseudo-tag associated with the the current directory of the
-opened <small>TIFF</small> file <i>tif</i>. (A
-<i>pseudo-tag</i> is a parameter that is used to control the
-operation of the <small>TIFF</small> library but whose value
-is not read or written to the underlying file.) The file
-must have been previously opened with
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b><i>TIFFGetField</i></b>
+returns the value of a tag or pseudo-tag associated with the
+the current directory of the opened <small>TIFF</small> file
+<i>tif</i>. (A <i>pseudo-tag</i> is a parameter that is used
+to control the operation of the <small>TIFF</small> library
+but whose value is not read or written to the underlying
+file.) The file must have been previously opened with
 <i>TIFFOpen</i>(3TIFF). The tag is identified by <i>tag</i>,
 one of the values defined in the include file <b>tiff.h</b>
 (see also the table below). The type and number of values
@@ -76,1371 +84,1886 @@ programming interface uses a variable argument list as
 prescribed by the <i>stdarg</i>(3) interface. The returned
 values should only be interpreted if <i>TIFFGetField</i>
 returns 1.</p>
-<!-- INDENTATION -->
-<p><i>TIFFVGetField</i> is functionally equivalent to
-<i>TIFFGetField</i> except that it takes a pointer to a
-variable argument list. <i>TIFFVGetField</i> is useful for
-layering interfaces on top of the functionality provided by
+
+
+<p style="margin-left:11%; margin-top: 1em"><i>TIFFVGetField</i>
+is functionally equivalent to <i>TIFFGetField</i> except
+that it takes a pointer to a variable argument list.
+<i>TIFFVGetField</i> is useful for layering interfaces on
+top of the functionality provided by
 <i>TIFFGetField</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFGetFieldDefaulted</i> and
-<i>TIFFVGetFieldDefaulted</i> are identical to
+
+
+<p style="margin-left:11%; margin-top: 1em"><i>TIFFGetFieldDefaulted</i>
+and <i>TIFFVGetFieldDefaulted</i> are identical to
 <i>TIFFGetField</i> and <i>TIFFVGetField</i>, except that if
 a tag is not defined in the current directory and it has a
 default value, then the default value is returned.</p>
-<!-- INDENTATION -->
-<p>The tags understood by <i>libtiff(3TIFF),</i> the number
-of parameter values, and the types for the returned values
-are shown below. The data types are specified as in C and
-correspond to the types used to specify tag values to
+
+<p style="margin-left:11%; margin-top: 1em">The tags
+understood by <i>libtiff(3TIFF),</i> the number of parameter
+values, and the types for the returned values are shown
+below. The data types are specified as in C and correspond
+to the types used to specify tag values to
 <i>TIFFSetField</i>(3TIFF). Remember that
 <i>TIFFGetField</i> returns parameter values, so all the
 listed data types are pointers to storage where values
 should be returned. Consult the <small>TIFF</small>
 specification (or relevant industry specification) for
 information on the meaning of each tag and their possible
-values.</p></td>
-</table>
-<!-- TABS -->
+values.</p>
 
-<p><i>Tag Name Count Types Notes</i></p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+<table width="100%" border="0" rules="none" frame="void"
+       cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_ARTIST</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p><i>Tag Name</i></p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+
+<p><i>Count</i></p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_BADFAXLINES</p>
-</td>
-<td width="8%">
+<p><i>Types</i></p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p><i>Notes</i></p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_BITSPERSAMPLE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_ARTIST</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_CLEANFAXDATA</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_BADFAXLINES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_BITSPERSAMPLE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_COLORMAP</p>
-</td>
-<td width="8%">
 
-<p>3</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16**</p>
-</td>
-<td width="17%">
 
-<p>1&lt;&lt;BitsPerSample arrays</p>
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_CLEANFAXDATA</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_COMPRESSION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_COLORMAP</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>3</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_COPYRIGHT</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint16**</p></td>
+<td width="12%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1&lt;&lt;BitsPerSample arrays</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_COMPRESSION</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_DATATYPE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_DATETIME</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_DOCUMENTNAME</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_COPYRIGHT</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_DATATYPE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_DOTRANGE</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_EXTRASAMPLES</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_DATETIME</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>2</p>
-</td>
-<td width="23%">
 
-<p>uint16*,uint16**</p>
-</td>
-<td width="17%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>count &amp; types array</p>
-</td>
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_FAXFILLFUNC</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_DOCUMENTNAME</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>TIFFFaxFillFunc*</p>
-</td>
-<td width="17%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>G3/G4 compression pseudo-tag</p>
-</td>
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_FAXMODE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_DOTRANGE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>int*</p>
-</td>
-<td width="17%">
+<p>2</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>G3/G4 compression pseudo-tag</p>
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_FILLORDER</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_EXTRASAMPLES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_GROUP3OPTIONS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint16*,uint16**</p></td>
+<td width="12%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>count &amp; types array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_GROUP4OPTIONS</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_FAXFILLFUNC</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_HALFTONEHINTS</p>
-</td>
-<td width="8%">
+<p>TIFFFaxFillFunc*</p></td>
+<td width="12%">
 
-<p>2</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>G3/G4 compression pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_HOSTCOMPUTER</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_FAXMODE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_ICCPROFILE</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>int*</p></td>
+<td width="12%">
 
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
 
-<p>count, profile data</p>
-</td>
+<p>G3/G4 compression pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_FILLORDER</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_IMAGEDEPTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_IMAGEDESCRIPTION</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_GROUP3OPTIONS</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_IMAGELENGTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_GROUP4OPTIONS</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_IMAGEWIDTH</p>
-</td>
-<td width="8%">
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>TIFFTAG_HALFTONEHINTS</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_INKNAMES</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_HOSTCOMPUTER</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_INKSET</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_ICCPROFILE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_JPEGCOLORMODE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint32*,void**</p></td>
+<td width="12%">
 
-<p>int*</p>
-</td>
-<td width="17%">
 
-<p>JPEG pseudo-tag</p>
-</td>
+<p>count, profile data</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_JPEGQUALITY</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_IMAGEDEPTH</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>int*</p>
-</td>
-<td width="17%">
 
-<p>JPEG pseudo-tag</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_JPEGTABLES</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
 
-<p>count &amp; tables</p>
-</td>
+<p>TIFFTAG_IMAGEDESCRIPTION</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_JPEGTABLESMODE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_IMAGELENGTH</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>int*</p>
-</td>
-<td width="17%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>JPEG pseudo-tag</p>
-</td>
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_MAKE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_IMAGEWIDTH</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_MATTEING</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_INKNAMES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_INKSET</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_MAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_MINSAMPLEVALUE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_JPEGCOLORMODE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_MODEL</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>int*</p></td>
+<td width="12%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_ORIENTATION</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_JPEGQUALITY</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_PAGENAME</p>
-</td>
-<td width="8%">
+<p>int*</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_PAGENUMBER</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_JPEGTABLES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_PHOTOMETRIC</p>
-</td>
-<td width="8%">
+<p>uint32*,void**</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>count &amp; tables</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_PHOTOSHOP</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_JPEGTABLESMODE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
 
-<p>count, data</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_PLANARCONFIG</p>
-</td>
-<td width="8%">
+<p>int*</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_MAKE</p></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_PREDICTOR</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_MATTEING</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_PRIMARYCHROMATICITIES</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>float**</p>
-</td>
-<td width="17%">
 
-<p>6-entry array</p>
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_REFERENCEBLACKWHITE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_MAXSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>float**</p>
-</td>
-<td width="17%">
 
-<p>2*SamplesPerPixel array</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_RESOLUTIONUNIT</p>
-</td>
-<td width="8%">
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>TIFFTAG_MINSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_RICHTIFFIPTC</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_MODEL</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
 
-<p>count, data</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_ORIENTATION</p></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_ROWSPERSTRIP</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PAGENAME</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_SAMPLEFORMAT</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_SAMPLESPERPIXEL</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_PAGENUMBER</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PHOTOMETRIC</p></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_SMAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>double*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_SMINSAMPLEVALUE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_PHOTOSHOP</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>double*</p>
-</td>
-<td width="17%">
-</td>
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_SOFTWARE</p>
-</td>
-<td width="8%">
+<p>uint32*,void**</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>count, data</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PLANARCONFIG</p></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_STONITS</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>double**</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PREDICTOR</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_STRIPBYTECOUNTS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_STRIPOFFSETS</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_PRIMARYCHROMATICITIES</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_SUBFILETYPE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>float**</p></td>
+<td width="12%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>6-entry array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_SUBIFD</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_REFERENCEBLACKWHITE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint16*,uint32**</p>
-</td>
-<td width="17%">
 
-<p>count &amp; offsets array</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_TARGETPRINTER</p>
-</td>
-<td width="8%">
+<p>float**</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
+<p>6-entry array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_THRESHHOLDING</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_RESOLUTIONUNIT</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_TILEBYTECOUNTS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_RICHTIFFIPTC</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>TIFFTAG_TILEDEPTH</p>
-</td>
-<td width="8%">
+<p>uint32*,void**</p></td>
+<td width="12%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>count, data</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_TILELENGTH</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_ROWSPERSTRIP</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_TILEOFFSETS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_SAMPLEFORMAT</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_TILEWIDTH</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_SAMPLESPERPIXEL</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>1</p>
-</td>
-<td width="23%">
 
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_TRANSFERFUNCTION</p>
-</td>
-<td width="8%">
 
-<p>1 or 3&dagger;</p>
-</td>
-<td width="23%"></td>
-<td width="17%">
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>uint16**1&lt;&lt;BitsPerSample entry arrays</p>
-</td>
+
+<p>TIFFTAG_SMAXSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_WHITEPOINT</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>double*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>float**</p>
-</td>
-<td width="17%">
+<p>TIFFTAG_SMINSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>2-entry array</p>
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>double*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SOFTWARE</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_STONITS</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>double**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_STRIPBYTECOUNTS</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_STRIPOFFSETS</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SUBFILETYPE</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SUBIFD</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*,uint32**</p></td>
+<td width="12%">
+
+
+<p>count &amp; offsets array</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TARGETPRINTER</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>char**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_THRESHHOLDING</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILEBYTECOUNTS</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILEDEPTH</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILELENGTH</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_XMLPACKET</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_TILEOFFSETS</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
 
-<p>count, data</p>
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_XPOSITION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>uint32**</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILEWIDTH</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TRANSFERFUNCTION</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1 or 3&dagger;</p></td>
+<td width="12%">
+
+
+<p>uint16**1&lt;&lt;BitsPerSample entry arrays</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_WHITEPOINT</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>float**</p></td>
+<td width="12%">
+
+
+<p>2-entry array</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XMLPACKET</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>uint32*,void**</p></td>
+<td width="12%">
+
+
+<p>count, data</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XPOSITION</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>float*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XRESOLUTION</p></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_XRESOLUTION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>float*</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YCBCRCOEFFICIENTS</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_YCBCRCOEFFICIENTS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>float**</p></td>
+<td width="12%">
 
-<p>float**</p>
-</td>
-<td width="17%">
 
-<p>3-entry array</p>
-</td>
+<p>3-entry array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YCBCRPOSITIONING</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_YCBCRPOSITIONING</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_YCBCRSUBSAMPLING</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_YCBCRSUBSAMPLING</p></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>2</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>2</p>
-</td>
-<td width="23%">
 
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
+<p>uint16*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_YPOSITION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>TIFFTAG_YPOSITION</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
+
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
+
+<p>float*</p></td>
+<td width="12%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YRESOLUTION</p></td>
+<td width="11%"></td>
+<td width="28%">
 
-<p>TIFFTAG_YRESOLUTION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="23%">
+<p>1</p></td>
+<td width="12%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="28%">
+
 
-<p>float*&Dagger;</p>
-</td>
-<td width="17%">
-</td>
+<p>float*&Dagger;</p></td>
+<td width="12%">
+</td></tr>
 </table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&dagger; If <i>SamplesPerPixel</i> is one, then a single
-array is returned; otherwise three arrays are returned.<br>
+
+<p style="margin-left:11%;">&dagger; If
+<i>SamplesPerPixel</i> is one, then a single array is
+returned; otherwise three arrays are returned. <br>
 &Dagger; The contents of this field are quite complex. See
 <i>The ICC Profile Format Specification</i>, Annex B.3
 &quot;Embedding ICC Profiles in TIFF Files&quot; (available
 at http://www.color.org) for an explanation.</p>
-</td>
-</table>
+
+<h2>AUTOREGISTERED TAGS
 <a name="AUTOREGISTERED TAGS"></a>
-<h2>AUTOREGISTERED TAGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If you can&rsquo;t find the tag in the table above that
-means this is unsupported tag. But you still be able to read
-it&rsquo;s value if you know the data type of that tag. For
-example, if you want to read the LONG value from the tag
-33424 and ASCII string from the tag 36867 you can use the
-following code:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>uint16  count;
-void    *data;
-
-TIFFGetField(tiff, 33424, &amp;count, &amp;data);
-printf(&quot;Tag %d: %d, count %d0, 33424, *(uint32 *)data, count);
-TIFFGetField(tiff, 36867, &amp;count, &amp;data);
-printf(&quot;Tag %d: %s, count %d0, 36867, (char *)data, count);
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
+</h2>
 
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>is not supported by <b>libtiff(3TIFF),</b> library</p>
-</td>
-</table>
+
+<p style="margin-left:11%; margin-top: 1em">If you
+can&rsquo;t find the tag in the table above that means this
+is unsupported tag. But you still be able to read it&rsquo;s
+value if you know the data type of that tag. For example, if
+you want to read the LONG value from the tag 33424 and ASCII
+string from the tag 36867 you can use the following
+code:</p>
+
+<p style="margin-left:22%; margin-top: 1em">uint16 count;
+<br>
+void *data;</p>
+
+
+<p style="margin-left:22%; margin-top: 1em">TIFFGetField(tiff,
+33424, &amp;count, &amp;data); <br>
+printf(&quot;Tag %d: %d, count %d0, 33424, *(uint32 *)data,
+count); <br>
+TIFFGetField(tiff, 36867, &amp;count, &amp;data); <br>
+printf(&quot;Tag %d: %s, count %d0, 36867, (char *)data,
+count);</p>
+
+<p style="margin-left:11%; margin-top: 1em">is not
+supported by <b>libtiff(3TIFF),</b> library</p>
+
+<h2>RETURN VALUES
 <a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the tag is defined in the current
-directory; otherwise a 0 is returned.</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">1 is returned
+if the tag is defined in the current directory; otherwise a
+0 is returned.</p>
+
+<h2>DIAGNOSTICS
 <a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Unknown field, tag 0x%x</b>. An unknown tag was
-supplied.</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">All error
+messages are directed to the <b>TIFFError</b>(3TIFF)
+routine.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>Unknown
+field, tag 0x%x</b>. An unknown tag was supplied.</p>
+
+<h2>SEE ALSO
 <a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFSetField</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF),
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFOpen</b>(3TIFF),
+<b>TIFFSetField</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF),
 <b>TIFFReadDirectory</b>(3TIFF),
 <b>TIFFWriteDirectory</b>(3TIFF) <b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
 <hr>
 </body>
 </html>
index 3d3ca66003692d520f3cd39da7a566dc9d226c3a..2379121f120bef31d4018066eb57d7d89b3068d8 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index d40011dc667f46c5b2c834168bbc6cb256aaa276..f4dca6e448e0d8a2d8c35944504eb0fbadf57c1a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 71b7ec8b92bbd6f7fb6444fb12b9ba833ee43a8b..08a9924027e96d8acf065799bc44da299aeff618 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index d8663527daa822c7a445ef906d0b67e7f5981562..82350ad3ad1006bbff1508ae176c943099a4aa3c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 20798dbf60a982d6956ecf95a3f503d49217197d..d5c4c15e65ec415f932db2ee76df14271686952e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 378bea8904ac3d4fcb561026bcb2b77e70163503..b42dc0908cfa8370e9d174796d1ddc75064c0e57 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -41,8 +41,8 @@ data from an open <small>TIFF</small> file</p>
 <p><b>#include &lt;tiffio.h&gt;</b></p>
 <!-- INDENTATION -->
 <p><b>int TIFFReadEncodedTile(TIFF *</b><i>tif</i><b>,
-u_long</b> <i>tile</i><b>, u_char *</b><i>buf</i><b>,
-u_long</b> <i>size</i><b>)</b></p>
+ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>,
+tsize_t</b> <i>size</i><b>)</b></p>
 </td>
 </table>
 <a name="DESCRIPTION"></a>
index a9a907a076ccdc343f4922d373ee341ae67c35ed..1ebb09b8b3d08bf8c49b575ca8b8d0b0697360c5 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -47,12 +47,12 @@ and decode an image into a fixed-format raster</p>
 0xff)</b></p>
 <!-- INDENTATION -->
 <p><b>int TIFFReadRGBAImage(TIFF *</b><i>tif</i><b>,
-u_long</b> <i>width</i><b>, u_long</b> <i>height</i><b>,
-u_long *</b><i>raster</i><b>, int</b>
+uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>,
+uint32 *</b><i>raster</i><b>, int</b>
 <i>stopOnError</i><b>)<br>
 int TIFFReadRGBAImageOriented(TIFF *</b><i>tif</i><b>,
-u_long</b> <i>width</i><b>, u_long</b> <i>height</i><b>,
-u_long *</b><i>raster</i><b>, int</b> <i>orientation</i><b>,
+uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>,
+uint32 *</b><i>raster</i><b>, int</b> <i>orientation</i><b>,
 int</b> <i>stopOnError</i><b>)</b></p>
 </td>
 </table>
index 3ec0776db8c4f230d414f57833f81ee8d8c9e6c7..37d36d3c33d02fdb5b032567f08ad29d26ed5c06 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index cff914210687da691322dde781eedab532b77b74..6bd298a2d3502566b2055c349594fcc5a91c4cb5 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 4d9433d4b8d7ad40b02da4f80d46c3692469276a..4dd1fbccdbb6dba9d11d5a97b4bd0d2636c48555 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 916dc2e4a738ecbd26c3c463070e2be63ee4f4ae..e74295bed37bd0809b766a31411cb5807c04099a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 3ecf88c8d7711b1dd0519cdd1b562cad8edfa1b8..e825e4cbf5b790a2b55e6a9064b74c7a26d54acd 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index f278d8d2edfaa99178b96bf3680a7a235f7bcf53..be245f88dac88f680454bdb517ccbef8649f7e0e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 17968534a5264e68a7b645cca084c63a0feccacf..9047b0bcd9aeff608fa943cb8fed1cb4868bb6d8 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index ad938cda19449bc2c941b2c2ebc702a7d2d0be2d..f160fedd15a663fdafc9e3eed8ef49d77464fdcf 100644 (file)
@@ -1,14 +1,25 @@
-<!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- Creator     : groff version 1.20.1 -->
+<!-- CreationDate: Thu May  6 13:48:46 2010 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
 <meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
 <title>TIFFSetField</title>
+
 </head>
 <body>
 
-<h1 align=center>TIFFSetField</h1>
+<h1 align="center">TIFFSetField</h1>
+
 <a href="#NAME">NAME</a><br>
 <a href="#SYNOPSIS">SYNOPSIS</a><br>
 <a href="#DESCRIPTION">DESCRIPTION</a><br>
 <a href="#SEE ALSO">SEE ALSO</a><br>
 
 <hr>
+
+
+<h2>NAME
 <a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFSetField, TIFFVSetField &minus; set the value(s) of a
-tag in a <small>TIFF</small> file open for writing</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">TIFFSetField,
+TIFFVSetField &minus; set the value(s) of a tag in a
+<small>TIFF</small> file open for writing</p>
+
+<h2>SYNOPSIS
 <a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;tiffio.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
 <i>tag</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdarg.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFVSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
+
+<p style="margin-left:11%; margin-top: 1em"><b>#include
+&lt;stdarg.h&gt;</b></p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>int
+TIFFVSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
 <i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p>
-</td>
-</table>
+
+<h2>DESCRIPTION
 <a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFSetField</i> sets the value of a field or
-pseudo-tag in the current directory associated with the open
-<small>TIFF</small> file <i>tif</i>. (A <i>pseudo-tag</i> is
-a parameter that is used to control the operation of the
-<small>TIFF</small> library but whose value is not read or
-written to the underlying file.) To set the value of a field
-the file must have been previously opened for writing with
-<i>TIFFOpen</i>(3TIFF); pseudo-tags can be set whether the
-file was opened for reading or writing. The field is
-identified by <i>tag</i>, one of the values defined in the
-include file <b>tiff.h</b> (see also the table below). The
-actual value is specified using a variable argument list, as
-prescribed by the <i>stdarg</i>(3) interface (or, on some
-machines, the <i>varargs</i>(3) interface.)</p>
-<!-- INDENTATION -->
-<p><i>TIFFVSetField</i> is functionally equivalent to
-<i>TIFFSetField</i> except that it takes a pointer to a
-variable argument list. <i>TIFFVSetField</i> is useful for
-writing routines that are layered on top of the
-functionality provided by <i>TIFFSetField</i>.</p>
-<!-- INDENTATION -->
-<p>The tags understood by <i>libtiff</i>, the number of
-parameter values, and the expected types for the parameter
-values are shown below. The data types are: <i>char*</i> is
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b><i>TIFFSetField</i></b>
+sets the value of a field or pseudo-tag in the current
+directory associated with the open <small>TIFF</small> file
+<i>tif</i>. (A <i>pseudo-tag</i> is a parameter that is used
+to control the operation of the <small>TIFF</small> library
+but whose value is not read or written to the underlying
+file.) To set the value of a field the file must have been
+previously opened for writing with <i>TIFFOpen</i>(3TIFF);
+pseudo-tags can be set whether the file was opened for
+reading or writing. The field is identified by <i>tag</i>,
+one of the values defined in the include file <b>tiff.h</b>
+(see also the table below). The actual value is specified
+using a variable argument list, as prescribed by the
+<i>stdarg</i>(3) interface (or, on some machines, the
+<i>varargs</i>(3) interface.)</p>
+
+
+<p style="margin-left:11%; margin-top: 1em"><i>TIFFVSetField</i>
+is functionally equivalent to <i>TIFFSetField</i> except
+that it takes a pointer to a variable argument list.
+<i>TIFFVSetField</i> is useful for writing routines that are
+layered on top of the functionality provided by
+<i>TIFFSetField</i>.</p>
+
+<p style="margin-left:11%; margin-top: 1em">The tags
+understood by <i>libtiff</i>, the number of parameter
+values, and the expected types for the parameter values are
+shown below. The data types are: <i>char*</i> is
 null-terminated string and corresponds to the
 <small>ASCII</small> data type; <i>uint16</i> is an unsigned
 16-bit value; <i>uint32</i> is an unsigned 32-bit value;
 <i>uint16*</i> is an array of unsigned 16-bit values.
 <i>void*</i> is an array of data values of unspecified
 type.</p>
-<!-- INDENTATION -->
-<p>Consult the <small>TIFF</small> specification for
-information on the meaning of each tag.</p></td>
-</table>
-<!-- TABS -->
 
-<p><i>Tag Name Count Types Notes</i></p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+<p style="margin-left:11%; margin-top: 1em">Consult the
+<small>TIFF</small> specification for information on the
+meaning of each tag.</p>
+
+<table width="100%" border="0" rules="none" frame="void"
+       cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_ARTIST</p>
-</td>
-<td width="8%">
+<p><i>Tag Name</i></p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p><i>Count</i></p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_BADFAXLINES</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p><i>Types</i></p></td>
+<td width="11%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
+
+<p><i>Notes</i></p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_BITSPERSAMPLE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_ARTIST</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_CLEANFAXDATA</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_BADFAXLINES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_COLORMAP</p>
-</td>
-<td width="8%">
 
-<p>3</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_BITSPERSAMPLE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16*</p>
-</td>
-<td width="16%">
 
-<p>1&lt;&lt;BitsPerSample arrays</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_COMPRESSION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_CLEANFAXDATA</p></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_COPYRIGHT</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_COLORMAP</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p>3</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_DATETIME</p>
-</td>
-<td width="8%">
+<p>uint16*</p></td>
+<td width="11%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p>1&lt;&lt;BitsPerSample arrays</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_DOCUMENTNAME</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_COMPRESSION</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_DOTRANGE</p>
-</td>
-<td width="8%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>2</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_EXTRASAMPLES</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16,uint16*</p>
-</td>
-<td width="16%">
 
-<p>&dagger; count &amp; types array</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_FAXFILLFUNC</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFFaxFillFunc</p>
-</td>
-<td width="16%">
 
-<p>G3/G4 compression pseudo-tag</p>
-</td>
+<p>TIFFTAG_COPYRIGHT</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_FAXMODE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_DATETIME</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>int</p>
-</td>
-<td width="16%">
 
-<p>&dagger; G3/G4 compression pseudo-tag</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_FILLORDER</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_DOCUMENTNAME</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_GROUP3OPTIONS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_DOTRANGE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_GROUP4OPTIONS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_EXTRASAMPLES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_HALFTONEHINTS</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>uint16,uint16*</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+
+<p>&dagger; count &amp; types array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_HOSTCOMPUTER</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_FAXFILLFUNC</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_ICCPROFILE</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>TIFFFaxFillFunc</p></td>
+<td width="11%">
 
-<p>uint32,void*</p>
-</td>
-<td width="16%">
 
-<p>count, profile data</p>
-</td>
+<p>G3/G4 compression pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_IMAGEDEPTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_FAXMODE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_IMAGEDESCRIPTION</p>
-</td>
-<td width="8%">
+<p>int</p></td>
+<td width="11%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p>&dagger; G3/G4 compression pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_IMAGELENGTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_FILLORDER</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_IMAGEWIDTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_INKNAMES</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_GROUP3OPTIONS</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>2</p>
-</td>
-<td width="24%">
 
-<p>uint16, char*</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_INKSET</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_JPEGCOLORMODE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_GROUP4OPTIONS</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>int</p>
-</td>
-<td width="16%">
 
-<p>&dagger; JPEG pseudo-tag</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_JPEGQUALITY</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
 
-<p>int</p>
-</td>
-<td width="16%">
 
-<p>JPEG pseudo-tag</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_JPEGTABLES</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_HALFTONEHINTS</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>2</p>
-</td>
-<td width="24%">
 
-<p>uint32*,void*</p>
-</td>
-<td width="16%">
+<p>2</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>&dagger; count &amp; tables</p>
-</td>
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_JPEGTABLESMODE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_HOSTCOMPUTER</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>int</p>
-</td>
-<td width="16%">
 
-<p>&dagger; JPEG pseudo-tag</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_MAKE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+
+<p>TIFFTAG_ICCPROFILE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_MATTEING</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32,void*</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>count, profile data</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_MAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_IMAGEDEPTH</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_MINSAMPLEVALUE</p>
-</td>
-<td width="8%">
+<p>uint32</p></td>
+<td width="11%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_MODEL</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_IMAGEDESCRIPTION</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_ORIENTATION</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_IMAGELENGTH</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_PAGENAME</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+
+<p>TIFFTAG_IMAGEWIDTH</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_PAGENUMBER</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_PHOTOMETRIC</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_INKNAMES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_PHOTOSHOP</p>
-</td>
-<td width="8%">
 
-<p>?</p>
-</td>
-<td width="24%">
+<p>uint16, char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>uint32,void*</p>
-</td>
-<td width="16%">
 
-<p>count, data</p>
-</td>
+<p>TIFFTAG_INKSET</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_PLANARCONFIG</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_PREDICTOR</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_JPEGCOLORMODE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_PRIMARYCHROMATICITIES</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>int</p></td>
+<td width="11%">
 
-<p>float*</p>
-</td>
-<td width="16%">
 
-<p>6-entry array</p>
-</td>
+<p>&dagger; JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_REFERENCEBLACKWHITE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_JPEGQUALITY</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>float*</p>
-</td>
-<td width="16%">
 
-<p>&dagger; 2*SamplesPerPixel array</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_RESOLUTIONUNIT</p>
-</td>
-<td width="8%">
+<p>int</p></td>
+<td width="11%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_RICHTIFFIPTC</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_JPEGTABLES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32,void*</p>
-</td>
-<td width="16%">
 
-<p>count, data</p>
-</td>
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_ROWSPERSTRIP</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32*,void*</p></td>
+<td width="11%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger; must be &gt; 0</p>
-</td>
+<p>&dagger; count &amp; tables</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_SAMPLEFORMAT</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_JPEGTABLESMODE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_SAMPLESPERPIXEL</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>int</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger; value must be &lt;= 4</p>
-</td>
+<p>&dagger; JPEG pseudo-tag</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_MAKE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_SMAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>double</p>
-</td>
-<td width="16%">
-</td>
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_SMINSAMPLEVALUE</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_MATTEING</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>double</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_SOFTWARE</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_STONITS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_MAXSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>double</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_SUBFILETYPE</p>
-</td>
-<td width="8%">
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_MINSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_SUBIFD</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_MODEL</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16,uint32*</p>
-</td>
-<td width="16%">
 
-<p>count &amp; offsets array</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_TARGETPRINTER</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_ORIENTATION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PAGENAME</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PAGENUMBER</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>2</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PHOTOMETRIC</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PHOTOSHOP</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>?</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32,void*</p></td>
+<td width="11%">
+
+
+<p>count, data</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_PLANARCONFIG</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_THRESHHOLDING</p>
-</td>
-<td width="8%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_TILEDEPTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_PREDICTOR</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_TILELENGTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint16</p></td>
+<td width="11%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger; must be a multiple of 8</p>
-</td>
+<p>&dagger;</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_TILEWIDTH</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_PRIMARYCHROMATICITIES</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint32</p>
-</td>
-<td width="16%">
 
-<p>&dagger; must be a multiple of 8</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_TRANSFERFUNCTION</p>
-</td>
-<td width="8%">
+<p>float*</p></td>
+<td width="11%">
 
-<p>1 or 3&Dagger; uint16*</p>
-</td>
-<td width="24%"></td>
-<td width="16%">
 
-<p>1&lt;&lt;BitsPerSample entry arrays</p>
-</td>
+<p>6-entry array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_WHITEPOINT</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_REFERENCEBLACKWHITE</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>float*</p>
-</td>
-<td width="16%">
 
-<p>2-entry array</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_XMLPACKET</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>float*</p></td>
+<td width="11%">
 
-<p>uint32,void*</p>
-</td>
-<td width="16%">
 
-<p>count, data</p>
-</td>
+<p>&dagger; 6-entry array</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_RESOLUTIONUNIT</p></td>
+<td width="11%"></td>
+<td width="29%">
+
 
-<p>TIFFTAG_XPOSITION</p>
-</td>
-<td width="8%">
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>float</p>
-</td>
-<td width="16%">
-</td>
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_XRESOLUTION</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_RICHTIFFIPTC</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>float</p>
-</td>
-<td width="16%">
-</td>
+<p>2</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_YCBCRCOEFFICIENTS</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>uint32,void*</p></td>
+<td width="11%">
 
-<p>float*</p>
-</td>
-<td width="16%">
 
-<p>&dagger; 3-entry array</p>
-</td>
+<p>count, data</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
 
-<p>TIFFTAG_YCBCRPOSITIONING</p>
-</td>
-<td width="8%">
 
-<p>1</p>
-</td>
-<td width="24%">
+<p>TIFFTAG_ROWSPERSTRIP</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>TIFFTAG_YCBCRSAMPLING</p>
-</td>
-<td width="8%">
 
-<p>2</p>
-</td>
-<td width="24%">
+<p>uint32</p></td>
+<td width="11%">
 
-<p>uint16</p>
-</td>
-<td width="16%">
 
-<p>&dagger;</p>
-</td>
+<p>&dagger; must be &gt; 0</p></td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%">
+
 
-<p>TIFFTAG_YPOSITION</p>
-</td>
-<td width="8%">
+<p>TIFFTAG_SAMPLEFORMAT</p></td>
+<td width="11%"></td>
+<td width="29%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>float</p>
-</td>
-<td width="16%">
-</td>
+<p>1</p></td>
+<td width="11%">
+</td></tr>
 <tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+
 
-<p>TIFFTAG_YRESOLUTION</p>
-</td>
-<td width="8%">
+<p>&dagger;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SAMPLESPERPIXEL</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+
+
+<p>&dagger; value must be &lt;= 4</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
 
-<p>1</p>
-</td>
-<td width="24%">
 
-<p>float</p>
-</td>
-<td width="16%">
-</td>
+<p>TIFFTAG_SMAXSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>double</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SMINSAMPLEVALUE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>double</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SOFTWARE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_STONITS</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>double</p></td>
+<td width="11%">
+
+
+<p>&dagger;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SUBFILETYPE</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_SUBIFD</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>2</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16,uint32*</p></td>
+<td width="11%">
+
+
+<p>count &amp; offsets array</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TARGETPRINTER</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>char*</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_THRESHHOLDING</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILEDEPTH</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32</p></td>
+<td width="11%">
+
+
+<p>&dagger;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILELENGTH</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32</p></td>
+<td width="11%">
+
+
+<p>&dagger; must be a multiple of 8</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TILEWIDTH</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32</p></td>
+<td width="11%">
+
+
+<p>&dagger; must be a multiple of 8</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_TRANSFERFUNCTION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1 or 3&Dagger; uint16*</p></td>
+<td width="11%">
+
+
+<p>1&lt;&lt;BitsPerSample entry arrays</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_WHITEPOINT</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float*</p></td>
+<td width="11%">
+
+
+<p>2-entry array</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XMLPACKET</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>2</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint32,void*</p></td>
+<td width="11%">
+
+
+<p>count, data</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XPOSITION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_XRESOLUTION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YCBCRCOEFFICIENTS</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float*</p></td>
+<td width="11%">
+
+
+<p>&dagger; 3-entry array</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YCBCRPOSITIONING</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+
+
+<p>&dagger;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YCBCRSAMPLING</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>2</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>uint16</p></td>
+<td width="11%">
+
+
+<p>&dagger;</p></td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YPOSITION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%">
+
+
+<p>TIFFTAG_YRESOLUTION</p></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>1</p></td>
+<td width="11%">
+</td></tr>
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="38%"></td>
+<td width="11%"></td>
+<td width="29%">
+
+
+<p>float</p></td>
+<td width="11%">
+</td></tr>
 </table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&dagger; Tag may not have its values changed once data is
-written.<br>
+
+<p style="margin-left:11%;">&dagger; Tag may not have its
+values changed once data is written. <br>
 &Dagger; If <i>SamplesPerPixel</i> is one, then a single
-array is passed; otherwise three arrays should be
-passed.<br>
+array is passed; otherwise three arrays should be passed.
+<br>
 * The contents of this field are quite complex. See <b>The
 ICC Profile Format Specification</b>, Annex B.3
 &quot;Embedding ICC Profiles in TIFF Files&quot; (available
 at http://www.color.org) for an explanation.</p>
-</td>
-</table>
+
+<h2>RETURN VALUES
 <a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the operation was successful. Otherwise,
-0 is returned if an error was detected.</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">1 is returned
+if the operation was successful. Otherwise, 0 is returned if
+an error was detected.</p>
+
+<h2>DIAGNOSTICS
 <a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: Cannot modify tag &quot;%s&quot; while
-writing</b>. Data has already been written to the file, so
-the specified tag&rsquo;s value can not be changed. This
-restriction is applied to all tags that affect the format of
-written data.</p>
-<!-- INDENTATION -->
-<p><b>%d: Bad value for &quot;%s&quot;</b>. An invalid value
-was supplied for the named tag.</p>
-</td>
-</table>
+</h2>
+
+
+<p style="margin-left:11%; margin-top: 1em">All error
+messages are directed to the <b>TIFFError</b>(3TIFF)
+routine.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>%s: Cannot
+modify tag &quot;%s&quot; while writing</b>. Data has
+already been written to the file, so the specified
+tag&rsquo;s value can not be changed. This restriction is
+applied to all tags that affect the format of written
+data.</p>
+
+<p style="margin-left:11%; margin-top: 1em"><b>%d: Bad
+value for &quot;%s&quot;</b>. An invalid value was supplied
+for the named tag.</p>
+
+<h2>SEE ALSO
 <a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFGetField</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF),
+</h2>
+
+
+
+<p style="margin-left:11%; margin-top: 1em"><b>TIFFOpen</b>(3TIFF),
+<b>TIFFGetField</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF),
 <b>TIFFWriteDirectory</b>(3TIFF),
 <b>TIFFReadDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
+
+<p style="margin-left:11%; margin-top: 1em">Libtiff library
+home page: <b>http://www.remotesensing.org/libtiff/</b></p>
 <hr>
 </body>
 </html>
index d030df40ac319f4ce8901d66ed956356b930972b..18f2e8b43c179109b8358fdfdd804e90ffff9198 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -41,7 +41,7 @@ warning interface</p>
 <p><b>void TIFFWarning(const char *</b><i>module</i><b>,
 const char *</b><i>fmt</i><b>,</b> <i>...</i><b>)</b></p>
 <!-- INDENTATION -->
-<p><b>#include &lt;stdargh.h&gt;</b></p>
+<p><b>#include &lt;stdarg.h&gt;</b></p>
 <!-- INDENTATION -->
 <p><b>typedef void (*TIFFWarningHandler)(const char
 *</b><i>module</i><b>, const char *</b><i>fmt</i><b>,
index ba22c0e5a38a02c0d8b71186c3b333395f17418e..1e72a5bec3cc1934ce2c0c6a0f9cc7034c4d46be 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 78c4e769489c0391b8aa00b98bab294cae01fbba..3b90199a08ecac5cc8d15982de00cf1e192fc38f 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index dcbf479aa2e6128a46a05438d0b57a1b11954352..5e85f6ddbe453bbff755042374ad7df25e17600b 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index eaceba6bd5baa4dec838d033b5f88c75378da67c..9a3ef0c1995072ac4be39fa7531b6e89061285ea 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 543b0788c25a858b0fe57c673d2500a05f9396af..639af6c717d215145e874467bbb97cb261934c62 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index da929e7295956d33bb345e45d1efe4a27c0482b9..4c68f9d4b974ad340f06196d0e8fa427bf49dc7a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index fa9ddc3a657b33f13a40e67eaf0c8aefc69563f5..6f6ffd23bd58d519e995d0bdcbf0d0aa44fa8319 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index ac667bebdbd758d0c7f0ff3f9983d2c6bdd9eab2..09009b5faba61559bd89b74659f11414f32c8632 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:15 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 08c664361874edc2920eacb905e5a03c55eb7258..d2007542f845d30b5c620d8aee32eea134db358c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 38fb745745dbefc69412211736a8b185ad2c2a54..edf423b6c3f9c99f1705fae6ae17171bac92dc26 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 296f4fa1b54a1a3c6d9eadf829bddcf349b56b5d..c3f38e0b7e3cb9d8b27441a8e1a0a5ca96718e1e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:08 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index f896d262b5bbf22266439f0ab82c9ee12ee07a4b..2b47fc3de788e52c5254ac248a553352682c9f23 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:09 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 1c81247872d83dd42d8fdf4ba2f90e6e7f241909..5a14254ed485a5de869c424f323f335244bb681c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 1b7ac9c0278822488f34950f45564dcb05627390..b8bc7c62debc7719d9f9fd5d81eb2dc2cf34c23e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:17 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 0663168b62f003a208a78656671a21a1072b555f..80d1db4587531f2e7aa7a65959643493e98ad22d 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:10 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index a37009d2b9229afd4b6746db8614eb44b5177ca3..addeb51590887d4b9409ee2964cc3f26ca10ab01 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
diff --git a/src/tiff/html/man/bmp2tiff.1.html b/src/tiff/html/man/bmp2tiff.1.html
new file mode 100644 (file)
index 0000000..1104a49
--- /dev/null
@@ -0,0 +1,121 @@
+<!-- Creator     : groff version 1.18.1 -->
+<!-- CreationDate: Sun Mar  6 13:59:56 2005 -->
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta name="Content-Style" content="text/css">
+<title>BMP2TIFF</title>
+</head>
+<body>
+
+<h1 align=center>BMP2TIFF</h1>
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+<a name="NAME"></a>
+<h2>NAME</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>bmp2tiff &minus; create a <small>TIFF</small> file from a
+Microsoft Windows Device Independent Bitmap image file</p>
+</td>
+</table>
+<a name="SYNOPSIS"></a>
+<h2>SYNOPSIS</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>bmp2tiff</b> [ <i>options</i> ] <i>input.bmp
+output.tiff</i></p>
+</td>
+</table>
+<a name="DESCRIPTION"></a>
+<h2>DESCRIPTION</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><i>bmp2tiff</i> converts a Microsoft Windows Device
+Independent Bitmap image file to <small>TIFF.</small> By
+default, the <small>TIFF</small> image is created with data
+samples packed (<i>PlanarConfiguration</i>=1), compressed
+with the PackBits algorithm
+(<i>Compression</i>=<i>32773),</i> and with each strip no
+more than 8 kilobytes. These characteristics can overridden,
+or explicitly specified with the options described
+below.</p>
+</td>
+</table>
+<a name="OPTIONS"></a>
+<h2>OPTIONS</h2>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="5" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="11%"></td>
+<td width="2%">
+
+<p><b>&minus;c</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify a compression scheme to use when writing image
+data: <b>&minus;c none</b> for no compression, <b>-c
+packbits</b> for the PackBits compression algorithm (the
+default), <b>-c jpeg</b> for the baseline JPEG compression
+algorithm, <b>-c zip</b> for the Deflate compression
+algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
+Welch.</p>
+</td>
+<td width="0%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;r &lt;number&gt;</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>Write data with a specified number of rows per strip; by
+default the number of rows/strip is selected so that each
+strip is approximately 8 kilobytes.</p>
+</td>
+</table>
+<a name="SEE ALSO"></a>
+<h2>SEE ALSO</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><i>gif2tiff</i>(1), <i>pal2rgb</i>(1),
+<i>ppm2tiff</i>(1), <i>raw2tiff</i>(1), <i>ras2tiff</i>(1),
+<i>sgi2tiff</i>(1), <i>libtiff</i>(3TIFF)</p>
+</td>
+</table>
+<hr>
+</body>
+</html>
index 3e8c0d78c03ba9dbd231c546d078fe74d97fd7c1..aba6fc30754648b09345b8d2d2348b6476e110c9 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:11 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -28,7 +28,7 @@
 <td width="8%"></td>
 <td width="91%">
 <p>fax2ps &minus; convert a <small>TIFF</small> facsimile to
-compressed &trade;</p>
+compressed PostScript&trade;</p>
 </td>
 </table>
 <a name="SYNOPSIS"></a>
@@ -39,7 +39,7 @@ compressed &trade;</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>fax2ps</b> [ <i>options</i> ] [ <i>file</i>... ]</p>
+<p><b>fax2ps</b> [ <i>options</i> ] [ <i>file ...</i> ]</p>
 </td>
 </table>
 <a name="DESCRIPTION"></a>
@@ -51,8 +51,9 @@ compressed &trade;</p>
 <td width="8%"></td>
 <td width="91%">
 <p><i>fax2ps</i> reads one or more <small>TIFF</small>
-facsimile image files and prints a compressed form of on the
-standard output that is suitable for printing.</p>
+facsimile image files and prints a compressed form of
+PostScript on the standard output that is suitable for
+printing.</p>
 <!-- INDENTATION -->
 <p>By default, each page is scaled to reflect the image
 dimensions and resolutions stored in the file. The
@@ -64,38 +65,38 @@ default output page is 8.5 by 11 inches. Alternate page
 dimensions can be specified in inches with the
 <b>&minus;W</b> and <b>&minus;H</b> options.</p>
 <!-- INDENTATION -->
-<p>By default <i>fax2ps</i> generates for all pages in the
-file. The <b>&minus;p</b> option can be used to select one
-or more pages from a multi-page document.</p>
-<!-- INDENTATION -->
-<p><i>fax2ps</i> generates a compressed form of that is
-optimized for sending pages of text to a printer attached to
-a host through a low-speed link (such as a serial line).
-Each output page is filled with white and then only the
-black areas are drawn. The specification of the black
-drawing operations is optimized by using a special font that
-encodes the move-draw operations required to fill the black
-regions on the page. This compression scheme typically
-results in a substantially reduced description, relative to
-the straightforward imaging of the page with a <i>image</i>
-operator. This algorithm can, however, be ineffective for
-continuous-tone and white-on-black images. For these images,
-it sometimes is more efficient to send the raster bitmap
-image directly; see <i>tiff2ps</i>(1).</p>
+<p>By default <i>fax2ps</i> generates PostScript for all
+pages in the file. The <b>&minus;p</b> option can be used to
+select one or more pages from a multi-page document.</p>
+<!-- INDENTATION -->
+<p><i>fax2ps</i> generates a compressed form of PostScript
+that is optimized for sending pages of text to a PostScript
+printer attached to a host through a low-speed link (such as
+a serial line). Each output page is filled with white and
+then only the black areas are drawn. The PostScript
+specification of the black drawing operations is optimized
+by using a special font that encodes the move-draw
+operations required to fill the black regions on the page.
+This compression scheme typically results in a substantially
+reduced PostScript description, relative to the
+straightforward imaging of the page with a PostScript
+<i>image</i> operator. This algorithm can, however, be
+ineffective for continuous-tone and white-on-black images.
+For these images, it sometimes is more efficient to send the
+raster bitmap image directly; see <b>tiff2ps</b>(1).</p>
 </td>
 </table>
 <a name="OPTIONS"></a>
 <h2>OPTIONS</h2>
 <!-- TABS -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+       cols="4" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
-<td width="10%"></td>
+<td width="11%"></td>
 <td width="11%">
 
 <p><b>&minus;p</b> <i>number</i></p>
 </td>
-<td width="1%"></td>
 <td width="76%">
 
 <p>Print only the indicated page. Multiple pages may be
@@ -144,14 +145,13 @@ taken from the file.</p>
 </table>
 <!-- TABS -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+       cols="4" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
 <td width="10%"></td>
-<td width="11%">
+<td width="12%">
 
 <p><b>&minus;S</b></p>
 </td>
-<td width="1%"></td>
 <td width="76%">
 
 <p>Scale each page of image data to fill the output page
@@ -163,11 +163,10 @@ file.</p>
 </td>
 <tr valign="top" align="left">
 <td width="10%"></td>
-<td width="11%">
+<td width="12%">
 
 <p><b>&minus;W</b> <i>width</i></p>
 </td>
-<td width="1%"></td>
 <td width="76%">
 
 <p>Use <i>width</i> as the width, in inches, of the output
@@ -177,11 +176,10 @@ page.</p>
 </td>
 <tr valign="top" align="left">
 <td width="10%"></td>
-<td width="11%">
+<td width="12%">
 
 <p><b>&minus;H</b> <i>height</i></p>
 </td>
-<td width="1%"></td>
 <td width="76%">
 
 <p>Use <i>height</i> as the height, in inches, of the
@@ -206,7 +204,7 @@ may be generated due to transmission errors in received
 facsimile. <i>fax2ps</i> attempts to recover from such data
 errors by resynchronizing decoding at the end of the current
 scanline. This can result in long horizontal black lines in
-the resultant image.</p>
+the resultant PostScript image.</p>
 </td>
 </table>
 <a name="NOTES"></a>
@@ -217,9 +215,9 @@ the resultant image.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>If the destination printer supports Level II then it is
-always faster to just send the encoded bitmap generated by
-the <b>tiff2ps</b>(1) program.</p>
+<p>If the destination printer supports PostScript Level II
+then it is always faster to just send the encoded bitmap
+generated by the <b>tiff2ps</b>(1) program.</p>
 </td>
 </table>
 <a name="BUGS"></a>
@@ -231,8 +229,8 @@ the <b>tiff2ps</b>(1) program.</p>
 <td width="8%"></td>
 <td width="91%">
 <p><i>fax2ps</i> should probably figure out when it is doing
-a poor job of compressing the output and just generate to
-image the bitmap raster instead.</p>
+a poor job of compressing the output and just generate
+PostScript to image the bitmap raster instead.</p>
 </td>
 </table>
 <a name="SEE ALSO"></a>
index dca50e1902ea59f45ec3626260bff38e702e808b..3aac8c7939d2d73eec59b2bdda4ba230ede18c27 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:18 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -485,10 +485,10 @@ data written to the output file. By default (or when value
 <b>0</b> is specified), <i>tiffcp</i> attempts to set the
 rows/strip that no more than 8 kilobytes of data appear in a
 strip (with except of G3/G4 compression schemes). If you
-specify special value <b>-1</b> it will results in infinite
-number of the rows per strip. The entire image will be the
-one strip in that case. This is default in case of G3/G4
-output compression schemes.</p>
+specify special value <b>&minus;1</b> it will results in
+infinite number of the rows per strip. The entire image will
+be the one strip in that case. This is default in case of
+G3/G4 output compression schemes.</p>
 </td>
 <td width="0%">
 </td>
index ffd3cac763454ece9d9c90c7285472ed0c78210b..c50735377f0605cabe985b5bb38cd635a276f614 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -73,10 +73,10 @@ specified with the options described below.</p>
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
-packbits</b> for the PackBits compression algorithm, <b>-c
-zip</b> for the Deflate compression algorithm, and
-<b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch (the
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
+packbits</b> for the PackBits compression algorithm,
+<b>&minus;c zip</b> for the Deflate compression algorithm,
+and <b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch (the
 default).</p>
 </td>
 <td width="0%">
index 9fdba2e199870401d7f34d1a68785d22a2e48f8d..7e9e8d2c7f19f2be20dd47fbd39e647d3cf70d8a 100644 (file)
@@ -1,5 +1,4 @@
 <HTML><HEAD><TITLE>Libtiff HTML manpage index</TITLE></HEAD><BODY BGCOLOR=white><ul><H2>Man Pages</h2><p>
-<li><A HREF=libtiff.3tiff.html>libtiff.3tiff.html</a>
 <li><A HREF=TIFFbuffer.3tiff.html>TIFFbuffer.3tiff.html</a>
 <li><A HREF=TIFFClose.3tiff.html>TIFFClose.3tiff.html</a>
 <li><A HREF=TIFFcodec.3tiff.html>TIFFcodec.3tiff.html</a>
@@ -53,6 +52,7 @@
 <li><A HREF=tiff2rgba.1.html>tiff2rgba.1.html</a>
 <li><A HREF=tiffcmp.1.html>tiffcmp.1.html</a>
 <li><A HREF=tiffcp.1.html>tiffcp.1.html</a>
+<li><A HREF=tiffcrop.1.html>tiffcrop.1.html</a>
 <li><A HREF=tiffdither.1.html>tiffdither.1.html</a>
 <li><A HREF=tiffdump.1.html>tiffdump.1.html</a>
 <li><A HREF=tiffgt.1.html>tiffgt.1.html</a>
index 8a4f5075e116e0f715fd1d358a263ecbf85c1d1b..931ae94b4c8b58e6afc341d80bf4d6259a7d50fc 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:07 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -1147,1991 +1147,4 @@ another</big></p>
 are recognized and handled by the library. If no use is
 indicated in the table, then the library reads and writes
 the tag, but does not use it internally. Note that some tags
-are meaningful only when a particular compression scheme is
-being used; e.g. <i>Group3Options</i> is only useful if
-<i>Compression</i> is set to</big> CCITT <big>Group 3
-encoding. Tags of this sort are considered
-<i>codec-specific</i> tags and the library does not
-recognize them except when the <i>Compression</i> tag has
-been previously set to the relevant compression
-scheme.</big></p>
-<!-- INDENTATION -->
-<pre><big><i>Tag Name                Value  R/W  Library Use/Notes
-</i></big></pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Artist</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>315</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>BadFaxLines</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>326</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>BitsPerSample</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>258</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CellLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>265</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CellWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>264</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CleanFaxData</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>327</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ColorMap</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>320</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ColorResponseUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>300</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Compression</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>259</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>choosing codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ConsecutiveBadFaxLines</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>328</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Copyright 33432 R/W</big></p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DataType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32996</big></p>
-</td>
-<td width="53%">
-
-<p><big>R</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>obsoleted by SampleFormat tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DateTime</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>306</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DocumentName</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>269</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DotRange</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>336</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ExtraSamples</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>338</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxRecvParams</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34908</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxSubAddress</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34909</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxRecvTime</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34910</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FillOrder</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>266</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control bit order</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FreeByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>289</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FreeOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>288</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>GrayResponseCurve</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>291</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>GrayResponseUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>290</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Group3Options</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>292</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Group4Options</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>293</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>HostComputer</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>316</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageDepth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32997</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip calculations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageDescription</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>270</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>257</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>256</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>InkNames</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>333</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>InkSet</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>332</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>JPEGTables</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>347</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by JPEG codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Make</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>271</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Matteing</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32995</big></p>
-</td>
-<td width="53%">
-
-<p><big>R</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>obsoleted by ExtraSamples tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>MaxSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>281</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>MinSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>280</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Model</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>272</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>NewSubFileType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>254</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>called SubFileType in spec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>NumberOfInks</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>334</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Orientation</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>274</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PageName</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>285</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PageNumber</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>297</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PhotometricInterpretation</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>262</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>R/Wused by Group 3 and JPEG codecs</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PlanarConfiguration</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>284</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Predictor</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>317</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by LZW and Deflate codecs</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PrimaryChromacities</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>319</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ReferenceBlackWhite</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>532</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ResolutionUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>296</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>RowsPerStrip</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>278</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SampleFormat</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>339</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SamplesPerPixel</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>277</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SMinSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>340</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SMaxSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>341</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Software</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>305</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StoNits</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>37439</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StripByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>279</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StripOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>273</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SubFileType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>255</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>called OSubFileType in spec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TargetPrinter</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>337</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Thresholding</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>263</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>324</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileDepth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32998</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip calculations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>323</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>324</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>322</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TransferFunction</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>301</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>WhitePoint</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>318</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>XPosition</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>286</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>XResolution</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>282</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrCoefficients</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>529</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by TIFFRGBAImage support</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrPositioning</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>531</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip size calulcations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrSubsampling</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>530</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YPosition</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>286</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YResolution</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>283</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-</table>
-<a name="PSEUDO TAGS"></a>
-<h2>PSEUDO TAGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>In addition to the normal</big> TIFF <big>tags the
-library supports a collection of tags whose values lie in a
-range outside the valid range of</big> TIFF <big>tags. These
-tags are termed <i>pseud-tags</i> and are used to control
-various codec-specific functions within the library. The
-table below summarizes the defined pseudo-tags.</big></p>
-<!-- INDENTATION -->
-<pre><big><i>Tag Name                Codec  R/W  Library Use/Notes
-</i></big></pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_FAXMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>G3</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>general codec operation</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_FAXFILLFUNC</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>G3/G4</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>bitmap fill function</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>compression quality control</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGCOLORMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control colorspace conversions</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGTABLESMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control contents of <i>JPEGTables</i> tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_ZIPQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>Deflate</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wcompression quality level</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_PIXARLOGDATAFMT</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>PixarLog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wuser data format</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_PIXARLOGQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>PixarLog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wcompression quality level</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_SGILOGDATAFMT</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>SGILog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>user data format</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_FAXMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the operation of the Group 3 codec. Possible
-values (independent bits that can be combined by
-or&rsquo;ing them together) are: FAXMODE_CLASSIC (enable
-old-style format in which the</big> RTC <big>is written at
-the end of the last strip), FAXMODE_NORTC (opposite of
-FAXMODE_CLASSIC; also called FAXMODE_CLASSF), FAXMODE_NOEOL
-(do not write</big> EOL <big>codes at the start of each row
-of data), FAXMODE_BYTEALIGN (align each encoded row to an
-8-bit boundary), FAXMODE_WORDALIGN (align each encoded row
-to an 16-bit boundary), The default value is dependent on
-the compression scheme; this pseudo-tag is used by the
-various G3 and G4 codecs to share code.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_FAXFILLFUNC</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the function used to convert arrays of black
-and white runs to packed bit arrays. This hook can be used
-to image decoded scanlines in multi-bit depth rasters (e.g.
-for display in colormap mode) or for other purposes. The
-default value is a pointer to a builtin function that images
-packed bilevel data.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_IPTCNEWSPHOTO</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Tag contaings image metadata per the IPTC newsphoto
-spec: Headline, captioning, credit, etc... Used by most wire
-services.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PHOTOSHOP</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Tag contains Photoshop captioning information and
-metadata. Photoshop uses in parallel and redundantly
-alongside IPTCNEWSPHOTO information.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression quality level used in the
-baseline algorithm. Note that quality levels are in the
-range 0-100 with a default value of 75.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGCOLORMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control whether or not conversion is done between
-RGB and YCbCr colorspaces. Possible values are:
-JPEGCOLORMODE_RAW (do not convert), and JPEGCOLORMODE_RGB
-(convert to/from RGB) The default value is
-JPEGCOLORMODE_RAW.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGTABLESMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the information written in the
-<i>JPEGTables</i> tag. Possible values (independent bits
-that can be combined by or&rsquo;ing them together) are:
-JPEGTABLESMODE_QUANT (include quantization tables), and
-JPEGTABLESMODE_HUFF (include Huffman encoding tables). The
-default value is
-JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_ZIPQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression technique used by the
-Deflate codec. Quality levels are in the range 1-9 with
-larger numbers yielding better compression at the cost of
-more computation. The default quality level is 6 which
-yields a good time-space tradeoff.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PIXARLOGDATAFMT</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the format of user data passed <i>in</i> to
-the PixarLog codec when encoding and passed <i>out</i> from
-when decoding. Possible values are: PIXARLOGDATAFMT_8BIT for
-8-bit unsigned pixels, PIXARLOGDATAFMT_8BITABGR for 8-bit
-unsigned ABGR-ordered pixels, PIXARLOGDATAFMT_11BITLOG for
-11-bit log-encoded raw data, PIXARLOGDATAFMT_12BITPICIO for
-12-bit PICIO-compatible data, PIXARLOGDATAFMT_16BIT for
-16-bit signed samples, and PIXARLOGDATAFMT_FLOAT for 32-bit
-IEEE floating point samples.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PIXARLOGQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression technique used by the
-PixarLog codec. This value is treated identically to
-TIFFTAG_ZIPQUALITY; see the above description.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_SGILOGDATAFMT</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the format of client data passed <i>in</i>
-to the SGILog codec when encoding and passed <i>out</i> from
-when decoding. Possible values are: SGILOGDATAFMT_FLTXYZ for
-converting between LogLuv and 32-bit IEEE floating valued
-XYZ pixels, SGILOGDATAFMT_16BITLUV for 16-bit encoded Luv
-pixels, SGILOGDATAFMT_32BITRAW and SGILOGDATAFMT_24BITRAW
-for no conversion of data, SGILOGDATAFMT_8BITRGB for
-returning 8-bit RGB data (valid only when decoding
-LogLuv-encoded data), SGILOGDATAFMT_FLTY for converting
-between LogL and 32-bit IEEE floating valued Y pixels,
-SGILOGDATAFMT_16BITL for 16-bit encoded L pixels, and
-SGILOGDATAFMT_8BITGRY for returning 8-bit greyscale data
-(valid only when decoding LogL-encoded data).</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed through the
-<i>TIFFError</i> routine. By default messages are directed
-to <b>stderr</b> in the form: <i>module: message\n.</i>
-Warning messages are likewise directed through the
-<i>TIFFWarning</i> routine.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>fax2tiff</b>(1), <b>gif2tiff</b>(1),
-<b>pal2rgb</b>(1), <b>ppm2tiff</b>(1), <b>rgb2ycbcr</b>(1),
-<b>ras2tiff</b>(1), <b>raw2tiff</b>(1), <b>sgi2tiff</b>(1),
-<b>tiff2bw</b>(1), <b>tiffdither</b>(1), <b>tiffdump</b>(1),
-<b>tiffcp</b>(1), <b>tiffcmp</b>(1), <b>tiffgt</b>(1),
-<b>tiffinfo</b>(1), <b>tiffmedian</b>(1),
-<b>tiffsplit</b>(1), <b>tiffsv</b>(1).</big></p>
-<!-- INDENTATION -->
-<p><big><b>Tag Image File Format Specification &mdash;
-Revision 6.0</b>, an Aldus Technical Memorandum.</big></p>
-<!-- INDENTATION -->
-<p><big><b>The Spirit of TIFF Class F</b>, an appendix to
-the TIFF 5.0 specification prepared by Cygnet
-Technologies.</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The library does not support multi-sample images
-where some samples have different bits/sample.</big></p>
-<!-- INDENTATION -->
-<p><big>The library does not support random access to
-compressed data that is organized with more than one row per
-tile or strip.</big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
+are meaningful only when a particul
\ No newline at end of file
index 57081611a95975ac96039cfb34191498cb1033bd..d06ddb6da08876a22138922dc084eee0f2e8af17 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index b2e1bcce934cce63dbb076a9a645dc6c3503bac3..e3c664e26413fcb3d7f8945ea5d7fb0a8fcbbbaf 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index f36a472274eacc8cca463db263bbb989aaab45b0..2c652aba6da0471630155c6f394403ce14463dbc 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -81,12 +81,12 @@ depth is 24 or 1 (min-is-black) if the depth is not 24.</p>
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
-packbits</b> for the PackBits compression algorithm, <b>-c
-jpeg</b> for the baseline JPEG compression algorithm, <b>-c
-zip</b> for the Deflate compression algorithm, and
-<b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch (the
-default).</p>
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
+packbits</b> for the PackBits compression algorithm,
+<b>&minus;c jpeg</b> for the baseline JPEG compression
+algorithm, <b>&minus;c zip</b> for the Deflate compression
+algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
+Welch (the default).</p>
 </td>
 <td width="0%">
 </td>
index 21e4f4f11e2a72d92ae89484240438174b55e1ce..ce47e9f801e649b9484a1dc66723ee684858f7e1 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -53,10 +53,10 @@ output.tif</i></p>
 <small>TIFF.</small> By default, the <small>TIFF</small>
 image is created with data samples packed
 (<i>PlanarConfiguration</i>=1), compressed with the PackBits
-algorithm (<i>Compression</i>=<i>32773),</i> and with each
-strip no more than 8 kilobytes. These characteristics can
-overridden, or explicitly specified with the options
-described below.</p>
+algorithm (<i>Compression</i>=32773), and with each strip no
+more than 8 kilobytes. These characteristics can overridden,
+or explicitly specified with the options described
+below.</p>
 </td>
 </table>
 <a name="OPTIONS"></a>
@@ -67,7 +67,7 @@ described below.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;H &lt;number&gt;</b></p></td>
+<p><b>&minus;H</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -86,7 +86,7 @@ file while reading.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;w &lt;number&gt;</b></p></td>
+<p><b>&minus;w</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -105,7 +105,7 @@ below).</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;l &lt;number&gt;</b></p></td>
+<p><b>&minus;l</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -113,7 +113,7 @@ below).</p>
 <tr valign="top" align="left">
 <td width="19%"></td>
 <td width="80%">
-<p>length of input image in lines(can be guessed, see
+<p>length of input image in lines (can be guessed, see
 <b><small>GUESSING THE IMAGE GEOMETRY</small></b>
 below).</p>
 </td>
@@ -124,7 +124,7 @@ below).</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;b &lt;number&gt;</b></p></td>
+<p><b>&minus;b</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -141,7 +141,7 @@ below).</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;d data_type</b></p></td>
+<p><b>&minus;d</b> <i>data_type</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -149,117 +149,91 @@ below).</p>
 <tr valign="top" align="left">
 <td width="19%"></td>
 <td width="80%">
-<p>type of samples in input image, where <b>data_type</b>
+<p>type of samples in input image, where <i>data_type</i>
 may be:</p></td>
 </table>
 <!-- TABS -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+       cols="3" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>byte</i></p>
-</td>
-<td width="6%">
+<p><b>byte</b></p>
 </td>
-<td width="6%">
+<td width="70%">
 
 <p>8-bit unsigned integer (default),</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>short</i></p>
+<p><b>short</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
 <p>16-bit unsigned integer,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>long</i></p>
+<p><b>long</b></p>
 </td>
-<td width="6%">
-</td>
-<td width="6%">
+<td width="70%">
 
 <p>32-bit unsigned integer,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>sbyte</i></p>
+<p><b>sbyte</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
 <p>8-bit signed integer,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>sshort</i></p>
+<p><b>sshort</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
 <p>16-bit signed integer,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>slong</i></p>
+<p><b>slong</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
 <p>32-bit signed integer,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>float</i></p>
+<p><b>float</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
 <p>32-bit IEEE floating point,</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="10%">
 
-<p><i>double</i></p>
+<p><b>double</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="70%">
 
-<p>64-bit IEEE floating point,</p>
-</td>
-<td width="61%">
+<p>64-bit IEEE floating point.</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -268,7 +242,7 @@ may be:</p></td>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;i config</b></p></td>
+<p><b>&minus;i</b> <i>config</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -277,38 +251,31 @@ may be:</p></td>
 <td width="19%"></td>
 <td width="80%">
 <p>type of samples interleaving in input image, where
-<b>config</b> may be:</p></td>
+<i>config</i> may be:</p></td>
 </table>
 <!-- TABS -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+       cols="3" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="8%">
 
-<p><i>pixel</i></p>
+<p><b>pixel</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="71%">
 
 <p>pixel interleaved data (default),</p>
 </td>
-<td width="61%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="8%">
 
-<p><i>band</i></p>
-</td>
-<td width="6%">
+<p><b>band</b></p>
 </td>
-<td width="6%">
+<td width="71%">
 
 <p>band interleaved data.</p>
 </td>
-<td width="61%">
-</td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -316,7 +283,7 @@ may be:</p></td>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;p photo</b></p></td>
+<p><b>&minus;p</b> <i>photo</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -325,100 +292,90 @@ may be:</p></td>
 <td width="19%"></td>
 <td width="80%">
 <p>photometric interpretation (color space) of the input
-image, where <b>photo</b> may be:<i><br>
-miniswhite</i> white color represented with 0 value,<i><br>
-minisblack</i> black color represented with 0 value
-(default),</p></td>
+image, where <i>photo</i> may be:</p></td>
 </table>
 <!-- TABS -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="6" cellspacing="0" cellpadding="0">
+       cols="3" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>rgb</i></p>
+<p><b>miniswhite</b></p>
 </td>
-<td width="6%">
+<td width="65%">
+
+<p>white color represented with 0 value,</p>
 </td>
-<td width="6%">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="15%">
 
-<p>image has RGB color model,</p>
+<p><b>minisblack</b></p>
 </td>
-<td width="6%"></td>
-<td width="55%">
+<td width="65%">
+
+<p>black color represented with 0 value (default),</p>
 </td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>cmyk</i></p>
+<p><b>rgb</b></p>
 </td>
-<td width="6%">
+<td width="65%">
+
+<p>image has RGB color model,</p>
+</td>
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="15%">
+
+<p><b>cmyk</b></p>
 </td>
-<td width="6%">
+<td width="65%">
 
 <p>image has CMYK (separated) color model,</p>
 </td>
-<td width="6%"></td>
-<td width="55%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>ycbcr</i></p>
-</td>
-<td width="6%"></td>
-<td width="6%">
+<p><b>ycbcr</b></p>
 </td>
-<td width="6%">
+<td width="65%">
 
 <p>image has YCbCr color model,</p>
 </td>
-<td width="55%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>cielab</i></p>
+<p><b>cielab</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="65%">
 
 <p>image has CIE L*a*b color model,</p>
 </td>
-<td width="6%"></td>
-<td width="55%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>icclab</i></p>
+<p><b>icclab</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="65%">
 
 <p>image has ICC L*a*b color model,</p>
 </td>
-<td width="6%"></td>
-<td width="55%">
-</td>
 <tr valign="top" align="left">
 <td width="19%"></td>
-<td width="6%">
+<td width="15%">
 
-<p><i>itulab</i></p>
+<p><b>itulab</b></p>
 </td>
-<td width="6%"></td>
-<td width="6%">
+<td width="65%">
 
-<p>image has ITU L*a*b color model,</p>
-</td>
-<td width="6%"></td>
-<td width="55%">
+<p>image has ITU L*a*b color model.</p>
 </td>
 </table>
 <!-- TABS -->
@@ -473,12 +430,12 @@ minisblack</i> black color represented with 0 value
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
 packbits</b> for the PackBits compression algorithm (the
-default), <b>-c jpeg</b> for the baseline JPEG compression
-algorithm, <b>-c zip</b> for the Deflate compression
-algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch.</p>
+default), <b>&minus;c jpeg</b> for the baseline JPEG
+compression algorithm, <b>&minus;c zip</b> for the Deflate
+compression algorithm, and <b>&minus;c lzw</b> for
+Lempel-Ziv &amp; Welch.</p>
 </td>
 <td width="0%">
 </td>
@@ -489,7 +446,7 @@ Welch.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;r &lt;number&gt;</b></p></td>
+<p><b>&minus;r</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
index 6b81a9eb29982fa9072b6391251891d81958af24..dcd88d14bd5c3996a0a7dfe2c0fcf46dfdea5a7f 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -82,11 +82,12 @@ explicitly set the number of rows per strip.</p>
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
 packbits</b> for the PackBits compression algorithm (the
-default), <b>-c jpeg</b> for the JPEG compression algorithm,
-<b>-c zip</b> for the deflate compression algorithm, and
-<b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch.</p>
+default), <b>&minus;c jpeg</b> for the JPEG compression
+algorithm, <b>&minus;c zip</b> for the deflate compression
+algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
+Welch.</p>
 </td>
 <td width="0%">
 </td>
index 0a5c3b7aa051e8994fab2541cd5f3007b758ba58..7665a6e42c49921aae7e95e66b3fb759718c5b2c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -74,12 +74,12 @@ the options described below.</p>
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
-packbits</b> for the PackBits compression algorithm), <b>-c
-jpeg</b> for the baseline JPEG compression algorithm, <b>-c
-zip</b> for the Deflate compression algorithm, and
-<b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch (the
-default).</p>
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
+packbits</b> for the PackBits compression algorithm),
+<b>&minus;c jpeg</b> for the baseline JPEG compression
+algorithm, <b>&minus;c zip</b> for the Deflate compression
+algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
+Welch (the default).</p>
 </td>
 <td width="0%">
 </td>
index b78b461e6b44d55297ccd54c463e923151e27f47..2d1f3c9afed7d76a3b77e23fd1a055791839ed59 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 3acd5fe07980ee14f9fbfdb8bde5109c90bdaa3e..1ebb4d392e114e232431518eb01ebd228bac86ce 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -36,7 +36,7 @@ to greyscale</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>tiff2bw</b> [ options ] <i>input.tif
+<p><b>tiff2bw</b> [ <i>options</i> ] <i>input.tif
 output.tif</i></p>
 </td>
 </table>
@@ -73,12 +73,13 @@ used.</p>
 <td width="80%">
 
 <p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>-c
-packbits</b> for the PackBits compression algorithm, <b>-c
-zip</b> for the Deflate compression algorithm, <b>-c g3</b>
-for the CCITT Group 3 compression algorithm, <b>-c g4</b>
-for the CCITT Group 4 compression algorithm, and <b>&minus;c
-lzw</b> for Lempel-Ziv &amp; Welch (the default).</p>
+data: <b>&minus;c none</b> for no compression, <b>&minus;c
+packbits</b> for the PackBits compression algorithm,
+<b>&minus;c zip</b> for the Deflate compression algorithm,
+<b>&minus;c g3</b> for the CCITT Group 3 compression
+algorithm, <b>&minus;c g4</b> for the CCITT Group 4
+compression algorithm, and <b>&minus;c lzw</b> for
+Lempel-Ziv &amp; Welch (the default).</p>
 </td>
 <td width="0%">
 </td>
index 0efb26322b780c3d40ce6b09e6ed56c509cc69e8..3b6dd4b1dac66eeb3037e3ee874b64ed9f68ab00 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:12 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -26,7 +26,8 @@
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p>tiff2pdf - convert a TIFF image to a PDF document</p>
+<p>tiff2pdf &minus; convert a TIFF image to a PDF
+document</p>
 </td>
 </table>
 <a name="SYNOPSIS"></a>
@@ -37,8 +38,7 @@
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>tiff2pdf [</b> <i>options</i> <b>]</b>
-<i>input.tiff</i></p>
+<p><b>tiff2pdf</b> [ <i>options</i> ] <i>input.tiff</i></p>
 </td>
 </table>
 <a name="DESCRIPTION"></a>
@@ -49,7 +49,7 @@
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>tiff2pdf</b> opens a TIFF image and writes a PDF
+<p><i>tiff2pdf</i> opens a TIFF image and writes a PDF
 document to standard output.</p>
 <!-- INDENTATION -->
 <p>The program converts one TIFF file to one PDF file,
@@ -67,7 +67,8 @@ or width) convert the input image to a tiled TIFF if it is
 not already.</p>
 <!-- INDENTATION -->
 <p>The standard output is standard output. Set the output
-file name with the <b>-o</b><i>output.pdf</i> option.</p>
+file name with the <b>&minus;o</b> <i>output.pdf</i>
+option.</p>
 <!-- INDENTATION -->
 <p>All black and white files are compressed into a single
 strip CCITT G4 Fax compressed PDF, unless tiled, where tiled
@@ -109,13 +110,14 @@ resolution and page width and length can be set by the
 <b>&minus;u</b> option, the default unit is inch.</p>
 <!-- INDENTATION -->
 <p>Various items of the output document information can be
-set with the <b>&minus;e, &minus;c, &minus;a, &minus;t,
-&minus;s,</b> and <b>&minus;k</b> options. Setting the
-argument of the option to &quot;&quot; for these tags causes
-the relevant document information field to be not written.
-Some of the document information values otherwise get their
-information from the input TIFF image, the software, author,
-document name, and image description.</p>
+set with the <b>&minus;e</b>, <b>&minus;c</b>,
+<b>&minus;a</b>, <b>&minus;t</b>, <b>&minus;s</b>, and
+<b>&minus;k</b> options. Setting the argument of the option
+to &quot;&quot; for these tags causes the relevant document
+information field to be not written. Some of the document
+information values otherwise get their information from the
+input TIFF image, the software, author, document name, and
+image description.</p>
 <!-- INDENTATION -->
 <p>The Portable Document Format (PDF) specification is
 copyrighted by Adobe Systems, Incorporated.</p>
@@ -129,7 +131,7 @@ copyrighted by Adobe Systems, Incorporated.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;o</b><i>output-file</i></p></td>
+<p><b>&minus;o</b> <i>output-file</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -137,7 +139,7 @@ copyrighted by Adobe Systems, Incorporated.</p>
 <tr valign="top" align="left">
 <td width="21%"></td>
 <td width="77%">
-<p>Set the output to go to file <i>output-file</i></p>
+<p>Set the output to go to file. <i>output-file</i></p>
 </td>
 </table>
 <!-- TABS -->
@@ -152,8 +154,8 @@ copyrighted by Adobe Systems, Incorporated.</p>
 <td width="5%"></td>
 <td width="77%">
 
-<p>Compress with JPEG (requires libjpeg configured with
-libtiff).</p>
+<p>Compress with JPEG (requires <i>libjpeg</i> configured
+with <i>libtiff</i>).</p>
 </td>
 <tr valign="top" align="left">
 <td width="11%"></td>
@@ -164,8 +166,8 @@ libtiff).</p>
 <td width="5%"></td>
 <td width="77%">
 
-<p>Compress with Zip/Deflate (requires zlib configured with
-libtiff).</p>
+<p>Compress with Zip/Deflate (requires <i>zlib</i>
+configured with <i>libtiff</i>).</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -174,7 +176,7 @@ libtiff).</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;q</b><i>quality</i></p></td>
+<p><b>&minus;q</b> <i>quality</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -209,7 +211,8 @@ no compressed data passthrough.</p>
 <td width="7%"></td>
 <td width="77%">
 
-<p>Set PDF &quot;Interpolate&quot; user preference.</p>
+<p>Set PDF &lsquo;&lsquo;Interpolate&rsquo;&rsquo; user
+preference.</p>
 </td>
 <tr valign="top" align="left">
 <td width="11%"></td>
@@ -240,7 +243,7 @@ no compressed data passthrough.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;p</b><i>paper-size</i></p></td>
+<p><b>&minus;p</b> <i>paper-size</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -248,8 +251,8 @@ no compressed data passthrough.</p>
 <tr valign="top" align="left">
 <td width="21%"></td>
 <td width="77%">
-<p>Set paper size, eg &quot;letter&quot;, &quot;legal&quot;,
-&quot;A4&quot;.</p>
+<p>Set paper size, e.g., <b>letter</b>, <b>legal</b>,
+<b>A4</b>.</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -258,7 +261,7 @@ no compressed data passthrough.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;u</b><i>[i|m]</i></p></td>
+<p><b>&minus;u</b> [<b>i</b>|<b>m</b>]</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -266,7 +269,7 @@ no compressed data passthrough.</p>
 <tr valign="top" align="left">
 <td width="21%"></td>
 <td width="77%">
-<p>Set distance unit, <i>i</i> for inch, <i>m</i> for
+<p>Set distance unit, <b>i</b> for inch, <b>m</b> for
 centimeter.</p>
 </td>
 </table>
@@ -276,7 +279,7 @@ centimeter.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;w</b><i>width</i></p></td>
+<p><b>&minus;w</b> <i>width</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -293,7 +296,7 @@ centimeter.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;l</b><i>length</i></p></td>
+<p><b>&minus;l</b> <i>length</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -304,35 +307,39 @@ centimeter.</p>
 <p>Set length in units.</p>
 </td>
 </table>
-<!-- TABS -->
+<!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
-       cols="5" cellspacing="0" cellpadding="0">
+       cols="2" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
-<td width="11%"></td>
-<td width="8%">
-
-<p><b>&minus;x</b><i>xres</i></p>
-</td>
-<td width="13%"></td>
-<td width="47%">
-
+<td width="10%"></td>
+<td width="89%">
+<p><b>&minus;x</b> <i>xres</i></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
 <p>Set x/width resolution default.</p>
 </td>
-<td width="19%">
-</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
-<td width="11%"></td>
-<td width="8%">
-
-<p><b>&minus;y</b><i>yres</i></p>
-</td>
-<td width="13%"></td>
-<td width="47%">
-
+<td width="10%"></td>
+<td width="89%">
+<p><b>&minus;y</b> <i>yres</i></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="21%"></td>
+<td width="77%">
 <p>Set y/length resolution default.</p>
 </td>
-<td width="19%">
-</td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -340,7 +347,7 @@ centimeter.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;r</b><i>[d|o]</i></p></td>
+<p><b>&minus;r</b> [<b>d</b>|<b>o</b>]</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -348,9 +355,9 @@ centimeter.</p>
 <tr valign="top" align="left">
 <td width="21%"></td>
 <td width="77%">
-<p>Set <i>d</i> for resolution default for images without
-resolution, <i>o for resolution override for all
-images.</i></p>
+<p>Set <b>d</b> for resolution default for images without
+resolution, <b>o</b> for resolution override for all
+images.</p>
 </td>
 </table>
 <!-- TABS -->
@@ -363,11 +370,12 @@ images.</i></p>
 <p><b>&minus;f</b></p>
 </td>
 <td width="13%"></td>
-<td width="54%">
+<td width="57%">
 
-<p>Set PDF &quot;Fit Window&quot; user preference.</p>
+<p>Set PDF &lsquo;&lsquo;Fit Window&rsquo;&rsquo; user
+preference.</p>
 </td>
-<td width="17%">
+<td width="14%">
 </td>
 </table>
 <!-- INDENTATION -->
@@ -376,7 +384,7 @@ images.</i></p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;e</b><i>YYYYMMDDHHMMSS</i></p></td>
+<p><b>&minus;e</b> <i>YYYYMMDDHHMMSS</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -394,7 +402,7 @@ date/time default, <i>YYYYMMDDHHMMSS.</i></p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;c</b><i>creator</i></p></td>
+<p><b>&minus;c</b> <i>creator</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -412,7 +420,7 @@ software default.</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;a</b><i>author</i></p></td>
+<p><b>&minus;a</b> <i>author</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -421,7 +429,7 @@ software default.</p>
 <td width="21%"></td>
 <td width="77%">
 <p>Set document information author, overrides image artist
-default</p>
+default.</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -430,7 +438,7 @@ default</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;t</b><i>title</i></p></td>
+<p><b>&minus;t</b> <i>title</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -439,7 +447,7 @@ default</p>
 <td width="21%"></td>
 <td width="77%">
 <p>Set document information title, overrides image document
-name default</p>
+name default.</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -448,7 +456,7 @@ name default</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;s</b><i>subject</i></p></td>
+<p><b>&minus;s</b> <i>subject</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -457,7 +465,7 @@ name default</p>
 <td width="21%"></td>
 <td width="77%">
 <p>Set document information subject, overrides image image
-description default</p>
+description default.</p>
 </td>
 </table>
 <!-- INDENTATION -->
@@ -466,7 +474,7 @@ description default</p>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>&minus;k</b><i>keywords</i></p></td>
+<p><b>&minus;k</b> <i>keywords</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -493,12 +501,7 @@ description default</p>
 </td>
 <td width="14%">
 </td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-</td>
-<td width="13%"></td>
-<td width="57%">
+</table>
 <a name="EXAMPLES"></a>
 <h2>EXAMPLES</h2>
 <!-- INDENTATION -->
@@ -516,17 +519,19 @@ from input.tiff.</p></td>
 <tr valign="top" align="left">
 <td width="20%"></td>
 <td width="79%">
-<p>tiff2pdf -o output.pdf input.tiff</p></td>
+<pre>tiff2pdf &minus;o output.pdf input.tiff
+</pre>
+</td>
 </table>
 <!-- INDENTATION -->
+
 <table width="100%" border=0 rules="none" frame="void"
        cols="2" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
 <p>The following example would generate PDF output from
-input.tiff and write it to standard output.</p>
-</td>
+input.tiff and write it to standard output.</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -534,9 +539,12 @@ input.tiff and write it to standard output.</p>
 <tr valign="top" align="left">
 <td width="20%"></td>
 <td width="79%">
-<p>tiff2pdf input.tiff</p></td>
+<pre>tiff2pdf input.tiff
+</pre>
+</td>
 </table>
 <!-- INDENTATION -->
+
 <table width="100%" border=0 rules="none" frame="void"
        cols="2" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
@@ -545,9 +553,9 @@ input.tiff and write it to standard output.</p>
 <p>The following example would generate the file output.pdf
 from input.tiff, putting the image pages on a letter sized
 page, compressing the output with JPEG, with JPEG quality
-75, setting the title to &quot;Document&quot;, and setting
-the &quot;Fit Window&quot; option.</p>
-</td>
+75, setting the title to
+&lsquo;&lsquo;Document&rsquo;&rsquo;, and setting the
+&lsquo;&lsquo;Fit Window&rsquo;&rsquo; option.</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -555,12 +563,14 @@ the &quot;Fit Window&quot; option.</p>
 <tr valign="top" align="left">
 <td width="20%"></td>
 <td width="79%">
-<p>tiff2pdf -p letter -j -q 75 -t &quot;Document&quot; -f -o
-output.pdf input.tiff</p></td>
+<pre>tiff2pdf &minus;p letter &minus;j &minus;q 75 &minus;t &quot;Document&quot; &minus;f &minus;o output.pdf input.tiff
+</pre>
+</td>
 </table>
 <a name="BUGS"></a>
 <h2>BUGS</h2>
 <!-- INDENTATION -->
+
 <table width="100%" border=0 rules="none" frame="void"
        cols="2" cellspacing="0" cellpadding="0">
 <tr valign="top" align="left">
@@ -587,8 +597,8 @@ output.pdf input.tiff</p></td>
 <tr valign="top" align="left">
 <td width="10%"></td>
 <td width="89%">
-<p><b>libtiff</b>(3)<b>, tiffcp</b>(1)<b>,
-tiff2ps</b>(1)</p>
+<p><b>libtiff</b>(3), <b>tiffcp</b>(1),
+<b>tiff2ps</b>(1)</p>
 <!-- INDENTATION -->
 <p>Libtiff library home page:
 <b>http://www.remotesensing.org/libtiff/</b></p>
index e58887d30df33062def7d8f764effa260e97b740..ef2cd7f9e9182b1d06d7c551b39edb862aa93136 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -15,7 +15,6 @@
 <a href="#OPTIONS">OPTIONS</a><br>
 <a href="#EXAMPLES">EXAMPLES</a><br>
 <a href="#BUGS">BUGS</a><br>
-<a href="#BUGS">BUGS</a><br>
 <a href="#SEE ALSO">SEE ALSO</a><br>
 
 <hr>
@@ -28,7 +27,7 @@
 <td width="8%"></td>
 <td width="91%">
 <p>tiff2ps &minus; convert a <small>TIFF</small> image to
-&trade;</p>
+PostScript&trade;</p>
 </td>
 </table>
 <a name="SYNOPSIS"></a>
 <td width="8%"></td>
 <td width="91%">
 <p><i>tiff2ps</i> reads <small>TIFF</small> images and
-writes or Encapsulated (EPS) on the standard output. By
-default, <i>tiff2ps</i> writes Encapsulated for the first
-image in the specified <small>TIFF</small> image file.</p>
+writes PostScript or Encapsulated PostScript (EPS) on the
+standard output. By default, <i>tiff2ps</i> writes
+Encapsulated PostScript for the first image in the specified
+<small>TIFF</small> image file.</p>
 <!-- INDENTATION -->
-<p>By default, <i>tiff2ps</i> will generate that fills a
-printed area specified by the <small>TIFF</small> tags in
-the input file. If the file does not contain
+<p>By default, <i>tiff2ps</i> will generate PostScript that
+fills a printed area specified by the <small>TIFF</small>
+tags in the input file. If the file does not contain
 <i>XResolution</i> or <i>YResolution</i> tags, then the
 printed area is set according to the image dimensions. The
 <b>&minus;w</b> and <b>&minus;h</b> options (see below) can
 be used to set the dimensions of the printed area in inches;
 overriding any relevant <small>TIFF</small> tags.</p>
 <!-- INDENTATION -->
-<p>The generated for <small>RGB,</small> palette, and
-<small>CMYK</small> images uses the <i>colorimage</i>
-operator. The generated for greyscale and bilevel images
-uses the <i>image</i> operator. When the <i>colorimage</i>
-operator is used, code to emulate this operator on older
-printers is also generated. Note that this emulation code
-can be very slow.</p>
+<p>The PostScript generated for <small>RGB,</small> palette,
+and <small>CMYK</small> images uses the <i>colorimage</i>
+operator. The PostScript generated for greyscale and bilevel
+images uses the <i>image</i> operator. When the
+<i>colorimage</i> operator is used, PostScript code to
+emulate this operator on older PostScript printers is also
+generated. Note that this emulation code can be very
+slow.</p>
 <!-- INDENTATION -->
 <p>Color images with associated alpha data are composited
 over a white background.</p>
@@ -91,7 +92,7 @@ over a white background.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Generate Level 1 (the default).</p>
+<p>Generate PostScript Level 1 (the default).</p>
 </td>
 <td width="0%">
 </td>
@@ -104,7 +105,7 @@ over a white background.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Generate Level 2.</p>
+<p>Generate PostScript Level 2.</p>
 </td>
 <td width="0%">
 </td>
@@ -117,8 +118,9 @@ over a white background.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Generate Level 3. It basically allows one to use the
-/flateDecode filter for ZIP compressed TIFF images.</p>
+<p>Generate PostScript Level 3. It basically allows one to
+use the /flateDecode filter for ZIP compressed TIFF
+images.</p>
 </td>
 <td width="0%">
 </td>
@@ -160,7 +162,8 @@ This does not affect the height of the printed image.</p>
 <td width="80%">
 
 <p>Center the image in the output. This option only shows
-an effect if both the -w and the -h option are given.</p>
+an effect if both the <b>&minus;w</b> and the
+<b>&minus;h</b> option are given.</p>
 </td>
 <td width="0%">
 </td>
@@ -174,7 +177,7 @@ an effect if both the -w and the -h option are given.</p>
 <td width="80%">
 
 <p>Set the initial <small>TIFF</small> directory to the
-specified directory number. (NB: directories are numbered
+specified directory number. (NB: Directories are numbered
 starting at zero.) This option is useful for selecting
 individual pages in a multi-page (e.g. facsimile) file.</p>
 </td>
@@ -189,7 +192,8 @@ individual pages in a multi-page (e.g. facsimile) file.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Force the generation of Encapsulated (implies -z).</p>
+<p>Force the generation of Encapsulated PostScript (implies
+<b>&minus;z</b>).</p>
 </td>
 <td width="0%">
 </td>
@@ -276,12 +280,12 @@ does not affect the width of the printed image.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Where possible render using the <b>imagemask</b>
-operator instead of the image operator. When this option is
-specified <i>tiff2ps</i> will use <b>imagemask</b> for
-rendering 1 bit deep images. If this option is not specified
-or if the image depth is greater than 1 then the image
-operator is used.</p>
+<p>Where possible render using the <i>imagemask</i>
+PostScript operator instead of the <i>image</i> operator.
+When this option is specified <i>tiff2ps</i> will use
+<i>imagemask</i> for rendering 1 bit deep images. If this
+option is not specified or if the image depth is greater
+than 1 then the <i>image</i> operator is used.</p>
 </td>
 <td width="0%">
 </td>
@@ -297,7 +301,7 @@ operator is used.</p>
 <p>Set the initial <small>TIFF</small> directory to the
 <small>IFD</small> at the specified file offset. This option
 is useful for selecting thumbnail images and the like which
-are hidden using the SubIFD tag.</p>
+are hidden using the <i>SubIFD</i> tag.</p>
 </td>
 <td width="0%">
 </td>
@@ -310,7 +314,8 @@ are hidden using the SubIFD tag.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>Force the generation of (non-Encapsulated) .</p>
+<p>Force the generation of (non-Encapsulated)
+PostScript.</p>
 </td>
 <td width="0%">
 </td>
@@ -392,12 +397,12 @@ inches.</p>
 <td width="5%"></td>
 <td width="80%">
 
-<p>When generating Level 2, data is scaled so that it does
-not image into the <i>deadzone</i> on a page (the outer
-margin that the printing device is unable to mark). This
-option suppresses this behavior. When Level 1 is generated,
-data is imaged to the entire printed page and this option
-has no affect.</p>
+<p>When generating PostScript Level 2, data is scaled so
+that it does not image into the <i>deadzone</i> on a page
+(the outer margin that the printing device is unable to
+mark). This option suppresses this behavior. When PostScript
+Level 1 is generated, data is imaged to the entire printed
+page and this option has no affect.</p>
 </td>
 <td width="0%">
 </td>
@@ -410,8 +415,8 @@ has no affect.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>The following generates Level 2 for all pages of a
-facsimile:</p></td>
+<p>The following generates PostScript Level 2 for all pages
+of a facsimile:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -419,7 +424,7 @@ facsimile:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiff2ps -a2 fax.tif | lpr
+<pre>tiff2ps &minus;a2 fax.tif | lpr
 </pre>
 </td>
 </table>
@@ -434,8 +439,8 @@ facsimile:</p></td>
 Ghostscript then you can efficiently preview facsimile
 generated with the above command.</p>
 <!-- INDENTATION -->
-<p>To generate Encapsulated for a the image at directory 2
-of an image use:</p></td>
+<p>To generate Encapsulated PostScript for a the image at
+directory 2 of an image use:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -443,7 +448,7 @@ of an image use:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiff2ps -d 1 foo.tif
+<pre>tiff2ps &minus;d 1 foo.tif
 </pre>
 </td>
 </table>
@@ -454,7 +459,7 @@ of an image use:</p></td>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>(notice that directories are numbered starting at
+<p>(Notice that directories are numbered starting at
 zero.)</p>
 <!-- INDENTATION -->
 <p>If you have a long image, it may be split in several
@@ -466,7 +471,7 @@ pages:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiff2ps -h11 -w8.5 -H14 -L.5 foo.tif &gt; foo.ps
+<pre>tiff2ps &minus;h11 &minus;w8.5 &minus;H14 &minus;L.5 foo.tif &gt; foo.ps
 </pre>
 </td>
 </table>
@@ -495,24 +500,15 @@ readability).</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>Because does not support the notion of a colormap, 8-bit
-palette images produce 24-bit images. This conversion
-results in output that is six times bigger than the original
-image and which takes a long time to send to a printer over
-a serial line. Matters are even worse for 4-, 2-, and 1-bit
-palette images.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
+<p>Because PostScript does not support the notion of a
+colormap, 8-bit palette images produce 24-bit PostScript
+images. This conversion results in output that is six times
+bigger than the original image and which takes a long time
+to send to a printer over a serial line. Matters are even
+worse for 4-, 2-, and 1-bit palette images.</p>
 <!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
-       cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Does not handle tiled images when generating PS Level I
-output.</p>
+<p>Does not handle tiled images when generating PostScript
+Level I output.</p>
 </td>
 </table>
 <a name="SEE ALSO"></a>
index b39a27962d715666f31c895db78829592dd134ad..35e06a54e24664810bc0b15375b57b08409d8626 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -36,7 +36,7 @@ RGBA color space</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>tiff2rgba</b> [ options ] <i>input.tif
+<p><b>tiff2rgba</b> [ <i>options</i> ] <i>input.tif
 output.tif</i></p>
 </td>
 </table>
@@ -63,11 +63,11 @@ combinations of BitsPerSample, photometric interpretation,
 block organization and planar configuration.</p>
 <!-- INDENTATION -->
 <p>The generated images are stripped images with four
-samples per pixel (red, green, blue and alpha) or if the -n
-flag is used, three samples per pixel (red, green, and
-blue). The resulting images are always planar configuration
-contiguous. For this reason, this program is a useful
-utility for transform exotic TIFF files into a form
+samples per pixel (red, green, blue and alpha) or if the
+<b>&minus;n</b> flag is used, three samples per pixel (red,
+green, and blue). The resulting images are always planar
+configuration contiguous. For this reason, this program is a
+useful utility for transform exotic TIFF files into a form
 ingestible by almost any TIFF supporting software.</p>
 </td>
 </table>
@@ -87,10 +87,11 @@ ingestible by almost any TIFF supporting software.</p>
 
 <p>Specify a compression scheme to use when writing image
 data: <b>&minus;c none</b> for no compression (the default),
-<b>-c packbits</b> for the PackBits compression algorithm,
-<b>-c zip</b> for the Deflate compression algorithm, <b>-c
-jpeg</b> for the JPEG compression algorithm, and <b>&minus;c
-lzw</b> for Lempel-Ziv &amp; Welch.</p>
+<b>&minus;c packbits</b> for the PackBits compression
+algorithm, <b>&minus;c zip</b> for the Deflate compression
+algorithm, <b>&minus;c jpeg</b> for the JPEG compression
+algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
+Welch.</p>
 </td>
 <td width="0%">
 </td>
@@ -135,8 +136,8 @@ limited RAM.</p>
 <td width="80%">
 
 <p>Drop the alpha component from the output file, producing
-a pure RGB file. Currently this does not work if the -b flag
-is also in effect.</p>
+a pure RGB file. Currently this does not work if the
+<b>&minus;b</b> flag is also in effect.</p>
 </td>
 <td width="0%">
 </td>
index 339bce91a915034fcd2c9cfb0eb8ae8c5d3e40cb..acd2e90f0b806e0c126488ab3a6441440414da31 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:19 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -88,7 +88,7 @@ files.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;z number</b></p></td>
+<p><b>&minus;z</b> <i>number</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -129,7 +129,7 @@ between the files.</p>
 compared; they may also generate spurious diagnostics.</p>
 <!-- INDENTATION -->
 <p>The image data of tiled files is not compared, since the
-TIFFReadScanline() function is used. A error will be
+<i>TIFFReadScanline()</i> function is used. An error will be
 reported for tiled files.</p>
 <!-- INDENTATION -->
 <p>The pixel and/or sample number reported in differences
index 310783a98f77a213230031d10ff412f11d01d21a..4c7fcb62f736a67a779e8c5236005220174a6800 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -74,7 +74,7 @@ any way.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;b image</b></p></td>
+<p><b>&minus;b</b> <i>image</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -201,6 +201,20 @@ tag set to <small>MSB2LSB.</small></p>
 <td width="10%"></td>
 <td width="3%">
 
+<p><b>&minus;i</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Ignore non-fatal read errors and continue processing of
+the input file.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
 <p><b>&minus;l</b></p>
 </td>
 <td width="5%"></td>
@@ -274,7 +288,7 @@ force samples to be written in separate planes.</p>
 data written to the output file. By default (or when value
 <b>0</b> is specified), <i>tiffcp</i> attempts to set the
 rows/strip that no more than 8 kilobytes of data appear in a
-strip. If you specify special value <b>-1</b> it will
+strip. If you specify special value <b>&minus;1</b> it will
 results in infinite number of the rows per strip. The entire
 image will be the one strip in that case.</p>
 </td>
@@ -327,6 +341,20 @@ of data appear in a tile.</p>
 </td>
 <td width="0%">
 </td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;x</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Force the output file to be written with PAGENUMBER value
+in sequence.</p>
+</td>
+<td width="0%">
+</td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -334,7 +362,7 @@ of data appear in a tile.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;,={character}</b></p></td>
+<p><b>&minus;,=</b><i>character</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -342,11 +370,11 @@ of data appear in a tile.</p>
 <tr valign="top" align="left">
 <td width="19%"></td>
 <td width="80%">
-<p>substitute {character} for &rsquo;,&rsquo; in parsing
-image directory indices in files. This is necessary if
-filenames contain commas. Note that &rsquo;,=&rsquo; with
+<p>substitute <i>character</i> for &lsquo;,&rsquo; in
+parsing image directory indices in files. This is necessary
+if filenames contain commas. Note that <b>&minus;,=</b> with
 whitespace immediately following will disable the special
-meaning of the &rsquo;,&rsquo; entirely. See examples.</p>
+meaning of the &lsquo;,&rsquo; entirely. See examples.</p>
 </td>
 </table>
 <a name="EXAMPLES"></a>
@@ -366,7 +394,7 @@ result using <small>LZW</small> encoding:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffcp -c lzw a.tif b.tif result.tif
+<pre>tiffcp &minus;c lzw a.tif b.tif result.tif
 </pre>
 </td>
 </table>
@@ -387,7 +415,7 @@ used:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffcp -c g4 -r 10000 g3.tif g4.tif
+<pre>tiffcp &minus;c g4 &minus;r 10000 g3.tif g4.tif
 </pre>
 </td>
 </table>
@@ -403,10 +431,11 @@ rows in the source file.)</p>
 <!-- INDENTATION -->
 <p>To extract a selected set of images from a multi-image
 TIFF file, the file name may be immediately followed by a
-&rsquo;,&rsquo; separated list of image directory indices.
+&lsquo;,&rsquo; separated list of image directory indices.
 The first image is always in directory 0. Thus, to copy the
-1st and 3rd images of image file &quot;album.tif&quot; to
-&quot;result.tif&quot;:</p></td>
+1st and 3rd images of image file
+&lsquo;&lsquo;album.tif&rsquo;&rsquo; to
+&lsquo;&lsquo;result.tif&rsquo;&rsquo;:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -425,10 +454,32 @@ The first image is always in directory 0. Thus, to copy the
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>Given file &quot;CCD.tif&quot; whose first image is a
-noise bias followed by images which include that bias,
-subtract the noise from all those images following it (while
-decompressing) with the command:</p></td>
+<p>A trailing comma denotes remaining images in sequence.
+The following command will copy all image with except the
+first one:</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<pre>tiffcp album.tif,1, result.tif
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>Given file &lsquo;&lsquo;CCD.tif&rsquo;&rsquo; whose
+first image is a noise bias followed by images which include
+that bias, subtract the noise from all those images
+following it (while decompressing) with the
+command:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -436,7 +487,7 @@ decompressing) with the command:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffcp -c none -b CCD.tif CCD.tif,1, result.tif
+<pre>tiffcp &minus;c none &minus;b CCD.tif CCD.tif,1, result.tif
 </pre>
 </td>
 </table>
@@ -447,9 +498,10 @@ decompressing) with the command:</p></td>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p>If the file above were named &quot;CCD,X.tif&quot;, the
-&quot;-,=&quot; option would be required to correctly parse
-this filename with image numbers, as follows:</p></td>
+<p>If the file above were named
+&lsquo;&lsquo;CCD,X.tif&rsquo;&rsquo;, the <b>&minus;,=</b>
+option would be required to correctly parse this filename
+with image numbers, as follows:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -457,7 +509,7 @@ this filename with image numbers, as follows:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffcp -c none -,=% -b CCD,X.tif CCD,X%1%.tif result.tif
+<pre>tiffcp &minus;c none &minus;,=% &minus;b CCD,X.tif CCD,X%1%.tif result.tif
 
 </pre>
 </td>
diff --git a/src/tiff/html/man/tiffcrop.1.html b/src/tiff/html/man/tiffcrop.1.html
new file mode 100644 (file)
index 0000000..9c1edbb
--- /dev/null
@@ -0,0 +1,684 @@
+<!-- Creator     : groff version 1.18.1 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta name="Content-Style" content="text/css">
+<title>TIFFCROP</title>
+</head>
+<body>
+
+<h1 align=center>TIFFCROP</h1>
+<a href="#NAME">NAME</a><br>
+<a href="#SYNOPSIS">SYNOPSIS</a><br>
+<a href="#DESCRIPTION">DESCRIPTION</a><br>
+<a href="#OPTIONS">OPTIONS</a><br>
+<a href="#EXAMPLES">EXAMPLES</a><br>
+<a href="#SEE ALSO">SEE ALSO</a><br>
+
+<hr>
+<a name="NAME"></a>
+<h2>NAME</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>tiffcrop &minus; copy (and possibly convert and crop or
+process) a <small>TIFF</small> file</p>
+</td>
+</table>
+<a name="SYNOPSIS"></a>
+<h2>SYNOPSIS</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>tiffcrop</b> [ <i>options</i> ] <i>src1.tif ...
+srcN.tif dst.tif</i></p>
+</td>
+</table>
+<a name="DESCRIPTION"></a>
+<h2>DESCRIPTION</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><i>tiffcrop</i> combines one or more files created
+according to the Tag Image File Format, Revision 6.0 into a
+single <small>TIFF</small> file. The output file may be
+compressed using a different algorithm than the input files.
+<i>tiffcrop</i> is most often used to extract portions of an
+image for processing with bar code recognizer or OCR
+software when that software cannot restrict the region of
+interest to a specific portion of the image or to improve
+efficiency when the regions of interest must be rotated.</p>
+<!-- INDENTATION -->
+<p>By default, <i>tiffcrop</i> will copy all the understood
+tags in a <small>TIFF</small> directory of an input file to
+the associated directory in the output file.</p>
+<!-- INDENTATION -->
+<p><i>tiffcrop</i> can be used to reorganize the storage
+characteristics of data in a file, and it will alter or
+convert the image data content as specified at the same
+time, unlike tiffcp.</p>
+<!-- INDENTATION -->
+<p><i>tiffcrop</i> will behave exactly like tiffcp if none
+of the new options are specified.</p>
+</td>
+</table>
+<a name="OPTIONS"></a>
+<h2>OPTIONS</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;N odd|even|#,#-#,#|last</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>sequences and ranges of images within file to process.
+The words <b>odd</b> or <b>even</b> may be used to specify
+all odd or even numbered images. The word <b>last</b> may be
+used in place of a number in the sequence to indicate the
+final image in the file without knowing how many images
+there are. Ranges of images may be specified with a dash and
+multiple sets can be indicated by joining them in a
+comma-separated list. e.g.. use <b>&minus;N 1,5-7,last</b>
+to process the 1st, 5th through 7th, and final image in the
+file.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;E top|bottom|left|right</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>use the top, bottom, left, or right edge as origin
+reference for width and length of crop regions. May be
+abbreviated to first letter.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;U in|cm|px</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>units to apply to dimensions for margins and crop
+regions. Inches or centimeters are converted to pixels using
+the resolution unit specified in the TIFF file (which
+defaults to inches if not specified in the IFD).</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;m #,#,#,#</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>margins to be removed from the image. The order must be
+top, left, bottom, right with only commas separating the
+elements of the list. Margins are scaled according to the
+current units and removed before any other extractions are
+computed. Capital M was in use.</p>
+</td>
+</table>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="5" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="6%">
+
+<p><b>&minus;X #</b></p>
+</td>
+<td width="2%"></td>
+<td width="80%">
+
+<p>horizontal (X-axis) dimension of a region to extract
+relative to the specified origin reference. If the origin is
+the top or bottom edge, the X axis value will be assumed to
+start at the left edge.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="6%">
+
+<p><b>&minus;Y #</b></p>
+</td>
+<td width="2%"></td>
+<td width="80%">
+
+<p>vertical (Y-axis) dimension of a region to extract
+relative to the specified origin reference. If the origin is
+the left or right edge, the Y axis value will be assumed to
+start at the top.</p>
+</td>
+<td width="0%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;Z #:#,#:#</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>zones of the image designated as position X of Y equal
+sized portions measured from the reference edge, e.g. 1:3
+would be first third of the image starting from the
+reference edge minus any margins specified for the confining
+edges. Multiple zones can be specified as a comma separated
+list but they must reference the same edge. To extract the
+top quarter and the bottom third of an image you would use
+<b>&minus;Z 1:4,3:3.</b></p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;F horiz|vert</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>flip, i.e. mirror, the image or extracted region
+horizontally or vertically.</p>
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;R 90|180|270</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>rotate the image or extracted region 90, 180, or 270
+degrees clockwise.</p>
+</td>
+</table>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="5" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="2%">
+
+<p><b>&minus;I</b></p>
+</td>
+<td width="6%"></td>
+<td width="80%">
+
+<p>invert the colorspace values for grayscale and bi-level
+images. This would be used to correct negative images that
+have incorrect PHOTOMETRIC INTERPRETATION tags. No support
+for color images.</p>
+</td>
+<td width="0%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;b</b> <i>image</i></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>subtract the following monochrome image from all others
+processed. This can be used to remove a noise bias from a
+set of images. This bias image is typically an image of
+noise the camera saw with its shutter closed. Bias image
+support is not available with options for cropping,
+rotating, or inverting the image.</p>
+</td>
+</table>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="5" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;B</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Force output to be written with Big-Endian byte order.
+This option only has an effect when the output file is
+created or overwritten and not when it is appended to.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;C</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Suppress the use of &lsquo;&lsquo;strip
+chopping&rsquo;&rsquo; when reading images that have a
+single strip/tile of uncompressed data.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;c</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the compression to use for data written to the
+output file: <b>none</b> for no compression, <b>packbits</b>
+for PackBits compression, <b>lzw</b> for Lempel-Ziv &amp;
+Welch compression, <b>jpeg</b> for baseline JPEG
+compression, <b>zip</b> for Deflate compression, <b>g3</b>
+for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT
+Group 4 (T.6) compression. By default <i>tiffcrop</i> will
+compress data according to the value of the
+<i>Compression</i> tag found in the source file.</p>
+</td>
+<td width="0%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<p>The <small>CCITT</small> Group 3 and Group 4 compression
+algorithms can only be used with bi-level data.</p>
+<!-- INDENTATION -->
+<p>Group 3 compression can be specified together with
+several T.4-specific options: <b>1d</b> for 1-dimensional
+encoding, <b>2d</b> for 2-dimensional encoding, and
+<b>fill</b> to force each encoded scanline to be zero-filled
+so that the terminating EOL code lies on a byte boundary.
+Group 3-specific options are specified by appending a
+&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
+&lsquo;&lsquo;g3&rsquo;&rsquo; option; e.g. <b>&minus;c
+g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL
+codes.</p>
+<!-- INDENTATION -->
+<p><small>LZW</small> compression can be specified together
+with a <i>predictor</i> value. A predictor value of 2 causes
+each scanline of the output image to undergo horizontal
+differencing before it is encoded; a value of 1 forces each
+scanline to be encoded without differencing. LZW-specific
+options are specified by appending a
+&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
+&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
+lzw:2</b> for <small>LZW</small> compression with horizontal
+differencing.</p>
+</td>
+</table>
+<!-- TABS -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="5" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;f</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the bit fill order to use in writing output
+data. By default, <i>tiffcrop</i> will create a new file
+with the same fill order as the original. Specifying
+<b>&minus;f lsb2msb</b> will force data to be written with
+the FillOrder tag set to <small>LSB2MSB,</small> while
+<b>&minus;f msb2lsb</b> will force data to be written with
+the FillOrder tag set to <small>MSB2LSB.</small></p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;i</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Ignore non-fatal read errors and continue processing of
+the input file.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;l</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the length of a tile (in pixels).
+<i>tiffcrop</i> attempts to set the tile dimensions so that
+no more than 8 kilobytes of data appear in a tile.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;L</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Force output to be written with Little-Endian byte
+order. This option only has an effect when the output file
+is created or overwritten and not when it is appended
+to.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;M</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Suppress the use of memory-mapped files when reading
+images.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;p</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the planar configuration to use in writing image
+data that has one 8-bit sample per pixel. By default,
+<i>tiffcrop</i> will create a new file with the same planar
+configuration as the original. Specifying <b>&minus;p
+contig</b> will force data to be written with multi-sample
+data packed together, while <b>&minus;p separate</b> will
+force samples to be written in separate planes.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;r</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the number of rows (scanlines) in each strip of
+data written to the output file. By default (or when value
+<b>0</b> is specified), <i>tiffcrop</i> attempts to set the
+rows/strip that no more than 8 kilobytes of data appear in a
+strip. If you specify special value <b>-1</b> it will
+results in infinite number of the rows per strip. The entire
+image will be the one strip in that case.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;s</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Force the output file to be written with data organized
+in strips (rather than tiles).</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;t</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Force the output file to be written with data organized
+in tiles (rather than strips). options can be used to force
+the resultant image to be written as strips or tiles of
+data, respectively.</p>
+</td>
+<td width="0%">
+</td>
+<tr valign="top" align="left">
+<td width="10%"></td>
+<td width="3%">
+
+<p><b>&minus;w</b></p>
+</td>
+<td width="5%"></td>
+<td width="80%">
+
+<p>Specify the width of a tile (in pixels). <i>tiffcrop</i>
+attempts to set the tile dimensions so that no more than 8
+kilobytes of data appear in a tile. <i>tiffcrop</i> attempts
+to set the tile dimensions so that no more than 8 kilobytes
+of data appear in a tile.</p>
+</td>
+<td width="0%">
+</td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>&minus;,={character}</b></p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="19%"></td>
+<td width="80%">
+<p>substitute {character} for &rsquo;,&rsquo; in parsing
+image directory indices in files. This is necessary if
+filenames contain commas. Note that &rsquo;,=&rsquo; with
+whitespace immediately following will disable the special
+meaning of the &rsquo;,&rsquo; entirely. See examples.</p>
+</td>
+</table>
+<a name="EXAMPLES"></a>
+<h2>EXAMPLES</h2>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>The following concatenates two files and writes the
+result using <small>LZW</small> encoding:</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<pre>tiffcrop -c lzw a.tif b.tif result.tif
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>To convert a G3 1d-encoded <small>TIFF</small> to a
+single strip of G4-encoded data the following might be
+used:</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<pre>tiffcrop -c g4 -r 10000 g3.tif g4.tif
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>(1000 is just a number that is larger than the number of
+rows in the source file.)</p>
+<!-- INDENTATION -->
+<p>To extract a selected set of images from a multi-image
+TIFF file use the -N option described above. Thus, to copy
+the 1st and 3rd images of image file &quot;album.tif&quot;
+to &quot;result.tif&quot;:</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<pre>tiffcrop -N 1,3 album.tif result.tif
+</pre>
+</td>
+</table>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p>Given file &quot;CCD.tif&quot; whose first image is a
+noise bias followed by images which include that bias,
+subtract the noise from all those images following it (while
+decompressing) with the command:</p></td>
+</table>
+<!-- INDENTATION -->
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="17%"></td>
+<td width="82%">
+<pre>tiffcrop -c none -b CCD.tif CCD.tif -d 2 result.tif
+</pre>
+</td>
+</table>
+<a name="SEE ALSO"></a>
+<h2>SEE ALSO</h2>
+<!-- INDENTATION -->
+
+<table width="100%" border=0 rules="none" frame="void"
+       cols="2" cellspacing="0" cellpadding="0">
+<tr valign="top" align="left">
+<td width="8%"></td>
+<td width="91%">
+<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcmp</b>(1),
+<b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>tiffsplit</b>(1),
+<b>libtiff</b>(3TIFF)</p>
+<!-- INDENTATION -->
+<p>Libtiff library home page:
+<b>http://www.remotesensing.org/libtiff/</b></p>
+</td>
+</table>
+<hr>
+</body>
+</html>
index 162c0e67a5bfe7ae0fc0782375435e6e8822e021..5e3cb7c5d20842510901d598b7a3322e56a4f454 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -128,9 +128,10 @@ differencing.</p>
 data. By default, <i>tiffdither</i> will create a new file
 with the same fill order as the original. Specifying
 <b>&minus;f lsb2msb</b> will force data to be written with
-the FillOrder tag set to <small>LSB2MSB ,</small> while
-<b>&minus;f msb2lsb</b> will force data to be written with
-the FillOrder tag set to <small>MSB2LSB .</small></p>
+the <i>FillOrder</i> tag set to <small>LSB2MSB ,</small>
+while <b>&minus;f msb2lsb</b> will force data to be written
+with the <i>Fill- Order</i> tag set to <small>MSB2LSB
+.</small></p>
 </td>
 <td width="0%">
 </td>
index da04dcb59f6b60c5f42e582c22032a034b0606a9..c37d2eebcd3a6dcfd2b365f5a1bb8b1ae102ca5a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -93,7 +93,7 @@ than the default decimal.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;m items</b></p></td>
+<p><b>&minus;m</b> <i>items</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -111,7 +111,7 @@ printed. By default, this will be 24.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;o offset</b></p></td>
+<p><b>&minus;o</b> <i>offset</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
index bf8a1387d37bac944658913f6ef2d0f9946f7d08..5a04996a63c1d06434bd498c4562cb51a2e49949 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -69,7 +69,7 @@ following characteristics:</p></td>
 <td width="15%"></td>
 <td width="34%">
 
-<p>BitsPerSample</p>
+<p><i>BitsPerSample</i></p>
 </td>
 <td width="50%">
 
@@ -79,7 +79,7 @@ following characteristics:</p></td>
 <td width="15%"></td>
 <td width="34%">
 
-<p>SamplesPerPixel</p>
+<p><i>SamplesPerPixel</i></p>
 </td>
 <td width="50%">
 
@@ -89,7 +89,7 @@ following characteristics:</p></td>
 <td width="15%"></td>
 <td width="34%">
 
-<p>PhotometricInterpretation</p>
+<p><i>PhotometricInterpretation</i></p>
 </td>
 <td width="50%">
 
@@ -100,7 +100,7 @@ following characteristics:</p></td>
 <td width="15%"></td>
 <td width="34%">
 
-<p>PlanarConfiguration</p>
+<p><i>PlanarConfiguration</i></p>
 </td>
 <td width="50%">
 
@@ -110,7 +110,7 @@ following characteristics:</p></td>
 <td width="15%"></td>
 <td width="34%">
 
-<p>Orientation</p>
+<p><i>Orientation</i></p>
 </td>
 <td width="50%">
 
@@ -450,9 +450,9 @@ octal.</p>
 
 <p>Override the value of the
 <i>PhotometricInterpretation</i> tag; the parameter may be
-one of: <i>miniswhite</i>, <i>minisblack</i>, <i>rgb</i>,
-<i>palette</i>, <i>mask</i>, <i>separated</i>, <i>ycbcr</i>,
-and <i>cielab</i>.</p>
+one of: <b>miniswhite</b>, <b>minisblack</b>, <b>rgb</b>,
+<b>palette</b>, <b>mask</b>, <b>separated</b>, <b>ycbcr</b>,
+and <b>cielab</b>.</p>
 </td>
 <td width="0%">
 </td>
index 59bdd38310bd747cb76c63be4ac983cecd62db6d..d3a013ce7763e517cc90f0a0b270ea14c3a75207 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index afe3aa99df14ef8ea739d5ca363dac3f6496278c..78310511c6a14c6760211c99c64805bb5553c1f5 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 0069cb6627104cd4e3d60bdf83b3da1c5e6b334c..7192d6e96efbb8f877eb91698f0942f9a52714d6 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -37,7 +37,7 @@ header</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>tiffset</b> [ options ] <i>filename.tif</i></p>
+<p><b>tiffset</b> [ <i>options</i> ] <i>filename.tif</i></p>
 </td>
 </table>
 <a name="DESCRIPTION"></a>
@@ -60,7 +60,8 @@ header to a specified value.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;s tagnumber [count] value ...</b></p></td>
+<p><b>&minus;s</b> <i>tagnumber</i> [ <i>count</i> ]
+<i>value ...</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -78,7 +79,7 @@ specified.</p>
 <tr valign="top" align="left">
 <td width="8%"></td>
 <td width="91%">
-<p><b>&minus;sf tagnumber filename</b></p></td>
+<p><b>&minus;sf</b> <i>tagnumber filename</i></p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -107,7 +108,7 @@ This option is supported for ASCII tags only.</p>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffset -sf 270 descrip a.tif
+<pre>tiffset &minus;sf 270 descrip a.tif
 </pre>
 </td>
 </table>
@@ -119,7 +120,8 @@ This option is supported for ASCII tags only.</p>
 <td width="8%"></td>
 <td width="91%">
 <p>The following example sets the artist tag (315) of a.tif
-to the string &quot;Anonymous&quot;:</p></td>
+to the string
+&lsquo;&lsquo;Anonymous&rsquo;&rsquo;:</p></td>
 </table>
 <!-- INDENTATION -->
 <table width="100%" border=0 rules="none" frame="void"
@@ -127,7 +129,7 @@ to the string &quot;Anonymous&quot;:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffset -s 305 Anonymous a.tif
+<pre>tiffset &minus;s 305 Anonymous a.tif
 </pre>
 </td>
 </table>
@@ -147,9 +149,9 @@ dpi:</p></td>
 <tr valign="top" align="left">
 <td width="17%"></td>
 <td width="82%">
-<pre>tiffset -s 296 2 a.tif
-tiffset -s 282 300.0 a.tif
-tiffset -s 283 300.0 a.tif
+<pre>tiffset &minus;s 296 2 a.tif
+tiffset &minus;s 282 300.0 a.tif
+tiffset &minus;s 283 300.0 a.tif
 </pre>
 </td>
 </table>
index 6f5ada64bb1490ad0ddfd4d99987b67dded7f8a9..4de5c812eb1b581211084580ca47a6066077dd68 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:13 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 823709696e9cca0049846d0b08f720162a6f4ea4..f9921a4841ba95aecc0d3a42b0f631a0757caddd 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.18.1 -->
-<!-- CreationDate: Mon Mar 13 18:03:14 2006 -->
+<!-- CreationDate: Sat Feb 24 18:37:20 2007 -->
 <html>
 <head>
 <meta name="generator" content="groff -Thtml, see www.gnu.org">
index 2ea9ad4e492e972d643b9527553d9b733a008fb6..aed91a92130bf243c40caf32742b8ee59af3d295 100644 (file)
@@ -25,18 +25,20 @@ also be nice to be acknowledged.<p>
 The libtiff software was written by Sam Leffler while working for
 Silicon Graphics.<p>
 
-The LZW algorithm is derived from the compress program (the proper
-attribution is included in the source code).  The Group 3 fax stuff
-originated as code from Jef Poskanzer, but has since been rewritten
-several times.  The latest version uses an algorithm from Frank
-Cringle -- consult <TT>libtiff/mkg3states.c</TT> and
-<TT>libtiff/tif_fax3.h</TT> for further information.
-The JPEG support was written by Tom Lane and is dependent on the
-excellent work of Tom Lane and the Independent JPEG Group (IJG)
-who distribute their work under friendly licensing similar to this
-software.
-Many other people have by now helped with bug fixes and code; a
-few of the more persistent contributors have been:
+The LZW algorithm is derived from the compress program (the proper attribution
+is included in the source code).  The Group 3 fax stuff originated as code
+from Jef Poskanzer, but has since been rewritten several times.  The latest
+version uses an algorithm from Frank Cringle -- consult
+<TT>libtiff/mkg3states.c</TT> and <TT>libtiff/tif_fax3.h</TT> for further
+information. The JPEG support was written by Tom Lane and is dependent on the
+excellent work of Tom Lane and the Independent JPEG Group (IJG) who distribute
+their work under friendly licensing similar to this software. Joris Van Damme
+implemented the robust Old JPEG decoder (as included in libtiff since version
+3.9.0, there was another Old JPEG module in older releases, which was
+incomplete and unsuitable for many existing images of that format). JBIG
+module was written by Lee Howard and depends on JBIG library from the Markus
+Kuhn. Many other people have by now helped with bug fixes and code; a few of
+the more persistent contributors have been:
 
 <PRE>
     Bjorn P. Brox
@@ -73,6 +75,8 @@ few of the more persistent contributors have been:
     Bob Friesenhahn
     Lee Howard
     Joris Van Damme
+    Tavis Ormandy
+    Richard Nolde
 </PRE>
 
 (my apology to anyone that was inadvertently not listed.)
@@ -107,6 +111,6 @@ OF THIS SOFTWARE.
 <HR>
 
 
-Last updated: $Date: 2005/10/23 19:43:29 $
+Last updated: $Date: 2007/02/24 15:47:04 $
 </BODY>
 </HTML>
index d085dbc274ce88814aa52c1eaa027b581dccd596..65e9c0dd8dcf294097ce1a65dcfc3cab1cba83dc 100644 (file)
@@ -11,7 +11,7 @@ width="144" height="108" align="left" border="1" hspace="6"> TIFF
 Tools Overview</font></h1>
 <p>This software distribution comes with a small collection of
 programs for converting non-TIFF format images to TIFF and for
-manipulating and interogating the contents of TIFF images. Several
+manipulating and interrogating the contents of TIFF images. Several
 of these tools are useful in their own right. Many of them however
 are more intended to serve as programming examples for using the
 TIFF library.</p>
@@ -21,13 +21,13 @@ examples for writing programs to display and save TIFF images.
 <table border cellpadding="3">
 <tr>
 <td valign="top" width="10%">
-<tt>tiffgt&nbsp;&nbsp;&nbsp;&nbsp;</tt></td>
+<tt><a href="man/tiffgt.1.html">tiffgt</a>&nbsp;&nbsp;&nbsp;&nbsp;</tt></td>
 <td>Display the contents of one or more TIFF images using OpenGL.
 The software makes extensive use of the <tt>TIFFRGBAImage</tt>
 facilities described elsewhere.</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffsv</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffsv.1.html">tiffsv</a></tt></td>
 <td>A program to save all or part of a screen dump on a Silicon
 Graphics system. As for <tt>tiffgt</tt> this code, while written to
 use the IRIS GL, can be easily tailored to other devices.</td>
@@ -37,112 +37,121 @@ use the IRIS GL, can be easily tailored to other devices.</td>
 The remaining programs should be device-independent:
 <table border cellpadding="3">
 <tr>
-<td valign="top" width="10%"><tt>bmp2tiff</tt></td>
+<td valign="top" width="10%"><tt><a href="man/bmp2tiff.1.html">bmp2tiff</a></tt></td>
 <td>Convert BMP images to TIFF</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>fax2ps</tt></td>
+<td valign="top" width="10%"><tt><a href="man/fax2ps.1.html">fax2ps</a></tt></td>
 <td>Convert a Group 3- or Group 4- compressed TIFF to PostScript
 that is significantly more compressed than is generated by
 <tt>tiff2ps</tt> (unless <tt>tiff2ps</tt> writes PS Level II)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>fax2tiff</tt></td>
+<td valign="top" width="10%"><tt><a href="man/fax2tiff.1.html">fax2tiff</a></tt></td>
 <td>Convert raw Group 3 or Group 4 facsimile data to TIFF</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>gif2tiff</tt></td>
-<td>A quick hack that converts GIF 87a format images to TIFF</td>
+<td valign="top" width="10%"><tt><a href="man/gif2tiff.1.html">gif2tiff</a></tt></td>
+<td>A quick hack that converts GIF 87a (old) format images to TIFF</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>pal2rgb</tt></td>
+<td valign="top" width="10%"><tt><a href="man/pal2rgb.1.html">pal2rgb</a></tt></td>
 <td>Convert a Palette-style image to a full color RGB image by
 applying the colormap</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>ppm2tiff</tt></td>
-<td>A quick hack that converts PPM format images to TIFF</td>
+<td valign="top" width="10%"><tt><a href="man/ppm2tiff.1.html">ppm2tiff</a></tt></td>
+<td>A quick hack that converts 8-bit PPM format images to TIFF</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>ras2tiff</tt></td>
+<td valign="top" width="10%"><tt><a href="man/ras2tiff.1.html">ras2tiff</a></tt></td>
 <td>A quick hack that converts Sun rasterfile format images to TIFF
 -- it's less than complete</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>raw2tiff</tt></td>
+<td valign="top" width="10%"><tt><a href="man/raw2tiff.1.html">raw2tiff</a></tt></td>
 <td>Create a TIFF file from raw data</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>rgb2ycbcr</tt></td>
+<td valign="top" width="10%"><tt><a href="man/rgb2ycbcr.1.html">rgb2ycbcr</a></tt></td>
 <td>Convert an RGB, grayscale, or bilevel TIFF image to a YCbCr
 TIFF image; it's mainly provided for testing</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>sgi2tiff</tt></td>
+<td valign="top" width="10%"><tt><a href="man/sgi2tiff.1.html">sgi2tiff</a></tt></td>
 <td>A program to convert SGI image files to TIFF. This program is
 only useful on SGI machines as it uses <tt>-limage</tt>.</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>thumbnail</tt></td>
+<td valign="top" width="10%"><tt><a href="man/thumbnail.1.html">thumbnail</a></tt></tt></td>
 <td>Copy a bilevel TIFF to one that includes 8-bit greyscale
 "thumbnail images" for each page; it is provided as an example of
 how one might use the <tt>SubIFD</tt> tag (and the library support
 for it)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiff2bw</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiff2bw.1.html">tiff2bw</a></tt></td>
 <td>A simple program to convert a color image to grayscale</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiff2pdf</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiff2pdf.1.html">tiff2pdf</a></tt></td>
 <td>Convert TIFF images to PDF</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiff2ps</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiff2ps.1.html">tiff2ps</a></tt></td>
 <td>Convert TIFF images to PostScript</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiff2rgba</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiff2rgba.1.html">tiff2rgba</a></tt></td>
 <td>Convert a TIFF image to RGBA color space</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffcmp</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffcmp.1.html">tiffcmp</a></tt></td>
 <td>Compare the contents of two TIFF files (it does not check all
 the directory information, but does check all the data)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffcp</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffcp.1.html">tiffcp</a></tt></td>
 <td>Copy, concatenate, and convert TIFF images (e.g. switching from
 Compression=5 to Compression=1)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffdither</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffcrop.1.html">tiffcrop</a></tt></td>
+<td>Provides selection of images from within one or more multi-image
+TIFF files, with orthogonal rotation, mirroring, cropping, and
+extraction of multiple sections and exporting to one or more files.
+It extends the functionality of tiffcp to support additional bit
+depths in strips and tiles and enhances the selection capabilities of
+tiffsplit. Bilevel images can be inverted and images may be split into
+segments to fit on multiple /pages/ (standard paper sizes), plus other
+functions described in the tiffcrop man page</td>
+</tr>
+<tr>
+<td valign="top" width="10%"><tt><a href="man/tiffdither.1.html">tiffdither</a></tt></td>
 <td>Dither a b&amp;w image into a bilevel image (suitable for use
 in creating fax files)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffdump</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffdump.1.html">tiffdump</a></tt></td>
 <td>Display the verbatim contents of the TIFF directory in a file
 (it's very useful for debugging bogus files that you may get from
 someone that claims they support TIFF)</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffinfo</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffinfo.1.html">tiffinfo</a></tt></td>
 <td>Display information about one or more TIFF files.</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffmedian</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffmedian.1.html">tiffmedian</a></tt></td>
 <td>A version of Paul Heckbert's median cut program that reads an
-RGB TIFF image, and creates a TIFF palette file as a result; it's
-useful for converting full-color RGB images to 8-bit color for your
-friends that have cheapo 8-bit framebuffers.</td>
+RGB TIFF image, and creates a TIFF palette file as a result</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffset</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffset.1.html">tiffset</a></tt></td>
 <td>Set a field in a TIFF header</td>
 </tr>
 <tr>
-<td valign="top" width="10%"><tt>tiffsplit</tt></td>
+<td valign="top" width="10%"><tt><a href="man/tiffsplit.1.html">tiffsplit</a></tt></td>
 <td>Create one or more single-image files from a (possibly)
 multi-image file</td>
 </tr>
@@ -150,6 +159,6 @@ multi-image file</td>
 <p>Check out the manual pages for details about the above
 programs.</p>
 <hr>
-Last updated: $Date: 2006/01/03 02:16:07 $
+Last updated: $Date: 2009-10-28 22:13:37 $
 </body>
 </html>
diff --git a/src/tiff/html/v3.9.0beta.html b/src/tiff/html/v3.9.0beta.html
new file mode 100644 (file)
index 0000000..d7d8821
--- /dev/null
@@ -0,0 +1,304 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v3.9.0beta
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+<FONT FACE="Helvetica, Arial, Sans"> 
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v3.9.0beta<BR>
+<B>Previous Version</B>: <A HREF=v3.8.2.html>v3.8.2</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
+http://www.remotesensing.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).
+If you don't find something listed here, then it was not done in this
+timeframe, or it was not considered important enough to be mentioned.
+The following information is located here:
+<UL>
+<LI><A HREF="#hightlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
+
+<UL>
+       <li> New <b>tiffcrop</b> utility contributed by Richard Nolde.
+       <b>tiffcrop</b> does the same as <b>tiffcp</b>, but also can crop,
+       extract, rotate and mirror images.
+
+       <li> tif_jbig.c:  Added support for JBIG compression scheme
+       (34661 code), contributed by Lee Howard.
+
+       <li> Totally new implementation of OJPEG module from
+       Joris Van Damme. No need to patch libjpeg anymore. Many OJPEG files
+       should be supported now that was not supported previously.
+
+</UL>
+
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
+
+<UL>
+
+       <li> tif_config.wince.h, tiffconf.wince.h, tif_wince.c: WinCE-specific
+       compatibility stuff from Mateusz Loskot.
+
+       <li> Rename config.h.vc and tif_config.h.vc to config.vc.h and 
+       tif_config.vc.h for easier identification by folks using an IDE.
+
+       <li> configure, configure.ac: OJPEG support enabled by default (i.e.,
+       whe the conformant JPEG support enabled).
+
+       <li> README.vms, Makefile.am, configure.com, libtiff/{Makefile.am,
+       tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}:
+       Added support for OpenVMS by Alexey Chupahin.
+
+       <li> nmake.opt: use /EHsc for VS2005 compatibility.  Also define
+       _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
+
+<UL>
+       <li> tif_dirinfo.c (_TIFFFindFieldInfo): Don't attempt to
+       bsearch() on a NULL fieldinfo list.
+       (_TIFFFindFieldInfoByName): Don't attempt to lfind() on a NULL
+       fieldinfo list.
+
+       <li> tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
+       will convert from decompressor to compressor or compress to decompress
+       if required by the force arguments.  This works around a problem in
+       where the JPEGFixupTestSubsampling() may cause a decompressor to 
+       be setup on a directory when later a compressor is required with the
+       force flag set.  Occurs with the addtiffo program for instance.
+
+       <li> tif_dirwrite.c: Fixed swapping of byte arrays stored
+       in-place in tag offsets as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1363">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1363</a>
+
+       <li> tif_getimage.c: workaround for 'Fractional scanline' error
+       reading OJPEG images with rowsperstrip that is not a multiple of
+       vertical subsampling factor. This bug is mentioned in
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1390">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1390</a> and
+       <a href="http://www.asmail.be/msg0054766825.html">
+       http://www.asmail.be/msg0054766825.html</a>
+
+       <li> tif_dirread.c: Added special function to handle
+       SubjectDistance EXIF tag as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1362">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1362</a>
+
+       <li> tif_dirread.c, tif_read.c: Type of the byte counters
+       changed from tsize_t to uint32 to be able to work with data arrays
+       larger than 2GB. Fixes bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=890">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=89</a>        
+       Idea submitted by Matt Hancher.
+
+       <li> tif_dir.c: Workaround for incorrect TIFFs with
+       ExtraSamples == 999 produced by Corel Draw. As per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1490">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1490</a>
+
+       <li> tif_write.c: TIFFAppendToStrip() - clear sorted flag if 
+       we move a strip.
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1359">
+               http://bugzilla.remotesensing.org/show_bug.cgi?id=1359</a>
+
+       <li> tif_fax3.c: Save the state of printdir codec dependent method.
+
+       <li> tif_jpeg.c: Save the state of printdir codec dependent method
+       as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1273">
+               http://bugzilla.remotesensing.org/show_bug.cgi?id=1273</a>
+
+       <li> tif_win32.c: Fixed problem with offset value manipulation
+       as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1322">
+               http://bugzilla.remotesensing.org/show_bug.cgi?id=1322</a>
+
+       <li> tif_fax3.c, tif_next.c, tif_pixarlog.c: Fixed multiple
+       vulnerabilities, as per Gentoo bug ():
+       <a href="http://bugs.gentoo.org/show_bug.cgi?id=142383">
+       http://bugs.gentoo.org/show_bug.cgi?id=142383</a>
+
+       <li> tif_lzw.c, tif_zip.c: Fixed problems with mixing
+       encoding and decoding on the same read-write TIFF handle.  The LZW
+       code can now maintain encode and decode state at the same time. The
+       ZIP code will switch back and forth as needed.  
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=757">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=757</a>
+
+       <li> tif_msdos.c: Avoid handle leak for failed opens.
+       c/o Thierry Pierron
+
+       <li> tif_dirwrite.c: take care not to flush out buffer of strip/tile
+       data in _TIFFWriteDirectory if TIFF_BEENWRITING not set.  Relates
+       to bug report by Peng Gao with black strip at bottom of images.
+
+       <li> tif_dirwrite.c: make sure to use uint32 for wordcount in 
+       TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
+       It already seems to have been done for other field types.  Needed
+       for "tiffset" on files with geotiff ascii text.
+
+       <li> tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961).
+
+       <li> tif_dirread.c: Move IFD fetching code in the separate
+       function TIFFFetchDirectory() avoiding code duplication in
+       TIFFReadDirectory() and TIFFReadCustomDirectory().
+
+       <li>tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
+       files.  Modified TIFFReadDirectory() to not invoke
+       EstimateStripByteCounts() for case where entry 0 and 1 are unequal but
+       one of them is zero.
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1204">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1204</a>
+
+       <li> tif_open.c, tif_dirread.c, tiffiop.h: Move IFD looping
+       checking code in the separate function TIFFCheckDirOffset().
+
+       <li> tif_aux.c: Added _TIFFCheckRealloc() function.
+
+       <li> tif_fax3.c: Fixed problems in fax decoder as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1194">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1194</a>
+
+       <li> tif_jbig.c:  Added support for JBIG compression scheme
+       (34661 code) contributed by Lee Howard. As per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=896">
+               http://bugzilla.remotesensing.org/show_bug.cgi?id=896</a>
+
+       <li> tif_getimage.c: Added support for planarconfig separate
+       non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1]).
+
+       <li> tif_getimage.c: Revision of all RGB(A) put routines:
+       <ul>
+               <li> Conversion of unassociated alpha to associated alpha
+               now done with more performant LUT, and calculation more
+               correct.
+               <li> Conversion of 16bit data to 8bit data now done with
+               more performant LUT, and calculation more correct
+               <li> Bugfix of handling of 16bit RGB with unassociated alpha
+       </ul>
+
+       <li> tif_ojpeg.c: totally new implementation
+
+       <li> tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
+       of OJPEG images in favor of tif_getimage.c native handling of
+       YCbCr and desubsampling.
+
+       <li> tif_jpeg.c: JPEGVSetField() so that altering the photometric
+       interpretation causes the "upsampled" flag to be recomputed.  Fixes
+       peculiar bug where photometric flag had to be set before jpegcolormode
+       flag.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
+
+<UL>
+       <li> tiff2ps.c:  Added support 16-bit images as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1566">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1566</a>.
+       Patch from William Bader.
+
+       <li> tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
+       significant upgrade of the whole utility as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1560">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1560</a>.
+       Now we don't need tiffiop.h in tiff2pdf anymore and will open output
+       PDF file using TIFFClientOpen() machinery as it is implemented
+       by Leon Bottou.
+
+       <li> tiffcrop.c:  New tiffcrop utility contributed
+       by Richard Nolde. As per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1383">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1383</a>
+
+       <li> tiff2pdf.c: Do not assume inches when the resolution units
+       do not specified. As per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1366">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1366</a>
+
+       <li> tiffset.c: Properly handle tags with TIFF_VARIABLE writecount.
+       As per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1350">
+               http://bugzilla.remotesensing.org/show_bug.cgi?id=1350</a>
+
+       <li> tif2rgba.c: This utility does not work properly on big-endian
+       architectures. It was fixed including the bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1149">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1149</a>
+
+       <li> tiff2pdf.c: Fix handling of -q values.
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=587">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=587</a>
+
+       <li> tiffcmp.c: Fixed floating point comparison logic as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1191">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1191</a>
+
+       <li> tiff2pdf.c: Fixed buffer overflow condition in
+       t2p_write_pdf_string() as per bug
+       <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1196">
+       http://bugzilla.remotesensing.org/show_bug.cgi?id=1196</a>
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
+
+<UL> 
+
+       <li> contrib/addtiffo/tif_overview.c: Fix problems with odd sized
+       output blocks in TIFF_DownSample_Subsampled() (bug 1542).
+
+       <li> contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
+       Though it is still far from the state of being working and useful.
+
+</UL>
+
+Last updated $Date: 2009-08-20 22:57:39 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/html/v3.9.1.html b/src/tiff/html/v3.9.1.html
new file mode 100644 (file)
index 0000000..c97d94f
--- /dev/null
@@ -0,0 +1,115 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v3.9.1
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+<FONT FACE="Helvetica, Arial, Sans"> 
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v3.9.1<BR>
+<B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
+http://www.remotesensing.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).  If you don't
+find something listed here, then it was not done in this timeframe, or
+it was not considered important enough to be mentioned.  The following
+information is located here:
+<UL>
+<LI><A HREF="#hightlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
+
+<UL>
+       <li> This is a bug-fix release for several bugs (two of which
+       are dire) which were discovered in the 3.9.0 release.
+
+</UL>
+
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
+
+<UL>
+
+       <li> Several defines were missing from tif_config.vc.h which
+       are necessary to compile the library using MSVC.
+
+       <li> Colorized tests were actually not enabled as expected.
+       Parallel tests mode is now also enabled so that tests can be
+       run in parallel, and test output is sent to .log files.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
+
+<UL>
+       <li> libtiff/tif_write.c (TIFFAppendToStrip): Remove cast
+       which caused libtiff to output a wrong last strip with
+       byte-count and strip-offset of zero.  This cast was added on
+       the day of the 3.9.0 release.
+
+       <li> libtiff/tif_dirwrite.c: Back out changes from 2007-11-22
+       that resulted in the final strip not being written in some
+       circumstances.
+       http://bugzilla.maptools.org/show_bug.cgi?id=2088
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
+
+<UL>
+       <li> None
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
+
+<UL> 
+
+       <li> None
+
+</UL>
+
+Last updated $Date: 2009-08-28 18:54:11 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/html/v3.9.2.html b/src/tiff/html/v3.9.2.html
new file mode 100644 (file)
index 0000000..bb76794
--- /dev/null
@@ -0,0 +1,122 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v3.9.2
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+<FONT FACE="Helvetica, Arial, Sans"> 
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v3.9.2<BR>
+<B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
+http://www.remotesensing.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).  If you don't
+find something listed here, then it was not done in this timeframe, or
+it was not considered important enough to be mentioned.  The following
+information is located here:
+<UL>
+<LI><A HREF="#hightlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
+
+<UL>
+
+       <li> Fixes a number of bugs present in the 3.9.1 release.
+
+        <li> OJPEG support updated to work with IJG JPEG 7 release.
+
+        <li> Tiffcrop validated for most TIFF storage subformats and sample depths.
+
+</UL>
+
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
+
+<UL>
+
+       <li> x86_64 now uses the same default fill order as i386.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
+
+<UL>
+       <li> Writing tags with an array value of type TIFF_DOUBLE now
+       returns correct error status. The TIFFTAG_SMINSAMPLEVALUE and
+       TIFFTAG_SMAXSAMPLEVALUE tags failed to write without this fix.
+
+       <li> OJPEG decoder now works with IJG JPEG 7.  Resolves "Bug
+       2090 - OJPEG crash with libjpeg v7".
+       http://bugzilla.maptools.org/show_bug.cgi?id=2090
+
+       <li> Eliminate most GCC "dereferencing type-punned pointer"
+       warnings.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
+
+<UL>
+
+        <li> New tiffcrop from Richard Nolde.  Major updates to add
+        significant functionality for reading and writing tile based
+        images with bit depths not a multiple of 8 which cannot be
+        handled by tiffcp.
+
+        <li> Allow building tools with GCC using the "-Wformat
+        -Werror=format-security" flags.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
+
+<UL> 
+
+       <li> None
+
+</UL>
+
+Last updated $Date: 2009-11-04 17:38:13 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/html/v4.0.0.html b/src/tiff/html/v4.0.0.html
new file mode 100644 (file)
index 0000000..9694a1e
--- /dev/null
@@ -0,0 +1,269 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v4.0.0
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+<FONT FACE="Helvetica, Arial, Sans"> 
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v4.0.0<BR>
+<B>Previous Version</B>: <A HREF=v3.9.5.html>v3.9.5</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://download.osgeo.org/libtiff">
+http://download.osgeo.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).  If you don't
+find something listed here, then it was not done in this timeframe, or
+it was not considered important enough to be mentioned. Please consult
+the ChangeLog file in the source package for full change details.  The
+following information is located here:
+<UL>
+<LI><A HREF="#hightlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<P><A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A></P>
+
+BigTIFF support changes:
+
+<UL>
+
+       <LI>The options parameter in the TIFFOpen and TIFFClientOpen funcs has
+       been extended. When creating new files, you can add option '4' to
+       specify you want to create a ClassicTIFF file, though that is the
+       default and the option is not strictly necessary. (As such, old
+       calling code will continue to function and create ClassicTIFF files.)
+       Or you can add option '8' to specify you want to create a BigTIFF file
+       instead. This new option is also reflected in some of the tools we
+       already upgraded. For instance, you can use the -8 option on tiffcp to
+       have tiffcp produce BigTIFF files instead of the default ClassicTIFF.
+       (Whilst on additional option is provided for version selection when
+       creating new files, no such option is necessary when reading TIFF
+       files. LibTiff reads ClassicTIFF and BigTIFF both, and the application
+       does not need to be aware which TIFF version an opened file is.)
+
+       <LI>Although the tag count in BigTIFF is 64bit, we restricted the
+       count in the implementation to a much more reasonable size. This is
+       necessary in current implementation, because all tag data gets read
+       automatically in the IFD reading stage, so if there's half a dozen
+       private tags with multiple gigabytes of data that causes considerable
+       overhead even if the application level is never interested in these
+       tags. Our choice to ignore tags with data longer then a certain sanity
+       value is much needed as things stand. We also recommend to step away
+       from writing tiles that are 8 kilobyte in their uncompressed form, or
+       writing single-line strips, in really big files, resulting in mega's
+       of tiles or strips. It's much more efficient to choose bigger tile or
+       strip sizes, up to several megabyte if needed, and have a few kilo of
+       tiles or strips instead.
+
+       <LI>Although it's rare, some application code does directly access
+       file offsets. Some of these are automatically upgraded because they
+       used the toff_t type, others need to be aware that the datatype
+       changed and need to start using toff_t or uint64. This impacts access
+       to tags like the EXIF IFD tag, for example, or the SubIfds tag, or to
+       StripOffsets or TileOffsets, the return type of functions like
+       TIFFCurrentDirOffset, and a parameter type to functions like
+       TIFFSetSubDirectory.
+
+       <LI>Although it's rare, some application code does use structures
+       like TIFFHeader or TIFFDirEntry that used to be an exact binary
+       representation of TIFF structures. These need to change. The old
+       TIFFHeader structure is replaced by the new TIFFHeaderClassic,
+       TIFFHeaderBig, and TIFFHeaderCommon structures that are an exact
+       binary representation of the ClassicTIFF and BigTIFF header, and of
+       the part that is common to both. There is no new equivalent for the
+       old TIFFDirEntry structure (or more precisely, there is still a
+       TIFFDirEntry structure, but it is changed, moved to library-private
+       definition, and no longer an exact binary representation of the tag
+       structure of either TIFF version).
+
+       <LI>Sizer functions, like TIFFTileSize or TIFFScanlineSize and the
+       like, return a tmsize_t value (tmsize_t is defined as int32 on 32bit
+       machines, and int64 on 64bit machines, and as such it is meant to
+       represent signed memory sizes). This is because we figure 98% of the
+       calling code uses the return value as sizes in allocations and the
+       like. So, any overflow that is theoretically possible with BigTIFF
+       when LibTiff is running on a 32bit system, is best detected inside the
+       sizer functions and it is best to return a type that makes sense as a
+       memory size. If your calling code is the exception and is interested
+       in actual file size, you best use the newer TIFFTileSize64 or
+       TIFFScanlineSize64 function that returns an uint64 type.
+
+       <LI>These TIFF tags require a 64-bit type as an argument in
+       libtiff 4.0.0:
+       <UL>
+       <LI> TIFFTAG_FREEBYTECOUNTS
+       <LI> TIFFTAG_FREEOFFSETS
+       <LI> TIFFTAG_STRIPBYTECOUNTS
+       <LI> TIFFTAG_STRIPOFFSETS
+       <LI> TIFFTAG_TILEBYTECOUNTS
+       <LI> TIFFTAG_TILEOFFSETS
+       </UL>
+
+</UL>
+
+Other important backward incompatible changes in the public API:
+
+<UL>
+       <LI> TIFFRewriteField() renamed into _TIFFRewriteField() and moved out
+       from the public interface (from tiffio.h to tiffiop.h). Type of its
+       'count' parameter changed from uint32 to tmsize_t.
+
+       <LI> TIFFMergeFieldInfo() returns non-void result now. It returns 0
+       if successful and -1 if failed. Though this is now obsoleted function
+       and should not be used in new programs. Use the new tag extension
+       scheme instead.
+
+       <LI> TIFFFieldWithTag() and TIFFFieldWithName() functions now return
+       pointer to TIFFField constant object instead of TIFFFieldInfo.
+
+       <LI> TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration
+       have been removed. They was unused and never been used properly.
+       Should be unneeded for high-level applications.
+
+       <LI> TIFFTagValue structure removed from the public tiffio.h
+       to private tif_dir.h and not accessible anymore. It should be unneeded
+       for high-level applications.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<P><A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A></P>
+
+<UL>
+
+       <LI>Updated autotools: Autoconf 2.68, Automake 1.11.1, libtool
+       2.4.
+
+       <LI>Enabled support for Automake silent build rules
+       (--enable-silent-rules or 'make V=0')
+
+       <LI>Enabled support for Automake colorized and parallel tests.
+
+       <LI>Added detection of 64-bit integer types since libtiff 4.0
+       requires use of 64-bit signed and unsigned integer types.
+
+       <LI>Libtiff now provides a more comprehensive test suite with
+       over 72 tests, which may be executed on Unix-like systems, or
+       under Microsoft Windows using MinGW/MSYS or Cygwin.
+
+       <LI>--disable-lzma configure option to disable use of liblzma.
+
+       <LI>--enable-defer-strile-load configure option to enable
+       experimental deferred strip/tile offset/size loading.  May
+       cause some extremely sophisticated uses of libtiff to fail.
+
+       <LI>--enable-chunky-strip-read configure option to enable
+       experimental enable reading large strips in chunks in
+       TIFFReadScanline().
+
+       <LI>Now always uses WIN32 native I/O functions for Microsoft
+       Windows except for under Cygwin.
+
+       <LI>Now provides a pkg-config support file (libtiff-4.pc).
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<P><A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A></P>
+
+<UL>
+
+        <LI>Patches/fixes made to stable libtiff (v3.9.X) are also
+        applied to 4.0.0.  There are too many to list here.  See the
+        distribution ChangeLog for a detailed change list.
+
+       <LI>There is considerable change in some files like
+       tif_dirread and tif_dirwrite. These changes don't impact
+       backwards compatibility, they are mostly a clean rewrite that
+       does allow BigTIFF support as well as somewhat more robust
+       reading of the unexpected already and will also serve future
+       API extension but does not impact current API or functionality
+       in a negative way that you need to know about.
+
+       <LI>Although there is still a functional definition for types
+       like toff_t (file offset), tstrip_t (strip index number), etc,
+       we recommend against using these in newer code. We have
+       learned that it is next to impossible to use these
+       consistently and make real abstraction of the binary format of
+       these types. Instead, at a certain level we always end up
+       doing casts anyway, and taking the exact binary format into
+       account, so these types are nothing but dangerously misleading
+       and obfuscating. You do not need to update calling code that
+       uses them, as 99.9% of such code will continue to work. But we
+       recommend against using them in newer calling code, and we
+       started replacing them with binary clear types like uint16,
+       uint32 and such in the library.
+
+       <LI>We do use and will continue to use one functional type
+       that is an exception to the above rule, being tmsize_t. This
+       is a signed memory size type, i.e. it is int32 on 32bit
+       machines, or int64 on 64bit machines.
+
+       <LI>Optionally support LZMA compression via TIFF tag 34925.
+       Tiffcp supports compression levels similar to "-c lzma:p1" or
+       "-c zip:p9 for setting the LZMA compression parameters.
+
+       <LI>Optionally defer the load of strip/tile offset and size
+       tags for optimized scanning of directories.  Enabled with the
+       --enable-defer-strile-load configure option (DEFER_STRILE_LOAD
+       #define in tif_config.h).
+
+       <LI>Optionally enable experimental support for reading big
+       strips in chunks.  Enabled with the --enable-chunky-strip-read
+       configure option.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<P><A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A></P>
+
+<UL>
+
+       <LI>tiffset: add -d and -sd switches to allow operation on
+       a particular directory, not just the first.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<P><A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A></P>
+
+<UL> 
+</UL>
+
+Last updated $Date: 2011-04-09 21:01:00 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/html/v4.0.1.html b/src/tiff/html/v4.0.1.html
new file mode 100644 (file)
index 0000000..1f113c1
--- /dev/null
@@ -0,0 +1,113 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v4.0.1
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v4.0.1<BR>
+<B>Previous Version</B>: <A HREF=v4.0.0.html>v4.0.0</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
+http://www.remotesensing.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).  If you don't
+find something listed here, then it was not done in this timeframe, or
+it was not considered important enough to be mentioned.  The following
+information is located here:
+<UL>
+<LI><A HREF="#highlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
+
+<UL>
+
+       <li> None
+
+</UL>
+
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
+
+<UL>
+
+       <li> --enable-ld-version-script: New configure option to
+       enable shared library symbol versioning on ELF-based systems
+       (e.g. Linux and FreeBSD) which use the GNU linker.  This
+       allows multiple major versions of libtiff to be loaded
+       simultaneously into the same application or library without
+       conflict, as long as all libtiffs involved are built with
+       versioned symbols.  This option is not enabled by default.
+
+        <li> Added libtiff private dependency on -llzma for pkg-config.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
+
+<UL>
+       <li> libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around
+        assumption tag fetching is always successful.
+
+        <li> libtiff/tif_jpeg.c: Extra caution for case where sp is NULL.
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
+
+<UL>
+
+       <li> None
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
+
+<UL> 
+
+       <li> None
+
+</UL>
+
+Last updated $Date: 2012-02-18 21:53:27 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/html/v4.0.2.html b/src/tiff/html/v4.0.2.html
new file mode 100644 (file)
index 0000000..c265b95
--- /dev/null
@@ -0,0 +1,118 @@
+<HTML>
+<HEAD>
+<TITLE>
+       Changes in TIFF v4.0.2
+</TITLE>
+</HEAD>
+
+<BODY BGCOLOR=white>
+<FONT FACE="Helvetica, Arial, Sans">
+
+<BASEFONT SIZE=4>
+<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
+<BASEFONT SIZE=3>
+
+<UL>
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+<B>Current Version</B>: v4.0.2<BR>
+<B>Previous Version</B>: <A HREF=v4.0.1.html>v4.0.1</a><BR>
+<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
+ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
+<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
+http://www.remotesensing.org/libtiff</a> 
+<HR SIZE=4 WIDTH=65% ALIGN=left>
+</UL>
+
+<P>
+This document describes the changes made to the software between the
+<I>previous</I> and <I>current</I> versions (see above).  If you don't
+find something listed here, then it was not done in this timeframe, or
+it was not considered important enough to be mentioned.  The following
+information is located here:
+<UL>
+<LI><A HREF="#highlights">Major Changes</A>
+<LI><A HREF="#configure">Changes in the software configuration</A>
+<LI><A HREF="#libtiff">Changes in libtiff</A>
+<LI><A HREF="#tools">Changes in the tools</A>
+<LI><A HREF="#contrib">Changes in the contrib area</A>
+</UL>
+<p> 
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
+
+<UL>
+
+       <li> None
+
+</UL>
+
+
+<P><HR WIDTH=65% ALIGN=left>
+<!--------------------------------------------------------------------------->
+
+<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
+
+<UL>
+
+  <li> None
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
+
+<UL>
+
+  <li> tif_getimage.c: added support for _SEPARATED CMYK images.
+
+  <li> tif_getimage.c: Added support for greyscale + alpha. 
+
+  <li> Added TIFFCreateCustomDirectory() and TIFFCreateEXIFDirectory() functions.
+  <li> tif_print.c: Lots of fixes around printing corrupt or
+    hostile input.
+    
+  <li> Improve handling of corrupt ycbcrsubsampling values. 
+
+  <li> tif_unix.c: use strerror to get meaningful error messages.
+
+  <li> tif_jpeg.c: fix serious bugs in JPEGDecodeRaw().
+
+  <li> tif_jpeg.c:  Fix size overflow (zdi-can-1221,CVE-2012-1173).
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!-------------------------------------------------------------------------->
+       
+<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
+
+<UL>
+
+       <li> tiff2pdf:  Defend against integer overflows while
+       calculating required buffer sizes (CVE-2012-2113).
+
+</UL>
+
+<P><HR WIDTH=65% ALIGN=left>
+
+<!--------------------------------------------------------------------------->
+
+<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
+
+<UL> 
+
+       <li> None
+
+</UL>
+
+Last updated $Date: 2012-06-16 00:19:37 $.
+
+</BODY>
+</HTML>
diff --git a/src/tiff/libtiff-4.pc.in b/src/tiff/libtiff-4.pc.in
new file mode 100644 (file)
index 0000000..abe75a6
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libtiff
+Description:  Tag Image File Format (TIFF) library.
+Version: @VERSION@
+Libs: -L${libdir} -ltiff
+Libs.private: @tiff_libs_private@
+Cflags: -I${includedir}
index a8780c7cf6c35f3fc9777422cf64e427b34be672..82fa31dc8fcd661fd6870f0a99683ffbb7d790b5 100644 (file)
 
 LIBPORT = $(top_builddir)/port/libport.la
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
+libtiffincludedir = $(includedir)
 
-EXTRA_DIST = Makefile.vc SConstruct tif_config.h.vc tiffconf.h.vc libtiff.def \
-            $(EXTRA_SRCS)
-
-HDRS = \
+EXTRA_DIST = Makefile.vc \
+            SConstruct \
+            tif_config.h-vms \
+            tif_config.vc.h \
+            tif_config.wince.h \
+            tiffconf.vc.h \
+            tiffconf.wince.h \
+            libtiff.def \
+            libtiff.map \
+            libtiffxx.map
+
+libtiffinclude_HEADERS = \
        tiff.h \
-        tiffconf.h \
        tiffio.h \
        tiffvers.h
 
 if HAVE_CXX
-HDRS +=        tiffio.hxx
+libtiffinclude_HEADERS += tiffio.hxx
 endif
 
-EXTRA_HDRS = \
+noinst_HEADERS = \
        t4.h \
        tif_dir.h \
        tif_predict.h \
        tiffiop.h \
        uvcode.h
 
-SRCS = \
+nodist_libtiffinclude_HEADERS = \
+       tiffconf.h
+
+libtiff_la_SOURCES = \
        tif_aux.c \
        tif_close.c \
        tif_codec.c \
@@ -63,8 +74,11 @@ SRCS = \
        tif_fax3sm.c \
        tif_flush.c \
        tif_getimage.c \
+       tif_jbig.c \
        tif_jpeg.c \
+       tif_jpeg_12.c \
        tif_luv.c \
+       tif_lzma.c \
        tif_lzw.c \
        tif_next.c \
        tif_ojpeg.c \
@@ -78,49 +92,47 @@ SRCS = \
        tif_swab.c \
        tif_thunder.c \
        tif_tile.c \
-       tif_unix.c \
        tif_version.c \
        tif_warning.c \
        tif_write.c \
        tif_zip.c
 
-SRCSXX = \
+libtiffxx_la_SOURCES = \
        tif_stream.cxx
 
-EXTRA_SRCS = \
-       tif_acorn.c \
-       tif_apple.c \
-       tif_atari.c \
-       tif_msdos.c \
-       tif_next.c \
-       tif_win3.c \
-       tif_win32.c
-
-libtiffincludedir = $(includedir)
-libtiffinclude_HEADERS = $(HDRS)
-noinst_HEADERS = $(EXTRA_HDRS)
+if WIN32_IO
+EXTRA_DIST += tif_unix.c
+libtiff_la_SOURCES += tif_win32.c
+else
+EXTRA_DIST += tif_win32.c
+libtiff_la_SOURCES += tif_unix.c
+endif
 
 lib_LTLIBRARIES = libtiff.la
 if HAVE_CXX
 lib_LTLIBRARIES += libtiffxx.la
 endif
 
-libtiff_la_SOURCES = $(SRCS)
 libtiff_la_LDFLAGS = \
        -no-undefined \
-       -version-number $(LIBTIFF_VERSION_INFO)
+       -version-info $(LIBTIFF_VERSION_INFO)
 if HAVE_RPATH
 libtiff_la_LDFLAGS += $(LIBDIR)
 endif
+if HAVE_LD_VERSION_SCRIPT
+libtiff_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtiff.map
+endif
 libtiff_la_LIBADD = $(LIBPORT)
 
-libtiffxx_la_SOURCES = $(SRCSXX)
 libtiffxx_la_LDFLAGS = \
        -no-undefined \
-       -version-number $(LIBTIFF_VERSION_INFO)
+       -version-info $(LIBTIFF_VERSION_INFO)
 if HAVE_RPATH
 libtiffxx_la_LDFLAGS += $(LIBDIR)
 endif
+if HAVE_LD_VERSION_SCRIPT
+libtiffxx_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libtiffxx.map
+endif
 libtiffxx_la_LIBADD = $(LIBTIFF) $(LIBPORT)
 libtiffxx_la_DEPENDENCIES = libtiff.la
 
index b313e40f64becf82dd16538221ba275324b72a33..a658342d59c42526207558d217a142bfa52f362c 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -63,92 +77,177 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 @HAVE_CXX_TRUE@am__append_1 = tiffio.hxx
-@HAVE_CXX_TRUE@am__append_2 = libtiffxx.la
-@HAVE_RPATH_TRUE@am__append_3 = $(LIBDIR)
-@HAVE_RPATH_TRUE@am__append_4 = $(LIBDIR)
+@WIN32_IO_TRUE@am__append_2 = tif_unix.c
+@WIN32_IO_TRUE@am__append_3 = tif_win32.c
+@WIN32_IO_FALSE@am__append_4 = tif_win32.c
+@WIN32_IO_FALSE@am__append_5 = tif_unix.c
+@HAVE_CXX_TRUE@am__append_6 = libtiffxx.la
+@HAVE_RPATH_TRUE@am__append_7 = $(LIBDIR)
+@HAVE_LD_VERSION_SCRIPT_TRUE@am__append_8 = -Wl,--version-script=$(srcdir)/libtiff.map
+@HAVE_RPATH_TRUE@am__append_9 = $(LIBDIR)
+@HAVE_LD_VERSION_SCRIPT_TRUE@am__append_10 = -Wl,--version-script=$(srcdir)/libtiffxx.map
 noinst_PROGRAMS = mkg3states$(EXEEXT)
 subdir = libtiff
 DIST_COMMON = $(am__libtiffinclude_HEADERS_DIST) $(noinst_HEADERS) \
        $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/tif_config.h.in $(srcdir)/tiffconf.h.in
+       $(srcdir)/tif_config.h.in $(srcdir)/tiffconf.h.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = tif_config.h tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
     *) f=$$p;; \
   esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 am__installdirs = "$(DESTDIR)$(libdir)" \
+       "$(DESTDIR)$(libtiffincludedir)" \
        "$(DESTDIR)$(libtiffincludedir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(lib_LTLIBRARIES)
-am__DEPENDENCIES_1 = $(top_builddir)/port/libport.la
-libtiff_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
-am__objects_1 = tif_aux.lo tif_close.lo tif_codec.lo tif_color.lo \
-       tif_compress.lo tif_dir.lo tif_dirinfo.lo tif_dirread.lo \
-       tif_dirwrite.lo tif_dumpmode.lo tif_error.lo tif_extension.lo \
-       tif_fax3.lo tif_fax3sm.lo tif_flush.lo tif_getimage.lo \
-       tif_jpeg.lo tif_luv.lo tif_lzw.lo tif_next.lo tif_ojpeg.lo \
+libtiff_la_DEPENDENCIES = $(LIBPORT)
+am__libtiff_la_SOURCES_DIST = tif_aux.c tif_close.c tif_codec.c \
+       tif_color.c tif_compress.c tif_dir.c tif_dirinfo.c \
+       tif_dirread.c tif_dirwrite.c tif_dumpmode.c tif_error.c \
+       tif_extension.c tif_fax3.c tif_fax3sm.c tif_flush.c \
+       tif_getimage.c tif_jbig.c tif_jpeg.c tif_jpeg_12.c tif_luv.c \
+       tif_lzma.c tif_lzw.c tif_next.c tif_ojpeg.c tif_open.c \
+       tif_packbits.c tif_pixarlog.c tif_predict.c tif_print.c \
+       tif_read.c tif_strip.c tif_swab.c tif_thunder.c tif_tile.c \
+       tif_version.c tif_warning.c tif_write.c tif_zip.c tif_win32.c \
+       tif_unix.c
+@WIN32_IO_TRUE@am__objects_1 = tif_win32.lo
+@WIN32_IO_FALSE@am__objects_2 = tif_unix.lo
+am_libtiff_la_OBJECTS = tif_aux.lo tif_close.lo tif_codec.lo \
+       tif_color.lo tif_compress.lo tif_dir.lo tif_dirinfo.lo \
+       tif_dirread.lo tif_dirwrite.lo tif_dumpmode.lo tif_error.lo \
+       tif_extension.lo tif_fax3.lo tif_fax3sm.lo tif_flush.lo \
+       tif_getimage.lo tif_jbig.lo tif_jpeg.lo tif_jpeg_12.lo \
+       tif_luv.lo tif_lzma.lo tif_lzw.lo tif_next.lo tif_ojpeg.lo \
        tif_open.lo tif_packbits.lo tif_pixarlog.lo tif_predict.lo \
        tif_print.lo tif_read.lo tif_strip.lo tif_swab.lo \
-       tif_thunder.lo tif_tile.lo tif_unix.lo tif_version.lo \
-       tif_warning.lo tif_write.lo tif_zip.lo
-am_libtiff_la_OBJECTS = $(am__objects_1)
+       tif_thunder.lo tif_tile.lo tif_version.lo tif_warning.lo \
+       tif_write.lo tif_zip.lo $(am__objects_1) $(am__objects_2)
 libtiff_la_OBJECTS = $(am_libtiff_la_OBJECTS)
-am__DEPENDENCIES_2 = $(top_builddir)/libtiff/libtiff.la
-am__objects_2 = tif_stream.lo
-am_libtiffxx_la_OBJECTS = $(am__objects_2)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+libtiff_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(libtiff_la_LDFLAGS) $(LDFLAGS) -o $@
+am_libtiffxx_la_OBJECTS = tif_stream.lo
 libtiffxx_la_OBJECTS = $(am_libtiffxx_la_OBJECTS)
+libtiffxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+       $(CXXFLAGS) $(libtiffxx_la_LDFLAGS) $(LDFLAGS) -o $@
 @HAVE_CXX_TRUE@am_libtiffxx_la_rpath = -rpath $(libdir)
 PROGRAMS = $(noinst_PROGRAMS)
 am_mkg3states_OBJECTS = mkg3states.$(OBJEXT)
 mkg3states_OBJECTS = $(am_mkg3states_OBJECTS)
-mkg3states_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -I.
+mkg3states_DEPENDENCIES = $(LIBPORT)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
        $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_@AM_V@)
+am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
+am__v_CXX_0 = @echo "  CXX     " $@;
+am__v_CXX_1 = 
 CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
        $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo "  CXXLD   " $@;
+am__v_CXXLD_1 = 
 SOURCES = $(libtiff_la_SOURCES) $(libtiffxx_la_SOURCES) \
        $(mkg3states_SOURCES)
-DIST_SOURCES = $(libtiff_la_SOURCES) $(libtiffxx_la_SOURCES) \
+DIST_SOURCES = $(am__libtiff_la_SOURCES_DIST) $(libtiffxx_la_SOURCES) \
        $(mkg3states_SOURCES)
-am__libtiffinclude_HEADERS_DIST = tiff.h tiffconf.h tiffio.h \
-       tiffvers.h tiffio.hxx
-libtiffincludeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(libtiffinclude_HEADERS) $(noinst_HEADERS)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__libtiffinclude_HEADERS_DIST = tiff.h tiffio.h tiffvers.h \
+       tiffio.hxx
+HEADERS = $(libtiffinclude_HEADERS) $(nodist_libtiffinclude_HEADERS) \
+       $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -168,6 +267,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -182,12 +282,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -206,20 +301,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -231,136 +331,102 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 LIBPORT = $(top_builddir)/port/libport.la
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
-EXTRA_DIST = Makefile.vc SConstruct tif_config.h.vc tiffconf.h.vc libtiff.def \
-            $(EXTRA_SRCS)
-
-HDRS = tiff.h tiffconf.h tiffio.h tiffvers.h $(am__append_1)
-EXTRA_HDRS = \
+libtiffincludedir = $(includedir)
+EXTRA_DIST = Makefile.vc SConstruct tif_config.h-vms tif_config.vc.h \
+       tif_config.wince.h tiffconf.vc.h tiffconf.wince.h libtiff.def \
+       libtiff.map libtiffxx.map $(am__append_2) $(am__append_4)
+libtiffinclude_HEADERS = tiff.h tiffio.h tiffvers.h $(am__append_1)
+noinst_HEADERS = \
        t4.h \
        tif_dir.h \
        tif_predict.h \
        tiffiop.h \
        uvcode.h
 
-SRCS = \
-       tif_aux.c \
-       tif_close.c \
-       tif_codec.c \
-       tif_color.c \
-       tif_compress.c \
-       tif_dir.c \
-       tif_dirinfo.c \
-       tif_dirread.c \
-       tif_dirwrite.c \
-       tif_dumpmode.c \
-       tif_error.c \
-       tif_extension.c \
-       tif_fax3.c \
-       tif_fax3sm.c \
-       tif_flush.c \
-       tif_getimage.c \
-       tif_jpeg.c \
-       tif_luv.c \
-       tif_lzw.c \
-       tif_next.c \
-       tif_ojpeg.c \
-       tif_open.c \
-       tif_packbits.c \
-       tif_pixarlog.c \
-       tif_predict.c \
-       tif_print.c \
-       tif_read.c \
-       tif_strip.c \
-       tif_swab.c \
-       tif_thunder.c \
-       tif_tile.c \
-       tif_unix.c \
-       tif_version.c \
-       tif_warning.c \
-       tif_write.c \
-       tif_zip.c
-
-SRCSXX = \
+nodist_libtiffinclude_HEADERS = \
+       tiffconf.h
+
+libtiff_la_SOURCES = tif_aux.c tif_close.c tif_codec.c tif_color.c \
+       tif_compress.c tif_dir.c tif_dirinfo.c tif_dirread.c \
+       tif_dirwrite.c tif_dumpmode.c tif_error.c tif_extension.c \
+       tif_fax3.c tif_fax3sm.c tif_flush.c tif_getimage.c tif_jbig.c \
+       tif_jpeg.c tif_jpeg_12.c tif_luv.c tif_lzma.c tif_lzw.c \
+       tif_next.c tif_ojpeg.c tif_open.c tif_packbits.c \
+       tif_pixarlog.c tif_predict.c tif_print.c tif_read.c \
+       tif_strip.c tif_swab.c tif_thunder.c tif_tile.c tif_version.c \
+       tif_warning.c tif_write.c tif_zip.c $(am__append_3) \
+       $(am__append_5)
+libtiffxx_la_SOURCES = \
        tif_stream.cxx
 
-EXTRA_SRCS = \
-       tif_acorn.c \
-       tif_apple.c \
-       tif_atari.c \
-       tif_msdos.c \
-       tif_next.c \
-       tif_win3.c \
-       tif_win32.c
-
-libtiffincludedir = $(includedir)
-libtiffinclude_HEADERS = $(HDRS)
-noinst_HEADERS = $(EXTRA_HDRS)
-lib_LTLIBRARIES = libtiff.la $(am__append_2)
-libtiff_la_SOURCES = $(SRCS)
-libtiff_la_LDFLAGS = -no-undefined -version-number \
-       $(LIBTIFF_VERSION_INFO) $(am__append_3)
+lib_LTLIBRARIES = libtiff.la $(am__append_6)
+libtiff_la_LDFLAGS = -no-undefined -version-info \
+       $(LIBTIFF_VERSION_INFO) $(am__append_7) $(am__append_8)
 libtiff_la_LIBADD = $(LIBPORT)
-libtiffxx_la_SOURCES = $(SRCSXX)
-libtiffxx_la_LDFLAGS = -no-undefined -version-number \
-       $(LIBTIFF_VERSION_INFO) $(am__append_4)
+libtiffxx_la_LDFLAGS = -no-undefined -version-info \
+       $(LIBTIFF_VERSION_INFO) $(am__append_9) $(am__append_10)
 libtiffxx_la_LIBADD = $(LIBTIFF) $(LIBPORT)
 libtiffxx_la_DEPENDENCIES = libtiff.la
 mkg3states_SOURCES = mkg3states.c tif_fax3.h
@@ -374,14 +440,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  libtiff/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  libtiff/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libtiff/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign libtiff/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -399,26 +465,23 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 tif_config.h: stamp-h1
-       @if test ! -f $@; then \
-         rm -f stamp-h1; \
-         $(MAKE) stamp-h1; \
-       else :; fi
+       @if test ! -f $@; then rm -f stamp-h1; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
 
 stamp-h1: $(srcdir)/tif_config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
        cd $(top_builddir) && $(SHELL) ./config.status libtiff/tif_config.h
 $(srcdir)/tif_config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
-       cd $(top_srcdir) && $(AUTOHEADER)
+       ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h1
        touch $@
 
 tiffconf.h: stamp-h2
-       @if test ! -f $@; then \
-         rm -f stamp-h2; \
-         $(MAKE) stamp-h2; \
-       else :; fi
+       @if test ! -f $@; then rm -f stamp-h2; else :; fi
+       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h2; else :; fi
 
 stamp-h2: $(srcdir)/tiffconf.h.in $(top_builddir)/config.status
        @rm -f stamp-h2
@@ -428,45 +491,54 @@ distclean-hdr:
        -rm -f tif_config.h stamp-h1 tiffconf.h stamp-h2
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
-       test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
-       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       list2=; for p in $$list; do \
          if test -f $$p; then \
-           f=$(am__strip_dir) \
-           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+           list2="$$list2 $$p"; \
          else :; fi; \
-       done
+       done; \
+       test -z "$$list2" || { \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
+       }
 
 uninstall-libLTLIBRARIES:
        @$(NORMAL_UNINSTALL)
-       @set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-         p=$(am__strip_dir) \
-         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+       @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
+       for p in $$list; do \
+         $(am__strip_dir) \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
        done
 
 clean-libLTLIBRARIES:
        -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
-libtiff.la: $(libtiff_la_OBJECTS) $(libtiff_la_DEPENDENCIES) 
-       $(LINK) -rpath $(libdir) $(libtiff_la_LDFLAGS) $(libtiff_la_OBJECTS) $(libtiff_la_LIBADD) $(LIBS)
-libtiffxx.la: $(libtiffxx_la_OBJECTS) $(libtiffxx_la_DEPENDENCIES) 
-       $(CXXLINK) $(am_libtiffxx_la_rpath) $(libtiffxx_la_LDFLAGS) $(libtiffxx_la_OBJECTS) $(libtiffxx_la_LIBADD) $(LIBS)
+       @list='$(lib_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libtiff.la: $(libtiff_la_OBJECTS) $(libtiff_la_DEPENDENCIES) $(EXTRA_libtiff_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(libtiff_la_LINK) -rpath $(libdir) $(libtiff_la_OBJECTS) $(libtiff_la_LIBADD) $(LIBS)
+libtiffxx.la: $(libtiffxx_la_OBJECTS) $(libtiffxx_la_DEPENDENCIES) $(EXTRA_libtiffxx_la_DEPENDENCIES) 
+       $(AM_V_CXXLD)$(libtiffxx_la_LINK) $(am_libtiffxx_la_rpath) $(libtiffxx_la_OBJECTS) $(libtiffxx_la_LIBADD) $(LIBS)
 
 clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-mkg3states$(EXEEXT): $(mkg3states_OBJECTS) $(mkg3states_DEPENDENCIES) 
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+mkg3states$(EXEEXT): $(mkg3states_OBJECTS) $(mkg3states_DEPENDENCIES) $(EXTRA_mkg3states_DEPENDENCIES) 
        @rm -f mkg3states$(EXEEXT)
-       $(LINK) $(mkg3states_LDFLAGS) $(mkg3states_OBJECTS) $(mkg3states_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(mkg3states_OBJECTS) $(mkg3states_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -491,8 +563,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_fax3sm.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_flush.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_getimage.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jbig.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jpeg.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_jpeg_12.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_luv.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_lzma.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_lzw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_next.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_ojpeg.Plo@am__quote@
@@ -510,150 +585,193 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_unix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_version.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_warning.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_win32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_write.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tif_zip.Plo@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 .cxx.o:
-@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
 
 .cxx.obj:
-@am__fastdepCXX_TRUE@  if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .cxx.lo:
-@am__fastdepCXX_TRUE@  if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCXX_TRUE@  then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@     source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCXX_TRUE@  $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@  $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@     $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@     DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
 install-libtiffincludeHEADERS: $(libtiffinclude_HEADERS)
        @$(NORMAL_INSTALL)
-       test -z "$(libtiffincludedir)" || $(mkdir_p) "$(DESTDIR)$(libtiffincludedir)"
-       @list='$(libtiffinclude_HEADERS)'; for p in $$list; do \
+       @list='$(libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libtiffincludedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libtiffincludedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
          if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-         f=$(am__strip_dir) \
-         echo " $(libtiffincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(libtiffincludedir)/$$f'"; \
-         $(libtiffincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(libtiffincludedir)/$$f"; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libtiffincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(libtiffincludedir)" || exit $$?; \
        done
 
 uninstall-libtiffincludeHEADERS:
        @$(NORMAL_UNINSTALL)
-       @list='$(libtiffinclude_HEADERS)'; for p in $$list; do \
-         f=$(am__strip_dir) \
-         echo " rm -f '$(DESTDIR)$(libtiffincludedir)/$$f'"; \
-         rm -f "$(DESTDIR)$(libtiffincludedir)/$$f"; \
+       @list='$(libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(libtiffincludedir)'; $(am__uninstall_files_from_dir)
+install-nodist_libtiffincludeHEADERS: $(nodist_libtiffinclude_HEADERS)
+       @$(NORMAL_INSTALL)
+       @list='$(nodist_libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(libtiffincludedir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(libtiffincludedir)" || exit 1; \
+       fi; \
+       for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; \
+       done | $(am__base_list) | \
+       while read files; do \
+         echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libtiffincludedir)'"; \
+         $(INSTALL_HEADER) $$files "$(DESTDIR)$(libtiffincludedir)" || exit $$?; \
        done
 
+uninstall-nodist_libtiffincludeHEADERS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(nodist_libtiffinclude_HEADERS)'; test -n "$(libtiffincludedir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       dir='$(DESTDIR)$(libtiffincludedir)'; $(am__uninstall_files_from_dir)
+
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES) tif_config.h.in tiffconf.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS) tif_config.h.in tiffconf.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 \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES) tif_config.h.in tiffconf.h.in $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS) tif_config.h.in tiffconf.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" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -662,8 +780,8 @@ check: check-am
 all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) tif_config.h \
                tiffconf.h
 installdirs:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libtiffincludedir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libtiffincludedir)" "$(DESTDIR)$(libtiffincludedir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -675,16 +793,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -698,7 +822,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-hdr distclean-libtool distclean-tags
+       distclean-hdr distclean-tags
 
 dvi: dvi-am
 
@@ -706,18 +830,39 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
-install-data-am: install-libtiffincludeHEADERS
+install-data-am: install-libtiffincludeHEADERS \
+       install-nodist_libtiffincludeHEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
 
 install-exec-am: install-libLTLIBRARIES
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -738,26 +883,33 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
-       uninstall-libtiffincludeHEADERS
+uninstall-am: uninstall-libLTLIBRARIES uninstall-libtiffincludeHEADERS \
+       uninstall-nodist_libtiffincludeHEADERS
+
+.MAKE: all install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \
-       distclean distclean-compile distclean-generic distclean-hdr \
-       distclean-libtool distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
-       install-data-am install-exec install-exec-am install-info \
-       install-info-am install-libLTLIBRARIES \
-       install-libtiffincludeHEADERS install-man install-strip \
+       clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \
+       cscopelist ctags distclean distclean-compile distclean-generic \
+       distclean-hdr distclean-libtool distclean-tags distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-libLTLIBRARIES \
+       install-libtiffincludeHEADERS install-man \
+       install-nodist_libtiffincludeHEADERS install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
        installcheck installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-info-am \
-       uninstall-libLTLIBRARIES uninstall-libtiffincludeHEADERS
+       tags uninstall uninstall-am uninstall-libLTLIBRARIES \
+       uninstall-libtiffincludeHEADERS \
+       uninstall-nodist_libtiffincludeHEADERS
 
 
 faxtable: mkg3states
        (rm -f tif_fax3sm.c && ./mkg3states -b -c const tif_fax3sm.c)
+
 # 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:
index de9af6737349ce03a64fe9231c22fbdcb5619ac6..91c666e5c835d0472c37cf5e637a1f00bbd8fa5f 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.vc,v 1.15 2006/03/23 14:54:02 dron Exp $\r
+# $Id: Makefile.vc,v 1.22 2009-06-23 18:25:43 fwarmerdam Exp $\r
 #\r
 # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\r
 #\r
@@ -29,7 +29,7 @@
 \r
 !INCLUDE ..\nmake.opt\r
 \r
-INCL   = -I. $(JPEG_INCLUDE) $(ZLIB_INCLUDE)\r
+INCL   = -I. $(JPEG_INCLUDE) $(ZLIB_INCLUDE) $(JBIG_INCLUDE)\r
 \r
 !IFDEF USE_WIN_CRT_LIB\r
 OBJ_SYSDEP_MODULE = tif_unix.obj\r
@@ -53,7 +53,9 @@ OBJ   = \
        tif_fax3.obj \\r
        tif_fax3sm.obj \\r
        tif_getimage.obj \\r
+       tif_jbig.obj \\r
        tif_jpeg.obj \\r
+       tif_jpeg_12.obj \\r
        tif_ojpeg.obj \\r
        tif_flush.obj \\r
        tif_luv.obj \\r
@@ -78,11 +80,11 @@ OBJ = \
 \r
 all:   libtiff.lib $(DLLNAME)\r
 \r
-tif_config.h:  tif_config.h.vc\r
-       copy tif_config.h.vc tif_config.h\r
+tif_config.h:  tif_config.vc.h\r
+       copy tif_config.vc.h tif_config.h\r
 \r
-tiffconf.h:    tiffconf.h.vc\r
-       copy tiffconf.h.vc tiffconf.h\r
+tiffconf.h:    tiffconf.vc.h\r
+       copy tiffconf.vc.h tiffconf.h\r
 \r
 libtiff.lib:   tif_config.h tiffconf.h $(OBJ)\r
        $(AR) /out:libtiff.lib $(OBJ) $(LIBS)\r
@@ -92,7 +94,9 @@ $(DLLNAME):   tif_config.h tiffconf.h libtiff.def $(OBJ)
        /implib:libtiff_i.lib $(OBJ) $(LIBS)\r
        \r
 clean:\r
+       -del tif_config.h tiffconf.h\r
        -del *.obj\r
        -del *.lib\r
        -del *.dll\r
-       -del *.exe\r
+       -del *.dll.manifest\r
+       -del *.pdb\r
index 421ab2467072b4d6855afbfd744ac8c6ef5be873..cb6a7cc957fbf6f09650c0f8c4ecbf5be1b939f4 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: SConstruct,v 1.2 2006/03/23 14:54:02 dron Exp $
+# $Id: SConstruct,v 1.4 2007/02/24 15:03:50 dron Exp $
 
 # Tag Image File Format (TIFF) Software
 #
@@ -46,6 +46,7 @@ SRCS = [ \
        'tif_fax3sm.c', \
        'tif_flush.c', \
        'tif_getimage.c', \
+       'tif_jbig.c', \
        'tif_jpeg.c', \
        'tif_luv.c', \
        'tif_lzw.c', \
@@ -69,3 +70,4 @@ SRCS = [ \
 
 StaticLibrary('tiff', SRCS)
 SharedLibrary('tiff', SRCS)
+
index 3caefd8365459cfd4513750d8d15112b8b966d4b..892ad23e0e20e645ae48efc4e350e07dced02d13 100644 (file)
@@ -12,12 +12,19 @@ EXPORTS TIFFOpen
        TIFFGetTagListEntry
        TIFFGetTagListCount
        TIFFReadDirectory
+       TIFFScanlineSize64
        TIFFScanlineSize
+       TIFFStripSize64
        TIFFStripSize
+       TIFFVStripSize64
        TIFFVStripSize
+       TIFFRawStripSize64
        TIFFRawStripSize
+       TIFFTileRowSize64
        TIFFTileRowSize
+       TIFFTileSize64
        TIFFTileSize
+       TIFFVTileSize64
        TIFFVTileSize
        TIFFFileno
        TIFFSetFileno
@@ -86,17 +93,20 @@ EXPORTS TIFFOpen
        TIFFWriteEncodedTile
        TIFFWriteRawTile
        TIFFSetWriteOffset
+       TIFFSwabFloat
        TIFFSwabDouble
        TIFFSwabShort
        TIFFSwabLong
        TIFFSwabArrayOfShort
        TIFFSwabArrayOfLong
+       TIFFSwabArrayOfFloat
        TIFFSwabArrayOfDouble
        TIFFSwabArrayOfTriples
        TIFFReverseBits
        TIFFGetBitRevTable
        TIFFDefaultStripSize
        TIFFDefaultTileSize
+       TIFFRasterScanlineSize64
        TIFFRasterScanlineSize
        _TIFFmalloc
        _TIFFrealloc
@@ -104,13 +114,17 @@ EXPORTS TIFFOpen
        _TIFFmemset
        _TIFFmemcpy
        _TIFFmemcmp
+       _TIFFCheckMalloc
        TIFFCreateDirectory
        TIFFSetTagExtender
-       TIFFMergeFieldInfo
-       TIFFFindFieldInfo
-       TIFFFindFieldInfoByName
        TIFFFieldWithName
        TIFFFieldWithTag
+       TIFFFieldTag
+       TIFFFieldName
+       TIFFFieldDataType
+       TIFFFieldPassCount
+       TIFFFieldReadCount
+       TIFFFieldWriteCount
        TIFFCurrentDirOffset
        TIFFWriteCheck
        TIFFRGBAImageOK
@@ -137,4 +151,8 @@ EXPORTS TIFFOpen
        TIFFAccessTagMethods
        TIFFGetClientInfo
        TIFFSetClientInfo
-       TIFFReassignTagToIgnore
+       TIFFSwabLong8
+       TIFFSwabArrayOfLong8
+       TIFFFindField
+       TIFFUnsetField
+       TIFFMergeFieldInfo
diff --git a/src/tiff/libtiff/libtiff.map b/src/tiff/libtiff/libtiff.map
new file mode 100644 (file)
index 0000000..2fc177f
--- /dev/null
@@ -0,0 +1,4 @@
+LIBTIFF_4.0 {
+  global:
+    *;
+};
diff --git a/src/tiff/libtiff/libtiffxx.map b/src/tiff/libtiff/libtiffxx.map
new file mode 100644 (file)
index 0000000..e2f648f
--- /dev/null
@@ -0,0 +1,4 @@
+LIBTIFFXX_4.0 {
+  global:
+    *;
+};
index c6efa79792e18e95ffab7fc0ad244108bff60327..1e1d9761c7114c86a50a7de9673e55e51f67325c 100644 (file)
 
 #include "tif_fax3.h"
 
+#ifndef HAVE_GETOPT
+extern int getopt(int, char**, char*);
+#endif
+
 #define        streq(a,b)      (strcmp(a,b) == 0)
 
 /* NB: can't use names in tif_fax3.h 'cuz they are declared const */
@@ -438,3 +442,10 @@ main(int argc, char* argv[])
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index fa4f5f75d0f837e490c26accae3b0f70c5e1e231..8e71e54831ab9c09c064b7a8f16182fd0c7b039d 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
  * worthwhile to make code & length 8 bits.
  */
 typedef struct tableentry {
-    unsigned short length;     /* bit length of g3 code */
-    unsigned short code;       /* g3 code */
-    short      runlen;         /* run length in bits */
+    unsigned short length;  /* bit length of g3 code */
+    unsigned short code;    /* g3 code */
+    short runlen;           /* run length in bits */
 } tableentry;
 
-#define        EOL     0x001   /* EOL code value - 0000 0000 0000 1 */
+#define EOL    0x001   /* EOL code value - 0000 0000 0000 1 */
 
 /* status values returned instead of a run length */
-#define        G3CODE_EOL      -1      /* NB: ACT_EOL - ACT_WRUNT */
-#define        G3CODE_INVALID  -2      /* NB: ACT_INVALID - ACT_WRUNT */
-#define        G3CODE_EOF      -3      /* end of input data */
-#define        G3CODE_INCOMP   -4      /* incomplete run code */
+#define G3CODE_EOL     -1      /* NB: ACT_EOL - ACT_WRUNT */
+#define G3CODE_INVALID -2      /* NB: ACT_INVALID - ACT_WRUNT */
+#define G3CODE_EOF     -3      /* end of input data */
+#define G3CODE_INCOMP  -4      /* incomplete run code */
 
 /*
  * Note that these tables are ordered such that the
@@ -279,7 +279,14 @@ const tableentry TIFFFaxBlackCodes[] = {
     { 12, 0x0, G3CODE_INVALID },       /* 0000 0000 0000 */
 };
 #else
-extern const tableentry TIFFFaxWhiteCodes[];
-extern const tableentry TIFFFaxBlackCodes[];
+extern const tableentry TIFFFaxWhiteCodes[];
+extern const tableentry TIFFFaxBlackCodes[];
 #endif
 #endif /* _T4_ */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_acorn.c b/src/tiff/libtiff/tif_acorn.c
deleted file mode 100644 (file)
index 478390f..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_acorn.c,v 1.2 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library RISC OS specific Routines.
- * Developed out of the Unix version.
- * Peter Greenham, May 1995
- */
-#include "tiffiop.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-/*
-Low-level file handling
-~~~~~~~~~~~~~~~~~~~~~~~
-The functions in osfcn.h are unavailable when compiling under C, as it's a
-C++ header. Therefore they have been implemented here.
-
-Now, why have I done it this way?
-
-The definitive API library for RISC OS is Jonathan Coxhead's OSLib, which
-uses heavily optimised ARM assembler or even plain inline SWI calls for
-maximum performance and minimum runtime size. However, I don't want to make
-LIBTIFF need that to survive. Therefore I have also emulated the functions
-using macros to _swi() and _swix() defined in the swis.h header, and
-borrowing types from kernel.h, which is less efficient but doesn't need any
-third-party libraries.
- */
-
-#ifdef INCLUDE_OSLIB
-
-#include "osfile.h"
-#include "osgbpb.h"
-#include "osargs.h"
-#include "osfind.h"
-
-#else
-
-/* OSLIB EMULATION STARTS */
-
-#include "kernel.h"
-#include "swis.h"
-
-/* From oslib:types.h */
-typedef unsigned int                            bits;
-typedef unsigned char                           byte;
-#ifndef TRUE
-#define TRUE                                    1
-#endif
-#ifndef FALSE
-#define FALSE                                   0
-#endif
-#ifndef NULL
-#define NULL                                    0
-#endif
-#ifndef SKIP
-#define SKIP                                    0
-#endif
-
-/* From oslib:os.h */
-typedef _kernel_oserror os_error;
-typedef byte os_f;
-
-/* From oslib:osfile.h */
-#undef  OS_File
-#define OS_File                                 0x8
-
-/* From oslib:osgbpb.h */
-#undef  OS_GBPB
-#define OS_GBPB                                 0xC
-#undef  OSGBPB_Write
-#define OSGBPB_Write                            0x2
-#undef  OSGBPB_Read
-#define OSGBPB_Read                             0x4
-
-extern os_error *xosgbpb_write (os_f file,
-      byte *data,
-      int size,
-      int *unwritten);
-extern int osgbpb_write (os_f file,
-      byte *data,
-      int size);
-
-#define        xosgbpb_write(file, data, size, unwritten) \
-       (os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_OUT(3), \
-               OSGBPB_WriteAt, \
-               file, \
-               data, \
-               size, \
-               unwritten)
-
-#define        osgbpb_write(file, data, size) \
-       _swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
-               OSGBPB_Write, \
-               file, \
-               data, \
-               size)
-
-extern os_error *xosgbpb_read (os_f file,
-      byte *buffer,
-      int size,
-      int *unread);
-extern int osgbpb_read (os_f file,
-      byte *buffer,
-      int size);
-
-#define        xosgbpb_read(file, buffer, size, unread) \
-       (os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_OUT(3), \
-               OSGBPB_Read, \
-               file, \
-               buffer, \
-               size, \
-               unread)
-
-#define        osgbpb_read(file, buffer, size) \
-       _swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
-               OSGBPB_Read, \
-               file, \
-               buffer, \
-               size)
-
-/* From oslib:osfind.h */
-#undef  OS_Find
-#define OS_Find                                 0xD
-#undef  OSFind_Openin
-#define OSFind_Openin                           0x40
-#undef  OSFind_Openout
-#define OSFind_Openout                          0x80
-#undef  OSFind_Openup
-#define OSFind_Openup                           0xC0
-#undef  OSFind_Close
-#define OSFind_Close                            0x0
-
-#define        xosfind_open(reason, file_name, path, file) \
-       (os_error*) _swix(OS_Find, _IN(0)|_IN(1)|_IN(2)|_OUT(0), \
-               reason, file_name, path, file)
-
-#define        osfind_open(reason, file_name, path) \
-       (os_f) _swi(OS_Find, _IN(0)|_IN(1)|_IN(2)|_RETURN(0), \
-               reason, file_name, path)
-
-extern os_error *xosfind_openin (bits flags,
-      char *file_name,
-      char *path,
-      os_f *file);
-extern os_f osfind_openin (bits flags,
-      char *file_name,
-      char *path);
-
-#define        xosfind_openin(flags, file_name, path, file) \
-       xosfind_open(flags | OSFind_Openin, file_name, path, file)
-
-#define        osfind_openin(flags, file_name, path) \
-       osfind_open(flags | OSFind_Openin, file_name, path)
-
-extern os_error *xosfind_openout (bits flags,
-      char *file_name,
-      char *path,
-      os_f *file);
-extern os_f osfind_openout (bits flags,
-      char *file_name,
-      char *path);
-
-#define        xosfind_openout(flags, file_name, path, file) \
-       xosfind_open(flags | OSFind_Openout, file_name, path, file)
-
-#define        osfind_openout(flags, file_name, path) \
-       osfind_open(flags | OSFind_Openout, file_name, path)
-
-extern os_error *xosfind_openup (bits flags,
-      char *file_name,
-      char *path,
-      os_f *file);
-extern os_f osfind_openup (bits flags,
-      char *file_name,
-      char *path);
-
-#define        xosfind_openup(flags, file_name, path, file) \
-       xosfind_open(flags | OSFind_Openup, file_name, path, file)
-
-#define        osfind_openup(flags, file_name, path) \
-       osfind_open(flags | OSFind_Openup, file_name, path)
-
-extern os_error *xosfind_close (os_f file);
-extern void osfind_close (os_f file);
-
-#define        xosfind_close(file) \
-       (os_error*) _swix(OS_Find, _IN(0)|_IN(1), \
-               OSFind_Close, \
-               file)
-
-#define        osfind_close(file) \
-       (void) _swi(OS_Find, _IN(0)|_IN(1), \
-               OSFind_Close, \
-               file)
-
-/* From oslib:osargs.h */
-#undef  OS_Args
-#define OS_Args                                 0x9
-#undef  OSArgs_ReadPtr
-#define OSArgs_ReadPtr                          0x0
-#undef  OSArgs_SetPtr
-#define OSArgs_SetPtr                           0x1
-#undef  OSArgs_ReadExt
-#define OSArgs_ReadExt                          0x2
-
-extern os_error *xosargs_read_ptr (os_f file,
-      int *ptr);
-extern int osargs_read_ptr (os_f file);
-
-#define        xosargs_read_ptr(file, ptr) \
-       (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
-               OSArgs_ReadPtr, \
-               file, \
-               ptr)
-
-#define        osargs_read_ptr(file) \
-       _swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
-               OSArgs_ReadPtr, \
-               file)
-
-extern os_error *xosargs_set_ptr (os_f file,
-      int ptr);
-extern void osargs_set_ptr (os_f file,
-      int ptr);
-
-#define        xosargs_set_ptr(file, ptr) \
-       (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_IN(2), \
-               OSArgs_SetPtr, \
-               file, \
-               ptr)
-
-#define        osargs_set_ptr(file, ptr) \
-       (void) _swi(OS_Args, _IN(0)|_IN(1)|_IN(2), \
-               OSArgs_SetPtr, \
-               file, \
-               ptr)
-
-extern os_error *xosargs_read_ext (os_f file,
-      int *ext);
-extern int osargs_read_ext (os_f file);
-
-#define        xosargs_read_ext(file, ext) \
-       (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
-               OSArgs_ReadExt, \
-               file, \
-               ext)
-
-#define        osargs_read_ext(file) \
-       _swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
-               OSArgs_ReadExt, \
-               file)
-
-/* OSLIB EMULATION ENDS */
-
-#endif
-
-#ifndef __osfcn_h
-/* Will be set or not during tiffcomp.h */
-/* You get this to compile under C++? Please say how! */
-
-extern int open(const char* name, int flags, int mode)
-{
-       /* From what I can tell, should return <0 for failure */
-       os_error* e = (os_error*) 1; /* Cheeky way to use a pointer eh? :-) */
-       os_f file = (os_f) -1;
-
-       flags = flags;
-
-       switch(mode)
-       {
-               case O_RDONLY:
-               {
-                       e = xosfind_openin(SKIP, name, SKIP, &file);
-                       break;
-               }
-               case O_WRONLY:
-               case O_RDWR|O_CREAT:
-               case O_RDWR|O_CREAT|O_TRUNC:
-               {
-                       e = xosfind_openout(SKIP, name, SKIP, &file);
-                       break;
-               }
-               case O_RDWR:
-               {
-                       e = xosfind_openup(SKIP, name, SKIP, &file);
-                       break;
-               }
-       }
-       if (e)
-       {
-               file = (os_f) -1;
-       }
-       return (file);
-}
-
-extern int close(int fd)
-{
-       return ((int) xosfind_close((os_f) fd));
-}
-
-extern int write(int fd, const char *buf, int nbytes)
-{
-       /* Returns number of bytes written */
-       return (nbytes - osgbpb_write((os_f) fd, (const byte*) buf, nbytes));
-}
-
-extern int read(int fd, char *buf, int nbytes)
-{
-       /* Returns number of bytes read */
-       return (nbytes - osgbpb_read((os_f) fd, (byte*) buf, nbytes));
-}
-
-extern off_t lseek(int fd, off_t offset, int whence)
-{
-       int absolute = 0;
-
-       switch (whence)
-       {
-               case SEEK_SET:
-               {
-                       absolute = (int) offset;
-                       break;
-               }
-               case SEEK_CUR:
-               {
-                       absolute = osargs_read_ptr((os_f) fd) + (int) offset;
-                       break;
-               }
-               case SEEK_END:
-               {
-                       absolute = osargs_read_ext((os_f) fd) + (int) offset;
-                       break;
-               }
-       }
-
-       osargs_set_ptr((os_f) fd, absolute);
-
-       return ((off_t) osargs_read_ptr((os_f) fd));
-}
-#endif
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return ((tsize_t) read((int) fd, buf, (size_t) size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return ((tsize_t) write((int) fd, buf, (size_t) size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-       return ((toff_t) lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-       return (close((int) fd));
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-       return (lseek((int) fd, SEEK_END, SEEK_SET));
-}
-
-#ifdef HAVE_MMAP
-#error "I didn't know Acorn had that!"
-#endif
-
-/* !HAVE_MMAP */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-       (void) fd; (void) pbase; (void) psize;
-       return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-       (void) fd; (void) base; (void) size;
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-       TIFF* tif;
-
-       tif = TIFFClientOpen(name, mode,
-               (thandle_t) fd,
-               _tiffReadProc, _tiffWriteProc,
-               _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
-               _tiffMapProc, _tiffUnmapProc);
-       if (tif)
-       {
-               tif->tif_fd = fd;
-       }
-       return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-       static const char module[] = "TIFFOpen";
-       int m, fd;
-
-       m = _TIFFgetMode(mode, module);
-
-       if (m == -1)
-       {
-               return ((TIFF*) 0);
-       }
-
-       fd = open(name, 0, m);
-
-       if (fd < 0)
-       {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
-               return ((TIFF *)0);
-       }
-       return (TIFFFdOpen(fd, name, mode));
-}
-
-void*
-_TIFFmalloc(tsize_t s)
-{
-       return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-       free(p);
-}
-
-void*
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-       return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
-       memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
-       memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-       return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-acornWarningHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-       {
-               fprintf(stderr, "%s: ", module);
-       }
-       fprintf(stderr, "Warning, ");
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = acornWarningHandler;
-
-static void
-acornErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-       {
-               fprintf(stderr, "%s: ", module);
-       }
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = acornErrorHandler;
diff --git a/src/tiff/libtiff/tif_apple.c b/src/tiff/libtiff/tif_apple.c
deleted file mode 100644 (file)
index 47e0e07..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_apple.c,v 1.3 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Macintosh-specific routines.
- *
- * These routines use only Toolbox and high-level File Manager traps.
- * They make no calls to the THINK C "unix" compatibility library.  Also,
- * malloc is not used directly but it is still referenced internally by
- * the ANSI library in rare cases.  Heap fragmentation by the malloc ring
- * buffer is therefore minimized.
- *
- * O_RDONLY and O_RDWR are treated identically here.  The tif_mode flag is
- * checked in TIFFWriteCheck().
- *
- * Create below fills in a blank creator signature and sets the file type
- * to 'TIFF'.  It is much better for the application to do this by Create'ing
- * the file first and TIFFOpen'ing it later.
- * ---------
- * This code has been "Carbonized", and may not work with older MacOS versions.
- * If so, grab the tif_apple.c out of an older libtiff distribution, like
- * 3.5.5 from www.libtiff.org.
- */
-
-#include "tiffiop.h"
-#include <Errors.h>
-#include <Files.h>
-#include <Memory.h>
-#include <Script.h>
-
-#if defined(__PPCC__) || defined(__SC__) || defined(__MRC__) || defined(applec)
-#define        CtoPstr c2pstr
-#endif
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (FSRead((short) fd, (long*) &size, (char*) buf) == noErr ?
-           size : (tsize_t) -1);
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (FSWrite((short) fd, (long*) &size, (char*) buf) == noErr ?
-           size : (tsize_t) -1);
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-       long fpos, size;
-
-       if (GetEOF((short) fd, &size) != noErr)
-               return EOF;
-       (void) GetFPos((short) fd, &fpos);
-
-       switch (whence) {
-       case SEEK_CUR:
-               if (off + fpos > size)
-                       SetEOF((short) fd, off + fpos);
-               if (SetFPos((short) fd, fsFromMark, off) != noErr)
-                       return EOF;
-               break;
-       case SEEK_END:
-               if (off > 0)
-                       SetEOF((short) fd, off + size);
-               if (SetFPos((short) fd, fsFromStart, off + size) != noErr)
-                       return EOF;
-               break;
-       case SEEK_SET:
-               if (off > size)
-                       SetEOF((short) fd, off);
-               if (SetFPos((short) fd, fsFromStart, off) != noErr)
-                       return EOF;
-               break;
-       }
-
-       return (toff_t)(GetFPos((short) fd, &fpos) == noErr ? fpos : EOF);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-       return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-       return (FSClose((short) fd));
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-       long size;
-
-       if (GetEOF((short) fd, &size) != noErr) {
-               TIFFErrorExt(fd, "_tiffSizeProc", "%s: Cannot get file size");
-               return (-1L);
-       }
-       return ((toff_t) size);
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-       TIFF* tif;
-
-       tif = TIFFClientOpen(name, mode, (thandle_t) fd,
-           _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
-           _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
-       if (tif)
-               tif->tif_fd = fd;
-       return (tif);
-}
-
-static void ourc2pstr( char* inString )
-{
-       int     sLen = strlen( inString );
-       BlockMoveData( inString, &inString[1], sLen );
-       inString[0] = sLen;
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-       static const char module[] = "TIFFOpen";
-       Str255 pname;
-       FInfo finfo;
-       short fref;
-       OSErr err;
-       FSSpec  fSpec;
-
-       strcpy((char*) pname, name);
-       ourc2pstr((char*) pname);
-       
-       err = FSMakeFSSpec( 0, 0, pname, &fSpec );
-
-       switch (_TIFFgetMode(mode, module)) {
-       default:
-               return ((TIFF*) 0);
-       case O_RDWR | O_CREAT | O_TRUNC:
-               if (FSpGetFInfo(&fSpec, &finfo) == noErr)
-                       FSpDelete(&fSpec);
-               /* fall through */
-       case O_RDWR | O_CREAT:
-               if ((err = FSpGetFInfo(&fSpec, &finfo)) == fnfErr) {
-                       if (FSpCreate(&fSpec, '    ', 'TIFF', smSystemScript) != noErr)
-                               goto badCreate;
-                       if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
-                               goto badOpen;
-               } else if (err == noErr) {
-                       if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
-                               goto badOpen;
-               } else
-                       goto badOpen;
-               break;
-       case O_RDONLY:
-               if (FSpOpenDF(&fSpec, fsRdPerm, &fref) != noErr)
-                       goto badOpen;
-               break;
-       case O_RDWR:
-               if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
-                       goto badOpen;
-               break;
-       }
-       return (TIFFFdOpen((int) fref, name, mode));
-badCreate:
-       TIFFErrorExt(0, module, "%s: Cannot create", name);
-       return ((TIFF*) 0);
-badOpen:
-       TIFFErrorExt(0, module, "%s: Cannot open", name);
-       return ((TIFF*) 0);
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
-       memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
-       memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-       return (memcmp(p1, p2, (size_t) c));
-}
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
-       return (NewPtr((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-       DisposePtr(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-       Ptr n = p;
-
-       SetPtrSize(p, (size_t) s);
-       if (MemError() && (n = NewPtr((size_t) s)) != NULL) {
-               BlockMove(p, n, GetPtrSize(p));
-               DisposePtr(p);
-       }
-       return ((tdata_t) n);
-}
-
-static void
-appleWarningHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       fprintf(stderr, "Warning, ");
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = appleWarningHandler;
-
-static void
-appleErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = appleErrorHandler;
diff --git a/src/tiff/libtiff/tif_atari.c b/src/tiff/libtiff/tif_atari.c
deleted file mode 100644 (file)
index a519fa4..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/* "$Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_atari.c,v 1.2 2005/12/21 12:23:13 joris Exp $" */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library ATARI-specific Routines.
- */
-#include "tiffiop.h"
-#if defined(__TURBOC__)
-#include <tos.h>
-#include <stdio.h>
-#else
-#include <osbind.h>
-#include <fcntl.h>
-#endif
-
-#ifndef O_ACCMODE
-#define O_ACCMODE 3
-#endif
-
-#include <errno.h>
-
-#define AEFILNF   -33
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       long r;
-
-       r = Fread((int) fd, size, buf);
-       if (r < 0) {
-               errno = (int)-r;
-               r = -1;
-       }
-       return r;
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       long r;
-
-       r = Fwrite((int) fd, size, buf);
-       if (r < 0) {
-               errno = (int)-r;
-               r = -1;
-       }
-       return r;
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, off_t off, int whence)
-{
-       char buf[256];
-       long current_off, expected_off, new_off;
-
-       if (whence == SEEK_END || off <= 0)
-               return Fseek(off, (int) fd, whence);
-       current_off = Fseek(0, (int) fd, SEEK_CUR); /* find out where we are */
-       if (whence == SEEK_SET)
-               expected_off = off;
-       else
-               expected_off = off + current_off;
-       new_off = Fseek(off, (int) fd, whence);
-       if (new_off == expected_off)
-               return new_off;
-       /* otherwise extend file -- zero filling the hole */
-       if (new_off < 0)            /* error? */
-               new_off = Fseek(0, (int) fd, SEEK_END); /* go to eof */
-       _TIFFmemset(buf, 0, sizeof(buf));
-       while (expected_off > new_off) {
-               off = expected_off - new_off;
-               if (off > sizeof(buf))
-                       off = sizeof(buf);
-               if ((current_off = Fwrite((int) fd, off, buf)) != off)
-                       return (current_off > 0) ?
-                           new_off + current_off : new_off;
-               new_off += off;
-       }
-       return new_off;
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-       long r;
-
-       r = Fclose((int) fd);
-       if (r < 0) {
-               errno = (int)-r;
-               r = -1;
-       }
-       return (int)r;
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-       long pos, eof;
-
-       pos = Fseek(0, (int) fd, SEEK_CUR);
-       eof = Fseek(0, (int) fd, SEEK_END);
-       Fseek(pos, (int) fd, SEEK_SET);
-       return eof;
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-       return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
-* Open a TIFF file descriptor for read/writing.
-*/
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-       TIFF* tif;
-
-       tif = TIFFClientOpen(name, mode,
-               (thandle_t) fd,
-               _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
-               _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
-       if (tif)
-               tif->tif_fd = fd;
-       return (tif);
-}
-
-/*
-* Open a TIFF file for read/writing.
-*/
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-       static const char module[] = "TIFFOpen";
-       int m;
-       long fd;
-
-       m = _TIFFgetMode(mode, module);
-       if (m == -1)
-               return ((TIFF*)0);
-       if (m & O_TRUNC) {
-               fd = Fcreate(name, 0);
-       } else {
-               fd = Fopen(name, m & O_ACCMODE);
-               if (fd == AEFILNF && m & O_CREAT)
-                       fd = Fcreate(name, 0);
-       }
-       if (fd < 0)
-               errno = (int)fd;
-       if (fd < 0) {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
-               return ((TIFF*)0);
-       }
-       return (TIFFFdOpen(fd, name, mode));
-}
-
-#include <stdlib.h>
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
-       return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-       free(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-       return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, size_t c)
-{
-       memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, size_t c)
-{
-       memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-       return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-atariWarningHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       fprintf(stderr, "Warning, ");
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = atariWarningHandler;
-
-static void
-atariErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = atariErrorHandler;
index c61f47162c92e14724ea4e63df3e4acd3ad6adac..4ef67b9cf62286178846be285010ed2b3a44bb40 100644 (file)
 #include "tif_predict.h"
 #include <math.h>
 
-tdata_t
-_TIFFCheckMalloc(TIFF* tif, size_t nmemb, size_t elem_size, const char* what)
+uint32
+_TIFFMultiply32(TIFF* tif, uint32 first, uint32 second, const char* where)
 {
-       tdata_t cp = NULL;
-       tsize_t bytes = nmemb * elem_size;
+       uint32 bytes = first * second;
+
+       if (second && bytes / second != first) {
+               TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where);
+               bytes = 0;
+       }
+
+       return bytes;
+}
+
+uint64
+_TIFFMultiply64(TIFF* tif, uint64 first, uint64 second, const char* where)
+{
+       uint64 bytes = first * second;
+
+       if (second && bytes / second != first) {
+               TIFFErrorExt(tif->tif_clientdata, where, "Integer overflow in %s", where);
+               bytes = 0;
+       }
+
+       return bytes;
+}
+
+void*
+_TIFFCheckRealloc(TIFF* tif, void* buffer,
+                 tmsize_t nmemb, tmsize_t elem_size, const char* what)
+{
+       void* cp = NULL;
+       tmsize_t bytes = nmemb * elem_size;
 
        /*
         * XXX: Check for integer overflow.
         */
        if (nmemb && elem_size && bytes / elem_size == nmemb)
-               cp = _TIFFmalloc(bytes);
+               cp = _TIFFrealloc(buffer, bytes);
+
+       if (cp == NULL) {
+               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                            "Failed to allocate memory for %s "
+                            "(%ld elements of %ld bytes each)",
+                            what,(long) nmemb, (long) elem_size);
+       }
 
-       if (cp == NULL)
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space %s", what);
+       return cp;
+}
 
-       return (cp);
+void*
+_TIFFCheckMalloc(TIFF* tif, tmsize_t nmemb, tmsize_t elem_size, const char* what)
+{
+       return _TIFFCheckRealloc(tif, NULL, nmemb, elem_size, what);  
 }
 
 static int
 TIFFDefaultTransferFunction(TIFFDirectory* td)
 {
        uint16 **tf = td->td_transferfunction;
-       tsize_t i, n, nbytes;
+       tmsize_t i, n, nbytes;
 
        tf[0] = tf[1] = tf[2] = 0;
-       if (td->td_bitspersample >= sizeof(tsize_t) * 8 - 2)
+       if (td->td_bitspersample >= sizeof(tmsize_t) * 8 - 2)
                return 0;
 
-       n = 1<<td->td_bitspersample;
+       n = ((tmsize_t)1)<<td->td_bitspersample;
        nbytes = n * sizeof (uint16);
        if (!(tf[0] = (uint16 *)_TIFFmalloc(nbytes)))
                return 0;
@@ -92,6 +129,35 @@ bad:
        return 0;
 }
 
+static int
+TIFFDefaultRefBlackWhite(TIFFDirectory* td)
+{
+       int i;
+
+       if (!(td->td_refblackwhite = (float *)_TIFFmalloc(6*sizeof (float))))
+               return 0;
+        if (td->td_photometric == PHOTOMETRIC_YCBCR) {
+               /*
+                * YCbCr (Class Y) images must have the ReferenceBlackWhite
+                * tag set. Fix the broken images, which lacks that tag.
+                */
+               td->td_refblackwhite[0] = 0.0F;
+               td->td_refblackwhite[1] = td->td_refblackwhite[3] =
+                       td->td_refblackwhite[5] = 255.0F;
+               td->td_refblackwhite[2] = td->td_refblackwhite[4] = 128.0F;
+       } else {
+               /*
+                * Assume RGB (Class R)
+                */
+               for (i = 0; i < 3; i++) {
+                   td->td_refblackwhite[2*i+0] = 0;
+                   td->td_refblackwhite[2*i+1] =
+                           (float)((1L<<td->td_bitspersample)-1L);
+               }
+       }
+       return 1;
+}
+
 /*
  * Like TIFFGetField, but return any default
  * value if the tag is not present in the directory.
@@ -101,7 +167,7 @@ bad:
  *     place in the library -- in TIFFDefaultDirectory.
  */
 int
-TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
+TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
@@ -217,33 +283,10 @@ TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
                }
                return (1);
        case TIFFTAG_REFERENCEBLACKWHITE:
-               {
-                       int i;
-                       static float ycbcr_refblackwhite[] = 
-                       { 0.0F, 255.0F, 128.0F, 255.0F, 128.0F, 255.0F };
-                       static float rgb_refblackwhite[6];
-
-                       for (i = 0; i < 3; i++) {
-                               rgb_refblackwhite[2 * i + 0] = 0.0F;
-                               rgb_refblackwhite[2 * i + 1] =
-                                       (float)((1L<<td->td_bitspersample)-1L);
-                       }
-                       
-                       if (td->td_photometric == PHOTOMETRIC_YCBCR) {
-                               /*
-                                * YCbCr (Class Y) images must have the
-                                * ReferenceBlackWhite tag set. Fix the
-                                * broken images, which lacks that tag.
-                                */
-                               *va_arg(ap, float **) = ycbcr_refblackwhite;
-                       } else {
-                               /*
-                                * Assume RGB (Class R)
-                                */
-                               *va_arg(ap, float **) = rgb_refblackwhite;
-                       }
-                       return 1;
-               }
+               if (!td->td_refblackwhite && !TIFFDefaultRefBlackWhite(td))
+                       return (0);
+               *va_arg(ap, float **) = td->td_refblackwhite;
+               return (1);
        }
        return 0;
 }
@@ -253,7 +296,7 @@ TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
  * value if the tag is not present in the directory.
  */
 int
-TIFFGetFieldDefaulted(TIFF* tif, ttag_t tag, ...)
+TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...)
 {
        int ok;
        va_list ap;
@@ -264,4 +307,52 @@ TIFFGetFieldDefaulted(TIFF* tif, ttag_t tag, ...)
        return (ok);
 }
 
+struct _Int64Parts {
+       int32 low, high;
+};
+
+typedef union {
+       struct _Int64Parts part;
+       int64 value;
+} _Int64;
+
+float
+_TIFFUInt64ToFloat(uint64 ui64)
+{
+       _Int64 i;
+
+       i.value = ui64;
+       if (i.part.high >= 0) {
+               return (float)i.value;
+       } else {
+               long double df;
+               df = (long double)i.value;
+               df += 18446744073709551616.0; /* adding 2**64 */
+               return (float)df;
+       }
+}
+
+double
+_TIFFUInt64ToDouble(uint64 ui64)
+{
+       _Int64 i;
+
+       i.value = ui64;
+       if (i.part.high >= 0) {
+               return (double)i.value;
+       } else {
+               long double df;
+               df = (long double)i.value;
+               df += 18446744073709551616.0; /* adding 2**64 */
+               return (double)df;
+       }
+}
+
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 99afca3d477804dc8f804c84588cfcfe16279983..e891aa59d7a6c1e311595fd33fc3165ed3fde87d 100644 (file)
@@ -28,6 +28,7 @@
  * TIFF Library.
  */
 #include "tiffiop.h"
+#include <string.h>
 
 /************************************************************************/
 /*                            TIFFCleanup()                             */
 void
 TIFFCleanup(TIFF* tif)
 {
+       /*
+         * Flush buffered data and directory (if dirty).
+         */
        if (tif->tif_mode != O_RDONLY)
-           /*
-            * Flush buffered data and directory (if dirty).
-            */
-           TIFFFlush(tif);
+               TIFFFlush(tif);
        (*tif->tif_cleanup)(tif);
        TIFFFreeDirectory(tif);
 
        if (tif->tif_dirlist)
-           _TIFFfree(tif->tif_dirlist);
-           
-       /* Clean up client info links */
+               _TIFFfree(tif->tif_dirlist);
+
+       /*
+         * Clean up client info links.
+         */
        while( tif->tif_clientinfo )
        {
-           TIFFClientInfoLink *link = tif->tif_clientinfo;
+               TIFFClientInfoLink *link = tif->tif_clientinfo;
 
-           tif->tif_clientinfo = link->next;
-           _TIFFfree( link->name );
-           _TIFFfree( link );
+               tif->tif_clientinfo = link->next;
+               _TIFFfree( link->name );
+               _TIFFfree( link );
        }
 
        if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER))
-           _TIFFfree(tif->tif_rawdata);
+               _TIFFfree(tif->tif_rawdata);
        if (isMapped(tif))
-           TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
-
-       /* Clean up custom fields */
-       if (tif->tif_nfields > 0) 
-       {
-           size_t  i;
-
-           for (i = 0; i < tif->tif_nfields; i++) 
-           {
-               TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
-               if (fld->field_bit == FIELD_CUSTOM && 
-                   strncmp("Tag ", fld->field_name, 4) == 0) 
-               {
-                   _TIFFfree(fld->field_name);
-                   _TIFFfree(fld);
+               TIFFUnmapFileContents(tif, tif->tif_base, (toff_t)tif->tif_size);
+
+       /*
+         * Clean up custom fields.
+         */
+       if (tif->tif_fields && tif->tif_nfields > 0) {
+               uint32 i;
+
+               for (i = 0; i < tif->tif_nfields; i++) {
+                       TIFFField *fld = tif->tif_fields[i];
+                       if (fld->field_bit == FIELD_CUSTOM &&
+                           strncmp("Tag ", fld->field_name, 4) == 0) {
+                               _TIFFfree(fld->field_name);
+                               _TIFFfree(fld);
+                       }
                }
-           }   
-         
-           _TIFFfree(tif->tif_fieldinfo);
+
+               _TIFFfree(tif->tif_fields);
        }
 
+        if (tif->tif_nfieldscompat > 0) {
+                uint32 i;
+
+                for (i = 0; i < tif->tif_nfieldscompat; i++) {
+                        if (tif->tif_fieldscompat[i].allocated_size)
+                                _TIFFfree(tif->tif_fieldscompat[i].fields);
+                }
+                _TIFFfree(tif->tif_fieldscompat);
+        }
+
        _TIFFfree(tif);
 }
 
@@ -117,3 +129,12 @@ TIFFClose(TIFF* tif)
        (void) (*closeproc)(fd);
 }
 
+/* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 94863d15e3a8fcff8d1f5aaa4832ebbed2394158..4a9abe346b838444a57fa58f356c0264670926a5 100644 (file)
  */
 #include "tiffiop.h"
 
-static int NotConfigured(TIFF*, int);
+static int NotConfigured(TIFF*, int);
 
-#ifndef        LZW_SUPPORT
-#define        TIFFInitLZW             NotConfigured
+#ifndef LZW_SUPPORT
+#define TIFFInitLZW NotConfigured
 #endif
-#ifndef        PACKBITS_SUPPORT
-#define        TIFFInitPackBits        NotConfigured
+#ifndef PACKBITS_SUPPORT
+#define TIFFInitPackBits NotConfigured
 #endif
-#ifndef        THUNDER_SUPPORT
-#define        TIFFInitThunderScan     NotConfigured
+#ifndef THUNDER_SUPPORT
+#define TIFFInitThunderScan NotConfigured
 #endif
-#ifndef        NEXT_SUPPORT
-#define        TIFFInitNeXT            NotConfigured
+#ifndef NEXT_SUPPORT
+#define TIFFInitNeXT NotConfigured
 #endif
-#ifndef        JPEG_SUPPORT
-#define        TIFFInitJPEG            NotConfigured
+#ifndef JPEG_SUPPORT
+#define TIFFInitJPEG NotConfigured
 #endif
-#ifndef        OJPEG_SUPPORT
-#define        TIFFInitOJPEG           NotConfigured
+#ifndef OJPEG_SUPPORT
+#define TIFFInitOJPEG NotConfigured
 #endif
-#ifndef        CCITT_SUPPORT
-#define        TIFFInitCCITTRLE        NotConfigured
-#define        TIFFInitCCITTRLEW       NotConfigured
-#define        TIFFInitCCITTFax3       NotConfigured
-#define        TIFFInitCCITTFax4       NotConfigured
+#ifndef CCITT_SUPPORT
+#define TIFFInitCCITTRLE NotConfigured
+#define TIFFInitCCITTRLEW NotConfigured
+#define TIFFInitCCITTFax3 NotConfigured
+#define TIFFInitCCITTFax4 NotConfigured
 #endif
 #ifndef JBIG_SUPPORT
-#define        TIFFInitJBIG            NotConfigured
+#define TIFFInitJBIG NotConfigured
 #endif
-#ifndef        ZIP_SUPPORT
-#define        TIFFInitZIP             NotConfigured
+#ifndef ZIP_SUPPORT
+#define TIFFInitZIP NotConfigured
 #endif
-#ifndef        PIXARLOG_SUPPORT
-#define        TIFFInitPixarLog        NotConfigured
+#ifndef PIXARLOG_SUPPORT
+#define TIFFInitPixarLog NotConfigured
 #endif
 #ifndef LOGLUV_SUPPORT
-#define TIFFInitSGILog         NotConfigured
+#define TIFFInitSGILog NotConfigured
+#endif
+#ifndef LZMA_SUPPORT
+#define TIFFInitLZMA NotConfigured
 #endif
 
 /*
@@ -95,6 +98,7 @@ TIFFCodec _TIFFBuiltinCODECS[] = {
     { "PixarLog",      COMPRESSION_PIXARLOG,   TIFFInitPixarLog },
     { "SGILog",                COMPRESSION_SGILOG,     TIFFInitSGILog },
     { "SGILog24",      COMPRESSION_SGILOG24,   TIFFInitSGILog },
+    { "LZMA",          COMPRESSION_LZMA,       TIFFInitLZMA },
     { NULL,             0,                      NULL }
 };
 
@@ -102,22 +106,26 @@ static int
 _notConfigured(TIFF* tif)
 {
        const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
+        char compression_code[20];
+        
+        sprintf( compression_code, "%d", tif->tif_dir.td_compression );
        TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-           "%s compression support is not configured", c->name);
+                     "%s compression support is not configured", 
+                     c ? c->name : compression_code );
        return (0);
 }
 
 static int
 NotConfigured(TIFF* tif, int scheme)
 {
-    (void) scheme;
-    
-    tif->tif_decodestatus = FALSE;
-    tif->tif_setupdecode = _notConfigured;
-    tif->tif_encodestatus = FALSE;
-    tif->tif_setupencode = _notConfigured;
-    return (1);
+       (void) scheme;
+
+       tif->tif_fixuptags = _notConfigured;
+       tif->tif_decodestatus = FALSE;
+       tif->tif_setupdecode = _notConfigured;
+       tif->tif_encodestatus = FALSE;
+       tif->tif_setupencode = _notConfigured;
+       return (1);
 }
 
 /************************************************************************/
@@ -126,7 +134,7 @@ NotConfigured(TIFF* tif, int scheme)
 
 /**
  * Check whether we have working codec for the specific coding scheme.
- * 
+ *
  * @return returns 1 if the codec is configured and working. Otherwise
  * 0 will be returned.
  */
@@ -137,14 +145,21 @@ TIFFIsCODECConfigured(uint16 scheme)
        const TIFFCodec* codec = TIFFFindCODEC(scheme);
 
        if(codec == NULL) {
-            return 0;
-        }
-        if(codec->init == NULL) {
-            return 0;
-        }
+               return 0;
+       }
+       if(codec->init == NULL) {
+               return 0;
+       }
        if(codec->init != NotConfigured){
-            return 1;
-        }
+               return 1;
+       }
        return 0;
 }
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 72ebb5d3e85c9c9fca2160afed2e361c6defead9..cd0a0d2042fe6c6cf5b452030aadc8a1a5e59246 100644 (file)
@@ -123,7 +123,7 @@ TIFFXYZToRGB(TIFFCIELabToRGB *cielab, float X, float Y, float Z,
  */
 int
 TIFFCIELabToRGBInit(TIFFCIELabToRGB* cielab,
-                   TIFFDisplay *display, float *refWhite)
+                   const TIFFDisplay *display, float *refWhite)
 {
        int i;
        double gamma;
@@ -183,13 +183,18 @@ void
 TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr,
               uint32 *r, uint32 *g, uint32 *b)
 {
+       int32 i;
+
        /* XXX: Only 8-bit YCbCr input supported for now */
        Y = HICLAMP(Y, 255), Cb = CLAMP(Cb, 0, 255), Cr = CLAMP(Cr, 0, 255);
 
-       *r = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]];
-       *g = ycbcr->clamptab[ycbcr->Y_tab[Y]
-           + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT)];
-       *b = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]];
+       i = ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr];
+       *r = CLAMP(i, 0, 255);
+       i = ycbcr->Y_tab[Y]
+           + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT);
+       *g = CLAMP(i, 0, 255);
+       i = ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb];
+       *b = CLAMP(i, 0, 255);
 }
 
 /*
@@ -219,7 +224,7 @@ TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite)
 #define LumaBlue    luma[2]
 
     clamptab = (TIFFRGBValue*)(
-       (tidata_t) ycbcr+TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long)));
+       (uint8*) ycbcr+TIFFroundup_32(sizeof (TIFFYCbCrToRGB), sizeof (long)));  
     _TIFFmemset(clamptab, 0, 256);             /* v < 0 => 0 */
     ycbcr->clamptab = (clamptab += 256);
     for (i = 0; i < 256; i++)
@@ -273,3 +278,10 @@ TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite)
 #undef FIX
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index c6b0bec7a7d05c55ae4efb96f23cecfc9cd8c0c6..e92fcd5d39a400536a162ab07c9bc6289ec88c84 100644 (file)
@@ -36,33 +36,34 @@ TIFFNoEncode(TIFF* tif, const char* method)
 {
        const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
 
-       if (c) { 
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s encoding is not implemented",
-                          c->name, method);
-       } else { 
+       if (c) {
                TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                         "Compression scheme %u %s encoding is not implemented",
-                   tif->tif_dir.td_compression, method);
+                            "%s %s encoding is not implemented",
+                            c->name, method);
+       } else {
+               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                       "Compression scheme %u %s encoding is not implemented",
+                            tif->tif_dir.td_compression, method);
        }
        return (-1);
 }
 
 int
-_TIFFNoRowEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoEncode(tif, "scanline"));
 }
 
 int
-_TIFFNoStripEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoEncode(tif, "strip"));
 }
 
 int
-_TIFFNoTileEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoTileEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoEncode(tif, "tile"));
@@ -74,31 +75,39 @@ TIFFNoDecode(TIFF* tif, const char* method)
        const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
 
        if (c)
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%s %s decoding is not implemented",
-                   c->name, method);
+               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                            "%s %s decoding is not implemented",
+                            c->name, method);
        else
                TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "Compression scheme %u %s decoding is not implemented",
-                   tif->tif_dir.td_compression, method);
+                            "Compression scheme %u %s decoding is not implemented",
+                            tif->tif_dir.td_compression, method);
        return (-1);
 }
 
 int
-_TIFFNoRowDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
+int
+_TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoDecode(tif, "scanline"));
 }
 
 int
-_TIFFNoStripDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoDecode(tif, "strip"));
 }
 
 int
-_TIFFNoTileDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+_TIFFNoTileDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) pp; (void) cc; (void) s;
        return (TIFFNoDecode(tif, "tile"));
@@ -109,12 +118,12 @@ _TIFFNoSeek(TIFF* tif, uint32 off)
 {
        (void) off;
        TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-           "Compression algorithm does not support random access");
+                    "Compression algorithm does not support random access");
        return (0);
 }
 
 int
-_TIFFNoPreCode(TIFF* tif, tsample_t s)
+_TIFFNoPreCode(TIFF* tif, uint16 s)
 {
        (void) tif; (void) s;
        return (1);
@@ -126,25 +135,26 @@ static void _TIFFvoid(TIFF* tif) { (void) tif; }
 void
 _TIFFSetDefaultCompressionState(TIFF* tif)
 {
+       tif->tif_fixuptags = _TIFFNoFixupTags; 
        tif->tif_decodestatus = TRUE;
        tif->tif_setupdecode = _TIFFtrue;
        tif->tif_predecode = _TIFFNoPreCode;
-       tif->tif_decoderow = _TIFFNoRowDecode;
+       tif->tif_decoderow = _TIFFNoRowDecode;  
        tif->tif_decodestrip = _TIFFNoStripDecode;
-       tif->tif_decodetile = _TIFFNoTileDecode;
+       tif->tif_decodetile = _TIFFNoTileDecode;  
        tif->tif_encodestatus = TRUE;
        tif->tif_setupencode = _TIFFtrue;
        tif->tif_preencode = _TIFFNoPreCode;
        tif->tif_postencode = _TIFFtrue;
        tif->tif_encoderow = _TIFFNoRowEncode;
-       tif->tif_encodestrip = _TIFFNoStripEncode;
-       tif->tif_encodetile = _TIFFNoTileEncode;
+       tif->tif_encodestrip = _TIFFNoStripEncode;  
+       tif->tif_encodetile = _TIFFNoTileEncode;  
        tif->tif_close = _TIFFvoid;
        tif->tif_seek = _TIFFNoSeek;
        tif->tif_cleanup = _TIFFvoid;
        tif->tif_defstripsize = _TIFFDefaultStripSize;
        tif->tif_deftilesize = _TIFFDefaultTileSize;
-       tif->tif_flags &= ~TIFF_NOBITREV;
+       tif->tif_flags &= ~(TIFF_NOBITREV|TIFF_NOREADRAW);
 }
 
 int
@@ -168,10 +178,10 @@ TIFFSetCompressionScheme(TIFF* tif, int scheme)
  * by this library.
  */
 typedef struct _codec {
-       struct _codec*  next;
-       TIFFCodec*      info;
+       struct _codec* next;
+       TIFFCodec* info;
 } codec_t;
-static codec_t* registeredCODECS = NULL;
+static codec_t* registeredCODECS = NULL;
 
 const TIFFCodec*
 TIFFFindCODEC(uint16 scheme)
@@ -192,12 +202,12 @@ TIFFCodec*
 TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init)
 {
        codec_t* cd = (codec_t*)
-           _TIFFmalloc(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1);
+           _TIFFmalloc((tmsize_t)(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1));
 
        if (cd != NULL) {
-               cd->info = (TIFFCodec*) ((tidata_t) cd + sizeof (codec_t));
+               cd->info = (TIFFCodec*) ((uint8*) cd + sizeof (codec_t));
                cd->info->name = (char*)
-                   ((tidata_t) cd->info + sizeof (TIFFCodec));
+                   ((uint8*) cd->info + sizeof (TIFFCodec));
                strcpy(cd->info->name, name);
                cd->info->scheme = scheme;
                cd->info->init = init;
@@ -242,13 +252,14 @@ TIFFUnRegisterCODEC(TIFFCodec* c)
 TIFFCodec*
 TIFFGetConfiguredCODECs()
 {
-       int             i = 1;
-        codec_t                *cd;
-        const TIFFCodec        *c;
-       TIFFCodec       *codecs = NULL, *new_codecs;
+       int i = 1;
+       codec_t *cd;
+       const TIFFCodec* c;
+       TIFFCodec* codecs = NULL;
+       TIFFCodec* new_codecs;
 
-        for (cd = registeredCODECS; cd; cd = cd->next) {
-                new_codecs = (TIFFCodec *)
+       for (cd = registeredCODECS; cd; cd = cd->next) {
+               new_codecs = (TIFFCodec *)
                        _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
                if (!new_codecs) {
                        _TIFFfree (codecs);
@@ -258,16 +269,16 @@ TIFFGetConfiguredCODECs()
                _TIFFmemcpy(codecs + i - 1, cd, sizeof(TIFFCodec));
                i++;
        }
-        for (c = _TIFFBuiltinCODECS; c->name; c++) {
-                if (TIFFIsCODECConfigured(c->scheme)) {
-                        new_codecs = (TIFFCodec *)
+       for (c = _TIFFBuiltinCODECS; c->name; c++) {
+               if (TIFFIsCODECConfigured(c->scheme)) {
+                       new_codecs = (TIFFCodec *)
                                _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
                        if (!new_codecs) {
                                _TIFFfree (codecs);
                                return NULL;
                        }
                        codecs = new_codecs;
-                       _TIFFmemcpy(codecs + i - 1, (const tdata_t)c, sizeof(TIFFCodec));
+                       _TIFFmemcpy(codecs + i - 1, (const void*)c, sizeof(TIFFCodec));
                        i++;
                }
        }
@@ -280,7 +291,14 @@ TIFFGetConfiguredCODECs()
        codecs = new_codecs;
        _TIFFmemset(codecs + i - 1, 0, sizeof(TIFFCodec));
 
-        return codecs;
+       return codecs;
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index b0840c777f349d196bee8b9ca204edee358327d9..b8fa9c3ad4bb927d189fccf5ed171757ebf06339 100644 (file)
@@ -10,6 +10,9 @@
    machine */
 #define HAVE_IEEEFP 1
 
+/* Define to 1 if you have the `jbg_newlen' function. */
+#define HAVE_JBG_NEWLEN 1
+
 /* Define to 1 if you have the <string.h> header file. */
 #define HAVE_STRING_H 1
 
@@ -68,6 +71,9 @@
    machine */
 #define HAVE_IEEEFP 1
 
+/* Define to 1 if you have the `jbg_newlen' function. */
+#define HAVE_JBG_NEWLEN 1
+
 /* Define to 1 if you have the <string.h> header file. */
 #define HAVE_STRING_H 1
 
 /* Define to 1 if you have the <search.h> header file. */
 #define HAVE_SEARCH_H 1
 
+/* Define to 1 if you have the `setmode' function. */
+#define HAVE_SETMODE 1
+
 /* The size of a `int', as computed by sizeof. */
 #define SIZEOF_INT 4
 
 /* The size of a `long', as computed by sizeof. */
 #define SIZEOF_LONG 4
 
+/* Signed 64-bit type formatter */
+#define TIFF_INT64_FORMAT "%I64d"
+
+/* Signed 64-bit type */
+#define TIFF_INT64_T signed __int64
+
+/* Unsigned 64-bit type formatter */
+#define TIFF_UINT64_FORMAT "%I64u"
+
+/* Unsigned 64-bit type */
+#define TIFF_UINT64_T unsigned __int64
+
 /* Set the native cpu bit order */
 #define HOST_FILLORDER FILLORDER_LSB2MSB
 
+#define snprintf _snprintf
+
 /* Define to 1 if your processor stores words with the most significant byte
    first (like Motorola and SPARC, unlike Intel and VAX). */
 /* #undef WORDS_BIGENDIAN */
@@ -128,3 +151,10 @@ typedef    long int32;
 #endif /* _WIN32_WCE */
 
 #endif /* __APPLE__/!__APPLE__ */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_config.h-vms b/src/tiff/libtiff/tif_config.h-vms
new file mode 100644 (file)
index 0000000..d653bd8
--- /dev/null
@@ -0,0 +1,46 @@
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+#define HAVE_IEEEFP 1
+
+#define HAVE_UNISTD_H 1
+
+#define HAVE_STRING_H 1
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+//#define HAVE_IO_H 1
+
+/* Define to 1 if you have the <search.h> header file. */
+//#define HAVE_SEARCH_H 1
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Set the native cpu bit order */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+/*
+#ifndef __cplusplus
+# ifndef inline
+#  define inline __inline
+# endif
+#endif
+*/
+
+// #define lfind _lfind
index fef3a6101fca8762e039451e937ae9ed953f58b7..b2cea3546f76b8199168189215e24c79502ab2bc 100644 (file)
@@ -1,5 +1,8 @@
 /* libtiff/tif_config.h.in.  Generated from configure.ac by autoheader.  */
 
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
 /* Support CCITT Group 3 & 4 algorithms */
 #undef CCITT_SUPPORT
 
@@ -7,6 +10,9 @@
    lacking the tag (default enabled). */
 #undef CHECK_JPEG_YCBCR_SUBSAMPLING
 
+/* enable partial strip reading for large strips (experimental) */
+#undef CHUNKY_STRIP_READ_SUPPORT
+
 /* Support C++ stream API (requires C++ compiler) */
 #undef CXX_SUPPORT
 
@@ -15,8 +21,8 @@
    packages produce RGBA files but don't mark the alpha properly. */
 #undef DEFAULT_EXTRASAMPLE_AS_ALPHA
 
-/* Use the Apple OpenGL framework. */
-#undef HAVE_APPLE_OPENGL_FRAMEWORK
+/* enable deferred strip/tile offset/size loading (experimental) */
+#undef DEFER_STRILE_LOAD
 
 /* Define to 1 if you have the <assert.h> header file. */
 #undef HAVE_ASSERT_H
 /* Define to 1 if you have the `getopt' function. */
 #undef HAVE_GETOPT
 
+/* Define to 1 if you have the <GLUT/glut.h> header file. */
+#undef HAVE_GLUT_GLUT_H
+
+/* Define to 1 if you have the <GL/glut.h> header file. */
+#undef HAVE_GL_GLUT_H
+
+/* Define to 1 if you have the <GL/glu.h> header file. */
+#undef HAVE_GL_GLU_H
+
+/* Define to 1 if you have the <GL/gl.h> header file. */
+#undef HAVE_GL_GL_H
+
 /* Define as 0 or 1 according to the floating point format suported by the
    machine */
 #undef HAVE_IEEEFP
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
+/* Define to 1 if you have the <io.h> header file. */
+#undef HAVE_IO_H
+
 /* Define to 1 if you have the `isascii' function. */
 #undef HAVE_ISASCII
 
+/* Define to 1 if you have the `jbg_newlen' function. */
+#undef HAVE_JBG_NEWLEN
+
 /* Define to 1 if you have the `lfind' function. */
 #undef HAVE_LFIND
 
-/* Define to 1 if you have the `c' library (-lc). */
-#undef HAVE_LIBC
-
 /* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
 /* Define to 1 if you have the `mmap' function. */
 #undef HAVE_MMAP
 
+/* Define to 1 if you have the <OpenGL/glu.h> header file. */
+#undef HAVE_OPENGL_GLU_H
+
+/* Define to 1 if you have the <OpenGL/gl.h> header file. */
+#undef HAVE_OPENGL_GL_H
+
 /* Define to 1 if you have the `pow' function. */
 #undef HAVE_POW
 
 /* Define to 1 if you have the <search.h> header file. */
 #undef HAVE_SEARCH_H
 
+/* Define to 1 if you have the `setmode' function. */
+#undef HAVE_SETMODE
+
 /* Define to 1 if you have the `sqrt' function. */
 #undef HAVE_SQRT
 
 /* Define to 1 if you have the `strtoul' function. */
 #undef HAVE_STRTOUL
 
+/* Define to 1 if you have the `strtoull' function. */
+#undef HAVE_STRTOULL
+
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
+/* Use nonstandard varargs form for the GLU tesselator callback */
+#undef HAVE_VARARGS_GLU_TESSCB
+
 /* Define to 1 if you have the <windows.h> header file. */
 #undef HAVE_WINDOWS_H
 
 /* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
 #undef HOST_FILLORDER
 
+/* Support ISO JBIG compression (requires JBIG-KIT library) */
+#undef JBIG_SUPPORT
+
+/* 8/12 bit libjpeg dual mode enabled */
+#undef JPEG_DUAL_MODE_8_12
+
 /* Support JPEG compression (requires IJG JPEG library) */
 #undef JPEG_SUPPORT
 
+/* 12bit libjpeg primary include file with path */
+#undef LIBJPEG_12_PATH
+
 /* Support LogLuv high dynamic range encoding */
 #undef LOGLUV_SUPPORT
 
    */
 #undef LT_OBJDIR
 
+/* Support LZMA2 compression */
+#undef LZMA_SUPPORT
+
 /* Support LZW algorithm */
 #undef LZW_SUPPORT
 
 /* Define to 1 if your C compiler doesn't accept -c and -o together. */
 #undef NO_MINUS_C_MINUS_O
 
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
-   fails with unpatched IJG JPEG library) */
+/* Support Old JPEG compresson (read-only) */
 #undef OJPEG_SUPPORT
 
 /* Name of package */
 /* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
    your system. */
 #undef PTHREAD_CREATE_JOINABLE
 
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
+/* The size of `signed int', as computed by sizeof. */
+#undef SIZEOF_SIGNED_INT
+
+/* The size of `signed long', as computed by sizeof. */
+#undef SIZEOF_SIGNED_LONG
+
+/* The size of `signed long long', as computed by sizeof. */
+#undef SIZEOF_SIGNED_LONG_LONG
+
+/* The size of `signed short', as computed by sizeof. */
+#undef SIZEOF_SIGNED_SHORT
+
+/* The size of `unsigned char *', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_CHAR_P
 
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
+/* The size of `unsigned int', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_INT
+
+/* The size of `unsigned long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG
+
+/* The size of `unsigned long long', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_LONG_LONG
+
+/* The size of `unsigned short', as computed by sizeof. */
+#undef SIZEOF_UNSIGNED_SHORT
 
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 /* Support ThunderScan 4-bit RLE algorithm */
 #undef THUNDER_SUPPORT
 
+/* Signed 16-bit type */
+#undef TIFF_INT16_T
+
+/* Signed 32-bit type formatter */
+#undef TIFF_INT32_FORMAT
+
+/* Signed 32-bit type */
+#undef TIFF_INT32_T
+
+/* Signed 64-bit type formatter */
+#undef TIFF_INT64_FORMAT
+
+/* Signed 64-bit type */
+#undef TIFF_INT64_T
+
+/* Signed 8-bit type */
+#undef TIFF_INT8_T
+
+/* Pointer difference type formatter */
+#undef TIFF_PTRDIFF_FORMAT
+
+/* Pointer difference type */
+#undef TIFF_PTRDIFF_T
+
+/* Signed size type formatter */
+#undef TIFF_SSIZE_FORMAT
+
+/* Signed size type */
+#undef TIFF_SSIZE_T
+
+/* Unsigned 16-bit type */
+#undef TIFF_UINT16_T
+
+/* Unsigned 32-bit type formatter */
+#undef TIFF_UINT32_FORMAT
+
+/* Unsigned 32-bit type */
+#undef TIFF_UINT32_T
+
+/* Unsigned 64-bit type formatter */
+#undef TIFF_UINT64_FORMAT
+
+/* Unsigned 64-bit type */
+#undef TIFF_UINT64_T
+
+/* Unsigned 8-bit type */
+#undef TIFF_UINT8_T
+
 /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #undef TIME_WITH_SYS_TIME
 
 /* Define to 1 if your <sys/time.h> declares `struct tm'. */
 #undef TM_IN_SYS_TIME
 
+/* define to use win32 IO system */
+#undef USE_WIN32_FILEIO
+
 /* Version number of package */
 #undef VERSION
 
-/* Define to 1 if your processor stores words with the most significant byte
-   first (like Motorola and SPARC, unlike Intel and VAX). */
-#undef WORDS_BIGENDIAN
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
 
 /* Define to 1 if the X Window System is missing or not being used. */
 #undef X_DISPLAY_MISSING
 /* Support Deflate compression */
 #undef ZIP_SUPPORT
 
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
 #undef inline
 #endif
 
-/* Define to `long' if <sys/types.h> does not define. */
+/* Define to `long int' if <sys/types.h> does not define. */
 #undef off_t
 
-/* Define to `unsigned' if <sys/types.h> does not define. */
+/* Define to `unsigned int' if <sys/types.h> does not define. */
 #undef size_t
diff --git a/src/tiff/libtiff/tif_config.h.vc b/src/tiff/libtiff/tif_config.h.vc
deleted file mode 100644 (file)
index 4d90f45..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Define to 1 if you have the <assert.h> header file. */\r
-#define HAVE_ASSERT_H 1\r
-\r
-/* Define to 1 if you have the <fcntl.h> header file. */\r
-#define HAVE_FCNTL_H 1\r
-\r
-/* Define as 0 or 1 according to the floating point format suported by the\r
-   machine */\r
-#define HAVE_IEEEFP 1\r
-\r
-/* Define to 1 if you have the <string.h> header file. */\r
-#define HAVE_STRING_H 1\r
-\r
-/* Define to 1 if you have the <sys/types.h> header file. */\r
-#define HAVE_SYS_TYPES_H 1\r
-\r
-/* Define to 1 if you have the <io.h> header file. */\r
-#define HAVE_IO_H 1\r
-\r
-/* Define to 1 if you have the <search.h> header file. */\r
-#define HAVE_SEARCH_H 1\r
-\r
-/* The size of a `int', as computed by sizeof. */\r
-#define SIZEOF_INT 4\r
-\r
-/* The size of a `long', as computed by sizeof. */\r
-#define SIZEOF_LONG 4\r
-\r
-/* Set the native cpu bit order */\r
-#define HOST_FILLORDER FILLORDER_LSB2MSB\r
-\r
-/* Define to 1 if your processor stores words with the most significant byte\r
-   first (like Motorola and SPARC, unlike Intel and VAX). */\r
-/* #undef WORDS_BIGENDIAN */\r
-\r
-/* Define to `__inline__' or `__inline' if that's what the C compiler\r
-   calls it, or to nothing if 'inline' is not supported under any name.  */\r
-#ifndef __cplusplus\r
-# ifndef inline\r
-#  define inline __inline\r
-# endif\r
-#endif\r
-\r
-#define lfind _lfind\r
diff --git a/src/tiff/libtiff/tif_config.vc.h b/src/tiff/libtiff/tif_config.vc.h
new file mode 100644 (file)
index 0000000..c297cf3
--- /dev/null
@@ -0,0 +1,71 @@
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+#define HAVE_IEEEFP 1
+
+/* Define to 1 if you have the `jbg_newlen' function. */
+#define HAVE_JBG_NEWLEN 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if you have the `setmode' function. */
+#define HAVE_SETMODE 1
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* Signed 64-bit type formatter */
+#define TIFF_INT64_FORMAT "%I64d"
+
+/* Signed 64-bit type */
+#define TIFF_INT64_T signed __int64
+
+/* Unsigned 64-bit type formatter */
+#define TIFF_UINT64_FORMAT "%I64u"
+
+/* Unsigned 64-bit type */
+#define TIFF_UINT64_T unsigned __int64
+
+/* Set the native cpu bit order */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+#define snprintf _snprintf
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+# ifndef inline
+#  define inline __inline
+# endif
+#endif
+
+#define lfind _lfind
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_config.wince.h b/src/tiff/libtiff/tif_config.wince.h
new file mode 100644 (file)
index 0000000..2537c9c
--- /dev/null
@@ -0,0 +1,71 @@
+/* $Id$ */
+
+/*
+ * TIFF library configuration header for Windows CE platform.
+ */
+#ifndef _WIN32_WCE
+# error This version of tif_config.h header is dedicated for Windows CE platform!
+#endif
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define  HAVE_FCNTL_H 1
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+#define HAVE_IEEEFP 1
+
+/* Define to 1 if you have the `jbg_newlen' function. */
+#define HAVE_JBG_NEWLEN 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if you have the <search.h> header file. */
+#define HAVE_SEARCH_H 1
+
+/* Define to 1 if you have the `setmode' function. */
+#define HAVE_SETMODE 1
+
+/* Define to 1 if you have the `bsearch' function. */
+#define HAVE_BSEARCH 1
+#define bsearch wceex_bsearch
+
+/* Define to 1 if you have the `lfind' function. */
+#define HAVE_LFIND 1
+#define lfind wceex_lfind
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* Set the native cpu bit order */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to `__inline__' or `__inline' if that's what the C compiler
+   calls it, or to nothing if 'inline' is not supported under any name.  */
+#ifndef __cplusplus
+# ifndef inline
+#  define inline __inline
+# endif
+#endif
+
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 403a679d5340b3f888f0cf2ec1078ffa8dcad362..7bbca39ab7790d79b7a05c768f6d6ef679e3456d 100644 (file)
@@ -46,7 +46,7 @@ setByteArray(void** vpp, void* vp, size_t nmemb, size_t elem_size)
        if (*vpp)
                _TIFFfree(*vpp), *vpp = 0;
        if (vp) {
-               tsize_t bytes = nmemb * elem_size;
+               tmsize_t bytes = (tmsize_t)(nmemb * elem_size);
                if (elem_size && bytes / elem_size == nmemb)
                        *vpp = (void*) _TIFFmalloc(bytes);
                if (*vpp)
@@ -63,34 +63,69 @@ void _TIFFsetShortArray(uint16** wpp, uint16* wp, uint32 n)
     { setByteArray((void**) wpp, (void*) wp, n, sizeof (uint16)); }
 void _TIFFsetLongArray(uint32** lpp, uint32* lp, uint32 n)
     { setByteArray((void**) lpp, (void*) lp, n, sizeof (uint32)); }
+void _TIFFsetLong8Array(uint64** lpp, uint64* lp, uint32 n)
+    { setByteArray((void**) lpp, (void*) lp, n, sizeof (uint64)); }
 void _TIFFsetFloatArray(float** fpp, float* fp, uint32 n)
     { setByteArray((void**) fpp, (void*) fp, n, sizeof (float)); }
 void _TIFFsetDoubleArray(double** dpp, double* dp, uint32 n)
     { setByteArray((void**) dpp, (void*) dp, n, sizeof (double)); }
 
+static void
+setDoubleArrayOneValue(double** vpp, double value, size_t nmemb)
+{
+       if (*vpp)
+               _TIFFfree(*vpp);
+       *vpp = _TIFFmalloc(nmemb*sizeof(double));
+       if (*vpp)
+       {
+               while (nmemb--)
+                       ((double*)*vpp)[nmemb] = value;
+       }
+}
+
 /*
  * Install extra samples information.
  */
 static int
 setExtraSamples(TIFFDirectory* td, va_list ap, uint32* v)
 {
+/* XXX: Unassociated alpha data == 999 is a known Corel Draw bug, see below */
+#define EXTRASAMPLE_COREL_UNASSALPHA 999 
+
        uint16* va;
        uint32 i;
 
-       *v = va_arg(ap, uint32);
+       *v = (uint16) va_arg(ap, uint16_vap);
        if ((uint16) *v > td->td_samplesperpixel)
-               return (0);
+               return 0;
        va = va_arg(ap, uint16*);
        if (*v > 0 && va == NULL)               /* typically missing param */
-               return (0);
-       for (i = 0; i < *v; i++)
-               if (va[i] > EXTRASAMPLE_UNASSALPHA)
-                       return (0);
+               return 0;
+       for (i = 0; i < *v; i++) {
+               if (va[i] > EXTRASAMPLE_UNASSALPHA) {
+                       /*
+                        * XXX: Corel Draw is known to produce incorrect
+                        * ExtraSamples tags which must be patched here if we
+                        * want to be able to open some of the damaged TIFF
+                        * files: 
+                        */
+                       if (va[i] == EXTRASAMPLE_COREL_UNASSALPHA)
+                               va[i] = EXTRASAMPLE_UNASSALPHA;
+                       else
+                               return 0;
+               }
+       }
        td->td_extrasamples = (uint16) *v;
        _TIFFsetShortArray(&td->td_sampleinfo, va, td->td_extrasamples);
-       return (1);
+       return 1;
+
+#undef EXTRASAMPLE_COREL_UNASSALPHA
 }
 
+/*
+ * Confirm we have "samplesperpixel" ink names separated by \0.  Returns 
+ * zero if the ink names are not as expected.
+ */
 static uint32
 checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
 {
@@ -101,12 +136,12 @@ checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
                const char* ep = s+slen;
                const char* cp = s;
                for (; i > 0; i--) {
-                       for (; *cp != '\0'; cp++)
-                               if (cp >= ep)
-                                       goto bad;
+                       for (; cp < ep && *cp != '\0'; cp++) {}
+                       if (cp >= ep)
+                               goto bad;
                        cp++;                           /* skip \0 */
                }
-               return (cp-s);
+               return ((uint32)(cp-s));
        }
 bad:
        TIFFErrorExt(tif->tif_clientdata, "TIFFSetField",
@@ -118,27 +153,39 @@ bad:
 }
 
 static int
-_TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
+_TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
        static const char module[] = "_TIFFVSetField";
-       
+
        TIFFDirectory* td = &tif->tif_dir;
        int status = 1;
        uint32 v32, i, v;
        char* s;
+       const TIFFField *fip = TIFFFindField(tif, tag, TIFF_ANY);
+       uint32 standard_tag = tag;
+
+       /*
+        * We want to force the custom code to be used for custom
+        * fields even if the tag happens to match a well known 
+        * one - important for reinterpreted handling of standard
+        * tag values in custom directories (ie. EXIF) 
+        */
+       if (fip->field_bit == FIELD_CUSTOM) {
+               standard_tag = 0;
+       }
 
-       switch (tag) {
+       switch (standard_tag) {
        case TIFFTAG_SUBFILETYPE:
-               td->td_subfiletype = va_arg(ap, uint32);
+               td->td_subfiletype = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_IMAGEWIDTH:
-               td->td_imagewidth = va_arg(ap, uint32);
+               td->td_imagewidth = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_IMAGELENGTH:
-               td->td_imagelength = va_arg(ap, uint32);
+               td->td_imagelength = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_BITSPERSAMPLE:
-               td->td_bitspersample = (uint16) va_arg(ap, int);
+               td->td_bitspersample = (uint16) va_arg(ap, uint16_vap);
                /*
                 * If the data require post-decoding processing to byte-swap
                 * samples, set it up here.  Note that since tags are required
@@ -147,7 +194,9 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                 * work in with its normal work.
                 */
                if (tif->tif_flags & TIFF_SWAB) {
-                       if (td->td_bitspersample == 16)
+                       if (td->td_bitspersample == 8)
+                               tif->tif_postdecode = _TIFFNoPostDecode;
+                       else if (td->td_bitspersample == 16)
                                tif->tif_postdecode = _TIFFSwab16BitData;
                        else if (td->td_bitspersample == 24)
                                tif->tif_postdecode = _TIFFSwab24BitData;
@@ -160,14 +209,14 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                }
                break;
        case TIFFTAG_COMPRESSION:
-               v = va_arg(ap, uint32) & 0xffff;
+               v = (uint16) va_arg(ap, uint16_vap);
                /*
                 * If we're changing the compression scheme, the notify the
                 * previous module so that it can cleanup any state it's
                 * setup.
                 */
                if (TIFFFieldSet(tif, FIELD_COMPRESSION)) {
-                       if (td->td_compression == v)
+                       if ((uint32)td->td_compression == v)
                                break;
                        (*tif->tif_cleanup)(tif);
                        tif->tif_flags &= ~TIFF_CODERSETUP;
@@ -176,41 +225,37 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                 * Setup new compression routine state.
                 */
                if( (status = TIFFSetCompressionScheme(tif, v)) != 0 )
-                    td->td_compression = (uint16) v;
-                else
-                    status = 0;
+                   td->td_compression = (uint16) v;
+               else
+                   status = 0;
                break;
        case TIFFTAG_PHOTOMETRIC:
-               td->td_photometric = (uint16) va_arg(ap, int);
+               td->td_photometric = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_THRESHHOLDING:
-               td->td_threshholding = (uint16) va_arg(ap, int);
+               td->td_threshholding = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_FILLORDER:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                if (v != FILLORDER_LSB2MSB && v != FILLORDER_MSB2LSB)
                        goto badvalue;
                td->td_fillorder = (uint16) v;
                break;
-               break;
        case TIFFTAG_ORIENTATION:
-               v = va_arg(ap, uint32);
-               if (v < ORIENTATION_TOPLEFT || ORIENTATION_LEFTBOT < v) {
-                       TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-                           "Bad value %lu for \"%s\" tag ignored",
-                           v, _TIFFFieldWithTag(tif, tag)->field_name);
-               } else
+               v = (uint16) va_arg(ap, uint16_vap);
+               if (v < ORIENTATION_TOPLEFT || ORIENTATION_LEFTBOT < v)
+                       goto badvalue;
+               else
                        td->td_orientation = (uint16) v;
                break;
        case TIFFTAG_SAMPLESPERPIXEL:
-               /* XXX should cross check -- e.g. if pallette, then 1 */
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                if (v == 0)
                        goto badvalue;
                td->td_samplesperpixel = (uint16) v;
                break;
        case TIFFTAG_ROWSPERSTRIP:
-               v32 = va_arg(ap, uint32);
+               v32 = (uint32) va_arg(ap, uint32);
                if (v32 == 0)
                        goto badvalue32;
                td->td_rowsperstrip = v32;
@@ -220,16 +265,22 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                }
                break;
        case TIFFTAG_MINSAMPLEVALUE:
-               td->td_minsamplevalue = (uint16) va_arg(ap, int);
+               td->td_minsamplevalue = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_MAXSAMPLEVALUE:
-               td->td_maxsamplevalue = (uint16) va_arg(ap, int);
+               td->td_maxsamplevalue = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_SMINSAMPLEVALUE:
-               td->td_sminsamplevalue = va_arg(ap, double);
+               if (tif->tif_flags & TIFF_PERSAMPLE)
+                       _TIFFsetDoubleArray(&td->td_sminsamplevalue, va_arg(ap, double*), td->td_samplesperpixel);
+               else
+                       setDoubleArrayOneValue(&td->td_sminsamplevalue, va_arg(ap, double), td->td_samplesperpixel);
                break;
        case TIFFTAG_SMAXSAMPLEVALUE:
-               td->td_smaxsamplevalue = va_arg(ap, double);
+               if (tif->tif_flags & TIFF_PERSAMPLE)
+                       _TIFFsetDoubleArray(&td->td_smaxsamplevalue, va_arg(ap, double*), td->td_samplesperpixel);
+               else
+                       setDoubleArrayOneValue(&td->td_smaxsamplevalue, va_arg(ap, double), td->td_samplesperpixel);
                break;
        case TIFFTAG_XRESOLUTION:
                td->td_xresolution = (float) va_arg(ap, double);
@@ -238,7 +289,7 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                td->td_yresolution = (float) va_arg(ap, double);
                break;
        case TIFFTAG_PLANARCONFIG:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                if (v != PLANARCONFIG_CONTIG && v != PLANARCONFIG_SEPARATE)
                        goto badvalue;
                td->td_planarconfig = (uint16) v;
@@ -250,18 +301,18 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                td->td_yposition = (float) va_arg(ap, double);
                break;
        case TIFFTAG_RESOLUTIONUNIT:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                if (v < RESUNIT_NONE || RESUNIT_CENTIMETER < v)
                        goto badvalue;
                td->td_resolutionunit = (uint16) v;
                break;
        case TIFFTAG_PAGENUMBER:
-               td->td_pagenumber[0] = (uint16) va_arg(ap, int);
-               td->td_pagenumber[1] = (uint16) va_arg(ap, int);
+               td->td_pagenumber[0] = (uint16) va_arg(ap, uint16_vap);
+               td->td_pagenumber[1] = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_HALFTONEHINTS:
-               td->td_halftonehints[0] = (uint16) va_arg(ap, int);
-               td->td_halftonehints[1] = (uint16) va_arg(ap, int);
+               td->td_halftonehints[0] = (uint16) va_arg(ap, uint16_vap);
+               td->td_halftonehints[1] = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_COLORMAP:
                v32 = (uint32)(1L<<td->td_bitspersample);
@@ -274,14 +325,14 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                        goto badvalue;
                break;
        case TIFFTAG_MATTEING:
-               td->td_extrasamples = (uint16) (va_arg(ap, int) != 0);
+               td->td_extrasamples =  (((uint16) va_arg(ap, uint16_vap)) != 0);
                if (td->td_extrasamples) {
                        uint16 sv = EXTRASAMPLE_ASSOCALPHA;
                        _TIFFsetShortArray(&td->td_sampleinfo, &sv, 1);
                }
                break;
        case TIFFTAG_TILEWIDTH:
-               v32 = va_arg(ap, uint32);
+               v32 = (uint32) va_arg(ap, uint32);
                if (v32 % 16) {
                        if (tif->tif_mode != O_RDONLY)
                                goto badvalue32;
@@ -292,7 +343,7 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                tif->tif_flags |= TIFF_ISTILED;
                break;
        case TIFFTAG_TILELENGTH:
-               v32 = va_arg(ap, uint32);
+               v32 = (uint32) va_arg(ap, uint32);
                if (v32 % 16) {
                        if (tif->tif_mode != O_RDONLY)
                                goto badvalue32;
@@ -303,13 +354,13 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                tif->tif_flags |= TIFF_ISTILED;
                break;
        case TIFFTAG_TILEDEPTH:
-               v32 = va_arg(ap, uint32);
+               v32 = (uint32) va_arg(ap, uint32);
                if (v32 == 0)
                        goto badvalue32;
                td->td_tiledepth = v32;
                break;
        case TIFFTAG_DATATYPE:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                switch (v) {
                case DATATYPE_VOID:     v = SAMPLEFORMAT_VOID;  break;
                case DATATYPE_INT:      v = SAMPLEFORMAT_INT;   break;
@@ -320,42 +371,43 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                td->td_sampleformat = (uint16) v;
                break;
        case TIFFTAG_SAMPLEFORMAT:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                if (v < SAMPLEFORMAT_UINT || SAMPLEFORMAT_COMPLEXIEEEFP < v)
                        goto badvalue;
                td->td_sampleformat = (uint16) v;
 
-                /*  Try to fix up the SWAB function for complex data. */
-                if( td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT 
-                    && td->td_bitspersample == 32
-                    && tif->tif_postdecode == _TIFFSwab32BitData )
-                    tif->tif_postdecode = _TIFFSwab16BitData;
-                else if( (td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT 
-                          || td->td_sampleformat == SAMPLEFORMAT_COMPLEXIEEEFP)
-                         && td->td_bitspersample == 64
-                         && tif->tif_postdecode == _TIFFSwab64BitData )
-                    tif->tif_postdecode = _TIFFSwab32BitData;
+               /*  Try to fix up the SWAB function for complex data. */
+               if( td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT
+                   && td->td_bitspersample == 32
+                   && tif->tif_postdecode == _TIFFSwab32BitData )
+                   tif->tif_postdecode = _TIFFSwab16BitData;
+               else if( (td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT
+                         || td->td_sampleformat == SAMPLEFORMAT_COMPLEXIEEEFP)
+                        && td->td_bitspersample == 64
+                        && tif->tif_postdecode == _TIFFSwab64BitData )
+                   tif->tif_postdecode = _TIFFSwab32BitData;
                break;
        case TIFFTAG_IMAGEDEPTH:
-               td->td_imagedepth = va_arg(ap, uint32);
+               td->td_imagedepth = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_SUBIFD:
                if ((tif->tif_flags & TIFF_INSUBIFD) == 0) {
-                       td->td_nsubifd = (uint16) va_arg(ap, int);
-                       _TIFFsetLongArray(&td->td_subifd, va_arg(ap, uint32*),
+                       td->td_nsubifd = (uint16) va_arg(ap, uint16_vap);
+                       _TIFFsetLong8Array(&td->td_subifd, (uint64*) va_arg(ap, uint64*),
                            (long) td->td_nsubifd);
                } else {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Sorry, cannot nest SubIFDs",
-                                 tif->tif_name);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                    "%s: Sorry, cannot nest SubIFDs",
+                                    tif->tif_name);
                        status = 0;
                }
                break;
        case TIFFTAG_YCBCRPOSITIONING:
-               td->td_ycbcrpositioning = (uint16) va_arg(ap, int);
+               td->td_ycbcrpositioning = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_YCBCRSUBSAMPLING:
-               td->td_ycbcrsubsampling[0] = (uint16) va_arg(ap, int);
-               td->td_ycbcrsubsampling[1] = (uint16) va_arg(ap, int);
+               td->td_ycbcrsubsampling[0] = (uint16) va_arg(ap, uint16_vap);
+               td->td_ycbcrsubsampling[1] = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_TRANSFERFUNCTION:
                v = (td->td_samplesperpixel - td->td_extrasamples) > 1 ? 3 : 1;
@@ -363,207 +415,258 @@ _TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
                        _TIFFsetShortArray(&td->td_transferfunction[i],
                            va_arg(ap, uint16*), 1L<<td->td_bitspersample);
                break;
+       case TIFFTAG_REFERENCEBLACKWHITE:
+               /* XXX should check for null range */
+               _TIFFsetFloatArray(&td->td_refblackwhite, va_arg(ap, float*), 6);
+               break;
        case TIFFTAG_INKNAMES:
-               v = va_arg(ap, uint32);
+               v = (uint16) va_arg(ap, uint16_vap);
                s = va_arg(ap, char*);
                v = checkInkNamesString(tif, v, s);
-                status = v > 0;
+               status = v > 0;
                if( v > 0 ) {
                        _TIFFsetNString(&td->td_inknames, s, v);
                        td->td_inknameslen = v;
                }
                break;
-        default: {
-            const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-            TIFFTagValue *tv;
-            int tv_size, iCustom;
-
-            /*
-            * This can happen if multiple images are open with different
-            * codecs which have private tags.  The global tag information
-            * table may then have tags that are valid for one file but not
-            * the other. If the client tries to set a tag that is not valid
-            * for the image's codec then we'll arrive here.  This
-            * happens, for example, when tiffcp is used to convert between
-            * compression schemes and codec-specific tags are blindly copied.
-             */
-            if(fip == NULL || fip->field_bit != FIELD_CUSTOM) {
-               TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Invalid %stag \"%s\" (not supported by codec)",
-                   tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-                   _TIFFFieldWithTag(tif, tag)->field_name);
-               status = 0;
+       case TIFFTAG_PERSAMPLE:
+               v = (uint16) va_arg(ap, uint16_vap);
+               if( v == PERSAMPLE_MULTI )
+                       tif->tif_flags |= TIFF_PERSAMPLE;
+               else
+                       tif->tif_flags &= ~TIFF_PERSAMPLE;
                break;
-            }
+       default: {
+               TIFFTagValue *tv;
+               int tv_size, iCustom;
 
-            /*
-             * Find the existing entry for this custom value.
-             */
-            tv = NULL;
-            for(iCustom = 0; iCustom < td->td_customValueCount; iCustom++) {
-                if(td->td_customValues[iCustom].info == fip) {
-                    tv = td->td_customValues + iCustom;
-                    if(tv->value != NULL)
-                    {
-                        _TIFFfree(tv->value);
-                        tv->value = NULL;
-                    }
-                    break;
-                }
-            }
-
-            /*
-             * Grow the custom list if the entry was not found.
-             */
-            if(tv == NULL) {
-               TIFFTagValue    *new_customValues;
-               
-               td->td_customValueCount++;
-               new_customValues = (TIFFTagValue *)
-                       _TIFFrealloc(td->td_customValues,
-                                    sizeof(TIFFTagValue) * td->td_customValueCount);
-               if (!new_customValues) {
+               /*
+                * This can happen if multiple images are open with different
+                * codecs which have private tags.  The global tag information
+                * table may then have tags that are valid for one file but not
+                * the other. If the client tries to set a tag that is not valid
+                * for the image's codec then we'll arrive here.  This
+                * happens, for example, when tiffcp is used to convert between
+                * compression schemes and codec-specific tags are blindly copied.
+                */
+               if(fip == NULL || fip->field_bit != FIELD_CUSTOM) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-               "%s: Failed to allocate space for list of custom values",
-                                 tif->tif_name);
+                           "%s: Invalid %stag \"%s\" (not supported by codec)",
+                           tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
+                           fip ? fip->field_name : "Unknown");
                        status = 0;
-                       goto end;
+                       break;
                }
 
-               td->td_customValues = new_customValues;
+               /*
+                * Find the existing entry for this custom value.
+                */
+               tv = NULL;
+               for (iCustom = 0; iCustom < td->td_customValueCount; iCustom++) {
+                       if (td->td_customValues[iCustom].info->field_tag == tag) {
+                               tv = td->td_customValues + iCustom;
+                               if (tv->value != NULL) {
+                                       _TIFFfree(tv->value);
+                                       tv->value = NULL;
+                               }
+                               break;
+                       }
+               }
 
-                tv = td->td_customValues + (td->td_customValueCount-1);
-                tv->info = fip;
-                tv->value = NULL;
-                tv->count = 0;
-            }
+               /*
+                * Grow the custom list if the entry was not found.
+                */
+               if(tv == NULL) {
+                       TIFFTagValue *new_customValues;
 
-            /*
-             * Set custom value ... save a copy of the custom tag value.
-             */
-           tv_size = _TIFFDataSize(fip->field_type);
-           if (tv_size == 0) {
-                   status = 0;
-                   TIFFErrorExt(tif->tif_clientdata, module,
-                                "%s: Bad field type %d for \"%s\"",
-                                tif->tif_name, fip->field_type,
-                                fip->field_name);
-                   goto end;
-           }
-           
-            if(fip->field_passcount) {
-                   if (fip->field_writecount == TIFF_VARIABLE2)
-                       tv->count = (uint32) va_arg(ap, uint32);
-                   else
-                       tv->count = (int) va_arg(ap, int);
-           } else if (fip->field_writecount == TIFF_VARIABLE
-                      || fip->field_writecount == TIFF_VARIABLE2)
-               tv->count = 1;
-           else if (fip->field_writecount == TIFF_SPP)
-               tv->count = td->td_samplesperpixel;
-           else
-                tv->count = fip->field_writecount;
-            
-    
-           if (fip->field_type == TIFF_ASCII)
-                   _TIFFsetString((char **)&tv->value, va_arg(ap, char *));
-           else {
-                tv->value = _TIFFmalloc(tv_size * tv->count);
-               if (!tv->value) {
-                   status = 0;
-                   goto end;
+                       td->td_customValueCount++;
+                       new_customValues = (TIFFTagValue *)
+                           _TIFFrealloc(td->td_customValues,
+                           sizeof(TIFFTagValue) * td->td_customValueCount);
+                       if (!new_customValues) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "%s: Failed to allocate space for list of custom values",
+                                   tif->tif_name);
+                               status = 0;
+                               goto end;
+                       }
+
+                       td->td_customValues = new_customValues;
+
+                       tv = td->td_customValues + (td->td_customValueCount - 1);
+                       tv->info = fip;
+                       tv->value = NULL;
+                       tv->count = 0;
                }
 
-               if ((fip->field_passcount
-                   || fip->field_writecount == TIFF_VARIABLE
-                   || fip->field_writecount == TIFF_VARIABLE2
-                   || fip->field_writecount == TIFF_SPP
-                   || tv->count > 1)
-                   && fip->field_tag != TIFFTAG_PAGENUMBER
-                   && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                   && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                   && fip->field_tag != TIFFTAG_DOTRANGE) {
-                    _TIFFmemcpy(tv->value, va_arg(ap, void *),
-                               tv->count * tv_size);
-               } else {
-                   /*
-                    * XXX: The following loop required to handle
-                    * TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS,
-                    * TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags.
-                    * These tags are actually arrays and should be passed as
-                    * array pointers to TIFFSetField() function, but actually
-                    * passed as a list of separate values. This behaviour
-                    * must be changed in the future!
-                    */
-                   int i;
-                   char *val = (char *)tv->value;
-
-                   for (i = 0; i < tv->count; i++, val += tv_size) {
-                           switch (fip->field_type) {
+               /*
+                * Set custom value ... save a copy of the custom tag value.
+                */
+               tv_size = _TIFFDataSize(fip->field_type);
+               if (tv_size == 0) {
+                       status = 0;
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "%s: Bad field type %d for \"%s\"",
+                           tif->tif_name, fip->field_type,
+                           fip->field_name);
+                       goto end;
+               }
+
+               if (fip->field_type == TIFF_ASCII)
+               {
+                       uint32 ma;
+                       char* mb;
+                       if (fip->field_passcount)
+                       {
+                               assert(fip->field_writecount==TIFF_VARIABLE2);
+                               ma=(uint32)va_arg(ap,uint32);
+                               mb=(char*)va_arg(ap,char*);
+                       }
+                       else
+                       {
+                               mb=(char*)va_arg(ap,char*);
+                               ma=(uint32)(strlen(mb)+1);
+                       }
+                       tv->count=ma;
+                       setByteArray(&tv->value,mb,ma,1);
+               }
+               else
+               {
+                       if (fip->field_passcount) {
+                               if (fip->field_writecount == TIFF_VARIABLE2)
+                                       tv->count = (uint32) va_arg(ap, uint32);
+                               else
+                                       tv->count = (int) va_arg(ap, int);
+                       } else if (fip->field_writecount == TIFF_VARIABLE
+                          || fip->field_writecount == TIFF_VARIABLE2)
+                               tv->count = 1;
+                       else if (fip->field_writecount == TIFF_SPP)
+                               tv->count = td->td_samplesperpixel;
+                       else
+                               tv->count = fip->field_writecount;
+
+                       if (tv->count == 0) {
+                               status = 0;
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "%s: Null count for \"%s\" (type "
+                                            "%d, writecount %d, passcount %d)",
+                                            tif->tif_name,
+                                            fip->field_name,
+                                            fip->field_type,
+                                            fip->field_writecount,
+                                            fip->field_passcount);
+                               goto end;
+                       }
+
+                       tv->value = _TIFFCheckMalloc(tif, tv->count, tv_size,
+                           "custom tag binary object");
+                       if (!tv->value) {
+                               status = 0;
+                               goto end;
+                       }
+
+                       if (fip->field_tag == TIFFTAG_DOTRANGE 
+                           && strcmp(fip->field_name,"DotRange") == 0) {
+                               /* TODO: This is an evil exception and should not have been
+                                  handled this way ... likely best if we move it into
+                                  the directory structure with an explicit field in 
+                                  libtiff 4.1 and assign it a FIELD_ value */
+                               uint16 v[2];
+                               v[0] = (uint16)va_arg(ap, int);
+                               v[1] = (uint16)va_arg(ap, int);
+                               _TIFFmemcpy(tv->value, &v, 4);
+                       }
+
+                       else if (fip->field_passcount
+                                 || fip->field_writecount == TIFF_VARIABLE
+                                 || fip->field_writecount == TIFF_VARIABLE2
+                                 || fip->field_writecount == TIFF_SPP
+                                 || tv->count > 1) {
+                               _TIFFmemcpy(tv->value, va_arg(ap, void *),
+                                   tv->count * tv_size);
+                       } else {
+                               char *val = (char *)tv->value;
+                               assert( tv->count == 1 );
+
+                               switch (fip->field_type) {
                                case TIFF_BYTE:
                                case TIFF_UNDEFINED:
-                                   {
-                                       uint8 v = (uint8)va_arg(ap, int);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               uint8 v = (uint8)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_SBYTE:
-                                   {
-                                       int8 v = (int8)va_arg(ap, int);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               int8 v = (int8)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_SHORT:
-                                   {
-                                       uint16 v = (uint16)va_arg(ap, int);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               uint16 v = (uint16)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_SSHORT:
-                                   {
-                                       int16 v = (int16)va_arg(ap, int);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               int16 v = (int16)va_arg(ap, int);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_LONG:
                                case TIFF_IFD:
-                                   {
-                                       uint32 v = va_arg(ap, uint32);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               uint32 v = va_arg(ap, uint32);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_SLONG:
-                                   {
-                                       int32 v = va_arg(ap, int32);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               int32 v = va_arg(ap, int32);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_LONG8:
+                               case TIFF_IFD8:
+                                       {
+                                               uint64 v = va_arg(ap, uint64);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
+                               case TIFF_SLONG8:
+                                       {
+                                               int64 v = va_arg(ap, int64);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_RATIONAL:
                                case TIFF_SRATIONAL:
                                case TIFF_FLOAT:
-                                   {
-                                       float v = (float)va_arg(ap, double);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               float v = (float)va_arg(ap, double);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                case TIFF_DOUBLE:
-                                   {
-                                       double v = va_arg(ap, double);
-                                       _TIFFmemcpy(val, &v, tv_size);
-                                   }
-                                   break;
+                                       {
+                                               double v = va_arg(ap, double);
+                                               _TIFFmemcpy(val, &v, tv_size);
+                                       }
+                                       break;
                                default:
-                                   _TIFFmemset(val, 0, tv_size);
-                                   status = 0;
-                                   break;
-                           }
-                   }
+                                       _TIFFmemset(val, 0, tv_size);
+                                       status = 0;
+                                       break;
+                               }
+                       }
                }
-           }
-          }
+       }
        }
        if (status) {
-               TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
+               const TIFFField* fip=TIFFFieldWithTag(tif,tag);
+               if (fip)                
+                       TIFFSetFieldBit(tif, fip->field_bit);
                tif->tif_flags |= TIFF_DIRTYDIRECT;
        }
 
@@ -571,14 +674,24 @@ end:
        va_end(ap);
        return (status);
 badvalue:
-       TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %d for \"%s\"",
-                 tif->tif_name, v, _TIFFFieldWithTag(tif, tag)->field_name);
-       va_end(ap);
+        {
+               const TIFFField* fip=TIFFFieldWithTag(tif,tag);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                    "%s: Bad value %u for \"%s\" tag",
+                    tif->tif_name, v,
+                    fip ? fip->field_name : "Unknown");
+               va_end(ap);
+        }
        return (0);
 badvalue32:
-       TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad value %ld for \"%s\"",
-                  tif->tif_name, v32, _TIFFFieldWithTag(tif, tag)->field_name);
-       va_end(ap);
+        {
+               const TIFFField* fip=TIFFFieldWithTag(tif,tag);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                    "%s: Bad value %u for \"%s\" tag",
+                    tif->tif_name, v32,
+                    fip ? fip->field_name : "Unknown");
+               va_end(ap);
+        }
        return (0);
 }
 
@@ -592,9 +705,9 @@ badvalue32:
  * on the format of the data that is written.
  */
 static int
-OkToChangeTag(TIFF* tif, ttag_t tag)
+OkToChangeTag(TIFF* tif, uint32 tag)
 {
-       const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
+       const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY);
        if (!fip) {                     /* unknown tag */
                TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Unknown %stag %u",
                    tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag);
@@ -624,7 +737,7 @@ OkToChangeTag(TIFF* tif, ttag_t tag)
  * updated.
  */
 int
-TIFFSetField(TIFF* tif, ttag_t tag, ...)
+TIFFSetField(TIFF* tif, uint32 tag, ...)
 {
        va_list ap;
        int status;
@@ -635,6 +748,47 @@ TIFFSetField(TIFF* tif, ttag_t tag, ...)
        return (status);
 }
 
+/*
+ * Clear the contents of the field in the internal structure.
+ */
+int
+TIFFUnsetField(TIFF* tif, uint32 tag)
+{
+    const TIFFField *fip =  TIFFFieldWithTag(tif, tag);
+    TIFFDirectory* td = &tif->tif_dir;
+
+    if( !fip )
+        return 0;
+
+    if( fip->field_bit != FIELD_CUSTOM )
+        TIFFClrFieldBit(tif, fip->field_bit);
+    else
+    {
+        TIFFTagValue *tv = NULL;
+        int i;
+
+        for (i = 0; i < td->td_customValueCount; i++) {
+                
+            tv = td->td_customValues + i;
+            if( tv->info->field_tag == tag )
+                break;
+        }
+
+        if( i < td->td_customValueCount )
+        {
+            _TIFFfree(tv->value);
+            for( ; i < td->td_customValueCount-1; i++) {
+                td->td_customValues[i] = td->td_customValues[i+1];
+            }
+            td->td_customValueCount--;
+        }
+    }
+        
+    tif->tif_flags |= TIFF_DIRTYDIRECT;
+
+    return (1);
+}
+
 /*
  * Like TIFFSetField, but taking a varargs
  * parameter list.  This routine is useful
@@ -642,279 +796,332 @@ TIFFSetField(TIFF* tif, ttag_t tag, ...)
  * top of the library.
  */
 int
-TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
+TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
        return OkToChangeTag(tif, tag) ?
            (*tif->tif_tagmethods.vsetfield)(tif, tag, ap) : 0;
 }
 
 static int
-_TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
+_TIFFVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
-    TIFFDirectory* td = &tif->tif_dir;
-    int            ret_val = 1;
+       TIFFDirectory* td = &tif->tif_dir;
+       int ret_val = 1;
+       uint32 standard_tag = tag;
+       const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY);
+       
+       /*
+        * We want to force the custom code to be used for custom
+        * fields even if the tag happens to match a well known 
+        * one - important for reinterpreted handling of standard
+        * tag values in custom directories (ie. EXIF) 
+        */
+       if (fip->field_bit == FIELD_CUSTOM) {
+               standard_tag = 0;
+       }
 
-    switch (tag) {
-       case TIFFTAG_SUBFILETYPE:
-            *va_arg(ap, uint32*) = td->td_subfiletype;
-            break;
-       case TIFFTAG_IMAGEWIDTH:
-            *va_arg(ap, uint32*) = td->td_imagewidth;
-            break;
-       case TIFFTAG_IMAGELENGTH:
-            *va_arg(ap, uint32*) = td->td_imagelength;
-            break;
-       case TIFFTAG_BITSPERSAMPLE:
-            *va_arg(ap, uint16*) = td->td_bitspersample;
-            break;
-       case TIFFTAG_COMPRESSION:
-            *va_arg(ap, uint16*) = td->td_compression;
-            break;
-       case TIFFTAG_PHOTOMETRIC:
-            *va_arg(ap, uint16*) = td->td_photometric;
-            break;
-       case TIFFTAG_THRESHHOLDING:
-            *va_arg(ap, uint16*) = td->td_threshholding;
-            break;
-       case TIFFTAG_FILLORDER:
-            *va_arg(ap, uint16*) = td->td_fillorder;
-            break;
-       case TIFFTAG_ORIENTATION:
-            *va_arg(ap, uint16*) = td->td_orientation;
-            break;
-       case TIFFTAG_SAMPLESPERPIXEL:
-            *va_arg(ap, uint16*) = td->td_samplesperpixel;
-            break;
-       case TIFFTAG_ROWSPERSTRIP:
-            *va_arg(ap, uint32*) = td->td_rowsperstrip;
-            break;
-       case TIFFTAG_MINSAMPLEVALUE:
-            *va_arg(ap, uint16*) = td->td_minsamplevalue;
-            break;
-       case TIFFTAG_MAXSAMPLEVALUE:
-            *va_arg(ap, uint16*) = td->td_maxsamplevalue;
-            break;
-       case TIFFTAG_SMINSAMPLEVALUE:
-            *va_arg(ap, double*) = td->td_sminsamplevalue;
-            break;
-       case TIFFTAG_SMAXSAMPLEVALUE:
-            *va_arg(ap, double*) = td->td_smaxsamplevalue;
-            break;
-       case TIFFTAG_XRESOLUTION:
-            *va_arg(ap, float*) = td->td_xresolution;
-            break;
-       case TIFFTAG_YRESOLUTION:
-            *va_arg(ap, float*) = td->td_yresolution;
-            break;
-       case TIFFTAG_PLANARCONFIG:
-            *va_arg(ap, uint16*) = td->td_planarconfig;
-            break;
-       case TIFFTAG_XPOSITION:
-            *va_arg(ap, float*) = td->td_xposition;
-            break;
-       case TIFFTAG_YPOSITION:
-            *va_arg(ap, float*) = td->td_yposition;
-            break;
-       case TIFFTAG_RESOLUTIONUNIT:
-            *va_arg(ap, uint16*) = td->td_resolutionunit;
-            break;
-       case TIFFTAG_PAGENUMBER:
-            *va_arg(ap, uint16*) = td->td_pagenumber[0];
-            *va_arg(ap, uint16*) = td->td_pagenumber[1];
-            break;
-       case TIFFTAG_HALFTONEHINTS:
-            *va_arg(ap, uint16*) = td->td_halftonehints[0];
-            *va_arg(ap, uint16*) = td->td_halftonehints[1];
-            break;
-       case TIFFTAG_COLORMAP:
-            *va_arg(ap, uint16**) = td->td_colormap[0];
-            *va_arg(ap, uint16**) = td->td_colormap[1];
-            *va_arg(ap, uint16**) = td->td_colormap[2];
-            break;
-       case TIFFTAG_STRIPOFFSETS:
-       case TIFFTAG_TILEOFFSETS:
-            *va_arg(ap, uint32**) = td->td_stripoffset;
-            break;
-       case TIFFTAG_STRIPBYTECOUNTS:
-       case TIFFTAG_TILEBYTECOUNTS:
-            *va_arg(ap, uint32**) = td->td_stripbytecount;
-            break;
-       case TIFFTAG_MATTEING:
-            *va_arg(ap, uint16*) =
-                (td->td_extrasamples == 1 &&
-                 td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
-            break;
-       case TIFFTAG_EXTRASAMPLES:
-            *va_arg(ap, uint16*) = td->td_extrasamples;
-            *va_arg(ap, uint16**) = td->td_sampleinfo;
-            break;
-       case TIFFTAG_TILEWIDTH:
-            *va_arg(ap, uint32*) = td->td_tilewidth;
-            break;
-       case TIFFTAG_TILELENGTH:
-            *va_arg(ap, uint32*) = td->td_tilelength;
-            break;
-       case TIFFTAG_TILEDEPTH:
-            *va_arg(ap, uint32*) = td->td_tiledepth;
-            break;
-       case TIFFTAG_DATATYPE:
-            switch (td->td_sampleformat) {
-               case SAMPLEFORMAT_UINT:
-                    *va_arg(ap, uint16*) = DATATYPE_UINT;
-                    break;
-               case SAMPLEFORMAT_INT:
-                    *va_arg(ap, uint16*) = DATATYPE_INT;
-                    break;
-               case SAMPLEFORMAT_IEEEFP:
-                    *va_arg(ap, uint16*) = DATATYPE_IEEEFP;
-                    break;
-               case SAMPLEFORMAT_VOID:
-                    *va_arg(ap, uint16*) = DATATYPE_VOID;
-                    break;
-            }
-            break;
-       case TIFFTAG_SAMPLEFORMAT:
-            *va_arg(ap, uint16*) = td->td_sampleformat;
-            break;
-       case TIFFTAG_IMAGEDEPTH:
-            *va_arg(ap, uint32*) = td->td_imagedepth;
-            break;
-       case TIFFTAG_SUBIFD:
-            *va_arg(ap, uint16*) = td->td_nsubifd;
-            *va_arg(ap, uint32**) = td->td_subifd;
-            break;
-       case TIFFTAG_YCBCRPOSITIONING:
-            *va_arg(ap, uint16*) = td->td_ycbcrpositioning;
-            break;
-       case TIFFTAG_YCBCRSUBSAMPLING:
-            *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[0];
-            *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[1];
-            break;
-       case TIFFTAG_TRANSFERFUNCTION:
-            *va_arg(ap, uint16**) = td->td_transferfunction[0];
-            if (td->td_samplesperpixel - td->td_extrasamples > 1) {
-                *va_arg(ap, uint16**) = td->td_transferfunction[1];
-                *va_arg(ap, uint16**) = td->td_transferfunction[2];
-            }
-            break;
-       case TIFFTAG_INKNAMES:
-            *va_arg(ap, char**) = td->td_inknames;
-            break;
-        default:
-        {
-            const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-            int           i;
-            
-            /*
-             * This can happen if multiple images are open with
-             * different codecs which have private tags.  The
-             * global tag information table may then have tags
-             * that are valid for one file but not the other. 
-             * If the client tries to get a tag that is not valid
-             * for the image's codec then we'll arrive here.
-             */
-            if( fip == NULL || fip->field_bit != FIELD_CUSTOM )
-            {
-                               TIFFErrorExt(tif->tif_clientdata, "_TIFFVGetField",
-                          "%s: Invalid %stag \"%s\" (not supported by codec)",
-                          tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
-                          _TIFFFieldWithTag(tif, tag)->field_name);
-                ret_val = 0;
-                break;
-            }
+       switch (standard_tag) {
+               case TIFFTAG_SUBFILETYPE:
+                       *va_arg(ap, uint32*) = td->td_subfiletype;
+                       break;
+               case TIFFTAG_IMAGEWIDTH:
+                       *va_arg(ap, uint32*) = td->td_imagewidth;
+                       break;
+               case TIFFTAG_IMAGELENGTH:
+                       *va_arg(ap, uint32*) = td->td_imagelength;
+                       break;
+               case TIFFTAG_BITSPERSAMPLE:
+                       *va_arg(ap, uint16*) = td->td_bitspersample;
+                       break;
+               case TIFFTAG_COMPRESSION:
+                       *va_arg(ap, uint16*) = td->td_compression;
+                       break;
+               case TIFFTAG_PHOTOMETRIC:
+                       *va_arg(ap, uint16*) = td->td_photometric;
+                       break;
+               case TIFFTAG_THRESHHOLDING:
+                       *va_arg(ap, uint16*) = td->td_threshholding;
+                       break;
+               case TIFFTAG_FILLORDER:
+                       *va_arg(ap, uint16*) = td->td_fillorder;
+                       break;
+               case TIFFTAG_ORIENTATION:
+                       *va_arg(ap, uint16*) = td->td_orientation;
+                       break;
+               case TIFFTAG_SAMPLESPERPIXEL:
+                       *va_arg(ap, uint16*) = td->td_samplesperpixel;
+                       break;
+               case TIFFTAG_ROWSPERSTRIP:
+                       *va_arg(ap, uint32*) = td->td_rowsperstrip;
+                       break;
+               case TIFFTAG_MINSAMPLEVALUE:
+                       *va_arg(ap, uint16*) = td->td_minsamplevalue;
+                       break;
+               case TIFFTAG_MAXSAMPLEVALUE:
+                       *va_arg(ap, uint16*) = td->td_maxsamplevalue;
+                       break;
+               case TIFFTAG_SMINSAMPLEVALUE:
+                       if (tif->tif_flags & TIFF_PERSAMPLE)
+                               *va_arg(ap, double**) = td->td_sminsamplevalue;
+                       else
+                       {
+                               /* libtiff historially treats this as a single value. */
+                               uint16 i;
+                               double v = td->td_sminsamplevalue[0];
+                               for (i=1; i < td->td_samplesperpixel; ++i)
+                                       if( td->td_sminsamplevalue[i] < v )
+                                               v = td->td_sminsamplevalue[i];
+                               *va_arg(ap, double*) = v;
+                       }
+                       break;
+               case TIFFTAG_SMAXSAMPLEVALUE:
+                       if (tif->tif_flags & TIFF_PERSAMPLE)
+                               *va_arg(ap, double**) = td->td_smaxsamplevalue;
+                       else
+                       {
+                               /* libtiff historially treats this as a single value. */
+                               uint16 i;
+                               double v = td->td_smaxsamplevalue[0];
+                               for (i=1; i < td->td_samplesperpixel; ++i)
+                                       if( td->td_smaxsamplevalue[i] > v )
+                                               v = td->td_smaxsamplevalue[i];
+                               *va_arg(ap, double*) = v;
+                       }
+                       break;
+               case TIFFTAG_XRESOLUTION:
+                       *va_arg(ap, float*) = td->td_xresolution;
+                       break;
+               case TIFFTAG_YRESOLUTION:
+                       *va_arg(ap, float*) = td->td_yresolution;
+                       break;
+               case TIFFTAG_PLANARCONFIG:
+                       *va_arg(ap, uint16*) = td->td_planarconfig;
+                       break;
+               case TIFFTAG_XPOSITION:
+                       *va_arg(ap, float*) = td->td_xposition;
+                       break;
+               case TIFFTAG_YPOSITION:
+                       *va_arg(ap, float*) = td->td_yposition;
+                       break;
+               case TIFFTAG_RESOLUTIONUNIT:
+                       *va_arg(ap, uint16*) = td->td_resolutionunit;
+                       break;
+               case TIFFTAG_PAGENUMBER:
+                       *va_arg(ap, uint16*) = td->td_pagenumber[0];
+                       *va_arg(ap, uint16*) = td->td_pagenumber[1];
+                       break;
+               case TIFFTAG_HALFTONEHINTS:
+                       *va_arg(ap, uint16*) = td->td_halftonehints[0];
+                       *va_arg(ap, uint16*) = td->td_halftonehints[1];
+                       break;
+               case TIFFTAG_COLORMAP:
+                       *va_arg(ap, uint16**) = td->td_colormap[0];
+                       *va_arg(ap, uint16**) = td->td_colormap[1];
+                       *va_arg(ap, uint16**) = td->td_colormap[2];
+                       break;
+               case TIFFTAG_STRIPOFFSETS:
+               case TIFFTAG_TILEOFFSETS:
+                       _TIFFFillStriles( tif );
+                       *va_arg(ap, uint64**) = td->td_stripoffset;
+                       break;
+               case TIFFTAG_STRIPBYTECOUNTS:
+               case TIFFTAG_TILEBYTECOUNTS:
+                       _TIFFFillStriles( tif );
+                       *va_arg(ap, uint64**) = td->td_stripbytecount;
+                       break;
+               case TIFFTAG_MATTEING:
+                       *va_arg(ap, uint16*) =
+                           (td->td_extrasamples == 1 &&
+                           td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
+                       break;
+               case TIFFTAG_EXTRASAMPLES:
+                       *va_arg(ap, uint16*) = td->td_extrasamples;
+                       *va_arg(ap, uint16**) = td->td_sampleinfo;
+                       break;
+               case TIFFTAG_TILEWIDTH:
+                       *va_arg(ap, uint32*) = td->td_tilewidth;
+                       break;
+               case TIFFTAG_TILELENGTH:
+                       *va_arg(ap, uint32*) = td->td_tilelength;
+                       break;
+               case TIFFTAG_TILEDEPTH:
+                       *va_arg(ap, uint32*) = td->td_tiledepth;
+                       break;
+               case TIFFTAG_DATATYPE:
+                       switch (td->td_sampleformat) {
+                               case SAMPLEFORMAT_UINT:
+                                       *va_arg(ap, uint16*) = DATATYPE_UINT;
+                                       break;
+                               case SAMPLEFORMAT_INT:
+                                       *va_arg(ap, uint16*) = DATATYPE_INT;
+                                       break;
+                               case SAMPLEFORMAT_IEEEFP:
+                                       *va_arg(ap, uint16*) = DATATYPE_IEEEFP;
+                                       break;
+                               case SAMPLEFORMAT_VOID:
+                                       *va_arg(ap, uint16*) = DATATYPE_VOID;
+                                       break;
+                       }
+                       break;
+               case TIFFTAG_SAMPLEFORMAT:
+                       *va_arg(ap, uint16*) = td->td_sampleformat;
+                       break;
+               case TIFFTAG_IMAGEDEPTH:
+                       *va_arg(ap, uint32*) = td->td_imagedepth;
+                       break;
+               case TIFFTAG_SUBIFD:
+                       *va_arg(ap, uint16*) = td->td_nsubifd;
+                       *va_arg(ap, uint64**) = td->td_subifd;
+                       break;
+               case TIFFTAG_YCBCRPOSITIONING:
+                       *va_arg(ap, uint16*) = td->td_ycbcrpositioning;
+                       break;
+               case TIFFTAG_YCBCRSUBSAMPLING:
+                       *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[0];
+                       *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[1];
+                       break;
+               case TIFFTAG_TRANSFERFUNCTION:
+                       *va_arg(ap, uint16**) = td->td_transferfunction[0];
+                       if (td->td_samplesperpixel - td->td_extrasamples > 1) {
+                               *va_arg(ap, uint16**) = td->td_transferfunction[1];
+                               *va_arg(ap, uint16**) = td->td_transferfunction[2];
+                       }
+                       break;
+               case TIFFTAG_REFERENCEBLACKWHITE:
+                       *va_arg(ap, float**) = td->td_refblackwhite;
+                       break;
+               case TIFFTAG_INKNAMES:
+                       *va_arg(ap, char**) = td->td_inknames;
+                       break;
+               default:
+                       {
+                               int i;
 
-            /*
-            * Do we have a custom value?
-            */
-            ret_val = 0;
-            for (i = 0; i < td->td_customValueCount; i++) {
-               TIFFTagValue *tv = td->td_customValues + i;
+                               /*
+                                * This can happen if multiple images are open
+                                * with different codecs which have private
+                                * tags.  The global tag information table may
+                                * then have tags that are valid for one file
+                                * but not the other. If the client tries to
+                                * get a tag that is not valid for the image's
+                                * codec then we'll arrive here.
+                                */
+                               if( fip == NULL || fip->field_bit != FIELD_CUSTOM )
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata, "_TIFFVGetField",
+                                           "%s: Invalid %stag \"%s\" "
+                                           "(not supported by codec)",
+                                           tif->tif_name,
+                                           isPseudoTag(tag) ? "pseudo-" : "",
+                                           fip ? fip->field_name : "Unknown");
+                                       ret_val = 0;
+                                       break;
+                               }
 
-               if (tv->info->field_tag != tag)
-                       continue;
-                
-               if (fip->field_passcount) {
-                       if (fip->field_readcount == TIFF_VARIABLE2) 
-                               *va_arg(ap, uint32*) = (uint32)tv->count;
-                       else    /* Assume TIFF_VARIABLE */
-                               *va_arg(ap, uint16*) = (uint16)tv->count;
-                       *va_arg(ap, void **) = tv->value;
-                       ret_val = 1;
-                } else {
-                       if ((fip->field_type == TIFF_ASCII
-                           || fip->field_readcount == TIFF_VARIABLE
-                           || fip->field_readcount == TIFF_VARIABLE2
-                           || fip->field_readcount == TIFF_SPP
-                           || tv->count > 1)
-                           && fip->field_tag != TIFFTAG_PAGENUMBER
-                           && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                           && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                           && fip->field_tag != TIFFTAG_DOTRANGE) {
-                               *va_arg(ap, void **) = tv->value;
-                               ret_val = 1;
-                       } else {
-                           int j;
-                           char *val = (char *)tv->value;
+                               /*
+                                * Do we have a custom value?
+                                */
+                               ret_val = 0;
+                               for (i = 0; i < td->td_customValueCount; i++) {
+                                       TIFFTagValue *tv = td->td_customValues + i;
 
-                           for (j = 0; j < tv->count;
-                                j++, val += _TIFFDataSize(tv->info->field_type)) {
-                               switch (fip->field_type) {
-                                       case TIFF_BYTE:
-                                       case TIFF_UNDEFINED:
-                                               *va_arg(ap, uint8*) =
-                                                       *(uint8 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_SBYTE:
-                                               *va_arg(ap, int8*) =
-                                                       *(int8 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_SHORT:
-                                               *va_arg(ap, uint16*) =
-                                                       *(uint16 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_SSHORT:
-                                               *va_arg(ap, int16*) =
-                                                       *(int16 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_LONG:
-                                       case TIFF_IFD:
-                                               *va_arg(ap, uint32*) =
-                                                       *(uint32 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_SLONG:
-                                               *va_arg(ap, int32*) =
-                                                       *(int32 *)val;
-                                               ret_val = 1;
-                                               break;
-                                       case TIFF_RATIONAL:
-                                       case TIFF_SRATIONAL:
-                                       case TIFF_FLOAT:
-                                               *va_arg(ap, float*) =
-                                                       *(float *)val;
+                                       if (tv->info->field_tag != tag)
+                                               continue;
+
+                                       if (fip->field_passcount) {
+                                               if (fip->field_readcount == TIFF_VARIABLE2)
+                                                       *va_arg(ap, uint32*) = (uint32)tv->count;
+                                               else  /* Assume TIFF_VARIABLE */
+                                                       *va_arg(ap, uint16*) = (uint16)tv->count;
+                                               *va_arg(ap, void **) = tv->value;
                                                ret_val = 1;
-                                               break;
-                                       case TIFF_DOUBLE:
-                                               *va_arg(ap, double*) =
-                                                       *(double *)val;
+                                       } else if (fip->field_tag == TIFFTAG_DOTRANGE
+                                                  && strcmp(fip->field_name,"DotRange") == 0) {
+                                               /* TODO: This is an evil exception and should not have been
+                                                  handled this way ... likely best if we move it into
+                                                  the directory structure with an explicit field in 
+                                                  libtiff 4.1 and assign it a FIELD_ value */
+                                               *va_arg(ap, uint16*) = ((uint16 *)tv->value)[0];
+                                               *va_arg(ap, uint16*) = ((uint16 *)tv->value)[1];
                                                ret_val = 1;
-                                               break;
-                                       default:
-                                               ret_val = 0;
-                                               break;
+                                       } else {
+                                               if (fip->field_type == TIFF_ASCII
+                                                   || fip->field_readcount == TIFF_VARIABLE
+                                                   || fip->field_readcount == TIFF_VARIABLE2
+                                                   || fip->field_readcount == TIFF_SPP
+                                                   || tv->count > 1) {
+                                                       *va_arg(ap, void **) = tv->value;
+                                                       ret_val = 1;
+                                               } else {
+                                                       char *val = (char *)tv->value;
+                                                       assert( tv->count == 1 );
+                                                       switch (fip->field_type) {
+                                                       case TIFF_BYTE:
+                                                       case TIFF_UNDEFINED:
+                                                               *va_arg(ap, uint8*) =
+                                                                       *(uint8 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SBYTE:
+                                                               *va_arg(ap, int8*) =
+                                                                       *(int8 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SHORT:
+                                                               *va_arg(ap, uint16*) =
+                                                                       *(uint16 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SSHORT:
+                                                               *va_arg(ap, int16*) =
+                                                                       *(int16 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_LONG:
+                                                       case TIFF_IFD:
+                                                               *va_arg(ap, uint32*) =
+                                                                       *(uint32 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SLONG:
+                                                               *va_arg(ap, int32*) =
+                                                                       *(int32 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_LONG8:
+                                                       case TIFF_IFD8:
+                                                               *va_arg(ap, uint64*) =
+                                                                       *(uint64 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_SLONG8:
+                                                               *va_arg(ap, int64*) =
+                                                                       *(int64 *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_RATIONAL:
+                                                       case TIFF_SRATIONAL:
+                                                       case TIFF_FLOAT:
+                                                               *va_arg(ap, float*) =
+                                                                       *(float *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       case TIFF_DOUBLE:
+                                                               *va_arg(ap, double*) =
+                                                                       *(double *)val;
+                                                               ret_val = 1;
+                                                               break;
+                                                       default:
+                                                               ret_val = 0;
+                                                               break;
+                                                       }
+                                               }
+                                       }
+                                       break;
                                }
-                           }
                        }
-                }
-               break;
-            }
-        }
-    }
-    return(ret_val);
+       }
+       return(ret_val);
 }
 
 /*
@@ -922,7 +1129,7 @@ _TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
  * internal directory structure.
  */
 int
-TIFFGetField(TIFF* tif, ttag_t tag, ...)
+TIFFGetField(TIFF* tif, uint32 tag, ...)
 {
        int status;
        va_list ap;
@@ -940,9 +1147,9 @@ TIFFGetField(TIFF* tif, ttag_t tag, ...)
  * top of the library.
  */
 int
-TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
+TIFFVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
-       const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
+       const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY);
        return (fip && (isPseudoTag(tag) || TIFFFieldSet(tif, fip->field_bit)) ?
            (*tif->tif_tagmethods.vgetfield)(tif, tag, ap) : 0);
 }
@@ -964,12 +1171,15 @@ TIFFFreeDirectory(TIFF* tif)
        int            i;
 
        _TIFFmemset(td->td_fieldsset, 0, FIELD_SETLONGS);
+       CleanupField(td_sminsamplevalue);
+       CleanupField(td_smaxsamplevalue);
        CleanupField(td_colormap[0]);
        CleanupField(td_colormap[1]);
        CleanupField(td_colormap[2]);
        CleanupField(td_sampleinfo);
        CleanupField(td_subifd);
        CleanupField(td_inknames);
+       CleanupField(td_refblackwhite);
        CleanupField(td_transferfunction[0]);
        CleanupField(td_transferfunction[1]);
        CleanupField(td_transferfunction[2]);
@@ -986,6 +1196,11 @@ TIFFFreeDirectory(TIFF* tif)
 
        td->td_customValueCount = 0;
        CleanupField(td_customValues);
+
+#if defined(DEFER_STRILE_LOAD)
+        _TIFFmemset( &(td->td_stripoffset_entry), 0, sizeof(TIFFDirEntry));
+        _TIFFmemset( &(td->td_stripbytecount_entry), 0, sizeof(TIFFDirEntry));
+#endif        
 }
 #undef CleanupField
 
@@ -1012,14 +1227,43 @@ TIFFSetTagExtender(TIFFExtendProc extender)
 int
 TIFFCreateDirectory(TIFF* tif)
 {
-    TIFFDefaultDirectory(tif);
-    tif->tif_diroff = 0;
-    tif->tif_nextdiroff = 0;
-    tif->tif_curoff = 0;
-    tif->tif_row = (uint32) -1;
-    tif->tif_curstrip = (tstrip_t) -1;
-
-    return 0;
+       TIFFDefaultDirectory(tif);
+       tif->tif_diroff = 0;
+       tif->tif_nextdiroff = 0;
+       tif->tif_curoff = 0;
+       tif->tif_row = (uint32) -1;
+       tif->tif_curstrip = (uint32) -1;
+
+       return 0;
+}
+
+int
+TIFFCreateCustomDirectory(TIFF* tif, const TIFFFieldArray* infoarray)
+{
+       TIFFDefaultDirectory(tif);
+
+       /*
+        * Reset the field definitions to match the application provided list. 
+        * Hopefully TIFFDefaultDirectory() won't have done anything irreversable
+        * based on it's assumption this is an image directory.
+        */
+       _TIFFSetupFields(tif, infoarray);
+
+       tif->tif_diroff = 0;
+       tif->tif_nextdiroff = 0;
+       tif->tif_curoff = 0;
+       tif->tif_row = (uint32) -1;
+       tif->tif_curstrip = (uint32) -1;
+
+       return 0;
+}
+
+int
+TIFFCreateEXIFDirectory(TIFF* tif)
+{
+       const TIFFFieldArray* exifFieldArray;
+       exifFieldArray = _TIFFGetExifFields();
+       return TIFFCreateCustomDirectory(tif, exifFieldArray);
 }
 
 /*
@@ -1029,11 +1273,10 @@ int
 TIFFDefaultDirectory(TIFF* tif)
 {
        register TIFFDirectory* td = &tif->tif_dir;
+       const TIFFFieldArray* tiffFieldArray;
 
-       size_t tiffFieldInfoCount;
-       const TIFFFieldInfo *tiffFieldInfo =
-               _TIFFGetFieldInfo(&tiffFieldInfoCount);
-       _TIFFSetupFieldInfo(tif, tiffFieldInfo, tiffFieldInfoCount);
+       tiffFieldArray = _TIFFGetFields();
+       _TIFFSetupFields(tif, tiffFieldArray);   
 
        _TIFFmemset(td, 0, sizeof (*td));
        td->td_fillorder = FILLORDER_MSB2LSB;
@@ -1045,16 +1288,16 @@ TIFFDefaultDirectory(TIFF* tif)
        td->td_tilewidth = 0;
        td->td_tilelength = 0;
        td->td_tiledepth = 1;
-       td->td_stripbytecountsorted = 1; /* Our own arrays always sorted. */
+       td->td_stripbytecountsorted = 1; /* Our own arrays always sorted. */  
        td->td_resolutionunit = RESUNIT_INCH;
        td->td_sampleformat = SAMPLEFORMAT_UINT;
        td->td_imagedepth = 1;
        td->td_ycbcrsubsampling[0] = 2;
        td->td_ycbcrsubsampling[1] = 2;
        td->td_ycbcrpositioning = YCBCRPOSITION_CENTERED;
-       tif->tif_postdecode = _TIFFNoPostDecode;
-        tif->tif_foundfield = NULL;
-       tif->tif_tagmethods.vsetfield = _TIFFVSetField;
+       tif->tif_postdecode = _TIFFNoPostDecode;  
+       tif->tif_foundfield = NULL;
+       tif->tif_tagmethods.vsetfield = _TIFFVSetField;  
        tif->tif_tagmethods.vgetfield = _TIFFVGetField;
        tif->tif_tagmethods.printdir = NULL;
        /*
@@ -1074,86 +1317,169 @@ TIFFDefaultDirectory(TIFF* tif)
         */
        tif->tif_flags &= ~TIFF_DIRTYDIRECT;
 
-        /*
-         * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=19
-         * we clear the ISTILED flag when setting up a new directory.
-         * Should we also be clearing stuff like INSUBIFD?
-         */
-        tif->tif_flags &= ~TIFF_ISTILED;
+       /*
+        * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=19
+        * we clear the ISTILED flag when setting up a new directory.
+        * Should we also be clearing stuff like INSUBIFD?
+        */
+       tif->tif_flags &= ~TIFF_ISTILED;
 
        return (1);
 }
 
 static int
-TIFFAdvanceDirectory(TIFF* tif, uint32* nextdir, toff_t* off)
+TIFFAdvanceDirectory(TIFF* tif, uint64* nextdir, uint64* off)
 {
-    static const char module[] = "TIFFAdvanceDirectory";
-    uint16 dircount;
-    if (isMapped(tif))
-    {
-        toff_t poff=*nextdir;
-        if (poff+sizeof(uint16) > tif->tif_size)
-        {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
-                      tif->tif_name);
-            return (0);
-        }
-        _TIFFmemcpy(&dircount, tif->tif_base+poff, sizeof (uint16));
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabShort(&dircount);
-        poff+=sizeof (uint16)+dircount*sizeof (TIFFDirEntry);
-        if (off != NULL)
-            *off = poff;
-        if (((toff_t) (poff+sizeof (uint32))) > tif->tif_size)
-        {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
-                      tif->tif_name);
-            return (0);
-        }
-        _TIFFmemcpy(nextdir, tif->tif_base+poff, sizeof (uint32));
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabLong(nextdir);
-        return (1);
-    }
-    else
-    {
-        if (!SeekOK(tif, *nextdir) ||
-            !ReadOK(tif, &dircount, sizeof (uint16))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
-                      tif->tif_name);
-            return (0);
-        }
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabShort(&dircount);
-        if (off != NULL)
-            *off = TIFFSeekFile(tif,
-                                dircount*sizeof (TIFFDirEntry), SEEK_CUR);
-        else
-            (void) TIFFSeekFile(tif,
-                                dircount*sizeof (TIFFDirEntry), SEEK_CUR);
-        if (!ReadOK(tif, nextdir, sizeof (uint32))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
-                      tif->tif_name);
-            return (0);
-        }
-        if (tif->tif_flags & TIFF_SWAB)
-            TIFFSwabLong(nextdir);
-        return (1);
-    }
+       static const char module[] = "TIFFAdvanceDirectory";
+       if (isMapped(tif))
+       {
+               uint64 poff=*nextdir;
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       tmsize_t poffa,poffb,poffc,poffd;
+                       uint16 dircount;
+                       uint32 nextdir32;
+                       poffa=(tmsize_t)poff;
+                       poffb=poffa+sizeof(uint16);
+                       if (((uint64)poffa!=poff)||(poffb<poffa)||(poffb<(tmsize_t)sizeof(uint16))||(poffb>tif->tif_size))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Error fetching directory count");
+                               return(0);
+                       }
+                       _TIFFmemcpy(&dircount,tif->tif_base+poffa,sizeof(uint16));
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabShort(&dircount);
+                       poffc=poffb+dircount*12;
+                       poffd=poffc+sizeof(uint32);
+                       if ((poffc<poffb)||(poffc<dircount*12)||(poffd<poffc)||(poffd<(tmsize_t)sizeof(uint32))||(poffd>tif->tif_size))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Error fetching directory link");
+                               return(0);
+                       }
+                       if (off!=NULL)
+                               *off=(uint64)poffc;
+                       _TIFFmemcpy(&nextdir32,tif->tif_base+poffc,sizeof(uint32));
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong(&nextdir32);
+                       *nextdir=nextdir32;
+               }
+               else
+               {
+                       tmsize_t poffa,poffb,poffc,poffd;
+                       uint64 dircount64;
+                       uint16 dircount16;
+                       poffa=(tmsize_t)poff;
+                       poffb=poffa+sizeof(uint64);
+                       if (((uint64)poffa!=poff)||(poffb<poffa)||(poffb<(tmsize_t)sizeof(uint64))||(poffb>tif->tif_size))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Error fetching directory count");
+                               return(0);
+                       }
+                       _TIFFmemcpy(&dircount64,tif->tif_base+poffa,sizeof(uint64));
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8(&dircount64);
+                       if (dircount64>0xFFFF)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Sanity check on directory count failed");
+                               return(0);
+                       }
+                       dircount16=(uint16)dircount64;
+                       poffc=poffb+dircount16*20;
+                       poffd=poffc+sizeof(uint64);
+                       if ((poffc<poffb)||(poffc<dircount16*20)||(poffd<poffc)||(poffd<(tmsize_t)sizeof(uint64))||(poffd>tif->tif_size))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Error fetching directory link");
+                               return(0);
+                       }
+                       if (off!=NULL)
+                               *off=(uint64)poffc;
+                       _TIFFmemcpy(nextdir,tif->tif_base+poffc,sizeof(uint64));
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8(nextdir);
+               }
+               return(1);
+       }
+       else
+       {
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       uint16 dircount;
+                       uint32 nextdir32;
+                       if (!SeekOK(tif, *nextdir) ||
+                           !ReadOK(tif, &dircount, sizeof (uint16))) {
+                               TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
+                                   tif->tif_name);
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabShort(&dircount);
+                       if (off != NULL)
+                               *off = TIFFSeekFile(tif,
+                                   dircount*12, SEEK_CUR);
+                       else
+                               (void) TIFFSeekFile(tif,
+                                   dircount*12, SEEK_CUR);
+                       if (!ReadOK(tif, &nextdir32, sizeof (uint32))) {
+                               TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
+                                   tif->tif_name);
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong(&nextdir32);
+                       *nextdir=nextdir32;
+               }
+               else
+               {
+                       uint64 dircount64;
+                       uint16 dircount16;
+                       if (!SeekOK(tif, *nextdir) ||
+                           !ReadOK(tif, &dircount64, sizeof (uint64))) {
+                               TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
+                                   tif->tif_name);
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&dircount64);
+                       if (dircount64>0xFFFF)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count");
+                               return(0);
+                       }
+                       dircount16 = (uint16)dircount64;
+                       if (off != NULL)
+                               *off = TIFFSeekFile(tif,
+                                   dircount16*20, SEEK_CUR);
+                       else
+                               (void) TIFFSeekFile(tif,
+                                   dircount16*20, SEEK_CUR);
+                       if (!ReadOK(tif, nextdir, sizeof (uint64))) {
+                               TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
+                                   tif->tif_name);
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(nextdir);
+               }
+               return (1);
+       }
 }
 
 /*
  * Count the number of directories in a file.
  */
-tdir_t
+uint16
 TIFFNumberOfDirectories(TIFF* tif)
 {
-    toff_t nextdir = tif->tif_header.tiff_diroff;
-    tdir_t n = 0;
-    
-    while (nextdir != 0 && TIFFAdvanceDirectory(tif, &nextdir, NULL))
-        n++;
-    return (n);
+       uint64 nextdir;
+       uint16 n;
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+               nextdir = tif->tif_header.classic.tiff_diroff;
+       else
+               nextdir = tif->tif_header.big.tiff_diroff;
+       n = 0;
+       while (nextdir != 0 && TIFFAdvanceDirectory(tif, &nextdir, NULL))
+               n++;
+       return (n);
 }
 
 /*
@@ -1161,12 +1487,15 @@ TIFFNumberOfDirectories(TIFF* tif)
  * NB: Directories are numbered starting at 0.
  */
 int
-TIFFSetDirectory(TIFF* tif, tdir_t dirn)
+TIFFSetDirectory(TIFF* tif, uint16 dirn)
 {
-       toff_t nextdir;
-       tdir_t n;
+       uint64 nextdir;
+       uint16 n;
 
-       nextdir = tif->tif_header.tiff_diroff;
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+               nextdir = tif->tif_header.classic.tiff_diroff;
+       else
+               nextdir = tif->tif_header.big.tiff_diroff;
        for (n = dirn; n > 0 && nextdir != 0; n--)
                if (!TIFFAdvanceDirectory(tif, &nextdir, NULL))
                        return (0);
@@ -1192,7 +1521,7 @@ TIFFSetDirectory(TIFF* tif, tdir_t dirn)
  * the SubIFD tag (e.g. thumbnail images).
  */
 int
-TIFFSetSubDirectory(TIFF* tif, uint32 diroff)
+TIFFSetSubDirectory(TIFF* tif, uint64 diroff)
 {
        tif->tif_nextdiroff = diroff;
        /*
@@ -1206,7 +1535,7 @@ TIFFSetSubDirectory(TIFF* tif, uint32 diroff)
 /*
  * Return file offset of the current directory.
  */
-uint32
+uint64
 TIFFCurrentDirOffset(TIFF* tif)
 {
        return (tif->tif_diroff);
@@ -1226,12 +1555,12 @@ TIFFLastDirectory(TIFF* tif)
  * Unlink the specified directory from the directory chain.
  */
 int
-TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
+TIFFUnlinkDirectory(TIFF* tif, uint16 dirn)
 {
        static const char module[] = "TIFFUnlinkDirectory";
-       toff_t nextdir;
-       toff_t off;
-       tdir_t n;
+       uint64 nextdir;
+       uint64 off;
+       uint16 n;
 
        if (tif->tif_mode == O_RDONLY) {
                TIFFErrorExt(tif->tif_clientdata, module,
@@ -1243,8 +1572,16 @@ TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
         * to unlink and nab the offset of the link
         * field we'll need to patch.
         */
-       nextdir = tif->tif_header.tiff_diroff;
-       off = sizeof (uint16) + sizeof (uint16);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               nextdir = tif->tif_header.classic.tiff_diroff;
+               off = 4;
+       }
+       else
+       {
+               nextdir = tif->tif_header.big.tiff_diroff;
+               off = 8;
+       }
        for (n = dirn-1; n > 0; n--) {
                if (nextdir == 0) {
                        TIFFErrorExt(tif->tif_clientdata, module, "Directory %d does not exist", dirn);
@@ -1265,11 +1602,26 @@ TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
         * that follows.
         */
        (void) TIFFSeekFile(tif, off, SEEK_SET);
-       if (tif->tif_flags & TIFF_SWAB)
-               TIFFSwabLong(&nextdir);
-       if (!WriteOK(tif, &nextdir, sizeof (uint32))) {
-               TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-               return (0);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               uint32 nextdir32;
+               nextdir32=(uint32)nextdir;
+               assert((uint64)nextdir32==nextdir);
+               if (tif->tif_flags & TIFF_SWAB)
+                       TIFFSwabLong(&nextdir32);
+               if (!WriteOK(tif, &nextdir32, sizeof (uint32))) {
+                       TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
+                       return (0);
+               }
+       }
+       else
+       {
+               if (tif->tif_flags & TIFF_SWAB)
+                       TIFFSwabLong8(&nextdir);
+               if (!WriteOK(tif, &nextdir, sizeof (uint64))) {
+                       TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
+                       return (0);
+               }
        }
        /*
         * Leave directory state setup safely.  We don't have
@@ -1283,68 +1635,25 @@ TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
                _TIFFfree(tif->tif_rawdata);
                tif->tif_rawdata = NULL;
                tif->tif_rawcc = 0;
+                tif->tif_rawdataoff = 0;
+                tif->tif_rawdataloaded = 0;
        }
-       tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP|TIFF_POSTENCODE);
+       tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP|TIFF_POSTENCODE|TIFF_BUF4WRITE);
        TIFFFreeDirectory(tif);
        TIFFDefaultDirectory(tif);
        tif->tif_diroff = 0;                    /* force link on next write */
        tif->tif_nextdiroff = 0;                /* next write must be at end */
        tif->tif_curoff = 0;
        tif->tif_row = (uint32) -1;
-       tif->tif_curstrip = (tstrip_t) -1;
+       tif->tif_curstrip = (uint32) -1;
        return (1);
 }
 
-/*                     [BFC]
- *
- * Author: Bruce Cameron <cameron@petris.com>
- *
- * Set a table of tags that are to be replaced during directory process by the
- * 'IGNORE' state - or return TRUE/FALSE for the requested tag such that
- * 'ReadDirectory' can use the stored information.
- *
- * FIXME: this is never used properly. Should be removed in the future.
- */
-int
-TIFFReassignTagToIgnore (enum TIFFIgnoreSense task, int TIFFtagID)
-{
-    static int TIFFignoretags [FIELD_LAST];
-    static int tagcount = 0 ;
-    int                i;                                      /* Loop index */
-    int                j;                                      /* Loop index */
-
-    switch (task)
-    {
-      case TIS_STORE:
-        if ( tagcount < (FIELD_LAST - 1) )
-        {
-            for ( j = 0 ; j < tagcount ; ++j )
-            {                                  /* Do not add duplicate tag */
-                if ( TIFFignoretags [j] == TIFFtagID )
-                    return (TRUE) ;
-            }
-            TIFFignoretags [tagcount++] = TIFFtagID ;
-            return (TRUE) ;
-        }
-        break ;
-        
-      case TIS_EXTRACT:
-        for ( i = 0 ; i < tagcount ; ++i )
-        {
-            if ( TIFFignoretags [i] == TIFFtagID )
-                return (TRUE) ;
-        }
-        break;
-        
-      case TIS_EMPTY:
-        tagcount = 0 ;                 /* Clear the list */
-        return (TRUE) ;
-        
-      default:
-        break;
-    }
-    
-    return (FALSE);
-}
-
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index d51158ce336beb635c39eea041e46e8d03839dd8..e12b44b2f13661ec0f561e87b0dd7664c95b3d0d 100644 (file)
  * ``Library-private'' Directory-related Definitions.
  */
 
+typedef struct {
+       const TIFFField *info;
+       int             count;
+       void           *value;
+} TIFFTagValue;
+
+/*
+ * TIFF Image File Directories are comprised of a table of field
+ * descriptors of the form shown below.  The table is sorted in
+ * ascending order by tag.  The values associated with each entry are
+ * disjoint and may appear anywhere in the file (so long as they are
+ * placed on a word boundary).
+ *
+ * If the value is 4 bytes or less, in ClassicTIFF, or 8 bytes or less in
+ * BigTIFF, then it is placed in the offset field to save space. If so,
+ * it is left-justified in the offset field.
+ */
+typedef struct {
+       uint16 tdir_tag;        /* see below */
+       uint16 tdir_type;       /* data type; see below */
+       uint64 tdir_count;      /* number of items; length in spec */
+       union {
+               uint16 toff_short;
+               uint32 toff_long;
+               uint64 toff_long8;
+       } tdir_offset;          /* either offset or the data itself if fits */
+} TIFFDirEntry;
+
 /*
  * Internal format of a TIFF directory entry.
  */
-typedef        struct {
-#define        FIELD_SETLONGS  4
+typedef struct {
+#define FIELD_SETLONGS 4
        /* bit vector of fields that are set */
-       unsigned long   td_fieldsset[FIELD_SETLONGS];
-
-       uint32  td_imagewidth, td_imagelength, td_imagedepth;
-       uint32  td_tilewidth, td_tilelength, td_tiledepth;
-       uint32  td_subfiletype;
-       uint16  td_bitspersample;
-       uint16  td_sampleformat;
-       uint16  td_compression;
-       uint16  td_photometric;
-       uint16  td_threshholding;
-       uint16  td_fillorder;
-       uint16  td_orientation;
-       uint16  td_samplesperpixel;
-       uint32  td_rowsperstrip;
-       uint16  td_minsamplevalue, td_maxsamplevalue;
-       double  td_sminsamplevalue, td_smaxsamplevalue;
-       float   td_xresolution, td_yresolution;
-       uint16  td_resolutionunit;
-       uint16  td_planarconfig;
-       float   td_xposition, td_yposition;
-       uint16  td_pagenumber[2];
-       uint16* td_colormap[3];
-       uint16  td_halftonehints[2];
-       uint16  td_extrasamples;
-       uint16* td_sampleinfo;
-       tstrip_t td_stripsperimage;
-       tstrip_t td_nstrips;            /* size of offset & bytecount arrays */
-       uint32* td_stripoffset;
-       uint32* td_stripbytecount;
-       int     td_stripbytecountsorted; /* is the bytecount array sorted ascending? */
-       uint16  td_nsubifd;
-       uint32* td_subifd;
+       unsigned long td_fieldsset[FIELD_SETLONGS];
+
+       uint32  td_imagewidth, td_imagelength, td_imagedepth;
+       uint32  td_tilewidth, td_tilelength, td_tiledepth;
+       uint32  td_subfiletype;
+       uint16  td_bitspersample;
+       uint16  td_sampleformat;
+       uint16  td_compression;
+       uint16  td_photometric;
+       uint16  td_threshholding;
+       uint16  td_fillorder;
+       uint16  td_orientation;
+       uint16  td_samplesperpixel;
+       uint32  td_rowsperstrip;
+       uint16  td_minsamplevalue, td_maxsamplevalue;
+       double* td_sminsamplevalue;
+       double* td_smaxsamplevalue;
+       float   td_xresolution, td_yresolution;
+       uint16  td_resolutionunit;
+       uint16  td_planarconfig;
+       float   td_xposition, td_yposition;
+       uint16  td_pagenumber[2];
+       uint16* td_colormap[3];
+       uint16  td_halftonehints[2];
+       uint16  td_extrasamples;
+       uint16* td_sampleinfo;
+       /* even though the name is misleading, td_stripsperimage is the number
+        * of striles (=strips or tiles) per plane, and td_nstrips the total
+        * number of striles */
+       uint32  td_stripsperimage;  
+       uint32  td_nstrips;              /* size of offset & bytecount arrays */
+       uint64* td_stripoffset;
+       uint64* td_stripbytecount;
+       int     td_stripbytecountsorted; /* is the bytecount array sorted ascending? */
+#if defined(DEFER_STRILE_LOAD)
+        TIFFDirEntry td_stripoffset_entry;    /* for deferred loading */
+        TIFFDirEntry td_stripbytecount_entry; /* for deferred loading */
+#endif
+       uint16  td_nsubifd;
+       uint64* td_subifd;
        /* YCbCr parameters */
-       uint16  td_ycbcrsubsampling[2];
-       uint16  td_ycbcrpositioning;
+       uint16  td_ycbcrsubsampling[2];
+       uint16  td_ycbcrpositioning;
        /* Colorimetry parameters */
-       uint16* td_transferfunction[3];
+       uint16* td_transferfunction[3];
+       float*  td_refblackwhite;
        /* CMYK parameters */
-       int     td_inknameslen;
-       char*   td_inknames;
+       int     td_inknameslen;
+       char*   td_inknames;
 
        int     td_customValueCount;
         TIFFTagValue *td_customValues;
 } TIFFDirectory;
 
 /*
- * Field flags used to indicate fields that have
- * been set in a directory, and to reference fields
- * when manipulating a directory.
+ * Field flags used to indicate fields that have been set in a directory, and
+ * to reference fields when manipulating a directory.
  */
 
 /*
- * FIELD_IGNORE is used to signify tags that are to
- * be processed but otherwise ignored.  This permits
- * antiquated tags to be quietly read and discarded.
- * Note that a bit *is* allocated for ignored tags;
- * this is understood by the directory reading logic
- * which uses this fact to avoid special-case handling
- */ 
-#define        FIELD_IGNORE                    0
+ * FIELD_IGNORE is used to signify tags that are to be processed but otherwise
+ * ignored.  This permits antiquated tags to be quietly read and discarded.
+ * Note that a bit *is* allocated for ignored tags; this is understood by the
+ * directory reading logic which uses this fact to avoid special-case handling
+ */
+#define FIELD_IGNORE                   0
 
 /* multi-item fields */
-#define        FIELD_IMAGEDIMENSIONS           1
-#define FIELD_TILEDIMENSIONS           2
-#define        FIELD_RESOLUTION                3
-#define        FIELD_POSITION                  4
+#define FIELD_IMAGEDIMENSIONS          1
+#define FIELD_TILEDIMENSIONS           2
+#define FIELD_RESOLUTION               3
+#define FIELD_POSITION                 4
 
 /* single-item fields */
-#define        FIELD_SUBFILETYPE               5
-#define        FIELD_BITSPERSAMPLE             6
-#define        FIELD_COMPRESSION               7
-#define        FIELD_PHOTOMETRIC               8
-#define        FIELD_THRESHHOLDING             9
-#define        FIELD_FILLORDER                 10
-#define        FIELD_ORIENTATION               15
-#define        FIELD_SAMPLESPERPIXEL           16
-#define        FIELD_ROWSPERSTRIP              17
-#define        FIELD_MINSAMPLEVALUE            18
-#define        FIELD_MAXSAMPLEVALUE            19
-#define        FIELD_PLANARCONFIG              20
-#define        FIELD_RESOLUTIONUNIT            22
-#define        FIELD_PAGENUMBER                23
-#define        FIELD_STRIPBYTECOUNTS           24
-#define        FIELD_STRIPOFFSETS              25
-#define        FIELD_COLORMAP                  26
-#define        FIELD_EXTRASAMPLES              31
-#define FIELD_SAMPLEFORMAT             32
-#define        FIELD_SMINSAMPLEVALUE           33
-#define        FIELD_SMAXSAMPLEVALUE           34
-#define FIELD_IMAGEDEPTH               35
-#define FIELD_TILEDEPTH                        36
-#define        FIELD_HALFTONEHINTS             37
-#define FIELD_YCBCRSUBSAMPLING         39
-#define FIELD_YCBCRPOSITIONING         40
-#define        FIELD_TRANSFERFUNCTION          44
-#define        FIELD_INKNAMES                  46
-#define        FIELD_SUBIFD                    49
-/*      FIELD_CUSTOM (see tiffio.h)     65 */
+#define FIELD_SUBFILETYPE              5
+#define FIELD_BITSPERSAMPLE            6
+#define FIELD_COMPRESSION              7
+#define FIELD_PHOTOMETRIC              8
+#define FIELD_THRESHHOLDING            9
+#define FIELD_FILLORDER                10
+#define FIELD_ORIENTATION              15
+#define FIELD_SAMPLESPERPIXEL          16
+#define FIELD_ROWSPERSTRIP             17
+#define FIELD_MINSAMPLEVALUE           18
+#define FIELD_MAXSAMPLEVALUE           19
+#define FIELD_PLANARCONFIG             20
+#define FIELD_RESOLUTIONUNIT           22
+#define FIELD_PAGENUMBER               23
+#define FIELD_STRIPBYTECOUNTS          24
+#define FIELD_STRIPOFFSETS             25
+#define FIELD_COLORMAP                 26
+#define FIELD_EXTRASAMPLES             31
+#define FIELD_SAMPLEFORMAT             32
+#define FIELD_SMINSAMPLEVALUE          33
+#define FIELD_SMAXSAMPLEVALUE          34
+#define FIELD_IMAGEDEPTH               35
+#define FIELD_TILEDEPTH                36
+#define FIELD_HALFTONEHINTS            37
+#define FIELD_YCBCRSUBSAMPLING         39
+#define FIELD_YCBCRPOSITIONING         40
+#define        FIELD_REFBLACKWHITE            41
+#define FIELD_TRANSFERFUNCTION         44
+#define FIELD_INKNAMES                 46
+#define FIELD_SUBIFD                   49
+/*      FIELD_CUSTOM (see tiffio.h)    65 */
 /* end of support for well-known tags; codec-private tags follow */
-#define        FIELD_CODEC                     66      /* base of codec-private tags */
+#define FIELD_CODEC                    66  /* base of codec-private tags */
 
 
 /*
- * Pseudo-tags don't normally need field bits since they
- * are not written to an output file (by definition).
- * The library also has express logic to always query a
- * codec for a pseudo-tag so allocating a field bit for
- * one is a waste.   If codec wants to promote the notion
- * of a pseudo-tag being ``set'' or ``unset'' then it can
- * do using internal state flags without polluting the
- * field bit space defined for real tags.
+ * Pseudo-tags don't normally need field bits since they are not written to an
+ * output file (by definition). The library also has express logic to always
+ * query a codec for a pseudo-tag so allocating a field bit for one is a
+ * waste.   If codec wants to promote the notion of a pseudo-tag being ``set''
+ * or ``unset'' then it can do using internal state flags without polluting
+ * the field bit space defined for real tags.
  */
-#define        FIELD_PSEUDO                    0
-
-#define        FIELD_LAST                      (32*FIELD_SETLONGS-1)
-
-#define        TIFFExtractData(tif, type, v) \
-    ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
-        ((v) >> (tif)->tif_typeshift[type]) & (tif)->tif_typemask[type] : \
-       (v) & (tif)->tif_typemask[type]))
-#define        TIFFInsertData(tif, type, v) \
-    ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
-        ((v) & (tif)->tif_typemask[type]) << (tif)->tif_typeshift[type] : \
-       (v) & (tif)->tif_typemask[type]))
+#define FIELD_PSEUDO                   0
 
+#define FIELD_LAST                     (32*FIELD_SETLONGS-1)
 
-#define BITn(n)                                (((unsigned long)1L)<<((n)&0x1f)) 
-#define BITFIELDn(tif, n)              ((tif)->tif_dir.td_fieldsset[(n)/32]) 
-#define TIFFFieldSet(tif, field)       (BITFIELDn(tif, field) & BITn(field)) 
+#define BITn(n)                                (((unsigned long)1L)<<((n)&0x1f))
+#define BITFIELDn(tif, n)              ((tif)->tif_dir.td_fieldsset[(n)/32])
+#define TIFFFieldSet(tif, field)       (BITFIELDn(tif, field) & BITn(field))
 #define TIFFSetFieldBit(tif, field)    (BITFIELDn(tif, field) |= BITn(field))
 #define TIFFClrFieldBit(tif, field)    (BITFIELDn(tif, field) &= ~BITn(field))
 
-#define        FieldSet(fields, f)             (fields[(f)/32] & BITn(f))
-#define        ResetFieldBit(fields, f)        (fields[(f)/32] &= ~BITn(f))
+#define FieldSet(fields, f)            (fields[(f)/32] & BITn(f))
+#define ResetFieldBit(fields, f)       (fields[(f)/32] &= ~BITn(f))
+
+typedef enum {
+       TIFF_SETGET_UNDEFINED = 0,
+       TIFF_SETGET_ASCII = 1,
+       TIFF_SETGET_UINT8 = 2,
+       TIFF_SETGET_SINT8 = 3,
+       TIFF_SETGET_UINT16 = 4,
+       TIFF_SETGET_SINT16 = 5,
+       TIFF_SETGET_UINT32 = 6,
+       TIFF_SETGET_SINT32 = 7,
+       TIFF_SETGET_UINT64 = 8,
+       TIFF_SETGET_SINT64 = 9,
+       TIFF_SETGET_FLOAT = 10,
+       TIFF_SETGET_DOUBLE = 11,
+       TIFF_SETGET_IFD8 = 12,
+       TIFF_SETGET_INT = 13,
+       TIFF_SETGET_UINT16_PAIR = 14,
+       TIFF_SETGET_C0_ASCII = 15,
+       TIFF_SETGET_C0_UINT8 = 16,
+       TIFF_SETGET_C0_SINT8 = 17,
+       TIFF_SETGET_C0_UINT16 = 18,
+       TIFF_SETGET_C0_SINT16 = 19,
+       TIFF_SETGET_C0_UINT32 = 20,
+       TIFF_SETGET_C0_SINT32 = 21,
+       TIFF_SETGET_C0_UINT64 = 22,
+       TIFF_SETGET_C0_SINT64 = 23,
+       TIFF_SETGET_C0_FLOAT = 24,
+       TIFF_SETGET_C0_DOUBLE = 25,
+       TIFF_SETGET_C0_IFD8 = 26,
+       TIFF_SETGET_C16_ASCII = 27,
+       TIFF_SETGET_C16_UINT8 = 28,
+       TIFF_SETGET_C16_SINT8 = 29,
+       TIFF_SETGET_C16_UINT16 = 30,
+       TIFF_SETGET_C16_SINT16 = 31,
+       TIFF_SETGET_C16_UINT32 = 32,
+       TIFF_SETGET_C16_SINT32 = 33,
+       TIFF_SETGET_C16_UINT64 = 34,
+       TIFF_SETGET_C16_SINT64 = 35,
+       TIFF_SETGET_C16_FLOAT = 36,
+       TIFF_SETGET_C16_DOUBLE = 37,
+       TIFF_SETGET_C16_IFD8 = 38,
+       TIFF_SETGET_C32_ASCII = 39,
+       TIFF_SETGET_C32_UINT8 = 40,
+       TIFF_SETGET_C32_SINT8 = 41,
+       TIFF_SETGET_C32_UINT16 = 42,
+       TIFF_SETGET_C32_SINT16 = 43,
+       TIFF_SETGET_C32_UINT32 = 44,
+       TIFF_SETGET_C32_SINT32 = 45,
+       TIFF_SETGET_C32_UINT64 = 46,
+       TIFF_SETGET_C32_SINT64 = 47,
+       TIFF_SETGET_C32_FLOAT = 48,
+       TIFF_SETGET_C32_DOUBLE = 49,
+       TIFF_SETGET_C32_IFD8 = 50,
+       TIFF_SETGET_OTHER = 51
+} TIFFSetGetFieldType;
 
 #if defined(__cplusplus)
 extern "C" {
 #endif
-extern const TIFFFieldInfo *_TIFFGetFieldInfo(size_t *);
-extern const TIFFFieldInfo *_TIFFGetExifFieldInfo(size_t *);
-extern void _TIFFSetupFieldInfo(TIFF*, const TIFFFieldInfo[], size_t);
-extern void _TIFFPrintFieldInfo(TIFF*, FILE*);
-extern TIFFDataType _TIFFSampleToTagType(TIFF*);
-extern  const TIFFFieldInfo* _TIFFFindOrRegisterFieldInfo( TIFF *tif,
-                                                          ttag_t tag,
-                                                          TIFFDataType dt );
-extern  TIFFFieldInfo* _TIFFCreateAnonFieldInfo( TIFF *tif, ttag_t tag,
-                                                 TIFFDataType dt );
-
-#define _TIFFMergeFieldInfo        TIFFMergeFieldInfo
-#define _TIFFFindFieldInfo         TIFFFindFieldInfo
-#define _TIFFFindFieldInfoByName    TIFFFindFieldInfoByName
-#define _TIFFFieldWithTag          TIFFFieldWithTag
-#define _TIFFFieldWithName         TIFFFieldWithName
+
+extern const TIFFFieldArray* _TIFFGetFields(void);
+extern const TIFFFieldArray* _TIFFGetExifFields(void);
+extern void _TIFFSetupFields(TIFF* tif, const TIFFFieldArray* infoarray);
+extern void _TIFFPrintFieldInfo(TIFF*, FILE*);
+
+extern int _TIFFFillStriles(TIFF*);        
+
+typedef enum {
+       tfiatImage,
+       tfiatExif,
+       tfiatOther
+} TIFFFieldArrayType;
+
+struct _TIFFFieldArray {
+       TIFFFieldArrayType type;    /* array type, will be used to determine if IFD is image and such */
+       uint32 allocated_size;      /* 0 if array is constant, other if modified by future definition extension support */
+       uint32 count;               /* number of elements in fields array */
+       TIFFField* fields;          /* actual field info */
+};
+
+struct _TIFFField {
+       uint32 field_tag;                       /* field's tag */
+       short field_readcount;                  /* read count/TIFF_VARIABLE/TIFF_SPP */
+       short field_writecount;                 /* write count/TIFF_VARIABLE */
+       TIFFDataType field_type;                /* type of associated data */
+       uint32 reserved;                        /* reserved for future extension */
+       TIFFSetGetFieldType set_field_type;     /* type to be passed to TIFFSetField */
+       TIFFSetGetFieldType get_field_type;     /* type to be passed to TIFFGetField */
+       unsigned short field_bit;               /* bit in fieldsset bit vector */
+       unsigned char field_oktochange;         /* if true, can change while writing */
+       unsigned char field_passcount;          /* if true, pass dir count on set */
+       char* field_name;                       /* ASCII name */
+       TIFFFieldArray* field_subfields;        /* if field points to child ifds, child ifd field definition array */
+};
+
+extern int _TIFFMergeFields(TIFF*, const TIFFField[], uint32);
+extern const TIFFField* _TIFFFindOrRegisterField(TIFF *, uint32, TIFFDataType);
+extern  TIFFField* _TIFFCreateAnonField(TIFF *, uint32, TIFFDataType);
 
 #if defined(__cplusplus)
 }
@@ -197,3 +298,11 @@ extern  TIFFFieldInfo* _TIFFCreateAnonFieldInfo( TIFF *tif, ttag_t tag,
 #endif /* _TIFFDIR_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 60fd39eafd8e6bdb87de9a8ff4978294ffa5aaf5..c1d4c74301d9e6b1cca2d20110127514ec8c2cd4 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
 #include <stdlib.h>
 
 /*
- * NB: NB: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
- *       If a tag can have both LONG and SHORT types then the LONG must be
- *       placed before the SHORT for writing to work properly.
+ * NOTE: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
  *
  * NOTE: The second field (field_readcount) and third field (field_writecount)
  *       sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3)
- *       and TIFFTAG_SPP (-2). The macros should be used but would throw off 
- *       the formatting of the code, so please interprete the -1, -2 and -3 
+ *       and TIFF_SPP (-2). The macros should be used but would throw off
+ *       the formatting of the code, so please interprete the -1, -2 and -3
  *       values accordingly.
  */
-static const TIFFFieldInfo
-tiffFieldInfo[] = {
-    { TIFFTAG_SUBFILETYPE,      1, 1,  TIFF_LONG,      FIELD_SUBFILETYPE,
-      1,       0,      "SubfileType" },
-/* XXX SHORT for compatibility w/ old versions of the library */
-    { TIFFTAG_SUBFILETYPE,      1, 1,  TIFF_SHORT,     FIELD_SUBFILETYPE,
-      1,       0,      "SubfileType" },
-    { TIFFTAG_OSUBFILETYPE,     1, 1,  TIFF_SHORT,     FIELD_SUBFILETYPE,
-      1,       0,      "OldSubfileType" },
-    { TIFFTAG_IMAGEWIDTH,       1, 1,  TIFF_LONG,      FIELD_IMAGEDIMENSIONS,
-      0,       0,      "ImageWidth" },
-    { TIFFTAG_IMAGEWIDTH,       1, 1,  TIFF_SHORT,     FIELD_IMAGEDIMENSIONS,
-      0,       0,      "ImageWidth" },
-    { TIFFTAG_IMAGELENGTH,      1, 1,  TIFF_LONG,      FIELD_IMAGEDIMENSIONS,
-      1,       0,      "ImageLength" },
-    { TIFFTAG_IMAGELENGTH,      1, 1,  TIFF_SHORT,     FIELD_IMAGEDIMENSIONS,
-      1,       0,      "ImageLength" },
-    { TIFFTAG_BITSPERSAMPLE,   -1,-1,  TIFF_SHORT,     FIELD_BITSPERSAMPLE,
-      0,       0,      "BitsPerSample" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_BITSPERSAMPLE,   -1,-1,  TIFF_LONG,      FIELD_BITSPERSAMPLE,
-      0,       0,      "BitsPerSample" },
-    { TIFFTAG_COMPRESSION,     -1, 1,  TIFF_SHORT,     FIELD_COMPRESSION,
-      0,       0,      "Compression" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_COMPRESSION,     -1, 1,  TIFF_LONG,      FIELD_COMPRESSION,
-      0,       0,      "Compression" },
-    { TIFFTAG_PHOTOMETRIC,      1, 1,  TIFF_SHORT,     FIELD_PHOTOMETRIC,
-      0,       0,      "PhotometricInterpretation" },
-/* XXX LONG for compatibility with some broken TIFF writers */
-    { TIFFTAG_PHOTOMETRIC,      1, 1,  TIFF_LONG,      FIELD_PHOTOMETRIC,
-      0,       0,      "PhotometricInterpretation" },
-    { TIFFTAG_THRESHHOLDING,    1, 1,  TIFF_SHORT,     FIELD_THRESHHOLDING,
-      1,       0,      "Threshholding" },
-    { TIFFTAG_CELLWIDTH,        1, 1,  TIFF_SHORT,     FIELD_IGNORE,
-      1,       0,      "CellWidth" },
-    { TIFFTAG_CELLLENGTH,       1, 1,  TIFF_SHORT,     FIELD_IGNORE,
-      1,       0,      "CellLength" },
-    { TIFFTAG_FILLORDER,        1, 1,  TIFF_SHORT,     FIELD_FILLORDER,
-      0,       0,      "FillOrder" },
-    { TIFFTAG_DOCUMENTNAME,    -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "DocumentName" },
-    { TIFFTAG_IMAGEDESCRIPTION,        -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "ImageDescription" },
-    { TIFFTAG_MAKE,            -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "Make" },
-    { TIFFTAG_MODEL,           -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "Model" },
-    { TIFFTAG_STRIPOFFSETS,    -1,-1,  TIFF_LONG,      FIELD_STRIPOFFSETS,
-      0,       0,      "StripOffsets" },
-    { TIFFTAG_STRIPOFFSETS,    -1,-1,  TIFF_SHORT,     FIELD_STRIPOFFSETS,
-      0,       0,      "StripOffsets" },
-    { TIFFTAG_ORIENTATION,      1, 1,  TIFF_SHORT,     FIELD_ORIENTATION,
-      0,       0,      "Orientation" },
-    { TIFFTAG_SAMPLESPERPIXEL,  1, 1,  TIFF_SHORT,     FIELD_SAMPLESPERPIXEL,
-      0,       0,      "SamplesPerPixel" },
-    { TIFFTAG_ROWSPERSTRIP,     1, 1,  TIFF_LONG,      FIELD_ROWSPERSTRIP,
-      0,       0,      "RowsPerStrip" },
-    { TIFFTAG_ROWSPERSTRIP,     1, 1,  TIFF_SHORT,     FIELD_ROWSPERSTRIP,
-      0,       0,      "RowsPerStrip" },
-    { TIFFTAG_STRIPBYTECOUNTS, -1,-1,  TIFF_LONG,      FIELD_STRIPBYTECOUNTS,
-      0,       0,      "StripByteCounts" },
-    { TIFFTAG_STRIPBYTECOUNTS, -1,-1,  TIFF_SHORT,     FIELD_STRIPBYTECOUNTS,
-      0,       0,      "StripByteCounts" },
-    { TIFFTAG_MINSAMPLEVALUE,  -2,-1,  TIFF_SHORT,     FIELD_MINSAMPLEVALUE,
-      1,       0,      "MinSampleValue" },
-    { TIFFTAG_MAXSAMPLEVALUE,  -2,-1,  TIFF_SHORT,     FIELD_MAXSAMPLEVALUE,
-      1,       0,      "MaxSampleValue" },
-    { TIFFTAG_XRESOLUTION,      1, 1,  TIFF_RATIONAL,  FIELD_RESOLUTION,
-      1,       0,      "XResolution" },
-    { TIFFTAG_YRESOLUTION,      1, 1,  TIFF_RATIONAL,  FIELD_RESOLUTION,
-      1,       0,      "YResolution" },
-    { TIFFTAG_PLANARCONFIG,     1, 1,  TIFF_SHORT,     FIELD_PLANARCONFIG,
-      0,       0,      "PlanarConfiguration" },
-    { TIFFTAG_PAGENAME,                -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "PageName" },
-    { TIFFTAG_XPOSITION,        1, 1,  TIFF_RATIONAL,  FIELD_POSITION,
-      1,       0,      "XPosition" },
-    { TIFFTAG_YPOSITION,        1, 1,  TIFF_RATIONAL,  FIELD_POSITION,
-      1,       0,      "YPosition" },
-    { TIFFTAG_FREEOFFSETS,     -1,-1,  TIFF_LONG,      FIELD_IGNORE,
-      0,       0,      "FreeOffsets" },
-    { TIFFTAG_FREEBYTECOUNTS,  -1,-1,  TIFF_LONG,      FIELD_IGNORE,
-      0,       0,      "FreeByteCounts" },
-    { TIFFTAG_GRAYRESPONSEUNIT,         1, 1,  TIFF_SHORT,     FIELD_IGNORE,
-      1,       0,      "GrayResponseUnit" },
-    { TIFFTAG_GRAYRESPONSECURVE,-1,-1, TIFF_SHORT,     FIELD_IGNORE,
-      1,       0,      "GrayResponseCurve" },
-    { TIFFTAG_RESOLUTIONUNIT,   1, 1,  TIFF_SHORT,     FIELD_RESOLUTIONUNIT,
-      1,       0,      "ResolutionUnit" },
-    { TIFFTAG_PAGENUMBER,       2, 2,  TIFF_SHORT,     FIELD_PAGENUMBER,
-      1,       0,      "PageNumber" },
-    { TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT,     FIELD_IGNORE,
-      1,       0,      "ColorResponseUnit" },
-    { TIFFTAG_TRANSFERFUNCTION,        -1,-1,  TIFF_SHORT,     FIELD_TRANSFERFUNCTION,
-      1,       0,      "TransferFunction" },
-    { TIFFTAG_SOFTWARE,                -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "Software" },
-    { TIFFTAG_DATETIME,                20,20,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "DateTime" },
-    { TIFFTAG_ARTIST,          -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "Artist" },
-    { TIFFTAG_HOSTCOMPUTER,    -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "HostComputer" },
-    { TIFFTAG_WHITEPOINT,       2, 2,  TIFF_RATIONAL,  FIELD_CUSTOM,
-      1,       0,      "WhitePoint" },
-    { TIFFTAG_PRIMARYCHROMATICITIES,6,6,TIFF_RATIONAL, FIELD_CUSTOM,
-      1,       0,      "PrimaryChromaticities" },
-    { TIFFTAG_COLORMAP,                -1,-1,  TIFF_SHORT,     FIELD_COLORMAP,
-      1,       0,      "ColorMap" },
-    { TIFFTAG_HALFTONEHINTS,    2, 2,  TIFF_SHORT,     FIELD_HALFTONEHINTS,
-      1,       0,      "HalftoneHints" },
-    { TIFFTAG_TILEWIDTH,        1, 1,  TIFF_LONG,      FIELD_TILEDIMENSIONS,
-      0,       0,      "TileWidth" },
-    { TIFFTAG_TILEWIDTH,        1, 1,  TIFF_SHORT,     FIELD_TILEDIMENSIONS,
-      0,       0,      "TileWidth" },
-    { TIFFTAG_TILELENGTH,       1, 1,  TIFF_LONG,      FIELD_TILEDIMENSIONS,
-      0,       0,      "TileLength" },
-    { TIFFTAG_TILELENGTH,       1, 1,  TIFF_SHORT,     FIELD_TILEDIMENSIONS,
-      0,       0,      "TileLength" },
-    { TIFFTAG_TILEOFFSETS,     -1, 1,  TIFF_LONG,      FIELD_STRIPOFFSETS,
-      0,       0,      "TileOffsets" },
-    { TIFFTAG_TILEBYTECOUNTS,  -1, 1,  TIFF_LONG,      FIELD_STRIPBYTECOUNTS,
-      0,       0,      "TileByteCounts" },
-    { TIFFTAG_TILEBYTECOUNTS,  -1, 1,  TIFF_SHORT,     FIELD_STRIPBYTECOUNTS,
-      0,       0,      "TileByteCounts" },
-    { TIFFTAG_SUBIFD,          -1,-1,  TIFF_IFD,       FIELD_SUBIFD,
-      1,       1,      "SubIFD" },
-    { TIFFTAG_SUBIFD,          -1,-1,  TIFF_LONG,      FIELD_SUBIFD,
-      1,       1,      "SubIFD" },
-    { TIFFTAG_INKSET,           1, 1,  TIFF_SHORT,     FIELD_CUSTOM,
-      0,       0,      "InkSet" },
-    { TIFFTAG_INKNAMES,                -1,-1,  TIFF_ASCII,     FIELD_INKNAMES,
-      1,       1,      "InkNames" },
-    { TIFFTAG_NUMBEROFINKS,     1, 1,  TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "NumberOfInks" },
-    { TIFFTAG_DOTRANGE,                 2, 2,  TIFF_SHORT,     FIELD_CUSTOM,
-      0,       0,      "DotRange" },
-    { TIFFTAG_DOTRANGE,                 2, 2,  TIFF_BYTE,      FIELD_CUSTOM,
-      0,       0,      "DotRange" },
-    { TIFFTAG_TARGETPRINTER,   -1,-1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "TargetPrinter" },
-    { TIFFTAG_EXTRASAMPLES,    -1,-1,  TIFF_SHORT,     FIELD_EXTRASAMPLES,
-      0,       1,      "ExtraSamples" },
-/* XXX for bogus Adobe Photoshop v2.5 files */
-    { TIFFTAG_EXTRASAMPLES,    -1,-1,  TIFF_BYTE,      FIELD_EXTRASAMPLES,
-      0,       1,      "ExtraSamples" },
-    { TIFFTAG_SAMPLEFORMAT,    -1,-1,  TIFF_SHORT,     FIELD_SAMPLEFORMAT,
-      0,       0,      "SampleFormat" },
-    { TIFFTAG_SMINSAMPLEVALUE, -2,-1,  TIFF_ANY,       FIELD_SMINSAMPLEVALUE,
-      1,       0,      "SMinSampleValue" },
-    { TIFFTAG_SMAXSAMPLEVALUE, -2,-1,  TIFF_ANY,       FIELD_SMAXSAMPLEVALUE,
-      1,       0,      "SMaxSampleValue" },
-    { TIFFTAG_CLIPPATH,                -1, -3, TIFF_BYTE,      FIELD_CUSTOM,
-      0,       1,      "ClipPath" },
-    { TIFFTAG_XCLIPPATHUNITS,   1, 1,  TIFF_SLONG,     FIELD_CUSTOM,
-      0,       0,      "XClipPathUnits" },
-    { TIFFTAG_XCLIPPATHUNITS,   1, 1,  TIFF_SSHORT,    FIELD_CUSTOM,
-      0,       0,      "XClipPathUnits" },
-    { TIFFTAG_XCLIPPATHUNITS,   1, 1,  TIFF_SBYTE,     FIELD_CUSTOM,
-      0,       0,      "XClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,   1, 1,  TIFF_SLONG,     FIELD_CUSTOM,
-      0,       0,      "YClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,   1, 1,  TIFF_SSHORT,    FIELD_CUSTOM,
-      0,       0,      "YClipPathUnits" },
-    { TIFFTAG_YCLIPPATHUNITS,   1, 1,  TIFF_SBYTE,     FIELD_CUSTOM,
-      0,       0,      "YClipPathUnits" },
-    { TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL,  FIELD_CUSTOM,
-      0,       0,      "YCbCrCoefficients" },
-    { TIFFTAG_YCBCRSUBSAMPLING,         2, 2,  TIFF_SHORT,     FIELD_YCBCRSUBSAMPLING,
-      0,       0,      "YCbCrSubsampling" },
-    { TIFFTAG_YCBCRPOSITIONING,         1, 1,  TIFF_SHORT,     FIELD_YCBCRPOSITIONING,
-      0,       0,      "YCbCrPositioning" },
-    { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_RATIONAL,        FIELD_CUSTOM,
-      1,       0,      "ReferenceBlackWhite" },
-/* XXX temporarily accept LONG for backwards compatibility */
-    { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_LONG,    FIELD_CUSTOM,
-      1,       0,      "ReferenceBlackWhite" },
-    { TIFFTAG_XMLPACKET,       -3,-3,  TIFF_BYTE,      FIELD_CUSTOM,
-      0,       1,      "XMLPacket" },
-/* begin SGI tags */
-    { TIFFTAG_MATTEING,                 1, 1,  TIFF_SHORT,     FIELD_EXTRASAMPLES,
-      0,       0,      "Matteing" },
-    { TIFFTAG_DATATYPE,                -2,-1,  TIFF_SHORT,     FIELD_SAMPLEFORMAT,
-      0,       0,      "DataType" },
-    { TIFFTAG_IMAGEDEPTH,       1, 1,  TIFF_LONG,      FIELD_IMAGEDEPTH,
-      0,       0,      "ImageDepth" },
-    { TIFFTAG_IMAGEDEPTH,       1, 1,  TIFF_SHORT,     FIELD_IMAGEDEPTH,
-      0,       0,      "ImageDepth" },
-    { TIFFTAG_TILEDEPTH,        1, 1,  TIFF_LONG,      FIELD_TILEDEPTH,
-      0,       0,      "TileDepth" },
-    { TIFFTAG_TILEDEPTH,        1, 1,  TIFF_SHORT,     FIELD_TILEDEPTH,
-      0,       0,      "TileDepth" },
-/* end SGI tags */
-/* begin Pixar tags */
-    { TIFFTAG_PIXAR_IMAGEFULLWIDTH,  1, 1, TIFF_LONG,  FIELD_CUSTOM,
-      1,       0,      "ImageFullWidth" },
-    { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG,  FIELD_CUSTOM,
-      1,       0,      "ImageFullLength" },
-    { TIFFTAG_PIXAR_TEXTUREFORMAT,  -1, -1, TIFF_ASCII,        FIELD_CUSTOM,
-      1,       0,      "TextureFormat" },
-    { TIFFTAG_PIXAR_WRAPMODES,     -1, -1, TIFF_ASCII, FIELD_CUSTOM,
-      1,       0,      "TextureWrapModes" },
-    { TIFFTAG_PIXAR_FOVCOT,         1, 1, TIFF_FLOAT,  FIELD_CUSTOM,
-      1,       0,      "FieldOfViewCotangent" },
-    { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN,      16,16,  TIFF_FLOAT,
-      FIELD_CUSTOM,    1,      0,      "MatrixWorldToScreen" },
-    { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA,      16,16,  TIFF_FLOAT,
-       FIELD_CUSTOM,   1,      0,      "MatrixWorldToCamera" },
-    { TIFFTAG_COPYRIGHT,       -1, -1, TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "Copyright" },
-/* end Pixar tags */
-    { TIFFTAG_RICHTIFFIPTC, -3, -3,    TIFF_LONG,      FIELD_CUSTOM, 
-      0,    1,   "RichTIFFIPTC" },
-    { TIFFTAG_PHOTOSHOP,    -3, -3,    TIFF_BYTE,      FIELD_CUSTOM, 
-      0,    1,   "Photoshop" },
-    { TIFFTAG_EXIFIFD,         1, 1,   TIFF_LONG,      FIELD_CUSTOM,
-      0,       0,      "EXIFIFDOffset" },
-    { TIFFTAG_ICCPROFILE,      -3, -3, TIFF_UNDEFINED, FIELD_CUSTOM,
-      0,       1,      "ICC Profile" },
-    { TIFFTAG_GPSIFD,          1, 1,   TIFF_LONG,      FIELD_CUSTOM,
-      0,       0,      "GPSIFDOffset" },
-    { TIFFTAG_STONITS,          1, 1,  TIFF_DOUBLE,    FIELD_CUSTOM,
-      0,       0,      "StoNits" },
-    { TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_LONG,    FIELD_CUSTOM,
-      0,       0,      "InteroperabilityIFDOffset" },
-/* begin DNG tags */
-    { TIFFTAG_DNGVERSION,      4, 4,   TIFF_BYTE,      FIELD_CUSTOM, 
-      0,       0,      "DNGVersion" },
-    { TIFFTAG_DNGBACKWARDVERSION, 4, 4,        TIFF_BYTE,      FIELD_CUSTOM, 
-      0,       0,      "DNGBackwardVersion" },
-    { TIFFTAG_UNIQUECAMERAMODEL,    -1, -1, TIFF_ASCII,        FIELD_CUSTOM,
-      1,       0,      "UniqueCameraModel" },
-    { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_ASCII,        FIELD_CUSTOM,
-      1,       0,      "LocalizedCameraModel" },
-    { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE, FIELD_CUSTOM,
-      1,       1,      "LocalizedCameraModel" },
-    { TIFFTAG_CFAPLANECOLOR,   -1, -1, TIFF_BYTE,      FIELD_CUSTOM, 
-      0,       1,      "CFAPlaneColor" },
-    { TIFFTAG_CFALAYOUT,       1, 1,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "CFALayout" },
-    { TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT,  FIELD_CUSTOM, 
-      0,       1,      "LinearizationTable" },
-    { TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT,   FIELD_CUSTOM, 
-      0,       0,      "BlackLevelRepeatDim" },
-    { TIFFTAG_BLACKLEVEL,      -1, -1, TIFF_LONG,      FIELD_CUSTOM, 
-      0,       1,      "BlackLevel" },
-    { TIFFTAG_BLACKLEVEL,      -1, -1, TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       1,      "BlackLevel" },
-    { TIFFTAG_BLACKLEVEL,      -1, -1, TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       1,      "BlackLevel" },
-    { TIFFTAG_BLACKLEVELDELTAH,        -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "BlackLevelDeltaH" },
-    { TIFFTAG_BLACKLEVELDELTAV,        -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "BlackLevelDeltaV" },
-    { TIFFTAG_WHITELEVEL,      -2, -2, TIFF_LONG,      FIELD_CUSTOM, 
-      0,       0,      "WhiteLevel" },
-    { TIFFTAG_WHITELEVEL,      -2, -2, TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "WhiteLevel" },
-    { TIFFTAG_DEFAULTSCALE,    2, 2,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "DefaultScale" },
-    { TIFFTAG_BESTQUALITYSCALE,        1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "BestQualityScale" },
-    { TIFFTAG_DEFAULTCROPORIGIN,       2, 2,   TIFF_LONG,      FIELD_CUSTOM, 
-      0,       0,      "DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPORIGIN,       2, 2,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPORIGIN,       2, 2,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "DefaultCropOrigin" },
-    { TIFFTAG_DEFAULTCROPSIZE, 2, 2,   TIFF_LONG,      FIELD_CUSTOM, 
-      0,       0,      "DefaultCropSize" },
-    { TIFFTAG_DEFAULTCROPSIZE, 2, 2,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "DefaultCropSize" },
-    { TIFFTAG_DEFAULTCROPSIZE, 2, 2,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "DefaultCropSize" },
-    { TIFFTAG_COLORMATRIX1,    -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "ColorMatrix1" },
-    { TIFFTAG_COLORMATRIX2,    -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "ColorMatrix2" },
-    { TIFFTAG_CAMERACALIBRATION1,      -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "CameraCalibration1" },
-    { TIFFTAG_CAMERACALIBRATION2,      -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "CameraCalibration2" },
-    { TIFFTAG_REDUCTIONMATRIX1,        -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "ReductionMatrix1" },
-    { TIFFTAG_REDUCTIONMATRIX2,        -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "ReductionMatrix2" },
-    { TIFFTAG_ANALOGBALANCE,   -1, -1, TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       1,      "AnalogBalance" },
-    { TIFFTAG_ASSHOTNEUTRAL,   -1, -1, TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       1,      "AsShotNeutral" },
-    { TIFFTAG_ASSHOTNEUTRAL,   -1, -1, TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       1,      "AsShotNeutral" },
-    { TIFFTAG_ASSHOTWHITEXY,   2, 2,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "AsShotWhiteXY" },
-    { TIFFTAG_BASELINEEXPOSURE,        1, 1,   TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       0,      "BaselineExposure" },
-    { TIFFTAG_BASELINENOISE,   1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "BaselineNoise" },
-    { TIFFTAG_BASELINESHARPNESS,       1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "BaselineSharpness" },
-    { TIFFTAG_BAYERGREENSPLIT, 1, 1,   TIFF_LONG,      FIELD_CUSTOM, 
-      0,       0,      "BayerGreenSplit" },
-    { TIFFTAG_LINEARRESPONSELIMIT,     1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "LinearResponseLimit" },
-    { TIFFTAG_CAMERASERIALNUMBER,    -1, -1, TIFF_ASCII,       FIELD_CUSTOM,
-      1,       0,      "CameraSerialNumber" },
-    { TIFFTAG_LENSINFO,        4, 4,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "LensInfo" },
-    { TIFFTAG_CHROMABLURRADIUS,        1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "ChromaBlurRadius" },
-    { TIFFTAG_ANTIALIASSTRENGTH,       1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "AntiAliasStrength" },
-    { TIFFTAG_SHADOWSCALE,     1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      0,       0,      "ShadowScale" },
-    { TIFFTAG_DNGPRIVATEDATA,    -1, -1, TIFF_BYTE,    FIELD_CUSTOM,
-      0,       1,      "DNGPrivateData" },
-    { TIFFTAG_MAKERNOTESAFETY, 1, 1,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "MakerNoteSafety" },
-    { TIFFTAG_CALIBRATIONILLUMINANT1,  1, 1,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "CalibrationIlluminant1" },
-    { TIFFTAG_CALIBRATIONILLUMINANT2,  1, 1,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "CalibrationIlluminant2" },
-    { TIFFTAG_RAWDATAUNIQUEID, 16, 16, TIFF_BYTE,      FIELD_CUSTOM, 
-      0,       0,      "RawDataUniqueID" },
-    { TIFFTAG_ORIGINALRAWFILENAME,    -1, -1, TIFF_ASCII,      FIELD_CUSTOM,
-      1,       0,      "OriginalRawFileName" },
-    { TIFFTAG_ORIGINALRAWFILENAME,    -1, -1, TIFF_BYTE,       FIELD_CUSTOM,
-      1,       1,      "OriginalRawFileName" },
-    { TIFFTAG_ORIGINALRAWFILEDATA,    -1, -1, TIFF_UNDEFINED,  FIELD_CUSTOM,
-      0,       1,      "OriginalRawFileData" },
-    { TIFFTAG_ACTIVEAREA,      4, 4,   TIFF_LONG,      FIELD_CUSTOM, 
-      0,       0,      "ActiveArea" },
-    { TIFFTAG_ACTIVEAREA,      4, 4,   TIFF_SHORT,     FIELD_CUSTOM, 
-      0,       0,      "ActiveArea" },
-    { TIFFTAG_MASKEDAREAS,     -1, -1, TIFF_LONG,      FIELD_CUSTOM, 
-      0,       1,      "MaskedAreas" },
-    { TIFFTAG_ASSHOTICCPROFILE,    -1, -1, TIFF_UNDEFINED,     FIELD_CUSTOM,
-      0,       1,      "AsShotICCProfile" },
-    { TIFFTAG_ASSHOTPREPROFILEMATRIX,  -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "AsShotPreProfileMatrix" },
-    { TIFFTAG_CURRENTICCPROFILE,    -1, -1, TIFF_UNDEFINED,    FIELD_CUSTOM,
-      0,       1,      "CurrentICCProfile" },
-    { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM, 
-      0,       1,      "CurrentPreProfileMatrix" },
-/* end DNG tags */
+
+static TIFFFieldArray tiffFieldArray;
+static TIFFFieldArray exifFieldArray;
+
+static TIFFField
+tiffFields[] = {
+       { TIFFTAG_SUBFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_SUBFILETYPE, 1, 0, "SubfileType", NULL },
+       { TIFFTAG_OSUBFILETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_SUBFILETYPE, 1, 0, "OldSubfileType", NULL },
+       { TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDIMENSIONS, 0, 0, "ImageWidth", NULL },
+       { TIFFTAG_IMAGELENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDIMENSIONS, 1, 0, "ImageLength", NULL },
+       { TIFFTAG_BITSPERSAMPLE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_BITSPERSAMPLE, 0, 0, "BitsPerSample", NULL },
+       { TIFFTAG_COMPRESSION, -1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_COMPRESSION, 0, 0, "Compression", NULL },
+       { TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_PHOTOMETRIC, 0, 0, "PhotometricInterpretation", NULL },
+       { TIFFTAG_THRESHHOLDING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_THRESHHOLDING, 1, 0, "Threshholding", NULL },
+       { TIFFTAG_CELLWIDTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "CellWidth", NULL },
+       { TIFFTAG_CELLLENGTH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "CellLength", NULL },
+       { TIFFTAG_FILLORDER, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_FILLORDER, 0, 0, "FillOrder", NULL },
+       { TIFFTAG_DOCUMENTNAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DocumentName", NULL },
+       { TIFFTAG_IMAGEDESCRIPTION, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageDescription", NULL },
+       { TIFFTAG_MAKE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Make", NULL },
+       { TIFFTAG_MODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Model", NULL },
+       { TIFFTAG_STRIPOFFSETS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPOFFSETS, 0, 0, "StripOffsets", NULL },
+       { TIFFTAG_ORIENTATION, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_ORIENTATION, 0, 0, "Orientation", NULL },
+       { TIFFTAG_SAMPLESPERPIXEL, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLESPERPIXEL, 0, 0, "SamplesPerPixel", NULL },
+       { TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_ROWSPERSTRIP, 0, 0, "RowsPerStrip", NULL },
+       { TIFFTAG_STRIPBYTECOUNTS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPBYTECOUNTS, 0, 0, "StripByteCounts", NULL },
+       { TIFFTAG_MINSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_MINSAMPLEVALUE, 1, 0, "MinSampleValue", NULL },
+       { TIFFTAG_MAXSAMPLEVALUE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_MAXSAMPLEVALUE, 1, 0, "MaxSampleValue", NULL },
+       { TIFFTAG_XRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTION, 1, 0, "XResolution", NULL },
+       { TIFFTAG_YRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTION, 1, 0, "YResolution", NULL },
+       { TIFFTAG_PLANARCONFIG, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_PLANARCONFIG, 0, 0, "PlanarConfiguration", NULL },
+       { TIFFTAG_PAGENAME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PageName", NULL },
+       { TIFFTAG_XPOSITION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_POSITION, 1, 0, "XPosition", NULL },
+       { TIFFTAG_YPOSITION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_POSITION, 1, 0, "YPosition", NULL },
+       { TIFFTAG_FREEOFFSETS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeOffsets", NULL },
+       { TIFFTAG_FREEBYTECOUNTS, -1, -1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 0, 0, "FreeByteCounts", NULL },
+       { TIFFTAG_GRAYRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseUnit", NULL },
+       { TIFFTAG_GRAYRESPONSECURVE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "GrayResponseCurve", NULL },
+       { TIFFTAG_RESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_RESOLUTIONUNIT, 1, 0, "ResolutionUnit", NULL },
+       { TIFFTAG_PAGENUMBER, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_PAGENUMBER, 1, 0, "PageNumber", NULL },
+       { TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_IGNORE, 1, 0, "ColorResponseUnit", NULL },
+       { TIFFTAG_TRANSFERFUNCTION, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, TIFF_SETGET_UNDEFINED, FIELD_TRANSFERFUNCTION, 1, 0, "TransferFunction", NULL },
+       { TIFFTAG_SOFTWARE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Software", NULL },
+       { TIFFTAG_DATETIME, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTime", NULL },
+       { TIFFTAG_ARTIST, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Artist", NULL },
+       { TIFFTAG_HOSTCOMPUTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "HostComputer", NULL },
+       { TIFFTAG_WHITEPOINT, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "WhitePoint", NULL },
+       { TIFFTAG_PRIMARYCHROMATICITIES, 6, 6, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PrimaryChromaticities", NULL },
+       { TIFFTAG_COLORMAP, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_OTHER, TIFF_SETGET_UNDEFINED, FIELD_COLORMAP, 1, 0, "ColorMap", NULL },
+       { TIFFTAG_HALFTONEHINTS, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_HALFTONEHINTS, 1, 0, "HalftoneHints", NULL },
+       { TIFFTAG_TILEWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDIMENSIONS, 0, 0, "TileWidth", NULL },
+       { TIFFTAG_TILELENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDIMENSIONS, 0, 0, "TileLength", NULL },
+       { TIFFTAG_TILEOFFSETS, -1, 1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPOFFSETS, 0, 0, "TileOffsets", NULL },
+       { TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_LONG8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_STRIPBYTECOUNTS, 0, 0, "TileByteCounts", NULL },
+       { TIFFTAG_SUBIFD, -1, -1, TIFF_IFD8, 0, TIFF_SETGET_C16_IFD8, TIFF_SETGET_UNDEFINED, FIELD_SUBIFD, 1, 1, "SubIFD", &tiffFieldArray },
+       { TIFFTAG_INKSET, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "InkSet", NULL },
+       { TIFFTAG_INKNAMES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_C16_ASCII, TIFF_SETGET_UNDEFINED, FIELD_INKNAMES, 1, 1, "InkNames", NULL },
+       { TIFFTAG_NUMBEROFINKS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "NumberOfInks", NULL },
+       { TIFFTAG_DOTRANGE, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DotRange", NULL },
+       { TIFFTAG_TARGETPRINTER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TargetPrinter", NULL },
+       { TIFFTAG_EXTRASAMPLES, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_EXTRASAMPLES, 0, 1, "ExtraSamples", NULL },
+       { TIFFTAG_SAMPLEFORMAT, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLEFORMAT, 0, 0, "SampleFormat", NULL },
+       { TIFFTAG_SMINSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_SMINSAMPLEVALUE, 1, 0, "SMinSampleValue", NULL },
+       { TIFFTAG_SMAXSAMPLEVALUE, -2, -1, TIFF_ANY, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_SMAXSAMPLEVALUE, 1, 0, "SMaxSampleValue", NULL },
+       { TIFFTAG_CLIPPATH, -1, -3, TIFF_BYTE, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ClipPath", NULL },
+       { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SLONG, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "XClipPathUnits", NULL },
+       { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SBYTE, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "XClipPathUnits", NULL },
+       { TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_SLONG, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "YClipPathUnits", NULL },
+       { TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "YCbCrCoefficients", NULL },
+       { TIFFTAG_YCBCRSUBSAMPLING, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_UINT16_PAIR, TIFF_SETGET_UNDEFINED, FIELD_YCBCRSUBSAMPLING, 0, 0, "YCbCrSubsampling", NULL },
+       { TIFFTAG_YCBCRPOSITIONING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_YCBCRPOSITIONING, 0, 0, "YCbCrPositioning", NULL },
+       { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_REFBLACKWHITE, 1, 0, "ReferenceBlackWhite", NULL },
+       { TIFFTAG_XMLPACKET, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "XMLPacket", NULL },
+       /* begin SGI tags */
+       { TIFFTAG_MATTEING, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_EXTRASAMPLES, 0, 0, "Matteing", NULL },
+       { TIFFTAG_DATATYPE, -2, -1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_SAMPLEFORMAT, 0, 0, "DataType", NULL },
+       { TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_IMAGEDEPTH, 0, 0, "ImageDepth", NULL },
+       { TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_TILEDEPTH, 0, 0, "TileDepth", NULL },
+       /* end SGI tags */
+       /* begin Pixar tags */
+       { TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullWidth", NULL },
+       { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageFullLength", NULL },
+       { TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureFormat", NULL },
+       { TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "TextureWrapModes", NULL },
+       { TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, 0, TIFF_SETGET_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FieldOfViewCotangent", NULL },
+       { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen", NULL },
+       { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16, 16, TIFF_FLOAT, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera", NULL },
+       { TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Copyright", NULL },
+       /* end Pixar tags */
+       { TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_LONG, 0, TIFF_SETGET_C32_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "RichTIFFIPTC", NULL },
+       { TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Photoshop", NULL },
+       { TIFFTAG_EXIFIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "EXIFIFDOffset", &exifFieldArray },
+       { TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ICC Profile", NULL },
+       { TIFFTAG_GPSIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_IFD8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GPSIFDOffset", NULL },
+       { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvParams", NULL },
+       { TIFFTAG_FAXSUBADDRESS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxSubAddress", NULL },
+       { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_CUSTOM, TRUE, FALSE, "FaxRecvTime", NULL },
+       { TIFFTAG_FAXDCS, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_ASCII, FIELD_CUSTOM, TRUE, FALSE, "FaxDcs", NULL },
+       { TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "StoNits", NULL },
+       { TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_IFD8, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "InteroperabilityIFDOffset", NULL },
+       /* begin DNG tags */
+       { TIFFTAG_DNGVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGVersion", NULL },
+       { TIFFTAG_DNGBACKWARDVERSION, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DNGBackwardVersion", NULL },
+       { TIFFTAG_UNIQUECAMERAMODEL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "UniqueCameraModel", NULL },
+       { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "LocalizedCameraModel", NULL },
+       { TIFFTAG_CFAPLANECOLOR, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CFAPlaneColor", NULL },
+       { TIFFTAG_CFALAYOUT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CFALayout", NULL },
+       { TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "LinearizationTable", NULL },
+       { TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BlackLevelRepeatDim", NULL },
+       { TIFFTAG_BLACKLEVEL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevel", NULL },
+       { TIFFTAG_BLACKLEVELDELTAH, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevelDeltaH", NULL },
+       { TIFFTAG_BLACKLEVELDELTAV, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "BlackLevelDeltaV", NULL },
+       { TIFFTAG_WHITELEVEL, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "WhiteLevel", NULL },
+       { TIFFTAG_DEFAULTSCALE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultScale", NULL },
+       { TIFFTAG_BESTQUALITYSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BestQualityScale", NULL },
+       { TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultCropOrigin", NULL },
+       { TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "DefaultCropSize", NULL },
+       { TIFFTAG_COLORMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ColorMatrix1", NULL },
+       { TIFFTAG_COLORMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ColorMatrix2", NULL },
+       { TIFFTAG_CAMERACALIBRATION1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CameraCalibration1", NULL },
+       { TIFFTAG_CAMERACALIBRATION2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CameraCalibration2", NULL },
+       { TIFFTAG_REDUCTIONMATRIX1, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ReductionMatrix1", NULL },
+       { TIFFTAG_REDUCTIONMATRIX2, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ReductionMatrix2", NULL },
+       { TIFFTAG_ANALOGBALANCE, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AnalogBalance", NULL },
+       { TIFFTAG_ASSHOTNEUTRAL, -1, -1, TIFF_RATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotNeutral", NULL },
+       { TIFFTAG_ASSHOTWHITEXY, 2, 2, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "AsShotWhiteXY", NULL },
+       { TIFFTAG_BASELINEEXPOSURE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineExposure", NULL },
+       { TIFFTAG_BASELINENOISE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineNoise", NULL },
+       { TIFFTAG_BASELINESHARPNESS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BaselineSharpness", NULL },
+       { TIFFTAG_BAYERGREENSPLIT, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "BayerGreenSplit", NULL },
+       { TIFFTAG_LINEARRESPONSELIMIT, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "LinearResponseLimit", NULL },
+       { TIFFTAG_CAMERASERIALNUMBER, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CameraSerialNumber", NULL },
+       { TIFFTAG_LENSINFO, 4, 4, TIFF_RATIONAL, 0, TIFF_SETGET_C0_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "LensInfo", NULL },
+       { TIFFTAG_CHROMABLURRADIUS, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ChromaBlurRadius", NULL },
+       { TIFFTAG_ANTIALIASSTRENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "AntiAliasStrength", NULL },
+       { TIFFTAG_SHADOWSCALE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ShadowScale", NULL },
+       { TIFFTAG_DNGPRIVATEDATA, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "DNGPrivateData", NULL },
+       { TIFFTAG_MAKERNOTESAFETY, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "MakerNoteSafety", NULL },
+       { TIFFTAG_CALIBRATIONILLUMINANT1, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CalibrationIlluminant1", NULL },
+       { TIFFTAG_CALIBRATIONILLUMINANT2, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CalibrationIlluminant2", NULL },
+       { TIFFTAG_RAWDATAUNIQUEID, 16, 16, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "RawDataUniqueID", NULL },
+       { TIFFTAG_ORIGINALRAWFILENAME, -1, -1, TIFF_BYTE, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "OriginalRawFileName", NULL },
+       { TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "OriginalRawFileData", NULL },
+       { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ActiveArea", NULL },
+       { TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "MaskedAreas", NULL },
+       { TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotICCProfile", NULL },
+       { TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "AsShotPreProfileMatrix", NULL },
+       { TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentICCProfile", NULL },
+       { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "CurrentPreProfileMatrix", NULL },
+       { TIFFTAG_PERSAMPLE, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_UNDEFINED, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "PerSample", NULL},
+       /* end DNG tags */
+       /* begin TIFF/FX tags */
+    { TIFFTAG_INDEXED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "Indexed" },
+    { TIFFTAG_GLOBALPARAMETERSIFD, 1, 1, TIFF_IFD, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "GlobalParametersIFD", NULL },
+    { TIFFTAG_PROFILETYPE, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ProfileType", NULL },
+    { TIFFTAG_FAXPROFILE, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "FaxProfile", NULL },
+    { TIFFTAG_CODINGMETHODS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "CodingMethods", NULL },
+    { TIFFTAG_VERSIONYEAR, 4, 4, TIFF_BYTE, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "VersionYear", NULL },
+    { TIFFTAG_MODENUMBER, 1, 1, TIFF_BYTE, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ModeNumber", NULL },
+    { TIFFTAG_DECODE, -1, -1, TIFF_SRATIONAL, 0, TIFF_SETGET_C16_FLOAT, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "Decode", NULL },
+    { TIFFTAG_IMAGEBASECOLOR, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "ImageBaseColor", NULL },
+    { TIFFTAG_T82OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "T82Options", NULL },
+    { TIFFTAG_STRIPROWCOUNTS, -1, -1, TIFF_LONG, 0, TIFF_SETGET_C16_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 1, "StripRowCounts", NULL },
+    { TIFFTAG_IMAGELAYER, 2, 2, TIFF_LONG, 0, TIFF_SETGET_C0_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 0, 0, "ImageLayer", NULL },
+       /* end DNG tags */
+       /* begin pseudo tags */
 };
 
-static const TIFFFieldInfo
-exifFieldInfo[] = {
-    { EXIFTAG_EXPOSURETIME,    1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "ExposureTime" },
-    { EXIFTAG_FNUMBER,         1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "FNumber" },
-    { EXIFTAG_EXPOSUREPROGRAM, 1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "ExposureProgram" },
-    { EXIFTAG_SPECTRALSENSITIVITY,    -1, -1,  TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "SpectralSensitivity" },
-    { EXIFTAG_ISOSPEEDRATINGS,  -1, -1,                TIFF_SHORT,     FIELD_CUSTOM,
-      1,       1,      "ISOSpeedRatings" },
-    { EXIFTAG_OECF,    -1, -1,                 TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "OptoelectricConversionFactor" },
-    { EXIFTAG_EXIFVERSION,     4, 4,           TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       0,      "ExifVersion" },
-    { EXIFTAG_DATETIMEORIGINAL,        20, 20,         TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "DateTimeOriginal" },
-    { EXIFTAG_DATETIMEDIGITIZED, 20, 20,       TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "DateTimeDigitized" },
-    { EXIFTAG_COMPONENTSCONFIGURATION,  4, 4,  TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       0,      "ComponentsConfiguration" },
-    { EXIFTAG_COMPRESSEDBITSPERPIXEL,   1, 1,  TIFF_RATIONAL,  FIELD_CUSTOM,
-      1,       0,      "CompressedBitsPerPixel" },
-    { EXIFTAG_SHUTTERSPEEDVALUE,       1, 1,   TIFF_SRATIONAL, FIELD_CUSTOM, 
-      1,       0,      "ShutterSpeedValue" },
-    { EXIFTAG_APERTUREVALUE,   1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "ApertureValue" },
-    { EXIFTAG_BRIGHTNESSVALUE, 1, 1,           TIFF_SRATIONAL, FIELD_CUSTOM, 
-      1,       0,      "BrightnessValue" },
-    { EXIFTAG_EXPOSUREBIASVALUE,       1, 1,   TIFF_SRATIONAL, FIELD_CUSTOM, 
-      1,       0,      "ExposureBiasValue" },
-    { EXIFTAG_MAXAPERTUREVALUE,        1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "MaxApertureValue" },
-    { EXIFTAG_SUBJECTDISTANCE, 1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "SubjectDistance" },
-    { EXIFTAG_METERINGMODE,    1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "MeteringMode" },
-    { EXIFTAG_LIGHTSOURCE,     1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "LightSource" },
-    { EXIFTAG_FLASH,   1, 1,                   TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "Flash" },
-    { EXIFTAG_FOCALLENGTH,     1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "FocalLength" },
-    { EXIFTAG_SUBJECTAREA,     -1, -1,         TIFF_SHORT,     FIELD_CUSTOM,
-      1,       1,      "SubjectArea" },
-    { EXIFTAG_MAKERNOTE,       -1, -1,         TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "MakerNote" },
-    { EXIFTAG_USERCOMMENT,     -1, -1,         TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "UserComment" },
-    { EXIFTAG_SUBSECTIME,    -1, -1,           TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "SubSecTime" },
-    { EXIFTAG_SUBSECTIMEORIGINAL, -1, -1,      TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "SubSecTimeOriginal" },
-    { EXIFTAG_SUBSECTIMEDIGITIZED,-1, -1,      TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "SubSecTimeDigitized" },
-    { EXIFTAG_FLASHPIXVERSION, 4, 4,           TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       0,      "FlashpixVersion" },
-    { EXIFTAG_PIXELXDIMENSION, 1, 1,           TIFF_LONG,      FIELD_CUSTOM,
-      1,       0,      "PixelXDimension" },
-    { EXIFTAG_PIXELXDIMENSION, 1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "PixelXDimension" },
-    { EXIFTAG_PIXELYDIMENSION, 1, 1,           TIFF_LONG,      FIELD_CUSTOM,
-      1,       0,      "PixelYDimension" },
-    { EXIFTAG_PIXELYDIMENSION, 1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "PixelYDimension" },
-    { EXIFTAG_RELATEDSOUNDFILE,        13, 13,         TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "RelatedSoundFile" },
-    { EXIFTAG_FLASHENERGY,     1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "FlashEnergy" },
-    { EXIFTAG_SPATIALFREQUENCYRESPONSE,        -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "SpatialFrequencyResponse" },
-    { EXIFTAG_FOCALPLANEXRESOLUTION,   1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "FocalPlaneXResolution" },
-    { EXIFTAG_FOCALPLANEYRESOLUTION,   1, 1,   TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "FocalPlaneYResolution" },
-    { EXIFTAG_FOCALPLANERESOLUTIONUNIT,        1, 1,   TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "FocalPlaneResolutionUnit" },
-    { EXIFTAG_SUBJECTLOCATION, 2, 2,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "SubjectLocation" },
-    { EXIFTAG_EXPOSUREINDEX,   1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "ExposureIndex" },
-    { EXIFTAG_SENSINGMETHOD,   1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "SensingMethod" },
-    { EXIFTAG_FILESOURCE,      1, 1,           TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       0,      "FileSource" },
-    { EXIFTAG_SCENETYPE,       1, 1,           TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       0,      "SceneType" },
-    { EXIFTAG_CFAPATTERN,      -1, -1,         TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "CFAPattern" },
-    { EXIFTAG_CUSTOMRENDERED,  1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "CustomRendered" },
-    { EXIFTAG_EXPOSUREMODE,    1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "ExposureMode" },
-    { EXIFTAG_WHITEBALANCE,    1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "WhiteBalance" },
-    { EXIFTAG_DIGITALZOOMRATIO,        1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "DigitalZoomRatio" },
-    { EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1,     TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "FocalLengthIn35mmFilm" },
-    { EXIFTAG_SCENECAPTURETYPE,        1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "SceneCaptureType" },
-    { EXIFTAG_GAINCONTROL,     1, 1,           TIFF_RATIONAL,  FIELD_CUSTOM, 
-      1,       0,      "GainControl" },
-    { EXIFTAG_CONTRAST,                1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "Contrast" },
-    { EXIFTAG_SATURATION,      1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "Saturation" },
-    { EXIFTAG_SHARPNESS,       1, 1,           TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "Sharpness" },
-    { EXIFTAG_DEVICESETTINGDESCRIPTION,        -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
-      1,       1,      "DeviceSettingDescription" },
-    { EXIFTAG_SUBJECTDISTANCERANGE, 1, 1,      TIFF_SHORT,     FIELD_CUSTOM,
-      1,       0,      "SubjectDistanceRange" },
-    { EXIFTAG_IMAGEUNIQUEID,   33, 33,         TIFF_ASCII,     FIELD_CUSTOM,
-      1,       0,      "ImageUniqueID" }
+static TIFFField
+exifFields[] = {
+       { EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureTime", NULL },
+       { EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FNumber", NULL },
+       { EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureProgram", NULL },
+       { EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SpectralSensitivity", NULL },
+       { EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "ISOSpeedRatings", NULL },
+       { EXIFTAG_OECF, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "OptoelectricConversionFactor", NULL },
+       { EXIFTAG_EXIFVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExifVersion", NULL },
+       { EXIFTAG_DATETIMEORIGINAL, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTimeOriginal", NULL },
+       { EXIFTAG_DATETIMEDIGITIZED, 20, 20, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DateTimeDigitized", NULL },
+       { EXIFTAG_COMPONENTSCONFIGURATION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ComponentsConfiguration", NULL },
+       { EXIFTAG_COMPRESSEDBITSPERPIXEL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CompressedBitsPerPixel", NULL },
+       { EXIFTAG_SHUTTERSPEEDVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ShutterSpeedValue", NULL },
+       { EXIFTAG_APERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ApertureValue", NULL },
+       { EXIFTAG_BRIGHTNESSVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "BrightnessValue", NULL },
+       { EXIFTAG_EXPOSUREBIASVALUE, 1, 1, TIFF_SRATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureBiasValue", NULL },
+       { EXIFTAG_MAXAPERTUREVALUE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MaxApertureValue", NULL },
+       { EXIFTAG_SUBJECTDISTANCE, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectDistance", NULL },
+       { EXIFTAG_METERINGMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "MeteringMode", NULL },
+       { EXIFTAG_LIGHTSOURCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "LightSource", NULL },
+       { EXIFTAG_FLASH, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Flash", NULL },
+       { EXIFTAG_FOCALLENGTH, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalLength", NULL },
+       { EXIFTAG_SUBJECTAREA, -1, -1, TIFF_SHORT, 0, TIFF_SETGET_C16_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "SubjectArea", NULL },
+       { EXIFTAG_MAKERNOTE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "MakerNote", NULL },
+       { EXIFTAG_USERCOMMENT, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "UserComment", NULL },
+       { EXIFTAG_SUBSECTIME, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTime", NULL },
+       { EXIFTAG_SUBSECTIMEORIGINAL, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTimeOriginal", NULL },
+       { EXIFTAG_SUBSECTIMEDIGITIZED, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubSecTimeDigitized", NULL },
+       { EXIFTAG_FLASHPIXVERSION, 4, 4, TIFF_UNDEFINED, 0, TIFF_SETGET_C0_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FlashpixVersion", NULL },
+       { EXIFTAG_COLORSPACE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ColorSpace", NULL },
+       { EXIFTAG_PIXELXDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PixelXDimension", NULL },
+       { EXIFTAG_PIXELYDIMENSION, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "PixelYDimension", NULL },
+       { EXIFTAG_RELATEDSOUNDFILE, 13, 13, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "RelatedSoundFile", NULL },
+       { EXIFTAG_FLASHENERGY, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FlashEnergy", NULL },
+       { EXIFTAG_SPATIALFREQUENCYRESPONSE, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "SpatialFrequencyResponse", NULL },
+       { EXIFTAG_FOCALPLANEXRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneXResolution", NULL },
+       { EXIFTAG_FOCALPLANEYRESOLUTION, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneYResolution", NULL },
+       { EXIFTAG_FOCALPLANERESOLUTIONUNIT, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalPlaneResolutionUnit", NULL },
+       { EXIFTAG_SUBJECTLOCATION, 2, 2, TIFF_SHORT, 0, TIFF_SETGET_C0_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectLocation", NULL },
+       { EXIFTAG_EXPOSUREINDEX, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureIndex", NULL },
+       { EXIFTAG_SENSINGMETHOD, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SensingMethod", NULL },
+       { EXIFTAG_FILESOURCE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FileSource", NULL },
+       { EXIFTAG_SCENETYPE, 1, 1, TIFF_UNDEFINED, 0, TIFF_SETGET_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SceneType", NULL },
+       { EXIFTAG_CFAPATTERN, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "CFAPattern", NULL },
+       { EXIFTAG_CUSTOMRENDERED, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "CustomRendered", NULL },
+       { EXIFTAG_EXPOSUREMODE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ExposureMode", NULL },
+       { EXIFTAG_WHITEBALANCE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "WhiteBalance", NULL },
+       { EXIFTAG_DIGITALZOOMRATIO, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "DigitalZoomRatio", NULL },
+       { EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "FocalLengthIn35mmFilm", NULL },
+       { EXIFTAG_SCENECAPTURETYPE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SceneCaptureType", NULL },
+       { EXIFTAG_GAINCONTROL, 1, 1, TIFF_RATIONAL, 0, TIFF_SETGET_DOUBLE, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "GainControl", NULL },
+       { EXIFTAG_CONTRAST, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Contrast", NULL },
+       { EXIFTAG_SATURATION, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Saturation", NULL },
+       { EXIFTAG_SHARPNESS, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Sharpness", NULL },
+       { EXIFTAG_DEVICESETTINGDESCRIPTION, -1, -1, TIFF_UNDEFINED, 0, TIFF_SETGET_C16_UINT8, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 1, "DeviceSettingDescription", NULL },
+       { EXIFTAG_SUBJECTDISTANCERANGE, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "SubjectDistanceRange", NULL },
+       { EXIFTAG_IMAGEUNIQUEID, 33, 33, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "ImageUniqueID", NULL }
 };
 
-const TIFFFieldInfo *
-_TIFFGetFieldInfo(size_t *size)
+static TIFFFieldArray
+tiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields };
+static TIFFFieldArray
+exifFieldArray = { tfiatExif, 0, TIFFArrayCount(exifFields), exifFields };
+
+/*
+ *  We have our own local lfind() equivelent to avoid subtle differences
+ *  in types passed to lfind() on different systems. 
+ */
+
+static void *
+td_lfind(const void *key, const void *base, size_t *nmemb, size_t size,
+         int(*compar)(const void *, const void *))
+{
+    char *element, *end;
+
+    end = (char *)base + *nmemb * size;
+    for (element = (char *)base; element < end; element += size)
+        if (!compar(key, element))             /* key found */
+            return element;
+
+    return NULL;
+}
+
+const TIFFFieldArray*
+_TIFFGetFields(void)
 {
-       *size = TIFFArrayCount(tiffFieldInfo);
-       return tiffFieldInfo;
+       return(&tiffFieldArray);
 }
 
-const TIFFFieldInfo *
-_TIFFGetExifFieldInfo(size_t *size)
+const TIFFFieldArray*
+_TIFFGetExifFields(void)
 {
-       *size = TIFFArrayCount(exifFieldInfo);
-       return exifFieldInfo;
+       return(&exifFieldArray);
 }
 
 void
-_TIFFSetupFieldInfo(TIFF* tif, const TIFFFieldInfo info[], size_t n)
+_TIFFSetupFields(TIFF* tif, const TIFFFieldArray* fieldarray)
 {
-       if (tif->tif_fieldinfo) {
-               size_t  i;
+       if (tif->tif_fields && tif->tif_nfields > 0) {
+               uint32 i;
 
-               for (i = 0; i < tif->tif_nfields; i++) 
-               {
-                       TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
-                       if (fld->field_bit == FIELD_CUSTOM && 
+               for (i = 0; i < tif->tif_nfields; i++) {
+                       TIFFField *fld = tif->tif_fields[i];
+                       if (fld->field_bit == FIELD_CUSTOM &&
                                strncmp("Tag ", fld->field_name, 4) == 0) {
                                        _TIFFfree(fld->field_name);
                                        _TIFFfree(fld);
                                }
-               }   
-      
-               _TIFFfree(tif->tif_fieldinfo);
+               }
+
+               _TIFFfree(tif->tif_fields);
+               tif->tif_fields = NULL;
                tif->tif_nfields = 0;
        }
-       _TIFFMergeFieldInfo(tif, info, n);
+       if (!_TIFFMergeFields(tif, fieldarray->fields, fieldarray->count)) {
+               TIFFErrorExt(tif->tif_clientdata, "_TIFFSetupFields",
+                            "Setting up field info failed");
+       }
 }
 
 static int
 tagCompare(const void* a, const void* b)
 {
-       const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
-       const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
+       const TIFFField* ta = *(const TIFFField**) a;
+       const TIFFField* tb = *(const TIFFField**) b;
        /* NB: be careful of return values for 16-bit platforms */
        if (ta->field_tag != tb->field_tag)
-               return (ta->field_tag < tb->field_tag ? -1 : 1);
+               return (int)ta->field_tag - (int)tb->field_tag;
        else
-               return ((int)tb->field_type - (int)ta->field_type);
+               return (ta->field_type == TIFF_ANY) ?
+                       0 : ((int)tb->field_type - (int)ta->field_type);
 }
 
 static int
 tagNameCompare(const void* a, const void* b)
 {
-       const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
-       const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
+       const TIFFField* ta = *(const TIFFField**) a;
+       const TIFFField* tb = *(const TIFFField**) b;
+       int ret = strcmp(ta->field_name, tb->field_name);
 
-        return strcmp(ta->field_name, tb->field_name);
+       if (ret)
+               return ret;
+       else
+               return (ta->field_type == TIFF_ANY) ?
+                       0 : ((int)tb->field_type - (int)ta->field_type);
 }
 
-void
-_TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], int n)
+int
+_TIFFMergeFields(TIFF* tif, const TIFFField info[], uint32 n)
 {
-       TIFFFieldInfo** tp;
-       int i;
+       static const char module[] = "_TIFFMergeFields";
+       static const char reason[] = "for fields array";
+       /* TIFFField** tp; */
+       uint32 i;
 
         tif->tif_foundfield = NULL;
 
-       if (tif->tif_nfields > 0) {
-               tif->tif_fieldinfo = (TIFFFieldInfo**)
-                   _TIFFrealloc(tif->tif_fieldinfo,
-                       (tif->tif_nfields+n) * sizeof (TIFFFieldInfo*));
+       if (tif->tif_fields && tif->tif_nfields > 0) {
+               tif->tif_fields = (TIFFField**)
+                       _TIFFCheckRealloc(tif, tif->tif_fields,
+                                         (tif->tif_nfields + n),
+                                         sizeof(TIFFField *), reason);
        } else {
-               tif->tif_fieldinfo = (TIFFFieldInfo**)
-                   _TIFFmalloc(n * sizeof (TIFFFieldInfo*));
+               tif->tif_fields = (TIFFField **)
+                       _TIFFCheckMalloc(tif, n, sizeof(TIFFField *),
+                                        reason);
+       }
+       if (!tif->tif_fields) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Failed to allocate fields array");
+               return 0;
+       }
+
+       /* tp = tif->tif_fields + tif->tif_nfields; */
+       for (i = 0; i < n; i++) {
+               const TIFFField *fip =
+                       TIFFFindField(tif, info[i].field_tag, TIFF_ANY);
+
+                /* only add definitions that aren't already present */
+               if (!fip) {
+                        tif->tif_fields[tif->tif_nfields] = (TIFFField *) (info+i);
+                        tif->tif_nfields++;
+                }
        }
-       assert(tif->tif_fieldinfo != NULL);
-       tp = tif->tif_fieldinfo + tif->tif_nfields;
-       for (i = 0; i < n; i++)
-               *tp++ = (TIFFFieldInfo*) (info + i);    /* XXX */
 
         /* Sort the field info by tag number */
-        qsort(tif->tif_fieldinfo, tif->tif_nfields += n,
-             sizeof (TIFFFieldInfo*), tagCompare);
+       qsort(tif->tif_fields, tif->tif_nfields,
+             sizeof(TIFFField *), tagCompare);
+
+       return n;
 }
 
 void
 _TIFFPrintFieldInfo(TIFF* tif, FILE* fd)
 {
-       size_t i;
+       uint32 i;
 
        fprintf(fd, "%s: \n", tif->tif_name);
        for (i = 0; i < tif->tif_nfields; i++) {
-               const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
+               const TIFFField* fip = tif->tif_fields[i];
                fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n"
                        , (int)i
                        , (unsigned long) fip->field_tag
@@ -621,26 +431,29 @@ TIFFDataWidth(TIFFDataType type)
 {
        switch(type)
        {
-       case 0:  /* nothing */
-       case 1:  /* TIFF_BYTE */
-       case 2:  /* TIFF_ASCII */
-       case 6:  /* TIFF_SBYTE */
-       case 7:  /* TIFF_UNDEFINED */
-               return 1;
-       case 3:  /* TIFF_SHORT */
-       case 8:  /* TIFF_SSHORT */
-               return 2;
-       case 4:  /* TIFF_LONG */
-       case 9:  /* TIFF_SLONG */
-       case 11: /* TIFF_FLOAT */
-        case 13: /* TIFF_IFD */
-               return 4;
-       case 5:  /* TIFF_RATIONAL */
-       case 10: /* TIFF_SRATIONAL */
-       case 12: /* TIFF_DOUBLE */
-               return 8;
-       default:
-               return 0; /* will return 0 for unknown types */
+               case 0:  /* nothing */
+               case TIFF_BYTE:
+               case TIFF_ASCII:
+               case TIFF_SBYTE:
+               case TIFF_UNDEFINED:
+                       return 1;
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+                       return 2;
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_FLOAT:
+               case TIFF_IFD:
+                       return 4;
+               case TIFF_RATIONAL:
+               case TIFF_SRATIONAL:
+               case TIFF_DOUBLE:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+               case TIFF_IFD8:
+                       return 8;
+               default:
+                       return 0; /* will return 0 for unknown types */
        }
 }
 
@@ -654,7 +467,8 @@ TIFFDataWidth(TIFFDataType type)
 int
 _TIFFDataSize(TIFFDataType type)
 {
-       switch (type) {
+       switch (type)
+       {
                case TIFF_BYTE:
                case TIFF_SBYTE:
                case TIFF_ASCII:
@@ -671,161 +485,218 @@ _TIFFDataSize(TIFFDataType type)
                case TIFF_SRATIONAL:
                    return 4;
                case TIFF_DOUBLE:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+               case TIFF_IFD8:
                    return 8;
                default:
                    return 0;
        }
 }
 
-/*
- * Return nearest TIFFDataType to the sample type of an image.
- */
-TIFFDataType
-_TIFFSampleToTagType(TIFF* tif)
+const TIFFField*
+TIFFFindField(TIFF* tif, uint32 tag, TIFFDataType dt)
 {
-       uint32 bps = TIFFhowmany8(tif->tif_dir.td_bitspersample);
-
-       switch (tif->tif_dir.td_sampleformat) {
-       case SAMPLEFORMAT_IEEEFP:
-               return (bps == 4 ? TIFF_FLOAT : TIFF_DOUBLE);
-       case SAMPLEFORMAT_INT:
-               return (bps <= 1 ? TIFF_SBYTE :
-                   bps <= 2 ? TIFF_SSHORT : TIFF_SLONG);
-       case SAMPLEFORMAT_UINT:
-               return (bps <= 1 ? TIFF_BYTE :
-                   bps <= 2 ? TIFF_SHORT : TIFF_LONG);
-       case SAMPLEFORMAT_VOID:
-               return (TIFF_UNDEFINED);
-       }
-       /*NOTREACHED*/
-       return (TIFF_UNDEFINED);
-}
-
-const TIFFFieldInfo*
-_TIFFFindFieldInfo(TIFF* tif, ttag_t tag, TIFFDataType dt)
-{
-       int i, n;
-
+       TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL};
+       TIFFField* pkey = &key;
+       const TIFFField **ret;
        if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag &&
            (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
-               return (tif->tif_foundfield);
+               return tif->tif_foundfield;
+
+       /* If we are invoked with no field information, then just return. */
+       if (!tif->tif_fields)
+               return NULL;
+
        /* NB: use sorted search (e.g. binary search) */
-       if(dt != TIFF_ANY) {
-            TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
-           TIFFFieldInfo* pkey = &key;
-           const TIFFFieldInfo **ret;
-
-           key.field_tag = tag;
-            key.field_type = dt;
-
-           ret = (const TIFFFieldInfo **) bsearch(&pkey,
-                                                  tif->tif_fieldinfo, 
-                                                  tif->tif_nfields,
-                                                  sizeof(TIFFFieldInfo *), 
-                                                  tagCompare);
-           return (ret) ? (*ret) : NULL;
-        } else for (i = 0, n = tif->tif_nfields; i < n; i++) {
-               const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
-               if (fip->field_tag == tag &&
-                   (dt == TIFF_ANY || fip->field_type == dt))
-                       return (tif->tif_foundfield = fip);
-       }
-       return ((const TIFFFieldInfo *)0);
+
+       key.field_tag = tag;
+       key.field_type = dt;
+
+       ret = (const TIFFField **) bsearch(&pkey, tif->tif_fields,
+                                          tif->tif_nfields,
+                                          sizeof(TIFFField *), tagCompare);
+       return tif->tif_foundfield = (ret ? *ret : NULL);
 }
 
-const TIFFFieldInfo*
-_TIFFFindFieldInfoByName(TIFF* tif, const char *field_name, TIFFDataType dt)
+const TIFFField*
+_TIFFFindFieldByName(TIFF* tif, const char *field_name, TIFFDataType dt)
 {
-       int i, n;
-
+       TIFFField key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0, 0, 0, NULL, NULL};
+       TIFFField* pkey = &key;
+       const TIFFField **ret;
        if (tif->tif_foundfield
            && streq(tif->tif_foundfield->field_name, field_name)
            && (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
                return (tif->tif_foundfield);
-       /* NB: use sorted search (e.g. binary search) */
-       if(dt != TIFF_ANY) {
-            TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
-           TIFFFieldInfo* pkey = &key;
-           const TIFFFieldInfo **ret;
-
-            key.field_name = (char *)field_name;
-            key.field_type = dt;
-
-            ret = (const TIFFFieldInfo **) lfind(&pkey,
-                                                tif->tif_fieldinfo, 
-                                                &tif->tif_nfields,
-                                                sizeof(TIFFFieldInfo *),
-                                                tagNameCompare);
-           return (ret) ? (*ret) : NULL;
-        } else
-               for (i = 0, n = tif->tif_nfields; i < n; i++) {
-                       const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
-                       if (streq(fip->field_name, field_name) &&
-                           (dt == TIFF_ANY || fip->field_type == dt))
-                               return (tif->tif_foundfield = fip);
-               }
-       return ((const TIFFFieldInfo *)0);
+
+       /* If we are invoked with no field information, then just return. */
+       if (!tif->tif_fields)
+               return NULL;
+
+       /* NB: use linear search since list is sorted by key#, not name */
+
+       key.field_name = (char *)field_name;
+       key.field_type = dt;
+
+       ret = (const TIFFField **) 
+            td_lfind(&pkey, tif->tif_fields, &tif->tif_nfields,
+                     sizeof(TIFFField *), tagNameCompare);
+
+       return tif->tif_foundfield = (ret ? *ret : NULL);
 }
 
-const TIFFFieldInfo*
-_TIFFFieldWithTag(TIFF* tif, ttag_t tag)
+const TIFFField*
+TIFFFieldWithTag(TIFF* tif, uint32 tag)
 {
-       const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
+       const TIFFField* fip = TIFFFindField(tif, tag, TIFF_ANY);
        if (!fip) {
                TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag",
-                         "Internal error, unknown tag 0x%x",
-                          (unsigned int) tag);
-               assert(fip != NULL);
-               /*NOTREACHED*/
+                            "Internal error, unknown tag 0x%x",
+                            (unsigned int) tag);
        }
        return (fip);
 }
 
-const TIFFFieldInfo*
-_TIFFFieldWithName(TIFF* tif, const char *field_name)
+const TIFFField*
+TIFFFieldWithName(TIFF* tif, const char *field_name)
 {
-       const TIFFFieldInfo* fip =
-               _TIFFFindFieldInfoByName(tif, field_name, TIFF_ANY);
+       const TIFFField* fip =
+               _TIFFFindFieldByName(tif, field_name, TIFF_ANY);
        if (!fip) {
                TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithName",
-                         "Internal error, unknown tag %s", field_name);
-               assert(fip != NULL);
-               /*NOTREACHED*/
+                            "Internal error, unknown tag %s", field_name);
        }
        return (fip);
 }
 
-const TIFFFieldInfo*
-_TIFFFindOrRegisterFieldInfo( TIFF *tif, ttag_t tag, TIFFDataType dt )
+uint32
+TIFFFieldTag(const TIFFField* fip)
+{
+       return fip->field_tag;
+}
+
+const char *
+TIFFFieldName(const TIFFField* fip)
+{
+       return fip->field_name;
+}
+
+TIFFDataType
+TIFFFieldDataType(const TIFFField* fip)
+{
+       return fip->field_type;
+}
+
+int
+TIFFFieldPassCount(const TIFFField* fip)
+{
+       return fip->field_passcount;
+}
+
+int
+TIFFFieldReadCount(const TIFFField* fip)
+{
+       return fip->field_readcount;
+}
+
+int
+TIFFFieldWriteCount(const TIFFField* fip)
+{
+       return fip->field_writecount;
+}
+
+const TIFFField*
+_TIFFFindOrRegisterField(TIFF *tif, uint32 tag, TIFFDataType dt)
 
 {
-    const TIFFFieldInfo *fld;
+       const TIFFField *fld;
 
-    fld = _TIFFFindFieldInfo( tif, tag, dt );
-    if( fld == NULL )
-    {
-        fld = _TIFFCreateAnonFieldInfo( tif, tag, dt );
-        _TIFFMergeFieldInfo( tif, fld, 1 );
-    }
+       fld = TIFFFindField(tif, tag, dt);
+       if (fld == NULL) {
+               fld = _TIFFCreateAnonField(tif, tag, dt);
+               if (!_TIFFMergeFields(tif, fld, 1))
+                       return NULL;
+       }
 
-    return fld;
+       return fld;
 }
 
-TIFFFieldInfo*
-_TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
+TIFFField*
+_TIFFCreateAnonField(TIFF *tif, uint32 tag, TIFFDataType field_type)
 {
-       TIFFFieldInfo *fld;
+       TIFFField *fld;
        (void) tif;
 
-       fld = (TIFFFieldInfo *) _TIFFmalloc(sizeof (TIFFFieldInfo));
+       fld = (TIFFField *) _TIFFmalloc(sizeof (TIFFField));
        if (fld == NULL)
            return NULL;
-       _TIFFmemset( fld, 0, sizeof(TIFFFieldInfo) );
+       _TIFFmemset(fld, 0, sizeof(TIFFField));
 
        fld->field_tag = tag;
-       fld->field_readcount = TIFF_VARIABLE;
-       fld->field_writecount = TIFF_VARIABLE;
+       fld->field_readcount = TIFF_VARIABLE2;
+       fld->field_writecount = TIFF_VARIABLE2;
        fld->field_type = field_type;
+       fld->reserved = 0;
+       switch (field_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_UNDEFINED:
+                       fld->set_field_type = TIFF_SETGET_C32_UINT8;
+                       fld->get_field_type = TIFF_SETGET_C32_UINT8;
+                       break;
+               case TIFF_ASCII:
+                       fld->set_field_type = TIFF_SETGET_C32_ASCII;
+                       fld->get_field_type = TIFF_SETGET_C32_ASCII;
+                       break;
+               case TIFF_SHORT:
+                       fld->set_field_type = TIFF_SETGET_C32_UINT16;
+                       fld->get_field_type = TIFF_SETGET_C32_UINT16;
+                       break;
+               case TIFF_LONG:
+                       fld->set_field_type = TIFF_SETGET_C32_UINT32;
+                       fld->get_field_type = TIFF_SETGET_C32_UINT32;
+                       break;
+               case TIFF_RATIONAL:
+               case TIFF_SRATIONAL:
+               case TIFF_FLOAT:
+                       fld->set_field_type = TIFF_SETGET_C32_FLOAT;
+                       fld->get_field_type = TIFF_SETGET_C32_FLOAT;
+                       break;
+               case TIFF_SBYTE:
+                       fld->set_field_type = TIFF_SETGET_C32_SINT8;
+                       fld->get_field_type = TIFF_SETGET_C32_SINT8;
+                       break;
+               case TIFF_SSHORT:
+                       fld->set_field_type = TIFF_SETGET_C32_SINT16;
+                       fld->get_field_type = TIFF_SETGET_C32_SINT16;
+                       break;
+               case TIFF_SLONG:
+                       fld->set_field_type = TIFF_SETGET_C32_SINT32;
+                       fld->get_field_type = TIFF_SETGET_C32_SINT32;
+                       break;
+               case TIFF_DOUBLE:
+                       fld->set_field_type = TIFF_SETGET_C32_DOUBLE;
+                       fld->get_field_type = TIFF_SETGET_C32_DOUBLE;
+                       break;
+               case TIFF_IFD:
+               case TIFF_IFD8:
+                       fld->set_field_type = TIFF_SETGET_C32_IFD8;
+                       fld->get_field_type = TIFF_SETGET_C32_IFD8;
+                       break;
+               case TIFF_LONG8:
+                       fld->set_field_type = TIFF_SETGET_C32_UINT64;
+                       fld->get_field_type = TIFF_SETGET_C32_UINT64;
+                       break;
+               case TIFF_SLONG8:
+                       fld->set_field_type = TIFF_SETGET_C32_SINT64;
+                       fld->get_field_type = TIFF_SETGET_C32_SINT64;
+                       break;
+               default:
+                       fld->set_field_type = TIFF_SETGET_UNDEFINED;
+                       fld->get_field_type = TIFF_SETGET_UNDEFINED;
+                       break;
+       }
        fld->field_bit = FIELD_CUSTOM;
        fld->field_oktochange = TRUE;
        fld->field_passcount = TRUE;
@@ -834,13 +705,253 @@ _TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
            _TIFFfree(fld);
            return NULL;
        }
+       fld->field_subfields = NULL;
 
-       /* note that this name is a special sign to TIFFClose() and
-        * _TIFFSetupFieldInfo() to free the field
+       /* 
+        * note that this name is a special sign to TIFFClose() and
+        * _TIFFSetupFields() to free the field
         */
        sprintf(fld->field_name, "Tag %d", (int) tag);
 
        return fld;    
 }
 
+/****************************************************************************
+ *               O B S O L E T E D    I N T E R F A C E S
+ *
+ * Don't use this stuff in your applications, it may be removed in the future
+ * libtiff versions.
+ ****************************************************************************/
+
+static TIFFSetGetFieldType
+_TIFFSetGetType(TIFFDataType type, short count, unsigned char passcount)
+{
+       if (type == TIFF_ASCII && count == TIFF_VARIABLE && passcount == 0)
+               return TIFF_SETGET_ASCII;
+
+       else if (count == 1 && passcount == 0) {
+               switch (type)
+               {
+                       case TIFF_BYTE:
+                       case TIFF_UNDEFINED:
+                               return TIFF_SETGET_UINT8;
+                       case TIFF_ASCII:
+                               return TIFF_SETGET_ASCII;
+                       case TIFF_SHORT:
+                               return TIFF_SETGET_UINT16;
+                       case TIFF_LONG:
+                               return TIFF_SETGET_UINT32;
+                       case TIFF_RATIONAL:
+                       case TIFF_SRATIONAL:
+                       case TIFF_FLOAT:
+                               return TIFF_SETGET_FLOAT;
+                       case TIFF_SBYTE:
+                               return TIFF_SETGET_SINT8;
+                       case TIFF_SSHORT:
+                               return TIFF_SETGET_SINT16;
+                       case TIFF_SLONG:
+                               return TIFF_SETGET_SINT32;
+                       case TIFF_DOUBLE:
+                               return TIFF_SETGET_DOUBLE;
+                       case TIFF_IFD:
+                       case TIFF_IFD8:
+                               return TIFF_SETGET_IFD8;
+                       case TIFF_LONG8:
+                               return TIFF_SETGET_UINT64;
+                       case TIFF_SLONG8:
+                               return TIFF_SETGET_SINT64;
+                       default:
+                               return TIFF_SETGET_UNDEFINED;
+               }
+       }
+
+       else if (count >= 1 && passcount == 0) {
+               switch (type)
+               {
+                       case TIFF_BYTE:
+                       case TIFF_UNDEFINED:
+                               return TIFF_SETGET_C0_UINT8;
+                       case TIFF_ASCII:
+                               return TIFF_SETGET_C0_ASCII;
+                       case TIFF_SHORT:
+                               return TIFF_SETGET_C0_UINT16;
+                       case TIFF_LONG:
+                               return TIFF_SETGET_C0_UINT32;
+                       case TIFF_RATIONAL:
+                       case TIFF_SRATIONAL:
+                       case TIFF_FLOAT:
+                               return TIFF_SETGET_C0_FLOAT;
+                       case TIFF_SBYTE:
+                               return TIFF_SETGET_C0_SINT8;
+                       case TIFF_SSHORT:
+                               return TIFF_SETGET_C0_SINT16;
+                       case TIFF_SLONG:
+                               return TIFF_SETGET_C0_SINT32;
+                       case TIFF_DOUBLE:
+                               return TIFF_SETGET_C0_DOUBLE;
+                       case TIFF_IFD:
+                       case TIFF_IFD8:
+                               return TIFF_SETGET_C0_IFD8;
+                       case TIFF_LONG8:
+                               return TIFF_SETGET_C0_UINT64;
+                       case TIFF_SLONG8:
+                               return TIFF_SETGET_C0_SINT64;
+                       default:
+                               return TIFF_SETGET_UNDEFINED;
+               }
+       }
+
+       else if (count == TIFF_VARIABLE && passcount == 1) {
+               switch (type)
+               {
+                       case TIFF_BYTE:
+                       case TIFF_UNDEFINED:
+                               return TIFF_SETGET_C16_UINT8;
+                       case TIFF_ASCII:
+                               return TIFF_SETGET_C16_ASCII;
+                       case TIFF_SHORT:
+                               return TIFF_SETGET_C16_UINT16;
+                       case TIFF_LONG:
+                               return TIFF_SETGET_C16_UINT32;
+                       case TIFF_RATIONAL:
+                       case TIFF_SRATIONAL:
+                       case TIFF_FLOAT:
+                               return TIFF_SETGET_C16_FLOAT;
+                       case TIFF_SBYTE:
+                               return TIFF_SETGET_C16_SINT8;
+                       case TIFF_SSHORT:
+                               return TIFF_SETGET_C16_SINT16;
+                       case TIFF_SLONG:
+                               return TIFF_SETGET_C16_SINT32;
+                       case TIFF_DOUBLE:
+                               return TIFF_SETGET_C16_DOUBLE;
+                       case TIFF_IFD:
+                       case TIFF_IFD8:
+                               return TIFF_SETGET_C16_IFD8;
+                       case TIFF_LONG8:
+                               return TIFF_SETGET_C16_UINT64;
+                       case TIFF_SLONG8:
+                               return TIFF_SETGET_C16_SINT64;
+                       default:
+                               return TIFF_SETGET_UNDEFINED;
+               }
+       }
+
+       else if (count == TIFF_VARIABLE2 && passcount == 1) {
+               switch (type)
+               {
+                       case TIFF_BYTE:
+                       case TIFF_UNDEFINED:
+                               return TIFF_SETGET_C32_UINT8;
+                       case TIFF_ASCII:
+                               return TIFF_SETGET_C32_ASCII;
+                       case TIFF_SHORT:
+                               return TIFF_SETGET_C32_UINT16;
+                       case TIFF_LONG:
+                               return TIFF_SETGET_C32_UINT32;
+                       case TIFF_RATIONAL:
+                       case TIFF_SRATIONAL:
+                       case TIFF_FLOAT:
+                               return TIFF_SETGET_C32_FLOAT;
+                       case TIFF_SBYTE:
+                               return TIFF_SETGET_C32_SINT8;
+                       case TIFF_SSHORT:
+                               return TIFF_SETGET_C32_SINT16;
+                       case TIFF_SLONG:
+                               return TIFF_SETGET_C32_SINT32;
+                       case TIFF_DOUBLE:
+                               return TIFF_SETGET_C32_DOUBLE;
+                       case TIFF_IFD:
+                       case TIFF_IFD8:
+                               return TIFF_SETGET_C32_IFD8;
+                       case TIFF_LONG8:
+                               return TIFF_SETGET_C32_UINT64;
+                       case TIFF_SLONG8:
+                               return TIFF_SETGET_C32_SINT64;
+                       default:
+                               return TIFF_SETGET_UNDEFINED;
+               }
+       }
+
+       return TIFF_SETGET_UNDEFINED;
+}
+
+int
+TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], uint32 n)
+{
+       static const char module[] = "TIFFMergeFieldInfo";
+       static const char reason[] = "for fields array";
+       TIFFField *tp;
+       size_t nfields;
+       uint32 i;
+
+       if (tif->tif_nfieldscompat > 0) {
+               tif->tif_fieldscompat = (TIFFFieldArray *)
+                       _TIFFCheckRealloc(tif, tif->tif_fieldscompat,
+                                         tif->tif_nfieldscompat + 1,
+                                         sizeof(TIFFFieldArray), reason);
+       } else {
+               tif->tif_fieldscompat = (TIFFFieldArray *)
+                       _TIFFCheckMalloc(tif, 1, sizeof(TIFFFieldArray),
+                                        reason);
+       }
+       if (!tif->tif_fieldscompat) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Failed to allocate fields array");
+               return -1;
+       }
+       nfields = tif->tif_nfieldscompat++;
+
+       tif->tif_fieldscompat[nfields].type = tfiatOther;
+       tif->tif_fieldscompat[nfields].allocated_size = n;
+       tif->tif_fieldscompat[nfields].count = n;
+       tif->tif_fieldscompat[nfields].fields =
+               (TIFFField *)_TIFFCheckMalloc(tif, n, sizeof(TIFFField),
+                                             reason);
+       if (!tif->tif_fieldscompat[nfields].fields) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Failed to allocate fields array");
+               return -1;
+       }
+
+       tp = tif->tif_fieldscompat[nfields].fields;
+       for (i = 0; i < n; i++) {
+               tp->field_tag = info[i].field_tag;
+               tp->field_readcount = info[i].field_readcount;
+               tp->field_writecount = info[i].field_writecount;
+               tp->field_type = info[i].field_type;
+               tp->reserved = 0;
+               tp->set_field_type =
+                    _TIFFSetGetType(info[i].field_type,
+                               info[i].field_readcount,
+                               info[i].field_passcount);
+               tp->get_field_type =
+                    _TIFFSetGetType(info[i].field_type,
+                               info[i].field_readcount,
+                               info[i].field_passcount);
+               tp->field_bit = info[i].field_bit;
+               tp->field_oktochange = info[i].field_oktochange;
+               tp->field_passcount = info[i].field_passcount;
+               tp->field_name = info[i].field_name;
+               tp->field_subfields = NULL;
+               tp++;
+       }
+
+       if (!_TIFFMergeFields(tif, tif->tif_fieldscompat[nfields].fields, n)) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Setting up field info failed");
+               return -1;
+       }
+
+       return 0;
+}
+
 /* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 1e56bc95bcce6c8b85ff6a9386d581c992ef27e8..f264fddb9ddd3e8ba4df209b6cfc2a9d340fa60a 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
  *
  * Directory Read Support Routines.
  */
+
+/* Suggested pending improvements:
+ * - add a field 'ignore' to the TIFFDirEntry structure, to flag status,
+ *   eliminating current use of the IGNORE value, and therefore eliminating
+ *   current irrational behaviour on tags with tag id code 0
+ * - add a field 'field_info' to the TIFFDirEntry structure, and set that with
+ *   the pointer to the appropriate TIFFField structure early on in
+ *   TIFFReadDirectory, so as to eliminate current possibly repetitive lookup.
+ */
+
 #include "tiffiop.h"
 
-#define        IGNORE  0               /* tag placeholder used below */
+#define IGNORE 0          /* tag placeholder used below */
+#define FAILED_FII    ((uint32) -1)
 
 #ifdef HAVE_IEEEFP
-# define       TIFFCvtIEEEFloatToNative(tif, n, fp)
-# define       TIFFCvtIEEEDoubleToNative(tif, n, dp)
+# define TIFFCvtIEEEFloatToNative(tif, n, fp)
+# define TIFFCvtIEEEDoubleToNative(tif, n, dp)
 #else
-extern void TIFFCvtIEEEFloatToNative(TIFF*, uint32, float*);
-extern void TIFFCvtIEEEDoubleToNative(TIFF*, uint32, double*);
+extern void TIFFCvtIEEEFloatToNative(TIFF*, uint32, float*);
+extern void TIFFCvtIEEEDoubleToNative(TIFF*, uint32, double*);
+#endif
+
+enum TIFFReadDirEntryErr {
+       TIFFReadDirEntryErrOk = 0,
+       TIFFReadDirEntryErrCount = 1,
+       TIFFReadDirEntryErrType = 2,
+       TIFFReadDirEntryErrIo = 3,
+       TIFFReadDirEntryErrRange = 4,
+       TIFFReadDirEntryErrPsdif = 5,
+       TIFFReadDirEntryErrSizesan = 6,
+       TIFFReadDirEntryErrAlloc = 7,
+};
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryByte(TIFF* tif, TIFFDirEntry* direntry, uint8* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong(TIFF* tif, TIFFDirEntry* direntry, uint32* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong8(TIFF* tif, TIFFDirEntry* direntry, uint64* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryFloat(TIFF* tif, TIFFDirEntry* direntry, float* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryDouble(TIFF* tif, TIFFDirEntry* direntry, double* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryIfd8(TIFF* tif, TIFFDirEntry* direntry, uint64* value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryArray(TIFF* tif, TIFFDirEntry* direntry, uint32* count, uint32 desttypesize, void** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryByteArray(TIFF* tif, TIFFDirEntry* direntry, uint8** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySbyteArray(TIFF* tif, TIFFDirEntry* direntry, int8** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryShortArray(TIFF* tif, TIFFDirEntry* direntry, uint16** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySshortArray(TIFF* tif, TIFFDirEntry* direntry, int16** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLongArray(TIFF* tif, TIFFDirEntry* direntry, uint32** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySlongArray(TIFF* tif, TIFFDirEntry* direntry, int32** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong8Array(TIFF* tif, TIFFDirEntry* direntry, uint64** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySlong8Array(TIFF* tif, TIFFDirEntry* direntry, int64** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryFloatArray(TIFF* tif, TIFFDirEntry* direntry, float** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryDoubleArray(TIFF* tif, TIFFDirEntry* direntry, double** value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryIfd8Array(TIFF* tif, TIFFDirEntry* direntry, uint64** value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryPersampleShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value);
+#if 0
+static enum TIFFReadDirEntryErr TIFFReadDirEntryPersampleDouble(TIFF* tif, TIFFDirEntry* direntry, double* value);
 #endif
 
-static int EstimateStripByteCounts(TIFF*, TIFFDirEntry*, uint16);
-static void MissingRequired(TIFF*, const char*);
-static int CheckDirCount(TIFF*, TIFFDirEntry*, uint32);
-static tsize_t TIFFFetchData(TIFF*, TIFFDirEntry*, char*);
-static tsize_t TIFFFetchString(TIFF*, TIFFDirEntry*, char*);
-static float TIFFFetchRational(TIFF*, TIFFDirEntry*);
-static int TIFFFetchNormalTag(TIFF*, TIFFDirEntry*);
-static int TIFFFetchPerSampleShorts(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFFetchPerSampleLongs(TIFF*, TIFFDirEntry*, uint32*);
-static int TIFFFetchPerSampleAnys(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFFetchStripThing(TIFF*, TIFFDirEntry*, long, uint32**);
-static int TIFFFetchRefBlackWhite(TIFF*, TIFFDirEntry*);
-static float TIFFFetchFloat(TIFF*, TIFFDirEntry*);
-static int TIFFFetchFloatArray(TIFF*, TIFFDirEntry*, float*);
-static int TIFFFetchDoubleArray(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchAnyArray(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchShortPair(TIFF*, TIFFDirEntry*);
-static void ChopUpSingleUncompressedStrip(TIFF*);
+static void TIFFReadDirEntryCheckedByte(TIFF* tif, TIFFDirEntry* direntry, uint8* value);
+static void TIFFReadDirEntryCheckedSbyte(TIFF* tif, TIFFDirEntry* direntry, int8* value);
+static void TIFFReadDirEntryCheckedShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value);
+static void TIFFReadDirEntryCheckedSshort(TIFF* tif, TIFFDirEntry* direntry, int16* value);
+static void TIFFReadDirEntryCheckedLong(TIFF* tif, TIFFDirEntry* direntry, uint32* value);
+static void TIFFReadDirEntryCheckedSlong(TIFF* tif, TIFFDirEntry* direntry, int32* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedLong8(TIFF* tif, TIFFDirEntry* direntry, uint64* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedSlong8(TIFF* tif, TIFFDirEntry* direntry, int64* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedRational(TIFF* tif, TIFFDirEntry* direntry, double* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedSrational(TIFF* tif, TIFFDirEntry* direntry, double* value);
+static void TIFFReadDirEntryCheckedFloat(TIFF* tif, TIFFDirEntry* direntry, float* value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedDouble(TIFF* tif, TIFFDirEntry* direntry, double* value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSbyte(int8 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteShort(uint16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSshort(int16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteLong(uint32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSlong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteByte(uint8 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteShort(uint16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSshort(int16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteLong(uint32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSlong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSbyte(int8 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSshort(int16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortLong(uint32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSlong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortShort(uint16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortLong(uint32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortSlong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSbyte(int8 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSshort(int16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSlong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSlongLong(uint32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSlongLong8(uint64 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSlongSlong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLong8Sbyte(int8 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLong8Sshort(int16 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLong8Slong(int32 value);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLong8Slong8(int64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSlong8Long8(uint64 value);
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryData(TIFF* tif, uint64 offset, tmsize_t size, void* dest);
+static void TIFFReadDirEntryOutputErr(TIFF* tif, enum TIFFReadDirEntryErr err, const char* module, const char* tagname, int recover);
+
+static void TIFFReadDirectoryCheckOrder(TIFF* tif, TIFFDirEntry* dir, uint16 dircount);
+static TIFFDirEntry* TIFFReadDirectoryFindEntry(TIFF* tif, TIFFDirEntry* dir, uint16 dircount, uint16 tagid);
+static void TIFFReadDirectoryFindFieldInfo(TIFF* tif, uint16 tagid, uint32* fii);
+
+static int EstimateStripByteCounts(TIFF* tif, TIFFDirEntry* dir, uint16 dircount);
+static void MissingRequired(TIFF*, const char*);
+static int TIFFCheckDirOffset(TIFF* tif, uint64 diroff);
+static int CheckDirCount(TIFF*, TIFFDirEntry*, uint32);
+static uint16 TIFFFetchDirectory(TIFF* tif, uint64 diroff, TIFFDirEntry** pdir, uint64* nextdiroff);
+static int TIFFFetchNormalTag(TIFF*, TIFFDirEntry*, int recover);
+static int TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, uint32 nstrips, uint64** lpp);
+static int TIFFFetchSubjectDistance(TIFF*, TIFFDirEntry*);
+static void ChopUpSingleUncompressedStrip(TIFF*);
+static uint64 TIFFReadUInt64(const uint8 *value);
+
+typedef union _UInt64Aligned_t
+{
+        double d;
+       uint64 l;
+       uint32 i[2];
+       uint16 s[4];
+       uint8  c[8];
+} UInt64Aligned_t;
 
 /*
- * Read the next TIFF directory from a file
- * and convert it to the internal format.
- * We read directories sequentially.
- */
-int
-TIFFReadDirectory(TIFF* tif)
+  Unaligned safe copy of a uint64 value from an octet array.
+*/
+static uint64 TIFFReadUInt64(const uint8 *value)
 {
-       static const char module[] = "TIFFReadDirectory";
+       UInt64Aligned_t result;
 
-       int n;
-       TIFFDirectory* td;
-       TIFFDirEntry *dp, *dir = NULL;
-       uint16 iv;
-       uint32 v;
-       const TIFFFieldInfo* fip;
-       size_t fix;
-       uint16 dircount;
-       toff_t nextdiroff;
-       int diroutoforderwarning = 0;
-       toff_t* new_dirlist;
+       result.c[0]=value[0];
+       result.c[1]=value[1];
+       result.c[2]=value[2];
+       result.c[3]=value[3];
+       result.c[4]=value[4];
+       result.c[5]=value[5];
+       result.c[6]=value[6];
+       result.c[7]=value[7];
 
-       tif->tif_diroff = tif->tif_nextdiroff;
-       if (tif->tif_diroff == 0)               /* no more directories */
-               return (0);
+       return result.l;
+}
 
-       /*
-        * XXX: Trick to prevent IFD looping. The one can create TIFF file
-        * with looped directory pointers. We will maintain a list of already
-        * seen directories and check every IFD offset against this list.
-        */
-       for (n = 0; n < tif->tif_dirnumber; n++) {
-               if (tif->tif_dirlist[n] == tif->tif_diroff)
-                       return (0);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryByte(TIFF* tif, TIFFDirEntry* direntry, uint8* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       TIFFReadDirEntryCheckedByte(tif,direntry,value);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeByteSbyte(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       {
+                               uint16 m;
+                               TIFFReadDirEntryCheckedShort(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeByteShort(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeByteSshort(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeByteLong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeByteSlong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       {
+                               uint64 m;
+                               err=TIFFReadDirEntryCheckedLong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeByteLong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeByteSlong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint8)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               default:
+                       return(TIFFReadDirEntryErrType);
        }
-       tif->tif_dirnumber++;
-       new_dirlist = (toff_t *)_TIFFrealloc(tif->tif_dirlist,
-                                       tif->tif_dirnumber * sizeof(toff_t));
-       if (!new_dirlist) {
-               TIFFErrorExt(tif->tif_clientdata, module,
-                         "%s: Failed to allocate space for IFD list",
-                         tif->tif_name);
-               return (0);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8 m;
+                               TIFFReadDirEntryCheckedByte(tif,direntry,&m);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeShortSbyte(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       TIFFReadDirEntryCheckedShort(tif,direntry,value);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeShortSshort(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeShortLong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeShortSlong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       {
+                               uint64 m;
+                               err=TIFFReadDirEntryCheckedLong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeShortLong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeShortSlong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint16)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               default:
+                       return(TIFFReadDirEntryErrType);
        }
-       tif->tif_dirlist = new_dirlist;
-       tif->tif_dirlist[tif->tif_dirnumber - 1] = tif->tif_diroff;
+}
 
-       /*
-        * Cleanup any previous compression state.
-        */
-       (*tif->tif_cleanup)(tif);
-       tif->tif_curdir++;
-       nextdiroff = 0;
-       if (!isMapped(tif)) {
-               if (!SeekOK(tif, tif->tif_diroff)) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Seek error accessing TIFF directory",
-                            tif->tif_name);
-                       return (0);
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong(TIFF* tif, TIFFDirEntry* direntry, uint32* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8 m;
+                               TIFFReadDirEntryCheckedByte(tif,direntry,&m);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLongSbyte(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       {
+                               uint16 m;
+                               TIFFReadDirEntryCheckedShort(tif,direntry,&m);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLongSshort(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       TIFFReadDirEntryCheckedLong(tif,direntry,value);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLongSlong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       {
+                               uint64 m;
+                               err=TIFFReadDirEntryCheckedLong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeLongLong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeLongSlong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint32)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong8(TIFF* tif, TIFFDirEntry* direntry, uint64* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8 m;
+                               TIFFReadDirEntryCheckedByte(tif,direntry,&m);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLong8Sbyte(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       {
+                               uint16 m;
+                               TIFFReadDirEntryCheckedShort(tif,direntry,&m);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLong8Sshort(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               err=TIFFReadDirEntryCheckRangeLong8Slong(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       err=TIFFReadDirEntryCheckedLong8(tif,direntry,value);
+                       return(err);
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               err=TIFFReadDirEntryCheckRangeLong8Slong8(m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryFloat(TIFF* tif, TIFFDirEntry* direntry, float* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8 m;
+                               TIFFReadDirEntryCheckedByte(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       {
+                               uint16 m;
+                               TIFFReadDirEntryCheckedShort(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       {
+                               uint64 m;
+                               err=TIFFReadDirEntryCheckedLong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+#if defined(__WIN32__) && (_MSC_VER < 1500)
+                               /*
+                                * XXX: MSVC 6.0 does not support conversion
+                                * of 64-bit integers into floating point
+                                * values.
+                                */
+                               *value = _TIFFUInt64ToFloat(m);
+#else
+                               *value=(float)m;
+#endif
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_RATIONAL:
+                       {
+                               double m;
+                               err=TIFFReadDirEntryCheckedRational(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SRATIONAL:
+                       {
+                               double m;
+                               err=TIFFReadDirEntryCheckedSrational(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_FLOAT:
+                       TIFFReadDirEntryCheckedFloat(tif,direntry,value);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_DOUBLE:
+                       {
+                               double m;
+                               err=TIFFReadDirEntryCheckedDouble(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(float)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryDouble(TIFF* tif, TIFFDirEntry* direntry, double* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8 m;
+                               TIFFReadDirEntryCheckedByte(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       {
+                               int8 m;
+                               TIFFReadDirEntryCheckedSbyte(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SHORT:
+                       {
+                               uint16 m;
+                               TIFFReadDirEntryCheckedShort(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       {
+                               int16 m;
+                               TIFFReadDirEntryCheckedSshort(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       {
+                               int32 m;
+                               TIFFReadDirEntryCheckedSlong(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+                       {
+                               uint64 m;
+                               err=TIFFReadDirEntryCheckedLong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+#if defined(__WIN32__) && (_MSC_VER < 1500)
+                               /*
+                                * XXX: MSVC 6.0 does not support conversion
+                                * of 64-bit integers into floating point
+                                * values.
+                                */
+                               *value = _TIFFUInt64ToDouble(m);
+#else
+                               *value = (double)m;
+#endif
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       {
+                               int64 m;
+                               err=TIFFReadDirEntryCheckedSlong8(tif,direntry,&m);
+                               if (err!=TIFFReadDirEntryErrOk)
+                                       return(err);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_RATIONAL:
+                       err=TIFFReadDirEntryCheckedRational(tif,direntry,value);
+                       return(err);
+               case TIFF_SRATIONAL:
+                       err=TIFFReadDirEntryCheckedSrational(tif,direntry,value);
+                       return(err);
+               case TIFF_FLOAT:
+                       {
+                               float m;
+                               TIFFReadDirEntryCheckedFloat(tif,direntry,&m);
+                               *value=(double)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_DOUBLE:
+                       err=TIFFReadDirEntryCheckedDouble(tif,direntry,value);
+                       return(err);
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryIfd8(TIFF* tif, TIFFDirEntry* direntry, uint64* value)
+{
+       enum TIFFReadDirEntryErr err;
+       if (direntry->tdir_count!=1)
+               return(TIFFReadDirEntryErrCount);
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG:
+               case TIFF_IFD:
+                       {
+                               uint32 m;
+                               TIFFReadDirEntryCheckedLong(tif,direntry,&m);
+                               *value=(uint64)m;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_LONG8:
+               case TIFF_IFD8:
+                       err=TIFFReadDirEntryCheckedLong8(tif,direntry,value);
+                       return(err);
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryArray(TIFF* tif, TIFFDirEntry* direntry, uint32* count, uint32 desttypesize, void** value)
+{
+       int typesize;
+       uint32 datasize;
+       void* data;
+       typesize=TIFFDataWidth(direntry->tdir_type);
+       if ((direntry->tdir_count==0)||(typesize==0))
+       {
+               *value=0;
+               return(TIFFReadDirEntryErrOk);
+       }
+        (void) desttypesize;
+
+        /* 
+         * As a sanity check, make sure we have no more than a 2GB tag array 
+         * in either the current data type or the dest data type.  This also
+         * avoids problems with overflow of tmsize_t on 32bit systems.
+         */
+       if ((uint64)(2147483647/typesize)<direntry->tdir_count)
+               return(TIFFReadDirEntryErrSizesan);
+       if ((uint64)(2147483647/desttypesize)<direntry->tdir_count)
+               return(TIFFReadDirEntryErrSizesan);
+
+       *count=(uint32)direntry->tdir_count;
+       datasize=(*count)*typesize;
+       assert((tmsize_t)datasize>0);
+       data=_TIFFCheckMalloc(tif, *count, typesize, "ReadDirEntryArray");
+       if (data==0)
+               return(TIFFReadDirEntryErrAlloc);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               if (datasize<=4)
+                       _TIFFmemcpy(data,&direntry->tdir_offset,datasize);
+               else
+               {
+                       enum TIFFReadDirEntryErr err;
+                       uint32 offset = direntry->tdir_offset.toff_long;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong(&offset);
+                       err=TIFFReadDirEntryData(tif,(uint64)offset,(tmsize_t)datasize,data);
+                       if (err!=TIFFReadDirEntryErrOk)
+                       {
+                               _TIFFfree(data);
+                               return(err);
+                       }
                }
-               if (!ReadOK(tif, &dircount, sizeof (uint16))) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-                       return (0);
+       }
+       else
+       {
+               if (datasize<=8)
+                       _TIFFmemcpy(data,&direntry->tdir_offset,datasize);
+               else
+               {
+                       enum TIFFReadDirEntryErr err;
+                       uint64 offset = direntry->tdir_offset.toff_long8;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8(&offset);
+                       err=TIFFReadDirEntryData(tif,offset,(tmsize_t)datasize,data);
+                       if (err!=TIFFReadDirEntryErrOk)
+                       {
+                               _TIFFfree(data);
+                               return(err);
+                       }
                }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-                                                      sizeof (TIFFDirEntry),
-                                               "to read TIFF directory");
-               if (dir == NULL)
-                       return (0);
-               if (!ReadOK(tif, dir, dircount*sizeof (TIFFDirEntry))) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%.100s: Can not read TIFF directory",
-                                  tif->tif_name);
-                       goto bad;
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryByteArray(TIFF* tif, TIFFDirEntry* direntry, uint8** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       uint8* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_ASCII:
+               case TIFF_UNDEFINED:
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,1,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_ASCII:
+               case TIFF_UNDEFINED:
+               case TIFF_BYTE:
+                       *value=(uint8*)origdata;
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SBYTE:
+                       {
+                               int8* m;
+                               uint32 n;
+                               m=(int8*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       err=TIFFReadDirEntryCheckRangeByteSbyte(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(uint8*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+       }
+       data=(uint8*)_TIFFmalloc(count);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       err=TIFFReadDirEntryCheckRangeByteShort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       err=TIFFReadDirEntryCheckRangeByteSshort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       err=TIFFReadDirEntryCheckRangeByteLong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       err=TIFFReadDirEntryCheckRangeByteSlong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeByteLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               uint8* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeByteSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint8)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySbyteArray(TIFF* tif, TIFFDirEntry* direntry, int8** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       int8* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_UNDEFINED:
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,1,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_UNDEFINED:
+               case TIFF_BYTE:
+                       {
+                               uint8* m;
+                               uint32 n;
+                               m=(uint8*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       err=TIFFReadDirEntryCheckRangeSbyteByte(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(int8*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SBYTE:
+                       *value=(int8*)origdata;
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(int8*)_TIFFmalloc(count);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteShort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteSshort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteLong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteSlong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               int8* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSbyteSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int8)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryShortArray(TIFF* tif, TIFFDirEntry* direntry, uint16** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       uint16* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,2,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_SHORT:
+                       *value=(uint16*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfShort(*value,count);  
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SSHORT:
+                       {
+                               int16* m;
+                               uint32 n;
+                               m=(int16*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)m);
+                                       err=TIFFReadDirEntryCheckRangeShortSshort(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(uint16*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+       }
+       data=(uint16*)_TIFFmalloc(count*2);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(uint16)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       err=TIFFReadDirEntryCheckRangeShortSbyte(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       err=TIFFReadDirEntryCheckRangeShortLong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       err=TIFFReadDirEntryCheckRangeShortSlong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeShortLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               uint16* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeShortSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint16)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySshortArray(TIFF* tif, TIFFDirEntry* direntry, int16** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       int16* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,2,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_SHORT:
+                       {
+                               uint16* m;
+                               uint32 n;
+                               m=(uint16*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(m);
+                                       err=TIFFReadDirEntryCheckRangeSshortShort(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(int16*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SSHORT:
+                       *value=(int16*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfShort((uint16*)(*value),count);
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(int16*)_TIFFmalloc(count*2);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int16)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int16)(*ma++);
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       err=TIFFReadDirEntryCheckRangeSshortLong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSshortSlong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeSshortLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int16)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               int16* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSshortSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int16)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLongArray(TIFF* tif, TIFFDirEntry* direntry, uint32** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       uint32* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,4,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG:
+                       *value=(uint32*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong(*value,count);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SLONG:
+                       {
+                               int32* m;
+                               uint32 n;
+                               m=(int32*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)m);
+                                       err=TIFFReadDirEntryCheckRangeLongSlong(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(uint32*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+       }
+       data=(uint32*)_TIFFmalloc(count*4);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(uint32)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       err=TIFFReadDirEntryCheckRangeLongSbyte(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(uint32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       err=TIFFReadDirEntryCheckRangeLongSshort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeLongLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               uint32* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeLongSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint32)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySlongArray(TIFF* tif, TIFFDirEntry* direntry, int32** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       int32* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,4,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG:
+                       {
+                               uint32* m;
+                               uint32 n;
+                               m=(uint32*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)m);
+                                       err=TIFFReadDirEntryCheckRangeSlongLong(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(int32*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG:
+                       *value=(int32*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong((uint32*)(*value),count);
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(int32*)_TIFFmalloc(count*4);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int32)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int32)(*ma++);
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(int32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       *mb++=(int32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+                                       err=TIFFReadDirEntryCheckRangeSlongLong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int32)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               int32* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       err=TIFFReadDirEntryCheckRangeSlongSlong8(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(int32)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryLong8Array(TIFF* tif, TIFFDirEntry* direntry, uint64** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       uint64* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,8,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG8:
+                       *value=(uint64*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong8(*value,count);
+                       return(TIFFReadDirEntryErrOk);
+               case TIFF_SLONG8:
+                       {
+                               int64* m;
+                               uint32 n;
+                               m=(int64*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)m);
+                                       err=TIFFReadDirEntryCheckRangeLong8Slong8(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(uint64*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+       }
+       data=(uint64*)_TIFFmalloc(count*8);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(uint64)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       err=TIFFReadDirEntryCheckRangeLong8Sbyte(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       err=TIFFReadDirEntryCheckRangeLong8Sshort(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       err=TIFFReadDirEntryCheckRangeLong8Slong(*ma);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                               break;
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntrySlong8Array(TIFF* tif, TIFFDirEntry* direntry, int64** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       int64* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,8,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG8:
+                       {
+                               uint64* m;
+                               uint32 n;
+                               m=(uint64*)origdata;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(m);
+                                       err=TIFFReadDirEntryCheckRangeSlong8Long8(*m);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               _TIFFfree(origdata);
+                                               return(err);
+                                       }
+                                       m++;
+                               }
+                               *value=(int64*)origdata;
+                               return(TIFFReadDirEntryErrOk);
+                       }
+               case TIFF_SLONG8:
+                       *value=(int64*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong8((uint64*)(*value),count);
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(int64*)_TIFFmalloc(count*8);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int64)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(int64)(*ma++);
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(int64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       *mb++=(int64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       *mb++=(int64)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               int64* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       *mb++=(int64)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryFloatArray(TIFF* tif, TIFFDirEntry* direntry, float** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       float* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+               case TIFF_RATIONAL:
+               case TIFF_SRATIONAL:
+               case TIFF_FLOAT:
+               case TIFF_DOUBLE:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,4,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_FLOAT:
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong((uint32*)origdata,count);  
+                       TIFFCvtIEEEDoubleToNative(tif,count,(float*)origdata);
+                       *value=(float*)origdata;
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(float*)_TIFFmalloc(count*sizeof(float));
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(float)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(float)(*ma++);
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(float)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       *mb++=(float)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       *mb++=(float)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       *mb++=(float)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+#if defined(__WIN32__) && (_MSC_VER < 1500)
+                                       /*
+                                        * XXX: MSVC 6.0 does not support
+                                        * conversion of 64-bit integers into
+                                        * floating point values.
+                                        */
+                                       *mb++ = _TIFFUInt64ToFloat(*ma++);
+#else
+                                       *mb++ = (float)(*ma++);
+#endif
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               float* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       *mb++=(float)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_RATIONAL:
+                       {
+                               uint32* ma;
+                               uint32 maa;
+                               uint32 mab;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       maa=*ma++;
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       mab=*ma++;
+                                       if (mab==0)
+                                               *mb++=0.0;
+                                       else
+                                               *mb++=(float)maa/(float)mab;
+                               }
+                       }
+                       break;
+               case TIFF_SRATIONAL:
+                       {
+                               uint32* ma;
+                               int32 maa;
+                               uint32 mab;
+                               float* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       maa=*(int32*)ma;
+                                       ma++;
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       mab=*ma++;
+                                       if (mab==0)
+                                               *mb++=0.0;
+                                       else
+                                               *mb++=(float)maa/(float)mab;
+                               }
+                       }
+                       break;
+               case TIFF_DOUBLE:
+                       {
+                               double* ma;
+                               float* mb;
+                               uint32 n;
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabArrayOfLong8((uint64*)origdata,count);
+                               TIFFCvtIEEEDoubleToNative(tif,count,(double*)origdata);
+                               ma=(double*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(float)(*ma++);
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryDoubleArray(TIFF* tif, TIFFDirEntry* direntry, double** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       double* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+               case TIFF_SBYTE:
+               case TIFF_SHORT:
+               case TIFF_SSHORT:
+               case TIFF_LONG:
+               case TIFF_SLONG:
+               case TIFF_LONG8:
+               case TIFF_SLONG8:
+               case TIFF_RATIONAL:
+               case TIFF_SRATIONAL:
+               case TIFF_FLOAT:
+               case TIFF_DOUBLE:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,8,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_DOUBLE:
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong8((uint64*)origdata,count);
+                       TIFFCvtIEEEDoubleToNative(tif,count,(double*)origdata);
+                       *value=(double*)origdata;
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(double*)_TIFFmalloc(count*sizeof(double));
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_BYTE:
+                       {
+                               uint8* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(double)(*ma++);
+                       }
+                       break;
+               case TIFF_SBYTE:
+                       {
+                               int8* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(int8*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(double)(*ma++);
+                       }
+                       break;
+               case TIFF_SHORT:
+                       {
+                               uint16* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort(ma);
+                                       *mb++=(double)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SSHORT:
+                       {
+                               int16* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(int16*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabShort((uint16*)ma);
+                                       *mb++=(double)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG:
+                       {
+                               uint32* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       *mb++=(double)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_SLONG:
+                       {
+                               int32* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(int32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong((uint32*)ma);
+                                       *mb++=(double)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_LONG8:
+                       {
+                               uint64* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8(ma);
+#if defined(__WIN32__) && (_MSC_VER < 1500)
+                                       /*
+                                        * XXX: MSVC 6.0 does not support
+                                        * conversion of 64-bit integers into
+                                        * floating point values.
+                                        */
+                                       *mb++ = _TIFFUInt64ToDouble(*ma++);
+#else
+                                       *mb++ = (double)(*ma++);
+#endif
+                               }
+                       }
+                       break;
+               case TIFF_SLONG8:
+                       {
+                               int64* ma;
+                               double* mb;
+                               uint32 n;
+                               ma=(int64*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong8((uint64*)ma);
+                                       *mb++=(double)(*ma++);
+                               }
+                       }
+                       break;
+               case TIFF_RATIONAL:
+                       {
+                               uint32* ma;
+                               uint32 maa;
+                               uint32 mab;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       maa=*ma++;
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       mab=*ma++;
+                                       if (mab==0)
+                                               *mb++=0.0;
+                                       else
+                                               *mb++=(double)maa/(double)mab;
+                               }
+                       }
+                       break;
+               case TIFF_SRATIONAL:
+                       {
+                               uint32* ma;
+                               int32 maa;
+                               uint32 mab;
+                               double* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       maa=*(int32*)ma;
+                                       ma++;
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       mab=*ma++;
+                                       if (mab==0)
+                                               *mb++=0.0;
+                                       else
+                                               *mb++=(double)maa/(double)mab;
+                               }
+                       }
+                       break;
+               case TIFF_FLOAT:
+                       {
+                               float* ma;
+                               double* mb;
+                               uint32 n;
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabArrayOfLong((uint32*)origdata,count);  
+                               TIFFCvtIEEEFloatToNative(tif,count,(float*)origdata);
+                               ma=(float*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                                       *mb++=(double)(*ma++);
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryIfd8Array(TIFF* tif, TIFFDirEntry* direntry, uint64** value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint32 count;
+       void* origdata;
+       uint64* data;
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG:
+               case TIFF_LONG8:
+               case TIFF_IFD:
+               case TIFF_IFD8:
+                       break;
+               default:
+                       return(TIFFReadDirEntryErrType);
+       }
+       err=TIFFReadDirEntryArray(tif,direntry,&count,8,&origdata);
+       if ((err!=TIFFReadDirEntryErrOk)||(origdata==0))
+       {
+               *value=0;
+               return(err);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG8:
+               case TIFF_IFD8:
+                       *value=(uint64*)origdata;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabArrayOfLong8(*value,count);
+                       return(TIFFReadDirEntryErrOk);
+       }
+       data=(uint64*)_TIFFmalloc(count*8);
+       if (data==0)
+       {
+               _TIFFfree(origdata);
+               return(TIFFReadDirEntryErrAlloc);
+       }
+       switch (direntry->tdir_type)
+       {
+               case TIFF_LONG:
+               case TIFF_IFD:
+                       {
+                               uint32* ma;
+                               uint64* mb;
+                               uint32 n;
+                               ma=(uint32*)origdata;
+                               mb=data;
+                               for (n=0; n<count; n++)
+                               {
+                                       if (tif->tif_flags&TIFF_SWAB)
+                                               TIFFSwabLong(ma);
+                                       *mb++=(uint64)(*ma++);
+                               }
+                       }
+                       break;
+       }
+       _TIFFfree(origdata);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               _TIFFfree(data);
+               return(err);
+       }
+       *value=data;
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryPersampleShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value)
+{
+       enum TIFFReadDirEntryErr err;
+       uint16* m;
+       uint16* na;
+       uint16 nb;
+       if (direntry->tdir_count<(uint64)tif->tif_dir.td_samplesperpixel)
+               return(TIFFReadDirEntryErrCount);
+       err=TIFFReadDirEntryShortArray(tif,direntry,&m);
+       if (err!=TIFFReadDirEntryErrOk)
+               return(err);
+       na=m;
+       nb=tif->tif_dir.td_samplesperpixel;
+       *value=*na++;
+       nb--;
+       while (nb>0)
+       {
+               if (*na++!=*value)
+               {
+                       err=TIFFReadDirEntryErrPsdif;
+                       break;
+               }
+               nb--;
+       }
+       _TIFFfree(m);
+       return(err);
+}
+
+#if 0
+static enum TIFFReadDirEntryErr TIFFReadDirEntryPersampleDouble(TIFF* tif, TIFFDirEntry* direntry, double* value)
+{
+       enum TIFFReadDirEntryErr err;
+       double* m;
+       double* na;
+       uint16 nb;
+       if (direntry->tdir_count<(uint64)tif->tif_dir.td_samplesperpixel)
+               return(TIFFReadDirEntryErrCount);
+       err=TIFFReadDirEntryDoubleArray(tif,direntry,&m);
+       if (err!=TIFFReadDirEntryErrOk)
+               return(err);
+       na=m;
+       nb=tif->tif_dir.td_samplesperpixel;
+       *value=*na++;
+       nb--;
+       while (nb>0)
+       {
+               if (*na++!=*value)
+               {
+                       err=TIFFReadDirEntryErrPsdif;
+                       break;
+               }
+               nb--;
+       }
+       _TIFFfree(m);
+       return(err);
+}
+#endif
+
+static void TIFFReadDirEntryCheckedByte(TIFF* tif, TIFFDirEntry* direntry, uint8* value)
+{
+       (void) tif;
+       *value=*(uint8*)(&direntry->tdir_offset);
+}
+
+static void TIFFReadDirEntryCheckedSbyte(TIFF* tif, TIFFDirEntry* direntry, int8* value)
+{
+       (void) tif;
+       *value=*(int8*)(&direntry->tdir_offset);
+}
+
+static void TIFFReadDirEntryCheckedShort(TIFF* tif, TIFFDirEntry* direntry, uint16* value)
+{
+       *value = direntry->tdir_offset.toff_short;
+       /* *value=*(uint16*)(&direntry->tdir_offset); */
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabShort(value);
+}
+
+static void TIFFReadDirEntryCheckedSshort(TIFF* tif, TIFFDirEntry* direntry, int16* value)
+{
+       *value=*(int16*)(&direntry->tdir_offset);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabShort((uint16*)value);
+}
+
+static void TIFFReadDirEntryCheckedLong(TIFF* tif, TIFFDirEntry* direntry, uint32* value)
+{
+       *value=*(uint32*)(&direntry->tdir_offset);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong(value);
+}
+
+static void TIFFReadDirEntryCheckedSlong(TIFF* tif, TIFFDirEntry* direntry, int32* value)
+{
+       *value=*(int32*)(&direntry->tdir_offset);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong((uint32*)value);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedLong8(TIFF* tif, TIFFDirEntry* direntry, uint64* value)
+{
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               enum TIFFReadDirEntryErr err;
+               uint32 offset = direntry->tdir_offset.toff_long;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&offset);
+               err=TIFFReadDirEntryData(tif,offset,8,value);
+               if (err!=TIFFReadDirEntryErrOk)
+                       return(err);
+       }
+       else
+               *value = direntry->tdir_offset.toff_long8;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong8(value);
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedSlong8(TIFF* tif, TIFFDirEntry* direntry, int64* value)
+{
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               enum TIFFReadDirEntryErr err;
+               uint32 offset = direntry->tdir_offset.toff_long;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&offset);
+               err=TIFFReadDirEntryData(tif,offset,8,value);
+               if (err!=TIFFReadDirEntryErrOk)
+                       return(err);
+       }
+       else
+               *value=*(int64*)(&direntry->tdir_offset);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong8((uint64*)value);
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedRational(TIFF* tif, TIFFDirEntry* direntry, double* value)
+{
+       UInt64Aligned_t m;
+
+       assert(sizeof(double)==8);
+       assert(sizeof(uint64)==8);
+       assert(sizeof(uint32)==4);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               enum TIFFReadDirEntryErr err;
+               uint32 offset = direntry->tdir_offset.toff_long;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&offset);
+               err=TIFFReadDirEntryData(tif,offset,8,m.i);
+               if (err!=TIFFReadDirEntryErrOk)
+                       return(err);
+       }
+       else
+               m.l = direntry->tdir_offset.toff_long8;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong(m.i,2);
+       if (m.i[0]==0)
+               *value=0.0;
+       else
+               *value=(double)m.i[0]/(double)m.i[1];
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedSrational(TIFF* tif, TIFFDirEntry* direntry, double* value)
+{
+       UInt64Aligned_t m;
+       assert(sizeof(double)==8);
+       assert(sizeof(uint64)==8);
+       assert(sizeof(int32)==4);
+       assert(sizeof(uint32)==4);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               enum TIFFReadDirEntryErr err;
+               uint32 offset = direntry->tdir_offset.toff_long;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&offset);
+               err=TIFFReadDirEntryData(tif,offset,8,m.i);
+               if (err!=TIFFReadDirEntryErrOk)
+                       return(err);
+       }
+       else
+               m.l=direntry->tdir_offset.toff_long8;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong(m.i,2);
+       if ((int32)m.i[0]==0)
+               *value=0.0;
+       else
+               *value=(double)((int32)m.i[0])/(double)m.i[1];
+       return(TIFFReadDirEntryErrOk);
+}
+
+static void TIFFReadDirEntryCheckedFloat(TIFF* tif, TIFFDirEntry* direntry, float* value)
+{
+         union
+        {
+          float  f;
+          uint32 i;
+        } float_union;
+       assert(sizeof(float)==4);
+       assert(sizeof(uint32)==4);
+       assert(sizeof(float_union)==4);
+       float_union.i=*(uint32*)(&direntry->tdir_offset);
+       *value=float_union.f;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong((uint32*)value);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckedDouble(TIFF* tif, TIFFDirEntry* direntry, double* value)
+{
+       assert(sizeof(double)==8);
+       assert(sizeof(uint64)==8);
+       assert(sizeof(UInt64Aligned_t)==8);
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               enum TIFFReadDirEntryErr err;
+               uint32 offset = direntry->tdir_offset.toff_long;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&offset);
+               err=TIFFReadDirEntryData(tif,offset,8,value);
+               if (err!=TIFFReadDirEntryErrOk)
+                       return(err);
+       }
+       else
+       {
+              UInt64Aligned_t uint64_union;
+              uint64_union.l=direntry->tdir_offset.toff_long8;
+              *value=uint64_union.d;
+       }
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong8((uint64*)value);
+       return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSbyte(int8 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteShort(uint16 value)
+{
+       if (value>0xFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSshort(int16 value)
+{
+       if ((value<0)||(value>0xFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteLong(uint32 value)
+{
+       if (value>0xFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSlong(int32 value)
+{
+       if ((value<0)||(value>0xFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteLong8(uint64 value)
+{
+       if (value>0xFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeByteSlong8(int64 value)
+{
+       if ((value<0)||(value>0xFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteByte(uint8 value)
+{
+       if (value>0x7F)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteShort(uint16 value)
+{
+       if (value>0x7F)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSshort(int16 value)
+{
+       if ((value<-0x80)||(value>0x7F))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteLong(uint32 value)
+{
+       if (value>0x7F)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSlong(int32 value)
+{
+       if ((value<-0x80)||(value>0x7F))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteLong8(uint64 value)
+{
+       if (value>0x7F)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSbyteSlong8(int64 value)
+{
+       if ((value<-0x80)||(value>0x7F))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSbyte(int8 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSshort(int16 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortLong(uint32 value)
+{
+       if (value>0xFFFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSlong(int32 value)
+{
+       if ((value<0)||(value>0xFFFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortLong8(uint64 value)
+{
+       if (value>0xFFFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeShortSlong8(int64 value)
+{
+       if ((value<0)||(value>0xFFFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortShort(uint16 value)
+{
+       if (value>0x7FFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortLong(uint32 value)
+{
+       if (value>0x7FFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortSlong(int32 value)
+{
+       if ((value<-0x8000)||(value>0x7FFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortLong8(uint64 value)
+{
+       if (value>0x7FFF)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeSshortSlong8(int64 value)
+{
+       if ((value<-0x8000)||(value>0x7FFF))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSbyte(int8 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSshort(int16 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr TIFFReadDirEntryCheckRangeLongSlong(int32 value)
+{
+       if (value<0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+/*
+ * Largest 32-bit unsigned integer value.
+ */
+#if defined(__WIN32__) && defined(_MSC_VER)
+# define TIFF_UINT32_MAX 0xFFFFFFFFI64
+#else
+# define TIFF_UINT32_MAX 0xFFFFFFFFLL
+#endif
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLongLong8(uint64 value)
+{
+       if (value > TIFF_UINT32_MAX)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLongSlong8(int64 value)
+{
+       if ((value<0) || (value > TIFF_UINT32_MAX))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+#undef TIFF_UINT32_MAX
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeSlongLong(uint32 value)
+{
+       if (value > 0x7FFFFFFFUL)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeSlongLong8(uint64 value)
+{
+       if (value > 0x7FFFFFFFUL)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeSlongSlong8(int64 value)
+{
+       if ((value < 0L-0x80000000L) || (value > 0x7FFFFFFFL))
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLong8Sbyte(int8 value)
+{
+       if (value < 0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLong8Sshort(int16 value)
+{
+       if (value < 0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLong8Slong(int32 value)
+{
+       if (value < 0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeLong8Slong8(int64 value)
+{
+       if (value < 0)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+/*
+ * Largest 64-bit signed integer value.
+ */
+#if defined(__WIN32__) && defined(_MSC_VER)
+# define TIFF_INT64_MAX 0x7FFFFFFFFFFFFFFFI64
+#else
+# define TIFF_INT64_MAX 0x7FFFFFFFFFFFFFFFLL
+#endif
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryCheckRangeSlong8Long8(uint64 value)
+{
+       if (value > TIFF_INT64_MAX)
+               return(TIFFReadDirEntryErrRange);
+       else
+               return(TIFFReadDirEntryErrOk);
+}
+
+#undef TIFF_INT64_MAX
+
+static enum TIFFReadDirEntryErr
+TIFFReadDirEntryData(TIFF* tif, uint64 offset, tmsize_t size, void* dest)
+{
+       assert(size>0);
+       if (!isMapped(tif)) {
+               if (!SeekOK(tif,offset))
+                       return(TIFFReadDirEntryErrIo);
+               if (!ReadOK(tif,dest,size))
+                       return(TIFFReadDirEntryErrIo);
+       } else {
+               size_t ma,mb;
+               ma=(size_t)offset;
+               mb=ma+size;
+               if (((uint64)ma!=offset)
+                   || (mb < ma)
+                   || (mb - ma != (size_t) size)
+                   || (mb < (size_t)size)
+                   || (mb > (size_t)tif->tif_size)
+                   )
+                       return(TIFFReadDirEntryErrIo);
+               _TIFFmemcpy(dest,tif->tif_base+ma,size);
+       }
+       return(TIFFReadDirEntryErrOk);
+}
+
+static void TIFFReadDirEntryOutputErr(TIFF* tif, enum TIFFReadDirEntryErr err, const char* module, const char* tagname, int recover)
+{
+       if (!recover) {
+               switch (err) {
+                       case TIFFReadDirEntryErrCount:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Incorrect count for \"%s\"",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrType:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Incompatible type for \"%s\"",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrIo:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "IO error during reading of \"%s\"",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrRange:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Incorrect value for \"%s\"",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrPsdif:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Cannot handle different values per sample for \"%s\"",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrSizesan:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                               "Sanity check on size of \"%s\" value failed",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrAlloc:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Out of memory reading of \"%s\"",
+                                            tagname);
+                               break;
+                       default:
+                               assert(0);   /* we should never get here */
+                               break;
+               }
+       } else {
+               switch (err) {
+                       case TIFFReadDirEntryErrCount:
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                               "Incorrect count for \"%s\"; tag ignored",
+                                            tagname);
+                               break;
+                       case TIFFReadDirEntryErrType:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                               "Incompatible type for \"%s\"; tag ignored",
+                                              tagname);
+                               break;
+                       case TIFFReadDirEntryErrIo:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                       "IO error during reading of \"%s\"; tag ignored",
+                                              tagname);
+                               break;
+                       case TIFFReadDirEntryErrRange:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                               "Incorrect value for \"%s\"; tag ignored",
+                                              tagname);
+                               break;
+                       case TIFFReadDirEntryErrPsdif:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+       "Cannot handle different values per sample for \"%s\"; tag ignored",
+                                              tagname);
+                               break;
+                       case TIFFReadDirEntryErrSizesan:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+               "Sanity check on size of \"%s\" value failed; tag ignored",
+                                              tagname);
+                               break;
+                       case TIFFReadDirEntryErrAlloc:
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                               "Out of memory reading of \"%s\"; tag ignored",
+                                              tagname);
+                               break;
+                       default:
+                               assert(0);   /* we should never get here */
+                               break;
                }
-               /*
-                * Read offset to next directory for sequential scans.
-                */
-               (void) ReadOK(tif, &nextdiroff, sizeof (uint32));
-       } else {
-               toff_t off = tif->tif_diroff;
+       }
+}
 
-               if (off + sizeof (uint16) > tif->tif_size) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-                       return (0);
-               } else
-                       _TIFFmemcpy(&dircount, tif->tif_base + off, sizeof (uint16));
-               off += sizeof (uint16);
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-                                                      sizeof (TIFFDirEntry),
-                                               "to read TIFF directory");
-               if (dir == NULL)
-                       return (0);
-               if (off + dircount*sizeof (TIFFDirEntry) > tif->tif_size) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%s: Can not read TIFF directory",
-                                  tif->tif_name);
-                       goto bad;
-               } else {
-                       _TIFFmemcpy(dir, tif->tif_base + off,
-                                   dircount*sizeof (TIFFDirEntry));
-               }
-               off += dircount* sizeof (TIFFDirEntry);
-               if (off + sizeof (uint32) <= tif->tif_size)
-                       _TIFFmemcpy(&nextdiroff, tif->tif_base+off, sizeof (uint32));
+/*
+ * Read the next TIFF directory from a file and convert it to the internal
+ * format. We read directories sequentially.
+ */
+int
+TIFFReadDirectory(TIFF* tif)
+{
+       static const char module[] = "TIFFReadDirectory";
+       TIFFDirEntry* dir;
+       uint16 dircount;
+       TIFFDirEntry* dp;
+       uint16 di;
+       const TIFFField* fip;
+       uint32 fii=FAILED_FII;
+        toff_t nextdiroff;
+       tif->tif_diroff=tif->tif_nextdiroff;
+       if (!TIFFCheckDirOffset(tif,tif->tif_nextdiroff))
+               return 0;           /* last offset or bad offset (IFD looping) */
+       (*tif->tif_cleanup)(tif);   /* cleanup any previous compression state */
+       tif->tif_curdir++;
+        nextdiroff = tif->tif_nextdiroff;
+       dircount=TIFFFetchDirectory(tif,nextdiroff,&dir,&tif->tif_nextdiroff);
+       if (!dircount)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,
+                   "Failed to read directory at offset " TIFF_UINT64_FORMAT,nextdiroff);
+               return 0;
        }
-       if (tif->tif_flags & TIFF_SWAB)
-               TIFFSwabLong(&nextdiroff);
-       tif->tif_nextdiroff = nextdiroff;
+       TIFFReadDirectoryCheckOrder(tif,dir,dircount);
 
-       tif->tif_flags &= ~TIFF_BEENWRITING;    /* reset before new dir */
-       /*
-        * Setup default value and then make a pass over
-        * the fields to check type and tag information,
-        * and to extract info required to size data
-        * structures.  A second pass is made afterwards
-        * to read in everthing not taken in the first pass.
-        */
-       td = &tif->tif_dir;
+        /*
+         * Mark duplicates of any tag to be ignored (bugzilla 1994)
+         * to avoid certain pathological problems.
+         */
+       {
+               TIFFDirEntry* ma;
+               uint16 mb;
+               for (ma=dir, mb=0; mb<dircount; ma++, mb++)
+               {
+                       TIFFDirEntry* na;
+                       uint16 nb;
+                       for (na=ma+1, nb=mb+1; nb<dircount; na++, nb++)
+                       {
+                               if (ma->tdir_tag==na->tdir_tag)
+                                       na->tdir_tag=IGNORE;
+                       }
+               }
+       }
+        
+       tif->tif_flags &= ~TIFF_BEENWRITING;    /* reset before new dir */
+       tif->tif_flags &= ~TIFF_BUF4WRITE;      /* reset before new dir */
        /* free any old stuff and reinit */
        TIFFFreeDirectory(tif);
        TIFFDefaultDirectory(tif);
@@ -197,13 +3475,14 @@ TIFFReadDirectory(TIFF* tif)
         * Thus we setup a default value here, even though
         * the TIFF spec says there is no default value.
         */
-       TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
-
+       TIFFSetField(tif,TIFFTAG_PLANARCONFIG,PLANARCONFIG_CONTIG);
        /*
-        * Sigh, we must make a separate pass through the
-        * directory for the following reason:
-        *
-        * We must process the Compression tag in the first pass
+        * Setup default value and then make a pass over
+        * the fields to check type and tag information,
+        * and to extract info required to size data
+        * structures.  A second pass is made afterwards
+        * to read in everthing not taken in the first pass.
+        * But we must process the Compression tag first
         * in order to merge in codec-private tag definitions (otherwise
         * we may get complaints about unknown tags).  However, the
         * Compression tag may be dependent on the SamplesPerPixel
@@ -213,471 +3492,588 @@ TIFFReadDirectory(TIFF* tif)
         * tag value then we may end up ignoring the Compression tag
         * value because it has an incorrect count value (if the
         * true value of SamplesPerPixel is not 1).
-        *
-        * It sure would have been nice if Aldus had really thought
-        * this stuff through carefully.
-        */ 
-       for (dp = dir, n = dircount; n > 0; n--, dp++) {
-               if (tif->tif_flags & TIFF_SWAB) {
-                       TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
-                       TIFFSwabArrayOfLong(&dp->tdir_count, 2);
-               }
-               if (dp->tdir_tag == TIFFTAG_SAMPLESPERPIXEL) {
-                       if (!TIFFFetchNormalTag(tif, dp))
-                               goto bad;
-                       dp->tdir_tag = IGNORE;
+        */
+       dp=TIFFReadDirectoryFindEntry(tif,dir,dircount,TIFFTAG_SAMPLESPERPIXEL);
+       if (dp)
+       {
+               if (!TIFFFetchNormalTag(tif,dp,0))
+                       goto bad;
+               dp->tdir_tag=IGNORE;
+       }
+       dp=TIFFReadDirectoryFindEntry(tif,dir,dircount,TIFFTAG_COMPRESSION);
+       if (dp)
+       {
+               /*
+                * The 5.0 spec says the Compression tag has one value, while
+                * earlier specs say it has one value per sample.  Because of
+                * this, we accept the tag if one value is supplied with either
+                * count.
+                */
+               uint16 value;
+               enum TIFFReadDirEntryErr err;
+               err=TIFFReadDirEntryShort(tif,dp,&value);
+               if (err==TIFFReadDirEntryErrCount)
+                       err=TIFFReadDirEntryPersampleShort(tif,dp,&value);
+               if (err!=TIFFReadDirEntryErrOk)
+               {
+                       TIFFReadDirEntryOutputErr(tif,err,module,"Compression",0);
+                       goto bad;
                }
+               if (!TIFFSetField(tif,TIFFTAG_COMPRESSION,value))
+                       goto bad;
+               dp->tdir_tag=IGNORE;
+       }
+       else
+       {
+               if (!TIFFSetField(tif,TIFFTAG_COMPRESSION,COMPRESSION_NONE))
+                       goto bad;
        }
        /*
         * First real pass over the directory.
         */
-       fix = 0;
-       for (dp = dir, n = dircount; n > 0; n--, dp++) {
-
-               if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
-                       continue;
-               
-               /*
-                * Silicon Beach (at least) writes unordered
-                * directory tags (violating the spec).  Handle
-                * it here, but be obnoxious (maybe they'll fix it?).
-                */
-               if (dp->tdir_tag < tif->tif_fieldinfo[fix]->field_tag) {
-                       if (!diroutoforderwarning) {
+       for (di=0, dp=dir; di<dircount; di++, dp++)
+       {
+               if (dp->tdir_tag!=IGNORE)
+               {
+                       TIFFReadDirectoryFindFieldInfo(tif,dp->tdir_tag,&fii);
+                       if (fii == FAILED_FII)
+                       {
                                TIFFWarningExt(tif->tif_clientdata, module,
-       "%s: invalid TIFF directory; tags are not sorted in ascending order",
-                                              tif->tif_name);
-                               diroutoforderwarning = 1;
-                       }
-                       fix = 0;                        /* O(n^2) */
-               }
-               while (fix < tif->tif_nfields &&
-                      tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-                       fix++;
-               if (fix >= tif->tif_nfields ||
-                   tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
-                                       TIFFWarningExt(tif->tif_clientdata,
-                                                      module,
-                        "%s: unknown field with tag %d (0x%x) encountered",
-                                                      tif->tif_name,
-                                                      dp->tdir_tag,
-                                                      dp->tdir_tag,
-                                                      dp->tdir_type);
-
-                    TIFFMergeFieldInfo(tif,
-                                       _TIFFCreateAnonFieldInfo(tif,
+                                   "Unknown field with tag %d (0x%x) encountered",
+                                   dp->tdir_tag,dp->tdir_tag);
+                                /* the following knowingly leaks the 
+                                   anonymous field structure */
+                               if (!_TIFFMergeFields(tif,
+                                       _TIFFCreateAnonField(tif,
                                                dp->tdir_tag,
                                                (TIFFDataType) dp->tdir_type),
-                                      1 );
-                    fix = 0;
-                    while (fix < tif->tif_nfields &&
-                           tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-                       fix++;
-               }
-               /*
-                * Null out old tags that we ignore.
-                */
-               if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
-       ignore:
-                       dp->tdir_tag = IGNORE;
-                       continue;
-               }
-               /*
-                * Check data type.
-                */
-               fip = tif->tif_fieldinfo[fix];
-               while (dp->tdir_type != (unsigned short) fip->field_type
-                       && fix < tif->tif_nfields) {
-                       if (fip->field_type == TIFF_ANY)        /* wildcard */
-                               break;
-                        fip = tif->tif_fieldinfo[++fix];
-                       if (fix >= tif->tif_nfields ||
-                           fip->field_tag != dp->tdir_tag) {
-                               TIFFWarningExt(tif->tif_clientdata, module,
-                       "%s: wrong data type %d for \"%s\"; tag ignored",
-                                           tif->tif_name, dp->tdir_type,
-                                           tif->tif_fieldinfo[fix-1]->field_name);
-                               goto ignore;
+                                       1)) {
+                                       TIFFWarningExt(tif->tif_clientdata,
+                                           module,
+                                           "Registering anonymous field with tag %d (0x%x) failed",
+                                           dp->tdir_tag,
+                                           dp->tdir_tag);
+                                       dp->tdir_tag=IGNORE;
+                               } else {
+                                       TIFFReadDirectoryFindFieldInfo(tif,dp->tdir_tag,&fii);
+                                       assert(fii != FAILED_FII);
+                               }
                        }
                }
-               /*
-                * Check count if known in advance.
-                */
-               if (fip->field_readcount != TIFF_VARIABLE
-                   && fip->field_readcount != TIFF_VARIABLE2) {
-                       uint32 expected = (fip->field_readcount == TIFF_SPP) ?
-                           (uint32) td->td_samplesperpixel :
-                           (uint32) fip->field_readcount;
-                       if (!CheckDirCount(tif, dp, expected))
-                               goto ignore;
+               if (dp->tdir_tag!=IGNORE)
+               {
+                       fip=tif->tif_fields[fii];
+                       if (fip->field_bit==FIELD_IGNORE)
+                               dp->tdir_tag=IGNORE;
+                       else
+                       {
+                               switch (dp->tdir_tag)
+                               {
+                                       case TIFFTAG_STRIPOFFSETS:
+                                       case TIFFTAG_STRIPBYTECOUNTS:
+                                       case TIFFTAG_TILEOFFSETS:
+                                       case TIFFTAG_TILEBYTECOUNTS:
+                                               TIFFSetFieldBit(tif,fip->field_bit);
+                                               break;
+                                       case TIFFTAG_IMAGEWIDTH:
+                                       case TIFFTAG_IMAGELENGTH:
+                                       case TIFFTAG_IMAGEDEPTH:
+                                       case TIFFTAG_TILELENGTH:
+                                       case TIFFTAG_TILEWIDTH:
+                                       case TIFFTAG_TILEDEPTH:
+                                       case TIFFTAG_PLANARCONFIG:
+                                       case TIFFTAG_ROWSPERSTRIP:
+                                       case TIFFTAG_EXTRASAMPLES:
+                                               if (!TIFFFetchNormalTag(tif,dp,0))
+                                                       goto bad;
+                                               dp->tdir_tag=IGNORE;
+                                               break;
+                               }
+                       }
                }
-
-               switch (dp->tdir_tag) {
-               case TIFFTAG_COMPRESSION:
-                       /*
-                        * The 5.0 spec says the Compression tag has
-                        * one value, while earlier specs say it has
-                        * one value per sample.  Because of this, we
-                        * accept the tag if one value is supplied.
-                        */
-                       if (dp->tdir_count == 1) {
-                               v = TIFFExtractData(tif,
-                                   dp->tdir_type, dp->tdir_offset);
-                               if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-                                       goto bad;
-                               break;
-                       /* XXX: workaround for broken TIFFs */
-                       } else if (dp->tdir_type == TIFF_LONG) {
-                               if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
-                                   !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
-                                       goto bad;
-                       } else {
-                               if (!TIFFFetchPerSampleShorts(tif, dp, &iv)
-                                   || !TIFFSetField(tif, dp->tdir_tag, iv))
-                                       goto bad;
+       }
+       /*
+        * XXX: OJPEG hack.
+        * If a) compression is OJPEG, b) planarconfig tag says it's separate,
+        * c) strip offsets/bytecounts tag are both present and
+        * d) both contain exactly one value, then we consistently find
+        * that the buggy implementation of the buggy compression scheme
+        * matches contig planarconfig best. So we 'fix-up' the tag here
+        */
+       if ((tif->tif_dir.td_compression==COMPRESSION_OJPEG)&&
+           (tif->tif_dir.td_planarconfig==PLANARCONFIG_SEPARATE))
+       {
+        if (!_TIFFFillStriles(tif))
+            goto bad;
+               dp=TIFFReadDirectoryFindEntry(tif,dir,dircount,TIFFTAG_STRIPOFFSETS);
+               if ((dp!=0)&&(dp->tdir_count==1))
+               {
+                       dp=TIFFReadDirectoryFindEntry(tif,dir,dircount,
+                           TIFFTAG_STRIPBYTECOUNTS);
+                       if ((dp!=0)&&(dp->tdir_count==1))
+                       {
+                               tif->tif_dir.td_planarconfig=PLANARCONFIG_CONTIG;
+                               TIFFWarningExt(tif->tif_clientdata,module,
+                                   "Planarconfig tag value assumed incorrect, "
+                                   "assuming data is contig instead of chunky");
                        }
-                       dp->tdir_tag = IGNORE;
-                       break;
-               case TIFFTAG_STRIPOFFSETS:
-               case TIFFTAG_STRIPBYTECOUNTS:
-               case TIFFTAG_TILEOFFSETS:
-               case TIFFTAG_TILEBYTECOUNTS:
-                       TIFFSetFieldBit(tif, fip->field_bit);
-                       break;
-               case TIFFTAG_IMAGEWIDTH:
-               case TIFFTAG_IMAGELENGTH:
-               case TIFFTAG_IMAGEDEPTH:
-               case TIFFTAG_TILELENGTH:
-               case TIFFTAG_TILEWIDTH:
-               case TIFFTAG_TILEDEPTH:
-               case TIFFTAG_PLANARCONFIG:
-               case TIFFTAG_ROWSPERSTRIP:
-               case TIFFTAG_EXTRASAMPLES:
-                       if (!TIFFFetchNormalTag(tif, dp))
-                               goto bad;
-                       dp->tdir_tag = IGNORE;
-                       break;
                }
        }
-
        /*
         * Allocate directory structure and setup defaults.
         */
-       if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
-               MissingRequired(tif, "ImageLength");
+       if (!TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS))
+       {
+               MissingRequired(tif,"ImageLength");
                goto bad;
        }
-       /* 
-        * Setup appropriate structures (by strip or by tile)
+       /*
+        * Setup appropriate structures (by strip or by tile)
         */
        if (!TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) {
-               td->td_nstrips = TIFFNumberOfStrips(tif);
-               td->td_tilewidth = td->td_imagewidth;
-               td->td_tilelength = td->td_rowsperstrip;
-               td->td_tiledepth = td->td_imagedepth;
+               tif->tif_dir.td_nstrips = TIFFNumberOfStrips(tif);  
+               tif->tif_dir.td_tilewidth = tif->tif_dir.td_imagewidth;
+               tif->tif_dir.td_tilelength = tif->tif_dir.td_rowsperstrip;
+               tif->tif_dir.td_tiledepth = tif->tif_dir.td_imagedepth;
                tif->tif_flags &= ~TIFF_ISTILED;
        } else {
-               td->td_nstrips = TIFFNumberOfTiles(tif);
+               tif->tif_dir.td_nstrips = TIFFNumberOfTiles(tif);
                tif->tif_flags |= TIFF_ISTILED;
        }
-       if (!td->td_nstrips) {
+       if (!tif->tif_dir.td_nstrips) {
                TIFFErrorExt(tif->tif_clientdata, module,
-                            "%s: cannot handle zero number of %s",
-                            tif->tif_name, isTiled(tif) ? "tiles" : "strips");
+                   "Cannot handle zero number of %s",
+                   isTiled(tif) ? "tiles" : "strips");
                goto bad;
        }
-       td->td_stripsperimage = td->td_nstrips;
-       if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-               td->td_stripsperimage /= td->td_samplesperpixel;
+       tif->tif_dir.td_stripsperimage = tif->tif_dir.td_nstrips;
+       if (tif->tif_dir.td_planarconfig == PLANARCONFIG_SEPARATE)
+               tif->tif_dir.td_stripsperimage /= tif->tif_dir.td_samplesperpixel;
        if (!TIFFFieldSet(tif, FIELD_STRIPOFFSETS)) {
-               MissingRequired(tif,
+               if ((tif->tif_dir.td_compression==COMPRESSION_OJPEG) &&
+                   (isTiled(tif)==0) &&
+                   (tif->tif_dir.td_nstrips==1)) {
+                       /*
+                        * XXX: OJPEG hack.
+                        * If a) compression is OJPEG, b) it's not a tiled TIFF,
+                        * and c) the number of strips is 1,
+                        * then we tolerate the absence of stripoffsets tag,
+                        * because, presumably, all required data is in the
+                        * JpegInterchangeFormat stream.
+                        */
+                       TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
+               } else {
+                       MissingRequired(tif,
                                isTiled(tif) ? "TileOffsets" : "StripOffsets");
-               goto bad;
+                       goto bad;
+               }
        }
-
        /*
         * Second pass: extract other information.
         */
-       for (dp = dir, n = dircount; n > 0; n--, dp++) {
-               if (dp->tdir_tag == IGNORE)
-                       continue;
-               switch (dp->tdir_tag) {
-               case TIFFTAG_MINSAMPLEVALUE:
-               case TIFFTAG_MAXSAMPLEVALUE:
-               case TIFFTAG_BITSPERSAMPLE:
-               case TIFFTAG_DATATYPE:
-               case TIFFTAG_SAMPLEFORMAT:
-                       /*
-                        * The 5.0 spec says the Compression tag has
-                        * one value, while earlier specs say it has
-                        * one value per sample.  Because of this, we
-                        * accept the tag if one value is supplied.
-                        *
-                         * The MinSampleValue, MaxSampleValue, BitsPerSample
-                         * DataType and SampleFormat tags are supposed to be
-                         * written as one value/sample, but some vendors
-                         * incorrectly write one value only -- so we accept
-                         * that as well (yech). Other vendors write correct
-                        * value for NumberOfSamples, but incorrect one for
-                        * BitsPerSample and friends, and we will read this
-                        * too.
-                        */
-                       if (dp->tdir_count == 1) {
-                               v = TIFFExtractData(tif,
-                                   dp->tdir_type, dp->tdir_offset);
-                               if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
+       for (di=0, dp=dir; di<dircount; di++, dp++)
+       {
+               switch (dp->tdir_tag)
+               {
+                       case IGNORE:
+                               break;
+                       case TIFFTAG_MINSAMPLEVALUE:
+                       case TIFFTAG_MAXSAMPLEVALUE:
+                       case TIFFTAG_BITSPERSAMPLE:
+                       case TIFFTAG_DATATYPE:
+                       case TIFFTAG_SAMPLEFORMAT:
+                               /*
+                                * The MinSampleValue, MaxSampleValue, BitsPerSample
+                                * DataType and SampleFormat tags are supposed to be
+                                * written as one value/sample, but some vendors
+                                * incorrectly write one value only -- so we accept
+                                * that as well (yech). Other vendors write correct
+                                * value for NumberOfSamples, but incorrect one for
+                                * BitsPerSample and friends, and we will read this
+                                * too.
+                                */
+                               {
+                                       uint16 value;
+                                       enum TIFFReadDirEntryErr err;
+                                       err=TIFFReadDirEntryShort(tif,dp,&value);
+                                       if (err==TIFFReadDirEntryErrCount)
+                                               err=TIFFReadDirEntryPersampleShort(tif,dp,&value);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               fip = TIFFFieldWithTag(tif,dp->tdir_tag);
+                                               TIFFReadDirEntryOutputErr(tif,err,module,fip ? fip->field_name : "unknown tagname",0);
+                                               goto bad;
+                                       }
+                                       if (!TIFFSetField(tif,dp->tdir_tag,value))
+                                               goto bad;
+                               }
+                               break;
+                       case TIFFTAG_SMINSAMPLEVALUE:
+                       case TIFFTAG_SMAXSAMPLEVALUE:
+                               {
+
+                                       double *data;
+                                       enum TIFFReadDirEntryErr err;
+                                       uint32 saved_flags;
+                                       int m;
+                                       if (dp->tdir_count != (uint64)tif->tif_dir.td_samplesperpixel)
+                                               err = TIFFReadDirEntryErrCount;
+                                       else
+                                               err = TIFFReadDirEntryDoubleArray(tif, dp, &data);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                                       {
+                                               fip = TIFFFieldWithTag(tif,dp->tdir_tag);
+                                               TIFFReadDirEntryOutputErr(tif,err,module,fip ? fip->field_name : "unknown tagname",0);
+                                               goto bad;
+                                       }
+                                       saved_flags = tif->tif_flags;
+                                       tif->tif_flags |= TIFF_PERSAMPLE;
+                                       m = TIFFSetField(tif,dp->tdir_tag,data);
+                                       tif->tif_flags = saved_flags;
+                                       _TIFFfree(data);
+                                       if (!m)
+                                               goto bad;
+                               }
+                               break;
+                       case TIFFTAG_STRIPOFFSETS:
+                       case TIFFTAG_TILEOFFSETS:
+#if defined(DEFER_STRILE_LOAD)
+                                _TIFFmemcpy( &(tif->tif_dir.td_stripoffset_entry),
+                                             dp, sizeof(TIFFDirEntry) );
+#else                          
+                               if (!TIFFFetchStripThing(tif,dp,tif->tif_dir.td_nstrips,&tif->tif_dir.td_stripoffset))  
                                        goto bad;
-                       /* XXX: workaround for broken TIFFs */
-                       } else if (dp->tdir_tag == TIFFTAG_BITSPERSAMPLE
-                                  && dp->tdir_type == TIFF_LONG) {
-                               if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
-                                   !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
+#endif                                
+                               break;
+                       case TIFFTAG_STRIPBYTECOUNTS:
+                       case TIFFTAG_TILEBYTECOUNTS:
+#if defined(DEFER_STRILE_LOAD)
+                                _TIFFmemcpy( &(tif->tif_dir.td_stripbytecount_entry),
+                                             dp, sizeof(TIFFDirEntry) );
+#else                          
+                               if (!TIFFFetchStripThing(tif,dp,tif->tif_dir.td_nstrips,&tif->tif_dir.td_stripbytecount))  
                                        goto bad;
-                       } else {
-                               if (!TIFFFetchPerSampleShorts(tif, dp, &iv) ||
-                                   !TIFFSetField(tif, dp->tdir_tag, iv))
+#endif                                
+                               break;
+                       case TIFFTAG_COLORMAP:
+                       case TIFFTAG_TRANSFERFUNCTION:
+                               {
+                                       enum TIFFReadDirEntryErr err;
+                                       uint32 countpersample;
+                                       uint32 countrequired;
+                                       uint32 incrementpersample;
+                                       uint16* value=NULL;
+                                       countpersample=(1L<<tif->tif_dir.td_bitspersample);
+                                       if ((dp->tdir_tag==TIFFTAG_TRANSFERFUNCTION)&&(dp->tdir_count==(uint64)countpersample))
+                                       {
+                                               countrequired=countpersample;
+                                               incrementpersample=0;
+                                       }
+                                       else
+                                       {
+                                               countrequired=3*countpersample;
+                                               incrementpersample=countpersample;
+                                       }
+                                       if (dp->tdir_count!=(uint64)countrequired)
+                                               err=TIFFReadDirEntryErrCount;
+                                       else
+                                               err=TIFFReadDirEntryShortArray(tif,dp,&value);
+                                       if (err!=TIFFReadDirEntryErrOk)
+                    {
+                                               fip = TIFFFieldWithTag(tif,dp->tdir_tag);
+                                               TIFFReadDirEntryOutputErr(tif,err,module,fip ? fip->field_name : "unknown tagname",1);
+                    }
+                                       else
+                                       {
+                                               TIFFSetField(tif,dp->tdir_tag,value,value+incrementpersample,value+2*incrementpersample);
+                                               _TIFFfree(value);
+                                       }
+                               }
+                               break;
+/* BEGIN REV 4.0 COMPATIBILITY */
+                       case TIFFTAG_OSUBFILETYPE:
+                               {
+                                       uint16 valueo;
+                                       uint32 value;
+                                       if (TIFFReadDirEntryShort(tif,dp,&valueo)==TIFFReadDirEntryErrOk)
+                                       {
+                                               switch (valueo)
+                                               {
+                                                       case OFILETYPE_REDUCEDIMAGE: value=FILETYPE_REDUCEDIMAGE; break;
+                                                       case OFILETYPE_PAGE: value=FILETYPE_PAGE; break;
+                                                       default: value=0; break;
+                                               }
+                                               if (value!=0)
+                                                       TIFFSetField(tif,TIFFTAG_SUBFILETYPE,value);
+                                       }
+                               }
+                               break;
+/* END REV 4.0 COMPATIBILITY */
+                       default:
+                               (void) TIFFFetchNormalTag(tif, dp, TRUE);
+                               break;
+               }
+       }
+       /*
+        * OJPEG hack:
+        * - If a) compression is OJPEG, and b) photometric tag is missing,
+        * then we consistently find that photometric should be YCbCr
+        * - If a) compression is OJPEG, and b) photometric tag says it's RGB,
+        * then we consistently find that the buggy implementation of the
+        * buggy compression scheme matches photometric YCbCr instead.
+        * - If a) compression is OJPEG, and b) bitspersample tag is missing,
+        * then we consistently find bitspersample should be 8.
+        * - If a) compression is OJPEG, b) samplesperpixel tag is missing,
+        * and c) photometric is RGB or YCbCr, then we consistently find
+        * samplesperpixel should be 3
+        * - If a) compression is OJPEG, b) samplesperpixel tag is missing,
+        * and c) photometric is MINISWHITE or MINISBLACK, then we consistently
+        * find samplesperpixel should be 3
+        */
+       if (tif->tif_dir.td_compression==COMPRESSION_OJPEG)
+       {
+               if (!TIFFFieldSet(tif,FIELD_PHOTOMETRIC))
+               {
+                       TIFFWarningExt(tif->tif_clientdata, module,
+                           "Photometric tag is missing, assuming data is YCbCr");
+                       if (!TIFFSetField(tif,TIFFTAG_PHOTOMETRIC,PHOTOMETRIC_YCBCR))
+                               goto bad;
+               }
+               else if (tif->tif_dir.td_photometric==PHOTOMETRIC_RGB)
+               {
+                       tif->tif_dir.td_photometric=PHOTOMETRIC_YCBCR;
+                       TIFFWarningExt(tif->tif_clientdata, module,
+                           "Photometric tag value assumed incorrect, "
+                           "assuming data is YCbCr instead of RGB");
+               }
+               if (!TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
+               {
+                       TIFFWarningExt(tif->tif_clientdata,module,
+                           "BitsPerSample tag is missing, assuming 8 bits per sample");
+                       if (!TIFFSetField(tif,TIFFTAG_BITSPERSAMPLE,8))
+                               goto bad;
+               }
+               if (!TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
+               {
+                       if (tif->tif_dir.td_photometric==PHOTOMETRIC_RGB)
+                       {
+                               TIFFWarningExt(tif->tif_clientdata,module,
+                                   "SamplesPerPixel tag is missing, "
+                                   "assuming correct SamplesPerPixel value is 3");
+                               if (!TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,3))
                                        goto bad;
                        }
-                       break;
-               case TIFFTAG_SMINSAMPLEVALUE:
-               case TIFFTAG_SMAXSAMPLEVALUE:
+                       if (tif->tif_dir.td_photometric==PHOTOMETRIC_YCBCR)
                        {
-                               double dv = 0.0;
-                               if (!TIFFFetchPerSampleAnys(tif, dp, &dv) ||
-                                   !TIFFSetField(tif, dp->tdir_tag, dv))
+                               TIFFWarningExt(tif->tif_clientdata,module,
+                                   "SamplesPerPixel tag is missing, "
+                                   "applying correct SamplesPerPixel value of 3");
+                               if (!TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,3))
                                        goto bad;
                        }
-                       break;
-               case TIFFTAG_STRIPOFFSETS:
-               case TIFFTAG_TILEOFFSETS:
-                       if (!TIFFFetchStripThing(tif, dp,
-                           td->td_nstrips, &td->td_stripoffset))
-                               goto bad;
-                       break;
-               case TIFFTAG_STRIPBYTECOUNTS:
-               case TIFFTAG_TILEBYTECOUNTS:
-                       if (!TIFFFetchStripThing(tif, dp,
-                           td->td_nstrips, &td->td_stripbytecount))
-                               goto bad;
-                       break;
-               case TIFFTAG_COLORMAP:
-               case TIFFTAG_TRANSFERFUNCTION:
+                       else if ((tif->tif_dir.td_photometric==PHOTOMETRIC_MINISWHITE)
+                                || (tif->tif_dir.td_photometric==PHOTOMETRIC_MINISBLACK))
                        {
-                               char* cp;
                                /*
-                                * TransferFunction can have either 1x or 3x
-                                * data values; Colormap can have only 3x
-                                * items.
+                                * SamplesPerPixel tag is missing, but is not required
+                                * by spec.  Assume correct SamplesPerPixel value of 1.
                                 */
-                               v = 1L<<td->td_bitspersample;
-                               if (dp->tdir_tag == TIFFTAG_COLORMAP ||
-                                   dp->tdir_count != v) {
-                                       if (!CheckDirCount(tif, dp, 3 * v))
-                                               break;
-                               }
-                               v *= sizeof(uint16);
-                               cp = (char *)_TIFFCheckMalloc(tif,
-                                                             dp->tdir_count,
-                                                             sizeof (uint16),
-                                       "to read \"TransferFunction\" tag");
-                               if (cp != NULL) {
-                                       if (TIFFFetchData(tif, dp, cp)) {
-                                               /*
-                                                * This deals with there being
-                                                * only one array to apply to
-                                                * all samples.
-                                                */
-                                               uint32 c = 1L << td->td_bitspersample;
-                                               if (dp->tdir_count == c)
-                                                       v = 0L;
-                                               TIFFSetField(tif, dp->tdir_tag,
-                                                   cp, cp+v, cp+2*v);
-                                       }
-                                       _TIFFfree(cp);
-                               }
-                               break;
-                       }
-               case TIFFTAG_PAGENUMBER:
-               case TIFFTAG_HALFTONEHINTS:
-               case TIFFTAG_YCBCRSUBSAMPLING:
-               case TIFFTAG_DOTRANGE:
-                       (void) TIFFFetchShortPair(tif, dp);
-                       break;
-               case TIFFTAG_REFERENCEBLACKWHITE:
-                       (void) TIFFFetchRefBlackWhite(tif, dp);
-                       break;
-/* BEGIN REV 4.0 COMPATIBILITY */
-               case TIFFTAG_OSUBFILETYPE:
-                       v = 0L;
-                       switch (TIFFExtractData(tif, dp->tdir_type,
-                           dp->tdir_offset)) {
-                       case OFILETYPE_REDUCEDIMAGE:
-                               v = FILETYPE_REDUCEDIMAGE;
-                               break;
-                       case OFILETYPE_PAGE:
-                               v = FILETYPE_PAGE;
-                               break;
+                               if (!TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,1))
+                                       goto bad;
                        }
-                       if (v)
-                               TIFFSetField(tif, TIFFTAG_SUBFILETYPE, v);
-                       break;
-/* END REV 4.0 COMPATIBILITY */
-               default:
-                       (void) TIFFFetchNormalTag(tif, dp);
-                       break;
                }
        }
        /*
         * Verify Palette image has a Colormap.
         */
-       if (td->td_photometric == PHOTOMETRIC_PALETTE &&
+       if (tif->tif_dir.td_photometric == PHOTOMETRIC_PALETTE &&
            !TIFFFieldSet(tif, FIELD_COLORMAP)) {
-               MissingRequired(tif, "Colormap");
-               goto bad;
+               if ( tif->tif_dir.td_bitspersample>=8 && tif->tif_dir.td_samplesperpixel==3)
+                       tif->tif_dir.td_photometric = PHOTOMETRIC_RGB;
+               else if (tif->tif_dir.td_bitspersample>=8)
+                       tif->tif_dir.td_photometric = PHOTOMETRIC_MINISBLACK;
+               else {
+                       MissingRequired(tif, "Colormap");
+                       goto bad;
+               }
        }
        /*
-        * Attempt to deal with a missing StripByteCounts tag.
+        * OJPEG hack:
+        * We do no further messing with strip/tile offsets/bytecounts in OJPEG
+        * TIFFs
         */
-       if (!TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) {
-               /*
-                * Some manufacturers violate the spec by not giving
-                * the size of the strips.  In this case, assume there
-                * is one uncompressed strip of data.
-                */
-               if ((td->td_planarconfig == PLANARCONFIG_CONTIG &&
-                   td->td_nstrips > 1) ||
-                   (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
-                    td->td_nstrips != td->td_samplesperpixel)) {
-                   MissingRequired(tif, "StripByteCounts");
-                   goto bad;
-               }
-               TIFFWarningExt(tif->tif_clientdata, module,
-                       "%s: TIFF directory is missing required "
-                       "\"%s\" field, calculating from imagelength",
-                       tif->tif_name,
-                       _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-               if (EstimateStripByteCounts(tif, dir, dircount) < 0)
-                   goto bad;
-/* 
- * Assume we have wrong StripByteCount value (in case of single strip) in
- * following cases:
- *   - it is equal to zero along with StripOffset;
- *   - it is larger than file itself (in case of uncompressed image);
- *   - it is smaller than the size of the bytes per row multiplied on the
- *     number of rows.  The last case should not be checked in the case of
- *     writing new image, because we may do not know the exact strip size
- *     until the whole image will be written and directory dumped out.
- */
-#define        BYTECOUNTLOOKSBAD \
-    ( (td->td_stripbytecount[0] == 0 && td->td_stripoffset[0] != 0) || \
-      (td->td_compression == COMPRESSION_NONE && \
-       td->td_stripbytecount[0] > TIFFGetFileSize(tif) - td->td_stripoffset[0]) || \
-      (tif->tif_mode == O_RDONLY && \
-       td->td_compression == COMPRESSION_NONE && \
-       td->td_stripbytecount[0] < TIFFScanlineSize(tif) * td->td_imagelength) )
-
-       } else if (td->td_nstrips == 1 
-                   && td->td_stripoffset[0] != 0 
-                   && BYTECOUNTLOOKSBAD) {
+       if (tif->tif_dir.td_compression!=COMPRESSION_OJPEG)
+       {
                /*
-                * XXX: Plexus (and others) sometimes give a value of zero for
-                * a tag when they don't know what the correct value is!  Try
-                * and handle the simple case of estimating the size of a one
-                * strip image.
+                * Attempt to deal with a missing StripByteCounts tag.
                 */
-               TIFFWarningExt(tif->tif_clientdata, module,
-       "%s: Bogus \"%s\" field, ignoring and calculating from imagelength",
-                            tif->tif_name,
-                           _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-               if(EstimateStripByteCounts(tif, dir, dircount) < 0)
-                   goto bad;
-       } else if (td->td_planarconfig == PLANARCONFIG_CONTIG
-                  && td->td_nstrips > 2
-                  && td->td_compression == COMPRESSION_NONE
-                  && td->td_stripbytecount[0] != td->td_stripbytecount[1]) {
+               if (!TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) {
+                       /*
+                        * Some manufacturers violate the spec by not giving
+                        * the size of the strips.  In this case, assume there
+                        * is one uncompressed strip of data.
+                        */
+                       if ((tif->tif_dir.td_planarconfig == PLANARCONFIG_CONTIG &&
+                           tif->tif_dir.td_nstrips > 1) ||
+                           (tif->tif_dir.td_planarconfig == PLANARCONFIG_SEPARATE &&
+                            tif->tif_dir.td_nstrips != (uint32)tif->tif_dir.td_samplesperpixel)) {
+                           MissingRequired(tif, "StripByteCounts");
+                           goto bad;
+                       }
+                       TIFFWarningExt(tif->tif_clientdata, module,
+                               "TIFF directory is missing required "
+                               "\"StripByteCounts\" field, calculating from imagelength");
+                       if (EstimateStripByteCounts(tif, dir, dircount) < 0)
+                           goto bad;
                /*
-                * XXX: Some vendors fill StripByteCount array with absolutely
-                * wrong values (it can be equal to StripOffset array, for
-                * example). Catch this case here.
+                * Assume we have wrong StripByteCount value (in case
+                * of single strip) in following cases:
+                *   - it is equal to zero along with StripOffset;
+                *   - it is larger than file itself (in case of uncompressed
+                *     image);
+                *   - it is smaller than the size of the bytes per row
+                *     multiplied on the number of rows.  The last case should
+                *     not be checked in the case of writing new image,
+                *     because we may do not know the exact strip size
+                *     until the whole image will be written and directory
+                *     dumped out.
                 */
-               TIFFWarningExt(tif->tif_clientdata, module,
-       "%s: Wrong \"%s\" field, ignoring and calculating from imagelength",
-                            tif->tif_name,
-                           _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
-               if (EstimateStripByteCounts(tif, dir, dircount) < 0)
-                   goto bad;
+               #define BYTECOUNTLOOKSBAD \
+                   ( (tif->tif_dir.td_stripbytecount[0] == 0 && tif->tif_dir.td_stripoffset[0] != 0) || \
+                     (tif->tif_dir.td_compression == COMPRESSION_NONE && \
+                      tif->tif_dir.td_stripbytecount[0] > TIFFGetFileSize(tif) - tif->tif_dir.td_stripoffset[0]) || \
+                     (tif->tif_mode == O_RDONLY && \
+                      tif->tif_dir.td_compression == COMPRESSION_NONE && \
+                      tif->tif_dir.td_stripbytecount[0] < TIFFScanlineSize64(tif) * tif->tif_dir.td_imagelength) )
+
+               } else if (tif->tif_dir.td_nstrips == 1
+                           && _TIFFFillStriles(tif)
+                          && tif->tif_dir.td_stripoffset[0] != 0
+                          && BYTECOUNTLOOKSBAD) {
+                       /*
+                        * XXX: Plexus (and others) sometimes give a value of
+                        * zero for a tag when they don't know what the
+                        * correct value is!  Try and handle the simple case
+                        * of estimating the size of a one strip image.
+                        */
+                       TIFFWarningExt(tif->tif_clientdata, module,
+                           "Bogus \"StripByteCounts\" field, ignoring and calculating from imagelength");
+                       if(EstimateStripByteCounts(tif, dir, dircount) < 0)
+                           goto bad;
+
+#if !defined(DEFER_STRILE_LOAD)
+               } else if (tif->tif_dir.td_planarconfig == PLANARCONFIG_CONTIG
+                          && tif->tif_dir.td_nstrips > 2
+                          && tif->tif_dir.td_compression == COMPRESSION_NONE
+                          && tif->tif_dir.td_stripbytecount[0] != tif->tif_dir.td_stripbytecount[1]
+                          && tif->tif_dir.td_stripbytecount[0] != 0
+                          && tif->tif_dir.td_stripbytecount[1] != 0 ) {
+                       /*
+                        * XXX: Some vendors fill StripByteCount array with
+                        * absolutely wrong values (it can be equal to
+                        * StripOffset array, for example). Catch this case
+                        * here.
+                         *
+                         * We avoid this check if deferring strile loading
+                         * as it would always force us to load the strip/tile
+                         * information.
+                        */
+                       TIFFWarningExt(tif->tif_clientdata, module,
+                           "Wrong \"StripByteCounts\" field, ignoring and calculating from imagelength");
+                       if (EstimateStripByteCounts(tif, dir, dircount) < 0)
+                           goto bad;
+#endif /* !defined(DEFER_STRILE_LOAD) */                        
+               }
        }
-       if (dir) {
-               _TIFFfree((char *)dir);
-               dir = NULL;
+       if (dir)
+       {
+               _TIFFfree(dir);
+               dir=NULL;
        }
        if (!TIFFFieldSet(tif, FIELD_MAXSAMPLEVALUE))
-               td->td_maxsamplevalue = (uint16)((1L<<td->td_bitspersample)-1);
-       /*
-        * Setup default compression scheme.
-        */
-
+       {
+               if (tif->tif_dir.td_bitspersample>=16)
+                       tif->tif_dir.td_maxsamplevalue=0xFFFF;
+               else
+                       tif->tif_dir.td_maxsamplevalue = (uint16)((1L<<tif->tif_dir.td_bitspersample)-1);
+       }
        /*
         * XXX: We can optimize checking for the strip bounds using the sorted
         * bytecounts array. See also comments for TIFFAppendToStrip()
         * function in tif_write.c.
         */
-       if (td->td_nstrips > 1) {
-               tstrip_t strip;
-
-               td->td_stripbytecountsorted = 1;
-               for (strip = 1; strip < td->td_nstrips; strip++) {
-                       if (td->td_stripoffset[strip - 1] >
-                           td->td_stripoffset[strip]) {
-                               td->td_stripbytecountsorted = 0;
+#if !defined(DEFER_STRILE_LOAD)        
+       if (tif->tif_dir.td_nstrips > 1) {
+               uint32 strip;
+
+               tif->tif_dir.td_stripbytecountsorted = 1;
+               for (strip = 1; strip < tif->tif_dir.td_nstrips; strip++) {
+                       if (tif->tif_dir.td_stripoffset[strip - 1] >
+                           tif->tif_dir.td_stripoffset[strip]) {
+                               tif->tif_dir.td_stripbytecountsorted = 0;
                                break;
                        }
                }
        }
+#endif /* !defined(DEFER_STRILE_LOAD) */
+        
+       /*
+        * An opportunity for compression mode dependent tag fixup
+        */
+       (*tif->tif_fixuptags)(tif);
 
-       if (!TIFFFieldSet(tif, FIELD_COMPRESSION))
-               TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
-        /*
-         * Some manufacturers make life difficult by writing
+       /*
+        * Some manufacturers make life difficult by writing
         * large amounts of uncompressed data as a single strip.
         * This is contrary to the recommendations of the spec.
-         * The following makes an attempt at breaking such images
+        * The following makes an attempt at breaking such images
         * into strips closer to the recommended 8k bytes.  A
         * side effect, however, is that the RowsPerStrip tag
         * value may be changed.
-         */
-       if (td->td_nstrips == 1 && td->td_compression == COMPRESSION_NONE &&
-           (tif->tif_flags & (TIFF_STRIPCHOP|TIFF_ISTILED)) == TIFF_STRIPCHOP)
+        */
+       if ((tif->tif_dir.td_planarconfig==PLANARCONFIG_CONTIG)&&
+           (tif->tif_dir.td_nstrips==1)&&
+           (tif->tif_dir.td_compression==COMPRESSION_NONE)&&  
+           ((tif->tif_flags&(TIFF_STRIPCHOP|TIFF_ISTILED))==TIFF_STRIPCHOP))
+    {
+        if ( !_TIFFFillStriles(tif) || !tif->tif_dir.td_stripbytecount )
+            return 0;
                ChopUpSingleUncompressedStrip(tif);
+    }
+
+        /*
+         * Clear the dirty directory flag. 
+         */
+       tif->tif_flags &= ~TIFF_DIRTYDIRECT;
+       tif->tif_flags &= ~TIFF_DIRTYSTRIP;
 
        /*
         * Reinitialize i/o since we are starting on a new directory.
         */
        tif->tif_row = (uint32) -1;
-       tif->tif_curstrip = (tstrip_t) -1;
+       tif->tif_curstrip = (uint32) -1;
        tif->tif_col = (uint32) -1;
-       tif->tif_curtile = (ttile_t) -1;
-       tif->tif_tilesize = (tsize_t) -1;
+       tif->tif_curtile = (uint32) -1;
+       tif->tif_tilesize = (tmsize_t) -1;
 
        tif->tif_scanlinesize = TIFFScanlineSize(tif);
        if (!tif->tif_scanlinesize) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero scanline size",
-                         tif->tif_name);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Cannot handle zero scanline size");
                return (0);
        }
 
        if (isTiled(tif)) {
                tif->tif_tilesize = TIFFTileSize(tif);
                if (!tif->tif_tilesize) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero tile size",
-                                 tif->tif_name);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                            "Cannot handle zero tile size");
                        return (0);
                }
        } else {
                if (!TIFFStripSize(tif)) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: cannot handle zero strip size",
-                                 tif->tif_name);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Cannot handle zero strip size");
                        return (0);
                }
        }
@@ -688,165 +4084,177 @@ bad:
        return (0);
 }
 
-/* 
- * Read custom directory from the arbitarry offset.
- * The code is very similar to TIFFReadDirectory().
- */
-int
-TIFFReadCustomDirectory(TIFF* tif, toff_t diroff,
-                       const TIFFFieldInfo info[], size_t n)
+static void
+TIFFReadDirectoryCheckOrder(TIFF* tif, TIFFDirEntry* dir, uint16 dircount)
 {
-       static const char module[] = "TIFFReadCustomDirectory";
-
-       TIFFDirectory* td = &tif->tif_dir;
-       TIFFDirEntry *dp, *dir = NULL;
-       const TIFFFieldInfo* fip;
-       size_t fix;
-       uint16 i, dircount;
-
-       _TIFFSetupFieldInfo(tif, info, n);
-
-       tif->tif_diroff = diroff;
-
-       if (!isMapped(tif)) {
-               if (!SeekOK(tif, diroff)) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Seek error accessing TIFF directory",
-                            tif->tif_name);
-                       return (0);
-               }
-               if (!ReadOK(tif, &dircount, sizeof (uint16))) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-                       return (0);
-               }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-                                                      sizeof (TIFFDirEntry),
-                                       "to read TIFF custom directory");
-               if (dir == NULL)
-                       return (0);
-               if (!ReadOK(tif, dir, dircount * sizeof (TIFFDirEntry))) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%.100s: Can not read TIFF directory",
-                                  tif->tif_name);
-                       goto bad;
+       static const char module[] = "TIFFReadDirectoryCheckOrder";
+       uint16 m;
+       uint16 n;
+       TIFFDirEntry* o;
+       m=0;
+       for (n=0, o=dir; n<dircount; n++, o++)
+       {
+               if (o->tdir_tag<m)
+               {
+                       TIFFWarningExt(tif->tif_clientdata,module,
+                           "Invalid TIFF directory; tags are not sorted in ascending order");
+                       break;
                }
-       } else {
-               toff_t off = diroff;
+               m=o->tdir_tag+1;
+       }
+}
 
-               if (off + sizeof (uint16) > tif->tif_size) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Can not read TIFF directory count",
-                            tif->tif_name);
-                       return (0);
-               } else
-                       _TIFFmemcpy(&dircount, tif->tif_base + off, sizeof (uint16));
-               off += sizeof (uint16);
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
-                                                      sizeof (TIFFDirEntry),
-                                       "to read TIFF custom directory");
-               if (dir == NULL)
-                       return (0);
-               if (off + dircount * sizeof (TIFFDirEntry) > tif->tif_size) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                                  "%s: Can not read TIFF directory",
-                                  tif->tif_name);
-                       goto bad;
-               } else {
-                       _TIFFmemcpy(dir, tif->tif_base + off,
-                                   dircount * sizeof (TIFFDirEntry));
+static TIFFDirEntry*
+TIFFReadDirectoryFindEntry(TIFF* tif, TIFFDirEntry* dir, uint16 dircount, uint16 tagid)
+{
+       TIFFDirEntry* m;
+       uint16 n;
+       (void) tif;
+       for (m=dir, n=0; n<dircount; m++, n++)
+       {
+               if (m->tdir_tag==tagid)
+                       return(m);
+       }
+       return(0);
+}
+
+static void
+TIFFReadDirectoryFindFieldInfo(TIFF* tif, uint16 tagid, uint32* fii)
+{
+       int32 ma,mb,mc;
+       ma=-1;
+       mc=(int32)tif->tif_nfields;
+       while (1)
+       {
+               if (ma+1==mc)
+               {
+                       *fii = FAILED_FII;
+                       return;
                }
+               mb=(ma+mc)/2;
+               if (tif->tif_fields[mb]->field_tag==(uint32)tagid)
+                       break;
+               if (tif->tif_fields[mb]->field_tag<(uint32)tagid)
+                       ma=mb;
+               else
+                       mc=mb;
        }
+       while (1)
+       {
+               if (mb==0)
+                       break;
+               if (tif->tif_fields[mb-1]->field_tag!=(uint32)tagid)
+                       break;
+               mb--;
+       }
+       *fii=mb;
+}
 
+/*
+ * Read custom directory from the arbitarry offset.
+ * The code is very similar to TIFFReadDirectory().
+ */
+int
+TIFFReadCustomDirectory(TIFF* tif, toff_t diroff,
+                       const TIFFFieldArray* infoarray)
+{
+       static const char module[] = "TIFFReadCustomDirectory";
+       TIFFDirEntry* dir;
+       uint16 dircount;
+       TIFFDirEntry* dp;
+       uint16 di;
+       const TIFFField* fip;
+       uint32 fii;
+       _TIFFSetupFields(tif, infoarray);
+       dircount=TIFFFetchDirectory(tif,diroff,&dir,NULL);
+       if (!dircount)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,
+                   "Failed to read custom directory at offset " TIFF_UINT64_FORMAT,diroff);
+               return 0;
+       }
        TIFFFreeDirectory(tif);
-
-       fix = 0;
-       for (dp = dir, i = dircount; i > 0; i--, dp++) {
-               if (tif->tif_flags & TIFF_SWAB) {
-                       TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
-                       TIFFSwabArrayOfLong(&dp->tdir_count, 2);
-               }
-
-               if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
-                       continue;
-
-               while (fix < tif->tif_nfields &&
-                      tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-                       fix++;
-
-               if (fix >= tif->tif_nfields ||
-                   tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
+       _TIFFmemset(&tif->tif_dir, 0, sizeof(TIFFDirectory));
+       TIFFReadDirectoryCheckOrder(tif,dir,dircount);
+       for (di=0, dp=dir; di<dircount; di++, dp++)
+       {
+               TIFFReadDirectoryFindFieldInfo(tif,dp->tdir_tag,&fii);
+               if (fii == FAILED_FII)
+               {
                        TIFFWarningExt(tif->tif_clientdata, module,
-                        "%s: unknown field with tag %d (0x%x) encountered",
-                                   tif->tif_name, dp->tdir_tag, dp->tdir_tag,
-                                   dp->tdir_type);
-
-                       TIFFMergeFieldInfo(tif,
-                                          _TIFFCreateAnonFieldInfo(tif,
+                           "Unknown field with tag %d (0x%x) encountered",
+                           dp->tdir_tag, dp->tdir_tag);
+                       if (!_TIFFMergeFields(tif, _TIFFCreateAnonField(tif,
                                                dp->tdir_tag,
-                                               (TIFFDataType)dp->tdir_type),
-                                          1);
-
-                       fix = 0;
-                       while (fix < tif->tif_nfields &&
-                              tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
-                               fix++;
-               }
-               /*
-                * Null out old tags that we ignore.
-                */
-               if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
-       ignore:
-                       dp->tdir_tag = IGNORE;
-                       continue;
-               }
-               /*
-                * Check data type.
-                */
-               fip = tif->tif_fieldinfo[fix];
-               while (dp->tdir_type != (unsigned short) fip->field_type
-                       && fix < tif->tif_nfields) {
-                       if (fip->field_type == TIFF_ANY)        /* wildcard */
-                               break;
-                        fip = tif->tif_fieldinfo[++fix];
-                       if (fix >= tif->tif_nfields ||
-                           fip->field_tag != dp->tdir_tag) {
+                                               (TIFFDataType) dp->tdir_type),
+                                            1)) {
                                TIFFWarningExt(tif->tif_clientdata, module,
-                       "%s: wrong data type %d for \"%s\"; tag ignored",
-                                           tif->tif_name, dp->tdir_type,
-                                           tif->tif_fieldinfo[fix-1]->field_name);
-                               goto ignore;
+                                   "Registering anonymous field with tag %d (0x%x) failed",
+                                   dp->tdir_tag, dp->tdir_tag);
+                               dp->tdir_tag=IGNORE;
+                       } else {
+                               TIFFReadDirectoryFindFieldInfo(tif,dp->tdir_tag,&fii);
+                               assert( fii != FAILED_FII );
                        }
                }
-               /*
-                * Check count if known in advance.
-                */
-               if (fip->field_readcount != TIFF_VARIABLE
-                   && fip->field_readcount != TIFF_VARIABLE2) {
-                       uint32 expected = (fip->field_readcount == TIFF_SPP) ?
-                           (uint32) td->td_samplesperpixel :
-                           (uint32) fip->field_readcount;
-                       if (!CheckDirCount(tif, dp, expected))
-                               goto ignore;
+               if (dp->tdir_tag!=IGNORE)
+               {
+                       fip=tif->tif_fields[fii];
+                       if (fip->field_bit==FIELD_IGNORE)
+                               dp->tdir_tag=IGNORE;
+                       else
+                       {
+                               /* check data type */
+                               while ((fip->field_type!=TIFF_ANY)&&(fip->field_type!=dp->tdir_type))
+                               {
+                                       fii++;
+                                       if ((fii==tif->tif_nfields)||
+                                           (tif->tif_fields[fii]->field_tag!=(uint32)dp->tdir_tag))
+                                       {
+                                               fii=0xFFFF;
+                                               break;
+                                       }
+                                       fip=tif->tif_fields[fii];
+                               }
+                               if (fii==0xFFFF)
+                               {
+                                       TIFFWarningExt(tif->tif_clientdata, module,
+                                           "Wrong data type %d for \"%s\"; tag ignored",
+                                           dp->tdir_type,fip->field_name);
+                                       dp->tdir_tag=IGNORE;
+                               }
+                               else
+                               {
+                                       /* check count if known in advance */
+                                       if ((fip->field_readcount!=TIFF_VARIABLE)&&
+                                           (fip->field_readcount!=TIFF_VARIABLE2))
+                                       {
+                                               uint32 expected;
+                                               if (fip->field_readcount==TIFF_SPP)
+                                                       expected=(uint32)tif->tif_dir.td_samplesperpixel;
+                                               else
+                                                       expected=(uint32)fip->field_readcount;
+                                               if (!CheckDirCount(tif,dp,expected))
+                                                       dp->tdir_tag=IGNORE;
+                                       }
+                               }
+                       }
+                       switch (dp->tdir_tag)
+                       {
+                               case IGNORE:
+                                       break;
+                               case EXIFTAG_SUBJECTDISTANCE:
+                                       (void) TIFFFetchSubjectDistance(tif,dp);
+                                       break;
+                               default:
+                                       (void) TIFFFetchNormalTag(tif, dp, TRUE);
+                                       break;
+                       }
                }
-
-               (void) TIFFFetchNormalTag(tif, dp);
        }
-       
        if (dir)
                _TIFFfree(dir);
        return 1;
-
-bad:
-       if (dir)
-               _TIFFfree(dir);
-       return 0;
 }
 
 /*
@@ -856,11 +4264,9 @@ bad:
 int
 TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff)
 {
-       size_t exifFieldInfoCount;
-       const TIFFFieldInfo *exifFieldInfo =
-               _TIFFGetExifFieldInfo(&exifFieldInfoCount);
-       return TIFFReadCustomDirectory(tif, diroff, exifFieldInfo,
-                                      exifFieldInfoCount);
+       const TIFFFieldArray* exifFieldArray;
+       exifFieldArray = _TIFFGetExifFields();
+       return TIFFReadCustomDirectory(tif, diroff, exifFieldArray);  
 }
 
 static int
@@ -868,59 +4274,79 @@ EstimateStripByteCounts(TIFF* tif, TIFFDirEntry* dir, uint16 dircount)
 {
        static const char module[] = "EstimateStripByteCounts";
 
-       register TIFFDirEntry *dp;
-       register TIFFDirectory *td = &tif->tif_dir;
-       uint16 i;
+       TIFFDirEntry *dp;
+       TIFFDirectory *td = &tif->tif_dir;
+       uint32 strip;
+
+    _TIFFFillStriles( tif );
 
        if (td->td_stripbytecount)
                _TIFFfree(td->td_stripbytecount);
-       td->td_stripbytecount = (uint32*)
-           _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint32),
+       td->td_stripbytecount = (uint64*)
+           _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64),
                "for \"StripByteCounts\" array");
+        if( td->td_stripbytecount == NULL )
+            return -1;
+
        if (td->td_compression != COMPRESSION_NONE) {
-               uint32 space = (uint32)(sizeof (TIFFHeader)
-                   + sizeof (uint16)
-                   + (dircount * sizeof (TIFFDirEntry))
-                   + sizeof (uint32));
-               toff_t filesize = TIFFGetFileSize(tif);
+               uint64 space;
+               uint64 filesize;
                uint16 n;
-
+               filesize = TIFFGetFileSize(tif);
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       space=sizeof(TIFFHeaderClassic)+2+dircount*12+4;
+               else
+                       space=sizeof(TIFFHeaderBig)+8+dircount*20+8;
                /* calculate amount of space used by indirect values */
                for (dp = dir, n = dircount; n > 0; n--, dp++)
                {
-                       uint32 cc = TIFFDataWidth((TIFFDataType) dp->tdir_type);
-                       if (cc == 0) {
+                       uint32 typewidth = TIFFDataWidth((TIFFDataType) dp->tdir_type);
+                       uint64 datasize;
+                       typewidth = TIFFDataWidth((TIFFDataType) dp->tdir_type);
+                       if (typewidth == 0) {
                                TIFFErrorExt(tif->tif_clientdata, module,
-                       "%s: Cannot determine size of unknown tag type %d",
-                                         tif->tif_name, dp->tdir_type);
+                                   "Cannot determine size of unknown tag type %d",
+                                   dp->tdir_type);
                                return -1;
                        }
-                       cc = cc * dp->tdir_count;
-                       if (cc > sizeof (uint32))
-                               space += cc;
+                       datasize=(uint64)typewidth*dp->tdir_count;
+                       if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       {
+                               if (datasize<=4)
+                                       datasize=0;
+                       }
+                       else
+                       {
+                               if (datasize<=8)
+                                       datasize=0;
+                       }
+                       space+=datasize;
                }
                space = filesize - space;
                if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
                        space /= td->td_samplesperpixel;
-               for (i = 0; i < td->td_nstrips; i++)
-                       td->td_stripbytecount[i] = space;
+               for (strip = 0; strip < td->td_nstrips; strip++)
+                       td->td_stripbytecount[strip] = space;
                /*
                 * This gross hack handles the case were the offset to
                 * the last strip is past the place where we think the strip
                 * should begin.  Since a strip of data must be contiguous,
                 * it's safe to assume that we've overestimated the amount
                 * of data in the strip and trim this number back accordingly.
-                */ 
-               i--;
-               if (((toff_t)(td->td_stripoffset[i]+td->td_stripbytecount[i]))
-                                                               > filesize)
-                       td->td_stripbytecount[i] =
-                           filesize - td->td_stripoffset[i];
+                */
+               strip--;
+               if (td->td_stripoffset[strip]+td->td_stripbytecount[strip] > filesize)
+                       td->td_stripbytecount[strip] = filesize - td->td_stripoffset[strip];
+       } else if (isTiled(tif)) {
+               uint64 bytespertile = TIFFTileSize64(tif);
+
+               for (strip = 0; strip < td->td_nstrips; strip++)
+                   td->td_stripbytecount[strip] = bytespertile;
        } else {
-               uint32 rowbytes = TIFFScanlineSize(tif);
+               uint64 rowbytes = TIFFScanlineSize64(tif);
                uint32 rowsperstrip = td->td_imagelength/td->td_stripsperimage;
-               for (i = 0; i < td->td_nstrips; i++)
-                       td->td_stripbytecount[i] = rowbytes*rowsperstrip;
+               for (strip = 0; strip < td->td_nstrips; strip++)
+                       td->td_stripbytecount[strip] = rowbytes * rowsperstrip;
        }
        TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
        if (!TIFFFieldSet(tif, FIELD_ROWSPERSTRIP))
@@ -934,826 +4360,1169 @@ MissingRequired(TIFF* tif, const char* tagname)
        static const char module[] = "MissingRequired";
 
        TIFFErrorExt(tif->tif_clientdata, module,
-                 "%s: TIFF directory is missing required \"%s\" field",
-                 tif->tif_name, tagname);
+           "TIFF directory is missing required \"%s\" field",
+           tagname);
 }
 
 /*
- * Check the count field of a directory
- * entry against a known value.  The caller
- * is expected to skip/ignore the tag if
- * there is a mismatch.
+ * Check the directory offset against the list of already seen directory
+ * offsets. This is a trick to prevent IFD looping. The one can create TIFF
+ * file with looped directory pointers. We will maintain a list of already
+ * seen directories and check every IFD offset against that list.
  */
 static int
-CheckDirCount(TIFF* tif, TIFFDirEntry* dir, uint32 count)
+TIFFCheckDirOffset(TIFF* tif, uint64 diroff)
 {
-       if (count > dir->tdir_count) {
-               TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-       "incorrect count for field \"%s\" (%lu, expecting %lu); tag ignored",
-                   _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-                   dir->tdir_count, count);
-               return (0);
-       } else if (count < dir->tdir_count) {
-               TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-       "incorrect count for field \"%s\" (%lu, expecting %lu); tag trimmed",
-                   _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
-                   dir->tdir_count, count);
-               return (1);
+       uint16 n;
+
+       if (diroff == 0)                        /* no more directories */
+               return 0;
+
+       for (n = 0; n < tif->tif_dirnumber && tif->tif_dirlist; n++) {
+               if (tif->tif_dirlist[n] == diroff)
+                       return 0;
        }
-       return (1);
-}
 
-/*
- * Fetch a contiguous directory item.
- */
-static tsize_t
-TIFFFetchData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-       int w = TIFFDataWidth((TIFFDataType) dir->tdir_type);
-       tsize_t cc = dir->tdir_count * w;
+       tif->tif_dirnumber++;
 
-       /* Check for overflow. */
-       if (!dir->tdir_count || !w || cc / w != (tsize_t)dir->tdir_count)
-               goto bad;
+       if (tif->tif_dirnumber > tif->tif_dirlistsize) {
+               uint64* new_dirlist;
 
-       if (!isMapped(tif)) {
-               if (!SeekOK(tif, dir->tdir_offset))
-                       goto bad;
-               if (!ReadOK(tif, cp, cc))
-                       goto bad;
-       } else {
-               /* Check for overflow. */
-               if ((tsize_t)dir->tdir_offset + cc < (tsize_t)dir->tdir_offset
-                   || (tsize_t)dir->tdir_offset + cc < cc
-                   || (tsize_t)dir->tdir_offset + cc > (tsize_t)tif->tif_size)
-                       goto bad;
-               _TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);
-       }
-       if (tif->tif_flags & TIFF_SWAB) {
-               switch (dir->tdir_type) {
-               case TIFF_SHORT:
-               case TIFF_SSHORT:
-                       TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
-                       break;
-               case TIFF_LONG:
-               case TIFF_SLONG:
-               case TIFF_FLOAT:
-                       TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
-                       break;
-               case TIFF_RATIONAL:
-               case TIFF_SRATIONAL:
-                       TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
-                       break;
-               case TIFF_DOUBLE:
-                       TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
-                       break;
-               }
+               /*
+                * XXX: Reduce memory allocation granularity of the dirlist
+                * array.
+                */
+               new_dirlist = (uint64*)_TIFFCheckRealloc(tif, tif->tif_dirlist,
+                   tif->tif_dirnumber, 2 * sizeof(uint64), "for IFD list");
+               if (!new_dirlist)
+                       return 0;
+               tif->tif_dirlistsize = 2 * tif->tif_dirnumber;
+               tif->tif_dirlist = new_dirlist;
        }
-       return (cc);
-bad:
-       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                    "Error fetching data for field \"%s\"",
-                    _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-       return (tsize_t) 0;
-}
 
-/*
- * Fetch an ASCII item from the file.
- */
-static tsize_t
-TIFFFetchString(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-       if (dir->tdir_count <= 4) {
-               uint32 l = dir->tdir_offset;
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabLong(&l);
-               _TIFFmemcpy(cp, &l, dir->tdir_count);
-               return (1);
-       }
-       return (TIFFFetchData(tif, dir, cp));
+       tif->tif_dirlist[tif->tif_dirnumber - 1] = diroff;
+
+       return 1;
 }
 
 /*
- * Convert numerator+denominator to float.
+ * Check the count field of a directory entry against a known value.  The
+ * caller is expected to skip/ignore the tag if there is a mismatch.
  */
 static int
-cvtRational(TIFF* tif, TIFFDirEntry* dir, uint32 num, uint32 denom, float* rv)
+CheckDirCount(TIFF* tif, TIFFDirEntry* dir, uint32 count)
 {
-       if (denom == 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "%s: Rational with zero denominator (num = %lu)",
-                   _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name, num);
+       if ((uint64)count > dir->tdir_count) {
+               const TIFFField* fip = TIFFFieldWithTag(tif, dir->tdir_tag);
+               TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
+       "incorrect count for field \"%s\" (" TIFF_UINT64_FORMAT ", expecting %u); tag ignored",
+                   fip ? fip->field_name : "unknown tagname",
+                   dir->tdir_count, count);
                return (0);
-       } else {
-               if (dir->tdir_type == TIFF_RATIONAL)
-                       *rv = ((float)num / (float)denom);
-               else
-                       *rv = ((float)(int32)num / (float)(int32)denom);
+       } else if ((uint64)count < dir->tdir_count) {
+               const TIFFField* fip = TIFFFieldWithTag(tif, dir->tdir_tag);
+               TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
+       "incorrect count for field \"%s\" (" TIFF_UINT64_FORMAT ", expecting %u); tag trimmed",
+                   fip ? fip->field_name : "unknown tagname",
+                   dir->tdir_count, count);
+               dir->tdir_count = count;
                return (1);
        }
+       return (1);
 }
 
 /*
- * Fetch a rational item from the file
- * at offset off and return the value
- * as a floating point number.
+ * Read IFD structure from the specified offset. If the pointer to
+ * nextdiroff variable has been specified, read it too. Function returns a
+ * number of fields in the directory or 0 if failed.
  */
-static float
-TIFFFetchRational(TIFF* tif, TIFFDirEntry* dir)
+static uint16
+TIFFFetchDirectory(TIFF* tif, uint64 diroff, TIFFDirEntry** pdir,
+                   uint64 *nextdiroff)
 {
-       uint32 l[2];
-       float v;
+       static const char module[] = "TIFFFetchDirectory";
 
-       return (!TIFFFetchData(tif, dir, (char *)l) ||
-           !cvtRational(tif, dir, l[0], l[1], &v) ? 1.0f : v);
-}
+       void* origdir;
+       uint16 dircount16;
+       uint32 dirsize;
+       TIFFDirEntry* dir;
+       uint8* ma;
+       TIFFDirEntry* mb;
+       uint16 n;
 
-/*
- * Fetch a single floating point value
- * from the offset field and return it
- * as a native float.
- */
-static float
-TIFFFetchFloat(TIFF* tif, TIFFDirEntry* dir)
-{
-       float v;
-       int32 l = TIFFExtractData(tif, dir->tdir_type, dir->tdir_offset);
-        _TIFFmemcpy(&v, &l, sizeof(float));
-       TIFFCvtIEEEFloatToNative(tif, 1, &v);
-       return (v);
-}
+       assert(pdir);
 
-/*
- * Fetch an array of BYTE or SBYTE values.
- */
-static int
-TIFFFetchByteArray(TIFF* tif, TIFFDirEntry* dir, uint8* v)
-{
-    if (dir->tdir_count <= 4) {
-        /*
-         * Extract data from offset field.
-         */
-        if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-           if (dir->tdir_type == TIFF_SBYTE)
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset & 0xff;
-                    case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
-                   case 1: v[0] = dir->tdir_offset >> 24;
-                }
-           else
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset & 0xff;
-                    case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
-                   case 1: v[0] = dir->tdir_offset >> 24;
-                }
-       } else {
-           if (dir->tdir_type == TIFF_SBYTE)
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset >> 24;
-                    case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
-                    case 1: v[0] = dir->tdir_offset & 0xff;
-               }
-           else
-                switch (dir->tdir_count) {
-                    case 4: v[3] = dir->tdir_offset >> 24;
-                    case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
-                    case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
-                    case 1: v[0] = dir->tdir_offset & 0xff;
+       tif->tif_diroff = diroff;
+       if (nextdiroff)
+               *nextdiroff = 0;
+       if (!isMapped(tif)) {
+               if (!SeekOK(tif, tif->tif_diroff)) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "%s: Seek error accessing TIFF directory",
+                               tif->tif_name);
+                       return 0;
                }
-       }
-        return (1);
-    } else
-        return (TIFFFetchData(tif, dir, (char*) v) != 0);      /* XXX */
-}
-
-/*
- * Fetch an array of SHORT or SSHORT values.
- */
-static int
-TIFFFetchShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
-       if (dir->tdir_count <= 2) {
-               if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-                       switch (dir->tdir_count) {
-                       case 2: v[1] = (uint16) (dir->tdir_offset & 0xffff);
-                       case 1: v[0] = (uint16) (dir->tdir_offset >> 16);
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       if (!ReadOK(tif, &dircount16, sizeof (uint16))) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "%s: Can not read TIFF directory count",
+                                   tif->tif_name);
+                               return 0;
                        }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabShort(&dircount16);
+                       if (dircount16>4096)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Sanity check on directory count failed, this is probably not a valid IFD offset");
+                               return 0;
+                       }
+                       dirsize = 12;
                } else {
-                       switch (dir->tdir_count) {
-                       case 2: v[1] = (uint16) (dir->tdir_offset >> 16);
-                       case 1: v[0] = (uint16) (dir->tdir_offset & 0xffff);
+                       uint64 dircount64;
+                       if (!ReadOK(tif, &dircount64, sizeof (uint64))) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                       "%s: Can not read TIFF directory count",
+                                       tif->tif_name);
+                               return 0;
                        }
-               }
-               return (1);
-       } else
-               return (TIFFFetchData(tif, dir, (char *)v) != 0);
-}
-
-/*
- * Fetch a pair of SHORT or BYTE values. Some tags may have either BYTE
- * or SHORT type and this function works with both ones.
- */
-static int
-TIFFFetchShortPair(TIFF* tif, TIFFDirEntry* dir)
-{
-       switch (dir->tdir_type) {
-               case TIFF_BYTE:
-               case TIFF_SBYTE:
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&dircount64);
+                       if (dircount64>4096)
                        {
-                       uint8 v[4];
-                       return TIFFFetchByteArray(tif, dir, v)
-                               && TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Sanity check on directory count failed, this is probably not a valid IFD offset");
+                               return 0;
                        }
-               case TIFF_SHORT:
-               case TIFF_SSHORT:
+                       dircount16 = (uint16)dircount64;
+                       dirsize = 20;
+               }
+               origdir = _TIFFCheckMalloc(tif, dircount16,
+                   dirsize, "to read TIFF directory");
+               if (origdir == NULL)
+                       return 0;
+               if (!ReadOK(tif, origdir, (tmsize_t)(dircount16*dirsize))) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "%.100s: Can not read TIFF directory",
+                               tif->tif_name);
+                       _TIFFfree(origdir);
+                       return 0;
+               }
+               /*
+                * Read offset to next directory for sequential scans if
+                * needed.
+                */
+               if (nextdiroff)
+               {
+                       if (!(tif->tif_flags&TIFF_BIGTIFF))
                        {
-                       uint16 v[2];
-                       return TIFFFetchShortArray(tif, dir, v)
-                               && TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
+                               uint32 nextdiroff32;
+                               if (!ReadOK(tif, &nextdiroff32, sizeof(uint32)))
+                                       nextdiroff32 = 0;
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabLong(&nextdiroff32);
+                               *nextdiroff=nextdiroff32;
+                       } else {
+                               if (!ReadOK(tif, nextdiroff, sizeof(uint64)))
+                                       *nextdiroff = 0;
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabLong8(nextdiroff);
                        }
-               default:
-                       return 0;
-       }
-}
-
-/*
- * Fetch an array of LONG or SLONG values.
- */
-static int
-TIFFFetchLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
-{
-       if (dir->tdir_count == 1) {
-               v[0] = dir->tdir_offset;
-               return (1);
-       } else
-               return (TIFFFetchData(tif, dir, (char*) v) != 0);
-}
+               }
+       } else {
+               tmsize_t m;
+               tmsize_t off = (tmsize_t) tif->tif_diroff;
+               if ((uint64)off!=tif->tif_diroff)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Can not read TIFF directory count");
+                       return(0);
+               }
 
-/*
- * Fetch an array of RATIONAL or SRATIONAL values.
- */
-static int
-TIFFFetchRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-       int ok = 0;
-       uint32* l;
-
-       l = (uint32*)_TIFFCheckMalloc(tif,
-           dir->tdir_count, TIFFDataWidth((TIFFDataType) dir->tdir_type),
-           "to fetch array of rationals");
-       if (l) {
-               if (TIFFFetchData(tif, dir, (char *)l)) {
-                       uint32 i;
-                       for (i = 0; i < dir->tdir_count; i++) {
-                               ok = cvtRational(tif, dir,
-                                   l[2*i+0], l[2*i+1], &v[i]);
-                               if (!ok)
-                                       break;
+               /*
+                * Check for integer overflow when validating the dir_off,
+                * otherwise a very high offset may cause an OOB read and
+                * crash the client. Make two comparisons instead of
+                *
+                *  off + sizeof(uint16) > tif->tif_size
+                *
+                * to avoid overflow.
+                */
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       m=off+sizeof(uint16);
+                       if ((m<off)||(m<(tmsize_t)sizeof(uint16))||(m>tif->tif_size)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                       "Can not read TIFF directory count");
+                               return 0;
+                       } else {
+                               _TIFFmemcpy(&dircount16, tif->tif_base + off,
+                                           sizeof(uint16));
+                       }
+                       off += sizeof (uint16);
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabShort(&dircount16);
+                       if (dircount16>4096)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Sanity check on directory count failed, this is probably not a valid IFD offset");
+                               return 0;
                        }
+                       dirsize = 12;
                }
-               _TIFFfree((char *)l);
-       }
-       return (ok);
-}
-
-/*
- * Fetch an array of FLOAT values.
- */
-static int
-TIFFFetchFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-
-       if (dir->tdir_count == 1) {
-               v[0] = *(float*) &dir->tdir_offset;
-               TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
-               return (1);
-       } else  if (TIFFFetchData(tif, dir, (char*) v)) {
-               TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
-               return (1);
-       } else
-               return (0);
-}
-
-/*
- * Fetch an array of DOUBLE values.
- */
-static int
-TIFFFetchDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-       if (TIFFFetchData(tif, dir, (char*) v)) {
-               TIFFCvtIEEEDoubleToNative(tif, dir->tdir_count, v);
-               return (1);
-       } else
-               return (0);
-}
-
-/*
- * Fetch an array of ANY values.  The actual values are
- * returned as doubles which should be able hold all the
- * types.  Yes, there really should be an tany_t to avoid
- * this potential non-portability ...  Note in particular
- * that we assume that the double return value vector is
- * large enough to read in any fundamental type.  We use
- * that vector as a buffer to read in the base type vector
- * and then convert it in place to double (from end
- * to front of course).
- */
-static int
-TIFFFetchAnyArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-       int i;
-
-       switch (dir->tdir_type) {
-       case TIFF_BYTE:
-       case TIFF_SBYTE:
-               if (!TIFFFetchByteArray(tif, dir, (uint8*) v))
-                       return (0);
-               if (dir->tdir_type == TIFF_BYTE) {
-                       uint8* vp = (uint8*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
-               } else {
-                       int8* vp = (int8*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
+               else
+               {
+                       tmsize_t m;
+                       uint64 dircount64;
+                       m=off+sizeof(uint64);
+                       if ((m<off)||(m<(tmsize_t)sizeof(uint64))||(m>tif->tif_size)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                       "Can not read TIFF directory count");
+                               return 0;
+                       } else {
+                               _TIFFmemcpy(&dircount64, tif->tif_base + off,
+                                           sizeof(uint64));
+                       }
+                       off += sizeof (uint64);
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&dircount64);
+                       if (dircount64>4096)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Sanity check on directory count failed, this is probably not a valid IFD offset");
+                               return 0;
+                       }
+                       dircount16 = (uint16)dircount64;
+                       dirsize = 20;
                }
-               break;
-       case TIFF_SHORT:
-       case TIFF_SSHORT:
-               if (!TIFFFetchShortArray(tif, dir, (uint16*) v))
-                       return (0);
-               if (dir->tdir_type == TIFF_SHORT) {
-                       uint16* vp = (uint16*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
-               } else {
-                       int16* vp = (int16*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
+               if (dircount16 == 0 )
+               {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                    "Sanity check on directory count failed, zero tag directories not supported");
+                       return 0;
                }
-               break;
-       case TIFF_LONG:
-       case TIFF_SLONG:
-               if (!TIFFFetchLongArray(tif, dir, (uint32*) v))
-                       return (0);
-               if (dir->tdir_type == TIFF_LONG) {
-                       uint32* vp = (uint32*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
+               origdir = _TIFFCheckMalloc(tif, dircount16,
+                                               dirsize,
+                                               "to read TIFF directory");
+               if (origdir == NULL)
+                       return 0;
+               m=off+dircount16*dirsize;
+               if ((m<off)||(m<(tmsize_t)(dircount16*dirsize))||(m>tif->tif_size)) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                    "Can not read TIFF directory");
+                       _TIFFfree(origdir);
+                       return 0;
                } else {
-                       int32* vp = (int32*) v;
-                       for (i = dir->tdir_count-1; i >= 0; i--)
-                               v[i] = vp[i];
+                       _TIFFmemcpy(origdir, tif->tif_base + off,
+                                   dircount16 * dirsize);
+               }
+               if (nextdiroff) {
+                       off += dircount16 * dirsize;
+                       if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       {
+                               uint32 nextdiroff32;
+                               m=off+sizeof(uint32);
+                               if ((m<off)||(m<(tmsize_t)sizeof(uint32))||(m>tif->tif_size))
+                                       nextdiroff32 = 0;
+                               else
+                                       _TIFFmemcpy(&nextdiroff32, tif->tif_base + off,
+                                                   sizeof (uint32));
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabLong(&nextdiroff32);
+                               *nextdiroff = nextdiroff32;
+                       }
+                       else
+                       {
+                               m=off+sizeof(uint64);
+                               if ((m<off)||(m<(tmsize_t)sizeof(uint64))||(m>tif->tif_size))
+                                       *nextdiroff = 0;
+                               else
+                                       _TIFFmemcpy(nextdiroff, tif->tif_base + off,
+                                                   sizeof (uint64));
+                               if (tif->tif_flags&TIFF_SWAB)
+                                       TIFFSwabLong8(nextdiroff);
+                       }
                }
-               break;
-       case TIFF_RATIONAL:
-       case TIFF_SRATIONAL:
-               if (!TIFFFetchRationalArray(tif, dir, (float*) v))
-                       return (0);
-               { float* vp = (float*) v;
-                 for (i = dir->tdir_count-1; i >= 0; i--)
-                       v[i] = vp[i];
+       }
+       dir = (TIFFDirEntry*)_TIFFCheckMalloc(tif, dircount16,
+                                               sizeof(TIFFDirEntry),
+                                               "to read TIFF directory");
+       if (dir==0)
+       {
+               _TIFFfree(origdir);
+               return 0;
+       }
+       ma=(uint8*)origdir;
+       mb=dir;
+       for (n=0; n<dircount16; n++)
+       {
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabShort((uint16*)ma);
+               mb->tdir_tag=*(uint16*)ma;
+               ma+=sizeof(uint16);
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabShort((uint16*)ma);
+               mb->tdir_type=*(uint16*)ma;
+               ma+=sizeof(uint16);
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong((uint32*)ma);
+                       mb->tdir_count=(uint64)(*(uint32*)ma);
+                       ma+=sizeof(uint32);
+                       *(uint32*)(&mb->tdir_offset)=*(uint32*)ma;
+                       ma+=sizeof(uint32);
                }
-               break;
-       case TIFF_FLOAT:
-               if (!TIFFFetchFloatArray(tif, dir, (float*) v))
-                       return (0);
-               { float* vp = (float*) v;
-                 for (i = dir->tdir_count-1; i >= 0; i--)
-                       v[i] = vp[i];
+               else
+               {
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8((uint64*)ma);
+                        mb->tdir_count=TIFFReadUInt64(ma);
+                       ma+=sizeof(uint64);
+                       mb->tdir_offset.toff_long8=TIFFReadUInt64(ma);
+                       ma+=sizeof(uint64);
                }
-               break;
-       case TIFF_DOUBLE:
-               return (TIFFFetchDoubleArray(tif, dir, (double*) v));
-       default:
-               /* TIFF_NOTYPE */
-               /* TIFF_ASCII */
-               /* TIFF_UNDEFINED */
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                            "cannot read TIFF_ANY type %d for field \"%s\"",
-                            dir->tdir_type,
-                            _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-               return (0);
+               mb++;
        }
-       return (1);
+       _TIFFfree(origdir);
+       *pdir = dir;
+       return dircount16;
 }
 
 /*
  * Fetch a tag that is not handled by special case code.
  */
 static int
-TIFFFetchNormalTag(TIFF* tif, TIFFDirEntry* dp)
+TIFFFetchNormalTag(TIFF* tif, TIFFDirEntry* dp, int recover)
 {
-       static const char mesg[] = "to fetch tag value";
-       int ok = 0;
-       const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dp->tdir_tag);
-
-       if (dp->tdir_count > 1) {               /* array of values */
-               char* cp = NULL;
-
-               switch (dp->tdir_type) {
-               case TIFF_BYTE:
-               case TIFF_SBYTE:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (uint8), mesg);
-                       ok = cp && TIFFFetchByteArray(tif, dp, (uint8*) cp);
+       static const char module[] = "TIFFFetchNormalTag";
+       enum TIFFReadDirEntryErr err;
+       uint32 fii;
+       const TIFFField* fip = NULL;
+       TIFFReadDirectoryFindFieldInfo(tif,dp->tdir_tag,&fii);
+        if( fii == FAILED_FII )
+        {
+            TIFFErrorExt(tif->tif_clientdata, "TIFFFetchNormalTag",
+                         "No definition found for tag %d",
+                         dp->tdir_tag);
+            return 0;
+        }
+       fip=tif->tif_fields[fii];
+       assert(fip->set_field_type!=TIFF_SETGET_OTHER);  /* if so, we shouldn't arrive here but deal with this in specialized code */
+       assert(fip->set_field_type!=TIFF_SETGET_INT);    /* if so, we shouldn't arrive here as this is only the case for pseudo-tags */
+       err=TIFFReadDirEntryErrOk;
+       switch (fip->set_field_type)
+       {
+               case TIFF_SETGET_UNDEFINED:
                        break;
-               case TIFF_SHORT:
-               case TIFF_SSHORT:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (uint16), mesg);
-                       ok = cp && TIFFFetchShortArray(tif, dp, (uint16*) cp);
+               case TIFF_SETGET_ASCII:
+                       {
+                               uint8* data;
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       uint8* ma;
+                                       uint32 mb;
+                                       int n;
+                                       ma=data;
+                                       mb=0;
+                                       while (mb<(uint32)dp->tdir_count)
+                                       {
+                                               if (*ma==0)
+                                                       break;
+                                               ma++;
+                                               mb++;
+                                       }
+                                       if (mb+1<(uint32)dp->tdir_count)
+                                               TIFFWarningExt(tif->tif_clientdata,module,"ASCII value for tag \"%s\" contains null byte in value; value incorrectly truncated during reading due to implementation limitations",fip->field_name);
+                                       else if (mb+1>(uint32)dp->tdir_count)
+                                       {
+                                               uint8* o;
+                                               TIFFWarningExt(tif->tif_clientdata,module,"ASCII value for tag \"%s\" does not end in null byte",fip->field_name);
+                                               if ((uint32)dp->tdir_count+1!=dp->tdir_count+1)
+                                                       o=NULL;
+                                               else
+                                                       o=_TIFFmalloc((uint32)dp->tdir_count+1);
+                                               if (o==NULL)
+                                               {
+                                                       if (data!=NULL)
+                                                               _TIFFfree(data);
+                                                       return(0);
+                                               }
+                                               _TIFFmemcpy(o,data,(uint32)dp->tdir_count);
+                                               o[(uint32)dp->tdir_count]=0;
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               data=o;
+                                       }
+                                       n=TIFFSetField(tif,dp->tdir_tag,data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!n)
+                                               return(0);
+                               }
+                       }
                        break;
-               case TIFF_LONG:
-               case TIFF_SLONG:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (uint32), mesg);
-                       ok = cp && TIFFFetchLongArray(tif, dp, (uint32*) cp);
+               case TIFF_SETGET_UINT8:
+                       {
+                               uint8 data=0;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryByte(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
+                       }
                        break;
-               case TIFF_RATIONAL:
-               case TIFF_SRATIONAL:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (float), mesg);
-                       ok = cp && TIFFFetchRationalArray(tif, dp, (float*) cp);
+               case TIFF_SETGET_UINT16:
+                       {
+                               uint16 data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryShort(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
+                       }
                        break;
-               case TIFF_FLOAT:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (float), mesg);
-                       ok = cp && TIFFFetchFloatArray(tif, dp, (float*) cp);
+               case TIFF_SETGET_UINT32:
+                       {
+                               uint32 data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryLong(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
+                       }
                        break;
-               case TIFF_DOUBLE:
-                       cp = (char *)_TIFFCheckMalloc(tif,
-                           dp->tdir_count, sizeof (double), mesg);
-                       ok = cp && TIFFFetchDoubleArray(tif, dp, (double*) cp);
+               case TIFF_SETGET_UINT64:
+                       {
+                               uint64 data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryLong8(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
+                       }
                        break;
-               case TIFF_ASCII:
-               case TIFF_UNDEFINED:            /* bit of a cheat... */
-                       /*
-                        * Some vendors write strings w/o the trailing
-                        * NULL byte, so always append one just in case.
-                        */
-                       cp = (char *)_TIFFCheckMalloc(tif, dp->tdir_count + 1,
-                                                     1, mesg);
-                       if( (ok = (cp && TIFFFetchString(tif, dp, cp))) != 0 )
-                               cp[dp->tdir_count] = '\0';      /* XXX */
+               case TIFF_SETGET_FLOAT:
+                       {
+                               float data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryFloat(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
+                       }
                        break;
-               }
-               if (ok) {
-                       ok = (fip->field_passcount ?
-                           TIFFSetField(tif, dp->tdir_tag, dp->tdir_count, cp)
-                         : TIFFSetField(tif, dp->tdir_tag, cp));
-               }
-               if (cp != NULL)
-                       _TIFFfree(cp);
-       } else if (CheckDirCount(tif, dp, 1)) { /* singleton value */
-               switch (dp->tdir_type) {
-               case TIFF_BYTE:
-               case TIFF_SBYTE:
-               case TIFF_SHORT:
-               case TIFF_SSHORT:
-                       /*
-                        * If the tag is also acceptable as a LONG or SLONG
-                        * then TIFFSetField will expect an uint32 parameter
-                        * passed to it (through varargs).  Thus, for machines
-                        * where sizeof (int) != sizeof (uint32) we must do
-                        * a careful check here.  It's hard to say if this
-                        * is worth optimizing.
-                        *
-                        * NB: We use TIFFFieldWithTag here knowing that
-                        *     it returns us the first entry in the table
-                        *     for the tag and that that entry is for the
-                        *     widest potential data type the tag may have.
-                        */
-                       { TIFFDataType type = fip->field_type;
-                         if (type != TIFF_LONG && type != TIFF_SLONG) {
-                               uint16 v = (uint16)
-                          TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
-                               ok = (fip->field_passcount ?
-                                   TIFFSetField(tif, dp->tdir_tag, 1, &v)
-                                 : TIFFSetField(tif, dp->tdir_tag, v));
-                               break;
-                         }
+               case TIFF_SETGET_DOUBLE:
+                       {
+                               double data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryDouble(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
                        }
-                       /* fall thru... */
-               case TIFF_LONG:
-               case TIFF_SLONG:
-                       { uint32 v32 =
-                   TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
-                         ok = (fip->field_passcount ? 
-                             TIFFSetField(tif, dp->tdir_tag, 1, &v32)
-                           : TIFFSetField(tif, dp->tdir_tag, v32));
+                       break;
+               case TIFF_SETGET_IFD8:
+                       {
+                               uint64 data;
+                               assert(fip->field_readcount==1);
+                               assert(fip->field_passcount==0);
+                               err=TIFFReadDirEntryIfd8(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       if (!TIFFSetField(tif,dp->tdir_tag,data))
+                                               return(0);
+                               }
                        }
                        break;
-               case TIFF_RATIONAL:
-               case TIFF_SRATIONAL:
-               case TIFF_FLOAT:
-                       { float v = (dp->tdir_type == TIFF_FLOAT ? 
-                             TIFFFetchFloat(tif, dp)
-                           : TIFFFetchRational(tif, dp));
-                         ok = (fip->field_passcount ?
-                             TIFFSetField(tif, dp->tdir_tag, 1, &v)
-                           : TIFFSetField(tif, dp->tdir_tag, v));
+               case TIFF_SETGET_UINT16_PAIR:
+                       {
+                               uint16* data;
+                               assert(fip->field_readcount==2);
+                               assert(fip->field_passcount==0);
+                               if (dp->tdir_count!=2) {
+                                       TIFFWarningExt(tif->tif_clientdata,module,
+                                                      "incorrect count for field \"%s\", expected 2, got %d",
+                                                      fip->field_name,(int)dp->tdir_count);
+                                       return(0);
+                               }
+                               err=TIFFReadDirEntryShortArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,data[0],data[1]);
+                                       _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
                        }
                        break;
-               case TIFF_DOUBLE:
-                       { double v;
-                         ok = (TIFFFetchDoubleArray(tif, dp, &v) &&
-                           (fip->field_passcount ?
-                             TIFFSetField(tif, dp->tdir_tag, 1, &v)
-                           : TIFFSetField(tif, dp->tdir_tag, v))
-                         );
+               case TIFF_SETGET_C0_UINT8:
+                       {
+                               uint8* data;
+                               assert(fip->field_readcount>=1);
+                               assert(fip->field_passcount==0);
+                               if (dp->tdir_count!=(uint64)fip->field_readcount) {
+                                       TIFFWarningExt(tif->tif_clientdata,module,
+                                                      "incorrect count for field \"%s\", expected %d, got %d",
+                                                      fip->field_name,(int) fip->field_readcount, (int)dp->tdir_count);
+                                       return 0;
+                               }
+                               else
+                               {
+                                       err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
                        }
                        break;
-               case TIFF_ASCII:
-               case TIFF_UNDEFINED:            /* bit of a cheat... */
-                       { char c[2];
-                         if( (ok = (TIFFFetchString(tif, dp, c) != 0)) != 0 ) {
-                               c[1] = '\0';            /* XXX paranoid */
-                               ok = (fip->field_passcount ?
-                                       TIFFSetField(tif, dp->tdir_tag, 1, c)
-                                     : TIFFSetField(tif, dp->tdir_tag, c));
-                         }
+               case TIFF_SETGET_C0_UINT16:
+                       {
+                               uint16* data;
+                               assert(fip->field_readcount>=1);
+                               assert(fip->field_passcount==0);
+                               if (dp->tdir_count!=(uint64)fip->field_readcount)
+                                    /* corrupt file */;
+                               else
+                               {
+                                       err=TIFFReadDirEntryShortArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
                        }
                        break;
-               }
+               case TIFF_SETGET_C0_UINT32:
+                       {
+                               uint32* data;
+                               assert(fip->field_readcount>=1);
+                               assert(fip->field_passcount==0);
+                               if (dp->tdir_count!=(uint64)fip->field_readcount)
+                                    /* corrupt file */;
+                               else
+                               {
+                                       err=TIFFReadDirEntryLongArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C0_FLOAT:
+                       {
+                               float* data;
+                               assert(fip->field_readcount>=1);
+                               assert(fip->field_passcount==0);
+                               if (dp->tdir_count!=(uint64)fip->field_readcount)
+                                    /* corrupt file */;
+                               else
+                               {
+                                       err=TIFFReadDirEntryFloatArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_ASCII:
+                       {
+                               uint8* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_UINT8:
+                       {
+                               uint8* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_UINT16:
+                       {
+                               uint16* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryShortArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_UINT32:
+                       {
+                               uint32* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryLongArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_UINT64:
+                       {
+                               uint64* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryLong8Array(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_FLOAT:
+                       {
+                               float* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryFloatArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_DOUBLE:
+                       {
+                               double* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryDoubleArray(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C16_IFD8:
+                       {
+                               uint64* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE);
+                               assert(fip->field_passcount==1);
+                               if (dp->tdir_count>0xFFFF)
+                                       err=TIFFReadDirEntryErrCount;
+                               else
+                               {
+                                       err=TIFFReadDirEntryIfd8Array(tif,dp,&data);
+                                       if (err==TIFFReadDirEntryErrOk)
+                                       {
+                                               int m;
+                                               m=TIFFSetField(tif,dp->tdir_tag,(uint16)(dp->tdir_count),data);
+                                               if (data!=0)
+                                                       _TIFFfree(data);
+                                               if (!m)
+                                                       return(0);
+                                       }
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_ASCII:
+                       {
+                               uint8* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_UINT8:
+                       {
+                               uint8* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryByteArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_SINT8:
+                       {
+                               int8* data = NULL;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntrySbyteArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_UINT16:
+                       {
+                               uint16* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryShortArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_SINT16:
+                       {
+                               int16* data = NULL;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntrySshortArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_UINT32:
+                       {
+                               uint32* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryLongArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_SINT32:
+                       {
+                               int32* data = NULL;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntrySlongArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_UINT64:
+                       {
+                               uint64* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryLong8Array(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_SINT64:
+                       {
+                               int64* data = NULL;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntrySlong8Array(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_FLOAT:
+                       {
+                               float* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryFloatArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_DOUBLE:
+                       {
+                               double* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryDoubleArray(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               case TIFF_SETGET_C32_IFD8:
+                       {
+                               uint64* data;
+                               assert(fip->field_readcount==TIFF_VARIABLE2);
+                               assert(fip->field_passcount==1);
+                               err=TIFFReadDirEntryIfd8Array(tif,dp,&data);
+                               if (err==TIFFReadDirEntryErrOk)
+                               {
+                                       int m;
+                                       m=TIFFSetField(tif,dp->tdir_tag,(uint32)(dp->tdir_count),data);
+                                       if (data!=0)
+                                               _TIFFfree(data);
+                                       if (!m)
+                                               return(0);
+                               }
+                       }
+                       break;
+               default:
+                       assert(0);    /* we should never get here */
+                       break;
        }
-       return (ok);
-}
-
-#define        NITEMS(x)       (sizeof (x) / sizeof (x[0]))
-/*
- * Fetch samples/pixel short values for 
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleShorts(TIFF* tif, TIFFDirEntry* dir, uint16* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        uint16 buf[10];
-        uint16* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (uint16*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint16),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchShortArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-            if( samples < check_count )
-                check_count = samples;
-
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-                                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
-}
-
-/*
- * Fetch samples/pixel long values for 
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleLongs(TIFF* tif, TIFFDirEntry* dir, uint32* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        uint32 buf[10];
-        uint32* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (uint32*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint32),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchLongArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-
-            if( samples < check_count )
-                check_count = samples;
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-                                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
-}
-
-/*
- * Fetch samples/pixel ANY values for the specified tag and verify that all
- * values are the same.
- */
-static int
-TIFFFetchPerSampleAnys(TIFF* tif, TIFFDirEntry* dir, double* pl)
-{
-    uint16 samples = tif->tif_dir.td_samplesperpixel;
-    int status = 0;
-
-    if (CheckDirCount(tif, dir, (uint32) samples)) {
-        double buf[10];
-        double* v = buf;
-
-        if (dir->tdir_count > NITEMS(buf))
-            v = (double*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (double),
-                                      "to fetch per-sample values");
-        if (v && TIFFFetchAnyArray(tif, dir, v)) {
-            uint16 i;
-            int check_count = dir->tdir_count;
-            if( samples < check_count )
-                check_count = samples;
-
-            for (i = 1; i < check_count; i++)
-                if (v[i] != v[0]) {
-                    TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                              "Cannot handle different per-sample values for field \"%s\"",
-                              _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-                    goto bad;
-                }
-            *pl = v[0];
-            status = 1;
-        }
-      bad:
-        if (v && v != buf)
-            _TIFFfree(v);
-    }
-    return (status);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               TIFFReadDirEntryOutputErr(tif,err,module,fip ? fip->field_name : "unknown tagname",recover);
+               return(0);
+       }
+       return(1);
 }
-#undef NITEMS
 
 /*
  * Fetch a set of offsets or lengths.
  * While this routine says "strips", in fact it's also used for tiles.
  */
 static int
-TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, long nstrips, uint32** lpp)
+TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, uint32 nstrips, uint64** lpp)
 {
-       register uint32* lp;
-       int status;
-
-        CheckDirCount(tif, dir, (uint32) nstrips);
-
-       /*
-        * Allocate space for strip information.
-        */
-       if (*lpp == NULL &&
-           (*lpp = (uint32 *)_TIFFCheckMalloc(tif,
-             nstrips, sizeof (uint32), "for strip array")) == NULL)
-               return (0);
-       lp = *lpp;
-        _TIFFmemset( lp, 0, sizeof(uint32) * nstrips );
-
-       if (dir->tdir_type == (int)TIFF_SHORT) {
-               /*
-                * Handle uint16->uint32 expansion.
-                */
-               uint16* dp = (uint16*) _TIFFCheckMalloc(tif,
-                   dir->tdir_count, sizeof (uint16), "to fetch strip tag");
-               if (dp == NULL)
-                       return (0);
-               if( (status = TIFFFetchShortArray(tif, dir, dp)) != 0 ) {
-                    int i;
-                    
-                    for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
-                    {
-                        lp[i] = dp[i];
-                    }
+       static const char module[] = "TIFFFetchStripThing";
+       enum TIFFReadDirEntryErr err;
+       uint64* data;
+       err=TIFFReadDirEntryLong8Array(tif,dir,&data);
+       if (err!=TIFFReadDirEntryErrOk)
+       {
+               const TIFFField* fip = TIFFFieldWithTag(tif,dir->tdir_tag); 
+               TIFFReadDirEntryOutputErr(tif,err,module,fip ? fip->field_name : "unknown tagname",0);
+               return(0);
+       }
+       if (dir->tdir_count!=(uint64)nstrips)
+       {
+               uint64* resizeddata;
+               resizeddata=(uint64*)_TIFFCheckMalloc(tif,nstrips,sizeof(uint64),"for strip array");
+               if (resizeddata==0) {
+                       _TIFFfree(data);
+                       return(0);
                }
-               _TIFFfree((char*) dp);
-
-        } else if( nstrips != (int) dir->tdir_count ) {
-            /* Special case to correct length */
-
-            uint32* dp = (uint32*) _TIFFCheckMalloc(tif,
-                   dir->tdir_count, sizeof (uint32), "to fetch strip tag");
-            if (dp == NULL)
-                return (0);
-
-            status = TIFFFetchLongArray(tif, dir, dp);
-            if( status != 0 ) {
-                int i;
-
-                for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
-                {
-                    lp[i] = dp[i];
-                }
-            }
-
-            _TIFFfree( (char *) dp );
-       } else
-            status = TIFFFetchLongArray(tif, dir, lp);
-        
-       return (status);
+               if (dir->tdir_count<(uint64)nstrips)
+               {
+                       _TIFFmemcpy(resizeddata,data,(uint32)dir->tdir_count*sizeof(uint64));
+                       _TIFFmemset(resizeddata+(uint32)dir->tdir_count,0,(nstrips-(uint32)dir->tdir_count)*sizeof(uint64));
+               }
+               else
+                       _TIFFmemcpy(resizeddata,data,nstrips*sizeof(uint64));
+               _TIFFfree(data);
+               data=resizeddata;
+       }
+       *lpp=data;
+       return(1);
 }
 
 /*
- * Fetch and set the RefBlackWhite tag.
+ * Fetch and set the SubjectDistance EXIF tag.
  */
 static int
-TIFFFetchRefBlackWhite(TIFF* tif, TIFFDirEntry* dir)
+TIFFFetchSubjectDistance(TIFF* tif, TIFFDirEntry* dir)
 {
-       static const char mesg[] = "for \"ReferenceBlackWhite\" array";
-       char* cp;
-       int ok;
-
-       if (dir->tdir_type == TIFF_RATIONAL)
-               return (TIFFFetchNormalTag(tif, dir));
-       /*
-        * Handle LONG's for backward compatibility.
-        */
-       cp = (char *)_TIFFCheckMalloc(tif, dir->tdir_count,
-                                     sizeof (uint32), mesg);
-       if( (ok = (cp && TIFFFetchLongArray(tif, dir, (uint32*) cp))) != 0) {
-               float* fp = (float*)
-                   _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (float), mesg);
-               if( (ok = (fp != NULL)) != 0 ) {
-                       uint32 i;
-                       for (i = 0; i < dir->tdir_count; i++)
-                               fp[i] = (float)((uint32*) cp)[i];
-                       ok = TIFFSetField(tif, dir->tdir_tag, fp);
-                       _TIFFfree((char*) fp);
+       static const char module[] = "TIFFFetchSubjectDistance";
+       enum TIFFReadDirEntryErr err;
+       UInt64Aligned_t m;
+    m.l=0;
+       assert(sizeof(double)==8);
+       assert(sizeof(uint64)==8);
+       assert(sizeof(uint32)==4);
+       if (dir->tdir_count!=1)
+               err=TIFFReadDirEntryErrCount;
+       else if (dir->tdir_type!=TIFF_RATIONAL)
+               err=TIFFReadDirEntryErrType;
+       else
+       {
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       uint32 offset;
+                       offset=*(uint32*)(&dir->tdir_offset);
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong(&offset);
+                       err=TIFFReadDirEntryData(tif,offset,8,m.i);
+               }
+               else
+               {
+                       m.l=dir->tdir_offset.toff_long8;
+                       err=TIFFReadDirEntryErrOk;
                }
        }
-       if (cp)
-               _TIFFfree(cp);
-       return (ok);
+       if (err==TIFFReadDirEntryErrOk)
+       {
+               double n;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabArrayOfLong(m.i,2);
+               if (m.i[0]==0)
+                       n=0.0;
+               else if (m.i[0]==0xFFFFFFFF)
+                       /*
+                        * XXX: Numerator 0xFFFFFFFF means that we have infinite
+                        * distance. Indicate that with a negative floating point
+                        * SubjectDistance value.
+                        */
+                       n=-1.0;
+               else
+                       n=(double)m.i[0]/(double)m.i[1];
+               return(TIFFSetField(tif,dir->tdir_tag,n));
+       }
+       else
+       {
+               TIFFReadDirEntryOutputErr(tif,err,module,"SubjectDistance",TRUE);
+               return(0);
+       }
 }
 
 /*
- * Replace a single strip (tile) of uncompressed data by
- * multiple strips (tiles), each approximately 8Kbytes.
- * This is useful for dealing with large images or
- * for dealing with machines with a limited amount
- * memory.
+ * Replace a single strip (tile) of uncompressed data by multiple strips
+ * (tiles), each approximately STRIP_SIZE_DEFAULT bytes. This is useful for
+ * dealing with large images or for dealing with machines with a limited
+ * amount memory.
  */
 static void
 ChopUpSingleUncompressedStrip(TIFF* tif)
 {
        register TIFFDirectory *td = &tif->tif_dir;
-       uint32 bytecount = td->td_stripbytecount[0];
-       uint32 offset = td->td_stripoffset[0];
-       tsize_t rowbytes = TIFFVTileSize(tif, 1), stripbytes;
-       tstrip_t strip, nstrips, rowsperstrip;
-       uint32* newcounts;
-       uint32* newoffsets;
+       uint64 bytecount;
+       uint64 offset;
+       uint32 rowblock;
+       uint64 rowblockbytes;
+       uint64 stripbytes;
+       uint32 strip;
+       uint64 nstrips64;
+       uint32 nstrips32;
+       uint32 rowsperstrip;
+       uint64* newcounts;
+       uint64* newoffsets;
 
+       bytecount = td->td_stripbytecount[0];
+       offset = td->td_stripoffset[0];
+       assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
+       if ((td->td_photometric == PHOTOMETRIC_YCBCR)&&
+           (!isUpSampled(tif)))
+               rowblock = td->td_ycbcrsubsampling[1];
+       else
+               rowblock = 1;
+       rowblockbytes = TIFFVTileSize64(tif, rowblock);
        /*
         * Make the rows hold at least one scanline, but fill specified amount
         * of data if possible.
         */
-       if (rowbytes > STRIP_SIZE_DEFAULT) {
-               stripbytes = rowbytes;
-               rowsperstrip = 1;
-       } else if (rowbytes > 0 ) {
-               rowsperstrip = STRIP_SIZE_DEFAULT / rowbytes;
-               stripbytes = rowbytes * rowsperstrip;
+       if (rowblockbytes > STRIP_SIZE_DEFAULT) {
+               stripbytes = rowblockbytes;
+               rowsperstrip = rowblock;
+       } else if (rowblockbytes > 0 ) {
+               uint32 rowblocksperstrip;
+               rowblocksperstrip = (uint32) (STRIP_SIZE_DEFAULT / rowblockbytes);
+               rowsperstrip = rowblocksperstrip * rowblock;
+               stripbytes = rowblocksperstrip * rowblockbytes;
        }
-        else
-            return;
+       else
+           return;
 
-       /* 
+       /*
         * never increase the number of strips in an image
         */
        if (rowsperstrip >= td->td_rowsperstrip)
                return;
-       nstrips = (tstrip_t) TIFFhowmany(bytecount, stripbytes);
-        if( nstrips == 0 ) /* something is wonky, do nothing. */
-            return;
+       nstrips64 = TIFFhowmany_64(bytecount, stripbytes);
+       if ((nstrips64==0)||(nstrips64>0xFFFFFFFF)) /* something is wonky, do nothing. */
+           return;
+       nstrips32 = (uint32)nstrips64;
 
-       newcounts = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
+       newcounts = (uint64*) _TIFFCheckMalloc(tif, nstrips32, sizeof (uint64),
                                "for chopped \"StripByteCounts\" array");
-       newoffsets = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
+       newoffsets = (uint64*) _TIFFCheckMalloc(tif, nstrips32, sizeof (uint64),
                                "for chopped \"StripOffsets\" array");
        if (newcounts == NULL || newoffsets == NULL) {
-               /*
-                * Unable to allocate new strip information, give
-                * up and use the original one strip information.
+               /*
+                * Unable to allocate new strip information, give up and use
+                * the original one strip information.
                 */
                if (newcounts != NULL)
                        _TIFFfree(newcounts);
@@ -1765,8 +5534,8 @@ ChopUpSingleUncompressedStrip(TIFF* tif)
         * Fill the strip information arrays with new bytecounts and offsets
         * that reflect the broken-up format.
         */
-       for (strip = 0; strip < nstrips; strip++) {
-               if (stripbytes > (tsize_t) bytecount)
+       for (strip = 0; strip < nstrips32; strip++) {
+               if (stripbytes > bytecount)
                        stripbytes = bytecount;
                newcounts[strip] = stripbytes;
                newoffsets[strip] = offset;
@@ -1776,7 +5545,7 @@ ChopUpSingleUncompressedStrip(TIFF* tif)
        /*
         * Replace old single strip info with multi-strip info.
         */
-       td->td_stripsperimage = td->td_nstrips = nstrips;
+       td->td_stripsperimage = td->td_nstrips = nstrips32;
        TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
 
        _TIFFfree(td->td_stripbytecount);
@@ -1786,4 +5555,59 @@ ChopUpSingleUncompressedStrip(TIFF* tif)
        td->td_stripbytecountsorted = 1;
 }
 
+int _TIFFFillStriles( TIFF *tif )
+{
+#if defined(DEFER_STRILE_LOAD)
+        register TIFFDirectory *td = &tif->tif_dir;
+        int return_value = 1;
+
+        if( td->td_stripoffset != NULL )
+                return 1;
+
+        if( td->td_stripoffset_entry.tdir_count == 0 )
+                return 0;
+
+        if (!TIFFFetchStripThing(tif,&(td->td_stripoffset_entry),
+                                 td->td_nstrips,&td->td_stripoffset))
+        {
+                return_value = 0;
+        }
+
+        if (!TIFFFetchStripThing(tif,&(td->td_stripbytecount_entry),
+                                 td->td_nstrips,&td->td_stripbytecount))
+        {
+                return_value = 0;
+        }
+
+        _TIFFmemset( &(td->td_stripoffset_entry), 0, sizeof(TIFFDirEntry));
+        _TIFFmemset( &(td->td_stripbytecount_entry), 0, sizeof(TIFFDirEntry));
+
+       if (tif->tif_dir.td_nstrips > 1 && return_value == 1 ) {
+               uint32 strip;
+
+               tif->tif_dir.td_stripbytecountsorted = 1;
+               for (strip = 1; strip < tif->tif_dir.td_nstrips; strip++) {
+                       if (tif->tif_dir.td_stripoffset[strip - 1] >
+                           tif->tif_dir.td_stripoffset[strip]) {
+                               tif->tif_dir.td_stripbytecountsorted = 0;
+                               break;
+                       }
+               }
+       }
+
+        return return_value;
+#else /* !defined(DEFER_STRILE_LOAD) */
+        (void) tif;
+        return 1;
+#endif 
+}
+
+
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index b5d888b3e1717bef3bd03b5a1bc96509d17978b8..28cf398f3dc7d49df74bcc9eb4bbbe70e441effb 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
 #include "tiffiop.h"
 
 #ifdef HAVE_IEEEFP
-# define       TIFFCvtNativeToIEEEFloat(tif, n, fp)
-# define       TIFFCvtNativeToIEEEDouble(tif, n, dp)
+#define TIFFCvtNativeToIEEEFloat(tif, n, fp)
+#define TIFFCvtNativeToIEEEDouble(tif, n, dp)
 #else
-extern void TIFFCvtNativeToIEEEFloat(TIFF*, uint32, float*);
-extern void TIFFCvtNativeToIEEEDouble(TIFF*, uint32, double*);
+extern void TIFFCvtNativeToIEEEFloat(TIFF* tif, uint32 n, float* fp);
+extern void TIFFCvtNativeToIEEEDouble(TIFF* tif, uint32 n, double* dp);
 #endif
 
-static int TIFFWriteNormalTag(TIFF*, TIFFDirEntry*, const TIFFFieldInfo*);
-static void TIFFSetupShortLong(TIFF*, ttag_t, TIFFDirEntry*, uint32);
-static void TIFFSetupShort(TIFF*, ttag_t, TIFFDirEntry*, uint16);
-static int TIFFSetupShortPair(TIFF*, ttag_t, TIFFDirEntry*);
-static int TIFFWritePerSampleShorts(TIFF*, ttag_t, TIFFDirEntry*);
-static int TIFFWritePerSampleAnys(TIFF*, TIFFDataType, ttag_t, TIFFDirEntry*);
-static int TIFFWriteShortTable(TIFF*, ttag_t, TIFFDirEntry*, uint32, uint16**);
-static int TIFFWriteShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFWriteLongArray(TIFF *, TIFFDirEntry*, uint32*);
-static int TIFFWriteRationalArray(TIFF *, TIFFDirEntry*, float*);
-static int TIFFWriteFloatArray(TIFF *, TIFFDirEntry*, float*);
-static int TIFFWriteDoubleArray(TIFF *, TIFFDirEntry*, double*);
-static int TIFFWriteByteArray(TIFF*, TIFFDirEntry*, char*);
-static int TIFFWriteAnyArray(TIFF*,
-           TIFFDataType, ttag_t, TIFFDirEntry*, uint32, double*);
-static int TIFFWriteTransferFunction(TIFF*, TIFFDirEntry*);
-static int TIFFWriteInkNames(TIFF*, TIFFDirEntry*);
-static int TIFFWriteData(TIFF*, TIFFDirEntry*, char*);
-static int TIFFLinkDirectory(TIFF*);
-
-#define        WriteRationalPair(type, tag1, v1, tag2, v2) {           \
-       TIFFWriteRational((tif), (type), (tag1), (dir), (v1))   \
-       TIFFWriteRational((tif), (type), (tag2), (dir)+1, (v2)) \
-       (dir)++;                                                \
-}
-#define        TIFFWriteRational(tif, type, tag, dir, v)               \
-       (dir)->tdir_tag = (tag);                                \
-       (dir)->tdir_type = (type);                              \
-       (dir)->tdir_count = 1;                                  \
-       if (!TIFFWriteRationalArray((tif), (dir), &(v)))        \
-               goto bad;
+static int TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff);
+
+static int TIFFWriteDirectoryTagSampleformatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value);
+#if 0
+static int TIFFWriteDirectoryTagSampleformatPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+#endif
+
+static int TIFFWriteDirectoryTagAscii(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, char* value);
+static int TIFFWriteDirectoryTagUndefinedArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagByte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value);
+#endif
+static int TIFFWriteDirectoryTagByteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value);
+#if 0
+static int TIFFWriteDirectoryTagBytePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value);
+#endif
+#ifdef notdef
+static int TIFFWriteDirectoryTagSbyte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value);
+#endif
+static int TIFFWriteDirectoryTagSbyteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int8* value);
+#if 0
+static int TIFFWriteDirectoryTagSbytePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value);
+#endif
+static int TIFFWriteDirectoryTagShort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value);
+static int TIFFWriteDirectoryTagShortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint16* value);
+static int TIFFWriteDirectoryTagShortPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagSshort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value);
+#endif
+static int TIFFWriteDirectoryTagSshortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int16* value);
+#if 0
+static int TIFFWriteDirectoryTagSshortPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value);
+#endif
+static int TIFFWriteDirectoryTagLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value);
+static int TIFFWriteDirectoryTagLongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value);
+#if 0
+static int TIFFWriteDirectoryTagLongPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value);
+#endif
+#ifdef notdef
+static int TIFFWriteDirectoryTagSlong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value);
+#endif
+static int TIFFWriteDirectoryTagSlongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int32* value);
+#if 0
+static int TIFFWriteDirectoryTagSlongPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value);
+#endif
+#ifdef notdef
+static int TIFFWriteDirectoryTagLong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint64 value);
+#endif
+static int TIFFWriteDirectoryTagLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagSlong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int64 value);
+#endif
+static int TIFFWriteDirectoryTagSlong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int64* value);
+static int TIFFWriteDirectoryTagRational(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+static int TIFFWriteDirectoryTagRationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+static int TIFFWriteDirectoryTagSrationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagFloat(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value);
+#endif
+static int TIFFWriteDirectoryTagFloatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+#if 0
+static int TIFFWriteDirectoryTagFloatPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value);
+#endif
+#ifdef notdef
+static int TIFFWriteDirectoryTagDouble(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+#endif
+static int TIFFWriteDirectoryTagDoubleArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value);
+#if 0
+static int TIFFWriteDirectoryTagDoublePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+#endif
+static int TIFFWriteDirectoryTagIfdArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+#endif
+static int TIFFWriteDirectoryTagShortLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value);
+static int TIFFWriteDirectoryTagLongLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+static int TIFFWriteDirectoryTagIfdIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagShortLongLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+#endif
+static int TIFFWriteDirectoryTagColormap(TIFF* tif, uint32* ndir, TIFFDirEntry* dir);
+static int TIFFWriteDirectoryTagTransferfunction(TIFF* tif, uint32* ndir, TIFFDirEntry* dir);
+static int TIFFWriteDirectoryTagSubifd(TIFF* tif, uint32* ndir, TIFFDirEntry* dir);
+
+static int TIFFWriteDirectoryTagCheckedAscii(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, char* value);
+static int TIFFWriteDirectoryTagCheckedUndefinedArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedByte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedByteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedSbyte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedSbyteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int8* value);
+static int TIFFWriteDirectoryTagCheckedShort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value);
+static int TIFFWriteDirectoryTagCheckedShortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint16* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedSshort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedSshortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int16* value);
+static int TIFFWriteDirectoryTagCheckedLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value);
+static int TIFFWriteDirectoryTagCheckedLongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedSlong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedSlongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int32* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedLong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint64 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedSlong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int64 value);
+#endif
+static int TIFFWriteDirectoryTagCheckedSlong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int64* value);
+static int TIFFWriteDirectoryTagCheckedRational(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+static int TIFFWriteDirectoryTagCheckedRationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+static int TIFFWriteDirectoryTagCheckedSrationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedFloat(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value);
+#endif
+static int TIFFWriteDirectoryTagCheckedFloatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value);
+#ifdef notdef
+static int TIFFWriteDirectoryTagCheckedDouble(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value);
+#endif
+static int TIFFWriteDirectoryTagCheckedDoubleArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value);
+static int TIFFWriteDirectoryTagCheckedIfdArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value);
+static int TIFFWriteDirectoryTagCheckedIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value);
+
+static int TIFFWriteDirectoryTagData(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 datatype, uint32 count, uint32 datalength, void* data);
+
+static int TIFFLinkDirectory(TIFF*);
 
 /*
  * Write the contents of the current directory
@@ -77,339 +177,10 @@ static    int TIFFLinkDirectory(TIFF*);
  * handle overwriting a directory with auxiliary
  * storage that's been changed.
  */
-static int
-_TIFFWriteDirectory(TIFF* tif, int done)
-{
-       uint16 dircount;
-       toff_t diroff;
-       ttag_t tag;
-       uint32 nfields;
-       tsize_t dirsize;
-       char* data;
-       TIFFDirEntry* dir;
-       TIFFDirectory* td;
-       unsigned long b, fields[FIELD_SETLONGS];
-       int fi, nfi;
-
-       if (tif->tif_mode == O_RDONLY)
-               return (1);
-       /*
-        * Clear write state so that subsequent images with
-        * different characteristics get the right buffers
-        * setup for them.
-        */
-       if (done)
-       {
-           if (tif->tif_flags & TIFF_POSTENCODE) {
-                   tif->tif_flags &= ~TIFF_POSTENCODE;
-                   if (!(*tif->tif_postencode)(tif)) {
-                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                               "Error post-encoding before directory write");
-                           return (0);
-                   }
-           }
-           (*tif->tif_close)(tif);             /* shutdown encoder */
-           /*
-            * Flush any data that might have been written
-            * by the compression close+cleanup routines.
-            */
-           if (tif->tif_rawcc > 0 && !TIFFFlushData1(tif)) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                       "Error flushing data before directory write");
-                   return (0);
-           }
-           if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
-                   _TIFFfree(tif->tif_rawdata);
-                   tif->tif_rawdata = NULL;
-                   tif->tif_rawcc = 0;
-                   tif->tif_rawdatasize = 0;
-           }
-           tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP);
-       }
-
-       td = &tif->tif_dir;
-       /*
-        * Size the directory so that we can calculate
-        * offsets for the data items that aren't kept
-        * in-place in each field.
-        */
-       nfields = 0;
-       for (b = 0; b <= FIELD_LAST; b++)
-               if (TIFFFieldSet(tif, b) && b != FIELD_CUSTOM)
-                       nfields += (b < FIELD_SUBFILETYPE ? 2 : 1);
-        nfields += td->td_customValueCount;
-       dirsize = nfields * sizeof (TIFFDirEntry);
-       data = (char*) _TIFFmalloc(dirsize);
-       if (data == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "Cannot write directory, out of space");
-               return (0);
-       }
-       /*
-        * Directory hasn't been placed yet, put
-        * it at the end of the file and link it
-        * into the existing directory structure.
-        */
-       if (tif->tif_diroff == 0 && !TIFFLinkDirectory(tif))
-               goto bad;
-       tif->tif_dataoff = (toff_t)(
-           tif->tif_diroff + sizeof (uint16) + dirsize + sizeof (toff_t));
-       if (tif->tif_dataoff & 1)
-               tif->tif_dataoff++;
-       (void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);
-       tif->tif_curdir++;
-       dir = (TIFFDirEntry*) data;
-       /*
-        * Setup external form of directory
-        * entries and write data items.
-        */
-       _TIFFmemcpy(fields, td->td_fieldsset, sizeof (fields));
-       /*
-        * Write out ExtraSamples tag only if
-        * extra samples are present in the data.
-        */
-       if (FieldSet(fields, FIELD_EXTRASAMPLES) && !td->td_extrasamples) {
-               ResetFieldBit(fields, FIELD_EXTRASAMPLES);
-               nfields--;
-               dirsize -= sizeof (TIFFDirEntry);
-       }                                                               /*XXX*/
-       for (fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {
-               const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];
-
-                /*
-                ** For custom fields, we test to see if the custom field
-                ** is set or not.  For normal fields, we just use the
-                ** FieldSet test. 
-                */
-                if( fip->field_bit == FIELD_CUSTOM )
-                {
-                    int ci, is_set = FALSE;
-
-                    for( ci = 0; ci < td->td_customValueCount; ci++ )
-                        is_set |= (td->td_customValues[ci].info == fip);
-
-                    if( !is_set )
-                        continue;
-                }
-               else if (!FieldSet(fields, fip->field_bit))
-                    continue;
-
-
-                /*
-                ** Handle other fields.
-                */
-               switch (fip->field_bit)
-                {
-               case FIELD_STRIPOFFSETS:
-                       /*
-                        * We use one field bit for both strip and tile
-
-                        * offsets, and so must be careful in selecting
-                        * the appropriate field descriptor (so that tags
-                        * are written in sorted order).
-                        */
-                       tag = isTiled(tif) ?
-                           TIFFTAG_TILEOFFSETS : TIFFTAG_STRIPOFFSETS;
-                       if (tag != fip->field_tag)
-                               continue;
-                       
-                       dir->tdir_tag = (uint16) tag;
-                       dir->tdir_type = (uint16) TIFF_LONG;
-                       dir->tdir_count = (uint32) td->td_nstrips;
-                       if (!TIFFWriteLongArray(tif, dir, td->td_stripoffset))
-                               goto bad;
-                       break;
-               case FIELD_STRIPBYTECOUNTS:
-                       /*
-                        * We use one field bit for both strip and tile
-                        * byte counts, and so must be careful in selecting
-                        * the appropriate field descriptor (so that tags
-                        * are written in sorted order).
-                        */
-                       tag = isTiled(tif) ?
-                           TIFFTAG_TILEBYTECOUNTS : TIFFTAG_STRIPBYTECOUNTS;
-                       if (tag != fip->field_tag)
-                               continue;
-                       
-                       dir->tdir_tag = (uint16) tag;
-                       dir->tdir_type = (uint16) TIFF_LONG;
-                       dir->tdir_count = (uint32) td->td_nstrips;
-                       if (!TIFFWriteLongArray(tif, dir,
-                                               td->td_stripbytecount))
-                               goto bad;
-                       break;
-               case FIELD_ROWSPERSTRIP:
-                       TIFFSetupShortLong(tif, TIFFTAG_ROWSPERSTRIP,
-                           dir, td->td_rowsperstrip);
-                       break;
-               case FIELD_COLORMAP:
-                       if (!TIFFWriteShortTable(tif, TIFFTAG_COLORMAP, dir,
-                           3, td->td_colormap))
-                               goto bad;
-                       break;
-               case FIELD_IMAGEDIMENSIONS:
-                       TIFFSetupShortLong(tif, TIFFTAG_IMAGEWIDTH,
-                           dir++, td->td_imagewidth);
-                       TIFFSetupShortLong(tif, TIFFTAG_IMAGELENGTH,
-                           dir, td->td_imagelength);
-                       break;
-               case FIELD_TILEDIMENSIONS:
-                       TIFFSetupShortLong(tif, TIFFTAG_TILEWIDTH,
-                           dir++, td->td_tilewidth);
-                       TIFFSetupShortLong(tif, TIFFTAG_TILELENGTH,
-                           dir, td->td_tilelength);
-                       break;
-               case FIELD_COMPRESSION:
-                       TIFFSetupShort(tif, TIFFTAG_COMPRESSION,
-                           dir, td->td_compression);
-                       break;
-               case FIELD_PHOTOMETRIC:
-                       TIFFSetupShort(tif, TIFFTAG_PHOTOMETRIC,
-                           dir, td->td_photometric);
-                       break;
-               case FIELD_POSITION:
-                       WriteRationalPair(TIFF_RATIONAL,
-                           TIFFTAG_XPOSITION, td->td_xposition,
-                           TIFFTAG_YPOSITION, td->td_yposition);
-                       break;
-               case FIELD_RESOLUTION:
-                       WriteRationalPair(TIFF_RATIONAL,
-                           TIFFTAG_XRESOLUTION, td->td_xresolution,
-                           TIFFTAG_YRESOLUTION, td->td_yresolution);
-                       break;
-               case FIELD_BITSPERSAMPLE:
-               case FIELD_MINSAMPLEVALUE:
-               case FIELD_MAXSAMPLEVALUE:
-               case FIELD_SAMPLEFORMAT:
-                       if (!TIFFWritePerSampleShorts(tif, fip->field_tag, dir))
-                               goto bad;
-                       break;
-               case FIELD_SMINSAMPLEVALUE:
-               case FIELD_SMAXSAMPLEVALUE:
-                       if (!TIFFWritePerSampleAnys(tif,
-                           _TIFFSampleToTagType(tif), fip->field_tag, dir))
-                               goto bad;
-                       break;
-               case FIELD_PAGENUMBER:
-               case FIELD_HALFTONEHINTS:
-               case FIELD_YCBCRSUBSAMPLING:
-                       if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
-                               goto bad;
-                       break;
-               case FIELD_INKNAMES:
-                       if (!TIFFWriteInkNames(tif, dir))
-                               goto bad;
-                       break;
-               case FIELD_TRANSFERFUNCTION:
-                       if (!TIFFWriteTransferFunction(tif, dir))
-                               goto bad;
-                       break;
-               case FIELD_SUBIFD:
-                       /*
-                        * XXX: Always write this field using LONG type
-                        * for backward compatibility.
-                        */
-                       dir->tdir_tag = (uint16) fip->field_tag;
-                       dir->tdir_type = (uint16) TIFF_LONG;
-                       dir->tdir_count = (uint32) td->td_nsubifd;
-                       if (!TIFFWriteLongArray(tif, dir, td->td_subifd))
-                               goto bad;
-                       /*
-                        * Total hack: if this directory includes a SubIFD
-                        * tag then force the next <n> directories to be
-                        * written as ``sub directories'' of this one.  This
-                        * is used to write things like thumbnails and
-                        * image masks that one wants to keep out of the
-                        * normal directory linkage access mechanism.
-                        */
-                       if (dir->tdir_count > 0) {
-                               tif->tif_flags |= TIFF_INSUBIFD;
-                               tif->tif_nsubifd = (uint16) dir->tdir_count;
-                               if (dir->tdir_count > 1)
-                                       tif->tif_subifdoff = dir->tdir_offset;
-                               else
-                                       tif->tif_subifdoff = (uint32)(
-                                             tif->tif_diroff
-                                           + sizeof (uint16)
-                                           + ((char*)&dir->tdir_offset-data));
-                       }
-                       break;
-               default:
-                       /* XXX: Should be fixed and removed. */
-                       if (fip->field_tag == TIFFTAG_DOTRANGE) {
-                               if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
-                                       goto bad;
-                       }
-                       else if (!TIFFWriteNormalTag(tif, dir, fip))
-                               goto bad;
-                       break;
-               }
-               dir++;
-                
-                if( fip->field_bit != FIELD_CUSTOM )
-                    ResetFieldBit(fields, fip->field_bit);
-       }
-
-       /*
-        * Write directory.
-        */
-       dircount = (uint16) nfields;
-       diroff = (uint32) tif->tif_nextdiroff;
-       if (tif->tif_flags & TIFF_SWAB) {
-               /*
-                * The file's byte order is opposite to the
-                * native machine architecture.  We overwrite
-                * the directory information with impunity
-                * because it'll be released below after we
-                * write it to the file.  Note that all the
-                * other tag construction routines assume that
-                * we do this byte-swapping; i.e. they only
-                * byte-swap indirect data.
-                */
-               for (dir = (TIFFDirEntry*) data; dircount; dir++, dircount--) {
-                       TIFFSwabArrayOfShort(&dir->tdir_tag, 2);
-                       TIFFSwabArrayOfLong(&dir->tdir_count, 2);
-               }
-               dircount = (uint16) nfields;
-               TIFFSwabShort(&dircount);
-               TIFFSwabLong(&diroff);
-       }
-       (void) TIFFSeekFile(tif, tif->tif_diroff, SEEK_SET);
-       if (!WriteOK(tif, &dircount, sizeof (dircount))) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory count");
-               goto bad;
-       }
-       if (!WriteOK(tif, data, dirsize)) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory contents");
-               goto bad;
-       }
-       if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing directory link");
-               goto bad;
-       }
-       if (done) {
-               TIFFFreeDirectory(tif);
-               tif->tif_flags &= ~TIFF_DIRTYDIRECT;
-               (*tif->tif_cleanup)(tif);
-
-               /*
-               * Reset directory-related state for subsequent
-               * directories.
-               */
-               TIFFCreateDirectory(tif);
-       }
-       _TIFFfree(data);
-       return (1);
-bad:
-       _TIFFfree(data);
-       return (0);
-}
-#undef WriteRationalPair
-
 int
 TIFFWriteDirectory(TIFF* tif)
 {
-       return _TIFFWriteDirectory(tif, TRUE);
+       return TIFFWriteDirectorySec(tif,TRUE,TRUE,NULL);
 }
 
 /*
@@ -417,7 +188,7 @@ TIFFWriteDirectory(TIFF* tif)
  * but leaves all data structures in memory so that it can be
  * written again.  This will make a partially written TIFF file
  * readable before it is successfully completed/closed.
- */ 
+ */
 int
 TIFFCheckpointDirectory(TIFF* tif)
 {
@@ -425,819 +196,2715 @@ TIFFCheckpointDirectory(TIFF* tif)
        /* Setup the strips arrays, if they haven't already been. */
        if (tif->tif_dir.td_stripoffset == NULL)
            (void) TIFFSetupStrips(tif);
-       rc = _TIFFWriteDirectory(tif, FALSE);
+       rc = TIFFWriteDirectorySec(tif,TRUE,FALSE,NULL);
        (void) TIFFSetWriteOffset(tif, TIFFSeekFile(tif, 0, SEEK_END));
        return rc;
 }
 
+int
+TIFFWriteCustomDirectory(TIFF* tif, uint64* pdiroff)
+{
+       return TIFFWriteDirectorySec(tif,FALSE,FALSE,pdiroff);
+}
+
 /*
- * Process tags that are not special cased.
- */
-static int
-TIFFWriteNormalTag(TIFF* tif, TIFFDirEntry* dir, const TIFFFieldInfo* fip)
-{
-       uint16 wc = (uint16) fip->field_writecount;
-       uint32 wc2;
-
-       dir->tdir_tag = (uint16) fip->field_tag;
-       dir->tdir_type = (uint16) fip->field_type;
-       dir->tdir_count = wc;
-       
-       switch (fip->field_type) {
-       case TIFF_SHORT:
-       case TIFF_SSHORT:
-               if (fip->field_passcount) {
-                       uint16* wp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &wp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &wp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteShortArray(tif, dir, wp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               uint16 sv;
-                               TIFFGetField(tif, fip->field_tag, &sv);
-                               dir->tdir_offset =
-                                       TIFFInsertData(tif, dir->tdir_type, sv);
-                       } else {
-                               uint16* wp;
-                               TIFFGetField(tif, fip->field_tag, &wp);
-                               if (!TIFFWriteShortArray(tif, dir, wp))
-                                       return 0;
-                       }
-               }
-               break;
-       case TIFF_LONG:
-       case TIFF_SLONG:
-       case TIFF_IFD:
-               if (fip->field_passcount) {
-                       uint32* lp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &lp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &lp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteLongArray(tif, dir, lp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               /* XXX handle LONG->SHORT conversion */
-                               TIFFGetField(tif, fip->field_tag,
-                                            &dir->tdir_offset);
-                       } else {
-                               uint32* lp;
-                               TIFFGetField(tif, fip->field_tag, &lp);
-                               if (!TIFFWriteLongArray(tif, dir, lp))
-                                       return 0;
-                       }
-               }
-               break;
-       case TIFF_RATIONAL:
-       case TIFF_SRATIONAL:
-               if (fip->field_passcount) {
-                       float* fp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &fp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &fp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteRationalArray(tif, dir, fp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               float fv;
-                               TIFFGetField(tif, fip->field_tag, &fv);
-                               if (!TIFFWriteRationalArray(tif, dir, &fv))
-                                       return 0;
-                       } else {
-                               float* fp;
-                               TIFFGetField(tif, fip->field_tag, &fp);
-                               if (!TIFFWriteRationalArray(tif, dir, fp))
-                                       return 0;
+ * Similar to TIFFWriteDirectory(), but if the directory has already
+ * been written once, it is relocated to the end of the file, in case it
+ * has changed in size.  Note that this will result in the loss of the
+ * previously used directory space. 
+ */ 
+int
+TIFFRewriteDirectory( TIFF *tif )
+{
+       static const char module[] = "TIFFRewriteDirectory";
+
+       /* We don't need to do anything special if it hasn't been written. */
+       if( tif->tif_diroff == 0 )
+               return TIFFWriteDirectory( tif );
+
+       /*
+        * Find and zero the pointer to this directory, so that TIFFLinkDirectory
+        * will cause it to be added after this directories current pre-link.
+        */
+
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               if (tif->tif_header.classic.tiff_diroff == tif->tif_diroff)
+               {
+                       tif->tif_header.classic.tiff_diroff = 0;
+                       tif->tif_diroff = 0;
+
+                       TIFFSeekFile(tif,4,SEEK_SET);
+                       if (!WriteOK(tif, &(tif->tif_header.classic.tiff_diroff),4))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                                   "Error updating TIFF header");
+                               return (0);
                        }
                }
-               break;
-       case TIFF_FLOAT:
-               if (fip->field_passcount) {
-                       float* fp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &fp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &fp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteFloatArray(tif, dir, fp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               float fv;
-                               TIFFGetField(tif, fip->field_tag, &fv);
-                               if (!TIFFWriteFloatArray(tif, dir, &fv))
-                                       return 0;
-                       } else {
-                               float* fp;
-                               TIFFGetField(tif, fip->field_tag, &fp);
-                               if (!TIFFWriteFloatArray(tif, dir, fp))
-                                       return 0;
+               else
+               {
+                       uint32 nextdir;
+                       nextdir = tif->tif_header.classic.tiff_diroff;
+                       while(1) {
+                               uint16 dircount;
+                               uint32 nextnextdir;
+
+                               if (!SeekOK(tif, nextdir) ||
+                                   !ReadOK(tif, &dircount, 2)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory count");
+                                       return (0);
+                               }
+                               if (tif->tif_flags & TIFF_SWAB)
+                                       TIFFSwabShort(&dircount);
+                               (void) TIFFSeekFile(tif,
+                                   nextdir+2+dircount*12, SEEK_SET);
+                               if (!ReadOK(tif, &nextnextdir, 4)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory link");
+                                       return (0);
+                               }
+                               if (tif->tif_flags & TIFF_SWAB)
+                                       TIFFSwabLong(&nextnextdir);
+                               if (nextnextdir==tif->tif_diroff)
+                               {
+                                       uint32 m;
+                                       m=0;
+                                       (void) TIFFSeekFile(tif,
+                                           nextdir+2+dircount*12, SEEK_SET);
+                                       if (!WriteOK(tif, &m, 4)) {
+                                               TIFFErrorExt(tif->tif_clientdata, module,
+                                                    "Error writing directory link");
+                                               return (0);
+                                       }
+                                       tif->tif_diroff=0;
+                                       break;
+                               }
+                               nextdir=nextnextdir;
                        }
                }
-               break;
-       case TIFF_DOUBLE:
-               if (fip->field_passcount) {
-                       double* dp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &dp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &dp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteDoubleArray(tif, dir, dp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               double dv;
-                               TIFFGetField(tif, fip->field_tag, &dv);
-                               if (!TIFFWriteDoubleArray(tif, dir, &dv))
-                                       return 0;
-                       } else {
-                               double* dp;
-                               TIFFGetField(tif, fip->field_tag, &dp);
-                               if (!TIFFWriteDoubleArray(tif, dir, dp))
-                                       return 0;
+       }
+       else
+       {
+               if (tif->tif_header.big.tiff_diroff == tif->tif_diroff)
+               {
+                       tif->tif_header.big.tiff_diroff = 0;
+                       tif->tif_diroff = 0;
+
+                       TIFFSeekFile(tif,8,SEEK_SET);
+                       if (!WriteOK(tif, &(tif->tif_header.big.tiff_diroff),8))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                                   "Error updating TIFF header");
+                               return (0);
                        }
                }
-               break;
-       case TIFF_ASCII:
-               { 
-                    char* cp;
-                    if (fip->field_passcount)
-                        TIFFGetField(tif, fip->field_tag, &wc, &cp);
-                    else
-                        TIFFGetField(tif, fip->field_tag, &cp);
-
-                    dir->tdir_count = (uint32) (strlen(cp) + 1);
-                    if (!TIFFWriteByteArray(tif, dir, cp))
-                        return (0);
-               }
-               break;
-
-        case TIFF_BYTE:
-        case TIFF_SBYTE:          
-               if (fip->field_passcount) {
-                       char* cp;
-                       if (wc == (uint16) TIFF_VARIABLE2) {
-                               TIFFGetField(tif, fip->field_tag, &wc2, &cp);
-                               dir->tdir_count = wc2;
-                       } else {        /* Assume TIFF_VARIABLE */
-                               TIFFGetField(tif, fip->field_tag, &wc, &cp);
-                               dir->tdir_count = wc;
-                       }
-                       if (!TIFFWriteByteArray(tif, dir, cp))
-                               return 0;
-               } else {
-                       if (wc == 1) {
-                               char cv;
-                               TIFFGetField(tif, fip->field_tag, &cv);
-                               if (!TIFFWriteByteArray(tif, dir, &cv))
-                                       return 0;
-                       } else {
-                               char* cp;
-                               TIFFGetField(tif, fip->field_tag, &cp);
-                               if (!TIFFWriteByteArray(tif, dir, cp))
-                                       return 0;
+               else
+               {
+                       uint64 nextdir;
+                       nextdir = tif->tif_header.big.tiff_diroff;
+                       while(1) {
+                               uint64 dircount64;
+                               uint16 dircount;
+                               uint64 nextnextdir;
+
+                               if (!SeekOK(tif, nextdir) ||
+                                   !ReadOK(tif, &dircount64, 8)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory count");
+                                       return (0);
+                               }
+                               if (tif->tif_flags & TIFF_SWAB)
+                                       TIFFSwabLong8(&dircount64);
+                               if (dircount64>0xFFFF)
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Sanity check on tag count failed, likely corrupt TIFF");
+                                       return (0);
+                               }
+                               dircount=(uint16)dircount64;
+                               (void) TIFFSeekFile(tif,
+                                   nextdir+8+dircount*20, SEEK_SET);
+                               if (!ReadOK(tif, &nextnextdir, 8)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory link");
+                                       return (0);
+                               }
+                               if (tif->tif_flags & TIFF_SWAB)
+                                       TIFFSwabLong8(&nextnextdir);
+                               if (nextnextdir==tif->tif_diroff)
+                               {
+                                       uint64 m;
+                                       m=0;
+                                       (void) TIFFSeekFile(tif,
+                                           nextdir+8+dircount*20, SEEK_SET);
+                                       if (!WriteOK(tif, &m, 8)) {
+                                               TIFFErrorExt(tif->tif_clientdata, module,
+                                                    "Error writing directory link");
+                                               return (0);
+                                       }
+                                       tif->tif_diroff=0;
+                                       break;
+                               }
+                               nextdir=nextnextdir;
                        }
                }
-                break;
-
-       case TIFF_UNDEFINED:
-               { char* cp;
-                 if (wc == (unsigned short) TIFF_VARIABLE) {
-                       TIFFGetField(tif, fip->field_tag, &wc, &cp);
-                       dir->tdir_count = wc;
-                 } else if (wc == (unsigned short) TIFF_VARIABLE2) {
-                       TIFFGetField(tif, fip->field_tag, &wc2, &cp);
-                       dir->tdir_count = wc2;
-                 } else 
-                       TIFFGetField(tif, fip->field_tag, &cp);
-                 if (!TIFFWriteByteArray(tif, dir, cp))
-                       return (0);
-               }
-               break;
-
-        case TIFF_NOTYPE:
-                break;
        }
-       return (1);
-}
 
-/*
- * Setup a directory entry with either a SHORT
- * or LONG type according to the value.
- */
-static void
-TIFFSetupShortLong(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint32 v)
-{
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_count = 1;
-       if (v > 0xffffL) {
-               dir->tdir_type = (short) TIFF_LONG;
-               dir->tdir_offset = v;
-       } else {
-               dir->tdir_type = (short) TIFF_SHORT;
-               dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
-       }
-}
+       /*
+        * Now use TIFFWriteDirectory() normally.
+        */
 
-/*
- * Setup a SHORT directory entry
- */
-static void
-TIFFSetupShort(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint16 v)
-{
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_count = 1;
-       dir->tdir_type = (short) TIFF_SHORT;
-       dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
+       return TIFFWriteDirectory( tif );
 }
-#undef MakeShortDirent
 
-#define        NITEMS(x)       (sizeof (x) / sizeof (x[0]))
-/*
- * Setup a directory entry that references a
- * samples/pixel array of SHORT values and
- * (potentially) write the associated indirect
- * values.
- */
 static int
-TIFFWritePerSampleShorts(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
+TIFFWriteDirectorySec(TIFF* tif, int isimage, int imagedone, uint64* pdiroff)
 {
-       uint16 buf[10], v;
-       uint16* w = buf;
-       uint16 i, samples = tif->tif_dir.td_samplesperpixel;
-       int status;
+       static const char module[] = "TIFFWriteDirectorySec";
+       uint32 ndir;
+       TIFFDirEntry* dir;
+       uint32 dirsize;
+       void* dirmem;
+       uint32 m;
+       if (tif->tif_mode == O_RDONLY)
+               return (1);
 
-       if (samples > NITEMS(buf)) {
-               w = (uint16*) _TIFFmalloc(samples * sizeof (uint16));
-               if (w == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "No space to write per-sample shorts");
+        _TIFFFillStriles( tif );
+        
+       /*
+        * Clear write state so that subsequent images with
+        * different characteristics get the right buffers
+        * setup for them.
+        */
+       if (imagedone)
+       {
+               if (tif->tif_flags & TIFF_POSTENCODE)
+               {
+                       tif->tif_flags &= ~TIFF_POSTENCODE;
+                       if (!(*tif->tif_postencode)(tif))
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,
+                                   "Error post-encoding before directory write");
+                               return (0);
+                       }
+               }
+               (*tif->tif_close)(tif);       /* shutdown encoder */
+               /*
+                * Flush any data that might have been written
+                * by the compression close+cleanup routines.  But
+                 * be careful not to write stuff if we didn't add data
+                 * in the previous steps as the "rawcc" data may well be
+                 * a previously read tile/strip in mixed read/write mode.
+                */
+               if (tif->tif_rawcc > 0 
+                   && (tif->tif_flags & TIFF_BEENWRITING) != 0 )
+               {
+                   if( !TIFFFlushData1(tif) )
+                    {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Error flushing data before directory write");
                        return (0);
+                    }
+               }
+               if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
+               {
+                       _TIFFfree(tif->tif_rawdata);
+                       tif->tif_rawdata = NULL;
+                       tif->tif_rawcc = 0;
+                       tif->tif_rawdatasize = 0;
+                        tif->tif_rawdataoff = 0;
+                        tif->tif_rawdataloaded = 0;
+               }
+               tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP);
+       }
+       dir=NULL;
+       dirmem=NULL;
+       dirsize=0;
+       while (1)
+       {
+               ndir=0;
+               if (isimage)
+               {
+                       if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS))
+                       {
+                               if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGEWIDTH,tif->tif_dir.td_imagewidth))
+                                       goto bad;
+                               if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_IMAGELENGTH,tif->tif_dir.td_imagelength))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS))
+                       {
+                               if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILEWIDTH,tif->tif_dir.td_tilewidth))
+                                       goto bad;
+                               if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_TILELENGTH,tif->tif_dir.td_tilelength))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_RESOLUTION))
+                       {
+                               if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XRESOLUTION,tif->tif_dir.td_xresolution))
+                                       goto bad;
+                               if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YRESOLUTION,tif->tif_dir.td_yresolution))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_POSITION))
+                       {
+                               if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_XPOSITION,tif->tif_dir.td_xposition))
+                                       goto bad;
+                               if (!TIFFWriteDirectoryTagRational(tif,&ndir,dir,TIFFTAG_YPOSITION,tif->tif_dir.td_yposition))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SUBFILETYPE))
+                       {
+                               if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,TIFFTAG_SUBFILETYPE,tif->tif_dir.td_subfiletype))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
+                       {
+                               if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_BITSPERSAMPLE,tif->tif_dir.td_bitspersample))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_COMPRESSION))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_COMPRESSION,tif->tif_dir.td_compression))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PHOTOMETRIC,tif->tif_dir.td_photometric))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_THRESHHOLDING))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_THRESHHOLDING,tif->tif_dir.td_threshholding))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_FILLORDER))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_FILLORDER,tif->tif_dir.td_fillorder))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_ORIENTATION))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_ORIENTATION,tif->tif_dir.td_orientation))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_SAMPLESPERPIXEL,tif->tif_dir.td_samplesperpixel))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP))
+                       {
+                               if (!TIFFWriteDirectoryTagShortLong(tif,&ndir,dir,TIFFTAG_ROWSPERSTRIP,tif->tif_dir.td_rowsperstrip))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE))
+                       {
+                               if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MINSAMPLEVALUE,tif->tif_dir.td_minsamplevalue))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
+                       {
+                               if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_MAXSAMPLEVALUE,tif->tif_dir.td_maxsamplevalue))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_PLANARCONFIG))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_PLANARCONFIG,tif->tif_dir.td_planarconfig))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_RESOLUTIONUNIT,tif->tif_dir.td_resolutionunit))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_PAGENUMBER))
+                       {
+                               if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_PAGENUMBER,2,&tif->tif_dir.td_pagenumber[0]))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_STRIPBYTECOUNTS))
+                       {
+                               if (!isTiled(tif))
+                               {
+                                       if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_STRIPBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount))
+                                               goto bad;
+                               }
+                               else
+                               {
+                                       if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_TILEBYTECOUNTS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripbytecount))
+                                               goto bad;
+                               }
+                       }
+                       if (TIFFFieldSet(tif,FIELD_STRIPOFFSETS))
+                       {
+                               if (!isTiled(tif))
+                               {
+                                       if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_STRIPOFFSETS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripoffset))
+                                               goto bad;
+                               }
+                               else
+                               {
+                                       if (!TIFFWriteDirectoryTagLongLong8Array(tif,&ndir,dir,TIFFTAG_TILEOFFSETS,tif->tif_dir.td_nstrips,tif->tif_dir.td_stripoffset))
+                                               goto bad;
+                               }
+                       }
+                       if (TIFFFieldSet(tif,FIELD_COLORMAP))
+                       {
+                               if (!TIFFWriteDirectoryTagColormap(tif,&ndir,dir))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES))
+                       {
+                               if (tif->tif_dir.td_extrasamples)
+                               {
+                                       uint16 na;
+                                       uint16* nb;
+                                       TIFFGetFieldDefaulted(tif,TIFFTAG_EXTRASAMPLES,&na,&nb);
+                                       if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_EXTRASAMPLES,na,nb))
+                                               goto bad;
+                               }
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT))
+                       {
+                               if (!TIFFWriteDirectoryTagShortPerSample(tif,&ndir,dir,TIFFTAG_SAMPLEFORMAT,tif->tif_dir.td_sampleformat))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE))
+                       {
+                               if (!TIFFWriteDirectoryTagSampleformatArray(tif,&ndir,dir,TIFFTAG_SMINSAMPLEVALUE,tif->tif_dir.td_samplesperpixel,tif->tif_dir.td_sminsamplevalue))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE))
+                       {
+                               if (!TIFFWriteDirectoryTagSampleformatArray(tif,&ndir,dir,TIFFTAG_SMAXSAMPLEVALUE,tif->tif_dir.td_samplesperpixel,tif->tif_dir.td_smaxsamplevalue))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH))
+                       {
+                               if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,TIFFTAG_IMAGEDEPTH,tif->tif_dir.td_imagedepth))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_TILEDEPTH))
+                       {
+                               if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,TIFFTAG_TILEDEPTH,tif->tif_dir.td_tiledepth))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_HALFTONEHINTS))
+                       {
+                               if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_HALFTONEHINTS,2,&tif->tif_dir.td_halftonehints[0]))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING))
+                       {
+                               if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,TIFFTAG_YCBCRSUBSAMPLING,2,&tif->tif_dir.td_ycbcrsubsampling[0]))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING))
+                       {
+                               if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,TIFFTAG_YCBCRPOSITIONING,tif->tif_dir.td_ycbcrpositioning))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_REFBLACKWHITE))
+                       {
+                               if (!TIFFWriteDirectoryTagRationalArray(tif,&ndir,dir,TIFFTAG_REFERENCEBLACKWHITE,6,tif->tif_dir.td_refblackwhite))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION))
+                       {
+                               if (!TIFFWriteDirectoryTagTransferfunction(tif,&ndir,dir))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_INKNAMES))
+                       {
+                               if (!TIFFWriteDirectoryTagAscii(tif,&ndir,dir,TIFFTAG_INKNAMES,tif->tif_dir.td_inknameslen,tif->tif_dir.td_inknames))
+                                       goto bad;
+                       }
+                       if (TIFFFieldSet(tif,FIELD_SUBIFD))
+                       {
+                               if (!TIFFWriteDirectoryTagSubifd(tif,&ndir,dir))
+                                       goto bad;
+                       }
+                       {
+                               uint32 n;
+                               for (n=0; n<tif->tif_nfields; n++) {
+                                       const TIFFField* o;
+                                       o = tif->tif_fields[n];
+                                       if ((o->field_bit>=FIELD_CODEC)&&(TIFFFieldSet(tif,o->field_bit)))
+                                       {
+                                               switch (o->get_field_type)
+                                               {
+                                                       case TIFF_SETGET_ASCII:
+                                                               {
+                                                                       uint32 pa;
+                                                                       char* pb;
+                                                                       assert(o->field_type==TIFF_ASCII);
+                                                                       assert(o->field_readcount==TIFF_VARIABLE);
+                                                                       assert(o->field_passcount==0);
+                                                                       TIFFGetField(tif,o->field_tag,&pb);
+                                                                       pa=(uint32)(strlen(pb));
+                                                                       if (!TIFFWriteDirectoryTagAscii(tif,&ndir,dir,o->field_tag,pa,pb))
+                                                                               goto bad;
+                                                               }
+                                                               break;
+                                                       case TIFF_SETGET_UINT16:
+                                                               {
+                                                                       uint16 p;
+                                                                       assert(o->field_type==TIFF_SHORT);
+                                                                       assert(o->field_readcount==1);
+                                                                       assert(o->field_passcount==0);
+                                                                       TIFFGetField(tif,o->field_tag,&p);
+                                                                       if (!TIFFWriteDirectoryTagShort(tif,&ndir,dir,o->field_tag,p))
+                                                                               goto bad;
+                                                               }
+                                                               break;
+                                                       case TIFF_SETGET_UINT32:
+                                                               {
+                                                                       uint32 p;
+                                                                       assert(o->field_type==TIFF_LONG);
+                                                                       assert(o->field_readcount==1);
+                                                                       assert(o->field_passcount==0);
+                                                                       TIFFGetField(tif,o->field_tag,&p);
+                                                                       if (!TIFFWriteDirectoryTagLong(tif,&ndir,dir,o->field_tag,p))
+                                                                               goto bad;
+                                                               }
+                                                               break;
+                                                       case TIFF_SETGET_C32_UINT8:
+                                                               {
+                                                                       uint32 pa;
+                                                                       void* pb;
+                                                                       assert(o->field_type==TIFF_UNDEFINED);
+                                                                       assert(o->field_readcount==TIFF_VARIABLE2);
+                                                                       assert(o->field_passcount==1);
+                                                                       TIFFGetField(tif,o->field_tag,&pa,&pb);
+                                                                       if (!TIFFWriteDirectoryTagUndefinedArray(tif,&ndir,dir,o->field_tag,pa,pb))
+                                                                               goto bad;
+                                                               }
+                                                               break;
+                                                       default:
+                                                               assert(0);   /* we should never get here */
+                                                               break;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               for (m=0; m<(uint32)(tif->tif_dir.td_customValueCount); m++)
+               {
+                       switch (tif->tif_dir.td_customValues[m].info->field_type)
+                       {
+                               case TIFF_ASCII:
+                                       if (!TIFFWriteDirectoryTagAscii(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_UNDEFINED:
+                                       if (!TIFFWriteDirectoryTagUndefinedArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_BYTE:
+                                       if (!TIFFWriteDirectoryTagByteArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SBYTE:
+                                       if (!TIFFWriteDirectoryTagSbyteArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SHORT:
+                                       if (!TIFFWriteDirectoryTagShortArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SSHORT:
+                                       if (!TIFFWriteDirectoryTagSshortArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_LONG:
+                                       if (!TIFFWriteDirectoryTagLongArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SLONG:
+                                       if (!TIFFWriteDirectoryTagSlongArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_LONG8:
+                                       if (!TIFFWriteDirectoryTagLong8Array(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SLONG8:
+                                       if (!TIFFWriteDirectoryTagSlong8Array(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_RATIONAL:
+                                       if (!TIFFWriteDirectoryTagRationalArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_SRATIONAL:
+                                       if (!TIFFWriteDirectoryTagSrationalArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_FLOAT:
+                                       if (!TIFFWriteDirectoryTagFloatArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_DOUBLE:
+                                       if (!TIFFWriteDirectoryTagDoubleArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_IFD:
+                                       if (!TIFFWriteDirectoryTagIfdArray(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               case TIFF_IFD8:
+                                       if (!TIFFWriteDirectoryTagIfdIfd8Array(tif,&ndir,dir,tif->tif_dir.td_customValues[m].info->field_tag,tif->tif_dir.td_customValues[m].count,tif->tif_dir.td_customValues[m].value))
+                                               goto bad;
+                                       break;
+                               default:
+                                       assert(0);   /* we should never get here */
+                                       break;
+                       }
+               }
+               if (dir!=NULL)
+                       break;
+               dir=_TIFFmalloc(ndir*sizeof(TIFFDirEntry));
+               if (dir==NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       goto bad;
+               }
+               if (isimage)
+               {
+                       if ((tif->tif_diroff==0)&&(!TIFFLinkDirectory(tif)))
+                               goto bad;
+               }
+               else
+                       tif->tif_diroff=(TIFFSeekFile(tif,0,SEEK_END)+1)&(~1);
+               if (pdiroff!=NULL)
+                       *pdiroff=tif->tif_diroff;
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       dirsize=2+ndir*12+4;
+               else
+                       dirsize=8+ndir*20+8;
+               tif->tif_dataoff=tif->tif_diroff+dirsize;
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       tif->tif_dataoff=(uint32)tif->tif_dataoff;
+               if ((tif->tif_dataoff<tif->tif_diroff)||(tif->tif_dataoff<(uint64)dirsize))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Maximum TIFF file size exceeded");
+                       goto bad;
+               }
+               if (tif->tif_dataoff&1)
+                       tif->tif_dataoff++;
+               if (isimage)
+                       tif->tif_curdir++;
+       }
+       if (isimage)
+       {
+               if (TIFFFieldSet(tif,FIELD_SUBIFD)&&(tif->tif_subifdoff==0))
+               {
+                       uint32 na;
+                       TIFFDirEntry* nb;
+                       for (na=0, nb=dir; ; na++, nb++)
+                       {
+                               assert(na<ndir);
+                               if (nb->tdir_tag==TIFFTAG_SUBIFD)
+                                       break;
+                       }
+                       if (!(tif->tif_flags&TIFF_BIGTIFF))
+                               tif->tif_subifdoff=tif->tif_diroff+2+na*12+8;
+                       else
+                               tif->tif_subifdoff=tif->tif_diroff+8+na*20+12;
+               }
+       }
+       dirmem=_TIFFmalloc(dirsize);
+       if (dirmem==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               goto bad;
+       }
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               uint8* n;
+               uint32 nTmp;
+               TIFFDirEntry* o;
+               n=dirmem;
+               *(uint16*)n=ndir;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabShort((uint16*)n);
+               n+=2;
+               o=dir;
+               for (m=0; m<ndir; m++)
+               {
+                       *(uint16*)n=o->tdir_tag;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabShort((uint16*)n);
+                       n+=2;
+                       *(uint16*)n=o->tdir_type;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabShort((uint16*)n);
+                       n+=2;
+                       nTmp = (uint32)o->tdir_count;
+                       _TIFFmemcpy(n,&nTmp,4);
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong((uint32*)n);
+                       n+=4;
+                       /* This is correct. The data has been */
+                       /* swabbed previously in TIFFWriteDirectoryTagData */
+                       _TIFFmemcpy(n,&o->tdir_offset,4);
+                       n+=4;
+                       o++;
+               }
+               nTmp = (uint32)tif->tif_nextdiroff;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong(&nTmp);
+               _TIFFmemcpy(n,&nTmp,4);
+       }
+       else
+       {
+               uint8* n;
+               TIFFDirEntry* o;
+               n=dirmem;
+               *(uint64*)n=ndir;
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong8((uint64*)n);
+               n+=8;
+               o=dir;
+               for (m=0; m<ndir; m++)
+               {
+                       *(uint16*)n=o->tdir_tag;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabShort((uint16*)n);
+                       n+=2;
+                       *(uint16*)n=o->tdir_type;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabShort((uint16*)n);
+                       n+=2;
+                       _TIFFmemcpy(n,&o->tdir_count,8);
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8((uint64*)n);
+                       n+=8;
+                       _TIFFmemcpy(n,&o->tdir_offset,8);
+                       n+=8;
+                       o++;
+               }
+               _TIFFmemcpy(n,&tif->tif_nextdiroff,8);
+               if (tif->tif_flags&TIFF_SWAB)
+                       TIFFSwabLong8((uint64*)n);
+       }
+       _TIFFfree(dir);
+       dir=NULL;
+       if (!SeekOK(tif,tif->tif_diroff))
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"IO error writing directory");
+               goto bad;
+       }
+       if (!WriteOK(tif,dirmem,(tmsize_t)dirsize))
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"IO error writing directory");
+               goto bad;
+       }
+       _TIFFfree(dirmem);
+       if (imagedone)
+       {
+               TIFFFreeDirectory(tif);
+               tif->tif_flags &= ~TIFF_DIRTYDIRECT;
+               tif->tif_flags &= ~TIFF_DIRTYSTRIP;
+               (*tif->tif_cleanup)(tif);
+               /*
+               * Reset directory-related state for subsequent
+               * directories.
+               */
+               TIFFCreateDirectory(tif);
+       }
+       return(1);
+bad:
+       if (dir!=NULL)
+               _TIFFfree(dir);
+       if (dirmem!=NULL)
+               _TIFFfree(dirmem);
+       return(0);
+}
+
+static int
+TIFFWriteDirectoryTagSampleformatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagSampleformatArray";
+       void* conv;
+       uint32 i;
+       int ok;
+       conv = _TIFFmalloc(count*sizeof(double));
+       if (conv == NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Out of memory");
+               return (0);
+       }
+
+       switch (tif->tif_dir.td_sampleformat)
+       {
+               case SAMPLEFORMAT_IEEEFP:
+                       if (tif->tif_dir.td_bitspersample<=32)
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((float*)conv)[i] = (float)value[i];
+                               ok = TIFFWriteDirectoryTagFloatArray(tif,ndir,dir,tag,count,(float*)conv);
+                       }
+                       else
+                       {
+                               ok = TIFFWriteDirectoryTagDoubleArray(tif,ndir,dir,tag,count,value);
+                       }
+                       break;
+               case SAMPLEFORMAT_INT:
+                       if (tif->tif_dir.td_bitspersample<=8)
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((int8*)conv)[i] = (int8)value[i];
+                               ok = TIFFWriteDirectoryTagSbyteArray(tif,ndir,dir,tag,count,(int8*)conv);
+                       }
+                       else if (tif->tif_dir.td_bitspersample<=16)
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((int16*)conv)[i] = (int16)value[i];
+                               ok = TIFFWriteDirectoryTagSshortArray(tif,ndir,dir,tag,count,(int16*)conv);
+                       }
+                       else
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((int32*)conv)[i] = (int32)value[i];
+                               ok = TIFFWriteDirectoryTagSlongArray(tif,ndir,dir,tag,count,(int32*)conv);
+                       }
+                       break;
+               case SAMPLEFORMAT_UINT:
+                       if (tif->tif_dir.td_bitspersample<=8)
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((uint8*)conv)[i] = (uint8)value[i];
+                               ok = TIFFWriteDirectoryTagByteArray(tif,ndir,dir,tag,count,(uint8*)conv);
+                       }
+                       else if (tif->tif_dir.td_bitspersample<=16)
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((uint16*)conv)[i] = (uint16)value[i];
+                               ok = TIFFWriteDirectoryTagShortArray(tif,ndir,dir,tag,count,(uint16*)conv);
+                       }
+                       else
+                       {
+                               for (i = 0; i < count; ++i)
+                                       ((uint32*)conv)[i] = (uint32)value[i];
+                               ok = TIFFWriteDirectoryTagLongArray(tif,ndir,dir,tag,count,(uint32*)conv);
+                       }
+                       break;
+               default:
+                       ok = 0;
+       }
+
+       _TIFFfree(conv);
+       return (ok);
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagSampleformatPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
+{
+       switch (tif->tif_dir.td_sampleformat)
+       {
+               case SAMPLEFORMAT_IEEEFP:
+                       if (tif->tif_dir.td_bitspersample<=32)
+                               return(TIFFWriteDirectoryTagFloatPerSample(tif,ndir,dir,tag,(float)value));
+                       else
+                               return(TIFFWriteDirectoryTagDoublePerSample(tif,ndir,dir,tag,value));
+               case SAMPLEFORMAT_INT:
+                       if (tif->tif_dir.td_bitspersample<=8)
+                               return(TIFFWriteDirectoryTagSbytePerSample(tif,ndir,dir,tag,(int8)value));
+                       else if (tif->tif_dir.td_bitspersample<=16)
+                               return(TIFFWriteDirectoryTagSshortPerSample(tif,ndir,dir,tag,(int16)value));
+                       else
+                               return(TIFFWriteDirectoryTagSlongPerSample(tif,ndir,dir,tag,(int32)value));
+               case SAMPLEFORMAT_UINT:
+                       if (tif->tif_dir.td_bitspersample<=8)
+                               return(TIFFWriteDirectoryTagBytePerSample(tif,ndir,dir,tag,(uint8)value));
+                       else if (tif->tif_dir.td_bitspersample<=16)
+                               return(TIFFWriteDirectoryTagShortPerSample(tif,ndir,dir,tag,(uint16)value));
+                       else
+                               return(TIFFWriteDirectoryTagLongPerSample(tif,ndir,dir,tag,(uint32)value));
+               default:
+                       return(1);
+       }
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagAscii(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, char* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedAscii(tif,ndir,dir,tag,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagUndefinedArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedUndefinedArray(tif,ndir,dir,tag,count,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagByte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedByte(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagByteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedByteArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagBytePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagBytePerSample";
+       uint8* m;
+       uint8* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(uint8));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedByteArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagSbyte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSbyte(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagSbyteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int8* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSbyteArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagSbytePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagSbytePerSample";
+       int8* m;
+       int8* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(int8));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedSbyteArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagShort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedShort(tif,ndir,dir,tag,value));
+}
+
+static int
+TIFFWriteDirectoryTagShortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint16* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedShortArray(tif,ndir,dir,tag,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagShortPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagShortPerSample";
+       uint16* m;
+       uint16* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(uint16));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedShortArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagSshort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSshort(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagSshortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int16* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSshortArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagSshortPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagSshortPerSample";
+       int16* m;
+       int16* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(int16));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedSshortArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedLong(tif,ndir,dir,tag,value));
+}
+
+static int
+TIFFWriteDirectoryTagLongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedLongArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagLongPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagLongPerSample";
+       uint32* m;
+       uint32* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(uint32));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedLongArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagSlong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSlong(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagSlongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int32* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSlongArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int
+TIFFWriteDirectoryTagSlongPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagSlongPerSample";
+       int32* m;
+       int32* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(int32));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedSlongArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagLong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint64 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedLong8(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedLong8Array(tif,ndir,dir,tag,count,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagSlong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int64 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSlong8(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagSlong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int64* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSlong8Array(tif,ndir,dir,tag,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagRational(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedRational(tif,ndir,dir,tag,value));
+}
+
+static int
+TIFFWriteDirectoryTagRationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedRationalArray(tif,ndir,dir,tag,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagSrationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedSrationalArray(tif,ndir,dir,tag,count,value));
+}
+
+#ifdef notdef
+static int TIFFWriteDirectoryTagFloat(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedFloat(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int TIFFWriteDirectoryTagFloatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedFloatArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int TIFFWriteDirectoryTagFloatPerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagFloatPerSample";
+       float* m;
+       float* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(float));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedFloatArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+#ifdef notdef
+static int TIFFWriteDirectoryTagDouble(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedDouble(tif,ndir,dir,tag,value));
+}
+#endif
+
+static int TIFFWriteDirectoryTagDoubleArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedDoubleArray(tif,ndir,dir,tag,count,value));
+}
+
+#if 0
+static int TIFFWriteDirectoryTagDoublePerSample(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagDoublePerSample";
+       double* m;
+       double* na;
+       uint16 nb;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=_TIFFmalloc(tif->tif_dir.td_samplesperpixel*sizeof(double));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=m, nb=0; nb<tif->tif_dir.td_samplesperpixel; na++, nb++)
+               *na=value;
+       o=TIFFWriteDirectoryTagCheckedDoubleArray(tif,ndir,dir,tag,tif->tif_dir.td_samplesperpixel,m);
+       _TIFFfree(m);
+       return(o);
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagIfdArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedIfdArray(tif,ndir,dir,tag,count,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       return(TIFFWriteDirectoryTagCheckedIfd8Array(tif,ndir,dir,tag,count,value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagShortLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value)
+{
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       if (value<=0xFFFF)
+               return(TIFFWriteDirectoryTagCheckedShort(tif,ndir,dir,tag,(uint16)value));
+       else
+               return(TIFFWriteDirectoryTagCheckedLong(tif,ndir,dir,tag,value));
+}
+
+/************************************************************************/
+/*                TIFFWriteDirectoryTagLongLong8Array()                 */
+/*                                                                      */
+/*      Write out LONG8 array as LONG8 for BigTIFF or LONG for          */
+/*      Classic TIFF with some checking.                                */
+/************************************************************************/
+
+static int
+TIFFWriteDirectoryTagLongLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+    static const char module[] = "TIFFWriteDirectoryTagLongLong8Array";
+    uint64* ma;
+    uint32 mb;
+    uint32* p;
+    uint32* q;
+    int o;
+
+    /* is this just a counting pass? */
+    if (dir==NULL)
+    {
+        (*ndir)++;
+        return(1);
+    }
+
+    /* We always write LONG8 for BigTIFF, no checking needed. */
+    if( tif->tif_flags&TIFF_BIGTIFF )
+        return TIFFWriteDirectoryTagCheckedLong8Array(tif,ndir,dir,
+                                                      tag,count,value);
+
+    /*
+    ** For classic tiff we want to verify everything is in range for LONG
+    ** and convert to long format.
+    */
+
+    p = _TIFFmalloc(count*sizeof(uint32));
+    if (p==NULL)
+    {
+        TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+        return(0);
+    }
+
+    for (q=p, ma=value, mb=0; mb<count; ma++, mb++, q++)
+    {
+        if (*ma>0xFFFFFFFF)
+        {
+            TIFFErrorExt(tif->tif_clientdata,module,
+                         "Attempt to write value larger than 0xFFFFFFFF in Classic TIFF file.");
+            _TIFFfree(p);
+            return(0);
+        }
+        *q= (uint32)(*ma);
+    }
+
+    o=TIFFWriteDirectoryTagCheckedLongArray(tif,ndir,dir,tag,count,p);
+    _TIFFfree(p);
+
+    return(o);
+}
+
+/************************************************************************/
+/*                 TIFFWriteDirectoryTagIfdIfd8Array()                  */
+/*                                                                      */
+/*      Write either IFD8 or IFD array depending on file type.          */
+/************************************************************************/
+
+static int
+TIFFWriteDirectoryTagIfdIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+    static const char module[] = "TIFFWriteDirectoryTagIfdIfd8Array";
+    uint64* ma;
+    uint32 mb;
+    uint32* p;
+    uint32* q;
+    int o;
+
+    /* is this just a counting pass? */
+    if (dir==NULL)
+    {
+        (*ndir)++;
+        return(1);
+    }
+
+    /* We always write IFD8 for BigTIFF, no checking needed. */
+    if( tif->tif_flags&TIFF_BIGTIFF )
+        return TIFFWriteDirectoryTagCheckedIfd8Array(tif,ndir,dir,
+                                                     tag,count,value);
+
+    /*
+    ** For classic tiff we want to verify everything is in range for IFD
+    ** and convert to long format.
+    */
+
+    p = _TIFFmalloc(count*sizeof(uint32));
+    if (p==NULL)
+    {
+        TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+        return(0);
+    }
+
+    for (q=p, ma=value, mb=0; mb<count; ma++, mb++, q++)
+    {
+        if (*ma>0xFFFFFFFF)
+        {
+            TIFFErrorExt(tif->tif_clientdata,module,
+                         "Attempt to write value larger than 0xFFFFFFFF in Classic TIFF file.");
+            _TIFFfree(p);
+            return(0);
+        }
+        *q= (uint32)(*ma);
+    }
+
+    o=TIFFWriteDirectoryTagCheckedIfdArray(tif,ndir,dir,tag,count,p);
+    _TIFFfree(p);
+
+    return(o);
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagShortLongLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagShortLongLong8Array";
+       uint64* ma;
+       uint32 mb;
+       uint8 n;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       n=0;
+       for (ma=value, mb=0; mb<count; ma++, mb++)
+       {
+               if ((n==0)&&(*ma>0xFFFF))
+                       n=1;
+               if ((n==1)&&(*ma>0xFFFFFFFF))
+               {
+                       n=2;
+                       break;
+               }
+       }
+       if (n==0)
+       {
+               uint16* p;
+               uint16* q;
+               p=_TIFFmalloc(count*sizeof(uint16));
+               if (p==NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       return(0);
+               }
+               for (ma=value, mb=0, q=p; mb<count; ma++, mb++, q++)
+                       *q=(uint16)(*ma);
+               o=TIFFWriteDirectoryTagCheckedShortArray(tif,ndir,dir,tag,count,p);
+               _TIFFfree(p);
+       }
+       else if (n==1)
+       {
+               uint32* p;
+               uint32* q;
+               p=_TIFFmalloc(count*sizeof(uint32));
+               if (p==NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       return(0);
+               }
+               for (ma=value, mb=0, q=p; mb<count; ma++, mb++, q++)
+                       *q=(uint32)(*ma);
+               o=TIFFWriteDirectoryTagCheckedLongArray(tif,ndir,dir,tag,count,p);
+               _TIFFfree(p);
+       }
+       else
+       {
+               assert(n==2);
+               o=TIFFWriteDirectoryTagCheckedLong8Array(tif,ndir,dir,tag,count,value);
+       }
+       return(o);
+}
+#endif
+static int
+TIFFWriteDirectoryTagColormap(TIFF* tif, uint32* ndir, TIFFDirEntry* dir)
+{
+       static const char module[] = "TIFFWriteDirectoryTagColormap";
+       uint32 m;
+       uint16* n;
+       int o;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=(1<<tif->tif_dir.td_bitspersample);
+       n=_TIFFmalloc(3*m*sizeof(uint16));
+       if (n==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       _TIFFmemcpy(&n[0],tif->tif_dir.td_colormap[0],m*sizeof(uint16));
+       _TIFFmemcpy(&n[m],tif->tif_dir.td_colormap[1],m*sizeof(uint16));
+       _TIFFmemcpy(&n[2*m],tif->tif_dir.td_colormap[2],m*sizeof(uint16));
+       o=TIFFWriteDirectoryTagCheckedShortArray(tif,ndir,dir,TIFFTAG_COLORMAP,3*m,n);
+       _TIFFfree(n);
+       return(o);
+}
+
+static int
+TIFFWriteDirectoryTagTransferfunction(TIFF* tif, uint32* ndir, TIFFDirEntry* dir)
+{
+       static const char module[] = "TIFFWriteDirectoryTagTransferfunction";
+       uint32 m;
+       uint16 n;
+       uint16* o;
+       int p;
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=(1<<tif->tif_dir.td_bitspersample);
+       n=tif->tif_dir.td_samplesperpixel-tif->tif_dir.td_extrasamples;
+       /*
+        * Check if the table can be written as a single column,
+        * or if it must be written as 3 columns.  Note that we
+        * write a 3-column tag if there are 2 samples/pixel and
+        * a single column of data won't suffice--hmm.
+        */
+       if (n>3)
+               n=3;
+       if (n==3)
+       {
+               if (!_TIFFmemcmp(tif->tif_dir.td_transferfunction[0],tif->tif_dir.td_transferfunction[2],m*sizeof(uint16)))
+                       n=2;
+       }
+       if (n==2)
+       {
+               if (!_TIFFmemcmp(tif->tif_dir.td_transferfunction[0],tif->tif_dir.td_transferfunction[1],m*sizeof(uint16)))
+                       n=1;
+       }
+       if (n==0)
+               n=1;
+       o=_TIFFmalloc(n*m*sizeof(uint16));
+       if (o==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       _TIFFmemcpy(&o[0],tif->tif_dir.td_transferfunction[0],m*sizeof(uint16));
+       if (n>1)
+               _TIFFmemcpy(&o[m],tif->tif_dir.td_transferfunction[1],m*sizeof(uint16));
+       if (n>2)
+               _TIFFmemcpy(&o[2*m],tif->tif_dir.td_transferfunction[2],m*sizeof(uint16));
+       p=TIFFWriteDirectoryTagCheckedShortArray(tif,ndir,dir,TIFFTAG_TRANSFERFUNCTION,n*m,o);
+       _TIFFfree(o);
+       return(p);
+}
+
+static int
+TIFFWriteDirectoryTagSubifd(TIFF* tif, uint32* ndir, TIFFDirEntry* dir)
+{
+       static const char module[] = "TIFFWriteDirectoryTagSubifd";
+       uint64 m;
+       int n;
+       if (tif->tif_dir.td_nsubifd==0)
+               return(1);
+       if (dir==NULL)
+       {
+               (*ndir)++;
+               return(1);
+       }
+       m=tif->tif_dataoff;
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               uint32* o;
+               uint64* pa;
+               uint32* pb;
+               uint16 p;
+               o=_TIFFmalloc(tif->tif_dir.td_nsubifd*sizeof(uint32));
+               if (o==NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       return(0);
+               }
+               pa=tif->tif_dir.td_subifd;
+               pb=o;
+               for (p=0; p < tif->tif_dir.td_nsubifd; p++)
+               {
+                        assert(pa != 0);
+                       assert(*pa <= 0xFFFFFFFFUL);
+                       *pb++=(uint32)(*pa++);
+               }
+               n=TIFFWriteDirectoryTagCheckedIfdArray(tif,ndir,dir,TIFFTAG_SUBIFD,tif->tif_dir.td_nsubifd,o);
+               _TIFFfree(o);
+       }
+       else
+               n=TIFFWriteDirectoryTagCheckedIfd8Array(tif,ndir,dir,TIFFTAG_SUBIFD,tif->tif_dir.td_nsubifd,tif->tif_dir.td_subifd);
+       if (!n)
+               return(0);
+       /*
+        * Total hack: if this directory includes a SubIFD
+        * tag then force the next <n> directories to be
+        * written as ``sub directories'' of this one.  This
+        * is used to write things like thumbnails and
+        * image masks that one wants to keep out of the
+        * normal directory linkage access mechanism.
+        */
+       tif->tif_flags|=TIFF_INSUBIFD;
+       tif->tif_nsubifd=tif->tif_dir.td_nsubifd;
+       if (tif->tif_dir.td_nsubifd==1)
+               tif->tif_subifdoff=0;
+       else
+               tif->tif_subifdoff=m;
+       return(1);
+}
+
+static int
+TIFFWriteDirectoryTagCheckedAscii(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, char* value)
+{
+       assert(sizeof(char)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_ASCII,count,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedUndefinedArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value)
+{
+       assert(sizeof(uint8)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_UNDEFINED,count,count,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedByte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint8 value)
+{
+       assert(sizeof(uint8)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_BYTE,1,1,&value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedByteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint8* value)
+{
+       assert(sizeof(uint8)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_BYTE,count,count,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedSbyte(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int8 value)
+{
+       assert(sizeof(int8)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SBYTE,1,1,&value));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedSbyteArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int8* value)
+{
+       assert(sizeof(int8)==1);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SBYTE,count,count,value));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedShort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 value)
+{
+       uint16 m;
+       assert(sizeof(uint16)==2);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabShort(&m);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SHORT,1,2,&m));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedShortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint16* value)
+{
+       assert(count<0x80000000);
+       assert(sizeof(uint16)==2);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfShort(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SHORT,count,count*2,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedSshort(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int16 value)
+{
+       int16 m;
+       assert(sizeof(int16)==2);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabShort((uint16*)(&m));
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SSHORT,1,2,&m));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedSshortArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int16* value)
+{
+       assert(count<0x80000000);
+       assert(sizeof(int16)==2);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfShort((uint16*)value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SSHORT,count,count*2,value));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedLong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 value)
+{
+       uint32 m;
+       assert(sizeof(uint32)==4);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong(&m);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_LONG,1,4,&m));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedLongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value)
+{
+       assert(count<0x40000000);
+       assert(sizeof(uint32)==4);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_LONG,count,count*4,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedSlong(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int32 value)
+{
+       int32 m;
+       assert(sizeof(int32)==4);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong((uint32*)(&m));
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SLONG,1,4,&m));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedSlongArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int32* value)
+{
+       assert(count<0x40000000);
+       assert(sizeof(int32)==4);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong((uint32*)value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SLONG,count,count*4,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedLong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint64 value)
+{
+       uint64 m;
+       assert(sizeof(uint64)==8);
+       assert(tif->tif_flags&TIFF_BIGTIFF);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong8(&m);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_LONG8,1,8,&m));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedLong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
+{
+       assert(count<0x20000000);
+       assert(sizeof(uint64)==8);
+       assert(tif->tif_flags&TIFF_BIGTIFF);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong8(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_LONG8,count,count*8,value));
+}
+
+#ifdef notdef
+static int
+TIFFWriteDirectoryTagCheckedSlong8(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, int64 value)
+{
+       int64 m;
+       assert(sizeof(int64)==8);
+       assert(tif->tif_flags&TIFF_BIGTIFF);
+       m=value;
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabLong8((uint64*)(&m));
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SLONG8,1,8,&m));
+}
+#endif
+
+static int
+TIFFWriteDirectoryTagCheckedSlong8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, int64* value)
+{
+       assert(count<0x20000000);
+       assert(sizeof(int64)==8);
+       assert(tif->tif_flags&TIFF_BIGTIFF);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong8((uint64*)value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SLONG8,count,count*8,value));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedRational(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
+{
+       uint32 m[2];
+       assert(value>=0.0);
+       assert(sizeof(uint32)==4);
+       if (value<=0.0)
+       {
+               m[0]=0;
+               m[1]=1;
+       }
+       else if (value==(double)(uint32)value)
+       {
+               m[0]=(uint32)value;
+               m[1]=1;
+       }
+       else if (value<1.0)
+       {
+               m[0]=(uint32)(value*0xFFFFFFFF);
+               m[1]=0xFFFFFFFF;
+       }
+       else
+       {
+               m[0]=0xFFFFFFFF;
+               m[1]=(uint32)(0xFFFFFFFF/value);
+       }
+       if (tif->tif_flags&TIFF_SWAB)
+       {
+               TIFFSwabLong(&m[0]);
+               TIFFSwabLong(&m[1]);
+       }
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_RATIONAL,1,8,&m[0]));
+}
+
+static int
+TIFFWriteDirectoryTagCheckedRationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagCheckedRationalArray";
+       uint32* m;
+       float* na;
+       uint32* nb;
+       uint32 nc;
+       int o;
+       assert(sizeof(uint32)==4);
+       m=_TIFFmalloc(count*2*sizeof(uint32));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=value, nb=m, nc=0; nc<count; na++, nb+=2, nc++)
+       {
+               if (*na<=0.0)
+               {
+                       nb[0]=0;
+                       nb[1]=1;
+               }
+               else if (*na==(float)(uint32)(*na))
+               {
+                       nb[0]=(uint32)(*na);
+                       nb[1]=1;
+               }
+               else if (*na<1.0)
+               {
+                       nb[0]=(uint32)((*na)*0xFFFFFFFF);
+                       nb[1]=0xFFFFFFFF;
+               }
+               else
+               {
+                       nb[0]=0xFFFFFFFF;
+                       nb[1]=(uint32)(0xFFFFFFFF/(*na));
+               }
+       }
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong(m,count*2);
+       o=TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_RATIONAL,count,count*8,&m[0]);
+       _TIFFfree(m);
+       return(o);
+}
+
+static int
+TIFFWriteDirectoryTagCheckedSrationalArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
+{
+       static const char module[] = "TIFFWriteDirectoryTagCheckedSrationalArray";
+       int32* m;
+       float* na;
+       int32* nb;
+       uint32 nc;
+       int o;
+       assert(sizeof(int32)==4);
+       m=_TIFFmalloc(count*2*sizeof(int32));
+       if (m==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       for (na=value, nb=m, nc=0; nc<count; na++, nb+=2, nc++)
+       {
+               if (*na<0.0)
+               {
+                       if (*na==(int32)(*na))
+                       {
+                               nb[0]=(int32)(*na);
+                               nb[1]=1;
+                       }
+                       else if (*na>-1.0)
+                       {
+                               nb[0]=-(int32)((-*na)*0x7FFFFFFF);
+                               nb[1]=0x7FFFFFFF;
+                       }
+                       else
+                       {
+                               nb[0]=-0x7FFFFFFF;
+                               nb[1]=(int32)(0x7FFFFFFF/(-*na));
+                       }
+               }
+               else
+               {
+                       if (*na==(int32)(*na))
+                       {
+                               nb[0]=(int32)(*na);
+                               nb[1]=1;
+                       }
+                       else if (*na<1.0)
+                       {
+                               nb[0]=(int32)((*na)*0x7FFFFFFF);
+                               nb[1]=0x7FFFFFFF;
+                       }
+                       else
+                       {
+                               nb[0]=0x7FFFFFFF;
+                               nb[1]=(int32)(0x7FFFFFFF/(*na));
+                       }
                }
        }
-       TIFFGetField(tif, tag, &v);
-       for (i = 0; i < samples; i++)
-               w[i] = v;
-       
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_type = (uint16) TIFF_SHORT;
-       dir->tdir_count = samples;
-       status = TIFFWriteShortArray(tif, dir, w);
-       if (w != buf)
-               _TIFFfree((char*) w);
-       return (status);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong((uint32*)m,count*2);
+       o=TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_SRATIONAL,count,count*8,&m[0]);
+       _TIFFfree(m);
+       return(o);
 }
 
-/*
- * Setup a directory entry that references a samples/pixel array of ``type''
- * values and (potentially) write the associated indirect values.  The source
- * data from TIFFGetField() for the specified tag must be returned as double.
- */
+#ifdef notdef
 static int
-TIFFWritePerSampleAnys(TIFF* tif,
-    TIFFDataType type, ttag_t tag, TIFFDirEntry* dir)
+TIFFWriteDirectoryTagCheckedFloat(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, float value)
 {
-       double buf[10], v;
-       double* w = buf;
-       uint16 i, samples = tif->tif_dir.td_samplesperpixel;
-       int status;
-
-       if (samples > NITEMS(buf)) {
-               w = (double*) _TIFFmalloc(samples * sizeof (double));
-               if (w == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "No space to write per-sample values");
-                       return (0);
-               }
-       }
-       TIFFGetField(tif, tag, &v);
-       for (i = 0; i < samples; i++)
-               w[i] = v;
-       status = TIFFWriteAnyArray(tif, type, tag, dir, samples, w);
-       if (w != buf)
-               _TIFFfree(w);
-       return (status);
+       float m;
+       assert(sizeof(float)==4);
+       m=value;
+       TIFFCvtNativeToIEEEFloat(tif,1,&m);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabFloat(&m);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_FLOAT,1,4,&m));
 }
-#undef NITEMS
+#endif
 
-/*
- * Setup a pair of shorts that are returned by
- * value, rather than as a reference to an array.
- */
 static int
-TIFFSetupShortPair(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
+TIFFWriteDirectoryTagCheckedFloatArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, float* value)
 {
-       uint16 v[2];
-
-       TIFFGetField(tif, tag, &v[0], &v[1]);
-
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_type = (uint16) TIFF_SHORT;
-       dir->tdir_count = 2;
-       return (TIFFWriteShortArray(tif, dir, v));
+       assert(count<0x40000000);
+       assert(sizeof(float)==4);
+       TIFFCvtNativeToIEEEFloat(tif,count,&value);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfFloat(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_FLOAT,count,count*4,value));
 }
 
-/*
- * Setup a directory entry for an NxM table of shorts,
- * where M is known to be 2**bitspersample, and write
- * the associated indirect data.
- */
+#ifdef notdef
 static int
-TIFFWriteShortTable(TIFF* tif,
-    ttag_t tag, TIFFDirEntry* dir, uint32 n, uint16** table)
+TIFFWriteDirectoryTagCheckedDouble(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, double value)
 {
-       uint32 i, off;
-
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_type = (short) TIFF_SHORT;
-       /* XXX -- yech, fool TIFFWriteData */
-       dir->tdir_count = (uint32) (1L<<tif->tif_dir.td_bitspersample);
-       off = tif->tif_dataoff;
-       for (i = 0; i < n; i++)
-               if (!TIFFWriteData(tif, dir, (char *)table[i]))
-                       return (0);
-       dir->tdir_count *= n;
-       dir->tdir_offset = off;
-       return (1);
+       double m;
+       assert(sizeof(double)==8);
+       m=value;
+       TIFFCvtNativeToIEEEDouble(tif,1,&m);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabDouble(&m);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_DOUBLE,1,8,&m));
 }
+#endif
 
-/*
- * Write/copy data associated with an ASCII or opaque tag value.
- */
 static int
-TIFFWriteByteArray(TIFF* tif, TIFFDirEntry* dir, char* cp)
+TIFFWriteDirectoryTagCheckedDoubleArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, double* value)
 {
-       if (dir->tdir_count > 4) {
-               if (!TIFFWriteData(tif, dir, cp))
-                       return (0);
-       } else
-               _TIFFmemcpy(&dir->tdir_offset, cp, dir->tdir_count);
-       return (1);
+       assert(count<0x20000000);
+       assert(sizeof(double)==8);
+       TIFFCvtNativeToIEEEDouble(tif,count,&value);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfDouble(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_DOUBLE,count,count*8,value));
 }
 
-/*
- * Setup a directory entry of an array of SHORT
- * or SSHORT and write the associated indirect values.
- */
 static int
-TIFFWriteShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
-       if (dir->tdir_count <= 2) {
-               if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
-                       dir->tdir_offset = (uint32) ((long) v[0] << 16);
-                       if (dir->tdir_count == 2)
-                               dir->tdir_offset |= v[1] & 0xffff;
-               } else {
-                       dir->tdir_offset = v[0] & 0xffff;
-                       if (dir->tdir_count == 2)
-                               dir->tdir_offset |= (long) v[1] << 16;
-               }
-               return (1);
-       } else
-               return (TIFFWriteData(tif, dir, (char*) v));
+TIFFWriteDirectoryTagCheckedIfdArray(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint32* value)
+{
+       assert(count<0x40000000);
+       assert(sizeof(uint32)==4);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_IFD,count,count*4,value));
 }
 
-/*
- * Setup a directory entry of an array of LONG
- * or SLONG and write the associated indirect values.
- */
 static int
-TIFFWriteLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
+TIFFWriteDirectoryTagCheckedIfd8Array(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint32 count, uint64* value)
 {
-       if (dir->tdir_count == 1) {
-               dir->tdir_offset = v[0];
-               return (1);
-       } else
-               return (TIFFWriteData(tif, dir, (char*) v));
+       assert(count<0x20000000);
+       assert(sizeof(uint64)==8);
+       assert(tif->tif_flags&TIFF_BIGTIFF);
+       if (tif->tif_flags&TIFF_SWAB)
+               TIFFSwabArrayOfLong8(value,count);
+       return(TIFFWriteDirectoryTagData(tif,ndir,dir,tag,TIFF_IFD8,count,count*8,value));
 }
 
-/*
- * Setup a directory entry of an array of RATIONAL
- * or SRATIONAL and write the associated indirect values.
- */
 static int
-TIFFWriteRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
+TIFFWriteDirectoryTagData(TIFF* tif, uint32* ndir, TIFFDirEntry* dir, uint16 tag, uint16 datatype, uint32 count, uint32 datalength, void* data)
 {
-       uint32 i;
-       uint32* t;
-       int status;
-
-       t = (uint32*) _TIFFmalloc(2 * dir->tdir_count * sizeof (uint32));
-       if (t == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "No space to write RATIONAL array");
-               return (0);
+       static const char module[] = "TIFFWriteDirectoryTagData";
+       uint32 m;
+       m=0;
+       while (m<(*ndir))
+       {
+               assert(dir[m].tdir_tag!=tag);
+               if (dir[m].tdir_tag>tag)
+                       break;
+               m++;
+       }
+       if (m<(*ndir))
+       {
+               uint32 n;
+               for (n=*ndir; n>m; n--)
+                       dir[n]=dir[n-1];
        }
-       for (i = 0; i < dir->tdir_count; i++) {
-               float fv = v[i];
-               int sign = 1;
-               uint32 den;
-
-               if (fv < 0) {
-                       if (dir->tdir_type == TIFF_RATIONAL) {
-                               TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-       "\"%s\": Information lost writing value (%g) as (unsigned) RATIONAL",
-                               _TIFFFieldWithTag(tif,dir->tdir_tag)->field_name,
-                               fv);
-                               fv = 0;
-                       } else
-                               fv = -fv, sign = -1;
+       dir[m].tdir_tag=tag;
+       dir[m].tdir_type=datatype;
+       dir[m].tdir_count=count;
+       dir[m].tdir_offset.toff_long8 = 0;
+       if (datalength<=((tif->tif_flags&TIFF_BIGTIFF)?0x8U:0x4U))
+               _TIFFmemcpy(&dir[m].tdir_offset,data,datalength);
+       else
+       {
+               uint64 na,nb;
+               na=tif->tif_dataoff;
+               nb=na+datalength;
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+                       nb=(uint32)nb;
+               if ((nb<na)||(nb<datalength))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Maximum TIFF file size exceeded");
+                       return(0);
+               }
+               if (!SeekOK(tif,na))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"IO error writing tag data");
+                       return(0);
+               }
+               assert(datalength<0x80000000UL);
+               if (!WriteOK(tif,data,(tmsize_t)datalength))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"IO error writing tag data");
+                       return(0);
+               }
+               tif->tif_dataoff=nb;
+               if (tif->tif_dataoff&1)
+                       tif->tif_dataoff++;
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       uint32 o;
+                       o=(uint32)na;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong(&o);
+                       _TIFFmemcpy(&dir[m].tdir_offset,&o,4);
                }
-               den = 1L;
-               if (fv > 0) {
-                       while (fv < 1L<<(31-3) && den < 1L<<(31-3))
-                               fv *= 1<<3, den *= 1L<<3;
+               else
+               {
+                       dir[m].tdir_offset.toff_long8 = na;
+                       if (tif->tif_flags&TIFF_SWAB)
+                               TIFFSwabLong8(&dir[m].tdir_offset.toff_long8);
                }
-               t[2*i+0] = (uint32) (sign * (fv + 0.5));
-               t[2*i+1] = den;
        }
-       status = TIFFWriteData(tif, dir, (char *)t);
-       _TIFFfree((char*) t);
-       return (status);
-}
-
-static int
-TIFFWriteFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-       TIFFCvtNativeToIEEEFloat(tif, dir->tdir_count, v);
-       if (dir->tdir_count == 1) {
-               dir->tdir_offset = *(uint32*) &v[0];
-               return (1);
-       } else
-               return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-static int
-TIFFWriteDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
-       TIFFCvtNativeToIEEEDouble(tif, dir->tdir_count, v);
-       return (TIFFWriteData(tif, dir, (char*) v));
+       (*ndir)++;
+       return(1);
 }
 
 /*
- * Write an array of ``type'' values for a specified tag (i.e. this is a tag
- * which is allowed to have different types, e.g. SMaxSampleType).
- * Internally the data values are represented as double since a double can
- * hold any of the TIFF tag types (yes, this should really be an abstract
- * type tany_t for portability).  The data is converted into the specified
- * type in a temporary buffer and then handed off to the appropriate array
- * writer.
+ * Link the current directory into the directory chain for the file.
  */
 static int
-TIFFWriteAnyArray(TIFF* tif,
-    TIFFDataType type, ttag_t tag, TIFFDirEntry* dir, uint32 n, double* v)
+TIFFLinkDirectory(TIFF* tif)
 {
-       char buf[10 * sizeof(double)];
-       char* w = buf;
-       int i, status = 0;
-
-       if (n * TIFFDataWidth(type) > sizeof buf) {
-               w = (char*) _TIFFmalloc(n * TIFFDataWidth(type));
-               if (w == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "No space to write array");
-                       return (0);
-               }
-       }
+       static const char module[] = "TIFFLinkDirectory";
 
-       dir->tdir_tag = (uint16) tag;
-       dir->tdir_type = (uint16) type;
-       dir->tdir_count = n;
+       tif->tif_diroff = (TIFFSeekFile(tif,0,SEEK_END)+1) &~ 1;
 
-       switch (type) {
-       case TIFF_BYTE:
-               { 
-                       uint8* bp = (uint8*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (uint8) v[i];
-                       if (!TIFFWriteByteArray(tif, dir, (char*) bp))
-                               goto out;
-               }
-               break;
-       case TIFF_SBYTE:
-               { 
-                       int8* bp = (int8*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (int8) v[i];
-                       if (!TIFFWriteByteArray(tif, dir, (char*) bp))
-                               goto out;
+       /*
+        * Handle SubIFDs
+        */
+       if (tif->tif_flags & TIFF_INSUBIFD)
+       {
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       uint32 m;
+                       m = (uint32)tif->tif_diroff;
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong(&m);
+                       (void) TIFFSeekFile(tif, tif->tif_subifdoff, SEEK_SET);
+                       if (!WriteOK(tif, &m, 4)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                    "Error writing SubIFD directory link");
+                               return (0);
+                       }
+                       /*
+                        * Advance to the next SubIFD or, if this is
+                        * the last one configured, revert back to the
+                        * normal directory linkage.
+                        */
+                       if (--tif->tif_nsubifd)
+                               tif->tif_subifdoff += 4;
+                       else
+                               tif->tif_flags &= ~TIFF_INSUBIFD;
+                       return (1);
                }
-               break;
-       case TIFF_SHORT:
+               else
                {
-                       uint16* bp = (uint16*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (uint16) v[i];
-                       if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
-                               goto out;
+                       uint64 m;
+                       m = tif->tif_diroff;
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&m);
+                       (void) TIFFSeekFile(tif, tif->tif_subifdoff, SEEK_SET);
+                       if (!WriteOK(tif, &m, 8)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                    "Error writing SubIFD directory link");
+                               return (0);
+                       }
+                       /*
+                        * Advance to the next SubIFD or, if this is
+                        * the last one configured, revert back to the
+                        * normal directory linkage.
+                        */
+                       if (--tif->tif_nsubifd)
+                               tif->tif_subifdoff += 8;
+                       else
+                               tif->tif_flags &= ~TIFF_INSUBIFD;
+                       return (1);
                }
-               break;
-       case TIFF_SSHORT:
-               { 
-                       int16* bp = (int16*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (int16) v[i];
-                       if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
-                               goto out;
+       }
+
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+       {
+               uint32 m;
+               uint32 nextdir;
+               m = (uint32)(tif->tif_diroff);
+               if (tif->tif_flags & TIFF_SWAB)
+                       TIFFSwabLong(&m);
+               if (tif->tif_header.classic.tiff_diroff == 0) {
+                       /*
+                        * First directory, overwrite offset in header.
+                        */
+                       tif->tif_header.classic.tiff_diroff = (uint32) tif->tif_diroff;
+                       (void) TIFFSeekFile(tif,4, SEEK_SET);
+                       if (!WriteOK(tif, &m, 4)) {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                                            "Error writing TIFF header");
+                               return (0);
+                       }
+                       return (1);
                }
-               break;
-       case TIFF_LONG:
-               {
-                       uint32* bp = (uint32*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (uint32) v[i];
-                       if (!TIFFWriteLongArray(tif, dir, bp))
-                               goto out;
+               /*
+                * Not the first directory, search to the last and append.
+                */
+               nextdir = tif->tif_header.classic.tiff_diroff;
+               while(1) {
+                       uint16 dircount;
+                       uint32 nextnextdir;
+
+                       if (!SeekOK(tif, nextdir) ||
+                           !ReadOK(tif, &dircount, 2)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory count");
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabShort(&dircount);
+                       (void) TIFFSeekFile(tif,
+                           nextdir+2+dircount*12, SEEK_SET);
+                       if (!ReadOK(tif, &nextnextdir, 4)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory link");
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong(&nextnextdir);
+                       if (nextnextdir==0)
+                       {
+                               (void) TIFFSeekFile(tif,
+                                   nextdir+2+dircount*12, SEEK_SET);
+                               if (!WriteOK(tif, &m, 4)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error writing directory link");
+                                       return (0);
+                               }
+                               break;
+                       }
+                       nextdir=nextnextdir;
                }
-               break;
-       case TIFF_SLONG:
-               {
-                       int32* bp = (int32*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (int32) v[i];
-                       if (!TIFFWriteLongArray(tif, dir, (uint32*) bp))
-                               goto out;
+       }
+       else
+       {
+               uint64 m;
+               uint64 nextdir;
+               m = tif->tif_diroff;
+               if (tif->tif_flags & TIFF_SWAB)
+                       TIFFSwabLong8(&m);
+               if (tif->tif_header.big.tiff_diroff == 0) {
+                       /*
+                        * First directory, overwrite offset in header.
+                        */
+                       tif->tif_header.big.tiff_diroff = tif->tif_diroff;
+                       (void) TIFFSeekFile(tif,8, SEEK_SET);
+                       if (!WriteOK(tif, &m, 8)) {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                                            "Error writing TIFF header");
+                               return (0);
+                       }
+                       return (1);
                }
-               break;
-       case TIFF_FLOAT:
-               { 
-                       float* bp = (float*) w;
-                       for (i = 0; i < (int) n; i++)
-                               bp[i] = (float) v[i];
-                       if (!TIFFWriteFloatArray(tif, dir, bp))
-                               goto out;
+               /*
+                * Not the first directory, search to the last and append.
+                */
+               nextdir = tif->tif_header.big.tiff_diroff;
+               while(1) {
+                       uint64 dircount64;
+                       uint16 dircount;
+                       uint64 nextnextdir;
+
+                       if (!SeekOK(tif, nextdir) ||
+                           !ReadOK(tif, &dircount64, 8)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory count");
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&dircount64);
+                       if (dircount64>0xFFFF)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Sanity check on tag count failed, likely corrupt TIFF");
+                               return (0);
+                       }
+                       dircount=(uint16)dircount64;
+                       (void) TIFFSeekFile(tif,
+                           nextdir+8+dircount*20, SEEK_SET);
+                       if (!ReadOK(tif, &nextnextdir, 8)) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error fetching directory link");
+                               return (0);
+                       }
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabLong8(&nextnextdir);
+                       if (nextnextdir==0)
+                       {
+                               (void) TIFFSeekFile(tif,
+                                   nextdir+8+dircount*20, SEEK_SET);
+                               if (!WriteOK(tif, &m, 8)) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error writing directory link");
+                                       return (0);
+                               }
+                               break;
+                       }
+                       nextdir=nextnextdir;
                }
-               break;
-       case TIFF_DOUBLE:
-               return (TIFFWriteDoubleArray(tif, dir, v));
-       default:
-               /* TIFF_NOTYPE */
-               /* TIFF_ASCII */
-               /* TIFF_UNDEFINED */
-               /* TIFF_RATIONAL */
-               /* TIFF_SRATIONAL */
-               goto out;
        }
-       status = 1;
- out:
-       if (w != buf)
-               _TIFFfree(w);
-       return (status);
+       return (1);
 }
 
-static int
-TIFFWriteTransferFunction(TIFF* tif, TIFFDirEntry* dir)
+/************************************************************************/
+/*                          TIFFRewriteField()                          */
+/*                                                                      */
+/*      Rewrite a field in the directory on disk without regard to      */
+/*      updating the TIFF directory structure in memory.  Currently     */
+/*      only supported for field that already exist in the on-disk      */
+/*      directory.  Mainly used for updating stripoffset /              */
+/*      stripbytecount values after the directory is already on         */
+/*      disk.                                                           */
+/*                                                                      */
+/*      Returns zero on failure, and one on success.                    */
+/************************************************************************/
+
+int
+_TIFFRewriteField(TIFF* tif, uint16 tag, TIFFDataType in_datatype, 
+                  tmsize_t count, void* data)
 {
-       TIFFDirectory* td = &tif->tif_dir;
-       tsize_t n = (1L<<td->td_bitspersample) * sizeof (uint16);
-       uint16** tf = td->td_transferfunction;
-       int ncols;
+    static const char module[] = "TIFFResetField";
+    /* const TIFFField* fip = NULL; */
+    uint16 dircount;
+    tmsize_t dirsize;
+    uint8 direntry_raw[20];
+    uint16 entry_tag = 0;
+    uint16 entry_type = 0;
+    uint64 entry_count = 0;
+    uint64 entry_offset = 0;
+    int    value_in_entry = 0;
+    uint64 read_offset;
+    uint8 *buf_to_write = NULL;
+    TIFFDataType datatype;
+
+/* -------------------------------------------------------------------- */
+/*      Find field definition.                                          */
+/* -------------------------------------------------------------------- */
+    /*fip =*/ TIFFFindField(tif, tag, TIFF_ANY);
+
+/* -------------------------------------------------------------------- */
+/*      Do some checking this is a straight forward case.               */
+/* -------------------------------------------------------------------- */
+    if( isMapped(tif) )
+    {
+        TIFFErrorExt( tif->tif_clientdata, module, 
+                      "Memory mapped files not currently supported for this operation." );
+        return 0;
+    }
 
-       /*
-        * Check if the table can be written as a single column,
-        * or if it must be written as 3 columns.  Note that we
-        * write a 3-column tag if there are 2 samples/pixel and
-        * a single column of data won't suffice--hmm.
-        */
-       switch (td->td_samplesperpixel - td->td_extrasamples) {
-       default:        if (_TIFFmemcmp(tf[0], tf[2], n)) { ncols = 3; break; }
-       case 2:         if (_TIFFmemcmp(tf[0], tf[1], n)) { ncols = 3; break; }
-       case 1: case 0: ncols = 1;
-       }
-       return (TIFFWriteShortTable(tif,
-           TIFFTAG_TRANSFERFUNCTION, dir, ncols, tf));
-}
+    if( tif->tif_diroff == 0 )
+    {
+        TIFFErrorExt( tif->tif_clientdata, module, 
+                      "Attempt to reset field on directory not already on disk." );
+        return 0;
+    }
 
-static int
-TIFFWriteInkNames(TIFF* tif, TIFFDirEntry* dir)
-{
-       TIFFDirectory* td = &tif->tif_dir;
+/* -------------------------------------------------------------------- */
+/*      Read the directory entry count.                                 */
+/* -------------------------------------------------------------------- */
+    if (!SeekOK(tif, tif->tif_diroff)) {
+        TIFFErrorExt(tif->tif_clientdata, module,
+                     "%s: Seek error accessing TIFF directory",
+                     tif->tif_name);
+        return 0;
+    }
 
-       dir->tdir_tag = TIFFTAG_INKNAMES;
-       dir->tdir_type = (short) TIFF_ASCII;
-       dir->tdir_count = td->td_inknameslen;
-       return (TIFFWriteByteArray(tif, dir, td->td_inknames));
-}
+    read_offset = tif->tif_diroff;
 
-/*
- * Write a contiguous directory item.
- */
-static int
-TIFFWriteData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
-       tsize_t cc;
+    if (!(tif->tif_flags&TIFF_BIGTIFF))
+    {
+        if (!ReadOK(tif, &dircount, sizeof (uint16))) {
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "%s: Can not read TIFF directory count",
+                         tif->tif_name);
+            return 0;
+        }
+        if (tif->tif_flags & TIFF_SWAB)
+            TIFFSwabShort(&dircount);
+        dirsize = 12;
+        read_offset += 2;
+    } else {
+        uint64 dircount64;
+        if (!ReadOK(tif, &dircount64, sizeof (uint64))) {
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "%s: Can not read TIFF directory count",
+                         tif->tif_name);
+            return 0;
+        }
+        if (tif->tif_flags & TIFF_SWAB)
+            TIFFSwabLong8(&dircount64);
+        dircount = (uint16)dircount64;
+        dirsize = 20;
+        read_offset += 8;
+    }
 
-       if (tif->tif_flags & TIFF_SWAB) {
-               switch (dir->tdir_type) {
-               case TIFF_SHORT:
-               case TIFF_SSHORT:
-                       TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
-                       break;
-               case TIFF_LONG:
-               case TIFF_SLONG:
-               case TIFF_FLOAT:
-                       TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
-                       break;
-               case TIFF_RATIONAL:
-               case TIFF_SRATIONAL:
-                       TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
-                       break;
-               case TIFF_DOUBLE:
-                       TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
-                       break;
-               }
-       }
-       dir->tdir_offset = tif->tif_dataoff;
-       cc = dir->tdir_count * TIFFDataWidth((TIFFDataType) dir->tdir_type);
-       if (SeekOK(tif, dir->tdir_offset) &&
-           WriteOK(tif, cp, cc)) {
-               tif->tif_dataoff += (cc + 1) & ~1;
-               return (1);
-       }
-       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing data for field \"%s\"",
-           _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
-       return (0);
-}
+/* -------------------------------------------------------------------- */
+/*      Read through directory to find target tag.                      */
+/* -------------------------------------------------------------------- */
+    while( dircount > 0 )
+    {
+        if (!ReadOK(tif, direntry_raw, dirsize)) {
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "%s: Can not read TIFF directory entry.",
+                         tif->tif_name);
+            return 0;
+        }
 
-/*
- * Similar to TIFFWriteDirectory(), but if the directory has already
- * been written once, it is relocated to the end of the file, in case it
- * has changed in size.  Note that this will result in the loss of the 
- * previously used directory space. 
- */ 
+        memcpy( &entry_tag, direntry_raw + 0, sizeof(uint16) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabShort( &entry_tag );
 
-int 
-TIFFRewriteDirectory( TIFF *tif )
-{
-    static const char module[] = "TIFFRewriteDirectory";
+        if( entry_tag == tag )
+            break;
 
-    /* We don't need to do anything special if it hasn't been written. */
-    if( tif->tif_diroff == 0 )
-        return TIFFWriteDirectory( tif );
+        read_offset += dirsize;
+    }
 
-    /*
-    ** Find and zero the pointer to this directory, so that TIFFLinkDirectory
-    ** will cause it to be added after this directories current pre-link.
-    */
-    
-    /* Is it the first directory in the file? */
-    if (tif->tif_header.tiff_diroff == tif->tif_diroff) 
+    if( entry_tag != tag )
+    {
+        TIFFErrorExt(tif->tif_clientdata, module,
+                     "%s: Could not find tag %d.",
+                     tif->tif_name, tag );
+        return 0;
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Extract the type, count and offset for this entry.              */
+/* -------------------------------------------------------------------- */
+    memcpy( &entry_type, direntry_raw + 2, sizeof(uint16) );
+    if (tif->tif_flags&TIFF_SWAB)
+        TIFFSwabShort( &entry_type );
+
+    if (!(tif->tif_flags&TIFF_BIGTIFF))
+    {
+        uint32 value;
+        
+        memcpy( &value, direntry_raw + 4, sizeof(uint32) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong( &value );
+        entry_count = value;
+
+        memcpy( &value, direntry_raw + 8, sizeof(uint32) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong( &value );
+        entry_offset = value;
+    }
+    else
+    {
+        memcpy( &entry_count, direntry_raw + 4, sizeof(uint64) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong8( &entry_count );
+
+        memcpy( &entry_offset, direntry_raw + 12, sizeof(uint64) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong8( &entry_offset );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      What data type do we want to write this as?                     */
+/* -------------------------------------------------------------------- */
+    if( TIFFDataWidth(in_datatype) == 8 && !(tif->tif_flags&TIFF_BIGTIFF) )
+    {
+        if( in_datatype == TIFF_LONG8 )
+            datatype = TIFF_LONG;
+        else if( in_datatype == TIFF_SLONG8 )
+            datatype = TIFF_SLONG;
+        else if( in_datatype == TIFF_IFD8 )
+            datatype = TIFF_IFD;
+        else
+            datatype = in_datatype;
+    }
+    else 
+        datatype = in_datatype;
+
+/* -------------------------------------------------------------------- */
+/*      Prepare buffer of actual data to write.  This includes          */
+/*      swabbing as needed.                                             */
+/* -------------------------------------------------------------------- */
+    buf_to_write =
+           (uint8 *)_TIFFCheckMalloc(tif, count, TIFFDataWidth(datatype),
+                                     "for field buffer.");
+    if (!buf_to_write)
+        return 0;
+
+    if( datatype == in_datatype )
+        memcpy( buf_to_write, data, count * TIFFDataWidth(datatype) );
+    else if( datatype == TIFF_SLONG && in_datatype == TIFF_SLONG8 )
     {
-        tif->tif_header.tiff_diroff = 0;
-        tif->tif_diroff = 0;
+       tmsize_t i;
 
-        TIFFSeekFile(tif, (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
-                    SEEK_SET);
-        if (!WriteOK(tif, &(tif->tif_header.tiff_diroff), 
-                     sizeof (tif->tif_diroff))) 
+        for( i = 0; i < count; i++ )
         {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error updating TIFF header");
-            return (0);
+            ((int32 *) buf_to_write)[i] = 
+                (int32) ((int64 *) data)[i];
+            if( (int64) ((int32 *) buf_to_write)[i] != ((int64 *) data)[i] )
+            {
+                _TIFFfree( buf_to_write );
+                TIFFErrorExt( tif->tif_clientdata, module, 
+                              "Value exceeds 32bit range of output type." );
+                return 0;
+            }
+        }
+    }
+    else if( (datatype == TIFF_LONG && in_datatype == TIFF_LONG8)
+             || (datatype == TIFF_IFD && in_datatype == TIFF_IFD8) )
+    {
+       tmsize_t i;
+
+        for( i = 0; i < count; i++ )
+        {
+            ((uint32 *) buf_to_write)[i] = 
+                (uint32) ((uint64 *) data)[i];
+            if( (uint64) ((uint32 *) buf_to_write)[i] != ((uint64 *) data)[i] )
+            {
+                _TIFFfree( buf_to_write );
+                TIFFErrorExt( tif->tif_clientdata, module, 
+                              "Value exceeds 32bit range of output type." );
+                return 0;
+            }
+        }
+    }
+
+    if( TIFFDataWidth(datatype) > 1 && (tif->tif_flags&TIFF_SWAB) )
+    {
+        if( TIFFDataWidth(datatype) == 2 )
+            TIFFSwabArrayOfShort( (uint16 *) buf_to_write, count );
+        else if( TIFFDataWidth(datatype) == 4 )
+            TIFFSwabArrayOfLong( (uint32 *) buf_to_write, count );
+        else if( TIFFDataWidth(datatype) == 8 )
+            TIFFSwabArrayOfLong8( (uint64 *) buf_to_write, count );
+    }
+
+/* -------------------------------------------------------------------- */
+/*      Is this a value that fits into the directory entry?             */
+/* -------------------------------------------------------------------- */
+    if (!(tif->tif_flags&TIFF_BIGTIFF))
+    {
+        if( TIFFDataWidth(datatype) * count <= 4 )
+        {
+            entry_offset = read_offset + 8;
+            value_in_entry = 1;
         }
     }
     else
     {
-        toff_t  nextdir, off;
+        if( TIFFDataWidth(datatype) * count <= 8 )
+        {
+            entry_offset = read_offset + 12;
+            value_in_entry = 1;
+        }
+    }
 
-       nextdir = tif->tif_header.tiff_diroff;
-       do {
-               uint16 dircount;
+/* -------------------------------------------------------------------- */
+/*      If the tag type, and count match, then we just write it out     */
+/*      over the old values without altering the directory entry at     */
+/*      all.                                                            */
+/* -------------------------------------------------------------------- */
+    if( entry_count == (uint64)count && entry_type == (uint16) datatype )
+    {
+        if (!SeekOK(tif, entry_offset)) {
+            _TIFFfree( buf_to_write );
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "%s: Seek error accessing TIFF directory",
+                         tif->tif_name);
+            return 0;
+        }
+        if (!WriteOK(tif, buf_to_write, count*TIFFDataWidth(datatype))) {
+            _TIFFfree( buf_to_write );
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "Error writing directory link");
+            return (0);
+        }
 
-               if (!SeekOK(tif, nextdir) ||
-                   !ReadOK(tif, &dircount, sizeof (dircount))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count");
-                       return (0);
-               }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               (void) TIFFSeekFile(tif,
-                   dircount * sizeof (TIFFDirEntry), SEEK_CUR);
-               if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link");
-                       return (0);
-               }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabLong(&nextdir);
-       } while (nextdir != tif->tif_diroff && nextdir != 0);
-        off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
-        (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
-        tif->tif_diroff = 0;
-       if (!WriteOK(tif, &(tif->tif_diroff), sizeof (nextdir))) {
-               TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-               return (0);
-       }
+        _TIFFfree( buf_to_write );
+        return 1;
     }
 
-    /*
-    ** Now use TIFFWriteDirectory() normally.
-    */
+/* -------------------------------------------------------------------- */
+/*      Otherwise, we write the new tag data at the end of the file.    */
+/* -------------------------------------------------------------------- */
+    if( !value_in_entry )
+    {
+        entry_offset = TIFFSeekFile(tif,0,SEEK_END);
+        
+        if (!WriteOK(tif, buf_to_write, count*TIFFDataWidth(datatype))) {
+            _TIFFfree( buf_to_write );
+            TIFFErrorExt(tif->tif_clientdata, module,
+                         "Error writing directory link");
+            return (0);
+        }
+        
+        _TIFFfree( buf_to_write );
+    }
+    else
+    {
+        memcpy( &entry_offset, buf_to_write, count*TIFFDataWidth(datatype));
+    }
 
-    return TIFFWriteDirectory( tif );
-}
+/* -------------------------------------------------------------------- */
+/*      Adjust the directory entry.                                     */
+/* -------------------------------------------------------------------- */
+    entry_type = datatype;
+    memcpy( direntry_raw + 2, &entry_type, sizeof(uint16) );
+    if (tif->tif_flags&TIFF_SWAB)
+        TIFFSwabShort( (uint16 *) (direntry_raw + 2) );
 
+    if (!(tif->tif_flags&TIFF_BIGTIFF))
+    {
+        uint32 value;
 
-/*
- * Link the current directory into the
- * directory chain for the file.
- */
-static int
-TIFFLinkDirectory(TIFF* tif)
-{
-       static const char module[] = "TIFFLinkDirectory";
-       toff_t nextdir;
-       toff_t diroff, off;
+        value = (uint32) entry_count;
+        memcpy( direntry_raw + 4, &value, sizeof(uint32) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong( (uint32 *) (direntry_raw + 4) );
 
-       tif->tif_diroff = (TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;
-       diroff = tif->tif_diroff;
-       if (tif->tif_flags & TIFF_SWAB)
-               TIFFSwabLong(&diroff);
+        value = (uint32) entry_offset;
+        memcpy( direntry_raw + 8, &value, sizeof(uint32) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong( (uint32 *) (direntry_raw + 8) );
+    }
+    else
+    {
+        memcpy( direntry_raw + 4, &entry_count, sizeof(uint64) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong8( (uint64 *) (direntry_raw + 4) );
 
-       /*
-        * Handle SubIFDs
-        */
-        if (tif->tif_flags & TIFF_INSUBIFD) {
-               (void) TIFFSeekFile(tif, tif->tif_subifdoff, SEEK_SET);
-               if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-                       TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Error writing SubIFD directory link",
-                           tif->tif_name);
-                       return (0);
-               }
-               /*
-                * Advance to the next SubIFD or, if this is
-                * the last one configured, revert back to the
-                * normal directory linkage.
-                */
-               if (--tif->tif_nsubifd)
-                       tif->tif_subifdoff += sizeof (diroff);
-               else
-                       tif->tif_flags &= ~TIFF_INSUBIFD;
-               return (1);
-       }
+        memcpy( direntry_raw + 12, &entry_offset, sizeof(uint64) );
+        if (tif->tif_flags&TIFF_SWAB)
+            TIFFSwabLong8( (uint64 *) (direntry_raw + 12) );
+    }
 
-       if (tif->tif_header.tiff_diroff == 0) {
-               /*
-                * First directory, overwrite offset in header.
-                */
-               tif->tif_header.tiff_diroff = tif->tif_diroff;
-               (void) TIFFSeekFile(tif,
-                                   (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
-                                    SEEK_SET);
-               if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Error writing TIFF header");
-                       return (0);
-               }
-               return (1);
-       }
-       /*
-        * Not the first directory, search to the last and append.
-        */
-       nextdir = tif->tif_header.tiff_diroff;
-       do {
-               uint16 dircount;
+/* -------------------------------------------------------------------- */
+/*      Write the directory entry out to disk.                          */
+/* -------------------------------------------------------------------- */
+    if (!SeekOK(tif, read_offset )) {
+        TIFFErrorExt(tif->tif_clientdata, module,
+                     "%s: Seek error accessing TIFF directory",
+                     tif->tif_name);
+        return 0;
+    }
 
-               if (!SeekOK(tif, nextdir) ||
-                   !ReadOK(tif, &dircount, sizeof (dircount))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory count");
-                       return (0);
-               }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&dircount);
-               (void) TIFFSeekFile(tif,
-                   dircount * sizeof (TIFFDirEntry), SEEK_CUR);
-               if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Error fetching directory link");
-                       return (0);
-               }
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabLong(&nextdir);
-       } while (nextdir != 0);
-        off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
-        (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
-       if (!WriteOK(tif, &diroff, sizeof (diroff))) {
-               TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
-               return (0);
-       }
-       return (1);
+    if (!WriteOK(tif, direntry_raw,dirsize))
+    {
+        TIFFErrorExt(tif->tif_clientdata, module,
+                     "%s: Can not write TIFF directory entry.",
+                     tif->tif_name);
+        return 0;
+    }
+    
+    return 1;
 }
-
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index fb21ffe2fd3d96ef5c9b0f46245cb207f549f59e..a94cf0b34a92c41378bc5916e7d3fc84813f1ea9 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dumpmode.c,v 1.4 2005/12/21 12:23:13 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dumpmode.c,v 1.14 2011-04-02 20:54:09 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
  */
 #include "tiffiop.h"
 
+static int
+DumpFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
 /*
  * Encode a hunk of pixels.
  */
 static int
-DumpModeEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
+DumpModeEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s)
 {
        (void) s;
        while (cc > 0) {
-               tsize_t n;
+               tmsize_t n;
 
                n = cc;
                if (tif->tif_rawcc + n > tif->tif_rawdatasize)
                        n = tif->tif_rawdatasize - tif->tif_rawcc;
 
-                assert( n > 0 );
-                
+               assert( n > 0 );
+
                /*
                 * Avoid copy if client has setup raw
                 * data buffer to avoid extra copy.
@@ -68,13 +75,24 @@ DumpModeEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
  * Decode a hunk of pixels.
  */
 static int
-DumpModeDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+DumpModeDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
+       static const char module[] = "DumpModeDecode";
        (void) s;
        if (tif->tif_rawcc < cc) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "DumpModeDecode: Not enough data for scanline %d",
-                   tif->tif_row);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+"Not enough data for scanline %lu, expected a request for at most %I64d bytes, got a request for %I64d bytes",
+                            (unsigned long) tif->tif_row,
+                            (signed __int64) tif->tif_rawcc,
+                            (signed __int64) cc);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+"Not enough data for scanline %lu, expected a request for at most %lld bytes, got a request for %lld bytes",
+                            (unsigned long) tif->tif_row,
+                            (signed long long) tif->tif_rawcc,
+                            (signed long long) cc);
+#endif
                return (0);
        }
        /*
@@ -84,7 +102,7 @@ DumpModeDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
        if (tif->tif_rawcp != buf)
                _TIFFmemcpy(buf, tif->tif_rawcp, cc);
        tif->tif_rawcp += cc;
-       tif->tif_rawcc -= cc;
+       tif->tif_rawcc -= cc;  
        return (1);
 }
 
@@ -106,12 +124,20 @@ int
 TIFFInitDumpMode(TIFF* tif, int scheme)
 {
        (void) scheme;
+       tif->tif_fixuptags = DumpFixupTags;  
        tif->tif_decoderow = DumpModeDecode;
        tif->tif_decodestrip = DumpModeDecode;
        tif->tif_decodetile = DumpModeDecode;
        tif->tif_encoderow = DumpModeEncode;
        tif->tif_encodestrip = DumpModeEncode;
-       tif->tif_encodetile = DumpModeEncode;
+       tif->tif_encodetile = DumpModeEncode; 
        tif->tif_seek = DumpModeSeek;
        return (1);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 7025080ed37a91ad7fc75552e8000bac77c063e8..0bc8b878bd053aa9e50cb51e80ef3425dcd70d9e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_error.c,v 1.4 2005/12/23 01:18:59 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_error.c,v 1.5 2010-03-10 18:56:48 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -71,3 +71,10 @@ TIFFErrorExt(thandle_t fd, const char* module, const char* fmt, ...)
        va_end(ap);
 }
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 68615222850ce9bd09c86a50ed5d5fd201479b29..10afd4162c157271ca9d08de73795a1155a27775 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_extension.c,v 1.4 2004/10/02 13:29:41 dron Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_extension.c,v 1.7 2010-03-10 18:56:48 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -41,13 +41,13 @@ int TIFFGetTagListCount( TIFF *tif )
     return td->td_customValueCount;
 }
 
-ttag_t TIFFGetTagListEntry( TIFF *tif, int tag_index )
+uint32 TIFFGetTagListEntry( TIFF *tif, int tag_index )
 
 {
     TIFFDirectory* td = &tif->tif_dir;
 
     if( tag_index < 0 || tag_index >= td->td_customValueCount )
-        return (ttag_t) -1;
+        return (uint32)(-1);
     else
         return td->td_customValues[tag_index].info->field_tag;
 }
@@ -102,10 +102,17 @@ void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
     link = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
     assert (link != NULL);
     link->next = tif->tif_clientinfo;
-    link->name = (char *) _TIFFmalloc(strlen(name)+1);
+    link->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1));
     assert (link->name != NULL);
     strcpy(link->name, name);
     link->data = data;
 
     tif->tif_clientinfo = link;
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index ed05633296d9e509a9c8b5b8d35ab6974c12f6d7..7b9bd4676b4a044e07e1531d0eb944c95f36b40a 100644 (file)
  * derived from this ``base state'' block.
  */
 typedef struct {
-        int     rw_mode;                /* O_RDONLY for decode, else encode */
-       int     mode;                   /* operating mode */
-       uint32  rowbytes;               /* bytes in a decoded scanline */
-       uint32  rowpixels;              /* pixels in a scanline */
-
-       uint16  cleanfaxdata;           /* CleanFaxData tag */
-       uint32  badfaxrun;              /* BadFaxRun tag */
-       uint32  badfaxlines;            /* BadFaxLines tag */
-       uint32  groupoptions;           /* Group 3/4 options tag */
-       uint32  recvparams;             /* encoded Class 2 session params */
-       char*   subaddress;             /* subaddress string */
-       uint32  recvtime;               /* time spent receiving (secs) */
-       char*   faxdcs;                 /* Table 2/T.30 encoded session params */
-       TIFFVGetMethod vgetparent;      /* super-class method */
-       TIFFVSetMethod vsetparent;      /* super-class method */
+       int      rw_mode;                /* O_RDONLY for decode, else encode */
+       int      mode;                   /* operating mode */
+       tmsize_t rowbytes;               /* bytes in a decoded scanline */
+       uint32   rowpixels;              /* pixels in a scanline */
+
+       uint16   cleanfaxdata;           /* CleanFaxData tag */
+       uint32   badfaxrun;              /* BadFaxRun tag */
+       uint32   badfaxlines;            /* BadFaxLines tag */
+       uint32   groupoptions;           /* Group 3/4 options tag */
+
+       TIFFVGetMethod  vgetparent;      /* super-class method */
+       TIFFVSetMethod  vsetparent;      /* super-class method */
+       TIFFPrintMethod printdir;        /* super-class method */
 } Fax3BaseState;
 #define        Fax3State(tif)          ((Fax3BaseState*) (tif)->tif_data)
 
@@ -85,13 +83,14 @@ typedef struct {
        unsigned char*  refline;        /* reference line for 2d decoding */
        int     k;                      /* #rows left that can be 2d encoded */
        int     maxk;                   /* max #rows that can be 2d encoded */
+
+       int line;
 } Fax3CodecState;
-#define        DecoderState(tif)       ((Fax3CodecState*) Fax3State(tif))
-#define        EncoderState(tif)       ((Fax3CodecState*) Fax3State(tif))
+#define DecoderState(tif) ((Fax3CodecState*) Fax3State(tif))
+#define EncoderState(tif) ((Fax3CodecState*) Fax3State(tif))
 
-#define        is2DEncoding(sp) \
-       (sp->b.groupoptions & GROUP3OPT_2DENCODING)
-#define        isAligned(p,t)  ((((unsigned long)(p)) & (sizeof (t)-1)) == 0)
+#define is2DEncoding(sp) (sp->b.groupoptions & GROUP3OPT_2DENCODING)
+#define isAligned(p,t) ((((size_t)(p)) & (sizeof (t)-1)) == 0)
 
 /*
  * Group 3 and Group 4 Decoding.
@@ -137,15 +136,15 @@ typedef struct {
     sp->bit = BitsAvail;                                               \
     sp->data = BitAcc;                                                 \
     sp->EOLcnt = EOLcnt;                                               \
-    tif->tif_rawcc -= (tidata_t) cp - tif->tif_rawcp;                  \
-    tif->tif_rawcp = (tidata_t) cp;                                    \
+    tif->tif_rawcc -= (tmsize_t)((uint8*) cp - tif->tif_rawcp);                \
+    tif->tif_rawcp = (uint8*) cp;                                      \
 } while (0)
 
 /*
  * Setup state for decoding a strip.
  */
 static int
-Fax3PreDecode(TIFF* tif, tsample_t s)
+Fax3PreDecode(TIFF* tif, uint16 s)
 {
        Fax3CodecState* sp = DecoderState(tif);
 
@@ -167,6 +166,7 @@ Fax3PreDecode(TIFF* tif, tsample_t s)
                sp->refruns[0] = (uint32) sp->b.rowpixels;
                sp->refruns[1] = 0;
        }
+       sp->line = 0;
        return (1);
 }
 
@@ -179,46 +179,44 @@ Fax3PreDecode(TIFF* tif, tsample_t s)
 static void
 Fax3Unexpected(const char* module, TIFF* tif, uint32 line, uint32 a0)
 {
-       TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad code word at line %lu of %s %lu (x %lu)",
-               tif->tif_name, (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-          (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-          (unsigned long) a0);
+       TIFFErrorExt(tif->tif_clientdata, module, "Bad code word at line %u of %s %u (x %u)",
+           line, isTiled(tif) ? "tile" : "strip",
+           (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
+           a0);
 }
-#define        unexpected(table, a0)   Fax3Unexpected(module, tif, line, a0)
+#define        unexpected(table, a0)   Fax3Unexpected(module, tif, sp->line, a0)
 
 static void
 Fax3Extension(const char* module, TIFF* tif, uint32 line, uint32 a0)
 {
        TIFFErrorExt(tif->tif_clientdata, module,
-           "%s: Uncompressed data (not supported) at line %lu of %s %lu (x %lu)",
-           tif->tif_name, (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-       (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-       (unsigned long) a0);
+           "Uncompressed data (not supported) at line %u of %s %u (x %u)",
+           line, isTiled(tif) ? "tile" : "strip",
+           (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
+           a0);
 }
-#define        extension(a0)   Fax3Extension(module, tif, line, a0)
+#define        extension(a0)   Fax3Extension(module, tif, sp->line, a0)
 
 static void
 Fax3BadLength(const char* module, TIFF* tif, uint32 line, uint32 a0, uint32 lastx)
 {
-       TIFFWarningExt(tif->tif_clientdata, module, "%s: %s at line %lu of %s %lu (got %lu, expected %lu)",
-           tif->tif_name,
+       TIFFWarningExt(tif->tif_clientdata, module, "%s at line %u of %s %u (got %u, expected %u)",
            a0 < lastx ? "Premature EOL" : "Line length mismatch",
-           (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-        (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-        (unsigned long) a0, lastx);
+           line, isTiled(tif) ? "tile" : "strip",
+           (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
+           a0, lastx);
 }
-#define        badlength(a0,lastx)     Fax3BadLength(module, tif, line, a0, lastx)
+#define        badlength(a0,lastx)     Fax3BadLength(module, tif, sp->line, a0, lastx)
 
 static void
 Fax3PrematureEOF(const char* module, TIFF* tif, uint32 line, uint32 a0)
 {
-       TIFFWarningExt(tif->tif_clientdata, module, "%s: Premature EOF at line %lu of %s %lu (x %lu)",
-           tif->tif_name,
-           (unsigned long) line, isTiled(tif) ? "tile" : "strip",
-        (unsigned long) (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
-        (unsigned long) a0);
+       TIFFWarningExt(tif->tif_clientdata, module, "Premature EOF at line %u of %s %u (x %u)",
+           line, isTiled(tif) ? "tile" : "strip",
+           (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
+           a0);
 }
-#define        prematureEOF(a0)        Fax3PrematureEOF(module, tif, line, a0)
+#define        prematureEOF(a0)        Fax3PrematureEOF(module, tif, sp->line, a0)
 
 #define        Nop
 
@@ -226,15 +224,18 @@ Fax3PrematureEOF(const char* module, TIFF* tif, uint32 line, uint32 a0)
  * Decode the requested amount of G3 1D-encoded data.
  */
 static int
-Fax3Decode1D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+Fax3Decode1D(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
        DECLARE_STATE(tif, sp, "Fax3Decode1D");
-        int line = 0;
-
        (void) s;
+       if (occ % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (-1);
+       }
        CACHE_STATE(tif, sp);
        thisrun = sp->curruns;
-       while ((long)occ > 0) {
+       while (occ > 0) {
                a0 = 0;
                RunLength = 0;
                pa = thisrun;
@@ -248,7 +249,7 @@ Fax3Decode1D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                (*sp->fill)(buf, thisrun, pa, lastx);
                buf += sp->b.rowbytes;
                occ -= sp->b.rowbytes;
-                line++;
+               sp->line++;
                continue;
        EOF1D:                          /* premature EOF */
                CLEANUP_RUNS();
@@ -266,15 +267,18 @@ Fax3Decode1D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
  * Decode the requested amount of G3 2D-encoded data.
  */
 static int
-Fax3Decode2D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+Fax3Decode2D(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
        DECLARE_STATE_2D(tif, sp, "Fax3Decode2D");
-        int line = 0;
        int is1D;                       /* current line is 1d/2d-encoded */
-
        (void) s;
+       if (occ % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (-1);
+       }
        CACHE_STATE(tif, sp);
-       while ((long)occ > 0) {
+       while (occ > 0) {
                a0 = 0;
                RunLength = 0;
                pa = thisrun = sp->curruns;
@@ -302,7 +306,7 @@ Fax3Decode2D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                SWAP(uint32*, sp->curruns, sp->refruns);
                buf += sp->b.rowbytes;
                occ -= sp->b.rowbytes;
-                line++;
+               sp->line++;
                continue;
        EOF2D:                          /* premature EOF */
                CLEANUP_RUNS();
@@ -322,7 +326,7 @@ Fax3Decode2D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
  * this is <8 bytes.  We optimize the code here to reflect the
  * machine characteristics.
  */
-#if SIZEOF_LONG == 8
+#if SIZEOF_UNSIGNED_LONG == 8
 # define FILL(n, cp)                                                       \
     switch (n) {                                                           \
     case 15:(cp)[14] = 0xff; case 14:(cp)[13] = 0xff; case 13: (cp)[12] = 0xff;\
@@ -450,6 +454,13 @@ _TIFFFax3fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
 #undef ZERO
 #undef FILL
 
+static int
+Fax3FixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
 /*
  * Setup G3/G4-related compression/decompression state
  * before data is processed.  This routine is called once
@@ -460,14 +471,16 @@ _TIFFFax3fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
 static int
 Fax3SetupState(TIFF* tif)
 {
+       static const char module[] = "Fax3SetupState";
        TIFFDirectory* td = &tif->tif_dir;
        Fax3BaseState* sp = Fax3State(tif);
        int needsRefLine;
        Fax3CodecState* dsp = (Fax3CodecState*) Fax3State(tif);
-       uint32 rowbytes, rowpixels, nruns;
+       tmsize_t rowbytes;
+       uint32 rowpixels, nruns;
 
        if (td->td_bitspersample != 1) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+               TIFFErrorExt(tif->tif_clientdata, module,
                    "Bits/sample must be 1 for Group 3/4 encoding/decoding");
                return (0);
        }
@@ -481,8 +494,8 @@ Fax3SetupState(TIFF* tif)
                rowbytes = TIFFScanlineSize(tif);
                rowpixels = td->td_imagewidth;
        }
-       sp->rowbytes = (uint32) rowbytes;
-       sp->rowpixels = (uint32) rowpixels;
+       sp->rowbytes = rowbytes;
+       sp->rowpixels = rowpixels;
        /*
         * Allocate any additional space required for decoding/encoding.
         */
@@ -491,15 +504,32 @@ Fax3SetupState(TIFF* tif)
            td->td_compression == COMPRESSION_CCITTFAX4
        );
 
-       nruns = needsRefLine ? 2*TIFFroundup(rowpixels,32) : rowpixels;
-
-       dsp->runs = (uint32*) _TIFFCheckMalloc(tif, 2*nruns+3, sizeof (uint32),
-                                         "for Group 3/4 run arrays");
+       /*
+         Assure that allocation computations do not overflow.
+         
+         TIFFroundup and TIFFSafeMultiply return zero on integer overflow
+       */
+       dsp->runs=(uint32*) NULL;
+       nruns = TIFFroundup_32(rowpixels,32);
+       if (needsRefLine) {
+               nruns = TIFFSafeMultiply(uint32,nruns,2);
+       }
+       if ((nruns == 0) || (TIFFSafeMultiply(uint32,nruns,2) == 0)) {
+               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                            "Row pixels integer overflow (rowpixels %u)",
+                            rowpixels);
+               return (0);
+       }
+       dsp->runs = (uint32*) _TIFFCheckMalloc(tif,
+                                              TIFFSafeMultiply(uint32,nruns,2),
+                                              sizeof (uint32),
+                                              "for Group 3/4 run arrays");
        if (dsp->runs == NULL)
                return (0);
+       memset( dsp->runs, 0, TIFFSafeMultiply(uint32,nruns,2)*sizeof(uint32));
        dsp->curruns = dsp->runs;
        if (needsRefLine)
-               dsp->refruns = dsp->runs + (nruns>>1);
+               dsp->refruns = dsp->runs + nruns;
        else
                dsp->refruns = NULL;
        if (td->td_compression == COMPRESSION_CCITTFAX3
@@ -520,9 +550,8 @@ Fax3SetupState(TIFF* tif)
                 */
                esp->refline = (unsigned char*) _TIFFmalloc(rowbytes);
                if (esp->refline == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, "Fax3SetupState",
-                           "%s: No space for Group 3/4 reference line",
-                           tif->tif_name);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "No space for Group 3/4 reference line");
                        return (0);
                }
        } else                                  /* 1d encoding */
@@ -538,14 +567,14 @@ Fax3SetupState(TIFF* tif)
 #define        Fax3FlushBits(tif, sp) {                                \
        if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize)         \
                (void) TIFFFlushData1(tif);                     \
-       *(tif)->tif_rawcp++ = (tidataval_t) (sp)->data;         \
+       *(tif)->tif_rawcp++ = (uint8) (sp)->data;               \
        (tif)->tif_rawcc++;                                     \
        (sp)->data = 0, (sp)->bit = 8;                          \
 }
 #define        _FlushBits(tif) {                                       \
        if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize)         \
                (void) TIFFFlushData1(tif);                     \
-       *(tif)->tif_rawcp++ = (tidataval_t) data;               \
+       *(tif)->tif_rawcp++ = (uint8) data;             \
        (tif)->tif_rawcc++;                                     \
        data = 0, bit = 8;                                      \
 }
@@ -557,6 +586,7 @@ static const int _msbmask[9] =
                length -= bit;                                  \
                _FlushBits(tif);                                \
        }                                                       \
+        assert( length < 9 );                                   \
        data |= (bits & _msbmask[length]) << (bit - length);    \
        bit -= length;                                          \
        if (bit == 0)                                           \
@@ -684,7 +714,7 @@ Fax3PutEOL(TIFF* tif)
  * Reset encoding state at the start of a strip.
  */
 static int
-Fax3PreEncode(TIFF* tif, tsample_t s)
+Fax3PreEncode(TIFF* tif, uint16 s)
 {
        Fax3CodecState* sp = EncoderState(tif);
 
@@ -718,6 +748,7 @@ Fax3PreEncode(TIFF* tif, tsample_t s)
                sp->k = sp->maxk-1;
        } else
                sp->k = sp->maxk = 0;
+       sp->line = 0;
        return (1);
 }
 
@@ -1004,12 +1035,17 @@ Fax3Encode2DRow(TIFF* tif, unsigned char* bp, unsigned char* rp, uint32 bits)
  * Encode a buffer of pixels.
  */
 static int
-Fax3Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+Fax3Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
+       static const char module[] = "Fax3Encode";
        Fax3CodecState* sp = EncoderState(tif);
-
        (void) s;
-       while ((long)cc > 0) {
+       if (cc % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be written");
+               return (0);
+       }
+       while (cc > 0) {
                if ((sp->b.mode & FAXMODE_NOEOL) == 0)
                        Fax3PutEOL(tif);
                if (is2DEncoding(sp)) {
@@ -1019,7 +1055,7 @@ Fax3Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                                sp->tag = G3_2D;
                        } else {
                                if (!Fax3Encode2DRow(tif, bp, sp->refline,
-                                                     sp->b.rowpixels))
+                                   sp->b.rowpixels))
                                        return (0);
                                sp->k--;
                        }
@@ -1074,14 +1110,13 @@ Fax3Cleanup(TIFF* tif)
 
        tif->tif_tagmethods.vgetfield = sp->b.vgetparent;
        tif->tif_tagmethods.vsetfield = sp->b.vsetparent;
+       tif->tif_tagmethods.printdir = sp->b.printdir;
 
        if (sp->runs)
                _TIFFfree(sp->runs);
        if (sp->refline)
                _TIFFfree(sp->refline);
 
-       if (Fax3State(tif)->subaddress)
-               _TIFFfree(Fax3State(tif)->subaddress);
        _TIFFfree(tif->tif_data);
        tif->tif_data = NULL;
 
@@ -1091,106 +1126,77 @@ Fax3Cleanup(TIFF* tif)
 #define        FIELD_BADFAXLINES       (FIELD_CODEC+0)
 #define        FIELD_CLEANFAXDATA      (FIELD_CODEC+1)
 #define        FIELD_BADFAXRUN         (FIELD_CODEC+2)
-#define        FIELD_RECVPARAMS        (FIELD_CODEC+3)
-#define        FIELD_SUBADDRESS        (FIELD_CODEC+4)
-#define        FIELD_RECVTIME          (FIELD_CODEC+5)
-#define        FIELD_FAXDCS            (FIELD_CODEC+6)
 
 #define        FIELD_OPTIONS           (FIELD_CODEC+7)
 
-static const TIFFFieldInfo faxFieldInfo[] = {
-    { TIFFTAG_FAXMODE,          0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      FALSE,   FALSE,  "FaxMode" },
-    { TIFFTAG_FAXFILLFUNC,      0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      FALSE,   FALSE,  "FaxFillFunc" },
-    { TIFFTAG_BADFAXLINES,      1, 1,  TIFF_LONG,      FIELD_BADFAXLINES,
-      TRUE,    FALSE,  "BadFaxLines" },
-    { TIFFTAG_BADFAXLINES,      1, 1,  TIFF_SHORT,     FIELD_BADFAXLINES,
-      TRUE,    FALSE,  "BadFaxLines" },
-    { TIFFTAG_CLEANFAXDATA,     1, 1,  TIFF_SHORT,     FIELD_CLEANFAXDATA,
-      TRUE,    FALSE,  "CleanFaxData" },
-    { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_LONG,   FIELD_BADFAXRUN,
-      TRUE,    FALSE,  "ConsecutiveBadFaxLines" },
-    { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_SHORT,  FIELD_BADFAXRUN,
-      TRUE,    FALSE,  "ConsecutiveBadFaxLines" },
-    { TIFFTAG_FAXRECVPARAMS,    1, 1, TIFF_LONG,       FIELD_RECVPARAMS,
-      TRUE,    FALSE,  "FaxRecvParams" },
-    { TIFFTAG_FAXSUBADDRESS,   -1,-1, TIFF_ASCII,      FIELD_SUBADDRESS,
-      TRUE,    FALSE,  "FaxSubAddress" },
-    { TIFFTAG_FAXRECVTIME,      1, 1, TIFF_LONG,       FIELD_RECVTIME,
-      TRUE,    FALSE,  "FaxRecvTime" },
-    { TIFFTAG_FAXDCS,          -1,-1, TIFF_ASCII,      FIELD_FAXDCS,
-      TRUE,    FALSE,  "FaxDcs" },
+static const TIFFField faxFields[] = {
+    { TIFFTAG_FAXMODE, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "FaxMode", NULL },
+    { TIFFTAG_FAXFILLFUNC, 0, 0, TIFF_ANY, 0, TIFF_SETGET_OTHER, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "FaxFillFunc", NULL },
+    { TIFFTAG_BADFAXLINES, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_BADFAXLINES, TRUE, FALSE, "BadFaxLines", NULL },
+    { TIFFTAG_CLEANFAXDATA, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UINT16, FIELD_CLEANFAXDATA, TRUE, FALSE, "CleanFaxData", NULL },
+    { TIFFTAG_CONSECUTIVEBADFAXLINES, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_BADFAXRUN, TRUE, FALSE, "ConsecutiveBadFaxLines", NULL }};
+static const TIFFField fax3Fields[] = {
+    { TIFFTAG_GROUP3OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_OPTIONS, FALSE, FALSE, "Group3Options", NULL },
 };
-static const TIFFFieldInfo fax3FieldInfo[] = {
-    { TIFFTAG_GROUP3OPTIONS,    1, 1,  TIFF_LONG,      FIELD_OPTIONS,
-      FALSE,   FALSE,  "Group3Options" },
+static const TIFFField fax4Fields[] = {
+    { TIFFTAG_GROUP4OPTIONS, 1, 1, TIFF_LONG, 0, TIFF_SETGET_UINT32, TIFF_SETGET_UINT32, FIELD_OPTIONS, FALSE, FALSE, "Group4Options", NULL },
 };
-static const TIFFFieldInfo fax4FieldInfo[] = {
-    { TIFFTAG_GROUP4OPTIONS,    1, 1,  TIFF_LONG,      FIELD_OPTIONS,
-      FALSE,   FALSE,  "Group4Options" },
-};
-#define        N(a)    (sizeof (a) / sizeof (a[0]))
 
 static int
-Fax3VSetField(TIFF* tif, ttag_t tag, va_list ap)
+Fax3VSetField(TIFF* tif, uint32 tag, va_list ap)
 {
        Fax3BaseState* sp = Fax3State(tif);
+       const TIFFField* fip;
 
        assert(sp != 0);
        assert(sp->vsetparent != 0);
 
        switch (tag) {
        case TIFFTAG_FAXMODE:
-               sp->mode = va_arg(ap, int);
-               return (1);                     /* NB: pseudo tag */
+               sp->mode = (int) va_arg(ap, int);
+               return 1;                       /* NB: pseudo tag */
        case TIFFTAG_FAXFILLFUNC:
                DecoderState(tif)->fill = va_arg(ap, TIFFFaxFillFunc);
-               return (1);                     /* NB: pseudo tag */
+               return 1;                       /* NB: pseudo tag */
        case TIFFTAG_GROUP3OPTIONS:
                /* XXX: avoid reading options if compression mismatches. */
                if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX3)
-                       sp->groupoptions = va_arg(ap, uint32);
+                       sp->groupoptions = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_GROUP4OPTIONS:
                /* XXX: avoid reading options if compression mismatches. */
                if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4)
-                       sp->groupoptions = va_arg(ap, uint32);
+                       sp->groupoptions = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_BADFAXLINES:
-               sp->badfaxlines = va_arg(ap, uint32);
+               sp->badfaxlines = (uint32) va_arg(ap, uint32);
                break;
        case TIFFTAG_CLEANFAXDATA:
-               sp->cleanfaxdata = (uint16) va_arg(ap, int);
+               sp->cleanfaxdata = (uint16) va_arg(ap, uint16_vap);
                break;
        case TIFFTAG_CONSECUTIVEBADFAXLINES:
-               sp->badfaxrun = va_arg(ap, uint32);
-               break;
-       case TIFFTAG_FAXRECVPARAMS:
-               sp->recvparams = va_arg(ap, uint32);
-               break;
-       case TIFFTAG_FAXSUBADDRESS:
-               _TIFFsetString(&sp->subaddress, va_arg(ap, char*));
-               break;
-       case TIFFTAG_FAXRECVTIME:
-               sp->recvtime = va_arg(ap, uint32);
-               break;
-       case TIFFTAG_FAXDCS:
-               _TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
+               sp->badfaxrun = (uint32) va_arg(ap, uint32);
                break;
        default:
                return (*sp->vsetparent)(tif, tag, ap);
        }
-       TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
+       
+       if ((fip = TIFFFieldWithTag(tif, tag)))
+               TIFFSetFieldBit(tif, fip->field_bit);
+       else
+               return 0;
+
        tif->tif_flags |= TIFF_DIRTYDIRECT;
-       return (1);
+       return 1;
 }
 
 static int
-Fax3VGetField(TIFF* tif, ttag_t tag, va_list ap)
+Fax3VGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        Fax3BaseState* sp = Fax3State(tif);
 
+       assert(sp != 0);
+
        switch (tag) {
        case TIFFTAG_FAXMODE:
                *va_arg(ap, int*) = sp->mode;
@@ -1211,18 +1217,6 @@ Fax3VGetField(TIFF* tif, ttag_t tag, va_list ap)
        case TIFFTAG_CONSECUTIVEBADFAXLINES:
                *va_arg(ap, uint32*) = sp->badfaxrun;
                break;
-       case TIFFTAG_FAXRECVPARAMS:
-               *va_arg(ap, uint32*) = sp->recvparams;
-               break;
-       case TIFFTAG_FAXSUBADDRESS:
-               *va_arg(ap, char**) = sp->subaddress;
-               break;
-       case TIFFTAG_FAXRECVTIME:
-               *va_arg(ap, uint32*) = sp->recvtime;
-               break;
-       case TIFFTAG_FAXDCS:
-               *va_arg(ap, char**) = sp->faxdcs;
-               break;
        default:
                return (*sp->vgetparent)(tif, tag, ap);
        }
@@ -1234,6 +1228,8 @@ Fax3PrintDir(TIFF* tif, FILE* fd, long flags)
 {
        Fax3BaseState* sp = Fax3State(tif);
 
+       assert(sp != 0);
+
        (void) flags;
        if (TIFFFieldSet(tif,FIELD_OPTIONS)) {
                const char* sep = " ";
@@ -1277,32 +1273,34 @@ Fax3PrintDir(TIFF* tif, FILE* fd, long flags)
        if (TIFFFieldSet(tif,FIELD_BADFAXRUN))
                fprintf(fd, "  Consecutive Bad Fax Lines: %lu\n",
                    (unsigned long) sp->badfaxrun);
-       if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
-               fprintf(fd, "  Fax Receive Parameters: %08lx\n",
-                  (unsigned long) sp->recvparams);
-       if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
-               fprintf(fd, "  Fax SubAddress: %s\n", sp->subaddress);
-       if (TIFFFieldSet(tif,FIELD_RECVTIME))
-               fprintf(fd, "  Fax Receive Time: %lu secs\n",
-                   (unsigned long) sp->recvtime);
-       if (TIFFFieldSet(tif,FIELD_FAXDCS))
-               fprintf(fd, "  Fax DCS: %s\n", sp->faxdcs);
+       if (sp->printdir)
+               (*sp->printdir)(tif, fd, flags);
 }
 
 static int
 InitCCITTFax3(TIFF* tif)
 {
+       static const char module[] = "InitCCITTFax3";
        Fax3BaseState* sp;
 
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, faxFields, TIFFArrayCount(faxFields))) {
+               TIFFErrorExt(tif->tif_clientdata, "InitCCITTFax3",
+                       "Merging common CCITT Fax codec-specific tags failed");
+               return 0;
+       }
+
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t)
+       tif->tif_data = (uint8*)
                _TIFFmalloc(sizeof (Fax3CodecState));
 
        if (tif->tif_data == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax3",
-                   "%s: No space for state block", tif->tif_name);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "No space for state block");
                return (0);
        }
 
@@ -1310,19 +1308,15 @@ InitCCITTFax3(TIFF* tif)
         sp->rw_mode = tif->tif_mode;
 
        /*
-        * Merge codec-specific tag information and
-        * override parent get/set field methods.
+        * Override parent get/set field methods.
         */
-       _TIFFMergeFieldInfo(tif, faxFieldInfo, N(faxFieldInfo));
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield = Fax3VGetField; /* hook for codec tags */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
        tif->tif_tagmethods.vsetfield = Fax3VSetField; /* hook for codec tags */
+       sp->printdir = tif->tif_tagmethods.printdir;
        tif->tif_tagmethods.printdir = Fax3PrintDir;   /* hook for codec tags */
        sp->groupoptions = 0;   
-       sp->recvparams = 0;
-       sp->subaddress = NULL;
-       sp->faxdcs = NULL;
 
        if (sp->rw_mode == O_RDONLY) /* FIXME: improve for in place update */
                tif->tif_flags |= TIFF_NOBITREV; /* decoder does bit reversal */
@@ -1333,6 +1327,7 @@ InitCCITTFax3(TIFF* tif)
        /*
         * Install codec methods.
         */
+       tif->tif_fixuptags = Fax3FixupTags;
        tif->tif_setupdecode = Fax3SetupState;
        tif->tif_predecode = Fax3PreDecode;
        tif->tif_decoderow = Fax3Decode1D;
@@ -1355,14 +1350,22 @@ TIFFInitCCITTFax3(TIFF* tif, int scheme)
 {
        (void) scheme;
        if (InitCCITTFax3(tif)) {
-               _TIFFMergeFieldInfo(tif, fax3FieldInfo, N(fax3FieldInfo));
+               /*
+                * Merge codec-specific tag information.
+                */
+               if (!_TIFFMergeFields(tif, fax3Fields,
+                                     TIFFArrayCount(fax3Fields))) {
+                       TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax3",
+                       "Merging CCITT Fax 3 codec-specific tags failed");
+                       return 0;
+               }
 
                /*
                 * The default format is Class/F-style w/o RTC.
                 */
                return TIFFSetField(tif, TIFFTAG_FAXMODE, FAXMODE_CLASSF);
        } else
-               return (0);
+               return 01;
 }
 
 /*
@@ -1370,19 +1373,22 @@ TIFFInitCCITTFax3(TIFF* tif, int scheme)
  * Compression Scheme Support.
  */
 
-#define        SWAP(t,a,b)     { t x; x = (a); (a) = (b); (b) = x; }
+#define SWAP(t,a,b) { t x; x = (a); (a) = (b); (b) = x; }
 /*
  * Decode the requested amount of G4-encoded data.
  */
 static int
-Fax4Decode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+Fax4Decode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
        DECLARE_STATE_2D(tif, sp, "Fax4Decode");
-        int line = 0;
-
        (void) s;
+       if (occ % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (-1);
+       }
        CACHE_STATE(tif, sp);
-       while ((long)occ > 0) {
+       while (occ > 0) {
                a0 = 0;
                RunLength = 0;
                pa = thisrun = sp->curruns;
@@ -1401,19 +1407,19 @@ Fax4Decode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                SWAP(uint32*, sp->curruns, sp->refruns);
                buf += sp->b.rowbytes;
                occ -= sp->b.rowbytes;
-                line++;
+               sp->line++;
                continue;
        EOFG4:
                 NeedBits16( 13, BADG4 );
         BADG4:
 #ifdef FAX3_DEBUG
                 if( GetBits(13) != 0x1001 )
-                    fputs( "Bad RTC\n", stderr );
+                    fputs( "Bad EOFB\n", stderr );
 #endif                
                 ClrBits( 13 );
                (*sp->fill)(buf, thisrun, pa, lastx);
                UNCACHE_STATE(tif, sp);
-               return (-1);
+               return ( sp->line ? 1 : -1);    /* don't error on badly-terminated strips */
        }
        UNCACHE_STATE(tif, sp);
        return (1);
@@ -1424,12 +1430,17 @@ Fax4Decode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
  * Encode the requested amount of data.
  */
 static int
-Fax4Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+Fax4Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
+       static const char module[] = "Fax4Encode";
        Fax3CodecState *sp = EncoderState(tif);
-
        (void) s;
-       while ((long)cc > 0) {
+       if (cc % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be written");
+               return (0);
+       }
+       while (cc > 0) {
                if (!Fax3Encode2DRow(tif, bp, sp->refline, sp->b.rowpixels))
                        return (0);
                _TIFFmemcpy(sp->refline, bp, sp->b.rowbytes);
@@ -1457,7 +1468,15 @@ TIFFInitCCITTFax4(TIFF* tif, int scheme)
 {
        (void) scheme;
        if (InitCCITTFax3(tif)) {               /* reuse G3 support */
-               _TIFFMergeFieldInfo(tif, fax4FieldInfo, N(fax4FieldInfo));
+               /*
+                * Merge codec-specific tag information.
+                */
+               if (!_TIFFMergeFields(tif, fax4Fields,
+                                     TIFFArrayCount(fax4Fields))) {
+                       TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax4",
+                       "Merging CCITT Fax 4 codec-specific tags failed");
+                       return 0;
+               }
 
                tif->tif_decoderow = Fax4Decode;
                tif->tif_decodestrip = Fax4Decode;
@@ -1483,16 +1502,19 @@ TIFFInitCCITTFax4(TIFF* tif, int scheme)
  * Decode the requested amount of RLE-encoded data.
  */
 static int
-Fax3DecodeRLE(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+Fax3DecodeRLE(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
        DECLARE_STATE(tif, sp, "Fax3DecodeRLE");
        int mode = sp->b.mode;
-        int line = 0;
-
        (void) s;
+       if (occ % sp->b.rowbytes)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (-1);
+       }
        CACHE_STATE(tif, sp);
        thisrun = sp->curruns;
-       while ((long)occ > 0) {
+       while (occ > 0) {
                a0 = 0;
                RunLength = 0;
                pa = thisrun;
@@ -1517,7 +1539,7 @@ Fax3DecodeRLE(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                }
                buf += sp->b.rowbytes;
                occ -= sp->b.rowbytes;
-                line++;
+               sp->line++;
                continue;
        EOFRLE:                         /* premature EOF */
                (*sp->fill)(buf, thisrun, pa, lastx);
@@ -1552,7 +1574,7 @@ TIFFInitCCITTRLEW(TIFF* tif, int scheme)
        if (InitCCITTFax3(tif)) {               /* reuse G3 support */
                tif->tif_decoderow = Fax3DecodeRLE;
                tif->tif_decodestrip = Fax3DecodeRLE;
-               tif->tif_decodetile = Fax3DecodeRLE;
+               tif->tif_decodetile = Fax3DecodeRLE;  
                /*
                 * Suppress RTC+EOLs when encoding and word-align data.
                 */
@@ -1564,3 +1586,10 @@ TIFFInitCCITTRLEW(TIFF* tif, int scheme)
 #endif /* CCITT_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index b218961dbe09013386b593a28ae5b6b0e8421520..8842924a842c5d6b719a398fc94f894abcc632c1 100644 (file)
@@ -52,7 +52,7 @@
  * data in the run array as needed (e.g. to append zero runs to bring
  * the count up to a nice multiple).
  */
-typedef        void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
+typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
 
 /*
  * The default run filler; made external for other decoders.
@@ -60,36 +60,36 @@ typedef     void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
 #if defined(__cplusplus)
 extern "C" {
 #endif
-extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);
+extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);
 #if defined(__cplusplus)
 }
 #endif
 
 
 /* finite state machine codes */
-#define S_Null         0
-#define S_Pass         1
-#define S_Horiz                2
-#define S_V0           3
-#define S_VR           4
-#define S_VL           5
-#define S_Ext          6
-#define S_TermW                7
-#define S_TermB                8
-#define S_MakeUpW      9
-#define S_MakeUpB      10
-#define S_MakeUp       11
-#define S_EOL          12
+#define S_Null     0
+#define S_Pass     1
+#define S_Horiz    2
+#define S_V0       3
+#define S_VR       4
+#define S_VL       5
+#define S_Ext      6
+#define S_TermW    7
+#define S_TermB    8
+#define S_MakeUpW  9
+#define S_MakeUpB  10
+#define S_MakeUp   11
+#define S_EOL      12
 
-typedef struct {               /* state table entry */
-       unsigned char State;    /* see above */
-       unsigned char Width;    /* width of code in bits */
-       uint32  Param;          /* unsigned 32-bit run length in bits */
+typedef struct {                /* state table entry */
+       unsigned char State;    /* see above */
+       unsigned char Width;    /* width of code in bits */
+       uint32 Param;           /* unsigned 32-bit run length in bits */
 } TIFFFaxTabEnt;
 
-extern const TIFFFaxTabEnt TIFFFaxMainTable[];
-extern const TIFFFaxTabEnt TIFFFaxWhiteTable[];
-extern const TIFFFaxTabEnt TIFFFaxBlackTable[];
+extern const TIFFFaxTabEnt TIFFFaxMainTable[];
+extern const TIFFFaxTabEnt TIFFFaxWhiteTable[];
+extern const TIFFFaxTabEnt TIFFFaxBlackTable[];
 
 /*
  * The following macros define the majority of the G3/G4 decoder
@@ -478,6 +478,12 @@ done1d:                                                                    \
            break;                                                      \
        case S_VL:                                                      \
            CHECK_b1;                                                   \
+           if (b1 <= (int) (a0 + TabEnt->Param)) {                     \
+               if (b1 < (int) (a0 + TabEnt->Param) || pa != thisrun) { \
+                   unexpected("VL", a0);                               \
+                   goto eol2d;                                         \
+               }                                                       \
+           }                                                           \
            SETVALUE(b1 - a0 - TabEnt->Param);                          \
            b1 -= *--pb;                                                \
            break;                                                      \
@@ -523,3 +529,10 @@ eol2d:                                                                     \
     CLEANUP_RUNS();                                                    \
 } while (0)
 #endif /* _FAX3_ */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 08ce1ad6084ae4b9bd13a2715b0b29e15e3914cb..822191ecf4d70d88ff7ffe252911a8c97c769895 100644 (file)
 {8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
 {8,3,4},{8,2,2}
 };
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 5ff56e9a813483e04931ede1332b4f3f8df91f46..2ec7c76a597b6a1152b556690035b6700e429e0e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_flush.c,v 1.3 2000/09/15 20:52:42 warmerda Exp $ */
+/* $Id$ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
 int
 TIFFFlush(TIFF* tif)
 {
+    if( tif->tif_mode == O_RDONLY )
+        return 1;
 
-       if (tif->tif_mode != O_RDONLY) {
-               if (!TIFFFlushData(tif))
-                       return (0);
-               if ((tif->tif_flags & TIFF_DIRTYDIRECT) &&
-                   !TIFFWriteDirectory(tif))
-                       return (0);
-       }
-       return (1);
+    if (!TIFFFlushData(tif))
+        return (0);
+                
+    /* In update (r+) mode we try to detect the case where 
+       only the strip/tile map has been altered, and we try to 
+       rewrite only that portion of the directory without 
+       making any other changes */
+                
+    if( (tif->tif_flags & TIFF_DIRTYSTRIP)
+        && !(tif->tif_flags & TIFF_DIRTYDIRECT) 
+        && tif->tif_mode == O_RDWR )
+    {
+        uint64  *offsets=NULL, *sizes=NULL;
+
+        if( TIFFIsTiled(tif) )
+        {
+            if( TIFFGetField( tif, TIFFTAG_TILEOFFSETS, &offsets ) 
+                && TIFFGetField( tif, TIFFTAG_TILEBYTECOUNTS, &sizes ) 
+                && _TIFFRewriteField( tif, TIFFTAG_TILEOFFSETS, TIFF_LONG8, 
+                                      tif->tif_dir.td_nstrips, offsets )
+                && _TIFFRewriteField( tif, TIFFTAG_TILEBYTECOUNTS, TIFF_LONG8, 
+                                      tif->tif_dir.td_nstrips, sizes ) )
+            {
+                tif->tif_flags &= ~TIFF_DIRTYSTRIP;
+                tif->tif_flags &= ~TIFF_BEENWRITING;
+                return 1;
+            }
+        }
+        else
+        {
+            if( TIFFGetField( tif, TIFFTAG_STRIPOFFSETS, &offsets ) 
+                && TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &sizes ) 
+                && _TIFFRewriteField( tif, TIFFTAG_STRIPOFFSETS, TIFF_LONG8, 
+                                      tif->tif_dir.td_nstrips, offsets )
+                && _TIFFRewriteField( tif, TIFFTAG_STRIPBYTECOUNTS, TIFF_LONG8, 
+                                      tif->tif_dir.td_nstrips, sizes ) )
+            {
+                tif->tif_flags &= ~TIFF_DIRTYSTRIP;
+                tif->tif_flags &= ~TIFF_BEENWRITING;
+                return 1;
+            }
+        }
+    }
+
+    if ((tif->tif_flags & (TIFF_DIRTYDIRECT|TIFF_DIRTYSTRIP)) 
+        && !TIFFRewriteDirectory(tif))
+        return (0);
+
+    return (1);
 }
 
 /*
@@ -56,7 +99,7 @@ int
 TIFFFlushData(TIFF* tif)
 {
        if ((tif->tif_flags & TIFF_BEENWRITING) == 0)
-               return (0);
+               return (1);
        if (tif->tif_flags & TIFF_POSTENCODE) {
                tif->tif_flags &= ~TIFF_POSTENCODE;
                if (!(*tif->tif_postencode)(tif))
@@ -65,3 +108,11 @@ TIFFFlushData(TIFF* tif)
        return (TIFFFlushData1(tif));
 }
 
+/* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 2b2a6bc41509f07d08925a0042c02d77be44f472..e8f13344dd4ab7ff1427da887b4bea312a370043 100644 (file)
 #include "tiffiop.h"
 #include <stdio.h>
 
-static int gtTileContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtTileSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtStripContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtStripSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int pickTileContigCase(TIFFRGBAImage*);
-static int pickTileSeparateCase(TIFFRGBAImage*);
+static int gtTileContig(TIFFRGBAImage*, uint32*, uint32, uint32);
+static int gtTileSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
+static int gtStripContig(TIFFRGBAImage*, uint32*, uint32, uint32);
+static int gtStripSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
+static int PickContigCase(TIFFRGBAImage*);
+static int PickSeparateCase(TIFFRGBAImage*);
 
-static const char photoTag[] = "PhotometricInterpretation";
+static int BuildMapUaToAa(TIFFRGBAImage* img);
+static int BuildMapBitdepth16To8(TIFFRGBAImage* img);
+
+static const char photoTag[] = "PhotometricInterpretation";
 
 /* 
  * Helper constants used in Orientation tag handling
@@ -51,7 +54,7 @@ static        const char photoTag[] = "PhotometricInterpretation";
  * Color conversion constants. We will define display types here.
  */
 
-TIFFDisplay display_sRGB = {
+static const TIFFDisplay display_sRGB = {
        {                       /* XYZ -> luminance matrix */
                {  3.2410F, -1.5374F, -0.4986F },
                {  -0.9692F, 1.8760F, 0.0416F },
@@ -72,118 +75,122 @@ TIFFDisplay display_sRGB = {
 int
 TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
 {
-    TIFFDirectory* td = &tif->tif_dir;
-    uint16 photometric;
-    int colorchannels;
+       TIFFDirectory* td = &tif->tif_dir;
+       uint16 photometric;
+       int colorchannels;
 
-    if (!tif->tif_decodestatus) {
-       sprintf(emsg, "Sorry, requested compression method is not configured");
-       return (0);
-    }
-    switch (td->td_bitspersample) {
-    case 1: case 2: case 4:
-    case 8: case 16:
-       break;
-    default:
-       sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
-           td->td_bitspersample);
-       return (0);
-    }
-    colorchannels = td->td_samplesperpixel - td->td_extrasamples;
-    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric)) {
-       switch (colorchannels) {
-       case 1:
-           photometric = PHOTOMETRIC_MINISBLACK;
-           break;
-       case 3:
-           photometric = PHOTOMETRIC_RGB;
-           break;
-       default:
-           sprintf(emsg, "Missing needed %s tag", photoTag);
-           return (0);
-       }
-    }
-    switch (photometric) {
-    case PHOTOMETRIC_MINISWHITE:
-    case PHOTOMETRIC_MINISBLACK:
-    case PHOTOMETRIC_PALETTE:
-       if (td->td_planarconfig == PLANARCONFIG_CONTIG 
-            && td->td_samplesperpixel != 1
-            && td->td_bitspersample < 8 ) {
-           sprintf(emsg,
-                    "Sorry, can not handle contiguous data with %s=%d, "
-                    "and %s=%d and Bits/Sample=%d",
-                    photoTag, photometric,
-                    "Samples/pixel", td->td_samplesperpixel,
-                    td->td_bitspersample);
-           return (0);
+       if (!tif->tif_decodestatus) {
+               sprintf(emsg, "Sorry, requested compression method is not configured");
+               return (0);
        }
-        /*
-        ** We should likely validate that any extra samples are either
-        ** to be ignored, or are alpha, and if alpha we should try to use
-        ** them.  But for now we won't bother with this. 
-        */
-       break;
-    case PHOTOMETRIC_YCBCR:
-       if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
-           sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",
-               "Planarconfiguration", td->td_planarconfig);
-           return (0);
+       switch (td->td_bitspersample) {
+               case 1:
+               case 2:
+               case 4:
+               case 8:
+               case 16:
+                       break;
+               default:
+                       sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
+                           td->td_bitspersample);
+                       return (0);
        }
-       break;
-    case PHOTOMETRIC_RGB: 
-       if (colorchannels < 3) {
-           sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
-               "Color channels", colorchannels);
-           return (0);
-       }
-       break;
-    case PHOTOMETRIC_SEPARATED:
-       {
-               uint16 inkset;
-               TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
-               if (inkset != INKSET_CMYK) {
-                   sprintf(emsg,
-                           "Sorry, can not handle separated image with %s=%d",
-                           "InkSet", inkset);
-                   return 0;
-               }
-               if (td->td_samplesperpixel < 4) {
-                   sprintf(emsg,
-                           "Sorry, can not handle separated image with %s=%d",
-                           "Samples/pixel", td->td_samplesperpixel);
-                   return 0;
+       colorchannels = td->td_samplesperpixel - td->td_extrasamples;
+       if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric)) {
+               switch (colorchannels) {
+                       case 1:
+                               photometric = PHOTOMETRIC_MINISBLACK;
+                               break;
+                       case 3:
+                               photometric = PHOTOMETRIC_RGB;
+                               break;
+                       default:
+                               sprintf(emsg, "Missing needed %s tag", photoTag);
+                               return (0);
                }
-               break;
        }
-    case PHOTOMETRIC_LOGL:
-       if (td->td_compression != COMPRESSION_SGILOG) {
-           sprintf(emsg, "Sorry, LogL data must have %s=%d",
-               "Compression", COMPRESSION_SGILOG);
-           return (0);
+       switch (photometric) {
+               case PHOTOMETRIC_MINISWHITE:
+               case PHOTOMETRIC_MINISBLACK:
+               case PHOTOMETRIC_PALETTE:
+                       if (td->td_planarconfig == PLANARCONFIG_CONTIG
+                           && td->td_samplesperpixel != 1
+                           && td->td_bitspersample < 8 ) {
+                               sprintf(emsg,
+                                   "Sorry, can not handle contiguous data with %s=%d, "
+                                   "and %s=%d and Bits/Sample=%d",
+                                   photoTag, photometric,
+                                   "Samples/pixel", td->td_samplesperpixel,
+                                   td->td_bitspersample);
+                               return (0);
+                       }
+                       /*
+                        * We should likely validate that any extra samples are either
+                        * to be ignored, or are alpha, and if alpha we should try to use
+                        * them.  But for now we won't bother with this.
+                       */
+                       break;
+               case PHOTOMETRIC_YCBCR:
+                       /*
+                        * TODO: if at all meaningful and useful, make more complete
+                        * support check here, or better still, refactor to let supporting
+                        * code decide whether there is support and what meaningfull
+                        * error to return
+                        */
+                       break;
+               case PHOTOMETRIC_RGB:
+                       if (colorchannels < 3) {
+                               sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
+                                   "Color channels", colorchannels);
+                               return (0);
+                       }
+                       break;
+               case PHOTOMETRIC_SEPARATED:
+                       {
+                               uint16 inkset;
+                               TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
+                               if (inkset != INKSET_CMYK) {
+                                       sprintf(emsg,
+                                           "Sorry, can not handle separated image with %s=%d",
+                                           "InkSet", inkset);
+                                       return 0;
+                               }
+                               if (td->td_samplesperpixel < 4) {
+                                       sprintf(emsg,
+                                           "Sorry, can not handle separated image with %s=%d",
+                                           "Samples/pixel", td->td_samplesperpixel);
+                                       return 0;
+                               }
+                               break;
+                       }
+               case PHOTOMETRIC_LOGL:
+                       if (td->td_compression != COMPRESSION_SGILOG) {
+                               sprintf(emsg, "Sorry, LogL data must have %s=%d",
+                                   "Compression", COMPRESSION_SGILOG);
+                               return (0);
+                       }
+                       break;
+               case PHOTOMETRIC_LOGLUV:
+                       if (td->td_compression != COMPRESSION_SGILOG &&
+                           td->td_compression != COMPRESSION_SGILOG24) {
+                               sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
+                                   "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
+                               return (0);
+                       }
+                       if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
+                               sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
+                                   "Planarconfiguration", td->td_planarconfig);
+                               return (0);
+                       }
+                       break;
+               case PHOTOMETRIC_CIELAB:
+                       break;
+               default:
+                       sprintf(emsg, "Sorry, can not handle image with %s=%d",
+                           photoTag, photometric);
+                       return (0);
        }
-       break;
-    case PHOTOMETRIC_LOGLUV:
-       if (td->td_compression != COMPRESSION_SGILOG &&
-               td->td_compression != COMPRESSION_SGILOG24) {
-           sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
-               "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
-           return (0);
-       }
-       if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
-           sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
-               "Planarconfiguration", td->td_planarconfig);
-           return (0);
-       }
-       break;
-    case PHOTOMETRIC_CIELAB:
-       break;
-    default:
-       sprintf(emsg, "Sorry, can not handle image with %s=%d",
-           photoTag, photometric);
-       return (0);
-    }
-    return (1);
+       return (1);
 }
 
 void
@@ -199,11 +206,16 @@ TIFFRGBAImageEnd(TIFFRGBAImage* img)
                _TIFFfree(img->ycbcr), img->ycbcr = NULL;
        if (img->cielab)
                _TIFFfree(img->cielab), img->cielab = NULL;
+       if (img->UaToAa)
+               _TIFFfree(img->UaToAa), img->UaToAa = NULL;
+       if (img->Bitdepth16To8)
+               _TIFFfree(img->Bitdepth16To8), img->Bitdepth16To8 = NULL;
 
        if( img->redcmap ) {
                _TIFFfree( img->redcmap );
                _TIFFfree( img->greencmap );
                _TIFFfree( img->bluecmap );
+                img->redcmap = img->greencmap = img->bluecmap = NULL;
        }
 }
 
@@ -221,221 +233,236 @@ isCCITTCompression(TIFF* tif)
 int
 TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int stop, char emsg[1024])
 {
-    uint16* sampleinfo;
-    uint16 extrasamples;
-    uint16 planarconfig;
-    uint16 compress;
-    int colorchannels;
-    uint16 *red_orig, *green_orig, *blue_orig;
-    int n_color;
-
-    /* Initialize to normal values */
-    img->row_offset = 0;
-    img->col_offset = 0;
-    img->redcmap = NULL;
-    img->greencmap = NULL;
-    img->bluecmap = NULL;
-    img->req_orientation = ORIENTATION_BOTLEFT;            /* It is the default */
-    
-    img->tif = tif;
-    img->stoponerr = stop;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);
-    switch (img->bitspersample) {
-    case 1: case 2: case 4:
-    case 8: case 16:
-       break;
-    default:
-       sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
-           img->bitspersample);
-       return (0);
-    }
-    img->alpha = 0;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,
-       &extrasamples, &sampleinfo);
-    if (extrasamples >= 1)
-    {
-       switch (sampleinfo[0]) {
-       case EXTRASAMPLE_UNSPECIFIED:   /* Workaround for some images without */
-               if (img->samplesperpixel > 3)   /* correct info about alpha channel */
-                       img->alpha = EXTRASAMPLE_ASSOCALPHA;
-               break;
-       case EXTRASAMPLE_ASSOCALPHA:    /* data is pre-multiplied */
-       case EXTRASAMPLE_UNASSALPHA:    /* data is not pre-multiplied */
-               img->alpha = sampleinfo[0];
-               break;
+       uint16* sampleinfo;
+       uint16 extrasamples;
+       uint16 planarconfig;
+       uint16 compress;
+       int colorchannels;
+       uint16 *red_orig, *green_orig, *blue_orig;
+       int n_color;
+
+       /* Initialize to normal values */
+       img->row_offset = 0;
+       img->col_offset = 0;
+       img->redcmap = NULL;
+       img->greencmap = NULL;
+       img->bluecmap = NULL;
+       img->req_orientation = ORIENTATION_BOTLEFT;     /* It is the default */
+
+       img->tif = tif;
+       img->stoponerr = stop;
+       TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);
+       switch (img->bitspersample) {
+               case 1:
+               case 2:
+               case 4:
+               case 8:
+               case 16:
+                       break;
+               default:
+                       sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
+                           img->bitspersample);
+                       goto fail_return;
+       }
+       img->alpha = 0;
+       TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);
+       TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,
+           &extrasamples, &sampleinfo);
+       if (extrasamples >= 1)
+       {
+               switch (sampleinfo[0]) {
+                       case EXTRASAMPLE_UNSPECIFIED:          /* Workaround for some images without */
+                               if (img->samplesperpixel > 3)  /* correct info about alpha channel */
+                                       img->alpha = EXTRASAMPLE_ASSOCALPHA;
+                               break;
+                       case EXTRASAMPLE_ASSOCALPHA:           /* data is pre-multiplied */
+                       case EXTRASAMPLE_UNASSALPHA:           /* data is not pre-multiplied */
+                               img->alpha = sampleinfo[0];
+                               break;
+               }
        }
-    }
 
 #ifdef DEFAULT_EXTRASAMPLE_AS_ALPHA
-    if( !TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric))
-        img->photometric = PHOTOMETRIC_MINISWHITE;
-
-    if( extrasamples == 0 
-        && img->samplesperpixel == 4 
-        && img->photometric == PHOTOMETRIC_RGB )
-    {
-        img->alpha = EXTRASAMPLE_ASSOCALPHA;
-        extrasamples = 1;
-    }
-#endif
-
-    colorchannels = img->samplesperpixel - extrasamples;
-    TIFFGetFieldDefaulted(tif, TIFFTAG_COMPRESSION, &compress);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
-    if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {
-       switch (colorchannels) {
-       case 1:
-           if (isCCITTCompression(tif))
+       if( !TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric))
                img->photometric = PHOTOMETRIC_MINISWHITE;
-           else
-               img->photometric = PHOTOMETRIC_MINISBLACK;
-           break;
-       case 3:
-           img->photometric = PHOTOMETRIC_RGB;
-           break;
-       default:
-           sprintf(emsg, "Missing needed %s tag", photoTag);
-           return (0);
-       }
-    }
-    switch (img->photometric) {
-    case PHOTOMETRIC_PALETTE:
-       if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
-           &red_orig, &green_orig, &blue_orig)) {
-           sprintf(emsg, "Missing required \"Colormap\" tag");
-           return (0);
-       }
-
-        /* copy the colormaps so we can modify them */
-        n_color = (1L << img->bitspersample);
-        img->redcmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        img->greencmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        img->bluecmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
-        if( !img->redcmap || !img->greencmap || !img->bluecmap ) {
-           sprintf(emsg, "Out of memory for colormap copy");
-           return (0);
-        }
 
-        _TIFFmemcpy( img->redcmap, red_orig, n_color * 2 );
-        _TIFFmemcpy( img->greencmap, green_orig, n_color * 2 );
-        _TIFFmemcpy( img->bluecmap, blue_orig, n_color * 2 );
-        
-       /* fall thru... */
-    case PHOTOMETRIC_MINISWHITE:
-    case PHOTOMETRIC_MINISBLACK:
-       if (planarconfig == PLANARCONFIG_CONTIG 
-            && img->samplesperpixel != 1
-            && img->bitspersample < 8 ) {
-           sprintf(emsg,
-                    "Sorry, can not handle contiguous data with %s=%d, "
-                    "and %s=%d and Bits/Sample=%d",
-                    photoTag, img->photometric,
-                    "Samples/pixel", img->samplesperpixel,
-                    img->bitspersample);
-           return (0);
-       }
-       break;
-    case PHOTOMETRIC_YCBCR:
-       if (planarconfig != PLANARCONFIG_CONTIG) {
-           sprintf(emsg, "Sorry, can not handle YCbCr images with %s=%d",
-               "Planarconfiguration", planarconfig);
-           return (0);
+       if( extrasamples == 0
+           && img->samplesperpixel == 4
+           && img->photometric == PHOTOMETRIC_RGB )
+       {
+               img->alpha = EXTRASAMPLE_ASSOCALPHA;
+               extrasamples = 1;
        }
-       /* It would probably be nice to have a reality check here. */
-       if (planarconfig == PLANARCONFIG_CONTIG)
-           /* can rely on libjpeg to convert to RGB */
-           /* XXX should restore current state on exit */
-           switch (compress) {
-               case COMPRESSION_OJPEG:
-               case COMPRESSION_JPEG:
-                   TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
-                   img->photometric = PHOTOMETRIC_RGB;
-                    break;
+#endif
 
-                default:
-                    /* do nothing */;
-                    break;
-           }
-       break;
-    case PHOTOMETRIC_RGB: 
-       if (colorchannels < 3) {
-           sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
-               "Color channels", colorchannels);
-           return (0);
-       }
-       break;
-    case PHOTOMETRIC_SEPARATED: {
-       uint16 inkset;
-       TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
-       if (inkset != INKSET_CMYK) {
-           sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
-               "InkSet", inkset);
-           return (0);
-       }
-       if (img->samplesperpixel < 4) {
-           sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
-               "Samples/pixel", img->samplesperpixel);
-           return (0);
-       }
-       break;
-    }
-    case PHOTOMETRIC_LOGL:
-       if (compress != COMPRESSION_SGILOG) {
-           sprintf(emsg, "Sorry, LogL data must have %s=%d",
-               "Compression", COMPRESSION_SGILOG);
-           return (0);
-       }
-       TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
-       img->photometric = PHOTOMETRIC_MINISBLACK;      /* little white lie */
-       img->bitspersample = 8;
-       break;
-    case PHOTOMETRIC_LOGLUV:
-       if (compress != COMPRESSION_SGILOG && compress != COMPRESSION_SGILOG24) {
-           sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
-               "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
-           return (0);
-       }
-       if (planarconfig != PLANARCONFIG_CONTIG) {
-           sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
-               "Planarconfiguration", planarconfig);
-           return (0);
+       colorchannels = img->samplesperpixel - extrasamples;
+       TIFFGetFieldDefaulted(tif, TIFFTAG_COMPRESSION, &compress);
+       TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
+       if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {
+               switch (colorchannels) {
+                       case 1:
+                               if (isCCITTCompression(tif))
+                                       img->photometric = PHOTOMETRIC_MINISWHITE;
+                               else
+                                       img->photometric = PHOTOMETRIC_MINISBLACK;
+                               break;
+                       case 3:
+                               img->photometric = PHOTOMETRIC_RGB;
+                               break;
+                       default:
+                               sprintf(emsg, "Missing needed %s tag", photoTag);
+                                goto fail_return;
+               }
        }
-       TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
-       img->photometric = PHOTOMETRIC_RGB;             /* little white lie */
-       img->bitspersample = 8;
-       break;
-    case PHOTOMETRIC_CIELAB:
-       break;
-    default:
-       sprintf(emsg, "Sorry, can not handle image with %s=%d",
-           photoTag, img->photometric);
-       return (0);
-    }
-    img->Map = NULL;
-    img->BWmap = NULL;
-    img->PALmap = NULL;
-    img->ycbcr = NULL;
-    img->cielab = NULL;
-    TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);
-    TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);
-    img->isContig =
-       !(planarconfig == PLANARCONFIG_SEPARATE && colorchannels > 1);
-    if (img->isContig) {
-       img->get = TIFFIsTiled(tif) ? gtTileContig : gtStripContig;
-       if (!pickTileContigCase(img)) {
-               sprintf(emsg, "Sorry, can not handle image");
-               return 0;
+       switch (img->photometric) {
+               case PHOTOMETRIC_PALETTE:
+                       if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
+                           &red_orig, &green_orig, &blue_orig)) {
+                               sprintf(emsg, "Missing required \"Colormap\" tag");
+                                goto fail_return;
+                       }
+
+                       /* copy the colormaps so we can modify them */
+                       n_color = (1L << img->bitspersample);
+                       img->redcmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
+                       img->greencmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
+                       img->bluecmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
+                       if( !img->redcmap || !img->greencmap || !img->bluecmap ) {
+                               sprintf(emsg, "Out of memory for colormap copy");
+                                goto fail_return;
+                       }
+
+                       _TIFFmemcpy( img->redcmap, red_orig, n_color * 2 );
+                       _TIFFmemcpy( img->greencmap, green_orig, n_color * 2 );
+                       _TIFFmemcpy( img->bluecmap, blue_orig, n_color * 2 );
+
+                       /* fall thru... */
+               case PHOTOMETRIC_MINISWHITE:
+               case PHOTOMETRIC_MINISBLACK:
+                       if (planarconfig == PLANARCONFIG_CONTIG
+                           && img->samplesperpixel != 1
+                           && img->bitspersample < 8 ) {
+                               sprintf(emsg,
+                                   "Sorry, can not handle contiguous data with %s=%d, "
+                                   "and %s=%d and Bits/Sample=%d",
+                                   photoTag, img->photometric,
+                                   "Samples/pixel", img->samplesperpixel,
+                                   img->bitspersample);
+                                goto fail_return;
+                       }
+                       break;
+               case PHOTOMETRIC_YCBCR:
+                       /* It would probably be nice to have a reality check here. */
+                       if (planarconfig == PLANARCONFIG_CONTIG)
+                               /* can rely on libjpeg to convert to RGB */
+                               /* XXX should restore current state on exit */
+                               switch (compress) {
+                                       case COMPRESSION_JPEG:
+                                               /*
+                                                * TODO: when complete tests verify complete desubsampling
+                                                * and YCbCr handling, remove use of TIFFTAG_JPEGCOLORMODE in
+                                                * favor of tif_getimage.c native handling
+                                                */
+                                               TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+                                               img->photometric = PHOTOMETRIC_RGB;
+                                               break;
+                                       default:
+                                               /* do nothing */;
+                                               break;
+                               }
+                       /*
+                        * TODO: if at all meaningful and useful, make more complete
+                        * support check here, or better still, refactor to let supporting
+                        * code decide whether there is support and what meaningfull
+                        * error to return
+                        */
+                       break;
+               case PHOTOMETRIC_RGB:
+                       if (colorchannels < 3) {
+                               sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
+                                   "Color channels", colorchannels);
+                                goto fail_return;
+                       }
+                       break;
+               case PHOTOMETRIC_SEPARATED:
+                       {
+                               uint16 inkset;
+                               TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
+                               if (inkset != INKSET_CMYK) {
+                                       sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
+                                           "InkSet", inkset);
+                                        goto fail_return;
+                               }
+                               if (img->samplesperpixel < 4) {
+                                       sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
+                                           "Samples/pixel", img->samplesperpixel);
+                                        goto fail_return;
+                               }
+                       }
+                       break;
+               case PHOTOMETRIC_LOGL:
+                       if (compress != COMPRESSION_SGILOG) {
+                               sprintf(emsg, "Sorry, LogL data must have %s=%d",
+                                   "Compression", COMPRESSION_SGILOG);
+                                goto fail_return;
+                       }
+                       TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
+                       img->photometric = PHOTOMETRIC_MINISBLACK;      /* little white lie */
+                       img->bitspersample = 8;
+                       break;
+               case PHOTOMETRIC_LOGLUV:
+                       if (compress != COMPRESSION_SGILOG && compress != COMPRESSION_SGILOG24) {
+                               sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
+                                   "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
+                                goto fail_return;
+                       }
+                       if (planarconfig != PLANARCONFIG_CONTIG) {
+                               sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
+                                   "Planarconfiguration", planarconfig);
+                               return (0);
+                       }
+                       TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
+                       img->photometric = PHOTOMETRIC_RGB;             /* little white lie */
+                       img->bitspersample = 8;
+                       break;
+               case PHOTOMETRIC_CIELAB:
+                       break;
+               default:
+                       sprintf(emsg, "Sorry, can not handle image with %s=%d",
+                           photoTag, img->photometric);
+                        goto fail_return;
        }
-    } else {
-       img->get = TIFFIsTiled(tif) ? gtTileSeparate : gtStripSeparate;
-       if (!pickTileSeparateCase(img)) {
-               sprintf(emsg, "Sorry, can not handle image");
-               return 0;
+       img->Map = NULL;
+       img->BWmap = NULL;
+       img->PALmap = NULL;
+       img->ycbcr = NULL;
+       img->cielab = NULL;
+       img->UaToAa = NULL;
+       img->Bitdepth16To8 = NULL;
+       TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);
+       TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);
+       TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);
+       img->isContig =
+           !(planarconfig == PLANARCONFIG_SEPARATE && img->samplesperpixel > 1);
+       if (img->isContig) {
+               if (!PickContigCase(img)) {
+                       sprintf(emsg, "Sorry, can not handle image");
+                       goto fail_return;
+               }
+       } else {
+               if (!PickSeparateCase(img)) {
+                       sprintf(emsg, "Sorry, can not handle image");
+                       goto fail_return;
+               }
        }
-    }
-    return 1;
+       return 1;
+
+  fail_return:
+        _TIFFfree( img->redcmap );
+        _TIFFfree( img->greencmap );
+        _TIFFfree( img->bluecmap );
+        img->redcmap = img->greencmap = img->bluecmap = NULL;
+        return 0;
 }
 
 int
@@ -473,7 +500,7 @@ TIFFReadRGBAImageOriented(TIFF* tif,
                        rwidth, img.height);
                TIFFRGBAImageEnd(&img);
        } else {
-               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
                ok = 0;
     }
     return (ok);
@@ -564,7 +591,7 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
     TIFF* tif = img->tif;
     tileContigRoutine put = img->put.contig;
     uint32 col, row, y, rowstoread;
-    uint32 pos;
+    tmsize_t pos;
     uint32 tw, th;
     unsigned char* buf;
     int32 fromskew, toskew;
@@ -573,7 +600,7 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 
     buf = (unsigned char*) _TIFFmalloc(TIFFTileSize(tif));
     if (buf == 0) {
-               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", "No space for tile buffer");
                return (0);
     }
     _TIFFmemset(buf, 0, TIFFTileSize(tif));
@@ -596,14 +623,14 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
        nrow = (row + rowstoread > h ? h - row : rowstoread);
        for (col = 0; col < w; col += tw) 
         {
-            if (TIFFReadTile(tif, buf, col+img->col_offset,
-                             row+img->row_offset, 0, 0) < 0 && img->stoponerr)
+           if (TIFFReadTile(tif, buf, col+img->col_offset,  
+                            row+img->row_offset, 0, 0)==(tmsize_t)(-1) && img->stoponerr)
             {
                 ret = 0;
                 break;
             }
            
-            pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
+           pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);  
 
            if (col + tw > w) 
             {
@@ -654,119 +681,144 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 static int
 gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 {
-    TIFF* tif = img->tif;
-    tileSeparateRoutine put = img->put.separate;
-    uint32 col, row, y, rowstoread;
-    uint32 pos;
-    uint32 tw, th;
-    unsigned char* buf;
-    unsigned char* r;
-    unsigned char* g;
-    unsigned char* b;
-    unsigned char* a;
-    tsize_t tilesize;
-    int32 fromskew, toskew;
-    int alpha = img->alpha;
-    uint32 nrow;
-    int ret = 1, flip;
-
-    tilesize = TIFFTileSize(tif);
-    buf = (unsigned char*) _TIFFmalloc(4*tilesize);
-    if (buf == 0) {
-               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
+       TIFF* tif = img->tif;
+       tileSeparateRoutine put = img->put.separate;
+       uint32 col, row, y, rowstoread;
+       tmsize_t pos;
+       uint32 tw, th;
+       unsigned char* buf;
+       unsigned char* p0;
+       unsigned char* p1;
+       unsigned char* p2;
+       unsigned char* pa;
+       tmsize_t tilesize;
+       tmsize_t bufsize;
+       int32 fromskew, toskew;
+       int alpha = img->alpha;
+       uint32 nrow;
+       int ret = 1, flip;
+        int colorchannels;
+
+       tilesize = TIFFTileSize(tif);  
+       bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,tilesize);
+       if (bufsize == 0) {
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtTileSeparate");
                return (0);
-    }
-    _TIFFmemset(buf, 0, 4*tilesize);
-    r = buf;
-    g = r + tilesize;
-    b = g + tilesize;
-    a = b + tilesize;
-    if (!alpha)
-       _TIFFmemset(a, 0xff, tilesize);
-    TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
-    TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-           y = h - 1;
-           toskew = -(int32)(tw + w);
-    }
-    else {
-           y = 0;
-           toskew = -(int32)(tw - w);
-    }
+       }
+       buf = (unsigned char*) _TIFFmalloc(bufsize);
+       if (buf == 0) {
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", "No space for tile buffer");
+               return (0);
+       }
+       _TIFFmemset(buf, 0, bufsize);
+       p0 = buf;
+       p1 = p0 + tilesize;
+       p2 = p1 + tilesize;
+       pa = (alpha?(p2+tilesize):NULL);
+       TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
+       TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
+
+       flip = setorientation(img);
+       if (flip & FLIP_VERTICALLY) {
+               y = h - 1;
+               toskew = -(int32)(tw + w);
+       }
+       else {
+               y = 0;
+               toskew = -(int32)(tw - w);
+       }
 
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = th - (row + img->row_offset) % th;
-       nrow = (row + rowstoread > h ? h - row : rowstoread);
-        for (col = 0; col < w; col += tw) 
+        switch( img->photometric )
         {
-            if (TIFFReadTile(tif, r, col+img->col_offset,
-                             row+img->row_offset,0,0) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (TIFFReadTile(tif, g, col+img->col_offset,
-                             row+img->row_offset,0,1) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (TIFFReadTile(tif, b, col+img->col_offset,
-                             row+img->row_offset,0,2) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-            if (alpha && TIFFReadTile(tif,a,col+img->col_offset,
-                                      row+img->row_offset,0,3) < 0 && img->stoponerr)
-            {
-                ret = 0;
-                break;
-            }
-
-            pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
+          case PHOTOMETRIC_MINISWHITE:
+          case PHOTOMETRIC_MINISBLACK:
+          case PHOTOMETRIC_PALETTE:
+            colorchannels = 1;
+            p2 = p1 = p0;
+            break;
 
-            if (col + tw > w) 
-            {
-                /*
-                 * Tile is clipped horizontally.  Calculate
-                 * visible portion and skewing factors.
-                 */
-                uint32 npix = w - col;
-                fromskew = tw - npix;
-                (*put)(img, raster+y*w+col, col, y,
-                       npix, nrow, fromskew, toskew + fromskew, 
-                       r + pos, g + pos, b + pos, a + pos);
-            } else {
-                (*put)(img, raster+y*w+col, col, y,
-                       tw, nrow, 0, toskew, r + pos, g + pos, b + pos, a + pos);
-            }
+          default:
+            colorchannels = 3;
+            break;
         }
 
-        y += (flip & FLIP_VERTICALLY ?-(int32) nrow : (int32) nrow);
-    }
+       for (row = 0; row < h; row += nrow)
+       {
+               rowstoread = th - (row + img->row_offset) % th;
+               nrow = (row + rowstoread > h ? h - row : rowstoread);
+               for (col = 0; col < w; col += tw)
+               {
+                       if (TIFFReadTile(tif, p0, col+img->col_offset,  
+                           row+img->row_offset,0,0)==(tmsize_t)(-1) && img->stoponerr)
+                       {
+                               ret = 0;
+                               break;
+                       }
+                       if (colorchannels > 1 
+                            && TIFFReadTile(tif, p1, col+img->col_offset,  
+                                            row+img->row_offset,0,1) == (tmsize_t)(-1) 
+                            && img->stoponerr)
+                       {
+                               ret = 0;
+                               break;
+                       }
+                       if (colorchannels > 1 
+                            && TIFFReadTile(tif, p2, col+img->col_offset,  
+                                            row+img->row_offset,0,2) == (tmsize_t)(-1) 
+                            && img->stoponerr)
+                       {
+                               ret = 0;
+                               break;
+                       }
+                       if (alpha
+                            && TIFFReadTile(tif,pa,col+img->col_offset,  
+                                            row+img->row_offset,0,colorchannels) == (tmsize_t)(-1) 
+                            && img->stoponerr)
+                        {
+                            ret = 0;
+                            break;
+                       }
+
+                       pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);  
+
+                       if (col + tw > w)
+                       {
+                               /*
+                                * Tile is clipped horizontally.  Calculate
+                                * visible portion and skewing factors.
+                                */
+                               uint32 npix = w - col;
+                               fromskew = tw - npix;
+                               (*put)(img, raster+y*w+col, col, y,
+                                   npix, nrow, fromskew, toskew + fromskew,
+                                   p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL));
+                       } else {
+                               (*put)(img, raster+y*w+col, col, y,
+                                   tw, nrow, 0, toskew, p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL));
+                       }
+               }
 
-    if (flip & FLIP_HORIZONTALLY) {
-           uint32 line;
+               y += (flip & FLIP_VERTICALLY ?-(int32) nrow : (int32) nrow);
+       }
 
-           for (line = 0; line < h; line++) {
-                   uint32 *left = raster + (line * w);
-                   uint32 *right = left + w - 1;
-                   
-                   while ( left < right ) {
-                           uint32 temp = *left;
-                           *left = *right;
-                           *right = temp;
-                           left++, right--;
-                   }
-           }
-    }
+       if (flip & FLIP_HORIZONTALLY) {
+               uint32 line;
 
-    _TIFFfree(buf);
-    return (ret);
+               for (line = 0; line < h; line++) {
+                       uint32 *left = raster + (line * w);
+                       uint32 *right = left + w - 1;
+
+                       while ( left < right ) {
+                               uint32 temp = *left;
+                               *left = *right;
+                               *right = temp;
+                               left++, right--;
+                       }
+               }
+       }
+
+       _TIFFfree(buf);
+       return (ret);
 }
 
 /*
@@ -778,73 +830,78 @@ gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 static int
 gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 {
-    TIFF* tif = img->tif;
-    tileContigRoutine put = img->put.contig;
-    uint32 row, y, nrow, rowstoread;
-    uint32 pos;
-    unsigned char* buf;
-    uint32 rowsperstrip;
-    uint32 imagewidth = img->width;
-    tsize_t scanline;
-    int32 fromskew, toskew;
-    int ret = 1, flip;
-
-    buf = (unsigned char*) _TIFFmalloc(TIFFStripSize(tif));
-    if (buf == 0) {
+       TIFF* tif = img->tif;
+       tileContigRoutine put = img->put.contig;
+       uint32 row, y, nrow, nrowsub, rowstoread;
+       tmsize_t pos;
+       unsigned char* buf;
+       uint32 rowsperstrip;
+       uint16 subsamplinghor,subsamplingver;
+       uint32 imagewidth = img->width;
+       tmsize_t scanline;
+       int32 fromskew, toskew;
+       int ret = 1, flip;
+
+       buf = (unsigned char*) _TIFFmalloc(TIFFStripSize(tif));
+       if (buf == 0) {
                TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for strip buffer");
                return (0);
-    }
-    _TIFFmemset(buf, 0, TIFFStripSize(tif));
+       }
+       _TIFFmemset(buf, 0, TIFFStripSize(tif));
 
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-           y = h - 1;
-           toskew = -(int32)(w + w);
-    } else {
-           y = 0;
-           toskew = -(int32)(w - w);
-    }
+       flip = setorientation(img);
+       if (flip & FLIP_VERTICALLY) {
+               y = h - 1;
+               toskew = -(int32)(w + w);
+       } else {
+               y = 0;
+               toskew = -(int32)(w - w);
+       }
 
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
-    scanline = TIFFScanlineSize(tif);
-    fromskew = (w < imagewidth ? imagewidth - w : 0);
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
-        nrow = (row + rowstoread > h ? h - row : rowstoread);
-        if (TIFFReadEncodedStrip(tif,
-                                 TIFFComputeStrip(tif,row+img->row_offset, 0),
-                                 buf, 
-                                 ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
+       TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
+       TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, &subsamplinghor, &subsamplingver);
+       scanline = TIFFScanlineSize(tif);
+       fromskew = (w < imagewidth ? imagewidth - w : 0);
+       for (row = 0; row < h; row += nrow)
+       {
+               rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
+               nrow = (row + rowstoread > h ? h - row : rowstoread);
+               nrowsub = nrow;
+               if ((nrowsub%subsamplingver)!=0)
+                       nrowsub+=subsamplingver-nrowsub%subsamplingver;
+               if (TIFFReadEncodedStrip(tif,
+                   TIFFComputeStrip(tif,row+img->row_offset, 0),
+                   buf,
+                   ((row + img->row_offset)%rowsperstrip + nrowsub) * scanline)==(tmsize_t)(-1)
+                   && img->stoponerr)
+               {
+                       ret = 0;
+                       break;
+               }
 
-        pos = ((row + img->row_offset) % rowsperstrip) * scanline;
-        (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos);
-        y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
-    }
+               pos = ((row + img->row_offset) % rowsperstrip) * scanline;
+               (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos);
+               y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
+       }
 
-    if (flip & FLIP_HORIZONTALLY) {
-           uint32 line;
+       if (flip & FLIP_HORIZONTALLY) {
+               uint32 line;
 
-           for (line = 0; line < h; line++) {
-                   uint32 *left = raster + (line * w);
-                   uint32 *right = left + w - 1;
-                   
-                   while ( left < right ) {
-                           uint32 temp = *left;
-                           *left = *right;
-                           *right = temp;
-                           left++, right--;
-                   }
-           }
-    }
+               for (line = 0; line < h; line++) {
+                       uint32 *left = raster + (line * w);
+                       uint32 *right = left + w - 1;
 
-    _TIFFfree(buf);
-    return (ret);
+                       while ( left < right ) {
+                               uint32 temp = *left;
+                               *left = *right;
+                               *right = temp;
+                               left++, right--;
+                       }
+               }
+       }
+
+       _TIFFfree(buf);
+       return (ret);
 }
 
 /*
@@ -856,105 +913,127 @@ gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 static int
 gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 {
-    TIFF* tif = img->tif;
-    tileSeparateRoutine put = img->put.separate;
-    unsigned char *buf;
-    unsigned char *r, *g, *b, *a;
-    uint32 row, y, nrow, rowstoread;
-    uint32 pos;
-    tsize_t scanline;
-    uint32 rowsperstrip, offset_row;
-    uint32 imagewidth = img->width;
-    tsize_t stripsize;
-    int32 fromskew, toskew;
-    int alpha = img->alpha;
-    int        ret = 1, flip;
-
-    stripsize = TIFFStripSize(tif);
-    r = buf = (unsigned char *)_TIFFmalloc(4*stripsize);
-    if (buf == 0) {
+       TIFF* tif = img->tif;
+       tileSeparateRoutine put = img->put.separate;
+       unsigned char *buf;
+       unsigned char *p0, *p1, *p2, *pa;
+       uint32 row, y, nrow, rowstoread;
+       tmsize_t pos;
+       tmsize_t scanline;
+       uint32 rowsperstrip, offset_row;
+       uint32 imagewidth = img->width;
+       tmsize_t stripsize;
+       tmsize_t bufsize;
+       int32 fromskew, toskew;
+       int alpha = img->alpha;
+       int ret = 1, flip, colorchannels;
+
+       stripsize = TIFFStripSize(tif);  
+       bufsize = TIFFSafeMultiply(tmsize_t,alpha?4:3,stripsize);
+       if (bufsize == 0) {
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "Integer overflow in %s", "gtStripSeparate");
+               return (0);
+       }
+       p0 = buf = (unsigned char *)_TIFFmalloc(bufsize);
+       if (buf == 0) {
                TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
                return (0);
-    }
-    _TIFFmemset(buf, 0, 4*stripsize);
-    g = r + stripsize;
-    b = g + stripsize;
-    a = b + stripsize;
-    if (!alpha)
-       _TIFFmemset(a, 0xff, stripsize);
-
-    flip = setorientation(img);
-    if (flip & FLIP_VERTICALLY) {
-           y = h - 1;
-           toskew = -(int32)(w + w);
-    }
-    else {
-           y = 0;
-           toskew = -(int32)(w - w);
-    }
+       }
+       _TIFFmemset(buf, 0, bufsize);
+       p1 = p0 + stripsize;
+       p2 = p1 + stripsize;
+       pa = (alpha?(p2+stripsize):NULL);
+
+       flip = setorientation(img);
+       if (flip & FLIP_VERTICALLY) {
+               y = h - 1;
+               toskew = -(int32)(w + w);
+       }
+       else {
+               y = 0;
+               toskew = -(int32)(w - w);
+       }
 
-    TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
-    scanline = TIFFScanlineSize(tif);
-    fromskew = (w < imagewidth ? imagewidth - w : 0);
-    for (row = 0; row < h; row += nrow) 
-    {
-        rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;            
-        nrow = (row + rowstoread > h ? h - row : rowstoread);
-        offset_row = row + img->row_offset;
-       if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 0),
-                                 r, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
+        switch( img->photometric )
         {
-            ret = 0;
+          case PHOTOMETRIC_MINISWHITE:
+          case PHOTOMETRIC_MINISBLACK:
+          case PHOTOMETRIC_PALETTE:
+            colorchannels = 1;
+            p2 = p1 = p0;
             break;
-        }
-        if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 1),
-                                 g, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-        if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 2),
-                                 b, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-            && img->stoponerr)
-        {
-            ret = 0;
-            break;
-        }
-        if (alpha &&
-            (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 3),
-                                  a, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0 
-             && img->stoponerr))
-        {
-            ret = 0;
+
+          default:
+            colorchannels = 3;
             break;
         }
 
-        pos = ((row + img->row_offset) % rowsperstrip) * scanline;
-        (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, r + pos, g + pos, 
-               b + pos, a + pos);
-        y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
-    }
+       TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
+       scanline = TIFFScanlineSize(tif);  
+       fromskew = (w < imagewidth ? imagewidth - w : 0);
+       for (row = 0; row < h; row += nrow)
+       {
+               rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
+               nrow = (row + rowstoread > h ? h - row : rowstoread);
+               offset_row = row + img->row_offset;
+               if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 0),
+                   p0, ((row + img->row_offset)%rowsperstrip + nrow) * scanline)==(tmsize_t)(-1)
+                   && img->stoponerr)
+               {
+                       ret = 0;
+                       break;
+               }
+               if (colorchannels > 1 
+                    && TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 1),
+                                            p1, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) == (tmsize_t)(-1)
+                   && img->stoponerr)
+               {
+                       ret = 0;
+                       break;
+               }
+               if (colorchannels > 1 
+                    && TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 2),
+                                            p2, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) == (tmsize_t)(-1)
+                   && img->stoponerr)
+               {
+                       ret = 0;
+                       break;
+               }
+               if (alpha)
+               {
+                       if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, colorchannels),
+                           pa, ((row + img->row_offset)%rowsperstrip + nrow) * scanline)==(tmsize_t)(-1)
+                           && img->stoponerr)
+                       {
+                               ret = 0;
+                               break;
+                       }
+               }
 
-    if (flip & FLIP_HORIZONTALLY) {
-           uint32 line;
+               pos = ((row + img->row_offset) % rowsperstrip) * scanline;
+               (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, p0 + pos, p1 + pos,
+                   p2 + pos, (alpha?(pa+pos):NULL));
+               y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
+       }
 
-           for (line = 0; line < h; line++) {
-                   uint32 *left = raster + (line * w);
-                   uint32 *right = left + w - 1;
-                   
-                   while ( left < right ) {
-                           uint32 temp = *left;
-                           *left = *right;
-                           *right = temp;
-                           left++, right--;
-                   }
-           }
-    }
+       if (flip & FLIP_HORIZONTALLY) {
+               uint32 line;
 
-    _TIFFfree(buf);
-    return (ret);
+               for (line = 0; line < h; line++) {
+                       uint32 *left = raster + (line * w);
+                       uint32 *right = left + w - 1;
+
+                       while ( left < right ) {
+                               uint32 temp = *left;
+                               *left = *right;
+                               *right = temp;
+                               left++, right--;
+                       }
+               }
+       }
+
+       _TIFFfree(buf);
+       return (ret);
 }
 
 /*
@@ -963,9 +1042,9 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
  * ABGR pixels (i.e. suitable for passing to lrecwrite.)
  *
  * The routines have been created according to the most
- * important cases and optimized.  pickTileContigCase and
- * pickTileSeparateCase analyze the parameters and select
- * the appropriate "put" routine to use.
+ * important cases and optimized.  PickContigCase and
+ * PickSeparateCase analyze the parameters and select
+ * the appropriate "get" and "put" routine to use.
  */
 #define        REPEAT8(op)     REPEAT4(op); REPEAT4(op)
 #define        REPEAT4(op)     REPEAT2(op); REPEAT2(op)
@@ -1022,6 +1101,7 @@ gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
 #define        PACK4(r,g,b,a)  \
        ((uint32)(r)|((uint32)(g)<<8)|((uint32)(b)<<16)|((uint32)(a)<<24))
 #define W2B(v) (((v)>>8)&0xff)
+/* TODO: PACKW should have be made redundant in favor of Bitdepth16To8 LUT */
 #define        PACKW(r,g,b)    \
        ((uint32)W2B(r)|((uint32)W2B(g)<<8)|((uint32)W2B(b)<<16)|A1)
 #define        PACKW4(r,g,b,a) \
@@ -1128,6 +1208,26 @@ DECLAREContigPutFunc(putgreytile)
     }
 }
 
+/*
+ * 8-bit greyscale with associated alpha => colormap/RGBA
+ */
+DECLAREContigPutFunc(putagreytile)
+{
+    int samplesperpixel = img->samplesperpixel;
+    uint32** BWmap = img->BWmap;
+
+    (void) y;
+    while (h-- > 0) {
+       for (x = w; x-- > 0;)
+        {
+            *cp++ = BWmap[*pp][0] & (*(pp+1) << 24 | ~A1);
+            pp += samplesperpixel;
+        }
+       cp += toskew;
+       pp += fromskew;
+    }
+}
+
 /*
  * 16-bit greyscale => colormap/RGB
  */
@@ -1222,26 +1322,6 @@ DECLAREContigPutFunc(putRGBcontig8bittile)
     }
 }
 
-/*
- * 8-bit packed samples, w/ Map => RGB
- */
-DECLAREContigPutFunc(putRGBcontig8bitMaptile)
-{
-    TIFFRGBValue* Map = img->Map;
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-       for (x = w; x-- > 0;) {
-           *cp++ = PACK(Map[pp[0]], Map[pp[1]], Map[pp[2]]);
-           pp += samplesperpixel;
-       }
-       pp += fromskew;
-       cp += toskew;
-    }
-}
-
 /*
  * 8-bit packed samples => RGBA w/ associated alpha
  * (known to have Map == NULL)
@@ -1267,23 +1347,24 @@ DECLAREContigPutFunc(putRGBAAcontig8bittile)
  */
 DECLAREContigPutFunc(putRGBUAcontig8bittile)
 {
-    int samplesperpixel = img->samplesperpixel;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-       uint32 r, g, b, a;
-       for (x = w; x-- > 0;) {
-           a = pp[3];
-           r = (pp[0] * a) / 255;
-           g = (pp[1] * a) / 255;
-           b = (pp[2] * a) / 255;
-           *cp++ = PACK4(r,g,b,a);
-           pp += samplesperpixel;
+       int samplesperpixel = img->samplesperpixel;
+       (void) y;
+       fromskew *= samplesperpixel;
+       while (h-- > 0) {
+               uint32 r, g, b, a;
+               uint8* m;
+               for (x = w; x-- > 0;) {
+                       a = pp[3];
+                       m = img->UaToAa+(a<<8);
+                       r = m[pp[0]];
+                       g = m[pp[1]];
+                       b = m[pp[2]];
+                       *cp++ = PACK4(r,g,b,a);
+                       pp += samplesperpixel;
+               }
+               cp += toskew;
+               pp += fromskew;
        }
-       cp += toskew;
-       pp += fromskew;
-    }
 }
 
 /*
@@ -1291,19 +1372,20 @@ DECLAREContigPutFunc(putRGBUAcontig8bittile)
  */
 DECLAREContigPutFunc(putRGBcontig16bittile)
 {
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-       for (x = w; x-- > 0;) {
-           *cp++ = PACKW(wp[0], wp[1], wp[2]);
-           wp += samplesperpixel;
+       int samplesperpixel = img->samplesperpixel;
+       uint16 *wp = (uint16 *)pp;
+       (void) y;
+       fromskew *= samplesperpixel;
+       while (h-- > 0) {
+               for (x = w; x-- > 0;) {
+                       *cp++ = PACK(img->Bitdepth16To8[wp[0]],
+                           img->Bitdepth16To8[wp[1]],
+                           img->Bitdepth16To8[wp[2]]);
+                       wp += samplesperpixel;
+               }
+               cp += toskew;
+               wp += fromskew;
        }
-       cp += toskew;
-       wp += fromskew;
-    }
 }
 
 /*
@@ -1312,19 +1394,21 @@ DECLAREContigPutFunc(putRGBcontig16bittile)
  */
 DECLAREContigPutFunc(putRGBAAcontig16bittile)
 {
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-       for (x = w; x-- > 0;) {
-           *cp++ = PACKW4(wp[0], wp[1], wp[2], wp[3]);
-           wp += samplesperpixel;
+       int samplesperpixel = img->samplesperpixel;
+       uint16 *wp = (uint16 *)pp;
+       (void) y;
+       fromskew *= samplesperpixel;
+       while (h-- > 0) {
+               for (x = w; x-- > 0;) {
+                       *cp++ = PACK4(img->Bitdepth16To8[wp[0]],
+                           img->Bitdepth16To8[wp[1]],
+                           img->Bitdepth16To8[wp[2]],
+                           img->Bitdepth16To8[wp[3]]);
+                       wp += samplesperpixel;
+               }
+               cp += toskew;
+               wp += fromskew;
        }
-       cp += toskew;
-       wp += fromskew;
-    }
 }
 
 /*
@@ -1333,32 +1417,25 @@ DECLAREContigPutFunc(putRGBAAcontig16bittile)
  */
 DECLAREContigPutFunc(putRGBUAcontig16bittile)
 {
-    int samplesperpixel = img->samplesperpixel;
-    uint16 *wp = (uint16 *)pp;
-
-    (void) y;
-    fromskew *= samplesperpixel;
-    while (h-- > 0) {
-       uint32 r,g,b,a;
-       /*
-        * We shift alpha down four bits just in case unsigned
-        * arithmetic doesn't handle the full range.
-        * We still have plenty of accuracy, since the output is 8 bits.
-        * So we have (r * 0xffff) * (a * 0xfff)) = r*a * (0xffff*0xfff)
-        * Since we want r*a * 0xff for eight bit output,
-        * we divide by (0xffff * 0xfff) / 0xff == 0x10eff.
-        */
-       for (x = w; x-- > 0;) {
-           a = wp[3] >> 4; 
-           r = (wp[0] * a) / 0x10eff;
-           g = (wp[1] * a) / 0x10eff;
-           b = (wp[2] * a) / 0x10eff;
-           *cp++ = PACK4(r,g,b,a);
-           wp += samplesperpixel;
+       int samplesperpixel = img->samplesperpixel;
+       uint16 *wp = (uint16 *)pp;
+       (void) y;
+       fromskew *= samplesperpixel;
+       while (h-- > 0) {
+               uint32 r,g,b,a;
+               uint8* m;
+               for (x = w; x-- > 0;) {
+                       a = img->Bitdepth16To8[wp[3]];
+                       m = img->UaToAa+(a<<8);
+                       r = m[img->Bitdepth16To8[wp[0]]];
+                       g = m[img->Bitdepth16To8[wp[1]]];
+                       b = m[img->Bitdepth16To8[wp[2]]];
+                       *cp++ = PACK4(r,g,b,a);
+                       wp += samplesperpixel;
+               }
+               cp += toskew;
+               wp += fromskew;
        }
-       cp += toskew;
-       wp += fromskew;
-    }
 }
 
 /*
@@ -1437,32 +1514,36 @@ DECLARESepPutFunc(putRGBseparate8bittile)
 }
 
 /*
- * 8-bit unpacked samples => RGB
+ * 8-bit unpacked samples => RGBA w/ associated alpha
  */
-DECLARESepPutFunc(putRGBseparate8bitMaptile)
+DECLARESepPutFunc(putRGBAAseparate8bittile)
 {
-    TIFFRGBValue* Map = img->Map;
-
-    (void) y; (void) a;
-    while (h-- > 0) {
-       for (x = w; x > 0; x--)
-           *cp++ = PACK(Map[*r++], Map[*g++], Map[*b++]);
-       SKEW(r, g, b, fromskew);
-       cp += toskew;
-    }
+       (void) img; (void) x; (void) y; 
+       while (h-- > 0) {
+               UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++));
+               SKEW4(r, g, b, a, fromskew);
+               cp += toskew;
+       }
 }
 
 /*
- * 8-bit unpacked samples => RGBA w/ associated alpha
+ * 8-bit unpacked CMYK samples => RGBA
  */
-DECLARESepPutFunc(putRGBAAseparate8bittile)
+DECLARESepPutFunc(putCMYKseparate8bittile)
 {
-    (void) img; (void) x; (void) y;
-    while (h-- > 0) {
-       UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++));
-       SKEW4(r, g, b, a, fromskew);
-       cp += toskew;
-    }
+       (void) img; (void) y;
+       while (h-- > 0) {
+               uint32 rv, gv, bv, kv;
+               for (x = w; x-- > 0;) {
+                       kv = 255 - *a++;
+                       rv = (kv*(255-*r++))/255;
+                       gv = (kv*(255-*g++))/255;
+                       bv = (kv*(255-*b++))/255;
+                       *cp++ = PACK4(rv,gv,bv,255);
+               }
+               SKEW4(r, g, b, a, fromskew);
+               cp += toskew;
+       }
 }
 
 /*
@@ -1470,19 +1551,21 @@ DECLARESepPutFunc(putRGBAAseparate8bittile)
  */
 DECLARESepPutFunc(putRGBUAseparate8bittile)
 {
-    (void) img; (void) y;
-    while (h-- > 0) {
-       uint32 rv, gv, bv, av;
-       for (x = w; x-- > 0;) {
-           av = *a++;
-           rv = (*r++ * av) / 255;
-           gv = (*g++ * av) / 255;
-           bv = (*b++ * av) / 255;
-           *cp++ = PACK4(rv,gv,bv,av);
+       (void) img; (void) y;
+       while (h-- > 0) {
+               uint32 rv, gv, bv, av;
+               uint8* m;
+               for (x = w; x-- > 0;) {
+                       av = *a++;
+                       m = img->UaToAa+(av<<8);
+                       rv = m[*r++];
+                       gv = m[*g++];
+                       bv = m[*b++];
+                       *cp++ = PACK4(rv,gv,bv,av);
+               }
+               SKEW4(r, g, b, a, fromskew);
+               cp += toskew;
        }
-       SKEW4(r, g, b, a, fromskew);
-       cp += toskew;
-    }
 }
 
 /*
@@ -1490,17 +1573,18 @@ DECLARESepPutFunc(putRGBUAseparate8bittile)
  */
 DECLARESepPutFunc(putRGBseparate16bittile)
 {
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-
-    (void) img; (void) y; (void) a;
-    while (h-- > 0) {
-       for (x = 0; x < w; x++)
-           *cp++ = PACKW(*wr++, *wg++, *wb++);
-       SKEW(wr, wg, wb, fromskew);
-       cp += toskew;
-    }
+       uint16 *wr = (uint16*) r;
+       uint16 *wg = (uint16*) g;
+       uint16 *wb = (uint16*) b;
+       (void) img; (void) y; (void) a;
+       while (h-- > 0) {
+               for (x = 0; x < w; x++)
+                       *cp++ = PACK(img->Bitdepth16To8[*wr++],
+                           img->Bitdepth16To8[*wg++],
+                           img->Bitdepth16To8[*wb++]);
+               SKEW(wr, wg, wb, fromskew);
+               cp += toskew;
+       }
 }
 
 /*
@@ -1508,18 +1592,20 @@ DECLARESepPutFunc(putRGBseparate16bittile)
  */
 DECLARESepPutFunc(putRGBAAseparate16bittile)
 {
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-    uint16 *wa = (uint16*) a;
-
-    (void) img; (void) y;
-    while (h-- > 0) {
-       for (x = 0; x < w; x++)
-           *cp++ = PACKW4(*wr++, *wg++, *wb++, *wa++);
-       SKEW4(wr, wg, wb, wa, fromskew);
-       cp += toskew;
-    }
+       uint16 *wr = (uint16*) r;
+       uint16 *wg = (uint16*) g;
+       uint16 *wb = (uint16*) b;
+       uint16 *wa = (uint16*) a;
+       (void) img; (void) y;
+       while (h-- > 0) {
+               for (x = 0; x < w; x++)
+                       *cp++ = PACK4(img->Bitdepth16To8[*wr++],
+                           img->Bitdepth16To8[*wg++],
+                           img->Bitdepth16To8[*wb++],
+                           img->Bitdepth16To8[*wa++]);
+               SKEW4(wr, wg, wb, wa, fromskew);
+               cp += toskew;
+       }
 }
 
 /*
@@ -1527,32 +1613,25 @@ DECLARESepPutFunc(putRGBAAseparate16bittile)
  */
 DECLARESepPutFunc(putRGBUAseparate16bittile)
 {
-    uint16 *wr = (uint16*) r;
-    uint16 *wg = (uint16*) g;
-    uint16 *wb = (uint16*) b;
-    uint16 *wa = (uint16*) a;
-
-    (void) img; (void) y;
-    while (h-- > 0) {
-       uint32 r,g,b,a;
-       /*
-        * We shift alpha down four bits just in case unsigned
-        * arithmetic doesn't handle the full range.
-        * We still have plenty of accuracy, since the output is 8 bits.
-        * So we have (r * 0xffff) * (a * 0xfff)) = r*a * (0xffff*0xfff)
-        * Since we want r*a * 0xff for eight bit output,
-        * we divide by (0xffff * 0xfff) / 0xff == 0x10eff.
-        */
-       for (x = w; x-- > 0;) {
-           a = *wa++ >> 4; 
-           r = (*wr++ * a) / 0x10eff;
-           g = (*wg++ * a) / 0x10eff;
-           b = (*wb++ * a) / 0x10eff;
-           *cp++ = PACK4(r,g,b,a);
+       uint16 *wr = (uint16*) r;
+       uint16 *wg = (uint16*) g;
+       uint16 *wb = (uint16*) b;
+       uint16 *wa = (uint16*) a;
+       (void) img; (void) y;
+       while (h-- > 0) {
+               uint32 r,g,b,a;
+               uint8* m;
+               for (x = w; x-- > 0;) {
+                       a = img->Bitdepth16To8[*wa++];
+                       m = img->UaToAa+(a<<8);
+                       r = m[img->Bitdepth16To8[*wr++]];
+                       g = m[img->Bitdepth16To8[*wg++]];
+                       b = m[img->Bitdepth16To8[*wb++]];
+                       *cp++ = PACK4(r,g,b,a);
+               }
+               SKEW4(wr, wg, wb, wa, fromskew);
+               cp += toskew;
        }
-       SKEW4(wr, wg, wb, wa, fromskew);
-       cp += toskew;
-    }
 }
 
 /*
@@ -1890,63 +1969,57 @@ DECLAREContigPutFunc(putcontig8bitYCbCr41tile)
  */
 DECLAREContigPutFunc(putcontig8bitYCbCr22tile)
 {
-    uint32* cp1 = cp+w+toskew;
-    int32 incr = 2*toskew+w;
-
-    (void) y;
-    fromskew = (fromskew * 6) / 2;
-    if ((h & 1) == 0 && (w & 1) == 0) {
-        for (; h >= 2; h -= 2) {
-            x = w>>1;
-            do {
-                int32 Cb = pp[4];
-                int32 Cr = pp[5];
-
-                YCbCrtoRGB(cp [0], pp[0]);
-                YCbCrtoRGB(cp [1], pp[1]);
-                YCbCrtoRGB(cp1[0], pp[2]);
-                YCbCrtoRGB(cp1[1], pp[3]);
-
-                cp += 2, cp1 += 2;
-                pp += 6;
-            } while (--x);
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    } else {
-        while (h > 0) {
-            for (x = w; x > 0;) {
-                int32 Cb = pp[4];
-                int32 Cr = pp[5];
-                switch (x) {
-                default:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[1], pp[ 3]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                case 1:
-                    switch (h) {
-                    default: YCbCrtoRGB(cp1[0], pp[ 2]); /* FALLTHROUGH */
-                    case 1:  YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
-                    }                                    /* FALLTHROUGH */
-                }
-                if (x < 2) {
-                    cp += x; cp1 += x;
-                    x = 0;
-                }
-                else {
-                    cp += 2; cp1 += 2;
-                    x -= 2;
-                }
-                pp += 6;
-            }
-            if (h <= 2)
-                break;
-            h -= 2;
-            cp += incr, cp1 += incr;
-            pp += fromskew;
-        }
-    }
+       uint32* cp2;
+       int32 incr = 2*toskew+w;
+       (void) y;
+       fromskew = (fromskew / 2) * 6;
+       cp2 = cp+w+toskew;
+       while (h>=2) {
+               x = w;
+               while (x>=2) {
+                       uint32 Cb = pp[4];
+                       uint32 Cr = pp[5];
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       YCbCrtoRGB(cp[1], pp[1]);
+                       YCbCrtoRGB(cp2[0], pp[2]);
+                       YCbCrtoRGB(cp2[1], pp[3]);
+                       cp += 2;
+                       cp2 += 2;
+                       pp += 6;
+                       x -= 2;
+               }
+               if (x==1) {
+                       uint32 Cb = pp[4];
+                       uint32 Cr = pp[5];
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       YCbCrtoRGB(cp2[0], pp[2]);
+                       cp ++ ;
+                       cp2 ++ ;
+                       pp += 6;
+               }
+               cp += incr;
+               cp2 += incr;
+               pp += fromskew;
+               h-=2;
+       }
+       if (h==1) {
+               x = w;
+               while (x>=2) {
+                       uint32 Cb = pp[4];
+                       uint32 Cr = pp[5];
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       YCbCrtoRGB(cp[1], pp[1]);
+                       cp += 2;
+                       cp2 += 2;
+                       pp += 6;
+                       x -= 2;
+               }
+               if (x==1) {
+                       uint32 Cb = pp[4];
+                       uint32 Cr = pp[5];
+                       YCbCrtoRGB(cp[0], pp[0]);
+               }
+       }
 }
 
 /*
@@ -1954,35 +2027,73 @@ DECLAREContigPutFunc(putcontig8bitYCbCr22tile)
  */
 DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
 {
-    (void) y;
-    fromskew = (fromskew * 4) / 2;
-    do {
-       x = w>>1;
+       (void) y;
+       fromskew = (fromskew * 4) / 2;
        do {
-           int32 Cb = pp[2];
-           int32 Cr = pp[3];
+               x = w>>1;
+               do {
+                       int32 Cb = pp[2];
+                       int32 Cr = pp[3];
 
-           YCbCrtoRGB(cp[0], pp[0]); 
-           YCbCrtoRGB(cp[1], pp[1]);
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       YCbCrtoRGB(cp[1], pp[1]);
 
-           cp += 2;
-           pp += 4;
-       } while (--x);
+                       cp += 2;
+                       pp += 4;
+               } while (--x);
 
-        if( (w&1) != 0 )
-        {
-           int32 Cb = pp[2];
-           int32 Cr = pp[3];
-            
-            YCbCrtoRGB(cp [0], pp[0]);
+               if( (w&1) != 0 )
+               {
+                       int32 Cb = pp[2];
+                       int32 Cr = pp[3];
 
-           cp += 1;
-           pp += 4;
-        }
+                       YCbCrtoRGB(cp[0], pp[0]);
 
-       cp += toskew;
-       pp += fromskew;
-    } while (--h);
+                       cp += 1;
+                       pp += 4;
+               }
+
+               cp += toskew;
+               pp += fromskew;
+       } while (--h);
+}
+
+/*
+ * 8-bit packed YCbCr samples w/ 1,2 subsampling => RGB
+ */
+DECLAREContigPutFunc(putcontig8bitYCbCr12tile)
+{
+       uint32* cp2;
+       int32 incr = 2*toskew+w;
+       (void) y;
+       fromskew = (fromskew / 2) * 4;
+       cp2 = cp+w+toskew;
+       while (h>=2) {
+               x = w;
+               do {
+                       uint32 Cb = pp[2];
+                       uint32 Cr = pp[3];
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       YCbCrtoRGB(cp2[0], pp[1]);
+                       cp ++;
+                       cp2 ++;
+                       pp += 4;
+               } while (--x);
+               cp += incr;
+               cp2 += incr;
+               pp += fromskew;
+               h-=2;
+       }
+       if (h==1) {
+               x = w;
+               do {
+                       uint32 Cb = pp[2];
+                       uint32 Cr = pp[3];
+                       YCbCrtoRGB(cp[0], pp[0]);
+                       cp ++;
+                       pp += 4;
+               } while (--x);
+       }
 }
 
 /*
@@ -1990,76 +2101,77 @@ DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
  */
 DECLAREContigPutFunc(putcontig8bitYCbCr11tile)
 {
-    (void) y;
-    fromskew *= 3;
-    do {
-        x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */ 
+       (void) y;
+       fromskew *= 3;
        do {
-           int32 Cb = pp[1];
-           int32 Cr = pp[2];
+               x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */
+               do {
+                       int32 Cb = pp[1];
+                       int32 Cr = pp[2];
 
-           YCbCrtoRGB(*cp++, pp[0]);
+                       YCbCrtoRGB(*cp++, pp[0]);
 
-           pp += 3;
-       } while (--x);
-       cp += toskew;
-       pp += fromskew;
-    } while (--h);
+                       pp += 3;
+               } while (--x);
+               cp += toskew;
+               pp += fromskew;
+       } while (--h);
 }
-#undef YCbCrtoRGB
 
-static tileContigRoutine
+/*
+ * 8-bit packed YCbCr samples w/ no subsampling => RGB
+ */
+DECLARESepPutFunc(putseparate8bitYCbCr11tile)
+{
+       (void) y;
+       (void) a;
+       /* TODO: naming of input vars is still off, change obfuscating declaration inside define, or resolve obfuscation */
+       while (h-- > 0) {
+               x = w;
+               do {
+                       uint32 dr, dg, db;
+                       TIFFYCbCrtoRGB(img->ycbcr,*r++,*g++,*b++,&dr,&dg,&db);
+                       *cp++ = PACK(dr,dg,db);
+               } while (--x);
+               SKEW(r, g, b, fromskew);
+               cp += toskew;
+       }
+}
+#undef YCbCrtoRGB
+
+static int
 initYCbCrConversion(TIFFRGBAImage* img)
 {
-       static char module[] = "initCIELabConversion";
+       static const char module[] = "initYCbCrConversion";
 
        float *luma, *refBlackWhite;
-       uint16 hs, vs;
 
        if (img->ycbcr == NULL) {
-           img->ycbcr = (TIFFYCbCrToRGB*) _TIFFmalloc(
-                   TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long))
+               img->ycbcr = (TIFFYCbCrToRGB*) _TIFFmalloc(
+                   TIFFroundup_32(sizeof (TIFFYCbCrToRGB), sizeof (long))  
                    + 4*256*sizeof (TIFFRGBValue)
                    + 2*256*sizeof (int)
                    + 3*256*sizeof (int32)
-           );
-           if (img->ycbcr == NULL) {
+                   );
+               if (img->ycbcr == NULL) {
                        TIFFErrorExt(img->tif->tif_clientdata, module,
-                             "No space for YCbCr->RGB conversion state");
-                   return (NULL);
-           }
+                           "No space for YCbCr->RGB conversion state");
+                       return (0);
+               }
        }
 
        TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRCOEFFICIENTS, &luma);
        TIFFGetFieldDefaulted(img->tif, TIFFTAG_REFERENCEBLACKWHITE,
-                             &refBlackWhite);
+           &refBlackWhite);
        if (TIFFYCbCrToRGBInit(img->ycbcr, luma, refBlackWhite) < 0)
-               return NULL;
-
-       /*
-        * The 6.0 spec says that subsampling must be
-        * one of 1, 2, or 4, and that vertical subsampling
-        * must always be <= horizontal subsampling; so
-        * there are only a few possibilities and we just
-        * enumerate the cases.
-        */
-       TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
-       switch ((hs<<4)|vs) {
-               case 0x44: return &putcontig8bitYCbCr44tile;
-               case 0x42: return &putcontig8bitYCbCr42tile;
-               case 0x41: return &putcontig8bitYCbCr41tile;
-               case 0x22: return &putcontig8bitYCbCr22tile;
-               case 0x21: return &putcontig8bitYCbCr21tile;
-               case 0x11: return &putcontig8bitYCbCr11tile;
-       }
-
-       return (NULL);
+               return(0);
+       return (1);
 }
 
 static tileContigRoutine
 initCIELabConversion(TIFFRGBAImage* img)
 {
-       static char module[] = "initCIELabConversion";
+       static const char module[] = "initCIELabConversion";
 
        float   *whitePoint;
        float   refWhite[3];
@@ -2327,73 +2439,148 @@ buildMap(TIFFRGBAImage* img)
  * Select the appropriate conversion routine for packed data.
  */
 static int
-pickTileContigCase(TIFFRGBAImage* img)
+PickContigCase(TIFFRGBAImage* img)
 {
-    tileContigRoutine put = 0;
-
-    if (buildMap(img)) {
+       img->get = TIFFIsTiled(img->tif) ? gtTileContig : gtStripContig;
+       img->put.contig = NULL;
        switch (img->photometric) {
-       case PHOTOMETRIC_RGB:
-           switch (img->bitspersample) {
-           case 8:
-               if (!img->Map) {
-                   if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                       put = putRGBAAcontig8bittile;
-                   else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                       put = putRGBUAcontig8bittile;
-                   else
-                       put = putRGBcontig8bittile;
-               } else
-                   put = putRGBcontig8bitMaptile;
-               break;
-           case 16:
-               put = putRGBcontig16bittile;
-               if (!img->Map) {
-                   if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                       put = putRGBAAcontig16bittile;
-                   else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                       put = putRGBUAcontig16bittile;
-               }
-               break;
-           }
-           break;
-       case PHOTOMETRIC_SEPARATED:
-           if (img->bitspersample == 8) {
-               if (!img->Map)
-                   put = putRGBcontig8bitCMYKtile;
-               else
-                   put = putRGBcontig8bitCMYKMaptile;
-           }
-           break;
-       case PHOTOMETRIC_PALETTE:
-           switch (img->bitspersample) {
-           case 8:     put = put8bitcmaptile; break;
-           case 4: put = put4bitcmaptile; break;
-           case 2: put = put2bitcmaptile; break;
-           case 1: put = put1bitcmaptile; break;
-           }
-           break;
-       case PHOTOMETRIC_MINISWHITE:
-       case PHOTOMETRIC_MINISBLACK:
-           switch (img->bitspersample) {
-            case 16: put = put16bitbwtile; break;
-           case 8:  put = putgreytile; break;
-           case 4:  put = put4bitbwtile; break;
-           case 2:  put = put2bitbwtile; break;
-           case 1:  put = put1bitbwtile; break;
-           }
-           break;
-       case PHOTOMETRIC_YCBCR:
-           if (img->bitspersample == 8)
-               put = initYCbCrConversion(img);
-           break;
-       case PHOTOMETRIC_CIELAB:
-           if (img->bitspersample == 8)
-               put = initCIELabConversion(img);
-           break;
+               case PHOTOMETRIC_RGB:
+                       switch (img->bitspersample) {
+                               case 8:
+                                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
+                                               img->put.contig = putRGBAAcontig8bittile;
+                                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                                       {
+                                               if (BuildMapUaToAa(img))
+                                                       img->put.contig = putRGBUAcontig8bittile;
+                                       }
+                                       else
+                                               img->put.contig = putRGBcontig8bittile;
+                                       break;
+                               case 16:
+                                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
+                                       {
+                                               if (BuildMapBitdepth16To8(img))
+                                                       img->put.contig = putRGBAAcontig16bittile;
+                                       }
+                                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                                       {
+                                               if (BuildMapBitdepth16To8(img) &&
+                                                   BuildMapUaToAa(img))
+                                                       img->put.contig = putRGBUAcontig16bittile;
+                                       }
+                                       else
+                                       {
+                                               if (BuildMapBitdepth16To8(img))
+                                                       img->put.contig = putRGBcontig16bittile;
+                                       }
+                                       break;
+                       }
+                       break;
+               case PHOTOMETRIC_SEPARATED:
+                       if (buildMap(img)) {
+                               if (img->bitspersample == 8) {
+                                       if (!img->Map)
+                                               img->put.contig = putRGBcontig8bitCMYKtile;
+                                       else
+                                               img->put.contig = putRGBcontig8bitCMYKMaptile;
+                               }
+                       }
+                       break;
+               case PHOTOMETRIC_PALETTE:
+                       if (buildMap(img)) {
+                               switch (img->bitspersample) {
+                                       case 8:
+                                               img->put.contig = put8bitcmaptile;
+                                               break;
+                                       case 4:
+                                               img->put.contig = put4bitcmaptile;
+                                               break;
+                                       case 2:
+                                               img->put.contig = put2bitcmaptile;
+                                               break;
+                                       case 1:
+                                               img->put.contig = put1bitcmaptile;
+                                               break;
+                               }
+                       }
+                       break;
+               case PHOTOMETRIC_MINISWHITE:
+               case PHOTOMETRIC_MINISBLACK:
+                       if (buildMap(img)) {
+                               switch (img->bitspersample) {
+                                       case 16:
+                                               img->put.contig = put16bitbwtile;
+                                               break;
+                                       case 8:
+                                               if (img->alpha && img->samplesperpixel == 2)
+                                                       img->put.contig = putagreytile;
+                                               else
+                                                       img->put.contig = putgreytile;
+                                               break;
+                                       case 4:
+                                               img->put.contig = put4bitbwtile;
+                                               break;
+                                       case 2:
+                                               img->put.contig = put2bitbwtile;
+                                               break;
+                                       case 1:
+                                               img->put.contig = put1bitbwtile;
+                                               break;
+                               }
+                       }
+                       break;
+               case PHOTOMETRIC_YCBCR:
+                       if ((img->bitspersample==8) && (img->samplesperpixel==3))
+                       {
+                               if (initYCbCrConversion(img)!=0)
+                               {
+                                       /*
+                                        * The 6.0 spec says that subsampling must be
+                                        * one of 1, 2, or 4, and that vertical subsampling
+                                        * must always be <= horizontal subsampling; so
+                                        * there are only a few possibilities and we just
+                                        * enumerate the cases.
+                                        * Joris: added support for the [1,2] case, nonetheless, to accomodate
+                                        * some OJPEG files
+                                        */
+                                       uint16 SubsamplingHor;
+                                       uint16 SubsamplingVer;
+                                       TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &SubsamplingHor, &SubsamplingVer);
+                                       switch ((SubsamplingHor<<4)|SubsamplingVer) {
+                                               case 0x44:
+                                                       img->put.contig = putcontig8bitYCbCr44tile;
+                                                       break;
+                                               case 0x42:
+                                                       img->put.contig = putcontig8bitYCbCr42tile;
+                                                       break;
+                                               case 0x41:
+                                                       img->put.contig = putcontig8bitYCbCr41tile;
+                                                       break;
+                                               case 0x22:
+                                                       img->put.contig = putcontig8bitYCbCr22tile;
+                                                       break;
+                                               case 0x21:
+                                                       img->put.contig = putcontig8bitYCbCr21tile;
+                                                       break;
+                                               case 0x12:
+                                                       img->put.contig = putcontig8bitYCbCr12tile;
+                                                       break;
+                                               case 0x11:
+                                                       img->put.contig = putcontig8bitYCbCr11tile;
+                                                       break;
+                                       }
+                               }
+                       }
+                       break;
+               case PHOTOMETRIC_CIELAB:
+                       if (buildMap(img)) {
+                               if (img->bitspersample == 8)
+                                       img->put.contig = initCIELabConversion(img);
+                               break;
+                       }
        }
-    }
-    return ((img->put.contig = put) != 0);
+       return ((img->get!=NULL) && (img->put.contig!=NULL));
 }
 
 /*
@@ -2403,41 +2590,116 @@ pickTileContigCase(TIFFRGBAImage* img)
  *      to the "packed routines.
  */
 static int
-pickTileSeparateCase(TIFFRGBAImage* img)
+PickSeparateCase(TIFFRGBAImage* img)
 {
-    tileSeparateRoutine put = 0;
-
-    if (buildMap(img)) {
+       img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate;
+       img->put.separate = NULL;
        switch (img->photometric) {
+       case PHOTOMETRIC_MINISWHITE:
+       case PHOTOMETRIC_MINISBLACK:
+               /* greyscale images processed pretty much as RGB by gtTileSeparate */
        case PHOTOMETRIC_RGB:
-           switch (img->bitspersample) {
-           case 8:
-               if (!img->Map) {
-                   if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                       put = putRGBAAseparate8bittile;
-                   else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                       put = putRGBUAseparate8bittile;
-                   else
-                       put = putRGBseparate8bittile;
-               } else
-                   put = putRGBseparate8bitMaptile;
+               switch (img->bitspersample) {
+               case 8:
+                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
+                               img->put.separate = putRGBAAseparate8bittile;
+                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                       {
+                               if (BuildMapUaToAa(img))
+                                       img->put.separate = putRGBUAseparate8bittile;
+                       }
+                       else
+                               img->put.separate = putRGBseparate8bittile;
+                       break;
+               case 16:
+                       if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
+                       {
+                               if (BuildMapBitdepth16To8(img))
+                                       img->put.separate = putRGBAAseparate16bittile;
+                       }
+                       else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
+                       {
+                               if (BuildMapBitdepth16To8(img) &&
+                                   BuildMapUaToAa(img))
+                                       img->put.separate = putRGBUAseparate16bittile;
+                       }
+                       else
+                       {
+                               if (BuildMapBitdepth16To8(img))
+                                       img->put.separate = putRGBseparate16bittile;
+                       }
+                       break;
+               }
                break;
-           case 16:
-               put = putRGBseparate16bittile;
-               if (!img->Map) {
-                   if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
-                       put = putRGBAAseparate16bittile;
-                   else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
-                       put = putRGBUAseparate16bittile;
+       case PHOTOMETRIC_SEPARATED:
+               if (img->bitspersample == 8 && img->samplesperpixel == 4)
+               {
+                       img->alpha = 1; // Not alpha, but seems like the only way to get 4th band
+                       img->put.separate = putCMYKseparate8bittile;
+               }
+               break;
+       case PHOTOMETRIC_YCBCR:
+               if ((img->bitspersample==8) && (img->samplesperpixel==3))
+               {
+                       if (initYCbCrConversion(img)!=0)
+                       {
+                               uint16 hs, vs;
+                               TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
+                               switch ((hs<<4)|vs) {
+                               case 0x11:
+                                       img->put.separate = putseparate8bitYCbCr11tile;
+                                       break;
+                                       /* TODO: add other cases here */
+                               }
+                       }
                }
                break;
-           }
-           break;
        }
-    }
-    return ((img->put.separate = put) != 0);
+       return ((img->get!=NULL) && (img->put.separate!=NULL));
+}
+
+static int
+BuildMapUaToAa(TIFFRGBAImage* img)
+{
+       static const char module[]="BuildMapUaToAa";
+       uint8* m;
+       uint16 na,nv;
+       assert(img->UaToAa==NULL);
+       img->UaToAa=_TIFFmalloc(65536);
+       if (img->UaToAa==NULL)
+       {
+               TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       m=img->UaToAa;
+       for (na=0; na<256; na++)
+       {
+               for (nv=0; nv<256; nv++)
+                       *m++=(nv*na+127)/255;
+       }
+       return(1);
+}
+
+static int
+BuildMapBitdepth16To8(TIFFRGBAImage* img)
+{
+       static const char module[]="BuildMapBitdepth16To8";
+       uint8* m;
+       uint32 n;
+       assert(img->Bitdepth16To8==NULL);
+       img->Bitdepth16To8=_TIFFmalloc(65536);
+       if (img->Bitdepth16To8==NULL)
+       {
+               TIFFErrorExt(img->tif->tif_clientdata,module,"Out of memory");
+               return(0);
+       }
+       m=img->Bitdepth16To8;
+       for (n=0; n<65536; n++)
+               *m++=(n+128)/257;
+       return(1);
 }
 
+
 /*
  * Read a whole strip off data from the file, and convert to RGBA form.
  * If this is the last strip, then it will only contain the portion of
@@ -2484,7 +2746,7 @@ TIFFReadRGBAStrip(TIFF* tif, uint32 row, uint32 * raster )
         
        TIFFRGBAImageEnd(&img);
     } else {
-               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
+               TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
                ok = 0;
     }
     
@@ -2536,7 +2798,7 @@ TIFFReadRGBATile(TIFF* tif, uint32 col, uint32 row, uint32 * raster)
     
     if (!TIFFRGBAImageOK(tif, emsg) 
        || !TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
-           TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), emsg);
+           TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
            return( 0 );
     }
 
@@ -2596,3 +2858,10 @@ TIFFReadRGBATile(TIFF* tif, uint32 col, uint32 row, uint32 * raster)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_jbig.c b/src/tiff/libtiff/tif_jbig.c
new file mode 100644 (file)
index 0000000..5f5f75e
--- /dev/null
@@ -0,0 +1,213 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 1988-1997 Sam Leffler
+ * Copyright (c) 1991-1997 Silicon Graphics, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+/*
+ * TIFF Library.
+ *
+ * JBIG Compression Algorithm Support.
+ * Contributed by Lee Howard <faxguy@deanox.com>
+ *
+ */
+
+#include "tiffiop.h"
+
+#ifdef JBIG_SUPPORT
+#include "jbig.h"
+
+static int JBIGSetupDecode(TIFF* tif)
+{
+       if (TIFFNumberOfStrips(tif) != 1)
+       {
+               TIFFErrorExt(tif->tif_clientdata, "JBIG", "Multistrip images not supported in decoder");
+               return 0;
+       }
+
+       return 1;
+}
+
+static int JBIGDecode(TIFF* tif, uint8* buffer, tmsize_t size, uint16 s)
+{
+       struct jbg_dec_state decoder;
+       int decodeStatus = 0;
+       unsigned char* pImage = NULL;
+       (void) size, (void) s;
+
+       if (isFillOrder(tif, tif->tif_dir.td_fillorder))
+       {
+               TIFFReverseBits(tif->tif_rawdata, tif->tif_rawdatasize);
+       }
+
+       jbg_dec_init(&decoder);
+
+#if defined(HAVE_JBG_NEWLEN)
+       jbg_newlen(tif->tif_rawdata, (size_t)tif->tif_rawdatasize);
+       /*
+        * I do not check the return status of jbg_newlen because even if this
+        * function fails it does not necessarily mean that decoding the image
+        * will fail.  It is generally only needed for received fax images
+        * that do not contain the actual length of the image in the BIE
+        * header.  I do not log when an error occurs because that will cause
+        * problems when converting JBIG encoded TIFF's to
+        * PostScript.  As long as the actual image length is contained in the
+        * BIE header jbg_dec_in should succeed.
+        */
+#endif /* HAVE_JBG_NEWLEN */
+
+       decodeStatus = jbg_dec_in(&decoder, (unsigned char*)tif->tif_rawdata,
+                                 (size_t)tif->tif_rawdatasize, NULL);
+       if (JBG_EOK != decodeStatus)
+       {
+               /*
+                * XXX: JBG_EN constant was defined in pre-2.0 releases of the
+                * JBIG-KIT. Since the 2.0 the error reporting functions were
+                * changed. We will handle both cases here.
+                */
+               TIFFErrorExt(tif->tif_clientdata,
+                            "JBIG", "Error (%d) decoding: %s",
+                            decodeStatus,
+#if defined(JBG_EN)
+                            jbg_strerror(decodeStatus, JBG_EN)
+#else
+                            jbg_strerror(decodeStatus)
+#endif
+                            );
+               return 0;
+       }
+
+       pImage = jbg_dec_getimage(&decoder, 0);
+       _TIFFmemcpy(buffer, pImage, jbg_dec_getsize(&decoder));
+       jbg_dec_free(&decoder);
+       return 1;
+}
+
+static int JBIGSetupEncode(TIFF* tif)
+{
+       if (TIFFNumberOfStrips(tif) != 1)
+       {
+               TIFFErrorExt(tif->tif_clientdata, "JBIG", "Multistrip images not supported in encoder");
+               return 0;
+       }
+
+       return 1;
+}
+
+static int JBIGCopyEncodedData(TIFF* tif, unsigned char* pp, size_t cc, uint16 s)
+{
+       (void) s;
+       while (cc > 0)
+       {
+               tmsize_t n = (tmsize_t)cc;
+
+               if (tif->tif_rawcc + n > tif->tif_rawdatasize)
+               {
+                       n = tif->tif_rawdatasize - tif->tif_rawcc;
+               }
+
+               assert(n > 0);
+               _TIFFmemcpy(tif->tif_rawcp, pp, n);
+               tif->tif_rawcp += n;
+               tif->tif_rawcc += n;
+               pp += n;
+               cc -= (size_t)n;
+               if (tif->tif_rawcc >= tif->tif_rawdatasize &&
+                   !TIFFFlushData1(tif))
+               {
+                       return (-1);
+               }
+       }
+
+       return (1);
+}
+
+static void JBIGOutputBie(unsigned char* buffer, size_t len, void* userData)
+{
+       TIFF* tif = (TIFF*)userData;
+
+       if (isFillOrder(tif, tif->tif_dir.td_fillorder))
+       {
+               TIFFReverseBits(buffer, (tmsize_t)len);
+       }
+
+       JBIGCopyEncodedData(tif, buffer, len, 0);
+}
+
+static int JBIGEncode(TIFF* tif, uint8* buffer, tmsize_t size, uint16 s)
+{
+       TIFFDirectory* dir = &tif->tif_dir;
+       struct jbg_enc_state encoder;
+
+       (void) size, (void) s;
+
+       jbg_enc_init(&encoder,
+                    dir->td_imagewidth,
+                    dir->td_imagelength,
+                    1,
+                    &buffer,
+                    JBIGOutputBie,
+                    tif);
+       /*
+        * jbg_enc_out does the "real" encoding.  As data is encoded,
+        * JBIGOutputBie is called, which writes the data to the directory.
+        */
+       jbg_enc_out(&encoder);
+       jbg_enc_free(&encoder);
+
+       return 1;
+}
+
+int TIFFInitJBIG(TIFF* tif, int scheme)
+{
+       assert(scheme == COMPRESSION_JBIG);
+
+       /*
+        * These flags are set so the JBIG Codec can control when to reverse
+        * bits and when not to and to allow the jbig decoder and bit reverser
+        * to write to memory when necessary.
+        */
+       tif->tif_flags |= TIFF_NOBITREV;
+       tif->tif_flags &= ~TIFF_MAPPED;
+
+       /* Setup the function pointers for encode, decode, and cleanup. */
+       tif->tif_setupdecode = JBIGSetupDecode;
+       tif->tif_decodestrip = JBIGDecode;
+
+       tif->tif_setupencode = JBIGSetupEncode;
+       tif->tif_encodestrip = JBIGEncode;
+
+       return 1;
+}
+
+#endif /* JBIG_SUPPORT */
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index bcc750ec47d6ff90ca6430778665e4deb592c5b8..b187a0b5dda805d8e6ac0442f22dc7065840e9e2 100644 (file)
@@ -44,8 +44,9 @@
  */
 #include <setjmp.h>
 
-int TIFFFillStrip(TIFF*, tstrip_t);
-int TIFFFillTile(TIFF*, ttile_t);
+int TIFFFillStrip(TIFF* tif, uint32 strip);
+int TIFFFillTile(TIFF* tif, uint32 tile);
+int TIFFReInitJPEG_12( TIFF *tif, int scheme, int is_encode );
 
 /* We undefine FAR to avoid conflict with JPEG definition */
 
@@ -77,7 +78,7 @@ int TIFFFillTile(TIFF*, ttile_t);
 */
 
 /* Define "boolean" as unsigned char, not int, per Windows custom. */
-#if defined(WIN32) && !defined(__MINGW32__)
+#if defined(__WIN32__) && !defined(__MINGW32__)
 # ifndef __RPCNDR_H__            /* don't conflict if rpcndr.h already read */
    typedef unsigned char boolean;
 # endif
@@ -98,6 +99,17 @@ int TIFFFillTile(TIFF*, ttile_t);
    typedef boolean wxjpeg_boolean;
 #endif
 
+/* 
+ * Do we want to do special processing suitable for when JSAMPLE is a
+ * 16bit value?  
+ */
+
+#if defined(JPEG_LIB_MK1)
+#  define JPEG_LIB_MK1_OR_12BIT 1
+#elif BITS_IN_JSAMPLE == 12
+#  define JPEG_LIB_MK1_OR_12BIT 1
+#endif
+
 /*
  * We are using width_in_blocks which is supposed to be private to
  * libjpeg. Unfortunately, the libjpeg delivered with Cygwin has
@@ -119,7 +131,7 @@ int TIFFFillTile(TIFF*, ttile_t);
 
 typedef struct jpeg_destination_mgr jpeg_destination_mgr;
 typedef struct jpeg_source_mgr jpeg_source_mgr;
-typedef        struct jpeg_error_mgr jpeg_error_mgr;
+typedef struct jpeg_error_mgr jpeg_error_mgr;
 
 /*
  * State block for each open TIFF file using
@@ -134,13 +146,13 @@ typedef   struct jpeg_error_mgr jpeg_error_mgr;
  *     so we can safely cast JPEGState* -> jpeg_xxx_struct*
  *     and vice versa!
  */
-typedef        struct {
+typedef struct {
        union {
                struct jpeg_compress_struct c;
                struct jpeg_decompress_struct d;
                struct jpeg_common_struct comm;
        } cinfo;                        /* NB: must be first */
-        int             cinfo_initialized;
+       int             cinfo_initialized;
 
        jpeg_error_mgr  err;            /* libjpeg error manager */
        JMP_BUF         exit_jmpbuf;    /* for catching libjpeg failures */
@@ -155,7 +167,7 @@ typedef     struct {
        uint16          photometric;    /* copy of PhotometricInterpretation */
        uint16          h_sampling;     /* luminance sampling factors */
        uint16          v_sampling;
-       tsize_t         bytesperline;   /* decompressed bytes per scanline */
+       tmsize_t        bytesperline;   /* decompressed bytes per scanline */
        /* pointers to intermediate buffers when processing downsampled data */
        JSAMPARRAY      ds_buffer[MAX_COMPONENTS];
        int             scancount;      /* number of "scanlines" accumulated */
@@ -163,6 +175,7 @@ typedef     struct {
 
        TIFFVGetMethod  vgetparent;     /* super-class method */
        TIFFVSetMethod  vsetparent;     /* super-class method */
+       TIFFPrintMethod printdir;       /* super-class method */
        TIFFStripMethod defsparent;     /* super-class method */
        TIFFTileMethod  deftparent;     /* super-class method */
                                        /* pseudo-tag fields */
@@ -173,47 +186,25 @@ typedef   struct {
        int             jpegtablesmode; /* What to put in JPEGTables */
 
         int             ycbcrsampling_fetched;
-       uint32          recvparams;     /* encoded Class 2 session params */
-       char*           subaddress;     /* subaddress string */
-       uint32          recvtime;       /* time spent receiving (secs) */
-       char*           faxdcs;         /* encoded fax parameters (DCS, Table 2/T.30) */
 } JPEGState;
 
 #define        JState(tif)     ((JPEGState*)(tif)->tif_data)
 
-static int JPEGDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGDecodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGEncodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static  int JPEGInitializeLibJPEG( TIFF * tif,
-                                                                  int force_encode, int force_decode );
+static int JPEGDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int JPEGEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int JPEGEncodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int JPEGInitializeLibJPEG(TIFF * tif, int decode );
+static int DecodeRowError(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
 
 #define        FIELD_JPEGTABLES        (FIELD_CODEC+0)
-#define        FIELD_RECVPARAMS        (FIELD_CODEC+1)
-#define        FIELD_SUBADDRESS        (FIELD_CODEC+2)
-#define        FIELD_RECVTIME          (FIELD_CODEC+3)
-#define        FIELD_FAXDCS            (FIELD_CODEC+4)
-
-static const TIFFFieldInfo jpegFieldInfo[] = {
-    { TIFFTAG_JPEGTABLES,       -3,-3, TIFF_UNDEFINED, FIELD_JPEGTABLES,
-      FALSE,   TRUE,   "JPEGTables" },
-    { TIFFTAG_JPEGQUALITY,      0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      TRUE,    FALSE,  "" },
-    { TIFFTAG_JPEGCOLORMODE,    0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      FALSE,   FALSE,  "" },
-    { TIFFTAG_JPEGTABLESMODE,   0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      FALSE,   FALSE,  "" },
-    /* Specific for JPEG in faxes */
-    { TIFFTAG_FAXRECVPARAMS,    1, 1, TIFF_LONG,       FIELD_RECVPARAMS,
-      TRUE,    FALSE,  "FaxRecvParams" },
-    { TIFFTAG_FAXSUBADDRESS,   -1,-1, TIFF_ASCII,      FIELD_SUBADDRESS,
-      TRUE,    FALSE,  "FaxSubAddress" },
-    { TIFFTAG_FAXRECVTIME,      1, 1, TIFF_LONG,       FIELD_RECVTIME,
-      TRUE,    FALSE,  "FaxRecvTime" },
-    { TIFFTAG_FAXDCS,          -1, -1, TIFF_ASCII,     FIELD_FAXDCS,
-         TRUE, FALSE,  "FaxDcs" },
+
+static const TIFFField jpegFields[] = {
+    { TIFFTAG_JPEGTABLES, -3, -3, TIFF_UNDEFINED, 0, TIFF_SETGET_C32_UINT8, TIFF_SETGET_C32_UINT8, FIELD_JPEGTABLES, FALSE, TRUE, "JPEGTables", NULL },
+    { TIFFTAG_JPEGQUALITY, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "", NULL },
+    { TIFFTAG_JPEGCOLORMODE, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "", NULL },
+    { TIFFTAG_JPEGTABLESMODE, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "", NULL }
 };
-#define        N(a)    (sizeof (a) / sizeof (a[0]))
 
 /*
  * libjpeg interface layer.
@@ -236,7 +227,7 @@ TIFFjpeg_error_exit(j_common_ptr cinfo)
        char buffer[JMSG_LENGTH_MAX];
 
        (*cinfo->err->format_message) (cinfo, buffer);
-       TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", buffer);               /* display the error message */
+       TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", "%s", buffer);         /* display the error message */
        jpeg_abort(cinfo);                      /* clean up libjpeg state */
        LONGJMP(sp->exit_jmpbuf, 1);            /* return to libtiff caller */
 }
@@ -252,7 +243,7 @@ TIFFjpeg_output_message(j_common_ptr cinfo)
        char buffer[JMSG_LENGTH_MAX];
 
        (*cinfo->err->format_message) (cinfo, buffer);
-       TIFFWarningExt(((JPEGState *) cinfo)->tif->tif_clientdata, "JPEGLib", buffer);
+       TIFFWarningExt(((JPEGState *) cinfo)->tif->tif_clientdata, "JPEGLib", "%s", buffer);
 }
 
 /*
@@ -421,6 +412,19 @@ std_empty_output_buffer(j_compress_ptr cinfo)
 
        /* the entire buffer has been filled */
        tif->tif_rawcc = tif->tif_rawdatasize;
+
+#ifdef IPPJ_HUFF
+       /*
+        * The Intel IPP performance library does not necessarily fill up
+        * the whole output buffer on each pass, so only dump out the parts
+        * that have been filled.
+        *   http://trac.osgeo.org/gdal/wiki/JpegIPP
+        */
+       if ( sp->dest.free_in_buffer >= 0 ) {
+               tif->tif_rawcc = tif->tif_rawdatasize - sp->dest.free_in_buffer;
+       }
+#endif
+
        TIFFFlushData1(tif);
        sp->dest.next_output_byte = (JOCTET*) tif->tif_rawdata;
        sp->dest.free_in_buffer = (size_t) tif->tif_rawdatasize;
@@ -434,9 +438,9 @@ std_term_destination(j_compress_ptr cinfo)
        JPEGState* sp = (JPEGState*) cinfo;
        TIFF* tif = sp->tif;
 
-       tif->tif_rawcp = (tidata_t) sp->dest.next_output_byte;
+       tif->tif_rawcp = (uint8*) sp->dest.next_output_byte;
        tif->tif_rawcc =
-           tif->tif_rawdatasize - (tsize_t) sp->dest.free_in_buffer;
+           tif->tif_rawdatasize - (tmsize_t) sp->dest.free_in_buffer;
        /* NB: libtiff does the final buffer flush */
 }
 
@@ -471,8 +475,8 @@ tables_empty_output_buffer(j_compress_ptr cinfo)
        void* newbuf;
 
        /* the entire buffer has been filled; enlarge it by 1000 bytes */
-       newbuf = _TIFFrealloc((tdata_t) sp->jpegtables,
-                             (tsize_t) (sp->jpegtables_length + 1000));
+       newbuf = _TIFFrealloc((void*) sp->jpegtables,
+                             (tmsize_t) (sp->jpegtables_length + 1000));
        if (newbuf == NULL)
                ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 100);
        sp->dest.next_output_byte = (JOCTET*) newbuf + sp->jpegtables_length;
@@ -488,7 +492,7 @@ tables_term_destination(j_compress_ptr cinfo)
        JPEGState* sp = (JPEGState*) cinfo;
 
        /* set tables length to number of bytes actually emitted */
-       sp->jpegtables_length -= sp->dest.free_in_buffer;
+       sp->jpegtables_length -= (uint32) sp->dest.free_in_buffer;
 }
 
 static int
@@ -502,7 +506,7 @@ TIFFjpeg_tables_dest(JPEGState* sp, TIFF* tif)
        if (sp->jpegtables)
                _TIFFfree(sp->jpegtables);
        sp->jpegtables_length = 1000;
-       sp->jpegtables = (void*) _TIFFmalloc((tsize_t) sp->jpegtables_length);
+       sp->jpegtables = (void*) _TIFFmalloc((tmsize_t) sp->jpegtables_length);
        if (sp->jpegtables == NULL) {
                sp->jpegtables_length = 0;
                TIFFErrorExt(sp->tif->tif_clientdata, "TIFFjpeg_tables_dest", "No space for JPEGTables");
@@ -536,11 +540,29 @@ std_fill_input_buffer(j_decompress_ptr cinfo)
        JPEGState* sp = (JPEGState* ) cinfo;
        static const JOCTET dummy_EOI[2] = { 0xFF, JPEG_EOI };
 
+#ifdef IPPJ_HUFF
+        /*
+         * The Intel IPP performance library does not necessarily read the whole
+         * input buffer in one pass, so it is possible to get here with data
+         * yet to read. 
+         * 
+         * We just return without doing anything, until the entire buffer has
+         * been read.  
+         * http://trac.osgeo.org/gdal/wiki/JpegIPP
+         */
+        if( sp->src.bytes_in_buffer > 0 ) {
+            return (TRUE);
+        }
+#endif
+
        /*
-        * Should never get here since entire strip/tile is
-        * read into memory before the decompressor is called,
-        * and thus was supplied by init_source.
+         * Normally the whole strip/tile is read and so we don't need to do
+         * a fill.  In the case of CHUNKY_STRIP_READ_SUPPORT we might not have
+         * all the data, but the rawdata is refreshed between scanlines and
+         * we push this into the io machinery in JPEGDecode().          
+         * http://trac.osgeo.org/gdal/ticket/3894
         */
+        
        WARNMS(cinfo, JWRN_JPEG_EOF);
        /* insert a fake EOI marker */
        sp->src.next_input_byte = dummy_EOI;
@@ -554,7 +576,7 @@ std_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
        JPEGState* sp = (JPEGState*) cinfo;
 
        if (num_bytes > 0) {
-               if (num_bytes > (long) sp->src.bytes_in_buffer) {
+               if ((size_t)num_bytes > sp->src.bytes_in_buffer) {
                        /* oops, buffer overrun */
                        (void) std_fill_input_buffer(cinfo);
                } else {
@@ -568,8 +590,6 @@ static void
 std_term_source(j_decompress_ptr cinfo)
 {
        /* No work necessary here */
-       /* Or must we update tif->tif_rawcp, tif->tif_rawcc ??? */
-       /* (if so, need empty tables_term_source!) */
        (void) cinfo;
 }
 
@@ -645,13 +665,308 @@ alloc_downsampled_buffers(TIFF* tif, jpeg_component_info* comp_info,
  * JPEG Decoding.
  */
 
+#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
+
+#define JPEG_MARKER_SOF0 0xC0
+#define JPEG_MARKER_SOF1 0xC1
+#define JPEG_MARKER_SOF3 0xC3
+#define JPEG_MARKER_DHT 0xC4
+#define JPEG_MARKER_SOI 0xD8
+#define JPEG_MARKER_SOS 0xDA
+#define JPEG_MARKER_DQT 0xDB
+#define JPEG_MARKER_DRI 0xDD
+#define JPEG_MARKER_APP0 0xE0
+#define JPEG_MARKER_COM 0xFE
+struct JPEGFixupTagsSubsamplingData
+{
+       TIFF* tif;
+       void* buffer;
+       uint32 buffersize;
+       uint8* buffercurrentbyte;
+       uint32 bufferbytesleft;
+       uint64 fileoffset;
+       uint64 filebytesleft;
+       uint8 filepositioned;
+};
+static void JPEGFixupTagsSubsampling(TIFF* tif);
+static int JPEGFixupTagsSubsamplingSec(struct JPEGFixupTagsSubsamplingData* data);
+static int JPEGFixupTagsSubsamplingReadByte(struct JPEGFixupTagsSubsamplingData* data, uint8* result);
+static int JPEGFixupTagsSubsamplingReadWord(struct JPEGFixupTagsSubsamplingData* data, uint16* result);
+static void JPEGFixupTagsSubsamplingSkip(struct JPEGFixupTagsSubsamplingData* data, uint16 skiplength);
+
+#endif
+
+static int
+JPEGFixupTags(TIFF* tif)
+{
+#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
+       if ((tif->tif_dir.td_photometric==PHOTOMETRIC_YCBCR)&&
+           (tif->tif_dir.td_planarconfig==PLANARCONFIG_CONTIG)&&
+           (tif->tif_dir.td_samplesperpixel==3))
+               JPEGFixupTagsSubsampling(tif);
+#endif
+        
+       return(1);
+}
+
+#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
+
+static void
+JPEGFixupTagsSubsampling(TIFF* tif)
+{
+       /*
+        * Some JPEG-in-TIFF produces do not emit the YCBCRSUBSAMPLING values in
+        * the TIFF tags, but still use non-default (2,2) values within the jpeg
+        * data stream itself.  In order for TIFF applications to work properly
+        * - for instance to get the strip buffer size right - it is imperative
+        * that the subsampling be available before we start reading the image
+        * data normally.  This function will attempt to analyze the first strip in
+        * order to get the sampling values from the jpeg data stream.
+        *
+        * Note that JPEGPreDeocode() will produce a fairly loud warning when the
+        * discovered sampling does not match the default sampling (2,2) or whatever
+        * was actually in the tiff tags.
+        *
+        * See the bug in bugzilla for details:
+        *
+        * http://bugzilla.remotesensing.org/show_bug.cgi?id=168
+        *
+        * Frank Warmerdam, July 2002
+        * Joris Van Damme, May 2007
+        */
+       static const char module[] = "JPEGFixupTagsSubsampling";
+       struct JPEGFixupTagsSubsamplingData m;
+
+        _TIFFFillStriles( tif );
+        
+        if( tif->tif_dir.td_stripbytecount == NULL
+            || tif->tif_dir.td_stripbytecount[0] == 0 )
+        {
+            /* Do not even try to check if the first strip/tile does not
+               yet exist, as occurs when GDAL has created a new NULL file
+               for instance. */
+            return;
+        }
+
+       m.tif=tif;
+       m.buffersize=2048;
+       m.buffer=_TIFFmalloc(m.buffersize);
+       if (m.buffer==NULL)
+       {
+               TIFFWarningExt(tif->tif_clientdata,module,
+                   "Unable to allocate memory for auto-correcting of subsampling values; auto-correcting skipped");
+               return;
+       }
+       m.buffercurrentbyte=NULL;
+       m.bufferbytesleft=0;
+       m.fileoffset=tif->tif_dir.td_stripoffset[0];
+       m.filepositioned=0;
+       m.filebytesleft=tif->tif_dir.td_stripbytecount[0];
+       if (!JPEGFixupTagsSubsamplingSec(&m))
+               TIFFWarningExt(tif->tif_clientdata,module,
+                   "Unable to auto-correct subsampling values, likely corrupt JPEG compressed data in first strip/tile; auto-correcting skipped");
+       _TIFFfree(m.buffer);
+}
+
+static int
+JPEGFixupTagsSubsamplingSec(struct JPEGFixupTagsSubsamplingData* data)
+{
+       static const char module[] = "JPEGFixupTagsSubsamplingSec";
+       uint8 m;
+       while (1)
+       {
+               while (1)
+               {
+                       if (!JPEGFixupTagsSubsamplingReadByte(data,&m))
+                               return(0);
+                       if (m==255)
+                               break;
+               }
+               while (1)
+               {
+                       if (!JPEGFixupTagsSubsamplingReadByte(data,&m))
+                               return(0);
+                       if (m!=255)
+                               break;
+               }
+               switch (m)
+               {
+                       case JPEG_MARKER_SOI:
+                               /* this type of marker has no data and should be skipped */
+                               break;
+                       case JPEG_MARKER_COM:
+                       case JPEG_MARKER_APP0:
+                       case JPEG_MARKER_APP0+1:
+                       case JPEG_MARKER_APP0+2:
+                       case JPEG_MARKER_APP0+3:
+                       case JPEG_MARKER_APP0+4:
+                       case JPEG_MARKER_APP0+5:
+                       case JPEG_MARKER_APP0+6:
+                       case JPEG_MARKER_APP0+7:
+                       case JPEG_MARKER_APP0+8:
+                       case JPEG_MARKER_APP0+9:
+                       case JPEG_MARKER_APP0+10:
+                       case JPEG_MARKER_APP0+11:
+                       case JPEG_MARKER_APP0+12:
+                       case JPEG_MARKER_APP0+13:
+                       case JPEG_MARKER_APP0+14:
+                       case JPEG_MARKER_APP0+15:
+                       case JPEG_MARKER_DQT:
+                       case JPEG_MARKER_SOS:
+                       case JPEG_MARKER_DHT:
+                       case JPEG_MARKER_DRI:
+                               /* this type of marker has data, but it has no use to us and should be skipped */
+                               {
+                                       uint16 n;
+                                       if (!JPEGFixupTagsSubsamplingReadWord(data,&n))
+                                               return(0);
+                                       if (n<2)
+                                               return(0);
+                                       n-=2;
+                                       if (n>0)
+                                               JPEGFixupTagsSubsamplingSkip(data,n);
+                               }
+                               break;
+                       case JPEG_MARKER_SOF0:
+                       case JPEG_MARKER_SOF1:
+                               /* this marker contains the subsampling factors we're scanning for */
+                               {
+                                       uint16 n;
+                                       uint16 o;
+                                       uint8 p;
+                                       uint8 ph,pv;
+                                       if (!JPEGFixupTagsSubsamplingReadWord(data,&n))
+                                               return(0);
+                                       if (n!=8+data->tif->tif_dir.td_samplesperpixel*3)
+                                               return(0);
+                                       JPEGFixupTagsSubsamplingSkip(data,7);
+                                       if (!JPEGFixupTagsSubsamplingReadByte(data,&p))
+                                               return(0);
+                                       ph=(p>>4);
+                                       pv=(p&15);
+                                       JPEGFixupTagsSubsamplingSkip(data,1);
+                                       for (o=1; o<data->tif->tif_dir.td_samplesperpixel; o++)
+                                       {
+                                               JPEGFixupTagsSubsamplingSkip(data,1);
+                                               if (!JPEGFixupTagsSubsamplingReadByte(data,&p))
+                                                       return(0);
+                                               if (p!=0x11)
+                                               {
+                                                       TIFFWarningExt(data->tif->tif_clientdata,module,
+                                                           "Subsampling values inside JPEG compressed data have no TIFF equivalent, auto-correction of TIFF subsampling values failed");
+                                                       return(1);
+                                               }
+                                               JPEGFixupTagsSubsamplingSkip(data,1);
+                                       }
+                                       if (((ph!=1)&&(ph!=2)&&(ph!=4))||((pv!=1)&&(pv!=2)&&(pv!=4)))
+                                       {
+                                               TIFFWarningExt(data->tif->tif_clientdata,module,
+                                                   "Subsampling values inside JPEG compressed data have no TIFF equivalent, auto-correction of TIFF subsampling values failed");
+                                               return(1);
+                                       }
+                                       if ((ph!=data->tif->tif_dir.td_ycbcrsubsampling[0])||(pv!=data->tif->tif_dir.td_ycbcrsubsampling[1]))
+                                       {
+                                               TIFFWarningExt(data->tif->tif_clientdata,module,
+                                                   "Auto-corrected former TIFF subsampling values [%d,%d] to match subsampling values inside JPEG compressed data [%d,%d]",
+                                                   (int)data->tif->tif_dir.td_ycbcrsubsampling[0],
+                                                   (int)data->tif->tif_dir.td_ycbcrsubsampling[1],
+                                                   (int)ph,(int)pv);
+                                               data->tif->tif_dir.td_ycbcrsubsampling[0]=ph;
+                                               data->tif->tif_dir.td_ycbcrsubsampling[1]=pv;
+                                       }
+                               }
+                               return(1);
+                       default:
+                               return(0);
+               }
+       }
+}
+
+static int
+JPEGFixupTagsSubsamplingReadByte(struct JPEGFixupTagsSubsamplingData* data, uint8* result)
+{
+       if (data->bufferbytesleft==0)
+       {
+               uint32 m;
+               if (data->filebytesleft==0)
+                       return(0);
+               if (!data->filepositioned)
+               {
+                       TIFFSeekFile(data->tif,data->fileoffset,SEEK_SET);
+                       data->filepositioned=1;
+               }
+               m=data->buffersize;
+               if ((uint64)m>data->filebytesleft)
+                       m=(uint32)data->filebytesleft;
+               assert(m<0x80000000UL);
+               if (TIFFReadFile(data->tif,data->buffer,(tmsize_t)m)!=(tmsize_t)m)
+                       return(0);
+               data->buffercurrentbyte=data->buffer;
+               data->bufferbytesleft=m;
+               data->fileoffset+=m;
+               data->filebytesleft-=m;
+       }
+       *result=*data->buffercurrentbyte;
+       data->buffercurrentbyte++;
+       data->bufferbytesleft--;
+       return(1);
+}
+
+static int
+JPEGFixupTagsSubsamplingReadWord(struct JPEGFixupTagsSubsamplingData* data, uint16* result)
+{
+       uint8 ma;
+       uint8 mb;
+       if (!JPEGFixupTagsSubsamplingReadByte(data,&ma))
+               return(0);
+       if (!JPEGFixupTagsSubsamplingReadByte(data,&mb))
+               return(0);
+       *result=(ma<<8)|mb;
+       return(1);
+}
+
+static void
+JPEGFixupTagsSubsamplingSkip(struct JPEGFixupTagsSubsamplingData* data, uint16 skiplength)
+{
+       if ((uint32)skiplength<=data->bufferbytesleft)
+       {
+               data->buffercurrentbyte+=skiplength;
+               data->bufferbytesleft-=skiplength;
+       }
+       else
+       {
+               uint16 m;
+               m=skiplength-data->bufferbytesleft;
+               if (m<=data->filebytesleft)
+               {
+                       data->bufferbytesleft=0;
+                       data->fileoffset+=m;
+                       data->filebytesleft-=m;
+                       data->filepositioned=0;
+               }
+               else
+               {
+                       data->bufferbytesleft=0;
+                       data->filebytesleft=0;
+               }
+       }
+}
+
+#endif
+
+
 static int
 JPEGSetupDecode(TIFF* tif)
 {
        JPEGState* sp = JState(tif);
        TIFFDirectory *td = &tif->tif_dir;
 
-        JPEGInitializeLibJPEG( tif, 0, 1 );
+#if defined(JPEG_DUAL_MODE_8_12) && !defined(TIFFInitJPEG)
+        if( tif->tif_dir.td_bitspersample == 12 )
+            return TIFFReInitJPEG_12( tif, COMPRESSION_JPEG, 0 );
+#endif
+
+       JPEGInitializeLibJPEG( tif, TRUE );
 
        assert(sp != NULL);
        assert(sp->cinfo.comm.is_decompressor);
@@ -689,7 +1004,7 @@ JPEGSetupDecode(TIFF* tif)
  * Set up for decoding a strip or tile.
  */
 static int
-JPEGPreDecode(TIFF* tif, tsample_t s)
+JPEGPreDecode(TIFF* tif, uint16 s)
 {
        JPEGState *sp = JState(tif);
        TIFFDirectory *td = &tif->tif_dir;
@@ -699,6 +1014,12 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
        int ci;
 
        assert(sp != NULL);
+  
+       if (sp->cinfo.comm.is_decompressor == 0)
+       {
+               tif->tif_setupdecode( tif );
+       }
+  
        assert(sp->cinfo.comm.is_decompressor);
        /*
         * Reset decoder state from any previous strip/tile,
@@ -709,8 +1030,13 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
        /*
         * Read the header for this strip/tile.
         */
+        
        if (TIFFjpeg_read_header(sp, TRUE) != JPEG_HEADER_OK)
                return (0);
+
+        tif->tif_rawcp = (uint8*) sp->src.next_input_byte;
+        tif->tif_rawcc = sp->src.bytes_in_buffer;
+
        /*
         * Check image parameters and set decompression parameters.
         */
@@ -730,17 +1056,32 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
                 * For PC 2, scale down the expected strip/tile size
                 * to match a downsampled component
                 */
-               segment_width = TIFFhowmany(segment_width, sp->h_sampling);
-               segment_height = TIFFhowmany(segment_height, sp->v_sampling);
+               segment_width = TIFFhowmany_32(segment_width, sp->h_sampling);
+               segment_height = TIFFhowmany_32(segment_height, sp->v_sampling);
        }
-       if (sp->cinfo.d.image_width != segment_width ||
-           sp->cinfo.d.image_height != segment_height) {
+       if (sp->cinfo.d.image_width < segment_width ||
+           sp->cinfo.d.image_height < segment_height) {
                TIFFWarningExt(tif->tif_clientdata, module,
-                 "Improper JPEG strip/tile size, expected %dx%d, got %dx%d",
-                          segment_width, 
-                          segment_height,
-                          sp->cinfo.d.image_width, 
-                          sp->cinfo.d.image_height);
+                              "Improper JPEG strip/tile size, "
+                              "expected %dx%d, got %dx%d",
+                              segment_width, segment_height,
+                              sp->cinfo.d.image_width,
+                              sp->cinfo.d.image_height);
+       } 
+       if (sp->cinfo.d.image_width > segment_width ||
+           sp->cinfo.d.image_height > segment_height) {
+               /*
+                * This case could be dangerous, if the strip or tile size has
+                * been reported as less than the amount of data jpeg will
+                * return, some potential security issues arise. Catch this
+                * case and error out.
+                */
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "JPEG strip/tile size exceeds expected dimensions,"
+                            " expected %dx%d, got %dx%d",
+                            segment_width, segment_height,
+                            sp->cinfo.d.image_width, sp->cinfo.d.image_height);
+               return (0);
        }
        if (sp->cinfo.d.num_components !=
            (td->td_planarconfig == PLANARCONFIG_CONTIG ?
@@ -750,47 +1091,28 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
        }
 #ifdef JPEG_LIB_MK1
        if (12 != td->td_bitspersample && 8 != td->td_bitspersample) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
-            return (0);
+               TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
+               return (0);
        }
-        sp->cinfo.d.data_precision = td->td_bitspersample;
-        sp->cinfo.d.bits_in_jsample = td->td_bitspersample;
+       sp->cinfo.d.data_precision = td->td_bitspersample;
+       sp->cinfo.d.bits_in_jsample = td->td_bitspersample;
 #else
        if (sp->cinfo.d.data_precision != td->td_bitspersample) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
-            return (0);
+               TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
+               return (0);
        }
 #endif
        if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
                /* Component 0 should have expected sampling factors */
                if (sp->cinfo.d.comp_info[0].h_samp_factor != sp->h_sampling ||
                    sp->cinfo.d.comp_info[0].v_samp_factor != sp->v_sampling) {
-                               TIFFWarningExt(tif->tif_clientdata, module,
-                                    "Improper JPEG sampling factors %d,%d\n"
-                                    "Apparently should be %d,%d.",
-                                    sp->cinfo.d.comp_info[0].h_samp_factor,
-                                    sp->cinfo.d.comp_info[0].v_samp_factor,
-                                    sp->h_sampling, sp->v_sampling);
-
-                           /*
-                            * XXX: Files written by the Intergraph software
-                            * has different sampling factors stored in the
-                            * TIFF tags and in the JPEG structures. We will
-                            * try to deduce Intergraph files by the presense
-                            * of the tag 33918.
-                            */
-                           if (!_TIFFFindFieldInfo(tif, 33918, TIFF_ANY)) {
-                                       TIFFWarningExt(tif->tif_clientdata, module,
-                                       "Decompressor will try reading with "
-                                       "sampling %d,%d.",
-                                       sp->cinfo.d.comp_info[0].h_samp_factor,
-                                       sp->cinfo.d.comp_info[0].v_samp_factor);
-
-                                   sp->h_sampling = (uint16)
-                                       sp->cinfo.d.comp_info[0].h_samp_factor;
-                                   sp->v_sampling = (uint16)
-                                       sp->cinfo.d.comp_info[0].v_samp_factor;
-                           }
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                      "Improper JPEG sampling factors %d,%d\n"
+                                      "Apparently should be %d,%d.",
+                                      sp->cinfo.d.comp_info[0].h_samp_factor,
+                                      sp->cinfo.d.comp_info[0].v_samp_factor,
+                                      sp->h_sampling, sp->v_sampling);
+                       return (0);
                }
                /* Rest should have sampling factors 1,1 */
                for (ci = 1; ci < sp->cinfo.d.num_components; ci++) {
@@ -812,11 +1134,11 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
        if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
            sp->photometric == PHOTOMETRIC_YCBCR &&
            sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-       /* Convert YCbCr to RGB */
+               /* Convert YCbCr to RGB */
                sp->cinfo.d.jpeg_color_space = JCS_YCbCr;
                sp->cinfo.d.out_color_space = JCS_RGB;
        } else {
-                       /* Suppress colorspace handling */
+               /* Suppress colorspace handling */
                sp->cinfo.d.jpeg_color_space = JCS_UNKNOWN;
                sp->cinfo.d.out_color_space = JCS_UNKNOWN;
                if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
@@ -827,7 +1149,10 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
        if (downsampled_output) {
                /* Need to use raw-data interface to libjpeg */
                sp->cinfo.d.raw_data_out = TRUE;
-               tif->tif_decoderow = JPEGDecodeRaw;
+#if JPEG_LIB_VERSION >= 70
+               sp->cinfo.d.do_fancy_upsampling = FALSE;
+#endif /* JPEG_LIB_VERSION >= 70 */
+               tif->tif_decoderow = DecodeRowError;
                tif->tif_decodestrip = JPEGDecodeRaw;
                tif->tif_decodetile = JPEGDecodeRaw;
        } else {
@@ -835,7 +1160,7 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
                sp->cinfo.d.raw_data_out = FALSE;
                tif->tif_decoderow = JPEGDecode;
                tif->tif_decodestrip = JPEGDecode;
-               tif->tif_decodetile = JPEGDecode;
+               tif->tif_decodetile = JPEGDecode;  
        }
        /* Start JPEG decompressor */
        if (!TIFFjpeg_start_decompress(sp))
@@ -855,103 +1180,130 @@ JPEGPreDecode(TIFF* tif, tsample_t s)
  * "Standard" case: returned data is not downsampled.
  */
 /*ARGSUSED*/ static int
-JPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+JPEGDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
-    JPEGState *sp = JState(tif);
-    tsize_t nrows;
-    (void) s;
+       JPEGState *sp = JState(tif);
+       tmsize_t nrows;
+       (void) s;
 
-    nrows = cc / sp->bytesperline;
-    if (cc % sp->bytesperline)
+        /*
+        ** Update available information, buffer may have been refilled
+        ** between decode requests
+        */
+       sp->src.next_input_byte = (const JOCTET*) tif->tif_rawcp;
+       sp->src.bytes_in_buffer = (size_t) tif->tif_rawcc;
+
+        if( sp->bytesperline == 0 )
+                return 0;
+        
+       nrows = cc / sp->bytesperline;
+       if (cc % sp->bytesperline)
                TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline not read");
 
-    if( nrows > (int) sp->cinfo.d.image_height )
-        nrows = sp->cinfo.d.image_height;
+       if( nrows > (tmsize_t) sp->cinfo.d.image_height )
+               nrows = sp->cinfo.d.image_height;
 
-    /* data is expected to be read in multiples of a scanline */
-    if (nrows)
-    {
-        JSAMPROW line_work_buf = NULL;
+       /* data is expected to be read in multiples of a scanline */
+       if (nrows)
+       {
+               JSAMPROW line_work_buf = NULL;
 
-        /*
-        ** For 6B, only use temporary buffer for 12 bit imagery. 
-        ** For Mk1 always use it. 
-        */
-#if !defined(JPEG_LIB_MK1)        
-        if( sp->cinfo.d.data_precision == 12 )
+               /*
+                * For 6B, only use temporary buffer for 12 bit imagery.
+                * For Mk1 always use it.
+                */
+#if !defined(JPEG_LIB_MK1)
+               if( sp->cinfo.d.data_precision == 12 )
 #endif
-        {
-            line_work_buf = (JSAMPROW) 
-                _TIFFmalloc(sizeof(short) * sp->cinfo.d.output_width 
-                            * sp->cinfo.d.num_components );
-        }
+               {
+                       line_work_buf = (JSAMPROW)
+                           _TIFFmalloc(sizeof(short) * sp->cinfo.d.output_width
+                           * sp->cinfo.d.num_components );
+               }
 
-        do {
-            if( line_work_buf != NULL )
-            {
-                /* 
-                ** In the MK1 case, we aways read into a 16bit buffer, and then
-                ** pack down to 12bit or 8bit.  In 6B case we only read into 16
-                ** bit buffer for 12bit data, which we need to repack. 
-                */
-                if (TIFFjpeg_read_scanlines(sp, &line_work_buf, 1) != 1)
-                    return (0);
-
-                if( sp->cinfo.d.data_precision == 12 )
-                {
-                    int value_pairs = (sp->cinfo.d.output_width 
-                                       * sp->cinfo.d.num_components) / 2;
-                    int iPair;
-
-                    for( iPair = 0; iPair < value_pairs; iPair++ )
-                    {
-                        unsigned char *out_ptr = 
-                            ((unsigned char *) buf) + iPair * 3;
-                        JSAMPLE *in_ptr = line_work_buf + iPair * 2;
-
-                        out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
-                        out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
-                            | ((in_ptr[1] & 0xf00) >> 8);
-                        out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
-                    }
-                }
-                else if( sp->cinfo.d.data_precision == 8 )
-                {
-                    int value_count = (sp->cinfo.d.output_width 
-                                       * sp->cinfo.d.num_components);
-                    int iValue;
-
-                    for( iValue = 0; iValue < value_count; iValue++ )
-                    {
-                        ((unsigned char *) buf)[iValue] = 
-                            line_work_buf[iValue] & 0xff;
-                    }
-                }
-            }
-            else
-            {
-                /*
-                ** In the libjpeg6b 8bit case.  We read directly into the 
-                ** TIFF buffer.
-                */
-                JSAMPROW bufptr = (JSAMPROW)buf;
-  
-                if (TIFFjpeg_read_scanlines(sp, &bufptr, 1) != 1)
-                    return (0);
-            }
+               do {
+                       if( line_work_buf != NULL )
+                       {
+                               /*
+                                * In the MK1 case, we aways read into a 16bit buffer, and then
+                                * pack down to 12bit or 8bit.  In 6B case we only read into 16
+                                * bit buffer for 12bit data, which we need to repack.
+                               */
+                               if (TIFFjpeg_read_scanlines(sp, &line_work_buf, 1) != 1)
+                                       return (0);
+
+                               if( sp->cinfo.d.data_precision == 12 )
+                               {
+                                       int value_pairs = (sp->cinfo.d.output_width
+                                           * sp->cinfo.d.num_components) / 2;
+                                       int iPair;
+
+                                       for( iPair = 0; iPair < value_pairs; iPair++ )
+                                       {
+                                               unsigned char *out_ptr =
+                                                   ((unsigned char *) buf) + iPair * 3;
+                                               JSAMPLE *in_ptr = line_work_buf + iPair * 2;
+
+                                               out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
+                                               out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
+                                                   | ((in_ptr[1] & 0xf00) >> 8);
+                                               out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
+                                       }
+                               }
+                               else if( sp->cinfo.d.data_precision == 8 )
+                               {
+                                       int value_count = (sp->cinfo.d.output_width
+                                           * sp->cinfo.d.num_components);
+                                       int iValue;
+
+                                       for( iValue = 0; iValue < value_count; iValue++ )
+                                       {
+                                               ((unsigned char *) buf)[iValue] =
+                                                   line_work_buf[iValue] & 0xff;
+                                       }
+                               }
+                       }
+                       else
+                       {
+                               /*
+                                * In the libjpeg6b 8bit case.  We read directly into the
+                                * TIFF buffer.
+                               */
+                               JSAMPROW bufptr = (JSAMPROW)buf;
+
+                               if (TIFFjpeg_read_scanlines(sp, &bufptr, 1) != 1)
+                                       return (0);
+                       }
 
-            ++tif->tif_row;
-            buf += sp->bytesperline;
-            cc -= sp->bytesperline;
-        } while (--nrows > 0);
+                       ++tif->tif_row;
+                       buf += sp->bytesperline;
+                       cc -= sp->bytesperline;
+               } while (--nrows > 0);
 
-        if( line_work_buf != NULL )
-            _TIFFfree( line_work_buf );
-    }
+               if( line_work_buf != NULL )
+                       _TIFFfree( line_work_buf );
+       }
 
-    /* Close down the decompressor if we've finished the strip or tile. */
-    return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
-        || TIFFjpeg_finish_decompress(sp);
+        /* Update information on consumed data */
+        tif->tif_rawcp = (uint8*) sp->src.next_input_byte;
+        tif->tif_rawcc = sp->src.bytes_in_buffer;
+                
+       /* Close down the decompressor if we've finished the strip or tile. */
+       return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
+           || TIFFjpeg_finish_decompress(sp);
+}
+
+/*ARGSUSED*/ static int
+DecodeRowError(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
+
+{
+    (void) buf;
+    (void) cc;
+    (void) s;
+
+    TIFFErrorExt(tif->tif_clientdata, "TIFFReadScanline",
+                 "scanline oriented access is not supported for downsampled JPEG compressed images, consider enabling TIFF_JPEGCOLORMODE as JPEGCOLORMODE_RGB." );
+    return 0;
 }
 
 /*
@@ -959,121 +1311,140 @@ JPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
  * Returned data is downsampled per sampling factors.
  */
 /*ARGSUSED*/ static int
-JPEGDecodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+JPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
-    JPEGState *sp = JState(tif);
-    tsize_t nrows;
-    (void) s;
+       JPEGState *sp = JState(tif);
+       tmsize_t nrows;
+       (void) s;
 
-    /* data is expected to be read in multiples of a scanline */
-    if ( (nrows = sp->cinfo.d.image_height) ) {
-        /* Cb,Cr both have sampling factors 1, so this is correct */
-        JDIMENSION clumps_per_line = sp->cinfo.d.comp_info[1].downsampled_width;
-        int samples_per_clump = sp->samplesperclump;
-       
-#ifdef JPEG_LIB_MK1
-        unsigned short* tmpbuf = _TIFFmalloc(sizeof(unsigned short) *
-                                             sp->cinfo.d.output_width *
-                                             sp->cinfo.d.num_components);
+       /* data is expected to be read in multiples of a scanline */
+       if ( (nrows = sp->cinfo.d.image_height) ) {
+
+               /* Cb,Cr both have sampling factors 1, so this is correct */
+               JDIMENSION clumps_per_line = sp->cinfo.d.comp_info[1].downsampled_width;            
+               int samples_per_clump = sp->samplesperclump;
+
+#if defined(JPEG_LIB_MK1_OR_12BIT)
+               unsigned short* tmpbuf = _TIFFmalloc(sizeof(unsigned short) *
+                                                    sp->cinfo.d.output_width *
+                                                    sp->cinfo.d.num_components);
+               if(tmpbuf==NULL) {
+                        TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
+                                    "Out of memory");
+                       return 0;
+                }
 #endif
-        do {
-            jpeg_component_info *compptr;
-            int ci, clumpoffset;
-
-            /* Reload downsampled-data buffer if needed */
-            if (sp->scancount >= DCTSIZE) {
-                int n = sp->cinfo.d.max_v_samp_factor * DCTSIZE;
-                if (TIFFjpeg_read_raw_data(sp, sp->ds_buffer, n)
-                    != n)
-                    return (0);
-                sp->scancount = 0;
-            }
-            /*
-             * Fastest way to unseparate data is to make one pass
-             * over the scanline for each row of each component.
-             */
-            clumpoffset = 0;   /* first sample in clump */
-            for (ci = 0, compptr = sp->cinfo.d.comp_info;
-                 ci < sp->cinfo.d.num_components;
-                 ci++, compptr++) {
-                int hsamp = compptr->h_samp_factor;
-                int vsamp = compptr->v_samp_factor;
-                int ypos;
-
-                for (ypos = 0; ypos < vsamp; ypos++) {
-                    JSAMPLE *inptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
-#ifdef JPEG_LIB_MK1
-                    JSAMPLE *outptr = (JSAMPLE*)tmpbuf + clumpoffset;
+
+               do {
+                       jpeg_component_info *compptr;
+                       int ci, clumpoffset;
+
+                        if( cc < sp->bytesperline ) {
+                               TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
+                                            "application buffer not large enough for all data.");
+                               return 0;
+                        }
+
+                       /* Reload downsampled-data buffer if needed */
+                       if (sp->scancount >= DCTSIZE) {
+                               int n = sp->cinfo.d.max_v_samp_factor * DCTSIZE;
+                               if (TIFFjpeg_read_raw_data(sp, sp->ds_buffer, n) != n)
+                                       return (0);
+                               sp->scancount = 0;
+                       }
+                       /*
+                        * Fastest way to unseparate data is to make one pass
+                        * over the scanline for each row of each component.
+                        */
+                       clumpoffset = 0;    /* first sample in clump */
+                       for (ci = 0, compptr = sp->cinfo.d.comp_info;
+                            ci < sp->cinfo.d.num_components;
+                            ci++, compptr++) {
+                               int hsamp = compptr->h_samp_factor;
+                               int vsamp = compptr->v_samp_factor;
+                               int ypos;
+
+                               for (ypos = 0; ypos < vsamp; ypos++) {
+                                       JSAMPLE *inptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
+                                       JDIMENSION nclump;
+#if defined(JPEG_LIB_MK1_OR_12BIT)
+                                       JSAMPLE *outptr = (JSAMPLE*)tmpbuf + clumpoffset;
 #else
-                    JSAMPLE *outptr = (JSAMPLE*)buf + clumpoffset;
+                                       JSAMPLE *outptr = (JSAMPLE*)buf + clumpoffset;
+                                       if (cc < (tmsize_t) (clumpoffset + samples_per_clump*(clumps_per_line-1) + hsamp)) {
+                                               TIFFErrorExt(tif->tif_clientdata, "JPEGDecodeRaw",
+                                                            "application buffer not large enough for all data, possible subsampling issue");
+                                               return 0;
+                                       }
 #endif
-                    JDIMENSION nclump;
 
-                    if (hsamp == 1) {
-                        /* fast path for at least Cb and Cr */
-                        for (nclump = clumps_per_line; nclump-- > 0; ) {
-                            outptr[0] = *inptr++;
-                            outptr += samples_per_clump;
-                        }
-                    } else {
-                        int xpos;
-
-                        /* general case */
-                        for (nclump = clumps_per_line; nclump-- > 0; ) {
-                            for (xpos = 0; xpos < hsamp; xpos++)
-                                outptr[xpos] = *inptr++;
-                            outptr += samples_per_clump;
-                        }
-                    }
-                    clumpoffset += hsamp;
-                }
-            }
+                                       if (hsamp == 1) {
+                                               /* fast path for at least Cb and Cr */
+                                               for (nclump = clumps_per_line; nclump-- > 0; ) {
+                                                       outptr[0] = *inptr++;
+                                                       outptr += samples_per_clump;
+                                               }
+                                       } else {
+                                               int xpos;
+
+                                               /* general case */
+                                               for (nclump = clumps_per_line; nclump-- > 0; ) {
+                                                       for (xpos = 0; xpos < hsamp; xpos++)
+                                                               outptr[xpos] = *inptr++;
+                                                       outptr += samples_per_clump;
+                                               }
+                                       }
+                                       clumpoffset += hsamp;
+                               }
+                       }
 
-#ifdef JPEG_LIB_MK1
-            {
-                if (sp->cinfo.d.data_precision == 8)
-                {
-                    int i=0;
-                    int len = sp->cinfo.d.output_width * sp->cinfo.d.num_components;
-                    for (i=0; i<len; i++)
-                    {
-                        ((unsigned char*)buf)[i] = tmpbuf[i] & 0xff;
-                    }
-                }
-                else
-                {         // 12-bit
-                    int value_pairs = (sp->cinfo.d.output_width
-                                       * sp->cinfo.d.num_components) / 2;
-                    int iPair;
-                    for( iPair = 0; iPair < value_pairs; iPair++ )
-                    {
-                        unsigned char *out_ptr = ((unsigned char *) buf) + iPair * 3;
-                        JSAMPLE *in_ptr = tmpbuf + iPair * 2;
-                        out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
-                        out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
-                            | ((in_ptr[1] & 0xf00) >> 8);
-                        out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
-                    }
-                }
-            }
+#if defined(JPEG_LIB_MK1_OR_12BIT)
+                       {
+                               if (sp->cinfo.d.data_precision == 8)
+                               {
+                                       int i=0;
+                                       int len = sp->cinfo.d.output_width * sp->cinfo.d.num_components;
+                                       for (i=0; i<len; i++)
+                                       {
+                                               ((unsigned char*)buf)[i] = tmpbuf[i] & 0xff;
+                                       }
+                               }
+                               else
+                               {         /* 12-bit */
+                                       int value_pairs = (sp->cinfo.d.output_width
+                                                          * sp->cinfo.d.num_components) / 2;
+                                       int iPair;
+                                       for( iPair = 0; iPair < value_pairs; iPair++ )
+                                       {
+                                               unsigned char *out_ptr = ((unsigned char *) buf) + iPair * 3;
+                                               JSAMPLE *in_ptr = (JSAMPLE *) (tmpbuf + iPair * 2);
+                                               out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
+                                               out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
+                                                       | ((in_ptr[1] & 0xf00) >> 8);
+                                               out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
+                                       }
+                               }
+                       }
 #endif
 
-            ++sp->scancount;
-            ++tif->tif_row;
-            buf += sp->bytesperline;
-            cc -= sp->bytesperline;
-        } while (--nrows > 0);
-  
-#ifdef JPEG_LIB_MK1
-        _TIFFfree(tmpbuf);
+                       sp->scancount ++;
+                       tif->tif_row += sp->v_sampling;
+
+                       buf += sp->bytesperline;
+                       cc -= sp->bytesperline;
+
+                       nrows -= sp->v_sampling;
+               } while (nrows > 0);
+
+#if defined(JPEG_LIB_MK1_OR_12BIT)
+               _TIFFfree(tmpbuf);
 #endif
 
-    }
+       }
 
-    /* Close down the decompressor if done. */
-    return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
-        || TIFFjpeg_finish_decompress(sp);
+       /* Close down the decompressor if done. */
+       return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
+               || TIFFjpeg_finish_decompress(sp);
 }
 
 
@@ -1106,8 +1477,6 @@ prepare_JPEGTables(TIFF* tif)
 {
        JPEGState* sp = JState(tif);
 
-        JPEGInitializeLibJPEG( tif, 0, 0 );
-
        /* Initialize quant tables for current quality setting */
        if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
                return (0);
@@ -1142,7 +1511,12 @@ JPEGSetupEncode(TIFF* tif)
        TIFFDirectory *td = &tif->tif_dir;
        static const char module[] = "JPEGSetupEncode";
 
-        JPEGInitializeLibJPEG( tif, 1, 0 );
+#if defined(JPEG_DUAL_MODE_8_12) && !defined(TIFFInitJPEG)
+        if( tif->tif_dir.td_bitspersample == 12 )
+            return TIFFReInitJPEG_12( tif, COMPRESSION_JPEG, 1 );
+#endif
+
+        JPEGInitializeLibJPEG( tif, FALSE );
 
        assert(sp != NULL);
        assert(!sp->cinfo.comm.is_decompressor);
@@ -1208,9 +1582,9 @@ JPEGSetupEncode(TIFF* tif)
         /* BITS_IN_JSAMPLE now permits 8 and 12 --- dgilbert */
        if (td->td_bitspersample != 8 && td->td_bitspersample != 12) 
 #else
-       if (td->td_bitspersample != BITS_IN_JSAMPLE ) 
+       if (td->td_bitspersample != BITS_IN_JSAMPLE )
 #endif
-        {
+       {
                TIFFErrorExt(tif->tif_clientdata, module, "BitsPerSample %d not allowed for JPEG",
                          (int) td->td_bitspersample);
                return (0);
@@ -1244,12 +1618,16 @@ JPEGSetupEncode(TIFF* tif)
 
        /* Create a JPEGTables field if appropriate */
        if (sp->jpegtablesmode & (JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF)) {
-               if (!prepare_JPEGTables(tif))
-                       return (0);
-               /* Mark the field present */
-               /* Can't use TIFFSetField since BEENWRITING is already set! */
-               TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
-               tif->tif_flags |= TIFF_DIRTYDIRECT;
+                if( sp->jpegtables == NULL
+                    || memcmp(sp->jpegtables,"\0\0\0\0\0\0\0\0\0",8) == 0 )
+                {
+                        if (!prepare_JPEGTables(tif))
+                                return (0);
+                        /* Mark the field present */
+                        /* Can't use TIFFSetField since BEENWRITING is already set! */
+                        tif->tif_flags |= TIFF_DIRTYDIRECT;
+                        TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
+                }
        } else {
                /* We do not support application-supplied JPEGTables, */
                /* so mark the field not present */
@@ -1266,7 +1644,7 @@ JPEGSetupEncode(TIFF* tif)
  * Set encoding state at the start of a strip or tile.
  */
 static int
-JPEGPreEncode(TIFF* tif, tsample_t s)
+JPEGPreEncode(TIFF* tif, uint16 s)
 {
        JPEGState *sp = JState(tif);
        TIFFDirectory *td = &tif->tif_dir;
@@ -1275,6 +1653,12 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
        int downsampled_input;
 
        assert(sp != NULL);
+  
+       if (sp->cinfo.comm.is_decompressor == 1)
+       {
+               tif->tif_setupencode( tif );
+       }
+  
        assert(!sp->cinfo.comm.is_decompressor);
        /*
         * Set encoding parameters for this strip/tile.
@@ -1294,8 +1678,8 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
                /* for PC 2, scale down the strip/tile size
                 * to match a downsampled component
                 */
-               segment_width = TIFFhowmany(segment_width, sp->h_sampling);
-               segment_height = TIFFhowmany(segment_height, sp->v_sampling);
+               segment_width = TIFFhowmany_32(segment_width, sp->h_sampling); 
+               segment_height = TIFFhowmany_32(segment_height, sp->v_sampling);
        }
        if (segment_width > 65535 || segment_height > 65535) {
                TIFFErrorExt(tif->tif_clientdata, module, "Strip/tile too large for JPEG");
@@ -1323,8 +1707,15 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
                        sp->cinfo.c.comp_info[0].h_samp_factor = sp->h_sampling;
                        sp->cinfo.c.comp_info[0].v_samp_factor = sp->v_sampling;
                } else {
-                       sp->cinfo.c.in_color_space = JCS_UNKNOWN;
-                       if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
+                       if ((td->td_photometric == PHOTOMETRIC_MINISWHITE || td->td_photometric == PHOTOMETRIC_MINISBLACK) && td->td_samplesperpixel == 1)
+                               sp->cinfo.c.in_color_space = JCS_GRAYSCALE;
+                       else if (td->td_photometric == PHOTOMETRIC_RGB && td->td_samplesperpixel == 3)
+                               sp->cinfo.c.in_color_space = JCS_RGB;
+                       else if (td->td_photometric == PHOTOMETRIC_SEPARATED && td->td_samplesperpixel == 4)
+                               sp->cinfo.c.in_color_space = JCS_CMYK;
+                       else
+                               sp->cinfo.c.in_color_space = JCS_UNKNOWN;
+                       if (!TIFFjpeg_set_colorspace(sp, sp->cinfo.c.in_color_space))
                                return (0);
                        /* jpeg_set_colorspace set all sampling factors to 1 */
                }
@@ -1345,9 +1736,9 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
        sp->cinfo.c.write_JFIF_header = FALSE;
        sp->cinfo.c.write_Adobe_marker = FALSE;
        /* set up table handling correctly */
+        if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
+               return (0);
        if (! (sp->jpegtablesmode & JPEGTABLESMODE_QUANT)) {
-               if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
-                       return (0);
                unsuppress_quant_table(sp, 0);
                unsuppress_quant_table(sp, 1);
        }
@@ -1387,27 +1778,69 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
  * "Standard" case: incoming data is not downsampled.
  */
 static int
-JPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+JPEGEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
        JPEGState *sp = JState(tif);
-       tsize_t nrows;
+       tmsize_t nrows;
        JSAMPROW bufptr[1];
+        short *line16 = NULL;
+        int    line16_count = 0;
 
        (void) s;
        assert(sp != NULL);
        /* data is expected to be supplied in multiples of a scanline */
        nrows = cc / sp->bytesperline;
        if (cc % sp->bytesperline)
-               TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
+            TIFFWarningExt(tif->tif_clientdata, tif->tif_name, 
+                           "fractional scanline discarded");
+
+        /* The last strip will be limited to image size */
+        if( !isTiled(tif) && tif->tif_row+nrows > tif->tif_dir.td_imagelength )
+            nrows = tif->tif_dir.td_imagelength - tif->tif_row;
 
+        if( sp->cinfo.c.data_precision == 12 )
+        {
+            line16_count = (sp->bytesperline * 2) / 3;
+            line16 = (short *) _TIFFmalloc(sizeof(short) * line16_count);
+           // FIXME: undiagnosed malloc failure
+        }
+            
        while (nrows-- > 0) {
+
+            if( sp->cinfo.c.data_precision == 12 )
+            {
+
+                int value_pairs = line16_count / 2;
+                int iPair;
+
+               bufptr[0] = (JSAMPROW) line16;
+
+                for( iPair = 0; iPair < value_pairs; iPair++ )
+                {
+                    unsigned char *in_ptr =
+                        ((unsigned char *) buf) + iPair * 3;
+                    JSAMPLE *out_ptr = (JSAMPLE *) (line16 + iPair * 2);
+
+                    out_ptr[0] = (in_ptr[0] << 4) | ((in_ptr[1] & 0xf0) >> 4);
+                    out_ptr[1] = ((in_ptr[1] & 0x0f) << 8) | in_ptr[2];
+                }
+            }
+            else
+            {
                bufptr[0] = (JSAMPROW) buf;
-               if (TIFFjpeg_write_scanlines(sp, bufptr, 1) != 1)
-                       return (0);
-               if (nrows > 0)
-                       tif->tif_row++;
-               buf += sp->bytesperline;
+            }
+            if (TIFFjpeg_write_scanlines(sp, bufptr, 1) != 1)
+                return (0);
+            if (nrows > 0)
+                tif->tif_row++;
+            buf += sp->bytesperline;
        }
+
+        if( sp->cinfo.c.data_precision == 12 )
+        {
+            _TIFFfree( line16 );
+        }
+            
        return (1);
 }
 
@@ -1416,28 +1849,35 @@ JPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
  * Incoming data is expected to be downsampled per sampling factors.
  */
 static int
-JPEGEncodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+JPEGEncodeRaw(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
        JPEGState *sp = JState(tif);
        JSAMPLE* inptr;
        JSAMPLE* outptr;
-       tsize_t nrows;
+       tmsize_t nrows;
        JDIMENSION clumps_per_line, nclump;
        int clumpoffset, ci, xpos, ypos;
        jpeg_component_info* compptr;
        int samples_per_clump = sp->samplesperclump;
+       tmsize_t bytesperclumpline;
 
        (void) s;
        assert(sp != NULL);
-       /* data is expected to be supplied in multiples of a scanline */
-       nrows = cc / sp->bytesperline;
-       if (cc % sp->bytesperline)
+       /* data is expected to be supplied in multiples of a clumpline */
+       /* a clumpline is equivalent to v_sampling desubsampled scanlines */
+       /* TODO: the following calculation of bytesperclumpline, should substitute calculation of sp->bytesperline, except that it is per v_sampling lines */
+       bytesperclumpline = (((sp->cinfo.c.image_width+sp->h_sampling-1)/sp->h_sampling)
+                            *(sp->h_sampling*sp->v_sampling+2)*sp->cinfo.c.data_precision+7)
+                           /8;
+
+       nrows = ( cc / bytesperclumpline ) * sp->v_sampling;
+       if (cc % bytesperclumpline)
                TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
 
        /* Cb,Cr both have sampling factors 1, so this is correct */
        clumps_per_line = sp->cinfo.c.comp_info[1].downsampled_width;
 
-       while (nrows-- > 0) {
+       while (nrows > 0) {
                /*
                 * Fastest way to separate the data is to make one pass
                 * over the scanline for each row of each component.
@@ -1482,9 +1922,9 @@ JPEGEncodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                                return (0);
                        sp->scancount = 0;
                }
-               if (nrows > 0)
-                       tif->tif_row++;
-               buf += sp->bytesperline;
+               tif->tif_row += sp->v_sampling;
+               buf += bytesperclumpline;
+               nrows -= sp->v_sampling;
        }
        return (1);
 }
@@ -1509,12 +1949,12 @@ JPEGPostEncode(TIFF* tif)
                     ci < sp->cinfo.c.num_components;
                     ci++, compptr++) {
                        int vsamp = compptr->v_samp_factor;
-                       tsize_t row_width = compptr->width_in_blocks * DCTSIZE
+                       tmsize_t row_width = compptr->width_in_blocks * DCTSIZE
                                * sizeof(JSAMPLE);
                        for (ypos = sp->scancount * vsamp;
                             ypos < DCTSIZE * vsamp; ypos++) {
-                               _TIFFmemcpy((tdata_t)sp->ds_buffer[ci][ypos],
-                                           (tdata_t)sp->ds_buffer[ci][ypos-1],
+                               _TIFFmemcpy((void*)sp->ds_buffer[ci][ypos],
+                                           (void*)sp->ds_buffer[ci][ypos-1],
                                            row_width);
 
                        }
@@ -1536,29 +1976,67 @@ JPEGCleanup(TIFF* tif)
 
        tif->tif_tagmethods.vgetfield = sp->vgetparent;
        tif->tif_tagmethods.vsetfield = sp->vsetparent;
+       tif->tif_tagmethods.printdir = sp->printdir;
 
-       if( sp->cinfo_initialized )
-           TIFFjpeg_destroy(sp);       /* release libjpeg resources */
-       if (sp->jpegtables)             /* tag value */
-               _TIFFfree(sp->jpegtables);
+       if( sp != NULL ) {
+               if( sp->cinfo_initialized )
+                   TIFFjpeg_destroy(sp);       /* release libjpeg resources */
+               if (sp->jpegtables)             /* tag value */
+                       _TIFFfree(sp->jpegtables);
+       }
        _TIFFfree(tif->tif_data);       /* release local state */
        tif->tif_data = NULL;
 
        _TIFFSetDefaultCompressionState(tif);
 }
 
-static int
-JPEGVSetField(TIFF* tif, ttag_t tag, va_list ap)
+static void 
+JPEGResetUpsampled( TIFF* tif )
 {
        JPEGState* sp = JState(tif);
        TIFFDirectory* td = &tif->tif_dir;
+
+       /*
+        * Mark whether returned data is up-sampled or not so TIFFStripSize
+        * and TIFFTileSize return values that reflect the true amount of
+        * data.
+        */
+       tif->tif_flags &= ~TIFF_UPSAMPLED;
+       if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
+               if (td->td_photometric == PHOTOMETRIC_YCBCR &&
+                   sp->jpegcolormode == JPEGCOLORMODE_RGB) {
+                       tif->tif_flags |= TIFF_UPSAMPLED;
+               } else {
+#ifdef notdef
+                       if (td->td_ycbcrsubsampling[0] != 1 ||
+                           td->td_ycbcrsubsampling[1] != 1)
+                               ; /* XXX what about up-sampling? */
+#endif
+               }
+       }
+
+       /*
+        * Must recalculate cached tile size in case sampling state changed.
+        * Should we really be doing this now if image size isn't set? 
+        */
+        if( tif->tif_tilesize > 0 )
+            tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tmsize_t)(-1);   
+        if( tif->tif_scanlinesize > 0 )
+            tif->tif_scanlinesize = TIFFScanlineSize(tif); 
+}
+
+static int
+JPEGVSetField(TIFF* tif, uint32 tag, va_list ap)
+{
+       JPEGState* sp = JState(tif);
+       const TIFFField* fip;
        uint32 v32;
 
        assert(sp != NULL);
 
        switch (tag) {
        case TIFFTAG_JPEGTABLES:
-               v32 = va_arg(ap, uint32);
+               v32 = (uint32) va_arg(ap, uint32);
                if (v32 == 0) {
                        /* XXX */
                        return (0);
@@ -1569,128 +2047,42 @@ JPEGVSetField(TIFF* tif, ttag_t tag, va_list ap)
                TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
                break;
        case TIFFTAG_JPEGQUALITY:
-               sp->jpegquality = va_arg(ap, int);
+               sp->jpegquality = (int) va_arg(ap, int);
                return (1);                     /* pseudo tag */
        case TIFFTAG_JPEGCOLORMODE:
-               sp->jpegcolormode = va_arg(ap, int);
-               /*
-                * Mark whether returned data is up-sampled or not
-                * so TIFFStripSize and TIFFTileSize return values
-                * that reflect the true amount of data.
-                */
-               tif->tif_flags &= ~TIFF_UPSAMPLED;
-               if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-                   if (td->td_photometric == PHOTOMETRIC_YCBCR &&
-                     sp->jpegcolormode == JPEGCOLORMODE_RGB) {
-                       tif->tif_flags |= TIFF_UPSAMPLED;
-                   } else {
-                       if (td->td_ycbcrsubsampling[0] != 1 ||
-                           td->td_ycbcrsubsampling[1] != 1)
-                           ; /* XXX what about up-sampling? */
-                   }
-               }
-               /*
-                * Must recalculate cached tile size
-                * in case sampling state changed.
-                */
-               tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
+               sp->jpegcolormode = (int) va_arg(ap, int);
+               JPEGResetUpsampled( tif );
                return (1);                     /* pseudo tag */
+       case TIFFTAG_PHOTOMETRIC:
+       {
+               int ret_value = (*sp->vsetparent)(tif, tag, ap);
+               JPEGResetUpsampled( tif );
+               return ret_value;
+       }
        case TIFFTAG_JPEGTABLESMODE:
-               sp->jpegtablesmode = va_arg(ap, int);
+               sp->jpegtablesmode = (int) va_arg(ap, int);
                return (1);                     /* pseudo tag */
        case TIFFTAG_YCBCRSUBSAMPLING:
-                /* mark the fact that we have a real ycbcrsubsampling! */
+               /* mark the fact that we have a real ycbcrsubsampling! */
                sp->ycbcrsampling_fetched = 1;
+               /* should we be recomputing upsampling info here? */
                return (*sp->vsetparent)(tif, tag, ap);
-       case TIFFTAG_FAXRECVPARAMS:
-               sp->recvparams = va_arg(ap, uint32);
-               break;
-       case TIFFTAG_FAXSUBADDRESS:
-               _TIFFsetString(&sp->subaddress, va_arg(ap, char*));
-               break;
-       case TIFFTAG_FAXRECVTIME:
-               sp->recvtime = va_arg(ap, uint32);
-               break;
-       case TIFFTAG_FAXDCS:
-               _TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
-               break;
        default:
                return (*sp->vsetparent)(tif, tag, ap);
        }
-       TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
-       tif->tif_flags |= TIFF_DIRTYDIRECT;
-       return (1);
-}
-
-/*
- * Some JPEG-in-TIFF produces do not emit the YCBCRSUBSAMPLING values in
- * the TIFF tags, but still use non-default (2,2) values within the jpeg
- * data stream itself.  In order for TIFF applications to work properly
- * - for instance to get the strip buffer size right - it is imperative
- * that the subsampling be available before we start reading the image
- * data normally.  This function will attempt to load the first strip in
- * order to get the sampling values from the jpeg data stream.  Various
- * hacks are various places are done to ensure this function gets called
- * before the td_ycbcrsubsampling values are used from the directory structure,
- * including calling TIFFGetField() for the YCBCRSUBSAMPLING field from 
- * TIFFStripSize(), and the printing code in tif_print.c. 
- *
- * Note that JPEGPreDeocode() will produce a fairly loud warning when the
- * discovered sampling does not match the default sampling (2,2) or whatever
- * was actually in the tiff tags. 
- *
- * Problems:
- *  o This code will cause one whole strip/tile of compressed data to be
- *    loaded just to get the tags right, even if the imagery is never read.
- *    It would be more efficient to just load a bit of the header, and
- *    initialize things from that. 
- *
- * See the bug in bugzilla for details:
- *
- * http://bugzilla.remotesensing.org/show_bug.cgi?id=168
- *
- * Frank Warmerdam, July 2002
- */
 
-static void 
-JPEGFixupTestSubsampling( TIFF * tif )
-{
-#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
-    JPEGState *sp = JState(tif);
-    TIFFDirectory *td = &tif->tif_dir;
-
-    JPEGInitializeLibJPEG( tif, 0, 0 );
-
-    /*
-     * Some JPEG-in-TIFF files don't provide the ycbcrsampling tags, 
-     * and use a sampling schema other than the default 2,2.  To handle
-     * this we actually have to scan the header of a strip or tile of
-     * jpeg data to get the sampling.  
-     */
-    if( !sp->cinfo.comm.is_decompressor 
-        || sp->ycbcrsampling_fetched  
-        || td->td_photometric != PHOTOMETRIC_YCBCR )
-        return;
-
-    sp->ycbcrsampling_fetched = 1;
-    if( TIFFIsTiled( tif ) )
-    {
-        if( !TIFFFillTile( tif, 0 ) )
-                       return;
-    }
-    else
-       {
-        if( !TIFFFillStrip( tif, 0 ) )
-            return;
-    }
+       if ((fip = TIFFFieldWithTag(tif, tag))) {
+               TIFFSetFieldBit(tif, fip->field_bit);
+       } else {
+               return (0);
+       }
 
-    TIFFSetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                  (uint16) sp->h_sampling, (uint16) sp->v_sampling );
-#endif /* CHECK_JPEG_YCBCR_SUBSAMPLING */
+       tif->tif_flags |= TIFF_DIRTYDIRECT;
+       return (1);
 }
 
 static int
-JPEGVGetField(TIFF* tif, ttag_t tag, va_list ap)
+JPEGVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        JPEGState* sp = JState(tif);
 
@@ -1710,22 +2102,6 @@ JPEGVGetField(TIFF* tif, ttag_t tag, va_list ap)
                case TIFFTAG_JPEGTABLESMODE:
                        *va_arg(ap, int*) = sp->jpegtablesmode;
                        break;
-               case TIFFTAG_YCBCRSUBSAMPLING:
-                       JPEGFixupTestSubsampling( tif );
-                       return (*sp->vgetparent)(tif, tag, ap);
-                       break;
-               case TIFFTAG_FAXRECVPARAMS:
-                       *va_arg(ap, uint32*) = sp->recvparams;
-                       break;
-               case TIFFTAG_FAXSUBADDRESS:
-                       *va_arg(ap, char**) = sp->subaddress;
-                       break;
-               case TIFFTAG_FAXRECVTIME:
-                       *va_arg(ap, uint32*) = sp->recvtime;
-                       break;
-               case TIFFTAG_FAXDCS:
-                       *va_arg(ap, char**) = sp->faxdcs;
-                       break;
                default:
                        return (*sp->vgetparent)(tif, tag, ap);
        }
@@ -1738,21 +2114,15 @@ JPEGPrintDir(TIFF* tif, FILE* fd, long flags)
        JPEGState* sp = JState(tif);
 
        assert(sp != NULL);
-
        (void) flags;
-       if (TIFFFieldSet(tif,FIELD_JPEGTABLES))
-               fprintf(fd, "  JPEG Tables: (%lu bytes)\n",
-                       (unsigned long) sp->jpegtables_length);
-        if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
-                fprintf(fd, "  Fax Receive Parameters: %08lx\n",
-                   (unsigned long) sp->recvparams);
-        if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
-                fprintf(fd, "  Fax SubAddress: %s\n", sp->subaddress);
-        if (TIFFFieldSet(tif,FIELD_RECVTIME))
-                fprintf(fd, "  Fax Receive Time: %lu secs\n",
-                    (unsigned long) sp->recvtime);
-        if (TIFFFieldSet(tif,FIELD_FAXDCS))
-                fprintf(fd, "  Fax DCS: %s\n", sp->faxdcs);
+
+        if( sp != NULL ) {
+               if (TIFFFieldSet(tif,FIELD_JPEGTABLES))
+                       fprintf(fd, "  JPEG Tables: (%lu bytes)\n",
+                               (unsigned long) sp->jpegtables_length);
+               if (sp->printdir)
+                       (*sp->printdir)(tif, fd, flags);
+       }
 }
 
 static uint32
@@ -1763,7 +2133,7 @@ JPEGDefaultStripSize(TIFF* tif, uint32 s)
 
        s = (*sp->defsparent)(tif, s);
        if (s < td->td_imagelength)
-               s = TIFFroundup(s, td->td_ycbcrsubsampling[1] * DCTSIZE);
+               s = TIFFroundup_32(s, td->td_ycbcrsubsampling[1] * DCTSIZE);
        return (s);
 }
 
@@ -1774,8 +2144,8 @@ JPEGDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
        TIFFDirectory *td = &tif->tif_dir;
 
        (*sp->deftparent)(tif, tw, th);
-       *tw = TIFFroundup(*tw, td->td_ycbcrsubsampling[0] * DCTSIZE);
-       *th = TIFFroundup(*th, td->td_ycbcrsubsampling[1] * DCTSIZE);
+       *tw = TIFFroundup_32(*tw, td->td_ycbcrsubsampling[0] * DCTSIZE);
+       *th = TIFFroundup_32(*th, td->td_ycbcrsubsampling[1] * DCTSIZE);
 }
 
 /*
@@ -1800,44 +2170,21 @@ JPEGDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
  * NFW, Feb 3rd, 2003.
  */
 
-static int JPEGInitializeLibJPEG( TIFF * tif, int force_encode, int force_decode )
+static int JPEGInitializeLibJPEG( TIFF * tif, int decompress )
 {
     JPEGState* sp = JState(tif);
-    uint32 *byte_counts = NULL;
-    int     data_is_empty = TRUE;
-    int     decompress;
-
-    if( sp->cinfo_initialized )
-        return 1;
 
-    /*
-     * Do we have tile data already?  Make sure we initialize the
-     * the state in decompressor mode if we have tile data, even if we
-     * are not in read-only file access mode. 
-     */
-    if( TIFFIsTiled( tif ) 
-        && TIFFGetField( tif, TIFFTAG_TILEBYTECOUNTS, &byte_counts ) 
-        && byte_counts != NULL )
+    if(sp->cinfo_initialized)
     {
-        data_is_empty = byte_counts[0] == 0;
+        if( !decompress && sp->cinfo.comm.is_decompressor )
+            TIFFjpeg_destroy( sp );
+        else if( decompress && !sp->cinfo.comm.is_decompressor )
+            TIFFjpeg_destroy( sp );
+        else
+            return 1;
+
+        sp->cinfo_initialized = 0;
     }
-    if( !TIFFIsTiled( tif ) 
-        && TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &byte_counts) 
-        && byte_counts != NULL )
-    {
-        data_is_empty = byte_counts[0] == 0;
-    }
-
-    if( force_decode )
-        decompress = 1;
-    else if( force_encode )
-        decompress = 0;
-    else if( tif->tif_mode == O_RDONLY )
-        decompress = 1;
-    else if( data_is_empty )
-        decompress = 0;
-    else
-        decompress = 1;
 
     /*
      * Initialize libjpeg.
@@ -1845,7 +2192,6 @@ static int JPEGInitializeLibJPEG( TIFF * tif, int force_encode, int force_decode
     if ( decompress ) {
         if (!TIFFjpeg_create_decompress(sp))
             return (0);
-
     } else {
         if (!TIFFjpeg_create_compress(sp))
             return (0);
@@ -1863,29 +2209,39 @@ TIFFInitJPEG(TIFF* tif, int scheme)
 
        assert(scheme == COMPRESSION_JPEG);
 
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, jpegFields, TIFFArrayCount(jpegFields))) {
+               TIFFErrorExt(tif->tif_clientdata,
+                            "TIFFInitJPEG",
+                            "Merging JPEG codec-specific tags failed");
+               return 0;
+       }
+
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (JPEGState));
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof (JPEGState));
 
        if (tif->tif_data == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, "TIFFInitJPEG", "No space for JPEG state block");
-               return (0);
+               TIFFErrorExt(tif->tif_clientdata,
+                            "TIFFInitJPEG", "No space for JPEG state block");
+               return 0;
        }
-        _TIFFmemset( tif->tif_data, 0, sizeof(JPEGState));
+        _TIFFmemset(tif->tif_data, 0, sizeof(JPEGState));
 
        sp = JState(tif);
        sp->tif = tif;                          /* back link */
 
        /*
-        * Merge codec-specific tag information and override parent get/set
-        * field methods.
+        * Override parent get/set field methods.
         */
-       _TIFFMergeFieldInfo(tif, jpegFieldInfo, N(jpegFieldInfo));
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield = JPEGVGetField; /* hook for codec tags */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
        tif->tif_tagmethods.vsetfield = JPEGVSetField; /* hook for codec tags */
+       sp->printdir = tif->tif_tagmethods.printdir;
        tif->tif_tagmethods.printdir = JPEGPrintDir;   /* hook for codec tags */
 
        /* Default values for codec-specific fields */
@@ -1894,16 +2250,12 @@ TIFFInitJPEG(TIFF* tif, int scheme)
        sp->jpegquality = 75;                   /* Default IJG quality */
        sp->jpegcolormode = JPEGCOLORMODE_RAW;
        sp->jpegtablesmode = JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF;
-
-        sp->recvparams = 0;
-        sp->subaddress = NULL;
-        sp->faxdcs = NULL;
-
         sp->ycbcrsampling_fetched = 0;
 
        /*
         * Install codec methods.
         */
+       tif->tif_fixuptags = JPEGFixupTags;
        tif->tif_setupdecode = JPEGSetupDecode;
        tif->tif_predecode = JPEGPreDecode;
        tif->tif_decoderow = JPEGDecode;
@@ -1914,7 +2266,7 @@ TIFFInitJPEG(TIFF* tif, int scheme)
        tif->tif_postencode = JPEGPostEncode;
        tif->tif_encoderow = JPEGEncode;
        tif->tif_encodestrip = JPEGEncode;
-       tif->tif_encodetile = JPEGEncode;
+       tif->tif_encodetile = JPEGEncode;  
        tif->tif_cleanup = JPEGCleanup;
        sp->defsparent = tif->tif_defstripsize;
        tif->tif_defstripsize = JPEGDefaultStripSize;
@@ -1933,21 +2285,31 @@ TIFFInitJPEG(TIFF* tif, int scheme)
         if( tif->tif_diroff == 0 )
         {
 #define SIZE_OF_JPEGTABLES 2000
+/*
+The following line assumes incorrectly that all JPEG-in-TIFF files will have
+a JPEGTABLES tag generated and causes null-filled JPEGTABLES tags to be written
+when the JPEG data is placed with TIFFWriteRawStrip.  The field bit should be 
+set, anyway, later when actual JPEGTABLES header is generated, so removing it 
+here hopefully is harmless.
             TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
+*/
             sp->jpegtables_length = SIZE_OF_JPEGTABLES;
             sp->jpegtables = (void *) _TIFFmalloc(sp->jpegtables_length);
+           // FIXME: NULL-deref after malloc failure
            _TIFFmemset(sp->jpegtables, 0, SIZE_OF_JPEGTABLES);
 #undef SIZE_OF_JPEGTABLES
         }
 
-        /*
-         * Mark the TIFFTAG_YCBCRSAMPLES as present even if it is not
-         * see: JPEGFixupTestSubsampling().
-         */
-        TIFFSetFieldBit( tif, FIELD_YCBCRSUBSAMPLING );
-
        return 1;
 }
 #endif /* JPEG_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_jpeg_12.c b/src/tiff/libtiff/tif_jpeg_12.c
new file mode 100644 (file)
index 0000000..87aaa19
--- /dev/null
@@ -0,0 +1,65 @@
+
+#include "tiffiop.h"
+
+#if defined(JPEG_DUAL_MODE_8_12)
+
+#  define TIFFInitJPEG TIFFInitJPEG_12
+
+#  include LIBJPEG_12_PATH
+
+#  include "tif_jpeg.c"
+
+int TIFFReInitJPEG_12( TIFF *tif, int scheme, int is_encode )
+
+{
+    JPEGState* sp;
+
+    assert(scheme == COMPRESSION_JPEG);
+
+    sp = JState(tif);
+    sp->tif = tif;                             /* back link */
+
+    /*
+     * Override parent get/set field methods.
+     */
+    tif->tif_tagmethods.vgetfield = JPEGVGetField; /* hook for codec tags */
+    tif->tif_tagmethods.vsetfield = JPEGVSetField; /* hook for codec tags */
+    tif->tif_tagmethods.printdir = JPEGPrintDir;   /* hook for codec tags */
+
+    /*
+     * Install codec methods.
+     */
+    tif->tif_fixuptags = JPEGFixupTags;
+    tif->tif_setupdecode = JPEGSetupDecode;
+    tif->tif_predecode = JPEGPreDecode;
+    tif->tif_decoderow = JPEGDecode;
+    tif->tif_decodestrip = JPEGDecode;
+    tif->tif_decodetile = JPEGDecode;
+    tif->tif_setupencode = JPEGSetupEncode;
+    tif->tif_preencode = JPEGPreEncode;
+    tif->tif_postencode = JPEGPostEncode;
+    tif->tif_encoderow = JPEGEncode;
+    tif->tif_encodestrip = JPEGEncode;
+    tif->tif_encodetile = JPEGEncode;  
+    tif->tif_cleanup = JPEGCleanup;
+    tif->tif_defstripsize = JPEGDefaultStripSize;
+    tif->tif_deftilesize = JPEGDefaultTileSize;
+    tif->tif_flags |= TIFF_NOBITREV;   /* no bit reversal, please */
+
+    sp->cinfo_initialized = FALSE;
+
+    if( is_encode )
+        return JPEGSetupEncode(tif);
+    else
+        return JPEGSetupDecode(tif);
+}
+
+#endif /* defined(JPEG_DUAL_MODE_8_12) */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 7b769c44caf4844f770d9f0f14a73e2114468085..e9c356508793e5d57c2743c6ba46bfd0e0262418 100644 (file)
  * State block for each open TIFF
  * file using LogLuv compression/decompression.
  */
-typedef        struct logLuvState LogLuvState;
+typedef struct logLuvState LogLuvState;
 
 struct logLuvState {
-       int                     user_datafmt;   /* user data format */
-       int                     encode_meth;    /* encoding method */
-       int                     pixel_size;     /* bytes per pixel */
+       int                     user_datafmt;   /* user data format */
+       int                     encode_meth;    /* encoding method */
+       int                     pixel_size;     /* bytes per pixel */
 
-       tidata_t*               tbuf;           /* translation buffer */
-       int                     tbuflen;        /* buffer length */
-       void (*tfunc)(LogLuvState*, tidata_t, int);
+       uint8*                  tbuf;           /* translation buffer */
+       tmsize_t                tbuflen;        /* buffer length */
+       void (*tfunc)(LogLuvState*, uint8*, tmsize_t);
 
-       TIFFVSetMethod          vgetparent;     /* super-class method */
-       TIFFVSetMethod          vsetparent;     /* super-class method */
+       TIFFVSetMethod          vgetparent;     /* super-class method */
+       TIFFVSetMethod          vsetparent;     /* super-class method */
 };
 
-#define        DecoderState(tif)       ((LogLuvState*) (tif)->tif_data)
-#define        EncoderState(tif)       ((LogLuvState*) (tif)->tif_data)
+#define DecoderState(tif)      ((LogLuvState*) (tif)->tif_data)
+#define EncoderState(tif)      ((LogLuvState*) (tif)->tif_data)
 
-#define SGILOGDATAFMT_UNKNOWN  -1
+#define SGILOGDATAFMT_UNKNOWN -1
 
-#define MINRUN         4       /* minimum run length */
+#define MINRUN 4 /* minimum run length */
 
 /*
  * Decode a string of 16-bit gray pixels.
  */
 static int
-LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+LogL16Decode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
+       static const char module[] = "LogL16Decode";
        LogLuvState* sp = DecoderState(tif);
-       int shft, i, npixels;
+       int shft;
+       tmsize_t i;
+       tmsize_t npixels;
        unsigned char* bp;
        int16* tp;
        int16 b;
-       int cc, rc;
+       tmsize_t cc;
+       int rc;
 
        assert(s == 0);
        assert(sp != NULL);
@@ -201,15 +205,15 @@ LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                assert(sp->tbuflen >= npixels);
                tp = (int16*) sp->tbuf;
        }
-       _TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
+       _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
 
        bp = (unsigned char*) tif->tif_rawcp;
        cc = tif->tif_rawcc;
-                                       /* get each byte string */
+       /* get each byte string */
        for (shft = 2*8; (shft -= 8) >= 0; ) {
                for (i = 0; i < npixels && cc > 0; )
                        if (*bp >= 128) {               /* run */
-                               rc = *bp++ + (2-128);
+                               rc = *bp++ + (2-128);   /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
                                b = (int16)(*bp++ << shft);
                                cc -= 2;
                                while (rc-- && i < npixels)
@@ -220,16 +224,24 @@ LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                                        tp[i++] |= (int16)*bp++ << shft;
                        }
                if (i != npixels) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "LogL16Decode: Not enough data at row %d (short %d pixels)",
-                           tif->tif_row, npixels - i);
-                       tif->tif_rawcp = (tidata_t) bp;
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Not enough data at row %lu (short %I64d pixels)",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned __int64) (npixels - i));
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Not enough data at row %lu (short %llu pixels)",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long long) (npixels - i));
+#endif
+                       tif->tif_rawcp = (uint8*) bp;
                        tif->tif_rawcc = cc;
                        return (0);
                }
        }
        (*sp->tfunc)(sp, op, npixels);
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        return (1);
 }
@@ -238,10 +250,13 @@ LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
  * Decode a string of 24-bit pixels.
  */
 static int
-LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+LogLuvDecode24(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
+       static const char module[] = "LogLuvDecode24";
        LogLuvState* sp = DecoderState(tif);
-       int cc, i, npixels;
+       tmsize_t cc;
+       tmsize_t i;
+       tmsize_t npixels;
        unsigned char* bp;
        uint32* tp;
 
@@ -256,7 +271,7 @@ LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                assert(sp->tbuflen >= npixels);
                tp = (uint32 *) sp->tbuf;
        }
-                                       /* copy to array of uint32 */
+       /* copy to array of uint32 */
        bp = (unsigned char*) tif->tif_rawcp;
        cc = tif->tif_rawcc;
        for (i = 0; i < npixels && cc > 0; i++) {
@@ -264,12 +279,20 @@ LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                bp += 3;
                cc -= 3;
        }
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        if (i != npixels) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-           "LogLuvDecode24: Not enough data at row %d (short %d pixels)",
-                   tif->tif_row, npixels - i);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at row %lu (short %I64d pixels)",
+                            (unsigned long) tif->tif_row,
+                            (unsigned __int64) (npixels - i));
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at row %lu (short %llu pixels)",
+                            (unsigned long) tif->tif_row,
+                            (unsigned long long) (npixels - i));
+#endif
                return (0);
        }
        (*sp->tfunc)(sp, op, npixels);
@@ -280,14 +303,18 @@ LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
  * Decode a string of 32-bit pixels.
  */
 static int
-LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+LogLuvDecode32(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
+       static const char module[] = "LogLuvDecode32";
        LogLuvState* sp;
-       int shft, i, npixels;
+       int shft;
+       tmsize_t i;
+       tmsize_t npixels;
        unsigned char* bp;
        uint32* tp;
        uint32 b;
-       int cc, rc;
+       tmsize_t cc;
+       int rc;
 
        assert(s == 0);
        sp = DecoderState(tif);
@@ -301,17 +328,17 @@ LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                assert(sp->tbuflen >= npixels);
                tp = (uint32*) sp->tbuf;
        }
-       _TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
+       _TIFFmemset((void*) tp, 0, npixels*sizeof (tp[0]));
 
        bp = (unsigned char*) tif->tif_rawcp;
        cc = tif->tif_rawcc;
-                                       /* get each byte string */
+       /* get each byte string */
        for (shft = 4*8; (shft -= 8) >= 0; ) {
                for (i = 0; i < npixels && cc > 0; )
                        if (*bp >= 128) {               /* run */
                                rc = *bp++ + (2-128);
                                b = (uint32)*bp++ << shft;
-                               cc -= 2;
+                               cc -= 2;                /* TODO: potential input buffer overrun when decoding corrupt or truncated data */
                                while (rc-- && i < npixels)
                                        tp[i++] |= b;
                        } else {                        /* non-run */
@@ -320,16 +347,24 @@ LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                                        tp[i++] |= (uint32)*bp++ << shft;
                        }
                if (i != npixels) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "LogLuvDecode32: Not enough data at row %d (short %d pixels)",
-                           tif->tif_row, npixels - i);
-                       tif->tif_rawcp = (tidata_t) bp;
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at row %lu (short %I64d pixels)",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned __int64) (npixels - i));
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at row %lu (short %llu pixels)",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long long) (npixels - i));
+#endif
+                       tif->tif_rawcp = (uint8*) bp;
                        tif->tif_rawcc = cc;
                        return (0);
                }
        }
        (*sp->tfunc)(sp, op, npixels);
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        return (1);
 }
@@ -340,9 +375,9 @@ LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
  * is row by row.
  */
 static int
-LogLuvDecodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvDecodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       tsize_t rowlen = TIFFScanlineSize(tif);
+       tmsize_t rowlen = TIFFScanlineSize(tif);
 
        assert(cc%rowlen == 0);
        while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
@@ -356,9 +391,9 @@ LogLuvDecodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
  * is row by row.
  */
 static int
-LogLuvDecodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvDecodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       tsize_t rowlen = TIFFTileRowSize(tif);
+       tmsize_t rowlen = TIFFTileRowSize(tif);
 
        assert(cc%rowlen == 0);
        while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
@@ -370,14 +405,19 @@ LogLuvDecodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
  * Encode a row of 16-bit pixels.
  */
 static int
-LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogL16Encode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
        LogLuvState* sp = EncoderState(tif);
-       int shft, i, j, npixels;
-       tidata_t op;
+       int shft;
+       tmsize_t i;
+       tmsize_t j;
+       tmsize_t npixels;
+       uint8* op;
        int16* tp;
        int16 b;
-       int occ, rc=0, mask, beg;
+       tmsize_t occ;
+       int rc=0, mask;
+       tmsize_t beg;
 
        assert(s == 0);
        assert(sp != NULL);
@@ -390,7 +430,7 @@ LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                assert(sp->tbuflen >= npixels);
                (*sp->tfunc)(sp, bp, npixels);
        }
-                                       /* compress each byte string */
+       /* compress each byte string */
        op = tif->tif_rawcp;
        occ = tif->tif_rawdatasize - tif->tif_rawcc;
        for (shft = 2*8; (shft -= 8) >= 0; )
@@ -408,7 +448,7 @@ LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                                b = (int16) (tp[beg] & mask);
                                rc = 1;
                                while (rc < 127+2 && beg+rc < npixels &&
-                                               (tp[beg+rc] & mask) == b)
+                                   (tp[beg+rc] & mask) == b)
                                        rc++;
                                if (rc >= MINRUN)
                                        break;          /* long enough */
@@ -417,33 +457,33 @@ LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                                b = (int16) (tp[i] & mask);/*check short run */
                                j = i+1;
                                while ((tp[j++] & mask) == b)
-                                    if (j == beg) {
-                                        *op++ = (tidataval_t)(128-2+j-i);
-                                        *op++ = (tidataval_t) (b >> shft);
-                                        occ -= 2;
-                                        i = beg;
-                                        break;
-                                    }
+                                       if (j == beg) {
+                                               *op++ = (uint8)(128-2+j-i);
+                                               *op++ = (uint8)(b >> shft);
+                                               occ -= 2;
+                                               i = beg;
+                                               break;
+                                       }
                        }
                        while (i < beg) {               /* write out non-run */
                                if ((j = beg-i) > 127) j = 127;
                                if (occ < j+3) {
-                                    tif->tif_rawcp = op;
-                                    tif->tif_rawcc = tif->tif_rawdatasize - occ;
-                                    if (!TIFFFlushData1(tif))
-                                        return (-1);
-                                    op = tif->tif_rawcp;
-                                    occ = tif->tif_rawdatasize - tif->tif_rawcc;
+                                       tif->tif_rawcp = op;
+                                       tif->tif_rawcc = tif->tif_rawdatasize - occ;
+                                       if (!TIFFFlushData1(tif))
+                                               return (-1);
+                                       op = tif->tif_rawcp;
+                                       occ = tif->tif_rawdatasize - tif->tif_rawcc;
                                }
-                               *op++ = (tidataval_t) j; occ--;
+                               *op++ = (uint8) j; occ--;
                                while (j--) {
-                                       *op++ = (tidataval_t) (tp[i++] >> shft & 0xff);
+                                       *op++ = (uint8) (tp[i++] >> shft & 0xff);
                                        occ--;
                                }
                        }
                        if (rc >= MINRUN) {             /* write out run */
-                               *op++ = (tidataval_t) (128-2+rc);
-                               *op++ = (tidataval_t) (tp[beg] >> shft & 0xff);
+                               *op++ = (uint8) (128-2+rc);
+                               *op++ = (uint8) (tp[beg] >> shft & 0xff);
                                occ -= 2;
                        } else
                                rc = 0;
@@ -451,18 +491,20 @@ LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
        tif->tif_rawcp = op;
        tif->tif_rawcc = tif->tif_rawdatasize - occ;
 
-       return (0);
+       return (1);
 }
 
 /*
  * Encode a row of 24-bit pixels.
  */
 static int
-LogLuvEncode24(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvEncode24(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
        LogLuvState* sp = EncoderState(tif);
-       int i, npixels, occ;
-       tidata_t op;
+       tmsize_t i;
+       tmsize_t npixels;
+       tmsize_t occ;
+       uint8* op;
        uint32* tp;
 
        assert(s == 0);
@@ -476,7 +518,7 @@ LogLuvEncode24(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                assert(sp->tbuflen >= npixels);
                (*sp->tfunc)(sp, bp, npixels);
        }
-                                       /* write out encoded pixels */
+       /* write out encoded pixels */
        op = tif->tif_rawcp;
        occ = tif->tif_rawdatasize - tif->tif_rawcc;
        for (i = npixels; i--; ) {
@@ -488,29 +530,34 @@ LogLuvEncode24(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                        op = tif->tif_rawcp;
                        occ = tif->tif_rawdatasize - tif->tif_rawcc;
                }
-               *op++ = (tidataval_t)(*tp >> 16);
-               *op++ = (tidataval_t)(*tp >> 8 & 0xff);
-               *op++ = (tidataval_t)(*tp++ & 0xff);
+               *op++ = (uint8)(*tp >> 16);
+               *op++ = (uint8)(*tp >> 8 & 0xff);
+               *op++ = (uint8)(*tp++ & 0xff);
                occ -= 3;
        }
        tif->tif_rawcp = op;
        tif->tif_rawcc = tif->tif_rawdatasize - occ;
 
-       return (0);
+       return (1);
 }
 
 /*
  * Encode a row of 32-bit pixels.
  */
 static int
-LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvEncode32(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
        LogLuvState* sp = EncoderState(tif);
-       int shft, i, j, npixels;
-       tidata_t op;
+       int shft;
+       tmsize_t i;
+       tmsize_t j;
+       tmsize_t npixels;
+       uint8* op;
        uint32* tp;
        uint32 b;
-       int occ, rc=0, mask, beg;
+       tmsize_t occ;
+       int rc=0, mask;
+       tmsize_t beg;
 
        assert(s == 0);
        assert(sp != NULL);
@@ -524,7 +571,7 @@ LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                assert(sp->tbuflen >= npixels);
                (*sp->tfunc)(sp, bp, npixels);
        }
-                                       /* compress each byte string */
+       /* compress each byte string */
        op = tif->tif_rawcp;
        occ = tif->tif_rawdatasize - tif->tif_rawcc;
        for (shft = 4*8; (shft -= 8) >= 0; )
@@ -552,8 +599,8 @@ LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                                j = i+1;
                                while ((tp[j++] & mask) == b)
                                        if (j == beg) {
-                                               *op++ = (tidataval_t)(128-2+j-i);
-                                               *op++ = (tidataval_t)(b >> shft);
+                                               *op++ = (uint8)(128-2+j-i);
+                                               *op++ = (uint8)(b >> shft);
                                                occ -= 2;
                                                i = beg;
                                                break;
@@ -569,15 +616,15 @@ LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                                        op = tif->tif_rawcp;
                                        occ = tif->tif_rawdatasize - tif->tif_rawcc;
                                }
-                               *op++ = (tidataval_t) j; occ--;
+                               *op++ = (uint8) j; occ--;
                                while (j--) {
-                                       *op++ = (tidataval_t)(tp[i++] >> shft & 0xff);
+                                       *op++ = (uint8)(tp[i++] >> shft & 0xff);
                                        occ--;
                                }
                        }
                        if (rc >= MINRUN) {             /* write out run */
-                               *op++ = (tidataval_t) (128-2+rc);
-                               *op++ = (tidataval_t)(tp[beg] >> shft & 0xff);
+                               *op++ = (uint8) (128-2+rc);
+                               *op++ = (uint8)(tp[beg] >> shft & 0xff);
                                occ -= 2;
                        } else
                                rc = 0;
@@ -585,7 +632,7 @@ LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
        tif->tif_rawcp = op;
        tif->tif_rawcc = tif->tif_rawdatasize - occ;
 
-       return (0);
+       return (1);
 }
 
 /*
@@ -593,12 +640,12 @@ LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
  * avoid encoding runs across row boundaries.
  */
 static int
-LogLuvEncodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvEncodeStrip(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       tsize_t rowlen = TIFFScanlineSize(tif);
+       tmsize_t rowlen = TIFFScanlineSize(tif);
 
        assert(cc%rowlen == 0);
-       while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 0)
+       while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
                bp += rowlen, cc -= rowlen;
        return (cc == 0);
 }
@@ -608,12 +655,12 @@ LogLuvEncodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
  * avoid encoding runs across row boundaries.
  */
 static int
-LogLuvEncodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LogLuvEncodeTile(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       tsize_t rowlen = TIFFTileRowSize(tif);
+       tmsize_t rowlen = TIFFTileRowSize(tif);
 
        assert(cc%rowlen == 0);
-       while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 0)
+       while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
                bp += rowlen, cc -= rowlen;
        return (cc == 0);
 }
@@ -676,7 +723,7 @@ LogL16fromY(double Y, int em)       /* get 16-bit LogL from Y */
 }
 
 static void
-L16toY(LogLuvState* sp, tidata_t op, int n)
+L16toY(LogLuvState* sp, uint8* op, tmsize_t n)
 {
        int16* l16 = (int16*) sp->tbuf;
        float* yp = (float*) op;
@@ -686,7 +733,7 @@ L16toY(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-L16toGry(LogLuvState* sp, tidata_t op, int n)
+L16toGry(LogLuvState* sp, uint8* op, tmsize_t n)
 {
        int16* l16 = (int16*) sp->tbuf;
        uint8* gp = (uint8*) op;
@@ -698,7 +745,7 @@ L16toGry(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-L16fromY(LogLuvState* sp, tidata_t op, int n)
+L16fromY(LogLuvState* sp, uint8* op, tmsize_t n)
 {
        int16* l16 = (int16*) sp->tbuf;
        float* yp = (float*) op;
@@ -760,7 +807,7 @@ oog_encode(double u, double v)              /* encode out-of-gamut chroma */
        static int      oog_table[NANGLES];
        static int      initialized = 0;
        register int    i;
-       
+
        if (!initialized) {             /* set up perimeter table */
                double  eps[NANGLES], ua, va, ang, epsa;
                int     ui, vi, ustep;
@@ -774,7 +821,7 @@ oog_encode(double u, double v)              /* encode out-of-gamut chroma */
                        for (ui = uv_row[vi].nus-1; ui >= 0; ui -= ustep) {
                                ua = uv_row[vi].ustart + (ui+.5)*UV_SQSIZ;
                                ang = uv2ang(ua, va);
-                                i = (int) ang;
+                               i = (int) ang;
                                epsa = fabs(ang - (i+.5));
                                if (epsa < eps[i]) {
                                        oog_table[i] = uv_row[vi].ncum + ui;
@@ -916,9 +963,9 @@ LogLuv24fromXYZ(float XYZ[3], int em)
 }
 
 static void
-Luv24toXYZ(LogLuvState* sp, tidata_t op, int n)
+Luv24toXYZ(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        float* xyz = (float*) op;
 
        while (n-- > 0) {
@@ -929,9 +976,9 @@ Luv24toXYZ(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv24toLuv48(LogLuvState* sp, tidata_t op, int n)
+Luv24toLuv48(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        int16* luv3 = (int16*) op;
 
        while (n-- > 0) {
@@ -949,9 +996,9 @@ Luv24toLuv48(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv24toRGB(LogLuvState* sp, tidata_t op, int n)
+Luv24toRGB(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        uint8* rgb = (uint8*) op;
 
        while (n-- > 0) {
@@ -964,9 +1011,9 @@ Luv24toRGB(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv24fromXYZ(LogLuvState* sp, tidata_t op, int n)
+Luv24fromXYZ(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        float* xyz = (float*) op;
 
        while (n-- > 0) {
@@ -976,9 +1023,9 @@ Luv24fromXYZ(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv24fromLuv48(LogLuvState* sp, tidata_t op, int n)
+Luv24fromLuv48(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        int16* luv3 = (int16*) op;
 
        while (n-- > 0) {
@@ -1057,9 +1104,9 @@ LogLuv32fromXYZ(float XYZ[3], int em)
 }
 
 static void
-Luv32toXYZ(LogLuvState* sp, tidata_t op, int n)
+Luv32toXYZ(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        float* xyz = (float*) op;
 
        while (n-- > 0) {
@@ -1069,9 +1116,9 @@ Luv32toXYZ(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv32toLuv48(LogLuvState* sp, tidata_t op, int n)
+Luv32toLuv48(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        int16* luv3 = (int16*) op;
 
        while (n-- > 0) {
@@ -1087,9 +1134,9 @@ Luv32toLuv48(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv32toRGB(LogLuvState* sp, tidata_t op, int n)
+Luv32toRGB(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        uint8* rgb = (uint8*) op;
 
        while (n-- > 0) {
@@ -1102,9 +1149,9 @@ Luv32toRGB(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv32fromXYZ(LogLuvState* sp, tidata_t op, int n)
+Luv32fromXYZ(LogLuvState* sp, uint8* op, tmsize_t n)
 {
-       uint32* luv = (uint32*) sp->tbuf;
+       uint32* luv = (uint32*) sp->tbuf;  
        float* xyz = (float*) op;
 
        while (n-- > 0) {
@@ -1114,7 +1161,7 @@ Luv32fromXYZ(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-Luv32fromLuv48(LogLuvState* sp, tidata_t op, int n)
+Luv32fromLuv48(LogLuvState* sp, uint8* op, tmsize_t n)
 {
        uint32* luv = (uint32*) sp->tbuf;
        int16* luv3 = (int16*) op;
@@ -1137,7 +1184,7 @@ Luv32fromLuv48(LogLuvState* sp, tidata_t op, int n)
 }
 
 static void
-_logLuvNop(LogLuvState* sp, tidata_t op, int n)
+_logLuvNop(LogLuvState* sp, uint8* op, tmsize_t n)
 {
        (void) sp; (void) op; (void) n;
 }
@@ -1161,10 +1208,10 @@ LogL16GuessDataFmt(TIFFDirectory *td)
        return (SGILOGDATAFMT_UNKNOWN);
 }
 
-static uint32
-multiply(size_t m1, size_t m2)
+static tmsize_t
+multiply_ms(tmsize_t m1, tmsize_t m2)
 {
-       uint32  bytes = m1 * m2;
+       tmsize_t bytes = m1 * m2;
 
        if (m1 && bytes / m1 != m2)
                bytes = 0;
@@ -1175,9 +1222,9 @@ multiply(size_t m1, size_t m2)
 static int
 LogL16InitState(TIFF* tif)
 {
+       static const char module[] = "LogL16InitState";
        TIFFDirectory *td = &tif->tif_dir;
        LogLuvState* sp = DecoderState(tif);
-       static const char module[] = "LogL16InitState";
 
        assert(sp != NULL);
        assert(td->td_photometric == PHOTOMETRIC_LOGL);
@@ -1196,15 +1243,17 @@ LogL16InitState(TIFF* tif)
                sp->pixel_size = sizeof (uint8);
                break;
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+               TIFFErrorExt(tif->tif_clientdata, module,
                    "No support for converting user data format to LogL");
                return (0);
        }
-       sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
-       if (multiply(sp->tbuflen, sizeof (int16)) == 0 ||
-           (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (int16))) == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
-                   tif->tif_name);
+        if( isTiled(tif) )
+            sp->tbuflen = multiply_ms(td->td_tilewidth, td->td_tilelength);
+        else
+            sp->tbuflen = multiply_ms(td->td_imagewidth, td->td_rowsperstrip);
+       if (multiply_ms(sp->tbuflen, sizeof (int16)) == 0 ||
+           (sp->tbuf = (uint8*) _TIFFmalloc(sp->tbuflen * sizeof (int16))) == NULL) {
+               TIFFErrorExt(tif->tif_clientdata, module, "No space for SGILog translation buffer");
                return (0);
        }
        return (1);
@@ -1265,9 +1314,9 @@ LogLuvGuessDataFmt(TIFFDirectory *td)
 static int
 LogLuvInitState(TIFF* tif)
 {
+       static const char module[] = "LogLuvInitState";
        TIFFDirectory* td = &tif->tif_dir;
        LogLuvState* sp = DecoderState(tif);
-       static const char module[] = "LogLuvInitState";
 
        assert(sp != NULL);
        assert(td->td_photometric == PHOTOMETRIC_LOGLUV);
@@ -1294,23 +1343,33 @@ LogLuvInitState(TIFF* tif)
                sp->pixel_size = 3*sizeof (uint8);
                break;
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+               TIFFErrorExt(tif->tif_clientdata, module,
                    "No support for converting user data format to LogLuv");
                return (0);
        }
-       sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
-       if (multiply(sp->tbuflen, sizeof (uint32)) == 0 ||
-           (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (uint32))) == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
-                   tif->tif_name);
+        if( isTiled(tif) )
+            sp->tbuflen = multiply_ms(td->td_tilewidth, td->td_tilelength);
+        else
+            sp->tbuflen = multiply_ms(td->td_imagewidth, td->td_rowsperstrip);
+       if (multiply_ms(sp->tbuflen, sizeof (uint32)) == 0 ||
+           (sp->tbuf = (uint8*) _TIFFmalloc(sp->tbuflen * sizeof (uint32))) == NULL) {
+               TIFFErrorExt(tif->tif_clientdata, module, "No space for SGILog translation buffer");
                return (0);
        }
        return (1);
 }
 
+static int
+LogLuvFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
 static int
 LogLuvSetupDecode(TIFF* tif)
 {
+       static const char module[] = "LogLuvSetupDecode";
        LogLuvState* sp = DecoderState(tif);
        TIFFDirectory* td = &tif->tif_dir;
 
@@ -1323,10 +1382,10 @@ LogLuvSetupDecode(TIFF* tif)
                        tif->tif_decoderow = LogLuvDecode24;
                        switch (sp->user_datafmt) {
                        case SGILOGDATAFMT_FLOAT:
-                               sp->tfunc = Luv24toXYZ;
+                               sp->tfunc = Luv24toXYZ;  
                                break;
                        case SGILOGDATAFMT_16BIT:
-                               sp->tfunc = Luv24toLuv48;
+                               sp->tfunc = Luv24toLuv48;  
                                break;
                        case SGILOGDATAFMT_8BIT:
                                sp->tfunc = Luv24toRGB;
@@ -1361,8 +1420,8 @@ LogLuvSetupDecode(TIFF* tif)
                }
                return (1);
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-    "Inappropriate photometric interpretation %d for SGILog compression; %s",
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Inappropriate photometric interpretation %d for SGILog compression; %s",
                    td->td_photometric, "must be either LogLUV or LogL");
                break;
        }
@@ -1372,6 +1431,7 @@ LogLuvSetupDecode(TIFF* tif)
 static int
 LogLuvSetupEncode(TIFF* tif)
 {
+       static const char module[] = "LogLuvSetupEncode";
        LogLuvState* sp = EncoderState(tif);
        TIFFDirectory* td = &tif->tif_dir;
 
@@ -1386,7 +1446,7 @@ LogLuvSetupEncode(TIFF* tif)
                                sp->tfunc = Luv24fromXYZ;
                                break;
                        case SGILOGDATAFMT_16BIT:
-                               sp->tfunc = Luv24fromLuv48;
+                               sp->tfunc = Luv24fromLuv48;  
                                break;
                        case SGILOGDATAFMT_RAW:
                                break;
@@ -1394,13 +1454,13 @@ LogLuvSetupEncode(TIFF* tif)
                                goto notsupported;
                        }
                } else {
-                       tif->tif_encoderow = LogLuvEncode32;
+                       tif->tif_encoderow = LogLuvEncode32;  
                        switch (sp->user_datafmt) {
                        case SGILOGDATAFMT_FLOAT:
-                               sp->tfunc = Luv32fromXYZ;
+                               sp->tfunc = Luv32fromXYZ;  
                                break;
                        case SGILOGDATAFMT_16BIT:
-                               sp->tfunc = Luv32fromLuv48;
+                               sp->tfunc = Luv32fromLuv48;  
                                break;
                        case SGILOGDATAFMT_RAW:
                                break;
@@ -1412,7 +1472,7 @@ LogLuvSetupEncode(TIFF* tif)
        case PHOTOMETRIC_LOGL:
                if (!LogL16InitState(tif))
                        break;
-               tif->tif_encoderow = LogL16Encode;
+               tif->tif_encoderow = LogL16Encode;  
                switch (sp->user_datafmt) {
                case SGILOGDATAFMT_FLOAT:
                        sp->tfunc = L16fromY;
@@ -1424,14 +1484,14 @@ LogLuvSetupEncode(TIFF* tif)
                }
                break;
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-    "Inappropriate photometric interpretation %d for SGILog compression; %s",
-                   td->td_photometric, "must be either LogLUV or LogL");
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Inappropriate photometric interpretation %d for SGILog compression; %s",
+                   td->td_photometric, "must be either LogLUV or LogL");
                break;
        }
        return (1);
 notsupported:
-       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+       TIFFErrorExt(tif->tif_clientdata, module,
            "SGILog compression supported only for %s, or raw data",
            td->td_photometric == PHOTOMETRIC_LOGL ? "Y, L" : "XYZ, Luv");
        return (0);
@@ -1474,14 +1534,15 @@ LogLuvCleanup(TIFF* tif)
 }
 
 static int
-LogLuvVSetField(TIFF* tif, ttag_t tag, va_list ap)
+LogLuvVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
+       static const char module[] = "LogLuvVSetField";
        LogLuvState* sp = DecoderState(tif);
        int bps, fmt;
 
        switch (tag) {
        case TIFFTAG_SGILOGDATAFMT:
-               sp->user_datafmt = va_arg(ap, int);
+               sp->user_datafmt = (int) va_arg(ap, int);
                /*
                 * Tweak the TIFF header so that the rest of libtiff knows what
                 * size of data will be passed between app and library, and
@@ -1513,16 +1574,16 @@ LogLuvVSetField(TIFF* tif, ttag_t tag, va_list ap)
                /*
                 * Must recalculate sizes should bits/sample change.
                 */
-               tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
+               tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tmsize_t) -1;
                tif->tif_scanlinesize = TIFFScanlineSize(tif);
                return (1);
        case TIFFTAG_SGILOGENCODE:
-               sp->encode_meth = va_arg(ap, int);
+               sp->encode_meth = (int) va_arg(ap, int);
                if (sp->encode_meth != SGILOGENCODE_NODITHER &&
-                               sp->encode_meth != SGILOGENCODE_RANDITHER) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                               "Unknown encoding %d for LogLuv compression",
-                               sp->encode_meth);
+                   sp->encode_meth != SGILOGENCODE_RANDITHER) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Unknown encoding %d for LogLuv compression",
+                           sp->encode_meth);
                        return (0);
                }
                return (1);
@@ -1532,7 +1593,7 @@ LogLuvVSetField(TIFF* tif, ttag_t tag, va_list ap)
 }
 
 static int
-LogLuvVGetField(TIFF* tif, ttag_t tag, va_list ap)
+LogLuvVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        LogLuvState *sp = (LogLuvState *)tif->tif_data;
 
@@ -1545,11 +1606,9 @@ LogLuvVGetField(TIFF* tif, ttag_t tag, va_list ap)
        }
 }
 
-static const TIFFFieldInfo LogLuvFieldInfo[] = {
-    { TIFFTAG_SGILOGDATAFMT,     0, 0, TIFF_SHORT,     FIELD_PSEUDO,
-      TRUE,    FALSE,  "SGILogDataFmt"},
-    { TIFFTAG_SGILOGENCODE,      0, 0, TIFF_SHORT,     FIELD_PSEUDO,
-      TRUE,    FALSE,  "SGILogEncode"}
+static const TIFFField LogLuvFields[] = {
+    { TIFFTAG_SGILOGDATAFMT, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "SGILogDataFmt", NULL},
+    { TIFFTAG_SGILOGENCODE, 0, 0, TIFF_SHORT, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "SGILogEncode", NULL}
 };
 
 int
@@ -1560,17 +1619,27 @@ TIFFInitSGILog(TIFF* tif, int scheme)
 
        assert(scheme == COMPRESSION_SGILOG24 || scheme == COMPRESSION_SGILOG);
 
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, LogLuvFields,
+                             TIFFArrayCount(LogLuvFields))) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Merging SGILog codec-specific tags failed");
+               return 0;
+       }
+
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LogLuvState));
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof (LogLuvState));
        if (tif->tif_data == NULL)
                goto bad;
        sp = (LogLuvState*) tif->tif_data;
-       _TIFFmemset((tdata_t)sp, 0, sizeof (*sp));
+       _TIFFmemset((void*)sp, 0, sizeof (*sp));
        sp->user_datafmt = SGILOGDATAFMT_UNKNOWN;
        sp->encode_meth = (scheme == COMPRESSION_SGILOG24) ?
-                               SGILOGENCODE_RANDITHER : SGILOGENCODE_NODITHER;
+           SGILOGENCODE_RANDITHER : SGILOGENCODE_NODITHER;
        sp->tfunc = _logLuvNop;
 
        /*
@@ -1578,18 +1647,19 @@ TIFFInitSGILog(TIFF* tif, int scheme)
         * NB: tif_decoderow & tif_encoderow are filled
         *     in at setup time.
         */
+       tif->tif_fixuptags = LogLuvFixupTags;  
        tif->tif_setupdecode = LogLuvSetupDecode;
        tif->tif_decodestrip = LogLuvDecodeStrip;
        tif->tif_decodetile = LogLuvDecodeTile;
        tif->tif_setupencode = LogLuvSetupEncode;
-       tif->tif_encodestrip = LogLuvEncodeStrip;
+       tif->tif_encodestrip = LogLuvEncodeStrip;  
        tif->tif_encodetile = LogLuvEncodeTile;
        tif->tif_close = LogLuvClose;
        tif->tif_cleanup = LogLuvCleanup;
 
-       /* override SetField so we can handle our private pseudo-tag */
-       _TIFFMergeFieldInfo(tif, LogLuvFieldInfo,
-                           TIFFArrayCount(LogLuvFieldInfo));
+       /*
+        * Override parent get/set field methods.
+        */
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield = LogLuvVGetField;   /* hook for codec tags */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
@@ -1604,3 +1674,10 @@ bad:
 #endif /* LOGLUV_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_lzma.c b/src/tiff/libtiff/tif_lzma.c
new file mode 100644 (file)
index 0000000..b21afa5
--- /dev/null
@@ -0,0 +1,495 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2010, Andrey Kiselev <dron@ak4719.spb.edu>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#include "tiffiop.h"
+#ifdef LZMA_SUPPORT
+/*
+ * TIFF Library.
+ *
+ * LZMA2 Compression Support
+ *
+ * You need an LZMA2 SDK to link with. See http://tukaani.org/xz/ for details.
+ *
+ * The codec is derived from ZLIB codec (tif_zip.c).
+ */
+
+#include "tif_predict.h"
+#include "lzma.h"
+
+#include <stdio.h>
+
+/*
+ * State block for each open TIFF file using LZMA2 compression/decompression.
+ */
+typedef struct {
+       TIFFPredictorState predict;
+        lzma_stream    stream;
+       lzma_filter     filters[LZMA_FILTERS_MAX + 1];
+       lzma_options_delta opt_delta;           /* delta filter options */
+       lzma_options_lzma opt_lzma;             /* LZMA2 filter options */
+       int             preset;                 /* compression level */
+       lzma_check      check;                  /* type of the integrity check */
+       int             state;                  /* state flags */
+#define LSTATE_INIT_DECODE 0x01
+#define LSTATE_INIT_ENCODE 0x02
+
+       TIFFVGetMethod  vgetparent;            /* super-class method */
+       TIFFVSetMethod  vsetparent;            /* super-class method */
+} LZMAState;
+
+#define LState(tif)             ((LZMAState*) (tif)->tif_data)
+#define DecoderState(tif)       LState(tif)
+#define EncoderState(tif)       LState(tif)
+
+static int LZMAEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s);
+static int LZMADecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s);
+
+static const char *
+LZMAStrerror(lzma_ret ret)
+{
+       switch (ret) {
+               case LZMA_OK:
+                   return "operation completed successfully";
+               case LZMA_STREAM_END:
+                   return "end of stream was reached";
+               case LZMA_NO_CHECK:
+                   return "input stream has no integrity check";
+               case LZMA_UNSUPPORTED_CHECK:
+                   return "cannot calculate the integrity check";
+               case LZMA_GET_CHECK:
+                   return "integrity check type is now available";
+               case LZMA_MEM_ERROR:
+                   return "cannot allocate memory";
+               case LZMA_MEMLIMIT_ERROR:
+                   return "memory usage limit was reached";
+               case LZMA_FORMAT_ERROR:
+                   return "file format not recognized";
+               case LZMA_OPTIONS_ERROR:
+                   return "invalid or unsupported options";
+               case LZMA_DATA_ERROR:
+                   return "data is corrupt";
+               case LZMA_BUF_ERROR:
+                   return "no progress is possible (stream is truncated or corrupt)";
+               case LZMA_PROG_ERROR:
+                   return "programming error";
+               default:
+                   return "unindentified liblzma error";
+       }
+}
+
+static int
+LZMAFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return 1;
+}
+
+static int
+LZMASetupDecode(TIFF* tif)
+{
+       LZMAState* sp = DecoderState(tif);
+
+       assert(sp != NULL);
+        
+        /* if we were last encoding, terminate this mode */
+       if (sp->state & LSTATE_INIT_ENCODE) {
+           lzma_end(&sp->stream);
+           sp->state = 0;
+       }
+
+       sp->state |= LSTATE_INIT_DECODE;
+       return 1;
+}
+
+/*
+ * Setup state for decoding a strip.
+ */
+static int
+LZMAPreDecode(TIFF* tif, uint16 s)
+{
+       static const char module[] = "LZMAPreDecode";
+       LZMAState* sp = DecoderState(tif);
+       lzma_ret ret;
+
+       (void) s;
+       assert(sp != NULL);
+
+       if( (sp->state & LSTATE_INIT_DECODE) == 0 )
+            tif->tif_setupdecode(tif);
+
+       sp->stream.next_in = tif->tif_rawdata;
+       sp->stream.avail_in = (size_t) tif->tif_rawcc;
+       if ((tmsize_t)sp->stream.avail_in != tif->tif_rawcc) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Liblzma cannot deal with buffers this size");
+               return 0;
+       }
+
+       /*
+        * Disable memory limit when decoding. UINT64_MAX is a flag to disable
+        * the limit, we are passing (uint64_t)-1 which should be the same.
+        */
+       ret = lzma_stream_decoder(&sp->stream, (uint64_t)-1, 0);
+       if (ret != LZMA_OK) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Error initializing the stream decoder, %s",
+                            LZMAStrerror(ret));
+               return 0;
+       }
+       return 1;
+}
+
+static int
+LZMADecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
+{
+       static const char module[] = "LZMADecode";
+       LZMAState* sp = DecoderState(tif);
+
+       (void) s;
+       assert(sp != NULL);
+       assert(sp->state == LSTATE_INIT_DECODE);
+
+        sp->stream.next_in = tif->tif_rawcp;
+        sp->stream.avail_in = (size_t) tif->tif_rawcc;
+
+       sp->stream.next_out = op;
+       sp->stream.avail_out = (size_t) occ;
+       if ((tmsize_t)sp->stream.avail_out != occ) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Liblzma cannot deal with buffers this size");
+               return 0;
+       }
+
+       do {
+               /*
+                * Save the current stream state to properly recover from the
+                * decoding errors later.
+                */
+               const uint8_t *next_in = sp->stream.next_in;
+               size_t avail_in = sp->stream.avail_in;
+
+               lzma_ret ret = lzma_code(&sp->stream, LZMA_RUN);
+               if (ret == LZMA_STREAM_END)
+                       break;
+               if (ret == LZMA_MEMLIMIT_ERROR) {
+                       lzma_ret r = lzma_stream_decoder(&sp->stream,
+                                                        lzma_memusage(&sp->stream), 0);
+                       if (r != LZMA_OK) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Error initializing the stream decoder, %s",
+                                            LZMAStrerror(r));
+                               break;
+                       }
+                       sp->stream.next_in = next_in;
+                       sp->stream.avail_in = avail_in;
+                       continue;
+               }
+               if (ret != LZMA_OK) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Decoding error at scanline %lu, %s",
+                           (unsigned long) tif->tif_row, LZMAStrerror(ret));
+                       break;
+               }
+       } while (sp->stream.avail_out > 0);
+       if (sp->stream.avail_out != 0) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Not enough data at scanline %lu (short %lu bytes)",
+                   (unsigned long) tif->tif_row, (unsigned long) sp->stream.avail_out);
+               return 0;
+       }
+
+        tif->tif_rawcp = (uint8 *)sp->stream.next_in; /* cast away const */
+        tif->tif_rawcc = sp->stream.avail_in;
+        
+       return 1;
+}
+
+static int
+LZMASetupEncode(TIFF* tif)
+{
+       LZMAState* sp = EncoderState(tif);
+
+       assert(sp != NULL);
+       if (sp->state & LSTATE_INIT_DECODE) {
+               lzma_end(&sp->stream);
+               sp->state = 0;
+       }
+
+       sp->state |= LSTATE_INIT_ENCODE;
+       return 1;
+}
+
+/*
+ * Reset encoding state at the start of a strip.
+ */
+static int
+LZMAPreEncode(TIFF* tif, uint16 s)
+{
+       static const char module[] = "LZMAPreEncode";
+       LZMAState *sp = EncoderState(tif);
+
+       (void) s;
+       assert(sp != NULL);
+       if( sp->state != LSTATE_INIT_ENCODE )
+            tif->tif_setupencode(tif);
+
+       sp->stream.next_out = tif->tif_rawdata;
+       sp->stream.avail_out = (size_t)tif->tif_rawdatasize;
+       if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Liblzma cannot deal with buffers this size");
+               return 0;
+       }
+       return (lzma_stream_encoder(&sp->stream, sp->filters, sp->check) == LZMA_OK);
+}
+
+/*
+ * Encode a chunk of pixels.
+ */
+static int
+LZMAEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
+{
+       static const char module[] = "LZMAEncode";
+       LZMAState *sp = EncoderState(tif);
+
+       assert(sp != NULL);
+       assert(sp->state == LSTATE_INIT_ENCODE);
+
+       (void) s;
+       sp->stream.next_in = bp;
+       sp->stream.avail_in = (size_t) cc;
+       if ((tmsize_t)sp->stream.avail_in != cc) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Liblzma cannot deal with buffers this size");
+               return 0;
+       }
+       do {
+               lzma_ret ret = lzma_code(&sp->stream, LZMA_RUN);
+               if (ret != LZMA_OK) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "Encoding error at scanline %lu, %s",
+                               (unsigned long) tif->tif_row, LZMAStrerror(ret));
+                       return 0;
+               }
+               if (sp->stream.avail_out == 0) {
+                       tif->tif_rawcc = tif->tif_rawdatasize;
+                       TIFFFlushData1(tif);
+                       sp->stream.next_out = tif->tif_rawdata;
+                       sp->stream.avail_out = (size_t)tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in LZMAPreEncode */
+               }
+       } while (sp->stream.avail_in > 0);
+       return 1;
+}
+
+/*
+ * Finish off an encoded strip by flushing the last
+ * string and tacking on an End Of Information code.
+ */
+static int
+LZMAPostEncode(TIFF* tif)
+{
+       static const char module[] = "LZMAPostEncode";
+       LZMAState *sp = EncoderState(tif);
+       lzma_ret ret;
+
+       sp->stream.avail_in = 0;
+       do {
+               ret = lzma_code(&sp->stream, LZMA_FINISH);
+               switch (ret) {
+               case LZMA_STREAM_END:
+               case LZMA_OK:
+                       if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) {
+                               tif->tif_rawcc =
+                                       tif->tif_rawdatasize - sp->stream.avail_out;
+                               TIFFFlushData1(tif);
+                               sp->stream.next_out = tif->tif_rawdata;
+                               sp->stream.avail_out = (size_t)tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */
+                       }
+                       break;
+               default:
+                       TIFFErrorExt(tif->tif_clientdata, module, "Liblzma error: %s",
+                                    LZMAStrerror(ret));
+                       return 0;
+               }
+       } while (ret != LZMA_STREAM_END);
+       return 1;
+}
+
+static void
+LZMACleanup(TIFF* tif)
+{
+       LZMAState* sp = LState(tif);
+
+       assert(sp != 0);
+
+       (void)TIFFPredictorCleanup(tif);
+
+       tif->tif_tagmethods.vgetfield = sp->vgetparent;
+       tif->tif_tagmethods.vsetfield = sp->vsetparent;
+
+       if (sp->state) {
+               lzma_end(&sp->stream);
+               sp->state = 0;
+       }
+       _TIFFfree(sp);
+       tif->tif_data = NULL;
+
+       _TIFFSetDefaultCompressionState(tif);
+}
+
+static int
+LZMAVSetField(TIFF* tif, uint32 tag, va_list ap)
+{
+       static const char module[] = "LZMAVSetField";
+       LZMAState* sp = LState(tif);
+
+       switch (tag) {
+       case TIFFTAG_LZMAPRESET:
+               sp->preset = (int) va_arg(ap, int);
+               lzma_lzma_preset(&sp->opt_lzma, sp->preset);
+               if (sp->state & LSTATE_INIT_ENCODE) {
+                       lzma_ret ret = lzma_stream_encoder(&sp->stream,
+                                                          sp->filters,
+                                                          sp->check);
+                       if (ret != LZMA_OK) {
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                            "Liblzma error: %s",
+                                            LZMAStrerror(ret));
+                       }
+               }
+               return 1;
+       default:
+               return (*sp->vsetparent)(tif, tag, ap);
+       }
+       /*NOTREACHED*/
+}
+
+static int
+LZMAVGetField(TIFF* tif, uint32 tag, va_list ap)
+{
+       LZMAState* sp = LState(tif);
+
+       switch (tag) {
+       case TIFFTAG_LZMAPRESET:
+               *va_arg(ap, int*) = sp->preset;
+               break;
+       default:
+               return (*sp->vgetparent)(tif, tag, ap);
+       }
+       return 1;
+}
+
+static const TIFFField lzmaFields[] = {
+       { TIFFTAG_LZMAPRESET, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED,
+               FIELD_PSEUDO, TRUE, FALSE, "LZMA2 Compression Preset", NULL },
+};
+
+int
+TIFFInitLZMA(TIFF* tif, int scheme)
+{
+       static const char module[] = "TIFFInitLZMA";
+       LZMAState* sp;
+       lzma_stream tmp_stream = LZMA_STREAM_INIT;
+
+       assert( scheme == COMPRESSION_LZMA );
+
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, lzmaFields, TIFFArrayCount(lzmaFields))) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Merging LZMA2 codec-specific tags failed");
+               return 0;
+       }
+
+       /*
+        * Allocate state block so tag methods have storage to record values.
+        */
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof(LZMAState));
+       if (tif->tif_data == NULL)
+               goto bad;
+       sp = LState(tif);
+       memcpy(&sp->stream, &tmp_stream, sizeof(lzma_stream));
+
+       /*
+        * Override parent get/set field methods.
+        */
+       sp->vgetparent = tif->tif_tagmethods.vgetfield;
+       tif->tif_tagmethods.vgetfield = LZMAVGetField;  /* hook for codec tags */
+       sp->vsetparent = tif->tif_tagmethods.vsetfield;
+       tif->tif_tagmethods.vsetfield = LZMAVSetField;  /* hook for codec tags */
+
+       /* Default values for codec-specific fields */
+       sp->preset = LZMA_PRESET_DEFAULT;               /* default comp. level */
+       sp->check = LZMA_CHECK_NONE;
+       sp->state = 0;
+
+       /* Data filters. So far we are using delta and LZMA2 filters only. */
+       sp->opt_delta.type = LZMA_DELTA_TYPE_BYTE;
+       /*
+        * The sample size in bytes seems to be reasonable distance for delta
+        * filter.
+        */
+       sp->opt_delta.dist = (tif->tif_dir.td_bitspersample % 8) ?
+               1 : tif->tif_dir.td_bitspersample / 8;
+       sp->filters[0].id = LZMA_FILTER_DELTA;
+       sp->filters[0].options = &sp->opt_delta;
+
+       lzma_lzma_preset(&sp->opt_lzma, sp->preset);
+       sp->filters[1].id = LZMA_FILTER_LZMA2;
+       sp->filters[1].options = &sp->opt_lzma;
+
+       sp->filters[2].id = LZMA_VLI_UNKNOWN;
+       sp->filters[2].options = NULL;
+
+       /*
+        * Install codec methods.
+        */
+       tif->tif_fixuptags = LZMAFixupTags;
+       tif->tif_setupdecode = LZMASetupDecode;
+       tif->tif_predecode = LZMAPreDecode;
+       tif->tif_decoderow = LZMADecode;
+       tif->tif_decodestrip = LZMADecode;
+       tif->tif_decodetile = LZMADecode;
+       tif->tif_setupencode = LZMASetupEncode;
+       tif->tif_preencode = LZMAPreEncode;
+       tif->tif_postencode = LZMAPostEncode;
+       tif->tif_encoderow = LZMAEncode;
+       tif->tif_encodestrip = LZMAEncode;
+       tif->tif_encodetile = LZMAEncode;
+       tif->tif_cleanup = LZMACleanup;
+       /*
+        * Setup predictor setup.
+        */
+       (void) TIFFPredictorInit(tif);
+       return 1;
+bad:
+       TIFFErrorExt(tif->tif_clientdata, module,
+                    "No space for LZMA2 state block");
+       return 0;
+}
+#endif /* LZMA_SUPORT */
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
index 12db5a48da883814ddb2ee64bcc600348ce5b3bb..8d4e373a544f021d594115f6d0706f79f56bfbc5 100644 (file)
@@ -27,7 +27,7 @@
 #include "tiffiop.h"
 #ifdef LZW_SUPPORT
 /*
- * TIFF Library.
+ * TIFF Library.  
  * Rev 5.0 Lempel-Ziv & Welch Compression Support
  *
  * This code is derived from the compress program whose code is
  *
  * Future revisions to the TIFF spec are expected to "clarify this issue".
  */
-#define        LZW_COMPAT              /* include backwards compatibility code */
+#define LZW_COMPAT              /* include backwards compatibility code */
 /*
  * Each strip of data is supposed to be terminated by a CODE_EOI.
  * If the following #define is included, the decoder will also
  * check for end-of-strip w/o seeing this code.  This makes the
  * library more robust, but also slower.
  */
-#define        LZW_CHECKEOS            /* include checks for strips w/o EOI code */
+#define LZW_CHECKEOS            /* include checks for strips w/o EOI code */
 
 #define MAXCODE(n)     ((1L<<(n))-1)
 /*
  * The TIFF spec specifies that encoded bit
  * strings range from 9 to 12 bits.
  */
-#define        BITS_MIN        9               /* start with 9 bits */
-#define        BITS_MAX        12              /* max of 12 bit strings */
+#define BITS_MIN        9               /* start with 9 bits */
+#define BITS_MAX        12              /* max of 12 bit strings */
 /* predefined codes */
-#define        CODE_CLEAR      256             /* code to clear string table */
-#define        CODE_EOI        257             /* end-of-information code */
-#define CODE_FIRST     258             /* first free code entry */
-#define        CODE_MAX        MAXCODE(BITS_MAX)
-#define        HSIZE           9001L           /* 91% occupancy */
-#define        HSHIFT          (13-8)
+#define CODE_CLEAR      256             /* code to clear string table */
+#define CODE_EOI        257             /* end-of-information code */
+#define CODE_FIRST      258             /* first free code entry */
+#define CODE_MAX        MAXCODE(BITS_MAX)
+#define HSIZE           9001L           /* 91% occupancy */
+#define HSHIFT          (13-8)
 #ifdef LZW_COMPAT
 /* NB: +1024 is for compatibility with old files */
-#define        CSIZE           (MAXCODE(BITS_MAX)+1024L)
+#define CSIZE           (MAXCODE(BITS_MAX)+1024L)
 #else
-#define        CSIZE           (MAXCODE(BITS_MAX)+1L)
+#define CSIZE           (MAXCODE(BITS_MAX)+1L)
 #endif
 
 /*
  * compression/decompression.  Note that the predictor
  * state block must be first in this data structure.
  */
-typedef        struct {
-       TIFFPredictorState predict;     /* predictor super class */
+typedef struct {
+       TIFFPredictorState predict;     /* predictor super class */
 
-       unsigned short  nbits;          /* # of bits/code */
-       unsigned short  maxcode;        /* maximum code for lzw_nbits */
-       unsigned short  free_ent;       /* next free entry in hash table */
-       long            nextdata;       /* next bits of i/o */
-       long            nextbits;       /* # of valid bits in lzw_nextdata */
+       unsigned short  nbits;          /* # of bits/code */
+       unsigned short  maxcode;        /* maximum code for lzw_nbits */
+       unsigned short  free_ent;       /* next free entry in hash table */
+       long            nextdata;       /* next bits of i/o */
+       long            nextbits;       /* # of valid bits in lzw_nextdata */
 
-        int             rw_mode;        /* preserve rw_mode from init */
+       int             rw_mode;        /* preserve rw_mode from init */
 } LZWBaseState;
 
-#define        lzw_nbits       base.nbits
-#define        lzw_maxcode     base.maxcode
-#define        lzw_free_ent    base.free_ent
-#define        lzw_nextdata    base.nextdata
-#define        lzw_nextbits    base.nextbits
+#define lzw_nbits       base.nbits
+#define lzw_maxcode     base.maxcode
+#define lzw_free_ent    base.free_ent
+#define lzw_nextdata    base.nextdata
+#define lzw_nextbits    base.nextbits
 
 /*
  * Encoding-specific state.
@@ -125,44 +125,44 @@ typedef struct code_ent {
        unsigned char   firstchar;      /* first token of string */
 } code_t;
 
-typedef        int (*decodeFunc)(TIFF*, tidata_t, tsize_t, tsample_t);
+typedef int (*decodeFunc)(TIFF*, uint8*, tmsize_t, uint16);
 
 typedef struct {
        LZWBaseState base;
 
        /* Decoding specific data */
-       long    dec_nbitsmask;          /* lzw_nbits 1 bits, right adjusted */
-       long    dec_restart;            /* restart count */
+       long    dec_nbitsmask;          /* lzw_nbits 1 bits, right adjusted */
+       long    dec_restart;            /* restart count */
 #ifdef LZW_CHECKEOS
-       long    dec_bitsleft;           /* available bits in raw data */
+       uint64  dec_bitsleft;           /* available bits in raw data */
 #endif
        decodeFunc dec_decode;          /* regular or backwards compatible */
-       code_t* dec_codep;              /* current recognized code */
-       code_t* dec_oldcodep;           /* previously recognized code */
-       code_t* dec_free_entp;          /* next free entry */
-       code_t* dec_maxcodep;           /* max available entry */
-       code_t* dec_codetab;            /* kept separate for small machines */
+       code_t* dec_codep;              /* current recognized code */
+       code_t* dec_oldcodep;           /* previously recognized code */
+       code_t* dec_free_entp;          /* next free entry */
+       code_t* dec_maxcodep;           /* max available entry */
+       code_t* dec_codetab;            /* kept separate for small machines */
 
        /* Encoding specific data */
-       int     enc_oldcode;            /* last code encountered */
-       long    enc_checkpoint;         /* point at which to clear table */
+       int     enc_oldcode;            /* last code encountered */
+       long    enc_checkpoint;         /* point at which to clear table */
 #define CHECK_GAP      10000           /* enc_ratio check interval */
-       long    enc_ratio;              /* current compression ratio */
-       long    enc_incount;            /* (input) data bytes encoded */
-       long    enc_outcount;           /* encoded (output) bytes */
-       tidata_t enc_rawlimit;          /* bound on tif_rawdata buffer */
-       hash_t* enc_hashtab;            /* kept separate for small machines */
+       long    enc_ratio;              /* current compression ratio */
+       long    enc_incount;            /* (input) data bytes encoded */
+       long    enc_outcount;           /* encoded (output) bytes */
+       uint8*  enc_rawlimit;           /* bound on tif_rawdata buffer */
+       hash_t* enc_hashtab;            /* kept separate for small machines */
 } LZWCodecState;
 
-#define        LZWState(tif)           ((LZWBaseState*) (tif)->tif_data)
-#define        DecoderState(tif)       ((LZWCodecState*) LZWState(tif))
-#define        EncoderState(tif)       ((LZWCodecState*) LZWState(tif))
+#define LZWState(tif)          ((LZWBaseState*) (tif)->tif_data)
+#define DecoderState(tif)      ((LZWCodecState*) LZWState(tif))
+#define EncoderState(tif)      ((LZWCodecState*) LZWState(tif))
 
-static int LZWDecode(TIFF*, tidata_t, tsize_t, tsample_t);
+static int LZWDecode(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
 #ifdef LZW_COMPAT
-static int LZWDecodeCompat(TIFF*, tidata_t, tsize_t, tsample_t);
+static int LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
 #endif
-static  void cl_hash(LZWCodecState*);
+static void cl_hash(LZWCodecState*);
 
 /*
  * LZW Decoder.
@@ -174,8 +174,8 @@ static  void cl_hash(LZWCodecState*);
  * strip is suppose to be terminated with CODE_EOI.
  */
 #define        NextCode(_tif, _sp, _bp, _code, _get) {                         \
-       if ((_sp)->dec_bitsleft < nbits) {                              \
-               TIFFWarningExt(_tif->tif_clientdata, _tif->tif_name,                            \
+       if ((_sp)->dec_bitsleft < (uint64)nbits) {                      \
+               TIFFWarningExt(_tif->tif_clientdata, module,            \
                    "LZWDecode: Strip %d not terminated with EOI code", \
                    _tif->tif_curstrip);                                \
                _code = CODE_EOI;                                       \
@@ -188,55 +188,68 @@ static  void cl_hash(LZWCodecState*);
 #define        NextCode(tif, sp, bp, code, get) get(sp, bp, code)
 #endif
 
+static int
+LZWFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
 static int
 LZWSetupDecode(TIFF* tif)
 {
+       static const char module[] = "LZWSetupDecode";
        LZWCodecState* sp = DecoderState(tif);
-       static const char module[] = " LZWSetupDecode";
        int code;
 
-        if( sp == NULL )
-        {
-            /*
-             * Allocate state block so tag methods have storage to record 
-                        * values.
-             */
-            tif->tif_data = (tidata_t) _TIFFmalloc(sizeof(LZWCodecState));
-            if (tif->tif_data == NULL)
-            {
-                               TIFFErrorExt(tif->tif_clientdata, "LZWPreDecode", "No space for LZW state block");
-                return (0);
-            }
-
-            DecoderState(tif)->dec_codetab = NULL;
-            DecoderState(tif)->dec_decode = NULL;
-            
-            /*
-             * Setup predictor setup.
-             */
-            (void) TIFFPredictorInit(tif);
-
-            sp = DecoderState(tif);
-        }
-            
+       if( sp == NULL )
+       {
+               /*
+                * Allocate state block so tag methods have storage to record
+                * values.
+               */
+               tif->tif_data = (uint8*) _TIFFmalloc(sizeof(LZWCodecState));
+               if (tif->tif_data == NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW state block");
+                       return (0);
+               }
+
+               DecoderState(tif)->dec_codetab = NULL;
+               DecoderState(tif)->dec_decode = NULL;
+
+               /*
+                * Setup predictor setup.
+                */
+               (void) TIFFPredictorInit(tif);
+
+               sp = DecoderState(tif);
+       }
+
        assert(sp != NULL);
 
        if (sp->dec_codetab == NULL) {
                sp->dec_codetab = (code_t*)_TIFFmalloc(CSIZE*sizeof (code_t));
                if (sp->dec_codetab == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW code table");
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                    "No space for LZW code table");
                        return (0);
                }
                /*
                 * Pre-load the table.
                 */
-                code = 255;
-                do {
-                    sp->dec_codetab[code].value = code;
-                    sp->dec_codetab[code].firstchar = code;
-                    sp->dec_codetab[code].length = 1;
-                    sp->dec_codetab[code].next = NULL;
-                } while (code--);
+               code = 255;
+               do {
+                       sp->dec_codetab[code].value = code;
+                       sp->dec_codetab[code].firstchar = code;
+                       sp->dec_codetab[code].length = 1;
+                       sp->dec_codetab[code].next = NULL;
+               } while (code--);
+               /*
+                * Zero-out the unused entries
+                 */
+                 _TIFFmemset(&sp->dec_codetab[CODE_CLEAR], 0,
+                            (CODE_FIRST - CODE_CLEAR) * sizeof (code_t));
        }
        return (1);
 }
@@ -245,19 +258,25 @@ LZWSetupDecode(TIFF* tif)
  * Setup state for decoding a strip.
  */
 static int
-LZWPreDecode(TIFF* tif, tsample_t s)
+LZWPreDecode(TIFF* tif, uint16 s)
 {
+       static const char module[] = "LZWPreDecode";
        LZWCodecState *sp = DecoderState(tif);
 
        (void) s;
        assert(sp != NULL);
+       if( sp->dec_codetab == NULL )
+        {
+            tif->tif_setupdecode( tif );
+        }
+
        /*
         * Check for old bit-reversed codes.
         */
        if (tif->tif_rawdata[0] == 0 && (tif->tif_rawdata[1] & 0x1)) {
 #ifdef LZW_COMPAT
                if (!sp->dec_decode) {
-                       TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
+                       TIFFWarningExt(tif->tif_clientdata, module,
                            "Old-style LZW codes, convert file");
                        /*
                         * Override default decoding methods with
@@ -280,7 +299,7 @@ LZWPreDecode(TIFF* tif, tsample_t s)
                sp->lzw_maxcode = MAXCODE(BITS_MIN);
 #else /* !LZW_COMPAT */
                if (!sp->dec_decode) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                       TIFFErrorExt(tif->tif_clientdata, module,
                            "Old-style LZW codes not supported");
                        sp->dec_decode = LZWDecode;
                }
@@ -297,7 +316,7 @@ LZWPreDecode(TIFF* tif, tsample_t s)
        sp->dec_restart = 0;
        sp->dec_nbitsmask = MAXCODE(BITS_MIN);
 #ifdef LZW_CHECKEOS
-       sp->dec_bitsleft = tif->tif_rawcc << 3;
+       sp->dec_bitsleft = ((uint64)tif->tif_rawcc) << 3;
 #endif
        sp->dec_free_entp = sp->dec_codetab + CODE_FIRST;
        /*
@@ -328,16 +347,17 @@ LZWPreDecode(TIFF* tif, tsample_t s)
 }
 
 static void
-codeLoop(TIFF* tif)
+codeLoop(TIFF* tif, const char* module)
 {
-       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-           "LZWDecode: Bogus encoding, loop in the code table; scanline %d",
+       TIFFErrorExt(tif->tif_clientdata, module,
+           "Bogus encoding, loop in the code table; scanline %d",
            tif->tif_row);
 }
 
 static int
-LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
+LZWDecode(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
 {
+       static const char module[] = "LZWDecode";
        LZWCodecState *sp = DecoderState(tif);
        char *op = (char*) op0;
        long occ = (long) occ0;
@@ -350,6 +370,13 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
 
        (void) s;
        assert(sp != NULL);
+        assert(sp->dec_codetab != NULL);
+
+       /*
+         Fail if value does not fit in long.
+       */
+       if ((tmsize_t) occ != occ0)
+               return (0);
        /*
         * Restart interrupted output operation.
         */
@@ -408,12 +435,20 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                        break;
                if (code == CODE_CLEAR) {
                        free_entp = sp->dec_codetab + CODE_FIRST;
+                       _TIFFmemset(free_entp, 0,
+                                   (CSIZE - CODE_FIRST) * sizeof (code_t));
                        nbits = BITS_MIN;
                        nbitsmask = MAXCODE(BITS_MIN);
                        maxcodep = sp->dec_codetab + nbitsmask-1;
                        NextCode(tif, sp, bp, code, GetNextCode);
                        if (code == CODE_EOI)
                                break;
+                       if (code >= CODE_CLEAR) {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                               "LZWDecode: Corrupted LZW table at scanline %d",
+                                            tif->tif_row);
+                               return (0);
+                       }
                        *op++ = (char)code, occ--;
                        oldcodep = sp->dec_codetab + code;
                        continue;
@@ -421,22 +456,22 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                codep = sp->dec_codetab + code;
 
                /*
-                * Add the new entry to the code table.
-                */
+                * Add the new entry to the code table.
+                */
                if (free_entp < &sp->dec_codetab[0] ||
-                       free_entp >= &sp->dec_codetab[CSIZE]) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                       "LZWDecode: Corrupted LZW table at scanline %d",
-                       tif->tif_row);
+                   free_entp >= &sp->dec_codetab[CSIZE]) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Corrupted LZW table at scanline %d",
+                           tif->tif_row);
                        return (0);
                }
 
                free_entp->next = oldcodep;
                if (free_entp->next < &sp->dec_codetab[0] ||
-                       free_entp->next >= &sp->dec_codetab[CSIZE]) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                       "LZWDecode: Corrupted LZW table at scanline %d",
-                       tif->tif_row);
+                   free_entp->next >= &sp->dec_codetab[CSIZE]) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Corrupted LZW table at scanline %d",
+                           tif->tif_row);
                        return (0);
                }
                free_entp->firstchar = free_entp->next->firstchar;
@@ -452,15 +487,15 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                oldcodep = codep;
                if (code >= 256) {
                        /*
-                        * Code maps to a string, copy string
+                        * Code maps to a string, copy string
                         * value to output (written in reverse).
-                        */
+                        */
                        if(codep->length == 0) {
-                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "LZWDecode: Wrong length of decoded string: "
-                           "data probably corrupted at scanline %d",
-                           tif->tif_row);      
-                           return (0);
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Wrong length of decoded string: "
+                                   "data probably corrupted at scanline %d",
+                                   tif->tif_row);
+                               return (0);
                        }
                        if (codep->length > occ) {
                                /*
@@ -474,14 +509,14 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                                        codep = codep->next;
                                } while (codep && codep->length > occ);
                                if (codep) {
-                                       sp->dec_restart = occ;
+                                       sp->dec_restart = (long)occ;
                                        tp = op + occ;
                                        do  {
                                                *--tp = codep->value;
                                                codep = codep->next;
                                        }  while (--occ && codep);
                                        if (codep)
-                                               codeLoop(tif);
+                                               codeLoop(tif, module);
                                }
                                break;
                        }
@@ -495,15 +530,16 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                                *tp = t;
                        } while (codep && tp > op);
                        if (codep) {
-                           codeLoop(tif);
+                           codeLoop(tif, module);
                            break;
                        }
+                       assert(occ >= len);
                        op += len, occ -= len;
                } else
                        *op++ = (char)code, occ--;
        }
 
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        sp->lzw_nbits = (unsigned short) nbits;
        sp->lzw_nextdata = nextdata;
        sp->lzw_nextbits = nextbits;
@@ -513,9 +549,15 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
        sp->dec_maxcodep = maxcodep;
 
        if (occ > 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "LZWDecode: Not enough data at scanline %d (short %d bytes)",
-                   tif->tif_row, occ);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at scanline %d (short %I64d bytes)",
+                            tif->tif_row, (unsigned __int64) occ);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at scanline %d (short %llu bytes)",
+                            tif->tif_row, (unsigned long long) occ);
+#endif
                return (0);
        }
        return (1);
@@ -538,8 +580,9 @@ LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
 }
 
 static int
-LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
+LZWDecodeCompat(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
 {
+       static const char module[] = "LZWDecodeCompat";
        LZWCodecState *sp = DecoderState(tif);
        char *op = (char*) op0;
        long occ = (long) occ0;
@@ -551,6 +594,13 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
 
        (void) s;
        assert(sp != NULL);
+
+       /*
+         Fail if value does not fit in long.
+       */
+       if ((tmsize_t) occ != occ0)
+               return (0);
+
        /*
         * Restart interrupted output operation.
         */
@@ -604,12 +654,20 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                        break;
                if (code == CODE_CLEAR) {
                        free_entp = sp->dec_codetab + CODE_FIRST;
+                       _TIFFmemset(free_entp, 0,
+                                   (CSIZE - CODE_FIRST) * sizeof (code_t));
                        nbits = BITS_MIN;
                        nbitsmask = MAXCODE(BITS_MIN);
                        maxcodep = sp->dec_codetab + nbitsmask;
                        NextCode(tif, sp, bp, code, GetNextCodeCompat);
                        if (code == CODE_EOI)
                                break;
+                       if (code >= CODE_CLEAR) {
+                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                               "LZWDecode: Corrupted LZW table at scanline %d",
+                                            tif->tif_row);
+                               return (0);
+                       }
                        *op++ = code, occ--;
                        oldcodep = sp->dec_codetab + code;
                        continue;
@@ -617,22 +675,20 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                codep = sp->dec_codetab + code;
 
                /*
-                * Add the new entry to the code table.
-                */
+                * Add the new entry to the code table.
+                */
                if (free_entp < &sp->dec_codetab[0] ||
-                       free_entp >= &sp->dec_codetab[CSIZE]) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                       "LZWDecodeCompat: Corrupted LZW table at scanline %d",
-                       tif->tif_row);
+                   free_entp >= &sp->dec_codetab[CSIZE]) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Corrupted LZW table at scanline %d", tif->tif_row);
                        return (0);
                }
 
                free_entp->next = oldcodep;
                if (free_entp->next < &sp->dec_codetab[0] ||
-                       free_entp->next >= &sp->dec_codetab[CSIZE]) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                       "LZWDecodeCompat: Corrupted LZW table at scanline %d",
-                       tif->tif_row);
+                   free_entp->next >= &sp->dec_codetab[CSIZE]) {
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Corrupted LZW table at scanline %d", tif->tif_row);
                        return (0);
                }
                free_entp->firstchar = free_entp->next->firstchar;
@@ -648,15 +704,15 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                oldcodep = codep;
                if (code >= 256) {
                        /*
-                        * Code maps to a string, copy string
+                        * Code maps to a string, copy string
                         * value to output (written in reverse).
-                        */
+                        */
                        if(codep->length == 0) {
-                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "LZWDecodeCompat: Wrong length of decoded "
-                           "string: data probably corrupted at scanline %d",
-                           tif->tif_row);      
-                           return (0);
+                               TIFFErrorExt(tif->tif_clientdata, module,
+                                   "Wrong length of decoded "
+                                   "string: data probably corrupted at scanline %d",
+                                   tif->tif_row);
+                               return (0);
                        }
                        if (codep->length > occ) {
                                /*
@@ -677,16 +733,17 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
                                }  while (--occ);
                                break;
                        }
+                       assert(occ >= codep->length);
                        op += codep->length, occ -= codep->length;
                        tp = op;
                        do {
                                *--tp = codep->value;
-                       } while( (codep = codep->next) != NULL);
+                       } while( (codep = codep->next) != NULL );
                } else
                        *op++ = code, occ--;
        }
 
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        sp->lzw_nbits = nbits;
        sp->lzw_nextdata = nextdata;
        sp->lzw_nextbits = nextbits;
@@ -696,9 +753,15 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
        sp->dec_maxcodep = maxcodep;
 
        if (occ > 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-           "LZWDecodeCompat: Not enough data at scanline %d (short %d bytes)",
-                   tif->tif_row, occ);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at scanline %d (short %I64d bytes)",
+                            tif->tif_row, (unsigned __int64) occ);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                       "Not enough data at scanline %d (short %llu bytes)",
+                            tif->tif_row, (unsigned long long) occ);
+#endif
                return (0);
        }
        return (1);
@@ -712,13 +775,14 @@ LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
 static int
 LZWSetupEncode(TIFF* tif)
 {
-       LZWCodecState* sp = EncoderState(tif);
        static const char module[] = "LZWSetupEncode";
+       LZWCodecState* sp = EncoderState(tif);
 
        assert(sp != NULL);
        sp->enc_hashtab = (hash_t*) _TIFFmalloc(HSIZE*sizeof (hash_t));
        if (sp->enc_hashtab == NULL) {
-               TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW hash table");
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "No space for LZW hash table");
                return (0);
        }
        return (1);
@@ -728,12 +792,18 @@ LZWSetupEncode(TIFF* tif)
  * Reset encoding state at the start of a strip.
  */
 static int
-LZWPreEncode(TIFF* tif, tsample_t s)
+LZWPreEncode(TIFF* tif, uint16 s)
 {
        LZWCodecState *sp = EncoderState(tif);
 
        (void) s;
        assert(sp != NULL);
+
+       if( sp->enc_hashtab == NULL )
+        {
+            tif->tif_setupencode( tif );
+        }
+
        sp->lzw_nbits = BITS_MIN;
        sp->lzw_maxcode = MAXCODE(BITS_MIN);
        sp->lzw_free_ent = CODE_FIRST;
@@ -787,7 +857,7 @@ LZWPreEncode(TIFF* tif, tsample_t s)
  * for the decoder. 
  */
 static int
-LZWEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+LZWEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
        register LZWCodecState *sp = EncoderState(tif);
        register long fcode;
@@ -798,11 +868,15 @@ LZWEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
        long incount, outcount, checkpoint;
        long nextdata, nextbits;
        int free_ent, maxcode, nbits;
-       tidata_t op, limit;
+       uint8* op;
+       uint8* limit;
 
        (void) s;
        if (sp == NULL)
                return (0);
+
+        assert(sp->enc_hashtab != NULL);
+
        /*
         * Load local state.
         */
@@ -874,7 +948,7 @@ LZWEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                 * are at least 4 bytes free--room for 2 codes.
                 */
                if (op > limit) {
-                       tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
+                       tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
                        TIFFFlushData1(tif);
                        op = tif->tif_rawdata;
                }
@@ -952,14 +1026,14 @@ static int
 LZWPostEncode(TIFF* tif)
 {
        register LZWCodecState *sp = EncoderState(tif);
-       tidata_t op = tif->tif_rawcp;
+       uint8* op = tif->tif_rawcp;
        long nextbits = sp->lzw_nextbits;
        long nextdata = sp->lzw_nextdata;
        long outcount = sp->enc_outcount;
        int nbits = sp->lzw_nbits;
 
        if (op > sp->enc_rawlimit) {
-               tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
+               tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
                TIFFFlushData1(tif);
                op = tif->tif_rawdata;
        }
@@ -970,7 +1044,7 @@ LZWPostEncode(TIFF* tif)
        PutNextCode(op, CODE_EOI);
        if (nextbits > 0) 
                *op++ = (unsigned char)(nextdata << (8-nextbits));
-       tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
+       tif->tif_rawcc = (tmsize_t)(op - tif->tif_rawdata);
        return (1);
 }
 
@@ -983,7 +1057,7 @@ cl_hash(LZWCodecState* sp)
        register hash_t *hp = &sp->enc_hashtab[HSIZE-1];
        register long i = HSIZE-8;
 
-       do {
+       do {
                i -= 8;
                hp[-7].hash = -1;
                hp[-6].hash = -1;
@@ -995,7 +1069,7 @@ cl_hash(LZWCodecState* sp)
                hp[ 0].hash = -1;
                hp -= 8;
        } while (i >= 0);
-       for (i += 8; i > 0; i--, hp--)
+       for (i += 8; i > 0; i--, hp--)
                hp->hash = -1;
 }
 
@@ -1021,11 +1095,12 @@ LZWCleanup(TIFF* tif)
 int
 TIFFInitLZW(TIFF* tif, int scheme)
 {
+       static const char module[] = "TIFFInitLZW";
        assert(scheme == COMPRESSION_LZW);
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LZWCodecState));
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof (LZWCodecState));
        if (tif->tif_data == NULL)
                goto bad;
        DecoderState(tif)->dec_codetab = NULL;
@@ -1036,6 +1111,7 @@ TIFFInitLZW(TIFF* tif, int scheme)
        /*
         * Install codec methods.
         */
+       tif->tif_fixuptags = LZWFixupTags; 
        tif->tif_setupdecode = LZWSetupDecode;
        tif->tif_predecode = LZWPreDecode;
        tif->tif_decoderow = LZWDecode;
@@ -1054,7 +1130,7 @@ TIFFInitLZW(TIFF* tif, int scheme)
        (void) TIFFPredictorInit(tif);
        return (1);
 bad:
-       TIFFErrorExt(tif->tif_clientdata, "TIFFInitLZW"
+       TIFFErrorExt(tif->tif_clientdata, module
                     "No space for LZW state block");
        return (0);
 }
@@ -1082,3 +1158,10 @@ bad:
 #endif /* LZW_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_msdos.c b/src/tiff/libtiff/tif_msdos.c
deleted file mode 100644 (file)
index de1c4bb..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_msdos.c,v 1.2 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library MSDOS-specific Routines.
- */
-#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
-#include <io.h>                /* for open, close, etc. function prototypes */
-#include <stdio.h>
-#endif
-#include "tiffiop.h"
-
-static tsize_t 
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (read((int) fd, buf, size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (write((int) fd, buf, size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-       return (lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-       return (close((int) fd));
-}
-
-#include <sys/stat.h>
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-       struct stat sb;
-       return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-       return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-       TIFF* tif;
-
-       tif = TIFFClientOpen(name, mode,
-           (void*) fd,
-           _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
-           _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
-       if (tif)
-               tif->tif_fd = fd;
-       return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-       static const char module[] = "TIFFOpen";
-       int m, fd;
-
-       m = _TIFFgetMode(mode, module);
-       if (m == -1)
-               return ((TIFF*)0);
-       fd = open(name, m|O_BINARY, 0666);
-       if (fd < 0) {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
-               return ((TIFF*)0);
-       }
-       return (TIFFFdOpen(fd, name, mode));
-}
-
-#ifdef __GNUC__
-extern char* malloc();
-extern char* realloc();
-#else
-#include <malloc.h>
-#endif
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
-       return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-       free(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-       return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
-       memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
-       memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
-       return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-msdosWarningHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       fprintf(stderr, "Warning, ");
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = msdosWarningHandler;
-
-static void
-msdosErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-       if (module != NULL)
-               fprintf(stderr, "%s: ", module);
-       vfprintf(stderr, fmt, ap);
-       fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = msdosErrorHandler;
index 89df304a72d81d320ad4558c19b4973b9e9cd643..55e2537179ad6c2365fb6bc3889d99c16807e7ab 100644 (file)
 #define WHITE          ((1<<2)-1)
 
 static int
-NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+NeXTDecode(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
-       register unsigned char *bp, *op;
-       register tsize_t cc;
-       register int n;
-       tidata_t row;
-       tsize_t scanline;
+       static const char module[] = "NeXTDecode";
+       unsigned char *bp, *op;
+       tmsize_t cc;
+       uint8* row;
+       tmsize_t scanline, n;
 
        (void) s;
        /*
@@ -60,13 +60,18 @@ NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
         * white (we assume a PhotometricInterpretation
         * of ``min-is-black'').
         */
-       for (op = buf, cc = occ; cc-- > 0;)
+       for (op = (unsigned char*) buf, cc = occ; cc-- > 0;)
                *op++ = 0xff;
 
        bp = (unsigned char *)tif->tif_rawcp;
        cc = tif->tif_rawcc;
        scanline = tif->tif_scanlinesize;
-       for (row = buf; (long)occ > 0; occ -= scanline, row += scanline) {
+       if (occ % scanline)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (0);
+       }
+       for (row = buf; occ > 0; occ -= scanline, row += scanline) {
                n = *bp++, cc--;
                switch (n) {
                case LITERALROW:
@@ -80,10 +85,10 @@ NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                        cc -= scanline;
                        break;
                case LITERALSPAN: {
-                       int off;
+                       tmsize_t off;
                        /*
-                        * The scanline has a literal span
-                        * that begins at some offset.
+                        * The scanline has a literal span that begins at some
+                        * offset.
                         */
                        off = (bp[0] * 256) + bp[1];
                        n = (bp[2] * 256) + bp[3];
@@ -95,23 +100,27 @@ NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                        break;
                }
                default: {
-                       register int npixels = 0, grey;
-                       unsigned long imagewidth = tif->tif_dir.td_imagewidth;
+                       uint32 npixels = 0, grey;
+                       uint32 imagewidth = tif->tif_dir.td_imagewidth;
 
                        /*
-                        * The scanline is composed of a sequence
-                        * of constant color ``runs''.  We shift
-                        * into ``run mode'' and interpret bytes
-                        * as codes of the form <color><npixels>
-                        * until we've filled the scanline.
+                        * The scanline is composed of a sequence of constant
+                        * color ``runs''.  We shift into ``run mode'' and
+                        * interpret bytes as codes of the form
+                        * <color><npixels> until we've filled the scanline.
                         */
                        op = row;
                        for (;;) {
-                               grey = (n>>6) & 0x3;
+                               grey = (uint32)((n>>6) & 0x3);
                                n &= 0x3f;
-                               while (n-- > 0)
+                               /*
+                                * Ensure the run does not exceed the scanline
+                                * bounds, potentially resulting in a security
+                                * issue.
+                                */
+                               while (n-- > 0 && npixels < imagewidth)
                                        SETPIXEL(op, grey);
-                               if (npixels >= (int) imagewidth)
+                               if (npixels >= imagewidth)
                                        break;
                                if (cc == 0)
                                        goto bad;
@@ -121,11 +130,11 @@ NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
                }
                }
        }
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        return (1);
 bad:
-       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "NeXTDecode: Not enough data for scanline %ld",
+       TIFFErrorExt(tif->tif_clientdata, module, "Not enough data for scanline %ld",
            (long) tif->tif_row);
        return (0);
 }
@@ -134,11 +143,18 @@ int
 TIFFInitNeXT(TIFF* tif, int scheme)
 {
        (void) scheme;
-       tif->tif_decoderow = NeXTDecode;
-       tif->tif_decodestrip = NeXTDecode;
+       tif->tif_decoderow = NeXTDecode;  
+       tif->tif_decodestrip = NeXTDecode;  
        tif->tif_decodetile = NeXTDecode;
        return (1);
 }
 #endif /* NEXT_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index c2c9a2133f692cab8b166ab8619231af08d277ef..81b055cbdd8007313c4dfbe57a2d027b9f3c22f1 100644 (file)
 /* $Id$ */
 
+/* WARNING: The type of JPEG encapsulation defined by the TIFF Version 6.0
+   specification is now totally obsolete and deprecated for new applications and
+   images. This file was was created solely in order to read unconverted images
+   still present on some users' computer systems. It will never be extended
+   to write such files. Writing new-style JPEG compressed TIFFs is implemented
+   in tif_jpeg.c.
+
+   The code is carefully crafted to robustly read all gathered JPEG-in-TIFF
+   testfiles, and anticipate as much as possible all other... But still, it may
+   fail on some. If you encounter problems, please report them on the TIFF
+   mailing list and/or to Joris Van Damme <info@awaresystems.be>.
+
+   Please read the file called "TIFF Technical Note #2" if you need to be
+   convinced this compression scheme is bad and breaks TIFF. That document
+   is linked to from the LibTiff site <http://www.remotesensing.org/libtiff/>
+   and from AWare Systems' TIFF section
+   <http://www.awaresystems.be/imaging/tiff.html>. It is also absorbed
+   in Adobe's specification supplements, marked "draft" up to this day, but
+   supported by the TIFF community.
+
+   This file interfaces with Release 6B of the JPEG Library written by the
+   Independent JPEG Group. Previous versions of this file required a hack inside
+   the LibJpeg library. This version no longer requires that. Remember to
+   remove the hack if you update from the old version.
+
+   Copyright (c) Joris Van Damme <info@awaresystems.be>
+   Copyright (c) AWare Systems <http://www.awaresystems.be/>
+
+   The licence agreement for this file is the same as the rest of the LibTiff
+   library.
+
+   IN NO EVENT SHALL JORIS VAN DAMME OR AWARE SYSTEMS BE LIABLE FOR
+   ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+   OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+   WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+   LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+   OF THIS SOFTWARE.
+
+   Joris Van Damme and/or AWare Systems may be available for custom
+   developement. If you like what you see, and need anything similar or related,
+   contact <info@awaresystems.be>.
+*/
+
+/* What is what, and what is not?
+
+   This decoder starts with an input stream, that is essentially the JpegInterchangeFormat
+   stream, if any, followed by the strile data, if any. This stream is read in
+   OJPEGReadByte and related functions.
+
+   It analyzes the start of this stream, until it encounters non-marker data, i.e.
+   compressed image data. Some of the header markers it sees have no actual content,
+   like the SOI marker, and APP/COM markers that really shouldn't even be there. Some
+   other markers do have content, and the valuable bits and pieces of information
+   in these markers are saved, checking all to verify that the stream is more or
+   less within expected bounds. This happens inside the OJPEGReadHeaderInfoSecStreamXxx
+   functions.
+
+   Some OJPEG imagery contains no valid JPEG header markers. This situation is picked
+   up on if we've seen no SOF marker when we're at the start of the compressed image
+   data. In this case, the tables are read from JpegXxxTables tags, and the other
+   bits and pieces of information is initialized to its most basic value. This is
+   implemented in the OJPEGReadHeaderInfoSecTablesXxx functions.
+
+   When this is complete, a good and valid JPEG header can be assembled, and this is
+   passed through to LibJpeg. When that's done, the remainder of the input stream, i.e.
+   the compressed image data, can be passed through unchanged. This is done in
+   OJPEGWriteStream functions.
+
+   LibTiff rightly expects to know the subsampling values before decompression. Just like
+   in new-style JPEG-in-TIFF, though, or even more so, actually, the YCbCrsubsampling
+   tag is notoriously unreliable. To correct these tag values with the ones inside
+   the JPEG stream, the first part of the input stream is pre-scanned in
+   OJPEGSubsamplingCorrect, making no note of any other data, reporting no warnings
+   or errors, up to the point where either these values are read, or it's clear they
+   aren't there. This means that some of the data is read twice, but we feel speed
+   in correcting these values is important enough to warrant this sacrifice. Allthough
+   there is currently no define or other configuration mechanism to disable this behaviour,
+   the actual header scanning is build to robustly respond with error report if it
+   should encounter an uncorrected mismatch of subsampling values. See
+   OJPEGReadHeaderInfoSecStreamSof.
+
+   The restart interval and restart markers are the most tricky part... The restart
+   interval can be specified in a tag. It can also be set inside the input JPEG stream.
+   It can be used inside the input JPEG stream. If reading from strile data, we've
+   consistenly discovered the need to insert restart markers in between the different
+   striles, as is also probably the most likely interpretation of the original TIFF 6.0
+   specification. With all this setting of interval, and actual use of markers that is not
+   predictable at the time of valid JPEG header assembly, the restart thing may turn
+   out the Achilles heel of this implementation. Fortunately, most OJPEG writer vendors
+   succeed in reading back what they write, which may be the reason why we've been able
+   to discover ways that seem to work.
+
+   Some special provision is made for planarconfig separate OJPEG files. These seem
+   to consistently contain header info, a SOS marker, a plane, SOS marker, plane, SOS,
+   and plane. This may or may not be a valid JPEG configuration, we don't know and don't
+   care. We want LibTiff to be able to access the planes individually, without huge
+   buffering inside LibJpeg, anyway. So we compose headers to feed to LibJpeg, in this
+   case, that allow us to pass a single plane such that LibJpeg sees a valid
+   single-channel JPEG stream. Locating subsequent SOS markers, and thus subsequent
+   planes, is done inside OJPEGReadSecondarySos.
+
+   The benefit of the scheme is... that it works, basically. We know of no other that
+   does. It works without checking software tag, or otherwise going about things in an
+   OJPEG flavor specific manner. Instead, it is a single scheme, that covers the cases
+   with and without JpegInterchangeFormat, with and without striles, with part of
+   the header in JpegInterchangeFormat and remainder in first strile, etc. It is forgiving
+   and robust, may likely work with OJPEG flavors we've not seen yet, and makes most out
+   of the data.
+
+   Another nice side-effect is that a complete JPEG single valid stream is build if
+   planarconfig is not separate (vast majority). We may one day use that to build
+   converters to JPEG, and/or to new-style JPEG compression inside TIFF.
+
+   A dissadvantage is the lack of random access to the individual striles. This is the
+   reason for much of the complicated restart-and-position stuff inside OJPEGPreDecode.
+   Applications would do well accessing all striles in order, as this will result in
+   a single sequential scan of the input stream, and no restarting of LibJpeg decoding
+   session.
+*/
+
+#define WIN32_LEAN_AND_MEAN
+#define VC_EXTRALEAN
+
 #include "tiffiop.h"
 #ifdef OJPEG_SUPPORT
 
-/* JPEG Compression support, as per the original TIFF 6.0 specification.
-
-   WARNING: KLUDGE ALERT!  The type of JPEG encapsulation defined by the TIFF
-                           Version 6.0 specification is now totally obsolete and
-   deprecated for new applications and images.  This file is an unsupported hack
-   that was created solely in order to read (but NOT write!) a few old,
-   unconverted images still present on some users' computer systems.  The code
-   isn't pretty or robust, and it won't read every "old format" JPEG-in-TIFF
-   file (see Samuel Leffler's draft "TIFF Technical Note No. 2" for a long and
-   incomplete list of known problems), but it seems to work well enough in the
-   few cases of practical interest to the author; so, "caveat emptor"!  This
-   file should NEVER be enhanced to write new images using anything other than
-   the latest approved JPEG-in-TIFF encapsulation method, implemented by the
-   "tif_jpeg.c" file elsewhere in this library.
-
-   This file interfaces with Release 6B of the JPEG Library written by theu
-   Independent JPEG Group, which you can find on the Internet at:
-   ftp://ftp.uu.net:/graphics/jpeg/.
-
-   The "C" Preprocessor macros, "[CD]_LOSSLESS_SUPPORTED", are defined by your
-   JPEG Library Version 6B only if you have applied a (massive!) patch by Ken
-   Murchison of Oceana Matrix Ltd. <ken@oceana.com> to support lossless Huffman
-   encoding (TIFF "JPEGProc" tag value = 14).  This patch can be found on the
-   Internet at: ftp://ftp.oceana.com/pub/ljpeg-6b.tar.gz.
-
-   Some old files produced by the Wang Imaging application for Microsoft Windows
-   apparently can be decoded only with a special patch to the JPEG Library,
-   which defines a subroutine named "jpeg_reset_huff_decode()" in its "jdhuff.c"
-   module (the "jdshuff.c" module, if Ken Murchison's patch has been applied).
-   Unfortunately the patch differs slightly in each case, and some TIFF Library
-   have reported problems finding the code, so both versions appear below; you
-   should carefully extract and apply only the version that applies to your JPEG
-   Library!
-
-   Contributed by Scott Marovich <marovich@hpl.hp.com> with considerable help
-   from Charles Auer <Bumble731@msn.com> to unravel the mysteries of image files
-   created by the Wang Imaging application for Microsoft Windows.
-*/
-#if 0  /* Patch for JPEG Library WITHOUT lossless Huffman coding */
-*** jdhuff.c.orig      Mon Oct 20 17:51:10 1997
---- jdhuff.c   Sun Nov 11 17:33:58 2001
-***************
-*** 648,651 ****
---- 648,683 ----
-    for (i = 0; i < NUM_HUFF_TBLS; i++) {
-      entropy->dc_derived_tbls[i] = entropy->ac_derived_tbls[i] = NULL;
-    }
-  }
-+ 
-+ /*
-+  * BEWARE OF KLUDGE:  This subroutine is a hack for decoding illegal JPEG-in-
-+  *                    TIFF encapsulations produced by Microsoft's Wang Imaging
-+  * for Windows application with the public-domain TIFF Library.  Based upon an
-+  * examination of selected output files, this program apparently divides a JPEG
-+  * bit-stream into consecutive horizontal TIFF "strips", such that the JPEG
-+  * encoder's/decoder's DC coefficients for each image component are reset before
-+  * each "strip".  Moreover, a "strip" is not necessarily encoded in a multiple
-+  * of 8 bits, so one must sometimes discard 1-7 bits at the end of each "strip"
-+  * for alignment to the next input-Byte storage boundary.  IJG JPEG Library
-+  * decoder state is not normally exposed to client applications, so this sub-
-+  * routine provides the TIFF Library with a "hook" to make these corrections.
-+  * It should be called after "jpeg_start_decompress()" and before
-+  * "jpeg_finish_decompress()", just before decoding each "strip" using
-+  * "jpeg_read_raw_data()" or "jpeg_read_scanlines()".
-+  *
-+  * This kludge is not sanctioned or supported by the Independent JPEG Group, and
-+  * future changes to the IJG JPEG Library might invalidate it.  Do not send bug
-+  * reports about this code to IJG developers.  Instead, contact the author for
-+  * advice: Scott B. Marovich <marovich@hpl.hp.com>, Hewlett-Packard Labs, 6/01.
-+  */
-+ GLOBAL(void)
-+ jpeg_reset_huff_decode (register j_decompress_ptr cinfo)
-+ { register huff_entropy_ptr entropy = (huff_entropy_ptr)cinfo->entropy;
-+   register int ci = 0;
-+ 
-+   /* Discard encoded input bits, up to the next Byte boundary */
-+   entropy->bitstate.bits_left &= ~7;
-+   /* Re-initialize DC predictions to 0 */
-+   do entropy->saved.last_dc_val[ci] = 0; while (++ci < cinfo->comps_in_scan);
-+ }
-#endif /* Patch for JPEG Library WITHOUT lossless Huffman coding */
-#if 0  /* Patch for JPEG Library WITH lossless Huffman coding */
-*** jdshuff.c.orig     Mon Mar 11 16:44:54 2002
---- jdshuff.c  Mon Mar 11 16:44:54 2002
-***************
-*** 357,360 ****
---- 357,393 ----
-    for (i = 0; i < NUM_HUFF_TBLS; i++) {
-      entropy->dc_derived_tbls[i] = entropy->ac_derived_tbls[i] = NULL;
-    }
-  }
-+ 
-+ /*
-+  * BEWARE OF KLUDGE:  This subroutine is a hack for decoding illegal JPEG-in-
-+  *                    TIFF encapsulations produced by Microsoft's Wang Imaging
-+  * for Windows application with the public-domain TIFF Library.  Based upon an
-+  * examination of selected output files, this program apparently divides a JPEG
-+  * bit-stream into consecutive horizontal TIFF "strips", such that the JPEG
-+  * encoder's/decoder's DC coefficients for each image component are reset before
-+  * each "strip".  Moreover, a "strip" is not necessarily encoded in a multiple
-+  * of 8 bits, so one must sometimes discard 1-7 bits at the end of each "strip"
-+  * for alignment to the next input-Byte storage boundary.  IJG JPEG Library
-+  * decoder state is not normally exposed to client applications, so this sub-
-+  * routine provides the TIFF Library with a "hook" to make these corrections.
-+  * It should be called after "jpeg_start_decompress()" and before
-+  * "jpeg_finish_decompress()", just before decoding each "strip" using
-+  * "jpeg_read_raw_data()" or "jpeg_read_scanlines()".
-+  *
-+  * This kludge is not sanctioned or supported by the Independent JPEG Group, and
-+  * future changes to the IJG JPEG Library might invalidate it.  Do not send bug
-+  * reports about this code to IJG developers.  Instead, contact the author for
-+  * advice: Scott B. Marovich <marovich@hpl.hp.com>, Hewlett-Packard Labs, 6/01.
-+  */
-+ GLOBAL(void)
-+ jpeg_reset_huff_decode (register j_decompress_ptr cinfo)
-+ { register shuff_entropy_ptr entropy = (shuff_entropy_ptr)
-+                                        ((j_lossy_d_ptr)cinfo->codec)->entropy_private;
-+   register int ci = 0;
-+ 
-+   /* Discard encoded input bits, up to the next Byte boundary */
-+   entropy->bitstate.bits_left &= ~7;
-+   /* Re-initialize DC predictions to 0 */
-+   do entropy->saved.last_dc_val[ci] = 0; while (++ci < cinfo->comps_in_scan);
-+ }
-#endif /* Patch for JPEG Library WITH lossless Huffman coding */
+/* Configuration defines here are:
+ * JPEG_ENCAP_EXTERNAL: The normal way to call libjpeg, uses longjump. In some environments,
+ *     like eg LibTiffDelphi, this is not possible. For this reason, the actual calls to
+ *     libjpeg, with longjump stuff, are encapsulated in dedicated functions. When
+ *     JPEG_ENCAP_EXTERNAL is defined, these encapsulating functions are declared external
+ *     to this unit, and can be defined elsewhere to use stuff other then longjump.
+ *     The default mode, without JPEG_ENCAP_EXTERNAL, implements the call encapsulators
+ *     here, internally, with normal longjump.
+ * SETJMP, LONGJMP, JMP_BUF: On some machines/environments a longjump equivalent is
+ *     conviniently available, but still it may be worthwhile to use _setjmp or sigsetjmp
+ *     in place of plain setjmp. These macros will make it easier. It is useless
+ *     to fiddle with these if you define JPEG_ENCAP_EXTERNAL.
+ * OJPEG_BUFFER: Define the size of the desired buffer here. Should be small enough so as to guarantee
+ *     instant processing, optimal streaming and optimal use of processor cache, but also big
+ *     enough so as to not result in significant call overhead. It should be at least a few
+ *     bytes to accomodate some structures (this is verified in asserts), but it would not be
+ *     sensible to make it this small anyway, and it should be at most 64K since it is indexed
+ *     with uint16. We recommend 2K.
+ * EGYPTIANWALK: You could also define EGYPTIANWALK here, but it is not used anywhere and has
+ *     absolutely no effect. That is why most people insist the EGYPTIANWALK is a bit silly.
+ */
+
+/* define LIBJPEG_ENCAP_EXTERNAL */
+#define SETJMP(jbuf) setjmp(jbuf)
+#define LONGJMP(jbuf,code) longjmp(jbuf,code)
+#define JMP_BUF jmp_buf
+#define OJPEG_BUFFER 2048
+/* define EGYPTIANWALK */
+
+#define JPEG_MARKER_SOF0 0xC0
+#define JPEG_MARKER_SOF1 0xC1
+#define JPEG_MARKER_SOF3 0xC3
+#define JPEG_MARKER_DHT 0xC4
+#define JPEG_MARKER_RST0 0XD0
+#define JPEG_MARKER_SOI 0xD8
+#define JPEG_MARKER_EOI 0xD9
+#define JPEG_MARKER_SOS 0xDA
+#define JPEG_MARKER_DQT 0xDB
+#define JPEG_MARKER_DRI 0xDD
+#define JPEG_MARKER_APP0 0xE0
+#define JPEG_MARKER_COM 0xFE
+
+#define FIELD_OJPEG_JPEGINTERCHANGEFORMAT (FIELD_CODEC+0)
+#define FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH (FIELD_CODEC+1)
+#define FIELD_OJPEG_JPEGQTABLES (FIELD_CODEC+2)
+#define FIELD_OJPEG_JPEGDCTABLES (FIELD_CODEC+3)
+#define FIELD_OJPEG_JPEGACTABLES (FIELD_CODEC+4)
+#define FIELD_OJPEG_JPEGPROC (FIELD_CODEC+5)
+#define FIELD_OJPEG_JPEGRESTARTINTERVAL (FIELD_CODEC+6)
+
+static const TIFFField ojpegFields[] = {
+       {TIFFTAG_JPEGIFOFFSET,1,1,TIFF_LONG8,0,TIFF_SETGET_UINT64,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGINTERCHANGEFORMAT,TRUE,FALSE,"JpegInterchangeFormat",NULL},
+       {TIFFTAG_JPEGIFBYTECOUNT,1,1,TIFF_LONG8,0,TIFF_SETGET_UINT64,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH,TRUE,FALSE,"JpegInterchangeFormatLength",NULL},
+       {TIFFTAG_JPEGQTABLES,TIFF_VARIABLE2,TIFF_VARIABLE2,TIFF_LONG8,0,TIFF_SETGET_C32_UINT64,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGQTABLES,FALSE,TRUE,"JpegQTables",NULL},
+       {TIFFTAG_JPEGDCTABLES,TIFF_VARIABLE2,TIFF_VARIABLE2,TIFF_LONG8,0,TIFF_SETGET_C32_UINT64,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGDCTABLES,FALSE,TRUE,"JpegDcTables",NULL},
+       {TIFFTAG_JPEGACTABLES,TIFF_VARIABLE2,TIFF_VARIABLE2,TIFF_LONG8,0,TIFF_SETGET_C32_UINT64,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGACTABLES,FALSE,TRUE,"JpegAcTables",NULL},
+       {TIFFTAG_JPEGPROC,1,1,TIFF_SHORT,0,TIFF_SETGET_UINT16,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGPROC,FALSE,FALSE,"JpegProc",NULL},
+       {TIFFTAG_JPEGRESTARTINTERVAL,1,1,TIFF_SHORT,0,TIFF_SETGET_UINT16,TIFF_SETGET_UNDEFINED,FIELD_OJPEG_JPEGRESTARTINTERVAL,FALSE,FALSE,"JpegRestartInterval",NULL},
+};
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
 #include <setjmp.h>
-#include <stdio.h>
+#endif
+
+/* We undefine FAR to avoid conflict with JPEG definition */
+
 #ifdef FAR
-#undef FAR /* Undefine FAR to avoid conflict with JPEG definition */
+#undef FAR
 #endif
-#define JPEG_INTERNALS /* Include "jpegint.h" for "DSTATE_*" symbols */
-#define JPEG_CJPEG_DJPEG /* Include all Version 6B+ "jconfig.h" options */
-#undef INLINE
+
+/*
+  Libjpeg's jmorecfg.h defines INT16 and INT32, but only if XMD_H is
+  not defined.  Unfortunately, the MinGW and Borland compilers include
+  a typedef for INT32, which causes a conflict.  MSVC does not include
+  a conficting typedef given the headers which are included.
+*/
+#if defined(__BORLANDC__) || defined(__MINGW32__)
+# define XMD_H 1
+#endif
+
+/* Define "boolean" as unsigned char, not int, per Windows custom. */
+#if defined(__WIN32__) && !defined(__MINGW32__)
+# ifndef __RPCNDR_H__            /* don't conflict if rpcndr.h already read */
+   typedef unsigned char boolean;
+# endif
+# define HAVE_BOOLEAN            /* prevent jmorecfg.h from redefining it */
+#endif
+
 #include "jpeglib.h"
-#undef JPEG_CJPEG_DJPEG
-#undef JPEG_INTERNALS
+#include "jerror.h"
 
-/* Hack for files produced by Wang Imaging application on Microsoft Windows */
-extern void jpeg_reset_huff_decode(j_decompress_ptr);
+typedef struct jpeg_error_mgr jpeg_error_mgr;
+typedef struct jpeg_common_struct jpeg_common_struct;
+typedef struct jpeg_decompress_struct jpeg_decompress_struct;
+typedef struct jpeg_source_mgr jpeg_source_mgr;
 
-/* On some machines, it may be worthwhile to use "_setjmp()" or "sigsetjmp()"
-   instead of "setjmp()".  These macros make it easier:
-*/
-#define SETJMP(jbuf)setjmp(jbuf)
-#define LONGJMP(jbuf,code)longjmp(jbuf,code)
-#define JMP_BUF jmp_buf
+typedef enum {
+       osibsNotSetYet,
+       osibsJpegInterchangeFormat,
+       osibsStrile,
+       osibsEof
+} OJPEGStateInBufferSource;
+
+typedef enum {
+       ososSoi,
+       ososQTable0,ososQTable1,ososQTable2,ososQTable3,
+       ososDcTable0,ososDcTable1,ososDcTable2,ososDcTable3,
+       ososAcTable0,ososAcTable1,ososAcTable2,ososAcTable3,
+       ososDri,
+       ososSof,
+       ososSos,
+       ososCompressed,
+       ososRst,
+       ososEoi
+} OJPEGStateOutState;
+
+typedef struct {
+       TIFF* tif;
+       #ifndef LIBJPEG_ENCAP_EXTERNAL
+       JMP_BUF exit_jmpbuf;
+       #endif
+       TIFFVGetMethod vgetparent;
+       TIFFVSetMethod vsetparent;
+       TIFFPrintMethod printdir;
+       uint64 file_size;
+       uint32 image_width;
+       uint32 image_length;
+       uint32 strile_width;
+       uint32 strile_length;
+       uint32 strile_length_total;
+       uint8 samples_per_pixel;
+       uint8 plane_sample_offset;
+       uint8 samples_per_pixel_per_plane;
+       uint64 jpeg_interchange_format;
+       uint64 jpeg_interchange_format_length;
+       uint8 jpeg_proc;
+       uint8 subsamplingcorrect;
+       uint8 subsamplingcorrect_done;
+       uint8 subsampling_tag;
+       uint8 subsampling_hor;
+       uint8 subsampling_ver;
+       uint8 subsampling_force_desubsampling_inside_decompression;
+       uint8 qtable_offset_count;
+       uint8 dctable_offset_count;
+       uint8 actable_offset_count;
+       uint64 qtable_offset[3];
+       uint64 dctable_offset[3];
+       uint64 actable_offset[3];
+       uint8* qtable[4];
+       uint8* dctable[4];
+       uint8* actable[4];
+       uint16 restart_interval;
+       uint8 restart_index;
+       uint8 sof_log;
+       uint8 sof_marker_id;
+       uint32 sof_x;
+       uint32 sof_y;
+       uint8 sof_c[3];
+       uint8 sof_hv[3];
+       uint8 sof_tq[3];
+       uint8 sos_cs[3];
+       uint8 sos_tda[3];
+       struct {
+               uint8 log;
+               OJPEGStateInBufferSource in_buffer_source;
+               uint32 in_buffer_next_strile;
+               uint64 in_buffer_file_pos;
+               uint64 in_buffer_file_togo;
+       } sos_end[3];
+       uint8 readheader_done;
+       uint8 writeheader_done;
+       uint16 write_cursample;
+       uint32 write_curstrile;
+       uint8 libjpeg_session_active;
+       uint8 libjpeg_jpeg_query_style;
+       jpeg_error_mgr libjpeg_jpeg_error_mgr;
+       jpeg_decompress_struct libjpeg_jpeg_decompress_struct;
+       jpeg_source_mgr libjpeg_jpeg_source_mgr;
+       uint8 subsampling_convert_log;
+       uint32 subsampling_convert_ylinelen;
+       uint32 subsampling_convert_ylines;
+       uint32 subsampling_convert_clinelen;
+       uint32 subsampling_convert_clines;
+       uint32 subsampling_convert_ybuflen;
+       uint32 subsampling_convert_cbuflen;
+       uint32 subsampling_convert_ycbcrbuflen;
+       uint8* subsampling_convert_ycbcrbuf;
+       uint8* subsampling_convert_ybuf;
+       uint8* subsampling_convert_cbbuf;
+       uint8* subsampling_convert_crbuf;
+       uint32 subsampling_convert_ycbcrimagelen;
+       uint8** subsampling_convert_ycbcrimage;
+       uint32 subsampling_convert_clinelenout;
+       uint32 subsampling_convert_state;
+       uint32 bytes_per_line;   /* if the codec outputs subsampled data, a 'line' in bytes_per_line */
+       uint32 lines_per_strile; /* and lines_per_strile means subsampling_ver desubsampled rows     */
+       OJPEGStateInBufferSource in_buffer_source;
+       uint32 in_buffer_next_strile;
+       uint32 in_buffer_strile_count;
+       uint64 in_buffer_file_pos;
+       uint8 in_buffer_file_pos_log;
+       uint64 in_buffer_file_togo;
+       uint16 in_buffer_togo;
+       uint8* in_buffer_cur;
+       uint8 in_buffer[OJPEG_BUFFER];
+       OJPEGStateOutState out_state;
+       uint8 out_buffer[OJPEG_BUFFER];
+       uint8* skip_buffer;
+} OJPEGState;
+
+static int OJPEGVGetField(TIFF* tif, uint32 tag, va_list ap);
+static int OJPEGVSetField(TIFF* tif, uint32 tag, va_list ap);
+static void OJPEGPrintDir(TIFF* tif, FILE* fd, long flags);
+
+static int OJPEGFixupTags(TIFF* tif);
+static int OJPEGSetupDecode(TIFF* tif);
+static int OJPEGPreDecode(TIFF* tif, uint16 s);
+static int OJPEGPreDecodeSkipRaw(TIFF* tif);
+static int OJPEGPreDecodeSkipScanlines(TIFF* tif);
+static int OJPEGDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int OJPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc);
+static int OJPEGDecodeScanlines(TIFF* tif, uint8* buf, tmsize_t cc);
+static void OJPEGPostDecode(TIFF* tif, uint8* buf, tmsize_t cc);
+static int OJPEGSetupEncode(TIFF* tif);
+static int OJPEGPreEncode(TIFF* tif, uint16 s);
+static int OJPEGEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s);
+static int OJPEGPostEncode(TIFF* tif);
+static void OJPEGCleanup(TIFF* tif);
+
+static void OJPEGSubsamplingCorrect(TIFF* tif);
+static int OJPEGReadHeaderInfo(TIFF* tif);
+static int OJPEGReadSecondarySos(TIFF* tif, uint16 s);
+static int OJPEGWriteHeaderInfo(TIFF* tif);
+static void OJPEGLibjpegSessionAbort(TIFF* tif);
+
+static int OJPEGReadHeaderInfoSec(TIFF* tif);
+static int OJPEGReadHeaderInfoSecStreamDri(TIFF* tif);
+static int OJPEGReadHeaderInfoSecStreamDqt(TIFF* tif);
+static int OJPEGReadHeaderInfoSecStreamDht(TIFF* tif);
+static int OJPEGReadHeaderInfoSecStreamSof(TIFF* tif, uint8 marker_id);
+static int OJPEGReadHeaderInfoSecStreamSos(TIFF* tif);
+static int OJPEGReadHeaderInfoSecTablesQTable(TIFF* tif);
+static int OJPEGReadHeaderInfoSecTablesDcTable(TIFF* tif);
+static int OJPEGReadHeaderInfoSecTablesAcTable(TIFF* tif);
+
+static int OJPEGReadBufferFill(OJPEGState* sp);
+static int OJPEGReadByte(OJPEGState* sp, uint8* byte);
+static int OJPEGReadBytePeek(OJPEGState* sp, uint8* byte);
+static void OJPEGReadByteAdvance(OJPEGState* sp);
+static int OJPEGReadWord(OJPEGState* sp, uint16* word);
+static int OJPEGReadBlock(OJPEGState* sp, uint16 len, void* mem);
+static void OJPEGReadSkip(OJPEGState* sp, uint16 len);
+
+static int OJPEGWriteStream(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamSoi(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamQTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
+static void OJPEGWriteStreamDcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
+static void OJPEGWriteStreamAcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
+static void OJPEGWriteStreamDri(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamSof(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamSos(TIFF* tif, void** mem, uint32* len);
+static int OJPEGWriteStreamCompressed(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamRst(TIFF* tif, void** mem, uint32* len);
+static void OJPEGWriteStreamEoi(TIFF* tif, void** mem, uint32* len);
+
+#ifdef LIBJPEG_ENCAP_EXTERNAL
+extern int jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
+extern int jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image);
+extern int jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
+extern int jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines);
+extern int jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines);
+extern void jpeg_encap_unwind(TIFF* tif);
+#else
+static int jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* j);
+static int jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image);
+static int jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
+static int jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines);
+static int jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines);
+static void jpeg_encap_unwind(TIFF* tif);
+#endif
 
-#define TIFFTAG_WANG_PAGECONTROL 32934
+static void OJPEGLibjpegJpegErrorMgrOutputMessage(jpeg_common_struct* cinfo);
+static void OJPEGLibjpegJpegErrorMgrErrorExit(jpeg_common_struct* cinfo);
+static void OJPEGLibjpegJpegSourceMgrInitSource(jpeg_decompress_struct* cinfo);
+static boolean OJPEGLibjpegJpegSourceMgrFillInputBuffer(jpeg_decompress_struct* cinfo);
+static void OJPEGLibjpegJpegSourceMgrSkipInputData(jpeg_decompress_struct* cinfo, long num_bytes);
+static boolean OJPEGLibjpegJpegSourceMgrResyncToRestart(jpeg_decompress_struct* cinfo, int desired);
+static void OJPEGLibjpegJpegSourceMgrTermSource(jpeg_decompress_struct* cinfo);
 
-/* Bit-vector offsets for keeping track of TIFF records that we've parsed. */
+int
+TIFFInitOJPEG(TIFF* tif, int scheme)
+{
+       static const char module[]="TIFFInitOJPEG";
+       OJPEGState* sp;
+
+       assert(scheme==COMPRESSION_OJPEG);
+
+        /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, ojpegFields, TIFFArrayCount(ojpegFields))) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Merging Old JPEG codec-specific tags failed");
+               return 0;
+       }
 
-#define FIELD_JPEGPROC FIELD_CODEC
-#define FIELD_JPEGIFOFFSET (FIELD_CODEC+1)
-#define FIELD_JPEGIFBYTECOUNT (FIELD_CODEC+2)
-#define FIELD_JPEGRESTARTINTERVAL (FIELD_CODEC+3)
-#define FIELD_JPEGTABLES (FIELD_CODEC+4) /* New, post-6.0 JPEG-in-TIFF tag! */
-#define FIELD_JPEGLOSSLESSPREDICTORS (FIELD_CODEC+5)
-#define FIELD_JPEGPOINTTRANSFORM (FIELD_CODEC+6)
-#define FIELD_JPEGQTABLES (FIELD_CODEC+7)
-#define FIELD_JPEGDCTABLES (FIELD_CODEC+8)
-#define FIELD_JPEGACTABLES (FIELD_CODEC+9)
-#define FIELD_WANG_PAGECONTROL (FIELD_CODEC+10)
-#define FIELD_JPEGCOLORMODE (FIELD_CODEC+11)
+       /* state block */
+       sp=_TIFFmalloc(sizeof(OJPEGState));
+       if (sp==NULL)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"No space for OJPEG state block");
+               return(0);
+       }
+       _TIFFmemset(sp,0,sizeof(OJPEGState));
+       sp->tif=tif;
+       sp->jpeg_proc=1;
+       sp->subsampling_hor=2;
+       sp->subsampling_ver=2;
+       TIFFSetField(tif,TIFFTAG_YCBCRSUBSAMPLING,2,2);
+       /* tif codec methods */
+       tif->tif_fixuptags=OJPEGFixupTags;  
+       tif->tif_setupdecode=OJPEGSetupDecode;
+       tif->tif_predecode=OJPEGPreDecode;
+       tif->tif_postdecode=OJPEGPostDecode;  
+       tif->tif_decoderow=OJPEGDecode;  
+       tif->tif_decodestrip=OJPEGDecode;  
+       tif->tif_decodetile=OJPEGDecode;  
+       tif->tif_setupencode=OJPEGSetupEncode;
+       tif->tif_preencode=OJPEGPreEncode;
+       tif->tif_postencode=OJPEGPostEncode;
+       tif->tif_encoderow=OJPEGEncode;  
+       tif->tif_encodestrip=OJPEGEncode;  
+       tif->tif_encodetile=OJPEGEncode;  
+       tif->tif_cleanup=OJPEGCleanup;
+       tif->tif_data=(uint8*)sp;
+       /* tif tag methods */
+       sp->vgetparent=tif->tif_tagmethods.vgetfield;
+       tif->tif_tagmethods.vgetfield=OJPEGVGetField;
+       sp->vsetparent=tif->tif_tagmethods.vsetfield;
+       tif->tif_tagmethods.vsetfield=OJPEGVSetField;
+       sp->printdir=tif->tif_tagmethods.printdir;
+       tif->tif_tagmethods.printdir=OJPEGPrintDir;
+       /* Some OJPEG files don't have strip or tile offsets or bytecounts tags.
+          Some others do, but have totally meaningless or corrupt values
+          in these tags. In these cases, the JpegInterchangeFormat stream is
+          reliable. In any case, this decoder reads the compressed data itself,
+          from the most reliable locations, and we need to notify encapsulating
+          LibTiff not to read raw strips or tiles for us. */
+       tif->tif_flags|=TIFF_NOREADRAW;
+       return(1);
+}
 
-typedef struct jpeg_destination_mgr jpeg_destination_mgr;
-typedef struct jpeg_source_mgr jpeg_source_mgr;
-typedef struct jpeg_error_mgr jpeg_error_mgr;
+static int
+OJPEGVGetField(TIFF* tif, uint32 tag, va_list ap)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       switch(tag)
+       {
+               case TIFFTAG_JPEGIFOFFSET:
+                       *va_arg(ap,uint64*)=(uint64)sp->jpeg_interchange_format;
+                       break;
+               case TIFFTAG_JPEGIFBYTECOUNT:
+                       *va_arg(ap,uint64*)=(uint64)sp->jpeg_interchange_format_length;
+                       break;
+               case TIFFTAG_YCBCRSUBSAMPLING:
+                       if (sp->subsamplingcorrect_done==0)
+                               OJPEGSubsamplingCorrect(tif);
+                       *va_arg(ap,uint16*)=(uint16)sp->subsampling_hor;
+                       *va_arg(ap,uint16*)=(uint16)sp->subsampling_ver;
+                       break;
+               case TIFFTAG_JPEGQTABLES:
+                       *va_arg(ap,uint32*)=(uint32)sp->qtable_offset_count;
+                       *va_arg(ap,void**)=(void*)sp->qtable_offset; 
+                       break;
+               case TIFFTAG_JPEGDCTABLES:
+                       *va_arg(ap,uint32*)=(uint32)sp->dctable_offset_count;
+                       *va_arg(ap,void**)=(void*)sp->dctable_offset;  
+                       break;
+               case TIFFTAG_JPEGACTABLES:
+                       *va_arg(ap,uint32*)=(uint32)sp->actable_offset_count;
+                       *va_arg(ap,void**)=(void*)sp->actable_offset;
+                       break;
+               case TIFFTAG_JPEGPROC:
+                       *va_arg(ap,uint16*)=(uint16)sp->jpeg_proc;
+                       break;
+               case TIFFTAG_JPEGRESTARTINTERVAL:
+                       *va_arg(ap,uint16*)=sp->restart_interval;
+                       break;
+               default:
+                       return (*sp->vgetparent)(tif,tag,ap);
+       }
+       return (1);
+}
 
-/* State variable for each open TIFF file that uses "libjpeg" for JPEG
-   decompression.  (Note:  This file should NEVER perform JPEG compression
-   except in the manner implemented by the "tif_jpeg.c" file, elsewhere in this
-   library; see comments above.)  JPEG Library internal state is recorded in a
-   "jpeg_{de}compress_struct", while a "jpeg_common_struct" records a few items
-   common to both compression and expansion.  The "cinfo" field containing JPEG
-   Library state MUST be the 1st member of our own state variable, so that we
-   can safely "cast" pointers back and forth.
-*/
-typedef struct             /* This module's private, per-image state variable */
-  {
-    union         /* JPEG Library state variable; this MUST be our 1st field! */
-      {
-        struct jpeg_compress_struct c;
-        struct jpeg_decompress_struct d;
-        struct jpeg_common_struct comm;
-      } cinfo;
-    jpeg_error_mgr err;                         /* JPEG Library error manager */
-    JMP_BUF exit_jmpbuf;             /* ...for catching JPEG Library failures */
-#   ifdef never
-
- /* (The following two fields could be a "union", but they're small enough that
-    it's not worth the effort.)
- */
-    jpeg_destination_mgr dest;             /* Destination for compressed data */
-#   endif
-    jpeg_source_mgr src;                           /* Source of expanded data */
-    JSAMPARRAY ds_buffer[MAX_COMPONENTS]; /* ->Temporary downsampling buffers */
-    TIFF *tif;                        /* Reverse pointer, needed by some code */
-    TIFFVGetMethod vgetparent;                    /* "Super class" methods... */
-    TIFFVSetMethod vsetparent;
-    TIFFStripMethod defsparent;
-    TIFFTileMethod deftparent;
-    void *jpegtables;           /* ->"New" JPEG tables, if we synthesized any */
-    uint32 is_WANG,    /* <=> Wang Imaging for Microsoft Windows output file? */
-           jpegtables_length;   /* Length of "new" JPEG tables, if they exist */
-    tsize_t bytesperline;          /* No. of decompressed Bytes per scan line */
-    int jpegquality,                             /* Compression quality level */
-        jpegtablesmode,                          /* What to put in JPEGTables */
-        samplesperclump,
-        scancount;                           /* No. of scan lines accumulated */
-    J_COLOR_SPACE photometric;          /* IJG JPEG Library's photometry code */
-    unsigned char h_sampling,                          /* Luminance sampling factors */
-           v_sampling,
-           jpegcolormode;           /* Who performs RGB <-> YCbCr conversion? */
-                       /* JPEGCOLORMODE_RAW <=> TIFF Library or its client */
-                       /* JPEGCOLORMODE_RGB <=> JPEG Library               */
-    /* These fields are added to support TIFFGetField */
-    uint16 jpegproc;
-    uint32 jpegifoffset;
-    uint32 jpegifbytecount;
-    uint32 jpegrestartinterval;
-    void* jpeglosslesspredictors;
-    uint16 jpeglosslesspredictors_length;
-    void* jpegpointtransform;
-    uint32 jpegpointtransform_length;
-    void* jpegqtables;
-    uint32 jpegqtables_length;
-    void* jpegdctables;
-    uint32 jpegdctables_length;
-    void* jpegactables;
-    uint32 jpegactables_length;
-
-  } OJPEGState;
-#define OJState(tif)((OJPEGState*)(tif)->tif_data)
-
-static const TIFFFieldInfo ojpegFieldInfo[]=/* JPEG-specific TIFF-record tags */
-  {
-
- /* This is the current JPEG-in-TIFF metadata-encapsulation tag, and its
-    treatment in this file is idiosyncratic.  It should never appear in a
-    "source" image conforming to the TIFF Version 6.0 specification, so we
-    arrange to report an error if it appears.  But in order to support possible
-    future conversion of "old" JPEG-in-TIFF encapsulations to "new" ones, we
-    might wish to synthesize an equivalent value to be returned by the TIFF
-    Library's "getfield" method.  So, this table tells the TIFF Library to pass
-    these records to us in order to filter them below.
- */
-    {
-      TIFFTAG_JPEGTABLES            ,TIFF_VARIABLE2,TIFF_VARIABLE2,
-      TIFF_UNDEFINED,FIELD_JPEGTABLES            ,FALSE,TRUE ,"JPEGTables"
-    },
-
- /* These tags are defined by the TIFF Version 6.0 specification and are now
-    obsolete.  This module reads them from an old "source" image, but it never
-    writes them to a new "destination" image.
- */
-    {
-      TIFFTAG_JPEGPROC              ,1            ,1            ,
-      TIFF_SHORT    ,FIELD_JPEGPROC              ,FALSE,FALSE,"JPEGProc"
-    },
-    {
-      TIFFTAG_JPEGIFOFFSET          ,1            ,1            ,
-      TIFF_LONG     ,FIELD_JPEGIFOFFSET          ,FALSE,FALSE,"JPEGInterchangeFormat"
-    },
-    {
-      TIFFTAG_JPEGIFBYTECOUNT       ,1            ,1            ,
-      TIFF_LONG     ,FIELD_JPEGIFBYTECOUNT       ,FALSE,FALSE,"JPEGInterchangeFormatLength"
-    },
-    {
-      TIFFTAG_JPEGRESTARTINTERVAL   ,1            ,1            ,
-      TIFF_SHORT    ,FIELD_JPEGRESTARTINTERVAL   ,FALSE,FALSE,"JPEGRestartInterval"
-    },
-    {
-      TIFFTAG_JPEGLOSSLESSPREDICTORS,TIFF_VARIABLE,TIFF_VARIABLE,
-      TIFF_SHORT    ,FIELD_JPEGLOSSLESSPREDICTORS,FALSE,TRUE ,"JPEGLosslessPredictors"
-    },
-    {
-      TIFFTAG_JPEGPOINTTRANSFORM    ,TIFF_VARIABLE,TIFF_VARIABLE,
-      TIFF_SHORT    ,FIELD_JPEGPOINTTRANSFORM    ,FALSE,TRUE ,"JPEGPointTransforms"
-    },
-    {
-      TIFFTAG_JPEGQTABLES           ,TIFF_VARIABLE,TIFF_VARIABLE,
-      TIFF_LONG     ,FIELD_JPEGQTABLES           ,FALSE,TRUE ,"JPEGQTables"
-    },
-    {
-      TIFFTAG_JPEGDCTABLES          ,TIFF_VARIABLE,TIFF_VARIABLE,
-      TIFF_LONG     ,FIELD_JPEGDCTABLES          ,FALSE,TRUE ,"JPEGDCTables"
-    },
-    {
-      TIFFTAG_JPEGACTABLES          ,TIFF_VARIABLE,TIFF_VARIABLE,
-      TIFF_LONG     ,FIELD_JPEGACTABLES          ,FALSE,TRUE ,"JPEGACTables"
-    },
-    {
-      TIFFTAG_WANG_PAGECONTROL      ,TIFF_VARIABLE,1            ,
-      TIFF_LONG     ,FIELD_WANG_PAGECONTROL      ,FALSE,FALSE,"WANG PageControl"
-    },
-
- /* This is a pseudo tag intended for internal use only by the TIFF Library and
-    its clients, which should never appear in an input/output image file.  It
-    specifies whether the TIFF Library (or its client) should do YCbCr <-> RGB
-    color-space conversion (JPEGCOLORMODE_RAW <=> 0) or whether we should ask
-    the JPEG Library to do it (JPEGCOLORMODE_RGB <=> 1).
- */
-    {
-      TIFFTAG_JPEGCOLORMODE         ,0            ,0            ,
-      TIFF_ANY      ,FIELD_PSEUDO                ,FALSE,FALSE,"JPEGColorMode"
-    }
-  };
-static const char JPEGLib_name[]={"JPEG Library"},
-                  bad_bps[]={"%u BitsPerSample not allowed for JPEG"},
-                  bad_photometry[]={"PhotometricInterpretation %u not allowed for JPEG"},
-                  bad_subsampling[]={"invalid YCbCr subsampling factor(s)"},
-#                 ifdef never
-                  no_write_frac[]={"fractional scan line discarded"},
-#                 endif
-                  no_read_frac[]={"fractional scan line not read"},
-                  no_jtable_space[]={"No space for JPEGTables"};
-
-/* The following diagnostic subroutines interface with and replace default
-   subroutines in the JPEG Library.  Our basic strategy is to use "setjmp()"/
-   "longjmp()" in order to return control to the TIFF Library when the JPEG
-   library detects an error, and to use TIFF Library subroutines for displaying
-   diagnostic messages to a client application.
-*/
-static void
-TIFFojpeg_error_exit(register j_common_ptr cinfo)
+static int
+OJPEGVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
-    char buffer[JMSG_LENGTH_MAX];
-    int code = cinfo->err->msg_code;
-
-    if (((OJPEGState *)cinfo)->is_WANG) {
-       if (code == JERR_SOF_DUPLICATE || code == JERR_SOI_DUPLICATE)
-           return;         /* ignore it */
-    }
-
-    (*cinfo->err->format_message)(cinfo,buffer);
-    TIFFError(JPEGLib_name,buffer); /* Display error message */
-    jpeg_abort(cinfo); /* Clean up JPEG Library state */
-    LONGJMP(((OJPEGState *)cinfo)->exit_jmpbuf,1); /* Return to TIFF client */
+       static const char module[]="OJPEGVSetField";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint32 ma;
+       uint64* mb;
+       uint32 n;
+       switch(tag)
+       {
+               case TIFFTAG_JPEGIFOFFSET:
+                       sp->jpeg_interchange_format=(uint64)va_arg(ap,uint64);
+                       break;
+               case TIFFTAG_JPEGIFBYTECOUNT:
+                       sp->jpeg_interchange_format_length=(uint64)va_arg(ap,uint64);
+                       break;
+               case TIFFTAG_YCBCRSUBSAMPLING:
+                       sp->subsampling_tag=1;
+                       sp->subsampling_hor=(uint8)va_arg(ap,uint16_vap);
+                       sp->subsampling_ver=(uint8)va_arg(ap,uint16_vap);
+                       tif->tif_dir.td_ycbcrsubsampling[0]=sp->subsampling_hor;
+                       tif->tif_dir.td_ycbcrsubsampling[1]=sp->subsampling_ver;
+                       break;
+               case TIFFTAG_JPEGQTABLES:
+                       ma=(uint32)va_arg(ap,uint32);
+                       if (ma!=0)
+                       {
+                               if (ma>3)
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"JpegQTables tag has incorrect count");
+                                       return(0);
+                               }
+                               sp->qtable_offset_count=(uint8)ma;
+                               mb=(uint64*)va_arg(ap,uint64*);
+                               for (n=0; n<ma; n++)
+                                       sp->qtable_offset[n]=mb[n];
+                       }
+                       break;
+               case TIFFTAG_JPEGDCTABLES:
+                       ma=(uint32)va_arg(ap,uint32);
+                       if (ma!=0)
+                       {
+                               if (ma>3)
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"JpegDcTables tag has incorrect count");
+                                       return(0);
+                               }
+                               sp->dctable_offset_count=(uint8)ma;
+                               mb=(uint64*)va_arg(ap,uint64*);
+                               for (n=0; n<ma; n++)
+                                       sp->dctable_offset[n]=mb[n];
+                       }
+                       break;
+               case TIFFTAG_JPEGACTABLES:
+                       ma=(uint32)va_arg(ap,uint32);
+                       if (ma!=0)
+                       {
+                               if (ma>3)
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"JpegAcTables tag has incorrect count");
+                                       return(0);
+                               }
+                               sp->actable_offset_count=(uint8)ma;
+                               mb=(uint64*)va_arg(ap,uint64*);
+                               for (n=0; n<ma; n++)
+                                       sp->actable_offset[n]=mb[n];
+                       }
+                       break;
+               case TIFFTAG_JPEGPROC:
+                       sp->jpeg_proc=(uint8)va_arg(ap,uint16_vap);
+                       break;
+               case TIFFTAG_JPEGRESTARTINTERVAL:
+                       sp->restart_interval=(uint16)va_arg(ap,uint16_vap);
+                       break;
+               default:
+                       return (*sp->vsetparent)(tif,tag,ap);
+       }
+       TIFFSetFieldBit(tif,TIFFFieldWithTag(tif,tag)->field_bit);
+       tif->tif_flags|=TIFF_DIRTYDIRECT;
+       return(1);
 }
 
 static void
-TIFFojpeg_output_message(register j_common_ptr cinfo)
-  { char buffer[JMSG_LENGTH_MAX];
+OJPEGPrintDir(TIFF* tif, FILE* fd, long flags)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       (void)flags;
+       assert(sp!=NULL);
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGINTERCHANGEFORMAT))
+               fprintf(fd,"  JpegInterchangeFormat: " TIFF_UINT64_FORMAT "\n",(TIFF_UINT64_T)sp->jpeg_interchange_format);  
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH))
+               fprintf(fd,"  JpegInterchangeFormatLength: " TIFF_UINT64_FORMAT "\n",(TIFF_UINT64_T)sp->jpeg_interchange_format_length);  
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGQTABLES))
+       {
+               fprintf(fd,"  JpegQTables:");
+               for (m=0; m<sp->qtable_offset_count; m++)
+                       fprintf(fd," " TIFF_UINT64_FORMAT,(TIFF_UINT64_T)sp->qtable_offset[m]);
+               fprintf(fd,"\n");
+       }
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGDCTABLES))
+       {
+               fprintf(fd,"  JpegDcTables:");
+               for (m=0; m<sp->dctable_offset_count; m++)
+                       fprintf(fd," " TIFF_UINT64_FORMAT,(TIFF_UINT64_T)sp->dctable_offset[m]);
+               fprintf(fd,"\n");
+       }
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGACTABLES))
+       {
+               fprintf(fd,"  JpegAcTables:");
+               for (m=0; m<sp->actable_offset_count; m++)
+                       fprintf(fd," " TIFF_UINT64_FORMAT,(TIFF_UINT64_T)sp->actable_offset[m]);
+               fprintf(fd,"\n");
+       }
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGPROC))
+               fprintf(fd,"  JpegProc: %u\n",(unsigned int)sp->jpeg_proc);
+       if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGRESTARTINTERVAL))
+               fprintf(fd,"  JpegRestartInterval: %u\n",(unsigned int)sp->restart_interval);
+       if (sp->printdir)
+               (*sp->printdir)(tif, fd, flags);
+}
 
- /* This subroutine is invoked only for warning messages, since the JPEG
-    Library's "error_exit" method does its own thing and "trace_level" is never
-    set > 0.
- */
-    (*cinfo->err->format_message)(cinfo,buffer);
-    TIFFWarning(JPEGLib_name,buffer);
-  }
+static int
+OJPEGFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return(1);
+}
 
-/* The following subroutines, which also interface with the JPEG Library, exist
-   mainly in limit the side effects of "setjmp()" and convert JPEG normal/error
-   conditions into TIFF Library return codes.
-*/
-#define CALLJPEG(sp,fail,op)(SETJMP((sp)->exit_jmpbuf)?(fail):(op))
-#define CALLVJPEG(sp,op)CALLJPEG(sp,0,((op),1))
-#ifdef never
+static int
+OJPEGSetupDecode(TIFF* tif)
+{
+       static const char module[]="OJPEGSetupDecode";
+       TIFFWarningExt(tif->tif_clientdata,module,"Depreciated and troublesome old-style JPEG compression mode, please convert to new-style JPEG compression and notify vendor of writing software");
+       return(1);
+}
 
 static int
-TIFFojpeg_create_compress(register OJPEGState *sp)
-  {
-    sp->cinfo.c.err = jpeg_std_error(&sp->err); /* Initialize error handling */
-    sp->err.error_exit = TIFFojpeg_error_exit;
-    sp->err.output_message = TIFFojpeg_output_message;
-    return CALLVJPEG(sp,jpeg_create_compress(&sp->cinfo.c));
-  }
-
-/* The following subroutines comprise a JPEG Library "destination" data manager
-   by directing compressed data from the JPEG Library to a TIFF Library output
-   buffer.
-*/
-static void
-std_init_destination(register j_compress_ptr cinfo){} /* "Dummy" stub */
+OJPEGPreDecode(TIFF* tif, uint16 s)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint32 m;
+       if (sp->subsamplingcorrect_done==0)
+               OJPEGSubsamplingCorrect(tif);
+       if (sp->readheader_done==0)
+       {
+               if (OJPEGReadHeaderInfo(tif)==0)
+                       return(0);
+       }
+       if (sp->sos_end[s].log==0)
+       {
+               if (OJPEGReadSecondarySos(tif,s)==0)
+                       return(0);
+       }
+       if isTiled(tif)
+               m=tif->tif_curtile;
+       else
+               m=tif->tif_curstrip;
+       if ((sp->writeheader_done!=0) && ((sp->write_cursample!=s) || (sp->write_curstrile>m)))
+       {
+               if (sp->libjpeg_session_active!=0)
+                       OJPEGLibjpegSessionAbort(tif);
+               sp->writeheader_done=0;
+       }
+       if (sp->writeheader_done==0)
+       {
+               sp->plane_sample_offset=(uint8)s;
+               sp->write_cursample=s;
+               sp->write_curstrile=s*tif->tif_dir.td_stripsperimage;
+               if ((sp->in_buffer_file_pos_log==0) ||
+                   (sp->in_buffer_file_pos-sp->in_buffer_togo!=sp->sos_end[s].in_buffer_file_pos))
+               {
+                       sp->in_buffer_source=sp->sos_end[s].in_buffer_source;
+                       sp->in_buffer_next_strile=sp->sos_end[s].in_buffer_next_strile;
+                       sp->in_buffer_file_pos=sp->sos_end[s].in_buffer_file_pos;
+                       sp->in_buffer_file_pos_log=0;
+                       sp->in_buffer_file_togo=sp->sos_end[s].in_buffer_file_togo;
+                       sp->in_buffer_togo=0;
+                       sp->in_buffer_cur=0;
+               }
+               if (OJPEGWriteHeaderInfo(tif)==0)
+                       return(0);
+       }
+       while (sp->write_curstrile<m)          
+       {
+               if (sp->libjpeg_jpeg_query_style==0)
+               {
+                       if (OJPEGPreDecodeSkipRaw(tif)==0)
+                               return(0);
+               }
+               else
+               {
+                       if (OJPEGPreDecodeSkipScanlines(tif)==0)
+                               return(0);
+               }
+               sp->write_curstrile++;
+       }
+       return(1);
+}
 
-static boolean
-std_empty_output_buffer(register j_compress_ptr cinfo)
-  {
-#   define sp ((OJPEGState *)cinfo)
-    register TIFF *tif = sp->tif;
-
-    tif->tif_rawcc = tif->tif_rawdatasize; /* Entire buffer has been filled */
-    TIFFFlushData1(tif);
-    sp->dest.next_output_byte = (JOCTET *)tif->tif_rawdata;
-    sp->dest.free_in_buffer = (size_t)tif->tif_rawdatasize;
-    return TRUE;
-#   undef sp
-  }
+static int
+OJPEGPreDecodeSkipRaw(TIFF* tif)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint32 m;
+       m=sp->lines_per_strile;
+       if (sp->subsampling_convert_state!=0)
+       {
+               if (sp->subsampling_convert_clines-sp->subsampling_convert_state>=m)
+               {
+                       sp->subsampling_convert_state+=m;
+                       if (sp->subsampling_convert_state==sp->subsampling_convert_clines)
+                               sp->subsampling_convert_state=0;
+                       return(1);
+               }
+               m-=sp->subsampling_convert_clines-sp->subsampling_convert_state;
+               sp->subsampling_convert_state=0;
+       }
+       while (m>=sp->subsampling_convert_clines)
+       {
+               if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
+                       return(0);
+               m-=sp->subsampling_convert_clines;
+       }
+       if (m>0)
+       {
+               if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
+                       return(0);
+               sp->subsampling_convert_state=m;
+       }
+       return(1);
+}
 
-static void
-std_term_destination(register j_compress_ptr cinfo)
-  {
-#   define sp ((OJPEGState *)cinfo)
-    register TIFF *tif = sp->tif;
+static int
+OJPEGPreDecodeSkipScanlines(TIFF* tif)
+{
+       static const char module[]="OJPEGPreDecodeSkipScanlines";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint32 m;
+       if (sp->skip_buffer==NULL)
+       {
+               sp->skip_buffer=_TIFFmalloc(sp->bytes_per_line);
+               if (sp->skip_buffer==NULL)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       return(0);
+               }
+       }
+       for (m=0; m<sp->lines_per_strile; m++)
+       {
+               if (jpeg_read_scanlines_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),&sp->skip_buffer,1)==0)
+                       return(0);
+       }
+       return(1);
+}
+
+static int
+OJPEGDecode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       (void)s;
+       if (sp->libjpeg_jpeg_query_style==0)
+       {
+               if (OJPEGDecodeRaw(tif,buf,cc)==0)
+                       return(0);
+       }
+       else
+       {
+               if (OJPEGDecodeScanlines(tif,buf,cc)==0)
+                       return(0);
+       }
+       return(1);
+}
 
- /* NB: The TIFF Library does the final buffer flush. */
-    tif->tif_rawcp = (tidata_t)sp->dest.next_output_byte;
-    tif->tif_rawcc = tif->tif_rawdatasize - (tsize_t)sp->dest.free_in_buffer;
-#   undef sp
-  }
+static int
+OJPEGDecodeRaw(TIFF* tif, uint8* buf, tmsize_t cc)
+{
+       static const char module[]="OJPEGDecodeRaw";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8* m;
+       tmsize_t n;
+       uint8* oy;
+       uint8* ocb;
+       uint8* ocr;
+       uint8* p;
+       uint32 q;
+       uint8* r;
+       uint8 sx,sy;
+       if (cc%sp->bytes_per_line!=0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Fractional scanline not read");
+               return(0);
+       }
+       assert(cc>0);
+       m=buf;
+       n=cc;
+       do
+       {
+               if (sp->subsampling_convert_state==0)
+               {
+                       if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
+                               return(0);
+               }
+               oy=sp->subsampling_convert_ybuf+sp->subsampling_convert_state*sp->subsampling_ver*sp->subsampling_convert_ylinelen;
+               ocb=sp->subsampling_convert_cbbuf+sp->subsampling_convert_state*sp->subsampling_convert_clinelen;
+               ocr=sp->subsampling_convert_crbuf+sp->subsampling_convert_state*sp->subsampling_convert_clinelen;
+               p=m;
+               for (q=0; q<sp->subsampling_convert_clinelenout; q++)
+               {
+                       r=oy;
+                       for (sy=0; sy<sp->subsampling_ver; sy++)
+                       {
+                               for (sx=0; sx<sp->subsampling_hor; sx++)
+                                       *p++=*r++;
+                               r+=sp->subsampling_convert_ylinelen-sp->subsampling_hor;
+                       }
+                       oy+=sp->subsampling_hor;
+                       *p++=*ocb++;
+                       *p++=*ocr++;
+               }
+               sp->subsampling_convert_state++;
+               if (sp->subsampling_convert_state==sp->subsampling_convert_clines)
+                       sp->subsampling_convert_state=0;
+               m+=sp->bytes_per_line;
+               n-=sp->bytes_per_line;
+       } while(n>0);
+       return(1);
+}
 
-/* Alternate destination manager to output JPEGTables field: */
+static int
+OJPEGDecodeScanlines(TIFF* tif, uint8* buf, tmsize_t cc)
+{
+       static const char module[]="OJPEGDecodeScanlines";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8* m;
+       tmsize_t n;
+       if (cc%sp->bytes_per_line!=0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Fractional scanline not read");
+               return(0);
+       }
+       assert(cc>0);
+       m=buf;
+       n=cc;
+       do
+       {
+               if (jpeg_read_scanlines_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),&m,1)==0)
+                       return(0);
+               m+=sp->bytes_per_line;
+               n-=sp->bytes_per_line;
+       } while(n>0);
+       return(1);
+}
 
 static void
-tables_init_destination(register j_compress_ptr cinfo)
-  {
-#   define sp ((OJPEGState *)cinfo)
- /* The "jpegtables_length" field is the allocated buffer size while building */
-    sp->dest.next_output_byte = (JOCTET *)sp->jpegtables;
-    sp->dest.free_in_buffer = (size_t)sp->jpegtables_length;
-#   undef sp
-  }
+OJPEGPostDecode(TIFF* tif, uint8* buf, tmsize_t cc)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       (void)buf;
+       (void)cc;
+       sp->write_curstrile++;
+       if (sp->write_curstrile%tif->tif_dir.td_stripsperimage==0)  
+       {
+               assert(sp->libjpeg_session_active!=0);
+               OJPEGLibjpegSessionAbort(tif);
+               sp->writeheader_done=0;
+       }
+}
 
-static boolean
-tables_empty_output_buffer(register j_compress_ptr cinfo)
-  { void *newbuf;
-#   define sp ((OJPEGState *)cinfo)
-
- /* The entire buffer has been filled, so enlarge it by 1000 bytes. */
-    if (!( newbuf = _TIFFrealloc( (tdata_t)sp->jpegtables
-                                , (tsize_t)(sp->jpegtables_length + 1000)
-                                )
-         )
-       ) ERREXIT1(cinfo,JERR_OUT_OF_MEMORY,100);
-    sp->dest.next_output_byte = (JOCTET *)newbuf + sp->jpegtables_length;
-    sp->dest.free_in_buffer = (size_t)1000;
-    sp->jpegtables = newbuf;
-    sp->jpegtables_length += 1000;
-    return TRUE;
-#   undef sp
-  }
+static int
+OJPEGSetupEncode(TIFF* tif)
+{
+       static const char module[]="OJPEGSetupEncode";
+       TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
+       return(0);
+}
 
-static void
-tables_term_destination(register j_compress_ptr cinfo)
-  {
-#   define sp ((OJPEGState *)cinfo)
- /* Set tables length to no. of Bytes actually emitted. */
-    sp->jpegtables_length -= sp->dest.free_in_buffer;
-#   undef sp
-  }
-
-/*ARGSUSED*/ static int
-TIFFojpeg_tables_dest(register OJPEGState *sp, TIFF *tif)
-  {
-
- /* Allocate a working buffer for building tables.  The initial size is 1000
-    Bytes, which is usually adequate.
- */
-    if (sp->jpegtables) _TIFFfree(sp->jpegtables);
-    if (!(sp->jpegtables = (void*)
-                           _TIFFmalloc((tsize_t)(sp->jpegtables_length = 1000))
-         )
-       )
-      {
-        sp->jpegtables_length = 0;
-        TIFFError("TIFFojpeg_tables_dest",no_jtable_space);
-        return 0;
-      };
-    sp->cinfo.c.dest = &sp->dest;
-    sp->dest.init_destination = tables_init_destination;
-    sp->dest.empty_output_buffer = tables_empty_output_buffer;
-    sp->dest.term_destination = tables_term_destination;
-    return 1;
-  }
-#else /* well, hardly ever */
+static int
+OJPEGPreEncode(TIFF* tif, uint16 s)
+{
+       static const char module[]="OJPEGPreEncode";
+       (void)s;
+       TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
+       return(0);
+}
 
 static int
-_notSupported(register TIFF *tif)
-  { const TIFFCodec *c = TIFFFindCODEC(tif->tif_dir.td_compression);
+OJPEGEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
+{
+       static const char module[]="OJPEGEncode";
+       (void)buf;
+       (void)cc;
+       (void)s;
+       TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
+       return(0);
+}
 
-    TIFFError(tif->tif_name,"%s compression not supported",c->name);
-    return 0;
-  }
-#endif /* never */
+static int
+OJPEGPostEncode(TIFF* tif)
+{
+       static const char module[]="OJPEGPostEncode";
+       TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
+       return(0);
+}
 
-/* The following subroutines comprise a JPEG Library "source" data manager by
-   by directing compressed data to the JPEG Library from a TIFF Library input
-   buffer.
-*/
 static void
-std_init_source(register j_decompress_ptr cinfo)
-  {
-#   define sp ((OJPEGState *)cinfo)
-    register TIFF *tif = sp->tif;
-
-    if (sp->src.bytes_in_buffer == 0)
-      {
-        sp->src.next_input_byte = (const JOCTET *)tif->tif_rawdata;
-        sp->src.bytes_in_buffer = (size_t)tif->tif_rawcc;
-      };
-#   undef sp
-  }
+OJPEGCleanup(TIFF* tif)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       if (sp!=0)
+       {
+               tif->tif_tagmethods.vgetfield=sp->vgetparent;
+               tif->tif_tagmethods.vsetfield=sp->vsetparent;
+               tif->tif_tagmethods.printdir=sp->printdir;
+               if (sp->qtable[0]!=0)
+                       _TIFFfree(sp->qtable[0]);
+               if (sp->qtable[1]!=0)
+                       _TIFFfree(sp->qtable[1]);
+               if (sp->qtable[2]!=0)
+                       _TIFFfree(sp->qtable[2]);
+               if (sp->qtable[3]!=0)
+                       _TIFFfree(sp->qtable[3]);
+               if (sp->dctable[0]!=0)
+                       _TIFFfree(sp->dctable[0]);
+               if (sp->dctable[1]!=0)
+                       _TIFFfree(sp->dctable[1]);
+               if (sp->dctable[2]!=0)
+                       _TIFFfree(sp->dctable[2]);
+               if (sp->dctable[3]!=0)
+                       _TIFFfree(sp->dctable[3]);
+               if (sp->actable[0]!=0)
+                       _TIFFfree(sp->actable[0]);
+               if (sp->actable[1]!=0)
+                       _TIFFfree(sp->actable[1]);
+               if (sp->actable[2]!=0)
+                       _TIFFfree(sp->actable[2]);
+               if (sp->actable[3]!=0)
+                       _TIFFfree(sp->actable[3]);
+               if (sp->libjpeg_session_active!=0)
+                       OJPEGLibjpegSessionAbort(tif);
+               if (sp->subsampling_convert_ycbcrbuf!=0)
+                       _TIFFfree(sp->subsampling_convert_ycbcrbuf);
+               if (sp->subsampling_convert_ycbcrimage!=0)
+                       _TIFFfree(sp->subsampling_convert_ycbcrimage);
+               if (sp->skip_buffer!=0)
+                       _TIFFfree(sp->skip_buffer);
+               _TIFFfree(sp);
+               tif->tif_data=NULL;
+               _TIFFSetDefaultCompressionState(tif);
+       }
+}
 
-static boolean
-std_fill_input_buffer(register j_decompress_ptr cinfo)
-  { static const JOCTET dummy_EOI[2]={0xFF,JPEG_EOI};
-#   define sp ((OJPEGState *)cinfo)
+static void
+OJPEGSubsamplingCorrect(TIFF* tif)
+{
+       static const char module[]="OJPEGSubsamplingCorrect";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 mh;
+       uint8 mv;
+        _TIFFFillStriles( tif );
+        
+       assert(sp->subsamplingcorrect_done==0);
+       if ((tif->tif_dir.td_samplesperpixel!=3) || ((tif->tif_dir.td_photometric!=PHOTOMETRIC_YCBCR) &&
+           (tif->tif_dir.td_photometric!=PHOTOMETRIC_ITULAB)))
+       {
+               if (sp->subsampling_tag!=0)
+                       TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag not appropriate for this Photometric and/or SamplesPerPixel");
+               sp->subsampling_hor=1;
+               sp->subsampling_ver=1;
+               sp->subsampling_force_desubsampling_inside_decompression=0;
+       }
+       else
+       {
+               sp->subsamplingcorrect_done=1;
+               mh=sp->subsampling_hor;
+               mv=sp->subsampling_ver;
+               sp->subsamplingcorrect=1;
+               OJPEGReadHeaderInfoSec(tif);
+               if (sp->subsampling_force_desubsampling_inside_decompression!=0)
+               {
+                       sp->subsampling_hor=1;
+                       sp->subsampling_ver=1;
+               }
+               sp->subsamplingcorrect=0;
+               if (((sp->subsampling_hor!=mh) || (sp->subsampling_ver!=mv)) && (sp->subsampling_force_desubsampling_inside_decompression==0))
+               {
+                       if (sp->subsampling_tag==0)
+                               TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag is not set, yet subsampling inside JPEG data [%d,%d] does not match default values [2,2]; assuming subsampling inside JPEG data is correct",sp->subsampling_hor,sp->subsampling_ver);
+                       else
+                               TIFFWarningExt(tif->tif_clientdata,module,"Subsampling inside JPEG data [%d,%d] does not match subsampling tag values [%d,%d]; assuming subsampling inside JPEG data is correct",sp->subsampling_hor,sp->subsampling_ver,mh,mv);
+               }
+               if (sp->subsampling_force_desubsampling_inside_decompression!=0)
+               {
+                       if (sp->subsampling_tag==0)
+                               TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag is not set, yet subsampling inside JPEG data does not match default values [2,2] (nor any other values allowed in TIFF); assuming subsampling inside JPEG data is correct and desubsampling inside JPEG decompression");
+                       else
+                               TIFFWarningExt(tif->tif_clientdata,module,"Subsampling inside JPEG data does not match subsampling tag values [%d,%d] (nor any other values allowed in TIFF); assuming subsampling inside JPEG data is correct and desubsampling inside JPEG decompression",mh,mv);
+               }
+               if (sp->subsampling_force_desubsampling_inside_decompression==0)
+               {
+                       if (sp->subsampling_hor<sp->subsampling_ver)
+                               TIFFWarningExt(tif->tif_clientdata,module,"Subsampling values [%d,%d] are not allowed in TIFF",sp->subsampling_hor,sp->subsampling_ver);
+               }
+       }
+       sp->subsamplingcorrect_done=1;
+}
 
- /* Control should never get here, since an entire strip/tile is read into
-    memory before the decompressor is called; thus, data should have been
-    supplied by the "init_source" method.  ...But, sometimes things fail.
- */
-    WARNMS(cinfo,JWRN_JPEG_EOF);
-    sp->src.next_input_byte = dummy_EOI; /* Insert a fake EOI marker */
-    sp->src.bytes_in_buffer = sizeof dummy_EOI;
-    return TRUE;
-#   undef sp
-  }
+static int
+OJPEGReadHeaderInfo(TIFF* tif)
+{
+       static const char module[]="OJPEGReadHeaderInfo";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(sp->readheader_done==0);
+       sp->image_width=tif->tif_dir.td_imagewidth;
+       sp->image_length=tif->tif_dir.td_imagelength;
+       if isTiled(tif)
+       {
+               sp->strile_width=tif->tif_dir.td_tilewidth;
+               sp->strile_length=tif->tif_dir.td_tilelength;
+               sp->strile_length_total=((sp->image_length+sp->strile_length-1)/sp->strile_length)*sp->strile_length;
+       }
+       else
+       {
+               sp->strile_width=sp->image_width;
+               sp->strile_length=tif->tif_dir.td_rowsperstrip;
+               sp->strile_length_total=sp->image_length;
+       }
+       if (tif->tif_dir.td_samplesperpixel==1)
+       {
+               sp->samples_per_pixel=1;
+               sp->plane_sample_offset=0;
+               sp->samples_per_pixel_per_plane=sp->samples_per_pixel;
+               sp->subsampling_hor=1;
+               sp->subsampling_ver=1;
+       }
+       else
+       {
+               if (tif->tif_dir.td_samplesperpixel!=3)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"SamplesPerPixel %d not supported for this compression scheme",sp->samples_per_pixel);
+                       return(0);
+               }
+               sp->samples_per_pixel=3;
+               sp->plane_sample_offset=0;
+               if (tif->tif_dir.td_planarconfig==PLANARCONFIG_CONTIG)
+                       sp->samples_per_pixel_per_plane=3;
+               else
+                       sp->samples_per_pixel_per_plane=1;
+       }
+       if (sp->strile_length<sp->image_length)
+       {
+               if (sp->strile_length%(sp->subsampling_ver*8)!=0)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Incompatible vertical subsampling and image strip/tile length");
+                       return(0);
+               }
+               sp->restart_interval=((sp->strile_width+sp->subsampling_hor*8-1)/(sp->subsampling_hor*8))*(sp->strile_length/(sp->subsampling_ver*8));
+       }
+       if (OJPEGReadHeaderInfoSec(tif)==0)
+               return(0);
+       sp->sos_end[0].log=1;
+       sp->sos_end[0].in_buffer_source=sp->in_buffer_source;
+       sp->sos_end[0].in_buffer_next_strile=sp->in_buffer_next_strile;
+       sp->sos_end[0].in_buffer_file_pos=sp->in_buffer_file_pos-sp->in_buffer_togo;
+       sp->sos_end[0].in_buffer_file_togo=sp->in_buffer_file_togo+sp->in_buffer_togo; 
+       sp->readheader_done=1;
+       return(1);
+}
+
+static int
+OJPEGReadSecondarySos(TIFF* tif, uint16 s)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       assert(s>0);
+       assert(s<3);
+       assert(sp->sos_end[0].log!=0);
+       assert(sp->sos_end[s].log==0);
+       sp->plane_sample_offset=s-1;
+       while(sp->sos_end[sp->plane_sample_offset].log==0)
+               sp->plane_sample_offset--;
+       sp->in_buffer_source=sp->sos_end[sp->plane_sample_offset].in_buffer_source;
+       sp->in_buffer_next_strile=sp->sos_end[sp->plane_sample_offset].in_buffer_next_strile;
+       sp->in_buffer_file_pos=sp->sos_end[sp->plane_sample_offset].in_buffer_file_pos;
+       sp->in_buffer_file_pos_log=0;
+       sp->in_buffer_file_togo=sp->sos_end[sp->plane_sample_offset].in_buffer_file_togo;
+       sp->in_buffer_togo=0;
+       sp->in_buffer_cur=0;
+       while(sp->plane_sample_offset<s)
+       {
+               do
+               {
+                       if (OJPEGReadByte(sp,&m)==0)
+                               return(0);
+                       if (m==255)
+                       {
+                               do
+                               {
+                                       if (OJPEGReadByte(sp,&m)==0)
+                                               return(0);
+                                       if (m!=255)
+                                               break;
+                               } while(1);
+                               if (m==JPEG_MARKER_SOS)
+                                       break;
+                       }
+               } while(1);
+               sp->plane_sample_offset++;
+               if (OJPEGReadHeaderInfoSecStreamSos(tif)==0)
+                       return(0);
+               sp->sos_end[sp->plane_sample_offset].log=1;
+               sp->sos_end[sp->plane_sample_offset].in_buffer_source=sp->in_buffer_source;
+               sp->sos_end[sp->plane_sample_offset].in_buffer_next_strile=sp->in_buffer_next_strile;
+               sp->sos_end[sp->plane_sample_offset].in_buffer_file_pos=sp->in_buffer_file_pos-sp->in_buffer_togo;
+               sp->sos_end[sp->plane_sample_offset].in_buffer_file_togo=sp->in_buffer_file_togo+sp->in_buffer_togo;
+       }
+       return(1);
+}
+
+static int
+OJPEGWriteHeaderInfo(TIFF* tif)
+{
+       static const char module[]="OJPEGWriteHeaderInfo";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8** m;
+       uint32 n;
+       /* if a previous attempt failed, don't try again */
+       if (sp->libjpeg_session_active != 0) 
+               return 0;
+       sp->out_state=ososSoi;
+       sp->restart_index=0;
+       jpeg_std_error(&(sp->libjpeg_jpeg_error_mgr));
+       sp->libjpeg_jpeg_error_mgr.output_message=OJPEGLibjpegJpegErrorMgrOutputMessage;
+       sp->libjpeg_jpeg_error_mgr.error_exit=OJPEGLibjpegJpegErrorMgrErrorExit;
+       sp->libjpeg_jpeg_decompress_struct.err=&(sp->libjpeg_jpeg_error_mgr);
+       sp->libjpeg_jpeg_decompress_struct.client_data=(void*)tif;
+       if (jpeg_create_decompress_encap(sp,&(sp->libjpeg_jpeg_decompress_struct))==0)
+               return(0);
+       sp->libjpeg_session_active=1;
+       sp->libjpeg_jpeg_source_mgr.bytes_in_buffer=0;
+       sp->libjpeg_jpeg_source_mgr.init_source=OJPEGLibjpegJpegSourceMgrInitSource;
+       sp->libjpeg_jpeg_source_mgr.fill_input_buffer=OJPEGLibjpegJpegSourceMgrFillInputBuffer;
+       sp->libjpeg_jpeg_source_mgr.skip_input_data=OJPEGLibjpegJpegSourceMgrSkipInputData;
+       sp->libjpeg_jpeg_source_mgr.resync_to_restart=OJPEGLibjpegJpegSourceMgrResyncToRestart;
+       sp->libjpeg_jpeg_source_mgr.term_source=OJPEGLibjpegJpegSourceMgrTermSource;
+       sp->libjpeg_jpeg_decompress_struct.src=&(sp->libjpeg_jpeg_source_mgr);
+       if (jpeg_read_header_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),1)==0)
+               return(0);
+       if ((sp->subsampling_force_desubsampling_inside_decompression==0) && (sp->samples_per_pixel_per_plane>1))
+       {
+               sp->libjpeg_jpeg_decompress_struct.raw_data_out=1;
+#if JPEG_LIB_VERSION >= 70
+               sp->libjpeg_jpeg_decompress_struct.do_fancy_upsampling=FALSE;
+#endif
+               sp->libjpeg_jpeg_query_style=0;
+               if (sp->subsampling_convert_log==0)
+               {
+                       assert(sp->subsampling_convert_ycbcrbuf==0);
+                       assert(sp->subsampling_convert_ycbcrimage==0);
+                       sp->subsampling_convert_ylinelen=((sp->strile_width+sp->subsampling_hor*8-1)/(sp->subsampling_hor*8)*sp->subsampling_hor*8);
+                       sp->subsampling_convert_ylines=sp->subsampling_ver*8;
+                       sp->subsampling_convert_clinelen=sp->subsampling_convert_ylinelen/sp->subsampling_hor;
+                       sp->subsampling_convert_clines=8;
+                       sp->subsampling_convert_ybuflen=sp->subsampling_convert_ylinelen*sp->subsampling_convert_ylines;
+                       sp->subsampling_convert_cbuflen=sp->subsampling_convert_clinelen*sp->subsampling_convert_clines;
+                       sp->subsampling_convert_ycbcrbuflen=sp->subsampling_convert_ybuflen+2*sp->subsampling_convert_cbuflen;
+                       sp->subsampling_convert_ycbcrbuf=_TIFFmalloc(sp->subsampling_convert_ycbcrbuflen);
+                       if (sp->subsampling_convert_ycbcrbuf==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       sp->subsampling_convert_ybuf=sp->subsampling_convert_ycbcrbuf;
+                       sp->subsampling_convert_cbbuf=sp->subsampling_convert_ybuf+sp->subsampling_convert_ybuflen;
+                       sp->subsampling_convert_crbuf=sp->subsampling_convert_cbbuf+sp->subsampling_convert_cbuflen;
+                       sp->subsampling_convert_ycbcrimagelen=3+sp->subsampling_convert_ylines+2*sp->subsampling_convert_clines;
+                       sp->subsampling_convert_ycbcrimage=_TIFFmalloc(sp->subsampling_convert_ycbcrimagelen*sizeof(uint8*));
+                       if (sp->subsampling_convert_ycbcrimage==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       m=sp->subsampling_convert_ycbcrimage;
+                       *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3);
+                       *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3+sp->subsampling_convert_ylines);
+                       *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3+sp->subsampling_convert_ylines+sp->subsampling_convert_clines);
+                       for (n=0; n<sp->subsampling_convert_ylines; n++)
+                               *m++=sp->subsampling_convert_ybuf+n*sp->subsampling_convert_ylinelen;
+                       for (n=0; n<sp->subsampling_convert_clines; n++)
+                               *m++=sp->subsampling_convert_cbbuf+n*sp->subsampling_convert_clinelen;
+                       for (n=0; n<sp->subsampling_convert_clines; n++)
+                               *m++=sp->subsampling_convert_crbuf+n*sp->subsampling_convert_clinelen;
+                       sp->subsampling_convert_clinelenout=((sp->strile_width+sp->subsampling_hor-1)/sp->subsampling_hor);
+                       sp->subsampling_convert_state=0;
+                       sp->bytes_per_line=sp->subsampling_convert_clinelenout*(sp->subsampling_ver*sp->subsampling_hor+2);
+                       sp->lines_per_strile=((sp->strile_length+sp->subsampling_ver-1)/sp->subsampling_ver);
+                       sp->subsampling_convert_log=1;
+               }
+       }
+       else
+       {
+               sp->libjpeg_jpeg_decompress_struct.jpeg_color_space=JCS_UNKNOWN;
+               sp->libjpeg_jpeg_decompress_struct.out_color_space=JCS_UNKNOWN;
+               sp->libjpeg_jpeg_query_style=1;
+               sp->bytes_per_line=sp->samples_per_pixel_per_plane*sp->strile_width;
+               sp->lines_per_strile=sp->strile_length;
+       }
+       if (jpeg_start_decompress_encap(sp,&(sp->libjpeg_jpeg_decompress_struct))==0)
+               return(0);
+       sp->writeheader_done=1;
+       return(1);
+}
 
 static void
-std_skip_input_data(register j_decompress_ptr cinfo, long num_bytes)
-  {
-#   define sp ((OJPEGState *)cinfo)
-
-    if (num_bytes > 0)
-    {
-      if (num_bytes > (long)sp->src.bytes_in_buffer) /* oops: buffer overrun */
-        (void)std_fill_input_buffer(cinfo);
-      else
-        {
-          sp->src.next_input_byte += (size_t)num_bytes;
-          sp->src.bytes_in_buffer -= (size_t)num_bytes;
-        }
-    }
-#   undef sp
-  }
-
-/*ARGSUSED*/ static void
-std_term_source(register j_decompress_ptr cinfo){} /* "Dummy" stub */
-
-/* Allocate temporary I/O buffers for downsampled data, using values computed in
-   "jpeg_start_{de}compress()".  We use the JPEG Library's allocator so that
-   buffers will be released automatically when done with a strip/tile.  This is
-   also a handy place to compute samplesperclump, bytesperline, etc.
-*/
+OJPEGLibjpegSessionAbort(TIFF* tif)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(sp->libjpeg_session_active!=0);
+       jpeg_destroy((jpeg_common_struct*)(&(sp->libjpeg_jpeg_decompress_struct)));
+       sp->libjpeg_session_active=0;
+}
+
 static int
-alloc_downsampled_buffers(TIFF *tif,jpeg_component_info *comp_info,
-                          int num_components)
-  { register OJPEGState *sp = OJState(tif);
-
-    sp->samplesperclump = 0;
-    if (num_components > 0)
-      { tsize_t size = sp->cinfo.comm.is_decompressor
-#                    ifdef D_LOSSLESS_SUPPORTED
-                     ? sp->cinfo.d.min_codec_data_unit
-#                    else
-                     ? DCTSIZE
-#                    endif
-#                    ifdef C_LOSSLESS_SUPPORTED
-                     : sp->cinfo.c.data_unit;
-#                    else
-                     : DCTSIZE;
-#                    endif
-        int ci = 0;
-        register jpeg_component_info *compptr = comp_info;
-
-        do
-          { JSAMPARRAY buf;
-
-            sp->samplesperclump +=
-              compptr->h_samp_factor * compptr->v_samp_factor;
-#           if defined(C_LOSSLESS_SUPPORTED) || defined(D_LOSSLESS_SUPPORTED)
-            if (!(buf = CALLJPEG(sp,0,(*sp->cinfo.comm.mem->alloc_sarray)(&sp->cinfo.comm,JPOOL_IMAGE,compptr->width_in_data_units*size,compptr->v_samp_factor*size))))
-#           else
-            if (!(buf = CALLJPEG(sp,0,(*sp->cinfo.comm.mem->alloc_sarray)(&sp->cinfo.comm,JPOOL_IMAGE,compptr->width_in_blocks*size,compptr->v_samp_factor*size))))
-#           endif
-              return 0;
-            sp->ds_buffer[ci] = buf;
-          }
-        while (++compptr,++ci < num_components);
-      };
-    return 1;
-  }
-#ifdef never
-
-/* JPEG Encoding begins here. */
-
-/*ARGSUSED*/ static int
-OJPEGEncode(register TIFF *tif,tidata_t buf,tsize_t cc,tsample_t s)
-  { tsize_t rows;                          /* No. of unprocessed rows in file */
-    register OJPEGState *sp = OJState(tif);
-
- /* Encode a chunk of pixels, where returned data is NOT down-sampled (the
-    standard case).  The data is expected to be written in scan-line multiples.
- */
-    if (cc % sp->bytesperline) TIFFWarning(tif->tif_name,no_write_frac);
-    if ( (cc /= bytesperline)      /* No. of complete rows in caller's buffer */
-       > (rows = sp->cinfo.c.image_height - sp->cinfo.c.next_scanline)
-       ) cc = rows;
-    while (--cc >= 0)
-      {
-        if (   CALLJPEG(sp,-1,jpeg_write_scanlines(&sp->cinfo.c,(JSAMPARRAY)&buf,1))
-            != 1
-           ) return 0;
-        ++tif->tif_row;
-        buf += sp->bytesperline;
-      };
-    return 1;
-  }
-
-/*ARGSUSED*/ static int
-OJPEGEncodeRaw(register TIFF *tif,tidata_t buf,tsize_t cc,tsample_t s)
-  { tsize_t rows;                          /* No. of unprocessed rows in file */
-    JDIMENSION lines_per_MCU, size;
-    register OJPEGState *sp = OJState(tif);
-
- /* Encode a chunk of pixels, where returned data is down-sampled as per the
-    sampling factors.  The data is expected to be written in scan-line
-    multiples.
- */
-    cc /= sp->bytesperline;
-    if (cc % sp->bytesperline) TIFFWarning(tif->tif_name,no_write_frac);
-    if ( (cc /= bytesperline)      /* No. of complete rows in caller's buffer */
-       > (rows = sp->cinfo.c.image_height - sp->cinfo.c.next_scanline)
-       ) cc = rows;
-#   ifdef C_LOSSLESS_SUPPORTED
-    lines_per_MCU = sp->cinfo.c.max_samp_factor*(size = sp->cinfo.d.data_unit);
-#   else
-    lines_per_MCU = sp->cinfo.c.max_samp_factor*(size = DCTSIZE);
-#   endif
-    while (--cc >= 0)
-      { int ci = 0, clumpoffset = 0;
-        register jpeg_component_info *compptr = sp->cinfo.c.comp_info;
-
-     /* The fastest way to separate the data is to make 1 pass over the scan
-        line for each row of each component.
-     */
-        do
-          { int ypos = 0;
-
-            do
-              { int padding;
-                register JSAMPLE *inptr = (JSAMPLE*)buf + clumpoffset,
-                                 *outptr =
-                  sp->ds_buffer[ci][sp->scancount*compptr->v_samp_factor+ypos];
-             /* Cb,Cr both have sampling factors 1, so this is correct */
-                register int clumps_per_line =
-                  sp->cinfo.c.comp_info[1].downsampled_width,
-                             xpos;
-
-                padding = (int)
-#                         ifdef C_LOSSLESS_SUPPORTED
-                          ( compptr->width_in_data_units * size
-#                         else
-                          ( compptr->width_in_blocks * size
-#                         endif
-                          - clumps_per_line * compptr->h_samp_factor
-                          );
-                if (compptr->h_samp_factor == 1) /* Cb & Cr fast path */
-                  do *outptr++ = *inptr;
-                  while ((inptr += sp->samplesperclump),--clumps_per_line > 0);
-                else /* general case */
-                  do
-                    {
-                      xpos = 0;
-                      do *outptr++ = inptr[xpos];
-                      while (++xpos < compptr->h_samp_factor);
-                    }
-                  while ((inptr += sp->samplesperclump),--clumps_per_line > 0);
-                xpos = 0; /* Pad each scan line as needed */
-                do outptr[0] = outptr[-1]; while (++outptr,++xpos < padding);
-                clumpoffset += compptr->h_samp_factor;
-              }
-            while (++ypos < compptr->v_samp_factor);
-          }
-        while (++compptr,++ci < sp->cinfo.c.num_components);
-        if (++sp->scancount >= size)
-          {
-            if (   CALLJPEG(sp,-1,jpeg_write_raw_data(&sp->cinfo.c,sp->ds_buffer,lines_per_MCU))
-                != lines_per_MCU
-               ) return 0;
-            sp->scancount = 0;
-          };
-        ++tif->tif_row++
-        buf += sp->bytesperline;
-      };
-    return 1;
-  }
+OJPEGReadHeaderInfoSec(TIFF* tif)
+{
+       static const char module[]="OJPEGReadHeaderInfoSec";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       uint16 n;
+       uint8 o;
+       if (sp->file_size==0)
+               sp->file_size=TIFFGetFileSize(tif);
+       if (sp->jpeg_interchange_format!=0)
+       {
+               if (sp->jpeg_interchange_format>=sp->file_size)
+               {
+                       sp->jpeg_interchange_format=0;
+                       sp->jpeg_interchange_format_length=0;
+               }
+               else
+               {
+                       if ((sp->jpeg_interchange_format_length==0) || (sp->jpeg_interchange_format+sp->jpeg_interchange_format_length>sp->file_size))
+                               sp->jpeg_interchange_format_length=sp->file_size-sp->jpeg_interchange_format;
+               }
+       }
+       sp->in_buffer_source=osibsNotSetYet;
+       sp->in_buffer_next_strile=0;
+       sp->in_buffer_strile_count=tif->tif_dir.td_nstrips;
+       sp->in_buffer_file_togo=0;
+       sp->in_buffer_togo=0;
+       do
+       {
+               if (OJPEGReadBytePeek(sp,&m)==0)
+                       return(0);
+               if (m!=255)
+                       break;
+               OJPEGReadByteAdvance(sp);
+               do
+               {
+                       if (OJPEGReadByte(sp,&m)==0)
+                               return(0);
+               } while(m==255);
+               switch(m)
+               {
+                       case JPEG_MARKER_SOI:
+                               /* this type of marker has no data, and should be skipped */
+                               break;
+                       case JPEG_MARKER_COM:
+                       case JPEG_MARKER_APP0:
+                       case JPEG_MARKER_APP0+1:
+                       case JPEG_MARKER_APP0+2:
+                       case JPEG_MARKER_APP0+3:
+                       case JPEG_MARKER_APP0+4:
+                       case JPEG_MARKER_APP0+5:
+                       case JPEG_MARKER_APP0+6:
+                       case JPEG_MARKER_APP0+7:
+                       case JPEG_MARKER_APP0+8:
+                       case JPEG_MARKER_APP0+9:
+                       case JPEG_MARKER_APP0+10:
+                       case JPEG_MARKER_APP0+11:
+                       case JPEG_MARKER_APP0+12:
+                       case JPEG_MARKER_APP0+13:
+                       case JPEG_MARKER_APP0+14:
+                       case JPEG_MARKER_APP0+15:
+                               /* this type of marker has data, but it has no use to us (and no place here) and should be skipped */
+                               if (OJPEGReadWord(sp,&n)==0)
+                                       return(0);
+                               if (n<2)
+                               {
+                                       if (sp->subsamplingcorrect==0)
+                                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JPEG data");
+                                       return(0);
+                               }
+                               if (n>2)
+                                       OJPEGReadSkip(sp,n-2);
+                               break;
+                       case JPEG_MARKER_DRI:
+                               if (OJPEGReadHeaderInfoSecStreamDri(tif)==0)
+                                       return(0);
+                               break;
+                       case JPEG_MARKER_DQT:
+                               if (OJPEGReadHeaderInfoSecStreamDqt(tif)==0)
+                                       return(0);
+                               break;
+                       case JPEG_MARKER_DHT:
+                               if (OJPEGReadHeaderInfoSecStreamDht(tif)==0)
+                                       return(0);
+                               break;
+                       case JPEG_MARKER_SOF0:
+                       case JPEG_MARKER_SOF1:
+                       case JPEG_MARKER_SOF3:
+                               if (OJPEGReadHeaderInfoSecStreamSof(tif,m)==0)
+                                       return(0);
+                               if (sp->subsamplingcorrect!=0)
+                                       return(1);
+                               break;
+                       case JPEG_MARKER_SOS:
+                               if (sp->subsamplingcorrect!=0)
+                                       return(1);
+                               assert(sp->plane_sample_offset==0);
+                               if (OJPEGReadHeaderInfoSecStreamSos(tif)==0)
+                                       return(0);
+                               break;
+                       default:
+                               TIFFErrorExt(tif->tif_clientdata,module,"Unknown marker type %d in JPEG data",m);
+                               return(0);
+               }
+       } while(m!=JPEG_MARKER_SOS);
+       if (sp->subsamplingcorrect)
+               return(1);
+       if (sp->sof_log==0)
+       {
+               if (OJPEGReadHeaderInfoSecTablesQTable(tif)==0)
+                       return(0);
+               sp->sof_marker_id=JPEG_MARKER_SOF0;
+               for (o=0; o<sp->samples_per_pixel; o++)
+                       sp->sof_c[o]=o;
+               sp->sof_hv[0]=((sp->subsampling_hor<<4)|sp->subsampling_ver);
+               for (o=1; o<sp->samples_per_pixel; o++)
+                       sp->sof_hv[o]=17;
+               sp->sof_x=sp->strile_width;
+               sp->sof_y=sp->strile_length_total;
+               sp->sof_log=1;
+               if (OJPEGReadHeaderInfoSecTablesDcTable(tif)==0)
+                       return(0);
+               if (OJPEGReadHeaderInfoSecTablesAcTable(tif)==0)
+                       return(0);
+               for (o=1; o<sp->samples_per_pixel; o++)
+                       sp->sos_cs[o]=o;
+       }
+       return(1);
+}
 
 static int
-OJPEGSetupEncode(register TIFF *tif)
-  { static const char module[]={"OJPEGSetupEncode"};
-    uint32 segment_height, segment_width;
-    int status = 1;                              /* Assume success by default */
-    register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
- /* Verify miscellaneous parameters.  This will need work if the TIFF Library
-    ever supports different depths for different components, or if the JPEG
-    Library ever supports run-time depth selection.  Neither seems imminent.
- */
-    if (td->td_bitspersample != 8)
-      {
-        TIFFError(module,bad_bps,td->td_bitspersample);
-        status = 0;
-      };
-
- /* The TIFF Version 6.0 specification and IJG JPEG Library accept different
-    sets of color spaces, so verify that our image belongs to the common subset
-    and map its photometry code, then initialize to handle subsampling and
-    optional JPEG Library YCbCr <-> RGB color-space conversion.
- */
-    switch (td->td_photometric)
-      {
-        case PHOTOMETRIC_YCBCR     :
-
-       /* ISO IS 10918-1 requires that JPEG subsampling factors be 1-4, but
-          TIFF Version 6.0 is more restrictive: only 1, 2, and 4 are allowed.
-       */
-          if (   (   td->td_ycbcrsubsampling[0] == 1
-                  || td->td_ycbcrsubsampling[0] == 2
-                  || td->td_ycbcrsubsampling[0] == 4
-                 )
-              && (   td->td_ycbcrsubsampling[1] == 1
-                  || td->td_ycbcrsubsampling[1] == 2
-                  || td->td_ycbcrsubsampling[1] == 4
-                 )
-             )
-            sp->cinfo.c.raw_data_in =
-              ( (sp->h_sampling = td->td_ycbcrsubsampling[0]) << 3
-              | (sp->v_sampling = td->td_ycbcrsubsampling[1])
-              ) != 011;
-          else
-            {
-              TIFFError(module,bad_subsampling);
-              status = 0;
-            };
-
-       /* A ReferenceBlackWhite field MUST be present, since the default value
-          is inapproriate for YCbCr.  Fill in the proper value if the
-          application didn't set it.
-       */
-          if (!TIFFFieldSet(tif,FIELD_REFBLACKWHITE))
-            { float refbw[6];
-              long top = 1L << td->td_bitspersample;
-              refbw[0] = 0;
-              refbw[1] = (float)(top-1L);
-              refbw[2] = (float)(top>>1);
-              refbw[3] = refbw[1];
-              refbw[4] = refbw[2];
-              refbw[5] = refbw[1];
-              TIFFSetField(tif,TIFFTAG_REFERENCEBLACKWHITE,refbw);
-            };
-          sp->cinfo.c.jpeg_color_space = JCS_YCbCr;
-          if (sp->jpegcolormode == JPEGCOLORMODE_RGB)
-            {
-              sp->cinfo.c.raw_data_in = FALSE;
-              sp->in_color_space = JCS_RGB;
-              break;
-            };
-          goto L2;
-        case PHOTOMETRIC_MINISBLACK:
-          sp->cinfo.c.jpeg_color_space = JCS_GRAYSCALE;
-          goto L1;
-        case PHOTOMETRIC_RGB       :
-          sp->cinfo.c.jpeg_color_space = JCS_RGB;
-          goto L1;
-        case PHOTOMETRIC_SEPARATED :
-          sp->cinfo.c.jpeg_color_space = JCS_CMYK;
-      L1: sp->jpegcolormode = JPEGCOLORMODE_RAW; /* No JPEG Lib. conversion */
-      L2: sp->cinfo.d.in_color_space = sp->cinfo.d.jpeg_color-space;
-          break;
-        default                    :
-          TIFFError(module,bad_photometry,td->td_photometric);
-          status = 0;
-      };
-    tif->tif_encoderow = tif->tif_encodestrip = tif->tif_encodetile =
-      sp->cinfo.c.raw_data_in ? OJPEGEncodeRaw : OJPEGEncode;
-    if (isTiled(tif))
-      { tsize_t size;
-
-#       ifdef C_LOSSLESS_SUPPORTED
-        if ((size = sp->v_sampling*sp->cinfo.c.data_unit) < 16) size = 16;
-#       else
-        if ((size = sp->v_sampling*DCTSIZE) < 16) size = 16;
-#       endif
-        if ((segment_height = td->td_tilelength) % size)
-          {
-            TIFFError(module,"JPEG tile height must be multiple of %d",size);
-            status = 0;
-          };
-#       ifdef C_LOSSLESS_SUPPORTED
-        if ((size = sp->h_sampling*sp->cinfo.c.data_unit) < 16) size = 16;
-#       else
-        if ((size = sp->h_sampling*DCTSIZE) < 16) size = 16;
-#       endif
-        if ((segment_width = td->td_tilewidth) % size)
-          {
-            TIFFError(module,"JPEG tile width must be multiple of %d",size);
-            status = 0;
-          };
-        sp->bytesperline = TIFFTileRowSize(tif);
-      }
-    else
-      { tsize_t size;
-
-#       ifdef C_LOSSLESS_SUPPORTED
-        if ((size = sp->v_sampling*sp->cinfo.c.data_unit) < 16) size = 16;
-#       else
-        if ((size = sp->v_sampling*DCTSIZE) < 16) size = 16;
-#       endif
-        if (td->td_rowsperstrip < (segment_height = td->td_imagelength))
-          {
-            if (td->td_rowsperstrip % size)
-              {
-                TIFFError(module,"JPEG RowsPerStrip must be multiple of %d",size);
-                status = 0;
-              };
-            segment_height = td->td_rowsperstrip;
-          };
-        segment_width = td->td_imagewidth;
-        sp->bytesperline = tif->tif_scanlinesize;
-      };
-    if (segment_width > 65535 || segment_height > 65535)
-      {
-        TIFFError(module,"Strip/tile too large for JPEG");
-        status = 0;
-      };
-
- /* Initialize all JPEG parameters to default values.  Note that the JPEG
-    Library's "jpeg_set_defaults()" method needs legal values for the
-    "in_color_space" and "input_components" fields.
- */
-    sp->cinfo.c.input_components = 1; /* Default for JCS_UNKNOWN */
-    if (!CALLVJPEG(sp,jpeg_set_defaults(&sp->cinfo.c))) status = 0;
-    switch (sp->jpegtablesmode & (JPEGTABLESMODE_HUFF|JPEGTABLESMODE_QUANT))
-      { register JHUFF_TBL *htbl;
-        register JQUANT_TBL *qtbl;
-
-        case 0                                       :
-          sp->cinfo.c.optimize_coding = TRUE;
-        case JPEGTABLESMODE_HUFF                     :
-          if (!CALLVJPEG(sp,jpeg_set_quality(&sp->cinfo.c,sp->jpegquality,FALSE)))
-            return 0;
-          if (qtbl = sp->cinfo.c.quant_tbl_ptrs[0]) qtbl->sent_table = FALSE;
-          if (qtbl = sp->cinfo.c.quant_tbl_ptrs[1]) qtbl->sent_table = FALSE;
-          goto L3;
-        case JPEGTABLESMODE_QUANT                    :
-          sp->cinfo.c.optimize_coding = TRUE;
-
-       /* We do not support application-supplied JPEG tables, so mark the field
-          "not present".
-       */
-      L3: TIFFClrFieldBit(tif,FIELD_JPEGTABLES);
-          break;
-        case JPEGTABLESMODE_HUFF|JPEGTABLESMODE_QUANT:
-          if (   !CALLVJPEG(sp,jpeg_set_quality(&sp->cinfo.c,sp->jpegquality,FALSE))
-              || !CALLVJPEG(sp,jpeg_suppress_tables(&sp->cinfo.c,TRUE))
-             )
-            {
-              status = 0;
-              break;
-            };
-          if (qtbl = sp->cinfo.c.quant_tbl_ptrs[0]) qtbl->sent_table = FALSE;
-          if (htbl = sp->cinfo.c.dc_huff_tbl_ptrs[0]) htbl->sent_table = FALSE;
-          if (htbl = sp->cinfo.c.ac_huff_tbl_ptrs[0]) htbl->sent_table = FALSE;
-          if (sp->cinfo.c.jpeg_color_space == JCS_YCbCr)
-            {
-              if (qtbl = sp->cinfo.c.quant_tbl_ptrs[1])
-                qtbl->sent_table = FALSE;
-              if (htbl = sp->cinfo.c.dc_huff_tbl_ptrs[1])
-                htbl->sent_table = FALSE;
-              if (htbl = sp->cinfo.c.ac_huff_tbl_ptrs[1])
-                htbl->sent_table = FALSE;
-            };
-          if (   TIFFojpeg_tables_dest(sp,tif)
-              && CALLVJPEG(sp,jpeg_write_tables(&sp->cinfo.c))
-             )
-            {
-    
-           /* Mark the field "present".  We can't use "TIFFSetField()" because
-              "BEENWRITING" is already set!
-           */
-              TIFFSetFieldBit(tif,FIELD_JPEGTABLES);
-              tif->tif_flags |= TIFF_DIRTYDIRECT;
-            }
-          else status = 0;
-      };
-    if (   sp->cinfo.c.raw_data_in
-        && !alloc_downsampled_buffers(tif,sp->cinfo.c.comp_info,
-                                      sp->cinfo.c.num_components)
-       ) status = 0;
-    if (status == 0) return 0; /* If TIFF errors, don't bother to continue */
- /* Grab parameters that are same for all strips/tiles. */
-
-    sp->dest.init_destination = std_init_destination;
-    sp->dest.empty_output_buffer = std_empty_output_buffer;
-    sp->dest.term_destination = std_term_destination;
-    sp->cinfo.c.dest = &sp->dest;
-    sp->cinfo.c.data_precision = td->td_bitspersample;
-    sp->cinfo.c.write_JFIF_header = /* Don't write extraneous markers */
-    sp->cinfo.c.write_Adobe_marker = FALSE;
-    sp->cinfo.c.image_width = segment_width;
-    sp->cinfo.c.image_height = segment_height;
-    sp->cinfo.c.comp_info[0].h_samp_factor =
-    sp->cinfo.c.comp_info[0].v_samp_factor = 1;
-    return CALLVJPEG(sp,jpeg_start_compress(&sp->cinfo.c,FALSE));
-#   undef td
-  }
+OJPEGReadHeaderInfoSecStreamDri(TIFF* tif)
+{
+       /* this could easilly cause trouble in some cases... but no such cases have occured sofar */
+       static const char module[]="OJPEGReadHeaderInfoSecStreamDri";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint16 m;
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       if (m!=4)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DRI marker in JPEG data");
+               return(0);
+       }
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       sp->restart_interval=m;
+       return(1);
+}
 
 static int
-OJPEGPreEncode(register TIFF *tif,tsample_t s)
-  { register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
- /* If we are about to write the first row of an image plane, which should
-    coincide with a JPEG "scan", reset the JPEG Library's compressor.  Otherwise
-    let the compressor run "as is" and return a "success" status without further
-    ado.
- */
-    if (     (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip)
-           % td->td_stripsperimage
-        == 0
-       )
-      {
-        if (   (sp->cinfo.c.comp_info[0].component_id = s) == 1)
-            && sp->cinfo.c.jpeg_color_space == JCS_YCbCr
-           )
-          {
-            sp->cinfo.c.comp_info[0].quant_tbl_no =
-            sp->cinfo.c.comp_info[0].dc_tbl_no =
-            sp->cinfo.c.comp_info[0].ac_tbl_no = 1;
-            sp->cinfo.c.comp_info[0].h_samp_factor = sp->h_sampling;
-            sp->cinfo.c.comp_info[0].v_samp_factor = sp->v_sampling;
-    
-         /* Scale expected strip/tile size to match a downsampled component. */
-    
-            sp->cinfo.c.image_width = TIFFhowmany(segment_width,sp->h_sampling);
-            sp->cinfo.c.image_height=TIFFhowmany(segment_height,sp->v_sampling);
-          };
-        sp->scancount = 0; /* Mark subsampling buffer(s) empty */
-      };
-    return 1;
-#   undef td
-  }
+OJPEGReadHeaderInfoSecStreamDqt(TIFF* tif)
+{
+       /* this is a table marker, and it is to be saved as a whole for exact pushing on the jpeg stream later on */
+       static const char module[]="OJPEGReadHeaderInfoSecStreamDqt";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint16 m;
+       uint32 na;
+       uint8* nb;
+       uint8 o;
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       if (m<=2)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
+               return(0);
+       }
+       if (sp->subsamplingcorrect!=0)
+               OJPEGReadSkip(sp,m-2);
+       else
+       {
+               m-=2;
+               do
+               {
+                       if (m<65)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
+                               return(0);
+                       }
+                       na=sizeof(uint32)+69;
+                       nb=_TIFFmalloc(na);
+                       if (nb==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       *(uint32*)nb=na;
+                       nb[sizeof(uint32)]=255;
+                       nb[sizeof(uint32)+1]=JPEG_MARKER_DQT;
+                       nb[sizeof(uint32)+2]=0;
+                       nb[sizeof(uint32)+3]=67;
+                       if (OJPEGReadBlock(sp,65,&nb[sizeof(uint32)+4])==0) {
+                               _TIFFfree(nb);
+                               return(0);
+                       }
+                       o=nb[sizeof(uint32)+4]&15;
+                       if (3<o)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
+                               _TIFFfree(nb);
+                               return(0);
+                       }
+                       if (sp->qtable[o]!=0)
+                               _TIFFfree(sp->qtable[o]);
+                       sp->qtable[o]=nb;
+                       m-=65;
+               } while(m>0);
+       }
+       return(1);
+}
 
 static int
-OJPEGPostEncode(register TIFF *tif)
-  { register OJPEGState *sp = OJState(tif);
-
- /* Finish up at the end of a strip or tile. */
-
-    if (sp->scancount > 0) /* emit partial buffer of down-sampled data */
-      { JDIMENSION n;
-
-#       ifdef C_LOSSLESS_SUPPORTED
-        if (   sp->scancount < sp->cinfo.c.data_unit
-            && sp->cinfo.c.num_components > 0
-           )
-#       else
-        if (sp->scancount < DCTSIZE && sp->cinfo.c.num_components > 0)
-#       endif
-          { int ci = 0,                            /* Pad the data vertically */
-#           ifdef C_LOSSLESS_SUPPORTED
-                size = sp->cinfo.c.data_unit;
-#           else
-                size = DCTSIZE;
-#           endif
-            register jpeg_component_info *compptr = sp->cinfo.c.comp_info;
-
-            do
-#              ifdef C_LOSSLESS_SUPPORTED
-               { tsize_t row_width = compptr->width_in_data_units
-#              else
-                 tsize_t row_width = compptr->width_in_blocks
-#              endif
-                   *size*sizeof(JSAMPLE);
-                 int ypos = sp->scancount*compptr->v_samp_factor;
-
-                 do _TIFFmemcpy( (tdata_t)sp->ds_buffer[ci][ypos]
-                               , (tdata_t)sp->ds_buffer[ci][ypos-1]
-                               , row_width
-                               );
-                 while (++ypos < compptr->v_samp_factor*size);
-               }
-            while (++compptr,++ci < sp->cinfo.c.num_components);
-          };
-        n = sp->cinfo.c.max_v_samp_factor*size;
-        if (CALLJPEG(sp,-1,jpeg_write_raw_data(&sp->cinfo.c,sp->ds_buffer,n)) != n)
-          return 0;
-      };
-    return CALLVJPEG(sp,jpeg_finish_compress(&sp->cinfo.c));
-  }
-#endif /* never */
-
-/* JPEG Decoding begins here. */
-
-/*ARGSUSED*/ static int
-OJPEGDecode(register TIFF *tif,tidata_t buf,tsize_t cc,tsample_t s)
-  { tsize_t bytesperline = isTiled(tif)
-                         ? TIFFTileRowSize(tif)
-                         : tif->tif_scanlinesize,
-            rows;                          /* No. of unprocessed rows in file */
-    register OJPEGState *sp = OJState(tif);
-
- /* Decode a chunk of pixels, where the input data has not NOT been down-
-    sampled, or else the TIFF Library's client has used the "JPEGColorMode" TIFF
-    pseudo-tag to request that the JPEG Library do color-space conversion; this
-    is the normal case.  The data is expected to be read in scan-line multiples,
-    and this subroutine is called for both pixel-interleaved and separate color
-    planes.
-
-    WARNING:  Unlike "OJPEGDecodeRawContig()", below, the no. of Bytes in each
-              decoded row is calculated here as "bytesperline" instead of
-    using "sp->bytesperline", which might be a little smaller.  This can
-    occur for an old tiled image whose width isn't a multiple of 8 pixels.
-    That's illegal according to the TIFF Version 6 specification, but some
-    test files, like "zackthecat.tif", were built that way.  In those cases,
-    we want to embed the image's true width in our caller's buffer (which is
-    presumably allocated according to the expected tile width) by
-    effectively "padding" it with unused Bytes at the end of each row.
- */
-    if ( (cc /= bytesperline)      /* No. of complete rows in caller's buffer */
-       > (rows = sp->cinfo.d.output_height - sp->cinfo.d.output_scanline)
-       ) cc = rows;
-    while (--cc >= 0)
-      {
-        if (   CALLJPEG(sp,-1,jpeg_read_scanlines(&sp->cinfo.d,(JSAMPARRAY)&buf,1))
-            != 1
-           ) return 0;
-        buf += bytesperline;
-        ++tif->tif_row;
-      };
-
- /* BEWARE OF KLUDGE:  If our input file was produced by Microsoft's Wang
-                       Imaging for Windows application, the DC coefficients of
-    each JPEG image component (Y,Cb,Cr) must be reset at the end of each TIFF
-    "strip", and any JPEG data bits remaining in the current Byte of the
-    decoder's input buffer must be discarded.  To do so, we create an "ad hoc"
-    interface in the "jdhuff.c" module of IJG JPEG Library Version 6 (module
-    "jdshuff.c", if Ken Murchison's lossless-Huffman patch is applied), and we
-    invoke that interface here after decoding each "strip".
- */
-    if (sp->is_WANG) jpeg_reset_huff_decode(&sp->cinfo.d);
-    return 1;
-  }
-
-/*ARGSUSED*/ static int
-OJPEGDecodeRawContig(register TIFF *tif,tidata_t buf,tsize_t cc,tsample_t s)
-  { tsize_t rows;                          /* No. of unprocessed rows in file */
-    JDIMENSION lines_per_MCU, size;
-    register OJPEGState *sp = OJState(tif);
-
- /* Decode a chunk of pixels, where the input data has pixel-interleaved color
-    planes, some of which have been down-sampled, but the TIFF Library's client
-    has NOT used the "JPEGColorMode" TIFF pseudo-tag to request that the JPEG
-    Library do color-space conversion.  In other words, we must up-sample/
-    expand/duplicate image components according to the image's sampling factors,
-    without changing its color space.  The data is expected to be read in scan-
-    line multiples.
- */
-    if ( (cc /= sp->bytesperline)  /* No. of complete rows in caller's buffer */
-       > (rows = sp->cinfo.d.output_height - sp->cinfo.d.output_scanline)
-       ) cc = rows;
-    lines_per_MCU = sp->cinfo.d.max_v_samp_factor
-#   ifdef D_LOSSLESS_SUPPORTED
-                  * (size = sp->cinfo.d.min_codec_data_unit);
-#   else
-                  * (size = DCTSIZE);
-#   endif
-    while (--cc >= 0)
-      { int clumpoffset, ci;
-        register jpeg_component_info *compptr;
-
-        if (sp->scancount >= size) /* reload downsampled-data buffers */
-          {
-            if (   CALLJPEG(sp,-1,jpeg_read_raw_data(&sp->cinfo.d,sp->ds_buffer,lines_per_MCU))
-                != lines_per_MCU
-               ) return 0;
-            sp->scancount = 0;
-          };
-
-     /* The fastest way to separate the data is: make 1 pass over the scan
-        line for each row of each component.
-     */
-        clumpoffset = ci = 0;
-        compptr = sp->cinfo.d.comp_info;
-        do
-          { int ypos = 0;
-
-            if (compptr->h_samp_factor == 1) /* fast path */
-              do
-                { register JSAMPLE *inptr =
-                    sp->ds_buffer[ci][sp->scancount*compptr->v_samp_factor+ypos],
-                                   *outptr = (JSAMPLE *)buf + clumpoffset;
-                  register int clumps_per_line = compptr->downsampled_width;
-
-                  do *outptr = *inptr++;
-                  while ((outptr += sp->samplesperclump),--clumps_per_line > 0);
-                }
-              while ( (clumpoffset += compptr->h_samp_factor)
-                    , ++ypos < compptr->v_samp_factor
-                    );
-            else /* general case */
-              do
-                { register JSAMPLE *inptr =
-                    sp->ds_buffer[ci][sp->scancount*compptr->v_samp_factor+ypos],
-                                   *outptr = (JSAMPLE *)buf + clumpoffset;
-                  register int clumps_per_line = compptr->downsampled_width;
-
-                  do
-                    { register int xpos = 0;
-
-                      do outptr[xpos] = *inptr++;
-                      while (++xpos < compptr->h_samp_factor);
-                    }
-                  while ((outptr += sp->samplesperclump),--clumps_per_line > 0);
-                }
-              while ( (clumpoffset += compptr->h_samp_factor)
-                    , ++ypos < compptr->v_samp_factor
-                    );
-          }
-        while (++compptr,++ci < sp->cinfo.d.num_components);
-        ++sp->scancount;
-        buf += sp->bytesperline;
-        ++tif->tif_row;
-      };
-
- /* BEWARE OF KLUDGE:  If our input file was produced by Microsoft's Wang
-                       Imaging for Windows application, the DC coefficients of
-    each JPEG image component (Y,Cb,Cr) must be reset at the end of each TIFF
-    "strip", and any JPEG data bits remaining in the current Byte of the
-    decoder's input buffer must be discarded.  To do so, we create an "ad hoc"
-    interface in the "jdhuff.c" module of IJG JPEG Library Version 6 (module
-    "jdshuff.c", if Ken Murchison's lossless-Huffman patch is applied), and we
-    invoke that interface here after decoding each "strip".
- */
-    if (sp->is_WANG) jpeg_reset_huff_decode(&sp->cinfo.d);
-    return 1;
-  }
-
-/*ARGSUSED*/ static int
-OJPEGDecodeRawSeparate(TIFF *tif,register tidata_t buf,tsize_t cc,tsample_t s)
-  { tsize_t rows;                          /* No. of unprocessed rows in file */
-    JDIMENSION lines_per_MCU,
-               size,                                             /* ...of MCU */
-               v;                   /* Component's vertical up-sampling ratio */
-    register OJPEGState *sp = OJState(tif);
-    register jpeg_component_info *compptr = sp->cinfo.d.comp_info + s;
-
- /* Decode a chunk of pixels, where the input data has separate color planes,
-    some of which have been down-sampled, but the TIFF Library's client has NOT
-    used the "JPEGColorMode" TIFF pseudo-tag to request that the JPEG Library
-    do color-space conversion.  The data is expected to be read in scan-line
-    multiples.
- */
-    v = sp->cinfo.d.max_v_samp_factor/compptr->v_samp_factor;
-    if ( (cc /= compptr->downsampled_width) /* No. of rows in caller's buffer */
-       > (rows = (sp->cinfo.d.output_height-sp->cinfo.d.output_scanline+v-1)/v)
-       ) cc = rows; /* No. of rows of "clumps" to read */
-    lines_per_MCU = sp->cinfo.d.max_v_samp_factor
-#   ifdef D_LOSSLESS_SUPPORTED
-                  * (size = sp->cinfo.d.min_codec_data_unit);
-#   else
-                  * (size = DCTSIZE);
-#   endif
- L: if (sp->scancount >= size) /* reload downsampled-data buffers */
-      {
-        if (   CALLJPEG(sp,-1,jpeg_read_raw_data(&sp->cinfo.d,sp->ds_buffer,lines_per_MCU))
-            != lines_per_MCU
-           ) return 0;
-        sp->scancount = 0;
-      };
-    rows = 0;
-    do
-      { register JSAMPLE *inptr =
-          sp->ds_buffer[s][sp->scancount*compptr->v_samp_factor + rows];
-        register int clumps_per_line = compptr->downsampled_width;
-
-        do *buf++ = *inptr++; while (--clumps_per_line > 0); /* Copy scanline */
-        tif->tif_row += v;
-        if (--cc <= 0) return 1; /* End of caller's buffer? */
-      }
-    while (++rows < compptr->v_samp_factor);
-    ++sp->scancount;
-    goto L;
-  }
-
-/* "OJPEGSetupDecode()" temporarily forces the JPEG Library to use the following
-   subroutine as a "dummy" input reader in order to fool the library into
-   thinking that it has read the image's first "Start of Scan" (SOS) marker, so
-   that it initializes accordingly.
-*/
-/*ARGSUSED*/ METHODDEF(int)
-fake_SOS_marker(j_decompress_ptr cinfo){return JPEG_REACHED_SOS;}
-
-/*ARGSUSED*/ METHODDEF(int)
-suspend(j_decompress_ptr cinfo){return JPEG_SUSPENDED;}
-
-/* The JPEG Library's "null" color-space converter actually re-packs separate
-   color planes (it's native image representation) into a pixel-interleaved,
-   contiguous plane.  But if our TIFF Library client is tryng to process a
-   PLANARCONFIG_SEPARATE image, we don't want that; so here are modifications of
-   code in the JPEG Library's "jdcolor.c" file, which simply copy Bytes to a
-   color plane specified by the current JPEG "scan".
-*/
-METHODDEF(void)
-ycc_rgb_convert(register j_decompress_ptr cinfo,JSAMPIMAGE in,JDIMENSION row,
-                register JSAMPARRAY out,register int nrows)
-  { typedef struct                /* "jdcolor.c" color-space conversion state */
-      {
-
-     /* WARNING:  This declaration is ugly and dangerous!  It's supposed to be
-                  private to the JPEG Library's "jdcolor.c" module, but we also
-        need it here.  Since the library's copy might change without notice, be
-        sure to keep this one synchronized or the following code will break!
-     */
-        struct jpeg_color_deconverter pub; /* Public fields */
-     /* Private state for YCC->RGB conversion */
-        int *Cr_r_tab,   /* ->Cr to R conversion table */
-            *Cb_b_tab;   /* ->Cb to B conversion table */
-        INT32 *Cr_g_tab, /* ->Cr to G conversion table */
-              *Cb_g_tab; /* ->Cb to G conversion table */
-      } *my_cconvert_ptr;
-    my_cconvert_ptr cconvert = (my_cconvert_ptr)cinfo->cconvert;
-    JSAMPARRAY irow0p = in[0] + row;
-    register JSAMPLE *range_limit = cinfo->sample_range_limit;
-    register JSAMPROW outp, Y;
-
-    switch (cinfo->output_scan_number - 1)
-      { JSAMPARRAY irow1p, irow2p;
-        register INT32 *table0, *table1;
-        SHIFT_TEMPS
-
-        case RGB_RED  : irow2p = in[2] + row;
-                        table0 = (INT32 *)cconvert->Cr_r_tab;
-                        while (--nrows >= 0)
-                          { register JSAMPROW Cr = *irow2p++;
-                             register int i = cinfo->output_width;
-
-                             Y = *irow0p++;
-                             outp = *out++;
-                             while (--i >= 0)
-                               *outp++ = range_limit[*Y++ + table0[*Cr++]];
-                          };
-                        return;
-        case RGB_GREEN: irow1p = in[1] + row;
-                        irow2p = in[2] + row;
-                        table0 = cconvert->Cb_g_tab;
-                        table1 = cconvert->Cr_g_tab;
-                        while (--nrows >= 0)
-                          { register JSAMPROW Cb = *irow1p++,
-                                              Cr = *irow2p++;
-                             register int i = cinfo->output_width;
-
-                             Y = *irow0p++;
-                             outp = *out++;
-                             while (--i >= 0)
-                               *outp++ =
-                                 range_limit[ *Y++
-                                            + RIGHT_SHIFT(table0[*Cb++]+table1[*Cr++],16)
-                                            ];
-                          };
-                        return;
-        case RGB_BLUE : irow1p = in[1] + row;
-                        table0 = (INT32 *)cconvert->Cb_b_tab;
-                        while (--nrows >= 0)
-                          { register JSAMPROW Cb = *irow1p++;
-                             register int i = cinfo->output_width;
-
-                             Y = *irow0p++;
-                             outp = *out++;
-                             while (--i >= 0)
-                               *outp++ = range_limit[*Y++ + table0[*Cb++]];
-                          }
-      }
-  }
-
-METHODDEF(void)
-null_convert(register j_decompress_ptr cinfo,JSAMPIMAGE in,JDIMENSION row,
-             register JSAMPARRAY out,register int nrows)
-  { register JSAMPARRAY irowp = in[cinfo->output_scan_number - 1] + row;
-
-    while (--nrows >= 0) _TIFFmemcpy(*out++,*irowp++,cinfo->output_width);
-  }
+OJPEGReadHeaderInfoSecStreamDht(TIFF* tif)
+{
+       /* this is a table marker, and it is to be saved as a whole for exact pushing on the jpeg stream later on */
+       /* TODO: the following assumes there is only one table in this marker... but i'm not quite sure that assumption is guaranteed correct */
+       static const char module[]="OJPEGReadHeaderInfoSecStreamDht";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint16 m;
+       uint32 na;
+       uint8* nb;
+       uint8 o;
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       if (m<=2)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
+               return(0);
+       }
+       if (sp->subsamplingcorrect!=0)
+       {
+               OJPEGReadSkip(sp,m-2);
+       }
+       else
+       {
+               na=sizeof(uint32)+2+m;
+               nb=_TIFFmalloc(na);
+               if (nb==0)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                       return(0);
+               }
+               *(uint32*)nb=na;
+               nb[sizeof(uint32)]=255;
+               nb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
+               nb[sizeof(uint32)+2]=(m>>8);
+               nb[sizeof(uint32)+3]=(m&255);
+               if (OJPEGReadBlock(sp,m-2,&nb[sizeof(uint32)+4])==0)
+                       return(0);
+               o=nb[sizeof(uint32)+4];
+               if ((o&240)==0)
+               {
+                       if (3<o)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
+                               return(0);
+                       }
+                       if (sp->dctable[o]!=0)
+                               _TIFFfree(sp->dctable[o]);
+                       sp->dctable[o]=nb;
+               }
+               else
+               {
+                       if ((o&240)!=16)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
+                               return(0);
+                       }
+                       o&=15;
+                       if (3<o)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
+                               return(0);
+                       }
+                       if (sp->actable[o]!=0)
+                               _TIFFfree(sp->actable[o]);
+                       sp->actable[o]=nb;
+               }
+       }
+       return(1);
+}
 
 static int
-OJPEGSetupDecode(register TIFF *tif)
-  { static char module[]={"OJPEGSetupDecode"};
-    J_COLOR_SPACE jpeg_color_space,   /* Color space of JPEG-compressed image */
-                  out_color_space;       /* Color space of decompressed image */
-    uint32 segment_width;
-    int status = 1;                              /* Assume success by default */
-    boolean downsampled_output=FALSE, /* <=> Want JPEG Library's "raw" image? */
-            is_JFIF;                                       /* <=> JFIF image? */
-    register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
- /* Verify miscellaneous parameters.  This will need work if the TIFF Library
-    ever supports different depths for different components, or if the JPEG
-    Library ever supports run-time depth selection.  Neither seems imminent.
- */
-    if (td->td_bitspersample != sp->cinfo.d.data_precision)
-      {
-        TIFFError(module,bad_bps,td->td_bitspersample);
-        status = 0;
-      };
-
- /* The TIFF Version 6.0 specification and IJG JPEG Library accept different
-    sets of color spaces, so verify that our image belongs to the common subset
-    and map its photometry code, then initialize to handle subsampling and
-    optional JPEG Library YCbCr <-> RGB color-space conversion.
- */
-    switch (td->td_photometric)
-      {
-        case PHOTOMETRIC_YCBCR     :
-
-       /* ISO IS 10918-1 requires that JPEG subsampling factors be 1-4, but
-          TIFF Version 6.0 is more restrictive: only 1, 2, and 4 are allowed.
-       */
-          if (   (   td->td_ycbcrsubsampling[0] == 1
-                  || td->td_ycbcrsubsampling[0] == 2
-                  || td->td_ycbcrsubsampling[0] == 4
-                 )
-              && (   td->td_ycbcrsubsampling[1] == 1
-                  || td->td_ycbcrsubsampling[1] == 2
-                  || td->td_ycbcrsubsampling[1] == 4
-                 )
-             )
-            downsampled_output =
-              (
-                (sp->h_sampling = td->td_ycbcrsubsampling[0]) << 3
-              | (sp->v_sampling = td->td_ycbcrsubsampling[1])
-              ) != 011;
-          else
-            {
-              TIFFError(module,bad_subsampling);
-              status = 0;
-            };
-          jpeg_color_space = JCS_YCbCr;
-          if (sp->jpegcolormode == JPEGCOLORMODE_RGB)
-            {
-              downsampled_output = FALSE;
-              out_color_space = JCS_RGB;
-              break;
-            };
-          goto L2;
-        case PHOTOMETRIC_MINISBLACK:
-          jpeg_color_space = JCS_GRAYSCALE;
-          goto L1;
-        case PHOTOMETRIC_RGB       :
-          jpeg_color_space = JCS_RGB;
-          goto L1;
-        case PHOTOMETRIC_SEPARATED :
-          jpeg_color_space = JCS_CMYK;
-      L1: sp->jpegcolormode = JPEGCOLORMODE_RAW; /* No JPEG Lib. conversion */
-      L2: out_color_space = jpeg_color_space;
-          break;
-        default                    :
-          TIFFError(module,bad_photometry,td->td_photometric);
-          status = 0;
-      };
-    if (status == 0) return 0; /* If TIFF errors, don't bother to continue */
-
- /* Set parameters that are same for all strips/tiles. */
-
-    sp->cinfo.d.src = &sp->src;
-    sp->src.init_source = std_init_source;
-    sp->src.fill_input_buffer = std_fill_input_buffer;
-    sp->src.skip_input_data = std_skip_input_data;
-    sp->src.resync_to_restart = jpeg_resync_to_restart;
-    sp->src.term_source = std_term_source;
-
- /* BOGOSITY ALERT!  The Wang Imaging application for Microsoft Windows produces
-                     images containing "JPEGInterchangeFormat[Length]" TIFF
-    records that resemble JFIF-in-TIFF encapsulations but, in fact, violate the
-    TIFF Version 6 specification in several ways; nevertheless, we try to handle
-    them gracefully because there are apparently a lot of them around.  The
-    purported "JFIF" data stream in one of these files vaguely resembles a JPEG
-    "tables only" data stream, except that there's no trailing EOI marker.  The
-    rest of the JPEG data stream lies in a discontiguous file region, identified
-    by the 0th Strip offset (which is *also* illegal!), where it begins with an
-    SOS marker and apparently continues to the end of the file.  There is no
-    trailing EOI marker here, either.
- */
-    is_JFIF = !sp->is_WANG && TIFFFieldSet(tif,FIELD_JPEGIFOFFSET);
+OJPEGReadHeaderInfoSecStreamSof(TIFF* tif, uint8 marker_id)
+{
+       /* this marker needs to be checked, and part of its data needs to be saved for regeneration later on */
+       static const char module[]="OJPEGReadHeaderInfoSecStreamSof";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint16 m;
+       uint16 n;
+       uint8 o;
+       uint16 p;
+       uint16 q;
+       if (sp->sof_log!=0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JPEG data");
+               return(0);
+       }
+       if (sp->subsamplingcorrect==0)
+               sp->sof_marker_id=marker_id;
+       /* Lf: data length */
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       if (m<11)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
+               return(0);
+       }
+       m-=8;
+       if (m%3!=0)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
+               return(0);
+       }
+       n=m/3;
+       if (sp->subsamplingcorrect==0)
+       {
+               if (n!=sp->samples_per_pixel)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected number of samples");
+                       return(0);
+               }
+       }
+       /* P: Sample precision */
+       if (OJPEGReadByte(sp,&o)==0)
+               return(0);
+       if (o!=8)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected number of bits per sample");
+               return(0);
+       }
+       /* Y: Number of lines, X: Number of samples per line */
+       if (sp->subsamplingcorrect)
+               OJPEGReadSkip(sp,4);
+       else
+       {
+               /* Y: Number of lines */
+               if (OJPEGReadWord(sp,&p)==0)
+                       return(0);
+               if (((uint32)p<sp->image_length) && ((uint32)p<sp->strile_length_total))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected height");
+                       return(0);
+               }
+               sp->sof_y=p;
+               /* X: Number of samples per line */
+               if (OJPEGReadWord(sp,&p)==0)
+                       return(0);
+               if (((uint32)p<sp->image_width) && ((uint32)p<sp->strile_width))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected width");
+                       return(0);
+               }
+               if ((uint32)p>sp->strile_width)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data image width exceeds expected image width");
+                       return(0);
+               }
+               sp->sof_x=p;
+       }
+       /* Nf: Number of image components in frame */
+       if (OJPEGReadByte(sp,&o)==0)
+               return(0);
+       if (o!=n)
+       {
+               if (sp->subsamplingcorrect==0)
+                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
+               return(0);
+       }
+       /* per component stuff */
+       /* TODO: double-check that flow implies that n cannot be as big as to make us overflow sof_c, sof_hv and sof_tq arrays */
+       for (q=0; q<n; q++)
+       {
+               /* C: Component identifier */
+               if (OJPEGReadByte(sp,&o)==0)
+                       return(0);
+               if (sp->subsamplingcorrect==0)
+                       sp->sof_c[q]=o;
+               /* H: Horizontal sampling factor, and V: Vertical sampling factor */
+               if (OJPEGReadByte(sp,&o)==0)
+                       return(0);
+               if (sp->subsamplingcorrect!=0)
+               {
+                       if (q==0)
+                       {
+                               sp->subsampling_hor=(o>>4);
+                               sp->subsampling_ver=(o&15);
+                               if (((sp->subsampling_hor!=1) && (sp->subsampling_hor!=2) && (sp->subsampling_hor!=4)) ||
+                                       ((sp->subsampling_ver!=1) && (sp->subsampling_ver!=2) && (sp->subsampling_ver!=4)))
+                                       sp->subsampling_force_desubsampling_inside_decompression=1;
+                       }
+                       else
+                       {
+                               if (o!=17)
+                                       sp->subsampling_force_desubsampling_inside_decompression=1;
+                       }
+               }
+               else
+               {
+                       sp->sof_hv[q]=o;
+                       if (sp->subsampling_force_desubsampling_inside_decompression==0)
+                       {
+                               if (q==0)
+                               {
+                                       if (o!=((sp->subsampling_hor<<4)|sp->subsampling_ver))
+                                       {
+                                               TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected subsampling values");
+                                               return(0);
+                                       }
+                               }
+                               else
+                               {
+                                       if (o!=17)
+                                       {
+                                               TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected subsampling values");
+                                               return(0);
+                                       }
+                               }
+                       }
+               }
+               /* Tq: Quantization table destination selector */
+               if (OJPEGReadByte(sp,&o)==0)
+                       return(0);
+               if (sp->subsamplingcorrect==0)
+                       sp->sof_tq[q]=o;
+       }
+       if (sp->subsamplingcorrect==0)
+               sp->sof_log=1;
+       return(1);
+}
 
- /* Initialize decompression parameters that won't be overridden by JPEG Library
-    defaults set during the "jpeg_read_header()" call, below.
- */
-    segment_width = td->td_imagewidth;
-    if (isTiled(tif))
-      {
-        if (sp->is_WANG) /* we don't know how to handle it */
-          {
-            TIFFError(module,"Tiled Wang image not supported");
-            return 0;
-          };
-
-     /* BOGOSITY ALERT!  "TIFFTileRowSize()" seems to work fine for modern JPEG-
-                         in-TIFF encapsulations where the image width--like the
-        tile width--is a multiple of 8 or 16 pixels.  But image widths and
-        heights are aren't restricted to 8- or 16-bit multiples, and we need
-        the exact Byte count of decompressed scan lines when we call the JPEG
-        Library.  At least one old file ("zackthecat.tif") in the TIFF Library
-        test suite has widths and heights slightly less than the tile sizes, and
-        it apparently used the bogus computation below to determine the number
-        of Bytes per scan line (was this due to an old, broken version of
-        "TIFFhowmany()"?).  Before we get here, "OJPEGSetupDecode()" verified
-        that our image uses 8-bit samples, so the following check appears to
-        return the correct answer in all known cases tested to date.
-     */
-        if (is_JFIF || (segment_width & 7) == 0)
-          sp->bytesperline = TIFFTileRowSize(tif); /* Normal case */
-        else
-          {
-            /* Was the file-encoder's segment-width calculation bogus? */
-            segment_width = (segment_width/sp->h_sampling + 1) * sp->h_sampling;
-            sp->bytesperline = segment_width * td->td_samplesperpixel;
-          }
-      }
-    else sp->bytesperline = TIFFVStripSize(tif,1);
-
- /* BEWARE OF KLUDGE:  If we have JPEG Interchange File Format (JFIF) image,
-                       then we want to read "metadata" in the bit-stream's
-    header and validate it against corresponding information in TIFF records.
-    But if we have a *really old* JPEG file that's not JFIF, then we simply
-    assign TIFF-record values to JPEG Library variables without checking.
- */
-    if (is_JFIF) /* JFIF image */
-      { unsigned char *end_of_data;
-        int subsampling_factors;
-        register unsigned char *p;
-        register int i;
-
-     /* WARNING:  Although the image file contains a JFIF bit stream, it might
-                  also contain some old TIFF records causing "OJPEGVSetField()"
-        to have allocated quantization or Huffman decoding tables.  But when the
-        JPEG Library reads and parses the JFIF header below, it reallocate these
-        tables anew without checking for "dangling" pointers, thereby causing a
-        memory "leak".  We have enough information to potentially deallocate the
-        old tables here, but unfortunately JPEG Library Version 6B uses a "pool"
-        allocator for small objects, with no deallocation procedure; instead, it
-        reclaims a whole pool when an image is closed/destroyed, so well-behaved
-        TIFF client applications (i.e., those which close their JPEG images as
-        soon as they're no longer needed) will waste memory for a short time but
-        recover it eventually.  But ill-behaved TIFF clients (i.e., those which
-        keep many JPEG images open gratuitously) can exhaust memory prematurely.
-        If the JPEG Library ever implements a deallocation procedure, insert
-        this clean-up code:
-     */
-#       ifdef someday
-        if (sp->jpegtablesmode & JPEGTABLESMODE_QUANT) /* free quant. tables */
-          { register int i = 0;
-
-            do
-              { register JQUANT_TBL *q;
-
-                if (q = sp->cinfo.d.quant_tbl_ptrs[i])
-                  {
-                    jpeg_free_small(&sp->cinfo.comm,q,sizeof *q);
-                    sp->cinfo.d.quant_tbl_ptrs[i] = 0;
-                  }
-              }
-            while (++i < NUM_QUANT_TBLS);
-          };
-        if (sp->jpegtablesmode & JPEGTABLESMODE_HUFF) /* free Huffman tables */
-          { register int i = 0;
-
-            do
-              { register JHUFF_TBL *h;
-
-                if (h = sp->cinfo.d.dc_huff_tbl_ptrs[i])
-                  {
-                    jpeg_free_small(&sp->cinfo.comm,h,sizeof *h);
-                    sp->cinfo.d.dc_huff_tbl_ptrs[i] = 0;
-                  };
-                if (h = sp->cinfo.d.ac_huff_tbl_ptrs[i])
-                  {
-                    jpeg_free_small(&sp->cinfo.comm,h,sizeof *h);
-                    sp->cinfo.d.ac_huff_tbl_ptrs[i] = 0;
-                  }
-              }
-            while (++i < NUM_HUFF_TBLS);
-          };
-#       endif /* someday */
-
-     /* Since we might someday wish to try rewriting "old format" JPEG-in-TIFF
-        encapsulations in "new format" files, try to synthesize the value of a
-        modern "JPEGTables" TIFF record by scanning the JPEG data from just past
-        the "Start of Information" (SOI) marker until something other than a
-        legitimate "table" marker is found, as defined in ISO IS 10918-1
-        Appending B.2.4; namely:
-
-        -- Define Quantization Table (DQT)
-        -- Define Huffman Table (DHT)
-        -- Define Arithmetic Coding table (DAC)
-        -- Define Restart Interval (DRI)
-        -- Comment (COM)
-        -- Application data (APPn)
-
-        For convenience, we also accept "Expansion" (EXP) markers, although they
-        are apparently not a part of normal "table" data.
-     */
-        sp->jpegtables = p = (unsigned char *)sp->src.next_input_byte;
-        end_of_data = p + sp->src.bytes_in_buffer;
-        p += 2;
-        while (p < end_of_data && p[0] == 0xFF)
-          switch (p[1])
-            {
-              default  : goto L;
-              case 0xC0: /* SOF0  */
-              case 0xC1: /* SOF1  */
-              case 0xC2: /* SOF2  */
-              case 0xC3: /* SOF3  */
-              case 0xC4: /* DHT   */
-              case 0xC5: /* SOF5  */
-              case 0xC6: /* SOF6  */
-              case 0xC7: /* SOF7  */
-              case 0xC9: /* SOF9  */
-              case 0xCA: /* SOF10 */
-              case 0xCB: /* SOF11 */
-              case 0xCC: /* DAC   */
-              case 0xCD: /* SOF13 */
-              case 0xCE: /* SOF14 */
-              case 0xCF: /* SOF15 */
-              case 0xDB: /* DQT   */
-              case 0xDD: /* DRI   */
-              case 0xDF: /* EXP   */
-              case 0xE0: /* APP0  */
-              case 0xE1: /* APP1  */
-              case 0xE2: /* APP2  */
-              case 0xE3: /* APP3  */
-              case 0xE4: /* APP4  */
-              case 0xE5: /* APP5  */
-              case 0xE6: /* APP6  */
-              case 0xE7: /* APP7  */
-              case 0xE8: /* APP8  */
-              case 0xE9: /* APP9  */
-              case 0xEA: /* APP10 */
-              case 0xEB: /* APP11 */
-              case 0xEC: /* APP12 */
-              case 0xED: /* APP13 */
-              case 0xEE: /* APP14 */
-              case 0xEF: /* APP15 */
-              case 0xFE: /* COM   */
-                         p += (p[2] << 8 | p[3]) + 2;
-            };
-     L: if (p - (unsigned char *)sp->jpegtables > 2) /* fake "JPEGTables" */
-          {
-
-         /* In case our client application asks, pretend that this image file
-            contains a modern "JPEGTables" TIFF record by copying to a buffer
-            the initial part of the JFIF bit-stream that we just scanned, from
-            the SOI marker through the "metadata" tables, then append an EOI
-            marker and flag the "JPEGTables" TIFF record as "present".
-         */
-            sp->jpegtables_length = p - (unsigned char*)sp->jpegtables + 2;
-            p = sp->jpegtables;
-            if (!(sp->jpegtables = _TIFFmalloc(sp->jpegtables_length)))
-              {
-                TIFFError(module,no_jtable_space);
-                return 0;
-              };
-            _TIFFmemcpy(sp->jpegtables,p,sp->jpegtables_length-2);
-            p = (unsigned char *)sp->jpegtables + sp->jpegtables_length;
-            p[-2] = 0xFF; p[-1] = JPEG_EOI; /* Append EOI marker */
-            TIFFSetFieldBit(tif,FIELD_JPEGTABLES);
-            tif->tif_flags |= TIFF_DIRTYDIRECT;
-          }
-        else sp->jpegtables = 0; /* Don't simulate "JPEGTables" */
-        if (   CALLJPEG(sp,-1,jpeg_read_header(&sp->cinfo.d,TRUE))
-            != JPEG_HEADER_OK
-           ) return 0;
-        if (   sp->cinfo.d.image_width  != segment_width
-            || sp->cinfo.d.image_height != td->td_imagelength 
-           )
-          {
-            TIFFError(module,"Improper JPEG strip/tile size");
-            return 0;
-          };
-        if (sp->cinfo.d.num_components != td->td_samplesperpixel)
-          {
-            TIFFError(module,"Improper JPEG component count");
-            return 0;
-          };
-        if (sp->cinfo.d.data_precision != td->td_bitspersample)
-          {
-            TIFFError(module,"Improper JPEG data precision");
-            return 0;
-          };
-
-     /* Check that JPEG image components all have the same subsampling factors
-        declared (or defaulted) in the TIFF file, since TIFF Version 6.0 is more
-        restrictive than JPEG:  Only the 0th component may have horizontal and
-        vertical subsampling factors other than <1,1>.
-     */
-        subsampling_factors = sp->h_sampling << 3 | sp->v_sampling;
-        i = 0;
-        do
-          {
-            if (   ( sp->cinfo.d.comp_info[i].h_samp_factor << 3
-                   | sp->cinfo.d.comp_info[i].v_samp_factor
-                   )
-                != subsampling_factors
-               )
-              {
-                TIFFError(module,"Improper JPEG subsampling factors");
-                return 0;
-              };
-            subsampling_factors = 011; /* Required for image components > 0 */
-          }
-        while (++i < sp->cinfo.d.num_components);
-      }
-    else /* not JFIF image */
-      { int (*save)(j_decompress_ptr cinfo) = sp->cinfo.d.marker->read_markers;
-        register int i;
-
-     /* We're not assuming that this file's JPEG bit stream has any header
-        "metadata", so fool the JPEG Library into thinking that we read a
-        "Start of Input" (SOI) marker and a "Start of Frame" (SOFx) marker, then
-        force it to read a simulated "Start of Scan" (SOS) marker when we call
-        "jpeg_read_header()" below.  This should cause the JPEG Library to
-        establish reasonable defaults.
-     */
-        sp->cinfo.d.marker->saw_SOI =       /* Pretend we saw SOI marker */
-        sp->cinfo.d.marker->saw_SOF = TRUE; /* Pretend we saw SOF marker */
-        sp->cinfo.d.marker->read_markers =
-          sp->is_WANG ? suspend : fake_SOS_marker;
-        sp->cinfo.d.global_state = DSTATE_INHEADER;
-        sp->cinfo.d.Se = DCTSIZE2-1; /* Suppress JPEG Library warning */
-        sp->cinfo.d.image_width  = segment_width;
-        sp->cinfo.d.image_height = td->td_imagelength;
-
-     /* The following color-space initialization, including the complicated
-        "switch"-statement below, essentially duplicates the logic used by the
-        JPEG Library's "jpeg_init_colorspace()" subroutine during compression.
-     */
-        sp->cinfo.d.num_components = td->td_samplesperpixel;
-        sp->cinfo.d.comp_info = (jpeg_component_info *)
-          (*sp->cinfo.d.mem->alloc_small)
-            ( &sp->cinfo.comm
-            , JPOOL_IMAGE
-            , sp->cinfo.d.num_components * sizeof *sp->cinfo.d.comp_info
-            );
-        i = 0;
-        do
-          {
-            sp->cinfo.d.comp_info[i].component_index = i;
-            sp->cinfo.d.comp_info[i].component_needed = TRUE;
-            sp->cinfo.d.cur_comp_info[i] = &sp->cinfo.d.comp_info[i];
-          }
-        while (++i < sp->cinfo.d.num_components);
-        switch (jpeg_color_space)
-          {
-            case JCS_UNKNOWN  :
-              i = 0;
-              do
-                {
-                  sp->cinfo.d.comp_info[i].component_id = i;
-                  sp->cinfo.d.comp_info[i].h_samp_factor =
-                  sp->cinfo.d.comp_info[i].v_samp_factor = 1;
-                }
-              while (++i < sp->cinfo.d.num_components);
-              break;
-            case JCS_GRAYSCALE:
-              sp->cinfo.d.comp_info[0].component_id =
-              sp->cinfo.d.comp_info[0].h_samp_factor =
-              sp->cinfo.d.comp_info[0].v_samp_factor = 1;
-              break;
-            case JCS_RGB      :
-              sp->cinfo.d.comp_info[0].component_id = 'R';
-              sp->cinfo.d.comp_info[1].component_id = 'G';
-              sp->cinfo.d.comp_info[2].component_id = 'B';
-              i = 0;
-              do sp->cinfo.d.comp_info[i].h_samp_factor =
-                 sp->cinfo.d.comp_info[i].v_samp_factor = 1;
-              while (++i < sp->cinfo.d.num_components);
-              break;
-            case JCS_CMYK     :
-              sp->cinfo.d.comp_info[0].component_id = 'C';
-              sp->cinfo.d.comp_info[1].component_id = 'M';
-              sp->cinfo.d.comp_info[2].component_id = 'Y';
-              sp->cinfo.d.comp_info[3].component_id = 'K';
-              i = 0;
-              do sp->cinfo.d.comp_info[i].h_samp_factor =
-                 sp->cinfo.d.comp_info[i].v_samp_factor = 1;
-              while (++i < sp->cinfo.d.num_components);
-              break;
-            case JCS_YCbCr    :
-              i = 0;
-              do
-                {
-                  sp->cinfo.d.comp_info[i].component_id = i+1;
-                  sp->cinfo.d.comp_info[i].h_samp_factor =
-                  sp->cinfo.d.comp_info[i].v_samp_factor = 1;
-                  sp->cinfo.d.comp_info[i].quant_tbl_no =
-                  sp->cinfo.d.comp_info[i].dc_tbl_no =
-                  sp->cinfo.d.comp_info[i].ac_tbl_no = i > 0;
-                }
-              while (++i < sp->cinfo.d.num_components);
-              sp->cinfo.d.comp_info[0].h_samp_factor = sp->h_sampling;
-              sp->cinfo.d.comp_info[0].v_samp_factor = sp->v_sampling;
-          };
-        sp->cinfo.d.comps_in_scan = td->td_planarconfig == PLANARCONFIG_CONTIG
-                                  ? sp->cinfo.d.num_components
-                                  : 1;
-        i = CALLJPEG(sp,-1,jpeg_read_header(&sp->cinfo.d,!sp->is_WANG));
-        sp->cinfo.d.marker->read_markers = save; /* Restore input method */
-        if (sp->is_WANG) /* produced by Wang Imaging on Microsoft Windows */
-          {
-            if (i != JPEG_SUSPENDED) return 0;
-
-         /* BOGOSITY ALERT!  Files prooduced by the Wang Imaging application for
-                             Microsoft Windows are a special--and, technically
-            illegal--case.  A JPEG SOS marker and rest of the data stream should
-            be located at the end of the file, in a position identified by the
-            0th Strip offset.
-         */
-            i = td->td_nstrips - 1;
-            sp->src.next_input_byte = tif->tif_base + td->td_stripoffset[0];
-            sp->src.bytes_in_buffer = td->td_stripoffset[i] -
-              td->td_stripoffset[0] + td->td_stripbytecount[i];
-            i = CALLJPEG(sp,-1,jpeg_read_header(&sp->cinfo.d,TRUE));
-          };
-        if (i != JPEG_HEADER_OK) return 0;
-      };
-
- /* Some of our initialization must wait until the JPEG Library is initialized
-    above, in order to override its defaults.
- */
-    if (   (sp->cinfo.d.raw_data_out = downsampled_output)
-        && !alloc_downsampled_buffers(tif,sp->cinfo.d.comp_info,
-                                      sp->cinfo.d.num_components)
-       ) return 0;
-    sp->cinfo.d.jpeg_color_space = jpeg_color_space;
-    sp->cinfo.d.out_color_space = out_color_space;
-    sp->cinfo.d.dither_mode = JDITHER_NONE; /* Reduce image "noise" */
-    sp->cinfo.d.two_pass_quantize = FALSE;
-
- /* If the image consists of separate, discontiguous TIFF "samples" (= color
-    planes, hopefully = JPEG "scans"), then we must use the JPEG Library's
-    "buffered image" mode to decompress the entire image into temporary buffers,
-    because the JPEG Library must parse the entire JPEG bit-stream in order to
-    be satsified that it has a complete set of color components for each pixel,
-    but the TIFF Library must allow our client to extract 1 component at a time.
-    Initializing the JPEG Library's "buffered image" mode is tricky:  First, we
-    start its decompressor, then we tell the decompressor to "consume" (i.e.,
-    buffer) the entire bit-stream.
-
-    WARNING:  Disabling "fancy" up-sampling seems to slightly reduce "noise" for
-              certain old Wang Imaging files, but it absolutely *must* be
-    enabled if the image has separate color planes, since in that case, the JPEG
-    Library doesn't use an "sp->cinfo.d.cconvert" structure (so de-referencing
-    this pointer below will cause a fatal crash) but writing our own code to up-
-    sample separate color planes is too much work for right now.  Maybe someday?
- */
-    sp->cinfo.d.do_fancy_upsampling = /* Always let this default (to TRUE)? */
-    sp->cinfo.d.buffered_image = td->td_planarconfig == PLANARCONFIG_SEPARATE;
-    if (!CALLJPEG(sp,0,jpeg_start_decompress(&sp->cinfo.d))) return 0;
-    if (sp->cinfo.d.buffered_image) /* separate color planes */
-      {
-        if (sp->cinfo.d.raw_data_out)
-          tif->tif_decoderow = tif->tif_decodestrip = tif->tif_decodetile =
-            OJPEGDecodeRawSeparate;
-        else
-          {
-            tif->tif_decoderow = tif->tif_decodestrip = tif->tif_decodetile =
-              OJPEGDecode;
-
-         /* In JPEG Library Version 6B, color-space conversion isn't implemented
-            for separate color planes, so we must do it ourself if our TIFF
-            client doesn't want to:
-         */
-            sp->cinfo.d.cconvert->color_convert =
-              sp->cinfo.d.jpeg_color_space == sp->cinfo.d.out_color_space
-              ? null_convert : ycc_rgb_convert;
-          };
-    L3: switch (CALLJPEG(sp,0,jpeg_consume_input(&sp->cinfo.d)))
-          {
-            default              : goto L3;
-
-         /* If no JPEG "End of Information" (EOI) marker is found when bit-
-            stream parsing ends, check whether we have enough data to proceed
-            before reporting an error.
-         */
-            case JPEG_SUSPENDED  : if (  sp->cinfo.d.input_scan_number
-                                        *sp->cinfo.d.image_height
-                                       + sp->cinfo.d.input_iMCU_row
-                                        *sp->cinfo.d.max_v_samp_factor
-#                                       ifdef D_LOSSLESS_SUPPORTED
-                                        *sp->cinfo.d.data_units_in_MCU
-                                        *sp->cinfo.d.min_codec_data_unit
-#                                       else
-                                        *sp->cinfo.d.blocks_in_MCU
-                                        *DCTSIZE
-#                                       endif
-                                      < td->td_samplesperpixel
-                                       *sp->cinfo.d.image_height
-                                      )
-                                     {
-                                       TIFFError(tif->tif_name,
-                                         "Premature end of JPEG bit-stream");
-                                       return 0;
-                                     }
-            case JPEG_REACHED_EOI: ;
-          }
-      }
-    else /* pixel-interleaved color planes */
-      tif->tif_decoderow = tif->tif_decodestrip = tif->tif_decodetile =
-        downsampled_output ? OJPEGDecodeRawContig : OJPEGDecode;
-    return 1;
-#   undef td
-  }
+static int
+OJPEGReadHeaderInfoSecStreamSos(TIFF* tif)
+{
+       /* this marker needs to be checked, and part of its data needs to be saved for regeneration later on */
+       static const char module[]="OJPEGReadHeaderInfoSecStreamSos";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint16 m;
+       uint8 n;
+       uint8 o;
+       assert(sp->subsamplingcorrect==0);
+       if (sp->sof_log==0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
+               return(0);
+       }
+       /* Ls */
+       if (OJPEGReadWord(sp,&m)==0)
+               return(0);
+       if (m!=6+sp->samples_per_pixel_per_plane*2)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
+               return(0);
+       }
+       /* Ns */
+       if (OJPEGReadByte(sp,&n)==0)
+               return(0);
+       if (n!=sp->samples_per_pixel_per_plane)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
+               return(0);
+       }
+       /* Cs, Td, and Ta */
+       for (o=0; o<sp->samples_per_pixel_per_plane; o++)
+       {
+               /* Cs */
+               if (OJPEGReadByte(sp,&n)==0)
+                       return(0);
+               sp->sos_cs[sp->plane_sample_offset+o]=n;
+               /* Td and Ta */
+               if (OJPEGReadByte(sp,&n)==0)
+                       return(0);
+               sp->sos_tda[sp->plane_sample_offset+o]=n;
+       }
+       /* skip Ss, Se, Ah, en Al -> no check, as per Tom Lane recommendation, as per LibJpeg source */
+       OJPEGReadSkip(sp,3);
+       return(1);
+}
 
 static int
-OJPEGPreDecode(register TIFF *tif,tsample_t s)
-  { register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
- /* If we are about to read the first row of an image plane (hopefully, these
-    are coincident with JPEG "scans"!), reset the JPEG Library's decompressor
-    appropriately.  Otherwise, let the decompressor run "as is" and return a
-    "success" status without further ado.
- */
-    if (     (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip)
-           % td->td_stripsperimage
-        == 0
-       )
-      {
-        if (   sp->cinfo.d.buffered_image
-            && !CALLJPEG(sp,0,jpeg_start_output(&sp->cinfo.d,s+1))
-           ) return 0;
-        sp->cinfo.d.output_scanline = 0;
-
-     /* Mark subsampling buffers "empty". */
-
-#       ifdef D_LOSSLESS_SUPPORTED
-        sp->scancount = sp->cinfo.d.min_codec_data_unit;
-#       else
-        sp->scancount = DCTSIZE;
-#       endif
-      };
-    return 1;
-#   undef td
-  }
-
-/*ARGSUSED*/ static void
-OJPEGPostDecode(register TIFF *tif,tidata_t buf,tsize_t cc)
-  { register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
- /* The JPEG Library decompressor has reached the end of a strip/tile.  If this
-    is the end of a TIFF image "sample" (= JPEG "scan") in a file with separate
-    components (color planes), then end the "scan".  If it ends the image's last
-    sample/scan, then also stop the JPEG Library's decompressor.
- */
-    if (sp->cinfo.d.output_scanline >= sp->cinfo.d.output_height)
-      {
-        if (sp->cinfo.d.buffered_image)
-          CALLJPEG(sp,-1,jpeg_finish_output(&sp->cinfo.d)); /* End JPEG scan */
-        if (   (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip)
-            >= td->td_nstrips-1
-           ) CALLJPEG(sp,0,jpeg_finish_decompress(&sp->cinfo.d));
-      }
-#   undef td
-  }
+OJPEGReadHeaderInfoSecTablesQTable(TIFF* tif)
+{
+       static const char module[]="OJPEGReadHeaderInfoSecTablesQTable";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       uint8 n;
+       uint32 oa;
+       uint8* ob;
+       uint32 p;
+       if (sp->qtable_offset[0]==0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
+               return(0);
+       }
+       sp->in_buffer_file_pos_log=0;
+       for (m=0; m<sp->samples_per_pixel; m++)
+       {
+               if ((sp->qtable_offset[m]!=0) && ((m==0) || (sp->qtable_offset[m]!=sp->qtable_offset[m-1])))
+               {
+                       for (n=0; n<m-1; n++)
+                       {
+                               if (sp->qtable_offset[m]==sp->qtable_offset[n])
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegQTables tag value");
+                                       return(0);
+                               }
+                       }
+                       oa=sizeof(uint32)+69;
+                       ob=_TIFFmalloc(oa);
+                       if (ob==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       *(uint32*)ob=oa;
+                       ob[sizeof(uint32)]=255;
+                       ob[sizeof(uint32)+1]=JPEG_MARKER_DQT;
+                       ob[sizeof(uint32)+2]=0;
+                       ob[sizeof(uint32)+3]=67;
+                       ob[sizeof(uint32)+4]=m;
+                       TIFFSeekFile(tif,sp->qtable_offset[m],SEEK_SET); 
+                       p=TIFFReadFile(tif,&ob[sizeof(uint32)+5],64);
+                       if (p!=64)
+                               return(0);
+                       sp->qtable[m]=ob;
+                       sp->sof_tq[m]=m;
+               }
+               else
+                       sp->sof_tq[m]=sp->sof_tq[m-1];
+       }
+       return(1);
+}
 
 static int
-OJPEGVSetField(register TIFF *tif,ttag_t tag,va_list ap)
+OJPEGReadHeaderInfoSecTablesDcTable(TIFF* tif)
 {
-    uint32 v32;
-    register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-    toff_t tiffoff=0;
-    uint32 bufoff=0;
-    uint32 code_count=0;
-    int i2=0;
-    int k2=0;
-
-    switch (tag)
-      {
-        default                            : return
-                                               (*sp->vsetparent)(tif,tag,ap);
-
-     /* BEWARE OF KLUDGE:  Some old-format JPEG-in-TIFF files, including those
-                           produced by the Wang Imaging application for Micro-
-        soft Windows, illegally omit a "ReferenceBlackWhite" TIFF tag, even
-        though the TIFF specification's default is intended for the RGB color
-        space and is inappropriate for the YCbCr color space ordinarily used for
-        JPEG images.  Since many TIFF client applications request the value of
-        this tag immediately after a TIFF image directory is parsed, and before
-        any other code in this module receives control, we are forced to fix
-        this problem very early in image-file processing.  Fortunately, legal
-        TIFF files are supposed to store their tags in numeric order, so a
-        mandatory "PhotometricInterpretation" tag should always appear before
-        an optional "ReferenceBlackWhite" tag.  Hence, we slyly peek ahead when
-        we discover the desired photometry, by installing modified black and
-        white reference levels.
-     */
-        case TIFFTAG_PHOTOMETRIC           :
-          if (   (v32 = (*sp->vsetparent)(tif,tag,ap))
-              && td->td_photometric == PHOTOMETRIC_YCBCR
-             )
-         {
-               float *ref;
-               if (!TIFFGetField(tif, TIFFTAG_REFERENCEBLACKWHITE, &ref)) {
-                       float refbw[6];
-                       long top = 1L << td->td_bitspersample;
-                       refbw[0] = 0;
-                       refbw[1] = (float)(top-1L);
-                       refbw[2] = (float)(top>>1);
-                       refbw[3] = refbw[1];
-                       refbw[4] = refbw[2];
-                       refbw[5] = refbw[1];
-                       TIFFSetField(tif, TIFFTAG_REFERENCEBLACKWHITE, refbw);
+       static const char module[]="OJPEGReadHeaderInfoSecTablesDcTable";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       uint8 n;
+       uint8 o[16];
+       uint32 p;
+       uint32 q;
+       uint32 ra;
+       uint8* rb;
+       if (sp->dctable_offset[0]==0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
+               return(0);
+       }
+       sp->in_buffer_file_pos_log=0;
+       for (m=0; m<sp->samples_per_pixel; m++)
+       {
+               if ((sp->dctable_offset[m]!=0) && ((m==0) || (sp->dctable_offset[m]!=sp->dctable_offset[m-1])))
+               {
+                       for (n=0; n<m-1; n++)
+                       {
+                               if (sp->dctable_offset[m]==sp->dctable_offset[n])
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegDcTables tag value");
+                                       return(0);
+                               }
+                       }
+                       TIFFSeekFile(tif,sp->dctable_offset[m],SEEK_SET);
+                       p=TIFFReadFile(tif,o,16);
+                       if (p!=16)
+                               return(0);
+                       q=0;
+                       for (n=0; n<16; n++)
+                               q+=o[n];
+                       ra=sizeof(uint32)+21+q;
+                       rb=_TIFFmalloc(ra);
+                       if (rb==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       *(uint32*)rb=ra;
+                       rb[sizeof(uint32)]=255;
+                       rb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
+                       rb[sizeof(uint32)+2]=((19+q)>>8);
+                       rb[sizeof(uint32)+3]=((19+q)&255);
+                       rb[sizeof(uint32)+4]=m;
+                       for (n=0; n<16; n++)
+                               rb[sizeof(uint32)+5+n]=o[n];
+                       p=TIFFReadFile(tif,&(rb[sizeof(uint32)+21]),q);
+                       if (p!=q)
+                               return(0);
+                       sp->dctable[m]=rb;
+                       sp->sos_tda[m]=(m<<4);
                }
-         }
-          return v32;
-
-     /* BEWARE OF KLUDGE:  According to Charles Auer <Bumble731@msn.com>, if our
-                           input is a multi-image (multi-directory) JPEG-in-TIFF
-        file is produced by the Wang Imaging application on Microsoft Windows,
-        for some reason the first directory excludes the vendor-specific "WANG
-        PageControl" tag (32934) that we check below, so the only other way to
-        identify these directories is apparently to look for a software-
-        identification tag with the substring, "Wang Labs".  Single-image files
-        can apparently pass both tests, which causes no harm here, but what a
-        mess this is!
-     */
-        case TIFFTAG_SOFTWARE              :
-        {
-            char *software;
-
-            v32 = (*sp->vsetparent)(tif,tag,ap);
-            if( TIFFGetField( tif, TIFFTAG_SOFTWARE, &software )
-                && strstr( software, "Wang Labs" ) )
-                sp->is_WANG = 1;
-            return v32;
-        }
-
-        case TIFFTAG_JPEGPROC              :
-        case TIFFTAG_JPEGIFOFFSET          :
-        case TIFFTAG_JPEGIFBYTECOUNT       :
-        case TIFFTAG_JPEGRESTARTINTERVAL   :
-        case TIFFTAG_JPEGLOSSLESSPREDICTORS:
-        case TIFFTAG_JPEGPOINTTRANSFORM    :
-        case TIFFTAG_JPEGQTABLES           :
-        case TIFFTAG_JPEGDCTABLES          :
-        case TIFFTAG_JPEGACTABLES          :
-        case TIFFTAG_WANG_PAGECONTROL      :
-        case TIFFTAG_JPEGCOLORMODE         : ;
-      };
-    v32 = va_arg(ap,uint32); /* No. of values in this TIFF record */
-
-    /* This switch statement is added for OJPEGVSetField */
-    if(v32 !=0){
-        switch(tag){
-            case TIFFTAG_JPEGPROC:
-                sp->jpegproc=v32;
-                break;
-            case TIFFTAG_JPEGIFOFFSET:
-                sp->jpegifoffset=v32;
-               break;
-            case TIFFTAG_JPEGIFBYTECOUNT:
-               sp->jpegifbytecount=v32;
-               break;
-            case TIFFTAG_JPEGRESTARTINTERVAL:
-               sp->jpegrestartinterval=v32;
-               break;
-            case TIFFTAG_JPEGLOSSLESSPREDICTORS:
-               sp->jpeglosslesspredictors_length=v32;
-               break;
-            case TIFFTAG_JPEGPOINTTRANSFORM:
-               sp->jpegpointtransform_length=v32;
-               break;
-            case TIFFTAG_JPEGQTABLES:
-               sp->jpegqtables_length=v32;
-               break;
-            case TIFFTAG_JPEGACTABLES:
-               sp->jpegactables_length=v32;
-               break;
-            case TIFFTAG_JPEGDCTABLES:
-               sp->jpegdctables_length=v32;
-               break;
-            default:
-               break;
-        }
-    }
-
- /* BEWARE:  The following actions apply only if we are reading a "source" TIFF
-             image to be decompressed for a client application program.  If we
-    ever enhance this file's CODEC to write "destination" JPEG-in-TIFF images,
-    we'll need an "if"- and another "switch"-statement below, because we'll
-    probably want to store these records' values in some different places.  Most
-    of these need not be parsed here in order to decode JPEG bit stream, so we
-    set boolean flags to note that they have been seen, but we otherwise ignore
-    them.
- */
-    switch (tag)
-      { JHUFF_TBL **h;
-
-     /* Validate the JPEG-process code. */
-
-        case TIFFTAG_JPEGPROC              :
-          switch (v32)
-            {
-              default               : TIFFError(tif->tif_name,
-                                        "Unknown JPEG process");
-                                      return 0;
-#             ifdef C_LOSSLESS_SUPPORTED
-
-           /* Image uses (lossy) baseline sequential coding. */
-
-              case JPEGPROC_BASELINE: sp->cinfo.d.process = JPROC_SEQUENTIAL;
-                                      sp->cinfo.d.data_unit = DCTSIZE;
-                                      break;
-
-           /* Image uses (lossless) Huffman coding. */
-
-              case JPEGPROC_LOSSLESS: sp->cinfo.d.process = JPROC_LOSSLESS;
-                                      sp->cinfo.d.data_unit = 1;
-#             else /* not C_LOSSLESS_SUPPORTED */
-              case JPEGPROC_LOSSLESS: TIFFError(JPEGLib_name,
-                                        "Does not support lossless Huffman coding");
-                                      return 0;
-              case JPEGPROC_BASELINE: ;
-#             endif /* C_LOSSLESS_SUPPORTED */
-            };
-          break;
-
-     /* The TIFF Version 6.0 specification says that if the value of a TIFF
-        "JPEGInterchangeFormat" record is 0, then we are to behave as if this
-        record were absent; i.e., the data does *not* represent a JPEG Inter-
-        change Format File (JFIF), so don't even set the boolean "I've been
-        here" flag below.  Otherwise, the field's value represents the file
-        offset of the JPEG SOI marker.
-     */
-        case TIFFTAG_JPEGIFOFFSET          :
-          if (v32)
-            {
-              sp->src.next_input_byte = tif->tif_base + v32;
-              break;
-            };
-          return 1;
-        case TIFFTAG_JPEGIFBYTECOUNT       :
-          sp->src.bytes_in_buffer = v32;
-          break;
-
-     /* The TIFF Version 6.0 specification says that if the JPEG "Restart"
-        marker interval is 0, then the data has no "Restart" markers; i.e., we
-        must behave as if this TIFF record were absent.  So, don't even set the
-        boolean "I've been here" flag below.
-     */
-     /*
-      * Instead, set the field bit so TIFFGetField can get whether or not
-      * it was set.
-      */
-        case TIFFTAG_JPEGRESTARTINTERVAL   :
-          if (v32)
-              sp->cinfo.d.restart_interval = v32;
-              break;
-     /* The TIFF Version 6.0 specification says that this tag is supposed to be
-        a vector containing a value for each image component, but for lossless
-        Huffman coding (the only JPEG process defined by the specification for
-        which this tag should be needed), ISO IS 10918-1 uses only a single
-        value, equivalent to the "Ss" field in a JPEG bit-stream's "Start of
-        Scan" (SOS) marker.  So, we extract the first vector element and ignore
-        the rest.  (I hope this is correct!)
-     */
-        case TIFFTAG_JPEGLOSSLESSPREDICTORS:
-           if (v32)
-             {
-               sp->cinfo.d.Ss = *va_arg(ap,uint16 *);
-               sp->jpeglosslesspredictors = 
-                   _TIFFmalloc(sp->jpeglosslesspredictors_length
-                               * sizeof(uint16));
-               if(sp->jpeglosslesspredictors==NULL){return(0);}
-               for(i2=0;i2<sp->jpeglosslesspredictors_length;i2++){
-                ((uint16*)sp->jpeglosslesspredictors)[i2] =
-                       ((uint16*)sp->cinfo.d.Ss)[i2];
-               }
-               sp->jpeglosslesspredictors_length*=sizeof(uint16);
-               break;
-             };
-           return v32;
-
-     /* The TIFF Version 6.0 specification says that this tag is supposed to be
-        a vector containing a value for each image component, but for lossless
-        Huffman coding (the only JPEG process defined by the specification for
-        which this tag should be needed), ISO IS 10918-1 uses only a single
-        value, equivalent to the "Al" field in a JPEG bit-stream's "Start of
-        Scan" (SOS) marker.  So, we extract the first vector element and ignore
-        the rest.  (I hope this is correct!)
-     */
-        case TIFFTAG_JPEGPOINTTRANSFORM    :
-           if (v32)
-             {
-               sp->cinfo.d.Al = *va_arg(ap,uint16 *);
-               sp->jpegpointtransform =
-                   _TIFFmalloc(sp->jpegpointtransform_length*sizeof(uint16));
-               if(sp->jpegpointtransform==NULL){return(0);}
-               for(i2=0;i2<sp->jpegpointtransform_length;i2++) {
-                ((uint16*)sp->jpegpointtransform)[i2] =
-                       ((uint16*)sp->cinfo.d.Al)[i2];
-               }
-               sp->jpegpointtransform_length*=sizeof(uint16);
-               break;
-             }
-           return v32;
-
-     /* We have a vector of offsets to quantization tables, so load 'em! */
-
-        case TIFFTAG_JPEGQTABLES           :
-          if (v32)
-            { uint32 *v;
-              int i;
-              if (v32 > NUM_QUANT_TBLS)
-                {
-                  TIFFError(tif->tif_name,"Too many quantization tables");
-                  return 0;
-                };
-              i = 0;
-              v = va_arg(ap,uint32 *);
-                sp->jpegqtables=_TIFFmalloc(64*sp->jpegqtables_length);
-                if(sp->jpegqtables==NULL){return(0);}
-                tiffoff = TIFFSeekFile(tif, 0, SEEK_CUR);
-                bufoff=0;
-                for(i2=0;i2<sp->jpegqtables_length;i2++){
-                    TIFFSeekFile(tif, v[i2], SEEK_SET);
-                    TIFFReadFile(tif, &(((unsigned char*)(sp->jpegqtables))[bufoff]),
-                                64);
-                    bufoff+=64;
-                }
-                sp->jpegqtables_length=bufoff;
-                TIFFSeekFile(tif, tiffoff, SEEK_SET);
-
-              do /* read quantization table */
-                { register UINT8 *from = tif->tif_base + *v++;
-                  register UINT16 *to;
-                  register int j = DCTSIZE2;
-
-                  if (!( sp->cinfo.d.quant_tbl_ptrs[i]
-                       = CALLJPEG(sp,0,jpeg_alloc_quant_table(&sp->cinfo.comm))
-                       )
-                     )
-                    {
-                      TIFFError(JPEGLib_name,"No space for quantization table");
-                      return 0;
-                    };
-                  to = sp->cinfo.d.quant_tbl_ptrs[i]->quantval;
-                  do *to++ = *from++; while (--j > 0);
-                }
-              while (++i < v32);
-              sp->jpegtablesmode |= JPEGTABLESMODE_QUANT;
-            };
-          break;
-
-     /* We have a vector of offsets to DC Huffman tables, so load 'em! */
-
-        case TIFFTAG_JPEGDCTABLES          :
-          h = sp->cinfo.d.dc_huff_tbl_ptrs;
-          goto L;
-
-     /* We have a vector of offsets to AC Huffman tables, so load 'em! */
-
-        case TIFFTAG_JPEGACTABLES          :
-          h = sp->cinfo.d.ac_huff_tbl_ptrs;
-       L: if (v32)
-            { uint32 *v;
-              int i;
-              if (v32 > NUM_HUFF_TBLS)
-                {
-                  TIFFError(tif->tif_name,"Too many Huffman tables");
-                  return 0;
-                };
-              v = va_arg(ap,uint32 *);
-                if(tag == TIFFTAG_JPEGDCTABLES) {
-                    sp->jpegdctables=_TIFFmalloc(272*sp->jpegdctables_length);
-                    if(sp->jpegdctables==NULL){return(0);}
-                    tiffoff = TIFFSeekFile(tif, 0, SEEK_CUR);
-                    bufoff=0;
-                    code_count=0;                
-                    for(i2=0;i2<sp->jpegdctables_length;i2++){
-                        TIFFSeekFile(tif, v[i2], SEEK_SET);
-                        TIFFReadFile(tif,
-                                    &(((unsigned char*)(sp->jpegdctables))[bufoff]),
-                                    16);
-                        code_count=0;
-                        for(k2=0;k2<16;k2++){
-                            code_count+=((unsigned char*)(sp->jpegdctables))[k2+bufoff];
-                        }
-                        TIFFReadFile(tif,
-                                    &(((unsigned char*)(sp->jpegdctables))[bufoff+16]),
-                                    code_count);
-                        bufoff+=16;
-                        bufoff+=code_count;
-                    }
-                    sp->jpegdctables_length=bufoff;
-                    TIFFSeekFile(tif, tiffoff, SEEK_SET);
-                }
-                if(tag==TIFFTAG_JPEGACTABLES){
-                    sp->jpegactables=_TIFFmalloc(272*sp->jpegactables_length);
-                    if(sp->jpegactables==NULL){return(0);}
-                    tiffoff = TIFFSeekFile(tif, 0, SEEK_CUR);
-                    bufoff=0;
-                    code_count=0;                
-                    for(i2=0;i2<sp->jpegactables_length;i2++){
-                        TIFFSeekFile(tif, v[i2], SEEK_SET);
-                        TIFFReadFile(tif, &(((unsigned char*)(sp->jpegactables))[bufoff]), 16);
-                        code_count=0;
-                        for(k2=0;k2<16;k2++){
-                            code_count+=((unsigned char*)(sp->jpegactables))[k2+bufoff];
-                        }
-                        TIFFReadFile(tif, &(((unsigned char*)(sp->jpegactables))[bufoff+16]), code_count);
-                        bufoff+=16;
-                        bufoff+=code_count;
-                    }
-                    sp->jpegactables_length=bufoff;
-                    TIFFSeekFile(tif, tiffoff, SEEK_SET);
-                }
-              i = 0;
-              do /* copy each Huffman table */
-                { int size = 0;
-                  register UINT8 *from = tif->tif_base + *v++, *to;
-                  register int j = sizeof (*h)->bits;
-
-               /* WARNING:  This code relies on the fact that an image file not
-                            "memory mapped" was read entirely into a single
-                  buffer by "TIFFInitOJPEG()", so we can do a fast memory-to-
-                  memory copy here.  Each table consists of 16 Bytes, which are
-                  suffixed to a 0 Byte when copied, followed by a variable
-                  number of Bytes whose length is the sum of the first 16.
-               */
-                  if (!( *h
-                       = CALLJPEG(sp,0,jpeg_alloc_huff_table(&sp->cinfo.comm))
-                       )
-                     )
-                    {
-                      TIFFError(JPEGLib_name,"No space for Huffman table");
-                      return 0;
-                    };
-                  to = (*h++)->bits;
-                  *to++ = 0;
-                  while (--j > 0) size += *to++ = *from++; /* Copy 16 Bytes */
-                  if (size > sizeof (*h)->huffval/sizeof *(*h)->huffval)
-                    {
-                      TIFFError(tif->tif_name,"Huffman table too big");
-                      return 0;
-                    };
-                  if ((j = size) > 0) do *to++ = *from++; while (--j > 0);
-                  while (++size <= sizeof (*h)->huffval/sizeof *(*h)->huffval)
-                    *to++ = 0; /* Zero the rest of the table for cleanliness */
-                }
-              while (++i < v32);
-              sp->jpegtablesmode |= JPEGTABLESMODE_HUFF;
-            };
-          break;
-
-     /* The following vendor-specific TIFF tag occurs in (highly illegal) files
-        produced by the Wang Imaging application for Microsoft Windows.  These
-        can apparently have several "pages", in which case this tag specifies
-        the offset of a "page control" structure, which we don't currently know
-        how to handle.  0 indicates a 1-page image with no "page control", which
-        we make a feeble effort to handle.
-     */
-        case TIFFTAG_WANG_PAGECONTROL      :
-          if (v32 == 0) v32 = -1;
-          sp->is_WANG = v32;
-          tag = TIFFTAG_JPEGPROC+FIELD_WANG_PAGECONTROL-FIELD_JPEGPROC;
-          break;
-
-     /* This pseudo tag indicates whether our caller is expected to do YCbCr <->
-        RGB color-space conversion (JPEGCOLORMODE_RAW <=> 0) or whether we must
-        ask the JPEG Library to do it (JPEGCOLORMODE_RGB <=> 1).
-     */
-        case TIFFTAG_JPEGCOLORMODE         :
-          sp->jpegcolormode = v32;
-
-       /* Mark the image to indicate whether returned data is up-sampled, so
-          that "TIFF{Strip,Tile}Size()" reflect the true amount of data present.
-       */
-          v32 = tif->tif_flags; /* Save flags temporarily */
-          tif->tif_flags &= ~TIFF_UPSAMPLED;
-          if (   td->td_photometric == PHOTOMETRIC_YCBCR
-              &&    (td->td_ycbcrsubsampling[0]<<3 | td->td_ycbcrsubsampling[1])
-                 != 011
-              && sp->jpegcolormode == JPEGCOLORMODE_RGB
-             ) tif->tif_flags |= TIFF_UPSAMPLED;
-
-       /* If the up-sampling state changed, re-calculate tile size. */
-
-          if ((tif->tif_flags ^ v32) & TIFF_UPSAMPLED)
-            {
-              tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-              tif->tif_flags |= TIFF_DIRTYDIRECT;
-            };
-          return 1;
-      };
-    TIFFSetFieldBit(tif,tag-TIFFTAG_JPEGPROC+FIELD_JPEGPROC);
-    return 1;
-#   undef td
-  }
+               else
+                       sp->sos_tda[m]=sp->sos_tda[m-1];
+       }
+       return(1);
+}
 
 static int
-OJPEGVGetField(register TIFF *tif,ttag_t tag,va_list ap)
-  { register OJPEGState *sp = OJState(tif);
-
-    switch (tag)
-      {
-
-     /* If this file has managed to synthesize a set of consolidated "metadata"
-        tables for the current (post-TIFF Version 6.0 specification) JPEG-in-
-        TIFF encapsulation strategy, then tell our caller about them; otherwise,
-        keep mum.
-     */
-        case TIFFTAG_JPEGTABLES            :
-          if (sp->jpegtables_length) /* we have "new"-style JPEG tables */
-            {
-              *va_arg(ap,uint32 *) = sp->jpegtables_length;
-              *va_arg(ap,char **) = sp->jpegtables;
-              return 1;
-            };
-
-     /* This pseudo tag indicates whether our caller is expected to do YCbCr <->
-        RGB color-space conversion (JPEGCOLORMODE_RAW <=> 0) or whether we must
-        ask the JPEG Library to do it (JPEGCOLORMODE_RGB <=> 1).
-     */
-        case TIFFTAG_JPEGCOLORMODE         :
-          *va_arg(ap,uint32 *) = sp->jpegcolormode;
-          return 1;
-
-     /* The following tags are defined by the TIFF Version 6.0 specification
-        and are obsolete.  If our caller asks for information about them, do not
-        return anything, even if we parsed them in an old-format "source" image.
-     */
-        case TIFFTAG_JPEGPROC              :
-               *va_arg(ap, uint16*)=sp->jpegproc;
-               return(1);
-               break;
-        case TIFFTAG_JPEGIFOFFSET          :
-               *va_arg(ap, uint32*)=sp->jpegifoffset;
-               return(1);
-               break;
-        case TIFFTAG_JPEGIFBYTECOUNT       :
-               *va_arg(ap, uint32*)=sp->jpegifbytecount;
-               return(1);
-               break;
-        case TIFFTAG_JPEGRESTARTINTERVAL   :
-               *va_arg(ap, uint32*)=sp->jpegrestartinterval;
-               return(1);
-               break;
-        case TIFFTAG_JPEGLOSSLESSPREDICTORS:
-                *va_arg(ap, uint32*)=sp->jpeglosslesspredictors_length;
-                *va_arg(ap, void**)=sp->jpeglosslesspredictors;
-                return(1);
-                break;
-        case TIFFTAG_JPEGPOINTTRANSFORM    :
-                *va_arg(ap, uint32*)=sp->jpegpointtransform_length;
-                *va_arg(ap, void**)=sp->jpegpointtransform;
-                return(1);
-                break;
-        case TIFFTAG_JPEGQTABLES           :
-                *va_arg(ap, uint32*)=sp->jpegqtables_length;
-                *va_arg(ap, void**)=sp->jpegqtables;
-                return(1);
-                break;
-        case TIFFTAG_JPEGDCTABLES          :
-                *va_arg(ap, uint32*)=sp->jpegdctables_length;
-                *va_arg(ap, void**)=sp->jpegdctables;
-                return(1);
-                break;
-        case TIFFTAG_JPEGACTABLES          : 
-                *va_arg(ap, uint32*)=sp->jpegactables_length;
-                *va_arg(ap, void**)=sp->jpegactables;
-                return(1);
-                break;
-      };
-    return (*sp->vgetparent)(tif,tag,ap);
-  }
+OJPEGReadHeaderInfoSecTablesAcTable(TIFF* tif)
+{
+       static const char module[]="OJPEGReadHeaderInfoSecTablesAcTable";
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       uint8 n;
+       uint8 o[16];
+       uint32 p;
+       uint32 q;
+       uint32 ra;
+       uint8* rb;
+       if (sp->actable_offset[0]==0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
+               return(0);
+       }
+       sp->in_buffer_file_pos_log=0;
+       for (m=0; m<sp->samples_per_pixel; m++)
+       {
+               if ((sp->actable_offset[m]!=0) && ((m==0) || (sp->actable_offset[m]!=sp->actable_offset[m-1])))
+               {
+                       for (n=0; n<m-1; n++)
+                       {
+                               if (sp->actable_offset[m]==sp->actable_offset[n])
+                               {
+                                       TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegAcTables tag value");
+                                       return(0);
+                               }
+                       }
+                       TIFFSeekFile(tif,sp->actable_offset[m],SEEK_SET);  
+                       p=TIFFReadFile(tif,o,16);
+                       if (p!=16)
+                               return(0);
+                       q=0;
+                       for (n=0; n<16; n++)
+                               q+=o[n];
+                       ra=sizeof(uint32)+21+q;
+                       rb=_TIFFmalloc(ra);
+                       if (rb==0)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
+                               return(0);
+                       }
+                       *(uint32*)rb=ra;
+                       rb[sizeof(uint32)]=255;
+                       rb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
+                       rb[sizeof(uint32)+2]=((19+q)>>8);
+                       rb[sizeof(uint32)+3]=((19+q)&255);
+                       rb[sizeof(uint32)+4]=(16|m);
+                       for (n=0; n<16; n++)
+                               rb[sizeof(uint32)+5+n]=o[n];
+                       p=TIFFReadFile(tif,&(rb[sizeof(uint32)+21]),q);
+                       if (p!=q)
+                               return(0);
+                       sp->actable[m]=rb;
+                       sp->sos_tda[m]=(sp->sos_tda[m]|m);
+               }
+               else
+                       sp->sos_tda[m]=(sp->sos_tda[m]|(sp->sos_tda[m-1]&15));
+       }
+       return(1);
+}
+
+static int
+OJPEGReadBufferFill(OJPEGState* sp)
+{
+       uint16 m;
+       tmsize_t n;
+       /* TODO: double-check: when subsamplingcorrect is set, no call to TIFFErrorExt or TIFFWarningExt should be made
+        * in any other case, seek or read errors should be passed through */
+       do
+       {
+               if (sp->in_buffer_file_togo!=0)
+               {
+                       if (sp->in_buffer_file_pos_log==0)
+                       {
+                               TIFFSeekFile(sp->tif,sp->in_buffer_file_pos,SEEK_SET);
+                               sp->in_buffer_file_pos_log=1;
+                       }
+                       m=OJPEG_BUFFER;
+                       if ((uint64)m>sp->in_buffer_file_togo)
+                               m=(uint16)sp->in_buffer_file_togo;
+                       n=TIFFReadFile(sp->tif,sp->in_buffer,(tmsize_t)m);
+                       if (n==0)
+                               return(0);
+                       assert(n>0);
+                       assert(n<=OJPEG_BUFFER);
+                       assert(n<65536);
+                       assert((uint64)n<=sp->in_buffer_file_togo);
+                       m=(uint16)n;
+                       sp->in_buffer_togo=m;
+                       sp->in_buffer_cur=sp->in_buffer;
+                       sp->in_buffer_file_togo-=m;
+                       sp->in_buffer_file_pos+=m;
+                       break;
+               }
+               sp->in_buffer_file_pos_log=0;
+               switch(sp->in_buffer_source)
+               {
+                       case osibsNotSetYet:
+                               if (sp->jpeg_interchange_format!=0)
+                               {
+                                       sp->in_buffer_file_pos=sp->jpeg_interchange_format;
+                                       sp->in_buffer_file_togo=sp->jpeg_interchange_format_length;
+                               }
+                               sp->in_buffer_source=osibsJpegInterchangeFormat;
+                               break;
+                       case osibsJpegInterchangeFormat:
+                               sp->in_buffer_source=osibsStrile;
+                       case osibsStrile:
+                               if (!_TIFFFillStriles( sp->tif ) 
+                                   || sp->tif->tif_dir.td_stripoffset == NULL
+                                   || sp->tif->tif_dir.td_stripbytecount == NULL)
+                                       return 0;
+
+                               if (sp->in_buffer_next_strile==sp->in_buffer_strile_count)
+                                       sp->in_buffer_source=osibsEof;
+                               else
+                               {
+                                       sp->in_buffer_file_pos=sp->tif->tif_dir.td_stripoffset[sp->in_buffer_next_strile];
+                                       if (sp->in_buffer_file_pos!=0)
+                                       {
+                                               if (sp->in_buffer_file_pos>=sp->file_size)
+                                                       sp->in_buffer_file_pos=0;
+                                               else if (sp->tif->tif_dir.td_stripbytecount==NULL)
+                                                       sp->in_buffer_file_togo=sp->file_size-sp->in_buffer_file_pos;
+                                               else
+                                               {
+                                                       if (sp->tif->tif_dir.td_stripbytecount == 0) {
+                                                               TIFFErrorExt(sp->tif->tif_clientdata,sp->tif->tif_name,"Strip byte counts are missing");
+                                                               return(0);
+                                                       }
+                                                       sp->in_buffer_file_togo=sp->tif->tif_dir.td_stripbytecount[sp->in_buffer_next_strile];
+                                                       if (sp->in_buffer_file_togo==0)
+                                                               sp->in_buffer_file_pos=0;
+                                                       else if (sp->in_buffer_file_pos+sp->in_buffer_file_togo>sp->file_size)
+                                                               sp->in_buffer_file_togo=sp->file_size-sp->in_buffer_file_pos;
+                                               }
+                                       }
+                                       sp->in_buffer_next_strile++;
+                               }
+                               break;
+                       default:
+                               return(0);
+               }
+       } while (1);
+       return(1);
+}
+
+static int
+OJPEGReadByte(OJPEGState* sp, uint8* byte)
+{
+       if (sp->in_buffer_togo==0)
+       {
+               if (OJPEGReadBufferFill(sp)==0)
+                       return(0);
+               assert(sp->in_buffer_togo>0);
+       }
+       *byte=*(sp->in_buffer_cur);
+       sp->in_buffer_cur++;
+       sp->in_buffer_togo--;
+       return(1);
+}
+
+static int
+OJPEGReadBytePeek(OJPEGState* sp, uint8* byte)
+{
+       if (sp->in_buffer_togo==0)
+       {
+               if (OJPEGReadBufferFill(sp)==0)
+                       return(0);
+               assert(sp->in_buffer_togo>0);
+       }
+       *byte=*(sp->in_buffer_cur);
+       return(1);
+}
 
 static void
-OJPEGPrintDir(register TIFF *tif,FILE *fd,long flags)
-  { register OJPEGState *sp = OJState(tif);
-
-    if (   ( flags
-           & (TIFFPRINT_JPEGQTABLES|TIFFPRINT_JPEGDCTABLES|TIFFPRINT_JPEGACTABLES)
-           )
-        && sp->jpegtables_length
-       )
-      fprintf(fd,"  JPEG Table Data: <present>, %lu bytes\n",
-        sp->jpegtables_length);
-  }
-
-static uint32
-OJPEGDefaultStripSize(register TIFF *tif,register uint32 s)
-  { register OJPEGState *sp = OJState(tif);
-#   define td (&tif->tif_dir)
-
-    if ((s = (*sp->defsparent)(tif,s)) < td->td_imagelength)
-      { register tsize_t size = sp->cinfo.comm.is_decompressor
-#                             ifdef D_LOSSLESS_SUPPORTED
-                              ? sp->cinfo.d.min_codec_data_unit
-#                             else
-                              ? DCTSIZE
-#                             endif
-#                             ifdef C_LOSSLESS_SUPPORTED
-                              : sp->cinfo.c.data_unit;
-#                             else
-                              : DCTSIZE;
-#                             endif
-
-        size = TIFFroundup(size,16);
-        s = TIFFroundup(s,td->td_ycbcrsubsampling[1]*size);
-      };
-    return s;
-#   undef td
-  }
+OJPEGReadByteAdvance(OJPEGState* sp)
+{
+       assert(sp->in_buffer_togo>0);
+       sp->in_buffer_cur++;
+       sp->in_buffer_togo--;
+}
+
+static int
+OJPEGReadWord(OJPEGState* sp, uint16* word)
+{
+       uint8 m;
+       if (OJPEGReadByte(sp,&m)==0)
+               return(0);
+       *word=(m<<8);
+       if (OJPEGReadByte(sp,&m)==0)
+               return(0);
+       *word|=m;
+       return(1);
+}
+
+static int
+OJPEGReadBlock(OJPEGState* sp, uint16 len, void* mem)
+{
+       uint16 mlen;
+       uint8* mmem;
+       uint16 n;
+       assert(len>0);
+       mlen=len;
+       mmem=mem;
+       do
+       {
+               if (sp->in_buffer_togo==0)
+               {
+                       if (OJPEGReadBufferFill(sp)==0)
+                               return(0);
+                       assert(sp->in_buffer_togo>0);
+               }
+               n=mlen;
+               if (n>sp->in_buffer_togo)
+                       n=sp->in_buffer_togo;
+               _TIFFmemcpy(mmem,sp->in_buffer_cur,n);
+               sp->in_buffer_cur+=n;
+               sp->in_buffer_togo-=n;
+               mlen-=n;
+               mmem+=n;
+       } while(mlen>0);
+       return(1);
+}
 
 static void
-OJPEGDefaultTileSize(register TIFF *tif,register uint32 *tw,register uint32 *th)
-  { register OJPEGState *sp = OJState(tif);
-    register tsize_t size;
-#   define td (&tif->tif_dir)
-
-    size = sp->cinfo.comm.is_decompressor
-#        ifdef D_LOSSLESS_SUPPORTED
-         ? sp->cinfo.d.min_codec_data_unit
-#        else
-         ? DCTSIZE
-#        endif
-#        ifdef C_LOSSLESS_SUPPORTED
-         : sp->cinfo.c.data_unit;
-#        else
-         : DCTSIZE;
-#        endif
-    size = TIFFroundup(size,16);
-    (*sp->deftparent)(tif,tw,th);
-    *tw = TIFFroundup(*tw,td->td_ycbcrsubsampling[0]*size);
-    *th = TIFFroundup(*th,td->td_ycbcrsubsampling[1]*size);
-#   undef td
-  }
+OJPEGReadSkip(OJPEGState* sp, uint16 len)
+{
+       uint16 m;
+       uint16 n;
+       m=len;
+       n=m;
+       if (n>sp->in_buffer_togo)
+               n=sp->in_buffer_togo;
+       sp->in_buffer_cur+=n;
+       sp->in_buffer_togo-=n;
+       m-=n;
+       if (m>0)
+       {
+               assert(sp->in_buffer_togo==0);
+               n=m;
+               if ((uint64)n>sp->in_buffer_file_togo)
+                       n=(uint16)sp->in_buffer_file_togo;
+               sp->in_buffer_file_pos+=n;
+               sp->in_buffer_file_togo-=n;
+               sp->in_buffer_file_pos_log=0;
+               /* we don't skip past jpeginterchangeformat/strile block...
+                * if that is asked from us, we're dealing with totally bazurk
+                * data anyway, and we've not seen this happening on any
+                * testfile, so we might as well likely cause some other
+                * meaningless error to be passed at some later time
+                */
+       }
+}
+
+static int
+OJPEGWriteStream(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       *len=0;
+       do
+       {
+               assert(sp->out_state<=ososEoi);
+               switch(sp->out_state)
+               {
+                       case ososSoi:
+                               OJPEGWriteStreamSoi(tif,mem,len);
+                               break;
+                       case ososQTable0:
+                               OJPEGWriteStreamQTable(tif,0,mem,len);
+                               break;
+                       case ososQTable1:
+                               OJPEGWriteStreamQTable(tif,1,mem,len);
+                               break;
+                       case ososQTable2:
+                               OJPEGWriteStreamQTable(tif,2,mem,len);
+                               break;
+                       case ososQTable3:
+                               OJPEGWriteStreamQTable(tif,3,mem,len);
+                               break;
+                       case ososDcTable0:
+                               OJPEGWriteStreamDcTable(tif,0,mem,len);
+                               break;
+                       case ososDcTable1:
+                               OJPEGWriteStreamDcTable(tif,1,mem,len);
+                               break;
+                       case ososDcTable2:
+                               OJPEGWriteStreamDcTable(tif,2,mem,len);
+                               break;
+                       case ososDcTable3:
+                               OJPEGWriteStreamDcTable(tif,3,mem,len);
+                               break;
+                       case ososAcTable0:
+                               OJPEGWriteStreamAcTable(tif,0,mem,len);
+                               break;
+                       case ososAcTable1:
+                               OJPEGWriteStreamAcTable(tif,1,mem,len);
+                               break;
+                       case ososAcTable2:
+                               OJPEGWriteStreamAcTable(tif,2,mem,len);
+                               break;
+                       case ososAcTable3:
+                               OJPEGWriteStreamAcTable(tif,3,mem,len);
+                               break;
+                       case ososDri:
+                               OJPEGWriteStreamDri(tif,mem,len);
+                               break;
+                       case ososSof:
+                               OJPEGWriteStreamSof(tif,mem,len);
+                               break;
+                       case ososSos:
+                               OJPEGWriteStreamSos(tif,mem,len);
+                               break;
+                       case ososCompressed:
+                               if (OJPEGWriteStreamCompressed(tif,mem,len)==0)
+                                       return(0);
+                               break;
+                       case ososRst:
+                               OJPEGWriteStreamRst(tif,mem,len);
+                               break;
+                       case ososEoi:
+                               OJPEGWriteStreamEoi(tif,mem,len);
+                               break;
+               }
+       } while (*len==0);
+       return(1);
+}
 
 static void
-OJPEGCleanUp(register TIFF *tif)
-  { register OJPEGState *sp;
-
-    if ( (sp = OJState(tif)) )
-      {
-        CALLVJPEG(sp,jpeg_destroy(&sp->cinfo.comm)); /* Free JPEG Lib. vars. */
-        if (sp->jpegtables) {_TIFFfree(sp->jpegtables);sp->jpegtables=0;}
-        if (sp->jpeglosslesspredictors) {
-               _TIFFfree(sp->jpeglosslesspredictors);
-               sp->jpeglosslesspredictors = 0;
-       }
-        if (sp->jpegpointtransform) {
-               _TIFFfree(sp->jpegpointtransform);
-               sp->jpegpointtransform=0;
-       }
-        if (sp->jpegqtables) {_TIFFfree(sp->jpegqtables);sp->jpegqtables=0;}
-        if (sp->jpegactables) {_TIFFfree(sp->jpegactables);sp->jpegactables=0;}
-        if (sp->jpegdctables) {_TIFFfree(sp->jpegdctables);sp->jpegdctables=0;}
-     /* If the image file isn't "memory mapped" and we read it all into a
-        single, large memory buffer, free the buffer now.
-     */
-        if (!isMapped(tif) && tif->tif_base) /* free whole-file buffer */
-          {
-            _TIFFfree(tif->tif_base);
-            tif->tif_base = 0;
-            tif->tif_size = 0;
-          };
-        _TIFFfree(sp); /* Release local variables */
-        tif->tif_data = 0;
-      }
-  }
+OJPEGWriteStreamSoi(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(OJPEG_BUFFER>=2);
+       sp->out_buffer[0]=255;
+       sp->out_buffer[1]=JPEG_MARKER_SOI;
+       *len=2;
+       *mem=(void*)sp->out_buffer;
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamQTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       if (sp->qtable[table_index]!=0)
+       {
+               *mem=(void*)(sp->qtable[table_index]+sizeof(uint32));
+               *len=*((uint32*)sp->qtable[table_index])-sizeof(uint32);
+       }
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamDcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       if (sp->dctable[table_index]!=0)
+       {
+               *mem=(void*)(sp->dctable[table_index]+sizeof(uint32));
+               *len=*((uint32*)sp->dctable[table_index])-sizeof(uint32);
+       }
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamAcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       if (sp->actable[table_index]!=0)
+       {
+               *mem=(void*)(sp->actable[table_index]+sizeof(uint32));
+               *len=*((uint32*)sp->actable[table_index])-sizeof(uint32);
+       }
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamDri(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(OJPEG_BUFFER>=6);
+       if (sp->restart_interval!=0)
+       {
+               sp->out_buffer[0]=255;
+               sp->out_buffer[1]=JPEG_MARKER_DRI;
+               sp->out_buffer[2]=0;
+               sp->out_buffer[3]=4;
+               sp->out_buffer[4]=(sp->restart_interval>>8);
+               sp->out_buffer[5]=(sp->restart_interval&255);
+               *len=6;
+               *mem=(void*)sp->out_buffer;
+       }
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamSof(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       assert(OJPEG_BUFFER>=2+8+sp->samples_per_pixel_per_plane*3);
+       assert(255>=8+sp->samples_per_pixel_per_plane*3);
+       sp->out_buffer[0]=255;
+       sp->out_buffer[1]=sp->sof_marker_id;
+       /* Lf */
+       sp->out_buffer[2]=0;
+       sp->out_buffer[3]=8+sp->samples_per_pixel_per_plane*3;
+       /* P */
+       sp->out_buffer[4]=8;
+       /* Y */
+       sp->out_buffer[5]=(sp->sof_y>>8);
+       sp->out_buffer[6]=(sp->sof_y&255);
+       /* X */
+       sp->out_buffer[7]=(sp->sof_x>>8);
+       sp->out_buffer[8]=(sp->sof_x&255);
+       /* Nf */
+       sp->out_buffer[9]=sp->samples_per_pixel_per_plane;
+       for (m=0; m<sp->samples_per_pixel_per_plane; m++)
+       {
+               /* C */
+               sp->out_buffer[10+m*3]=sp->sof_c[sp->plane_sample_offset+m];
+               /* H and V */
+               sp->out_buffer[10+m*3+1]=sp->sof_hv[sp->plane_sample_offset+m];
+               /* Tq */
+               sp->out_buffer[10+m*3+2]=sp->sof_tq[sp->plane_sample_offset+m];
+       }
+       *len=10+sp->samples_per_pixel_per_plane*3;
+       *mem=(void*)sp->out_buffer;
+       sp->out_state++;
+}
+
+static void
+OJPEGWriteStreamSos(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       uint8 m;
+       assert(OJPEG_BUFFER>=2+6+sp->samples_per_pixel_per_plane*2);
+       assert(255>=6+sp->samples_per_pixel_per_plane*2);
+       sp->out_buffer[0]=255;
+       sp->out_buffer[1]=JPEG_MARKER_SOS;
+       /* Ls */
+       sp->out_buffer[2]=0;
+       sp->out_buffer[3]=6+sp->samples_per_pixel_per_plane*2;
+       /* Ns */
+       sp->out_buffer[4]=sp->samples_per_pixel_per_plane;
+       for (m=0; m<sp->samples_per_pixel_per_plane; m++)
+       {
+               /* Cs */
+               sp->out_buffer[5+m*2]=sp->sos_cs[sp->plane_sample_offset+m];
+               /* Td and Ta */
+               sp->out_buffer[5+m*2+1]=sp->sos_tda[sp->plane_sample_offset+m];
+       }
+       /* Ss */
+       sp->out_buffer[5+sp->samples_per_pixel_per_plane*2]=0;
+       /* Se */
+       sp->out_buffer[5+sp->samples_per_pixel_per_plane*2+1]=63;
+       /* Ah and Al */
+       sp->out_buffer[5+sp->samples_per_pixel_per_plane*2+2]=0;
+       *len=8+sp->samples_per_pixel_per_plane*2;
+       *mem=(void*)sp->out_buffer;
+       sp->out_state++;
+}
+
+static int
+OJPEGWriteStreamCompressed(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       if (sp->in_buffer_togo==0)
+       {
+               if (OJPEGReadBufferFill(sp)==0)
+                       return(0);
+               assert(sp->in_buffer_togo>0);
+       }
+       *len=sp->in_buffer_togo;
+       *mem=(void*)sp->in_buffer_cur;
+       sp->in_buffer_togo=0;
+       if (sp->in_buffer_file_togo==0)
+       {
+               switch(sp->in_buffer_source)
+               {
+                       case osibsStrile:
+                               if (sp->in_buffer_next_strile<sp->in_buffer_strile_count)
+                                       sp->out_state=ososRst;
+                               else
+                                       sp->out_state=ososEoi;
+                               break;
+                       case osibsEof:
+                               sp->out_state=ososEoi;
+                               break;
+                       default:
+                               break;
+               }
+       }
+       return(1);
+}
+
+static void
+OJPEGWriteStreamRst(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(OJPEG_BUFFER>=2);
+       sp->out_buffer[0]=255;
+       sp->out_buffer[1]=JPEG_MARKER_RST0+sp->restart_index;
+       sp->restart_index++;
+       if (sp->restart_index==8)
+               sp->restart_index=0;
+       *len=2;
+       *mem=(void*)sp->out_buffer;
+       sp->out_state=ososCompressed;
+}
+
+static void
+OJPEGWriteStreamEoi(TIFF* tif, void** mem, uint32* len)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       assert(OJPEG_BUFFER>=2);
+       sp->out_buffer[0]=255;
+       sp->out_buffer[1]=JPEG_MARKER_EOI;
+       *len=2;
+       *mem=(void*)sp->out_buffer;
+}
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static int
+jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo)
+{
+       return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_create_decompress(cinfo),1));
+}
+#endif
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static int
+jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image)
+{
+       return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_header(cinfo,require_image),1));
+}
+#endif
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static int
+jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo)
+{
+       return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_start_decompress(cinfo),1));
+}
+#endif
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static int
+jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines)
+{
+       return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_scanlines(cinfo,scanlines,max_lines),1));
+}
+#endif
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static int
+jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines)
+{
+       return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_raw_data(cinfo,data,max_lines),1));
+}
+#endif
+
+#ifndef LIBJPEG_ENCAP_EXTERNAL
+static void
+jpeg_encap_unwind(TIFF* tif)
+{
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       LONGJMP(sp->exit_jmpbuf,1);
+}
+#endif
+
+static void
+OJPEGLibjpegJpegErrorMgrOutputMessage(jpeg_common_struct* cinfo)
+{
+       char buffer[JMSG_LENGTH_MAX];
+       (*cinfo->err->format_message)(cinfo,buffer);
+       TIFFWarningExt(((TIFF*)(cinfo->client_data))->tif_clientdata,"LibJpeg","%s",buffer);
+}
+
+static void
+OJPEGLibjpegJpegErrorMgrErrorExit(jpeg_common_struct* cinfo)
+{
+       char buffer[JMSG_LENGTH_MAX];
+       (*cinfo->err->format_message)(cinfo,buffer);
+       TIFFErrorExt(((TIFF*)(cinfo->client_data))->tif_clientdata,"LibJpeg","%s",buffer);
+       jpeg_encap_unwind((TIFF*)(cinfo->client_data));
+}
+
+static void
+OJPEGLibjpegJpegSourceMgrInitSource(jpeg_decompress_struct* cinfo)
+{
+       (void)cinfo;
+}
+
+static boolean
+OJPEGLibjpegJpegSourceMgrFillInputBuffer(jpeg_decompress_struct* cinfo)
+{
+       TIFF* tif=(TIFF*)cinfo->client_data;
+       OJPEGState* sp=(OJPEGState*)tif->tif_data;
+       void* mem=0;
+       uint32 len=0U;
+       if (OJPEGWriteStream(tif,&mem,&len)==0)
+       {
+               TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Premature end of JPEG data");
+               jpeg_encap_unwind(tif);
+       }
+       sp->libjpeg_jpeg_source_mgr.bytes_in_buffer=len;
+       sp->libjpeg_jpeg_source_mgr.next_input_byte=mem;
+       return(1);
+}
+
+static void
+OJPEGLibjpegJpegSourceMgrSkipInputData(jpeg_decompress_struct* cinfo, long num_bytes)
+{
+       TIFF* tif=(TIFF*)cinfo->client_data;
+       (void)num_bytes;
+       TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Unexpected error");
+       jpeg_encap_unwind(tif);
+}
+
+static boolean
+OJPEGLibjpegJpegSourceMgrResyncToRestart(jpeg_decompress_struct* cinfo, int desired)
+{
+       TIFF* tif=(TIFF*)cinfo->client_data;
+       (void)desired;
+       TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Unexpected error");
+       jpeg_encap_unwind(tif);
+       return(0);
+}
+
+static void
+OJPEGLibjpegJpegSourceMgrTermSource(jpeg_decompress_struct* cinfo)
+{
+       (void)cinfo;
+}
+
+#endif
 
-int
-TIFFInitOJPEG(register TIFF *tif,int scheme)
-  { register OJPEGState *sp;
-#   define td (&tif->tif_dir)
-#   ifndef never
-
- /* This module supports a decompression-only CODEC, which is intended strictly
-    for viewing old image files using the obsolete JPEG-in-TIFF encapsulation
-    specified by the TIFF Version 6.0 specification.  It does not, and never
-    should, support compression for new images.  If a client application asks us
-    to, refuse and complain loudly!
- */
-    if (tif->tif_mode != O_RDONLY) return _notSupported(tif);
-#   endif /* never */
-    if (!isMapped(tif))
-      {
-
-     /* BEWARE OF KLUDGE:  If our host operating-system doesn't let an image
-                           file be "memory mapped", then we want to read the
-        entire file into a single (possibly large) memory buffer as if it had
-        been "memory mapped".  Although this is likely to waste space, because
-        analysis of the file's content might cause parts of it to be read into
-        smaller buffers duplicatively, it appears to be the lesser of several
-        evils.  Very old JPEG-in-TIFF encapsulations aren't guaranteed to be
-        JFIF bit streams, or to have a TIFF "JPEGTables" record or much other
-        "metadata" to help us locate the decoding tables and entropy-coded data,
-        so we're likely do a lot of random-access grokking around, and we must
-        ultimately tell the JPEG Library to sequentially scan much of the file
-        anyway.  This is all likely to be easier if we use "brute force" to
-        read the entire file, once, and don't use incremental disc I/O.  If our
-        client application tries to process a file so big that we can't buffer
-        it entirely, then tough shit: we'll give up and exit!
-     */
-        if (!(tif->tif_base = _TIFFmalloc(tif->tif_size=TIFFGetFileSize(tif))))
-          {
-            TIFFError(tif->tif_name,"Cannot allocate file buffer");
-            return 0;
-          };
-        if (!SeekOK(tif,0) || !ReadOK(tif,tif->tif_base,tif->tif_size))
-          {
-            TIFFError(tif->tif_name,"Cannot read file");
-            return 0;
-          }
-      };
-
- /* Allocate storage for this module's per-file variables. */
-
-    if (!(tif->tif_data = (tidata_t)_TIFFmalloc(sizeof *sp)))
-      {
-        TIFFError("TIFFInitOJPEG","No space for JPEG state block");
-        return 0;
-      };
-    (sp = OJState(tif))->tif = tif; /* Initialize reverse pointer */
-    sp->cinfo.d.err = jpeg_std_error(&sp->err); /* Initialize error handling */
-    sp->err.error_exit = TIFFojpeg_error_exit;
-    sp->err.output_message = TIFFojpeg_output_message;
-    if (!CALLVJPEG(sp,jpeg_create_decompress(&sp->cinfo.d))) return 0;
-
- /* Install CODEC-specific tag information and override default TIFF Library
-    "method" subroutines with our own, CODEC-specific methods.  Like all good
-    members of an object-class, we save some of these subroutine pointers for
-    "fall back" in case our own methods fail.
- */
-    _TIFFMergeFieldInfo(tif,ojpegFieldInfo,
-      sizeof ojpegFieldInfo/sizeof *ojpegFieldInfo);
-    sp->defsparent = tif->tif_defstripsize;
-    sp->deftparent = tif->tif_deftilesize;
-    sp->vgetparent = tif->tif_tagmethods.vgetfield;
-    sp->vsetparent = tif->tif_tagmethods.vsetfield;
-    tif->tif_defstripsize = OJPEGDefaultStripSize;
-    tif->tif_deftilesize = OJPEGDefaultTileSize;
-    tif->tif_tagmethods.vgetfield = OJPEGVGetField;
-    tif->tif_tagmethods.vsetfield = OJPEGVSetField;
-    tif->tif_tagmethods.printdir = OJPEGPrintDir;
-#   ifdef never
-    tif->tif_setupencode = OJPEGSetupEncode;
-    tif->tif_preencode = OJPEGPreEncode;
-    tif->tif_postencode = OJPEGPostEncode;
-#   else /* well, hardly ever */
-    tif->tif_setupencode = tif->tif_postencode = _notSupported;
-    tif->tif_preencode = (TIFFPreMethod)_notSupported;
-#   endif /* never */
-    tif->tif_setupdecode = OJPEGSetupDecode;
-    tif->tif_predecode = OJPEGPreDecode;
-    tif->tif_postdecode = OJPEGPostDecode;
-    tif->tif_cleanup = OJPEGCleanUp;
-
- /* If the image file doesn't have "JPEGInterchangeFormat[Length]" TIFF records
-    to guide us, we have few clues about where its encapsulated JPEG bit stream
-    is located, so establish intelligent defaults:  If the Image File Directory
-    doesn't immediately follow the TIFF header, assume that the JPEG data lies
-    in between; otherwise, assume that it follows the Image File Directory.
- */
-    if (tif->tif_header.tiff_diroff > sizeof tif->tif_header)
-      {
-        sp->src.next_input_byte = tif->tif_base + sizeof tif->tif_header;
-        sp->src.bytes_in_buffer = tif->tif_header.tiff_diroff
-                                - sizeof tif->tif_header;
-      }
-    else /* this case is ugly! */
-      { uint32 maxoffset = tif->tif_size;
-        uint16 dircount;
-
-     /* Calculate the offset to the next Image File Directory, if there is one,
-        or to the end of the file, if not.  Then arrange to read the file from
-        the end of the Image File Directory to that offset.
-     */
-        if (tif->tif_nextdiroff) maxoffset = tif->tif_nextdiroff; /* Not EOF */
-        _TIFFmemcpy(&dircount,(const tdata_t)
-          (sp->src.next_input_byte = tif->tif_base+tif->tif_header.tiff_diroff),
-          sizeof dircount);
-        if (tif->tif_flags & TIFF_SWAB) TIFFSwabShort(&dircount);
-        sp->src.next_input_byte += dircount*sizeof(TIFFDirEntry)
-                                + sizeof maxoffset + sizeof dircount;
-        sp->src.bytes_in_buffer = tif->tif_base - sp->src.next_input_byte
-                                + maxoffset;
-      };
-
- /* IJG JPEG Library Version 6B can be configured for either 8- or 12-bit sample
-    precision, but we assume that "old JPEG" TIFF clients only need 8 bits.
- */
-    sp->cinfo.d.data_precision = 8;
-#   ifdef C_LOSSLESS_SUPPORTED
 
- /* If the "JPEGProc" TIFF tag is missing from the Image File Dictionary, the
-    JPEG Library will use its (lossy) baseline sequential process by default.
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
  */
-    sp->cinfo.d.data_unit = DCTSIZE;
-#   endif /* C_LOSSLESS_SUPPORTED */
-
- /* Initialize other CODEC-specific variables requiring default values. */
-
-    tif->tif_flags |= TIFF_NOBITREV; /* No bit-reversal within data bytes */
-    sp->h_sampling = sp->v_sampling = 1; /* No subsampling by default */
-    sp->is_WANG = 0; /* Assume not a MS Windows Wang Imaging file by default */
-    sp->jpegtables = 0; /* No "new"-style JPEG tables synthesized yet */
-    sp->jpegtables_length = 0;
-    sp->jpegquality = 75; /* Default IJG quality */
-    sp->jpegcolormode = JPEGCOLORMODE_RAW;
-    sp->jpegtablesmode = 0; /* No tables found yet */
-    sp->jpeglosslesspredictors=0;
-    sp->jpeglosslesspredictors_length=0;
-    sp->jpegpointtransform=0;
-    sp->jpegpointtransform_length=0;
-    sp->jpegqtables=0;
-    sp->jpegqtables_length=0;
-    sp->jpegdctables=0;
-    sp->jpegdctables_length=0;
-    sp->jpegactables=0;
-    sp->jpegactables_length=0;
-    return 1;
-#   undef td
-  }
-#endif /* OJPEG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
index f0a253e3639c79b07af58184f46e5fc3f3f08756..561d91dea66eea29ca3240df30d0a05c355acd6c 100644 (file)
  */
 #include "tiffiop.h"
 
-static const long typemask[13] = {
-       (long)0L,               /* TIFF_NOTYPE */
-       (long)0x000000ffL,      /* TIFF_BYTE */
-       (long)0xffffffffL,      /* TIFF_ASCII */
-       (long)0x0000ffffL,      /* TIFF_SHORT */
-       (long)0xffffffffL,      /* TIFF_LONG */
-       (long)0xffffffffL,      /* TIFF_RATIONAL */
-       (long)0x000000ffL,      /* TIFF_SBYTE */
-       (long)0x000000ffL,      /* TIFF_UNDEFINED */
-       (long)0x0000ffffL,      /* TIFF_SSHORT */
-       (long)0xffffffffL,      /* TIFF_SLONG */
-       (long)0xffffffffL,      /* TIFF_SRATIONAL */
-       (long)0xffffffffL,      /* TIFF_FLOAT */
-       (long)0xffffffffL,      /* TIFF_DOUBLE */
-};
-static const int bigTypeshift[13] = {
-       0,              /* TIFF_NOTYPE */
-       24,             /* TIFF_BYTE */
-       0,              /* TIFF_ASCII */
-       16,             /* TIFF_SHORT */
-       0,              /* TIFF_LONG */
-       0,              /* TIFF_RATIONAL */
-       24,             /* TIFF_SBYTE */
-       24,             /* TIFF_UNDEFINED */
-       16,             /* TIFF_SSHORT */
-       0,              /* TIFF_SLONG */
-       0,              /* TIFF_SRATIONAL */
-       0,              /* TIFF_FLOAT */
-       0,              /* TIFF_DOUBLE */
-};
-static const int litTypeshift[13] = {
-       0,              /* TIFF_NOTYPE */
-       0,              /* TIFF_BYTE */
-       0,              /* TIFF_ASCII */
-       0,              /* TIFF_SHORT */
-       0,              /* TIFF_LONG */
-       0,              /* TIFF_RATIONAL */
-       0,              /* TIFF_SBYTE */
-       0,              /* TIFF_UNDEFINED */
-       0,              /* TIFF_SSHORT */
-       0,              /* TIFF_SLONG */
-       0,              /* TIFF_SRATIONAL */
-       0,              /* TIFF_FLOAT */
-       0,              /* TIFF_DOUBLE */
-};
-
 /*
  * Dummy functions to fill the omitted client procedures.
  */
 static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+_tiffDummyMapProc(thandle_t fd, void** pbase, toff_t* psize)
 {
        (void) fd; (void) pbase; (void) psize;
        return (0);
 }
 
 static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+_tiffDummyUnmapProc(thandle_t fd, void* base, toff_t size)
 {
        (void) fd; (void) base; (void) size;
 }
 
-/*
- * Initialize the shift & mask tables, and the
- * byte swapping state according to the file
- * contents and the machine architecture.
- */
-static void
-TIFFInitOrder(TIFF* tif, int magic)
-{
-       tif->tif_typemask = typemask;
-       if (magic == TIFF_BIGENDIAN) {
-               tif->tif_typeshift = bigTypeshift;
-#ifndef WORDS_BIGENDIAN
-               tif->tif_flags |= TIFF_SWAB;
-#endif
-       } else {
-               tif->tif_typeshift = litTypeshift;
-#ifdef WORDS_BIGENDIAN
-               tif->tif_flags |= TIFF_SWAB;
-#endif
-       }
-}
-
 int
 _TIFFgetMode(const char* mode, const char* module)
 {
@@ -155,10 +87,36 @@ TIFFClientOpen(
        int m;
        const char* cp;
 
+       /* The following are configuration checks. They should be redundant, but should not
+        * compile to any actual code in an optimised release build anyway. If any of them
+        * fail, (makefile-based or other) configuration is not correct */
+       assert(sizeof(uint8)==1);
+       assert(sizeof(int8)==1);
+       assert(sizeof(uint16)==2);
+       assert(sizeof(int16)==2);
+       assert(sizeof(uint32)==4);
+       assert(sizeof(int32)==4);
+       assert(sizeof(uint64)==8);
+       assert(sizeof(int64)==8);
+       assert(sizeof(tmsize_t)==sizeof(void*));
+       {
+               union{
+                       uint8 a8[2];
+                       uint16 a16;
+               } n;
+               n.a8[0]=1;
+               n.a8[1]=0;
+               #ifdef WORDS_BIGENDIAN
+               assert(n.a16==256);
+               #else
+               assert(n.a16==1);
+               #endif
+       }
+
        m = _TIFFgetMode(mode, module);
        if (m == -1)
                goto bad2;
-       tif = (TIFF *)_TIFFmalloc(sizeof (TIFF) + strlen(name) + 1);
+       tif = (TIFF *)_TIFFmalloc((tmsize_t)(sizeof (TIFF) + strlen(name) + 1));
        if (tif == NULL) {
                TIFFErrorExt(clientdata, module, "%s: Out of memory (TIFF structure)", name);
                goto bad2;
@@ -167,14 +125,14 @@ TIFFClientOpen(
        tif->tif_name = (char *)tif + sizeof (TIFF);
        strcpy(tif->tif_name, name);
        tif->tif_mode = m &~ (O_CREAT|O_TRUNC);
-       tif->tif_curdir = (tdir_t) -1;          /* non-existent directory */
+       tif->tif_curdir = (uint16) -1;          /* non-existent directory */
        tif->tif_curoff = 0;
-       tif->tif_curstrip = (tstrip_t) -1;      /* invalid strip */
+       tif->tif_curstrip = (uint32) -1;        /* invalid strip */
        tif->tif_row = (uint32) -1;             /* read/write pre-increment */
        tif->tif_clientdata = clientdata;
        if (!readproc || !writeproc || !seekproc || !closeproc || !sizeproc) {
                TIFFErrorExt(clientdata, module,
-                         "One of the client procedures is NULL pointer.");
+                   "One of the client procedures is NULL pointer.");
                goto bad2;
        }
        tif->tif_readproc = readproc;
@@ -182,7 +140,7 @@ TIFFClientOpen(
        tif->tif_seekproc = seekproc;
        tif->tif_closeproc = closeproc;
        tif->tif_sizeproc = sizeproc;
-        if (mapproc)
+       if (mapproc)
                tif->tif_mapproc = mapproc;
        else
                tif->tif_mapproc = _tiffDummyMapProc;
@@ -190,7 +148,7 @@ TIFFClientOpen(
                tif->tif_unmapproc = unmapproc;
        else
                tif->tif_unmapproc = _tiffDummyUnmapProc;
-       _TIFFSetDefaultCompressionState(tif);   /* setup default state */
+       _TIFFSetDefaultCompressionState(tif);    /* setup default state */
        /*
         * Default is to return data MSB2LSB and enable the
         * use of memory-mapped files and strip chopping when
@@ -198,12 +156,12 @@ TIFFClientOpen(
         */
        tif->tif_flags = FILLORDER_MSB2LSB;
        if (m == O_RDONLY )
-            tif->tif_flags |= TIFF_MAPPED;
+               tif->tif_flags |= TIFF_MAPPED;
 
-#ifdef STRIPCHOP_DEFAULT
+       #ifdef STRIPCHOP_DEFAULT
        if (m == O_RDONLY || m == O_RDWR)
                tif->tif_flags |= STRIPCHOP_DEFAULT;
-#endif
+       #endif
 
        /*
         * Process library-specific flags in the open mode string.
@@ -213,16 +171,18 @@ TIFFClientOpen(
         * TIFF but only supports some braindead idea of what the
         * vendor thinks TIFF is):
         *
-        * 'l'          use little-endian byte order for creating a file
-        * 'b'          use big-endian byte order for creating a file
-        * 'L'          read/write information using LSB2MSB bit order
-        * 'B'          read/write information using MSB2LSB bit order
-        * 'H'          read/write information using host bit order
-        * 'M'          enable use of memory-mapped files when supported
-        * 'm'          disable use of memory-mapped files
-        * 'C'          enable strip chopping support when reading
-        * 'c'          disable strip chopping support
-        * 'h'          read TIFF header only, do not load the first IFD
+        * 'l' use little-endian byte order for creating a file
+        * 'b' use big-endian byte order for creating a file
+        * 'L' read/write information using LSB2MSB bit order
+        * 'B' read/write information using MSB2LSB bit order
+        * 'H' read/write information using host bit order
+        * 'M' enable use of memory-mapped files when supported
+        * 'm' disable use of memory-mapped files
+        * 'C' enable strip chopping support when reading
+        * 'c' disable strip chopping support
+        * 'h' read TIFF header only, do not load the first IFD
+        * '4' ClassicTIFF for creating a file (default)
+        * '8' BigTIFF for creating a file
         *
         * The use of the 'l' and 'b' flags is strongly discouraged.
         * These flags are provided solely because numerous vendors,
@@ -257,92 +217,120 @@ TIFFClientOpen(
         */
        for (cp = mode; *cp; cp++)
                switch (*cp) {
-               case 'b':
-#ifndef WORDS_BIGENDIAN
-                   if (m&O_CREAT)
-                               tif->tif_flags |= TIFF_SWAB;
-#endif
-                       break;
-               case 'l':
-#ifdef WORDS_BIGENDIAN
-                       if ((m&O_CREAT))
-                               tif->tif_flags |= TIFF_SWAB;
-#endif
-                       break;
-               case 'B':
-                       tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-                           FILLORDER_MSB2LSB;
-                       break;
-               case 'L':
-                       tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-                           FILLORDER_LSB2MSB;
-                       break;
-               case 'H':
-                       tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
-                           HOST_FILLORDER;
-                       break;
-               case 'M':
-                       if (m == O_RDONLY)
-                               tif->tif_flags |= TIFF_MAPPED;
-                       break;
-               case 'm':
-                       if (m == O_RDONLY)
-                               tif->tif_flags &= ~TIFF_MAPPED;
-                       break;
-               case 'C':
-                       if (m == O_RDONLY)
-                               tif->tif_flags |= TIFF_STRIPCHOP;
-                       break;
-               case 'c':
-                       if (m == O_RDONLY)
-                               tif->tif_flags &= ~TIFF_STRIPCHOP;
-                       break;
-               case 'h':
-                       tif->tif_flags |= TIFF_HEADERONLY;
-                       break;
+                       case 'b':
+                               #ifndef WORDS_BIGENDIAN
+                               if (m&O_CREAT)
+                                       tif->tif_flags |= TIFF_SWAB;
+                               #endif
+                               break;
+                       case 'l':
+                               #ifdef WORDS_BIGENDIAN
+                               if ((m&O_CREAT))
+                                       tif->tif_flags |= TIFF_SWAB;
+                               #endif
+                               break;
+                       case 'B':
+                               tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
+                                   FILLORDER_MSB2LSB;
+                               break;
+                       case 'L':
+                               tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
+                                   FILLORDER_LSB2MSB;
+                               break;
+                       case 'H':
+                               tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
+                                   HOST_FILLORDER;
+                               break;
+                       case 'M':
+                               if (m == O_RDONLY)
+                                       tif->tif_flags |= TIFF_MAPPED;
+                               break;
+                       case 'm':
+                               if (m == O_RDONLY)
+                                       tif->tif_flags &= ~TIFF_MAPPED;
+                               break;
+                       case 'C':
+                               if (m == O_RDONLY)
+                                       tif->tif_flags |= TIFF_STRIPCHOP;
+                               break;
+                       case 'c':
+                               if (m == O_RDONLY)
+                                       tif->tif_flags &= ~TIFF_STRIPCHOP;
+                               break;
+                       case 'h':
+                               tif->tif_flags |= TIFF_HEADERONLY;
+                               break;
+                       case '8':
+                               if (m&O_CREAT)
+                                       tif->tif_flags |= TIFF_BIGTIFF;
+                               break;
                }
        /*
         * Read in TIFF header.
         */
-       if (tif->tif_mode & O_TRUNC ||
-           !ReadOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
+       if ((m & O_TRUNC) ||
+           !ReadOK(tif, &tif->tif_header, sizeof (TIFFHeaderClassic))) {
                if (tif->tif_mode == O_RDONLY) {
-                       TIFFErrorExt(tif->tif_clientdata, name, "Cannot read TIFF header");
+                       TIFFErrorExt(tif->tif_clientdata, name,
+                           "Cannot read TIFF header");
                        goto bad;
                }
                /*
                 * Setup header and write.
                 */
-#ifdef WORDS_BIGENDIAN
-               tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
+               #ifdef WORDS_BIGENDIAN
+               tif->tif_header.common.tiff_magic = tif->tif_flags & TIFF_SWAB
                    ? TIFF_LITTLEENDIAN : TIFF_BIGENDIAN;
-#else
-               tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
+               #else
+               tif->tif_header.common.tiff_magic = tif->tif_flags & TIFF_SWAB
                    ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN;
-#endif
-               tif->tif_header.tiff_version = TIFF_VERSION;
-               if (tif->tif_flags & TIFF_SWAB)
-                       TIFFSwabShort(&tif->tif_header.tiff_version);
-               tif->tif_header.tiff_diroff = 0;        /* filled in later */
-
-
-                /*
-                 * The doc for "fopen" for some STD_C_LIBs says that if you 
-                 * open a file for modify ("+"), then you must fseek (or 
-                 * fflush?) between any freads and fwrites.  This is not
-                 * necessary on most systems, but has been shown to be needed
-                 * on Solaris. 
-                 */
-                TIFFSeekFile( tif, 0, SEEK_SET );
-               
-               if (!WriteOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
-                       TIFFErrorExt(tif->tif_clientdata, name, "Error writing TIFF header");
+               #endif
+               if (!(tif->tif_flags&TIFF_BIGTIFF))
+               {
+                       tif->tif_header.common.tiff_version = TIFF_VERSION_CLASSIC;
+                       tif->tif_header.classic.tiff_diroff = 0;
+                       if (tif->tif_flags & TIFF_SWAB)
+                               TIFFSwabShort(&tif->tif_header.common.tiff_version);
+                       tif->tif_header_size = sizeof(TIFFHeaderClassic);
+               }
+               else
+               {
+                       tif->tif_header.common.tiff_version = TIFF_VERSION_BIG;
+                       tif->tif_header.big.tiff_offsetsize = 8;
+                       tif->tif_header.big.tiff_unused = 0;
+                       tif->tif_header.big.tiff_diroff = 0;
+                       if (tif->tif_flags & TIFF_SWAB)
+                       {
+                               TIFFSwabShort(&tif->tif_header.common.tiff_version);
+                               TIFFSwabShort(&tif->tif_header.big.tiff_offsetsize);
+                       }
+                       tif->tif_header_size = sizeof (TIFFHeaderBig);
+               }
+               /*
+                * The doc for "fopen" for some STD_C_LIBs says that if you
+                * open a file for modify ("+"), then you must fseek (or
+                * fflush?) between any freads and fwrites.  This is not
+                * necessary on most systems, but has been shown to be needed
+                * on Solaris.
+                */
+               TIFFSeekFile( tif, 0, SEEK_SET );
+               if (!WriteOK(tif, &tif->tif_header, (tmsize_t)(tif->tif_header_size))) {
+                       TIFFErrorExt(tif->tif_clientdata, name,
+                           "Error writing TIFF header");
                        goto bad;
                }
                /*
                 * Setup the byte order handling.
                 */
-               TIFFInitOrder(tif, tif->tif_header.tiff_magic);
+               if (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN) {
+                       #ifndef WORDS_BIGENDIAN
+                       tif->tif_flags |= TIFF_SWAB;
+                       #endif
+               } else {
+                       #ifdef WORDS_BIGENDIAN
+                       tif->tif_flags |= TIFF_SWAB;
+                       #endif
+               }
                /*
                 * Setup default directory.
                 */
@@ -350,99 +338,146 @@ TIFFClientOpen(
                        goto bad;
                tif->tif_diroff = 0;
                tif->tif_dirlist = NULL;
+               tif->tif_dirlistsize = 0;
                tif->tif_dirnumber = 0;
                return (tif);
        }
        /*
         * Setup the byte order handling.
         */
-       if (tif->tif_header.tiff_magic != TIFF_BIGENDIAN &&
-           tif->tif_header.tiff_magic != TIFF_LITTLEENDIAN
-#if MDI_SUPPORT
+       if (tif->tif_header.common.tiff_magic != TIFF_BIGENDIAN &&
+           tif->tif_header.common.tiff_magic != TIFF_LITTLEENDIAN
+           #if MDI_SUPPORT
            &&
-#if HOST_BIGENDIAN
-           tif->tif_header.tiff_magic != MDI_BIGENDIAN
-#else
-           tif->tif_header.tiff_magic != MDI_LITTLEENDIAN
-#endif
+           #if HOST_BIGENDIAN
+           tif->tif_header.common.tiff_magic != MDI_BIGENDIAN
+           #else
+           tif->tif_header.common.tiff_magic != MDI_LITTLEENDIAN
+           #endif
            ) {
-               TIFFErrorExt(tif->tif_clientdata, name,  "Not a TIFF or MDI file, bad magic number %d (0x%x)",
-#else
+               TIFFErrorExt(tif->tif_clientdata, name,
+                   "Not a TIFF or MDI file, bad magic number %d (0x%x)",
+           #else
            ) {
-               TIFFErrorExt(tif->tif_clientdata, name,  "Not a TIFF file, bad magic number %d (0x%x)",
-#endif
-                   tif->tif_header.tiff_magic,
-                   tif->tif_header.tiff_magic);
-               goto bad;
-       }
-       TIFFInitOrder(tif, tif->tif_header.tiff_magic);
-       /*
-        * Swap header if required.
-        */
-       if (tif->tif_flags & TIFF_SWAB) {
-               TIFFSwabShort(&tif->tif_header.tiff_version);
-               TIFFSwabLong(&tif->tif_header.tiff_diroff);
-       }
-       /*
-        * Now check version (if needed, it's been byte-swapped).
-        * Note that this isn't actually a version number, it's a
-        * magic number that doesn't change (stupid).
-        */
-       if (tif->tif_header.tiff_version == TIFF_BIGTIFF_VERSION) {
                TIFFErrorExt(tif->tif_clientdata, name,
-                          "This is a BigTIFF file.  This format not supported\n"
-                          "by this version of libtiff." );
+                   "Not a TIFF file, bad magic number %d (0x%x)",
+           #endif
+                   tif->tif_header.common.tiff_magic,
+                   tif->tif_header.common.tiff_magic);
                goto bad;
        }
-       if (tif->tif_header.tiff_version != TIFF_VERSION) {
+       if (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN) {
+               #ifndef WORDS_BIGENDIAN
+               tif->tif_flags |= TIFF_SWAB;
+               #endif
+       } else {
+               #ifdef WORDS_BIGENDIAN
+               tif->tif_flags |= TIFF_SWAB;
+               #endif
+       }
+       if (tif->tif_flags & TIFF_SWAB) 
+               TIFFSwabShort(&tif->tif_header.common.tiff_version);
+       if ((tif->tif_header.common.tiff_version != TIFF_VERSION_CLASSIC)&&
+           (tif->tif_header.common.tiff_version != TIFF_VERSION_BIG)) {
                TIFFErrorExt(tif->tif_clientdata, name,
                    "Not a TIFF file, bad version number %d (0x%x)",
-                   tif->tif_header.tiff_version,
-                   tif->tif_header.tiff_version); 
+                   tif->tif_header.common.tiff_version,
+                   tif->tif_header.common.tiff_version);
                goto bad;
        }
+       if (tif->tif_header.common.tiff_version == TIFF_VERSION_CLASSIC)
+       {
+               if (tif->tif_flags & TIFF_SWAB)
+                       TIFFSwabLong(&tif->tif_header.classic.tiff_diroff);
+               tif->tif_header_size = sizeof(TIFFHeaderClassic);
+       }
+       else
+       {
+               if (!ReadOK(tif, ((uint8*)(&tif->tif_header) + sizeof(TIFFHeaderClassic)), (sizeof(TIFFHeaderBig)-sizeof(TIFFHeaderClassic))))
+               {
+                       TIFFErrorExt(tif->tif_clientdata, name,
+                           "Cannot read TIFF header");
+                       goto bad;
+               }
+               if (tif->tif_flags & TIFF_SWAB)
+               {
+                       TIFFSwabShort(&tif->tif_header.big.tiff_offsetsize);
+                       TIFFSwabLong8(&tif->tif_header.big.tiff_diroff);
+               }
+               if (tif->tif_header.big.tiff_offsetsize != 8)
+               {
+                       TIFFErrorExt(tif->tif_clientdata, name,
+                           "Not a TIFF file, bad BigTIFF offsetsize %d (0x%x)",
+                           tif->tif_header.big.tiff_offsetsize,
+                           tif->tif_header.big.tiff_offsetsize);
+                       goto bad;
+               }
+               if (tif->tif_header.big.tiff_unused != 0)
+               {
+                       TIFFErrorExt(tif->tif_clientdata, name,
+                           "Not a TIFF file, bad BigTIFF unused %d (0x%x)",
+                           tif->tif_header.big.tiff_unused,
+                           tif->tif_header.big.tiff_unused);
+                       goto bad;
+               }
+               tif->tif_header_size = sizeof(TIFFHeaderBig);
+               tif->tif_flags |= TIFF_BIGTIFF;
+       }
        tif->tif_flags |= TIFF_MYBUFFER;
        tif->tif_rawcp = tif->tif_rawdata = 0;
        tif->tif_rawdatasize = 0;
+        tif->tif_rawdataoff = 0;
+        tif->tif_rawdataloaded = 0;
 
-       /*
-        * Sometimes we do not want to read the first directory (for example,
-        * it may be broken) and want to proceed to other directories. I this
-        * case we use the TIFF_HEADERONLY flag to open file and return
-        * immediately after reading TIFF header.
-        */
-       if (tif->tif_flags & TIFF_HEADERONLY)
-               return (tif);
-
-       /*
-        * Setup initial directory.
-        */
        switch (mode[0]) {
-       case 'r':
-               tif->tif_nextdiroff = tif->tif_header.tiff_diroff;
-               /*
-                * Try to use a memory-mapped file if the client
-                * has not explicitly suppressed usage with the
-                * 'm' flag in the open mode (see above).
-                */
-               if ((tif->tif_flags & TIFF_MAPPED) &&
-       !TIFFMapFileContents(tif, (tdata_t*) &tif->tif_base, &tif->tif_size))
-                       tif->tif_flags &= ~TIFF_MAPPED;
-               if (TIFFReadDirectory(tif)) {
-                       tif->tif_rawcc = -1;
-                       tif->tif_flags |= TIFF_BUFFERSETUP;
+               case 'r':
+                       if (!(tif->tif_flags&TIFF_BIGTIFF))
+                               tif->tif_nextdiroff = tif->tif_header.classic.tiff_diroff;
+                       else
+                               tif->tif_nextdiroff = tif->tif_header.big.tiff_diroff;
+                       /*
+                        * Try to use a memory-mapped file if the client
+                        * has not explicitly suppressed usage with the
+                        * 'm' flag in the open mode (see above).
+                        */
+                       if (tif->tif_flags & TIFF_MAPPED)
+                       {
+                               toff_t n;
+                               if (TIFFMapFileContents(tif,(void**)(&tif->tif_base),&n))
+                               {
+                                       tif->tif_size=(tmsize_t)n;
+                                       assert((toff_t)tif->tif_size==n);
+                               }
+                               else
+                                       tif->tif_flags &= ~TIFF_MAPPED;
+                       }
+                       /*
+                        * Sometimes we do not want to read the first directory (for example,
+                        * it may be broken) and want to proceed to other directories. I this
+                        * case we use the TIFF_HEADERONLY flag to open file and return
+                        * immediately after reading TIFF header.
+                        */
+                       if (tif->tif_flags & TIFF_HEADERONLY)
+                               return (tif);
+
+                       /*
+                        * Setup initial directory.
+                        */
+                       if (TIFFReadDirectory(tif)) {
+                               tif->tif_rawcc = (tmsize_t)-1;
+                               tif->tif_flags |= TIFF_BUFFERSETUP;
+                               return (tif);
+                       }
+                       break;
+               case 'a':
+                       /*
+                        * New directories are automatically append
+                        * to the end of the directory chain when they
+                        * are written out (see TIFFWriteDirectory).
+                        */
+                       if (!TIFFDefaultDirectory(tif))
+                               goto bad;
                        return (tif);
-               }
-               break;
-       case 'a':
-               /*
-                * New directories are automatically append
-                * to the end of the directory chain when they
-                * are written out (see TIFFWriteDirectory).
-                */
-               if (!TIFFDefaultDirectory(tif))
-                       goto bad;
-               return (tif);
        }
 bad:
        tif->tif_mode = O_RDONLY;       /* XXX avoid flush */
@@ -557,7 +592,7 @@ TIFFCurrentRow(TIFF* tif)
 /*
  * Return index of the current directory.
  */
-tdir_t
+uint16
 TIFFCurrentDirectory(TIFF* tif)
 {
        return (tif->tif_curdir);
@@ -566,7 +601,7 @@ TIFFCurrentDirectory(TIFF* tif)
 /*
  * Return current strip.
  */
-tstrip_t
+uint32
 TIFFCurrentStrip(TIFF* tif)
 {
        return (tif->tif_curstrip);
@@ -575,7 +610,7 @@ TIFFCurrentStrip(TIFF* tif)
 /*
  * Return current tile.
  */
-ttile_t
+uint32
 TIFFCurrentTile(TIFF* tif)
 {
        return (tif->tif_curtile);
@@ -614,7 +649,7 @@ TIFFIsMSB2LSB(TIFF* tif)
 int
 TIFFIsBigEndian(TIFF* tif)
 {
-       return (tif->tif_header.tiff_magic == TIFF_BIGENDIAN);
+       return (tif->tif_header.common.tiff_magic == TIFF_BIGENDIAN);
 }
 
 /*
@@ -681,3 +716,10 @@ TIFFGetUnmapFileProc(TIFF* tif)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 7cd4dce9ad97584d782b4e2ada1654fabe4813ce..5c7a59f6a45db59f3f8855bbc5d31134d9b38110 100644 (file)
 #include <stdio.h>
 
 static int
-PackBitsPreEncode(TIFF* tif, tsample_t s)
+PackBitsPreEncode(TIFF* tif, uint16 s)
 {
        (void) s;
 
-        if (!(tif->tif_data = (tidata_t)_TIFFmalloc(sizeof(tsize_t))))
+       if (!(tif->tif_data = (uint8*)_TIFFmalloc(sizeof(tmsize_t))))
                return (0);
        /*
         * Calculate the scanline/tile-width size in bytes.
         */
        if (isTiled(tif))
-               *(tsize_t*)tif->tif_data = TIFFTileRowSize(tif);
+               *(tmsize_t*)tif->tif_data = TIFFTileRowSize(tif);
        else
-               *(tsize_t*)tif->tif_data = TIFFScanlineSize(tif);
+               *(tmsize_t*)tif->tif_data = TIFFScanlineSize(tif);
        return (1);
 }
 
@@ -58,21 +58,16 @@ PackBitsPostEncode(TIFF* tif)
        return (1);
 }
 
-/*
- * NB: tidata is the type representing *(tidata_t);
- *     if tidata_t is made signed then this type must
- *     be adjusted accordingly.
- */
-typedef unsigned char tidata;
-
 /*
  * Encode a run of pixels.
  */
 static int
-PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
+PackBitsEncode(TIFF* tif, uint8* buf, tmsize_t cc, uint16 s)
 {
        unsigned char* bp = (unsigned char*) buf;
-       tidata_t op, ep, lastliteral;
+       uint8* op;
+       uint8* ep;
+       uint8* lastliteral;
        long n, slop;
        int b;
        enum { BASE, LITERAL, RUN, LITERAL_RUN } state;
@@ -98,8 +93,8 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                         * front of the buffer.
                         */
                        if (state == LITERAL || state == LITERAL_RUN) {
-                               slop = op - lastliteral;
-                               tif->tif_rawcc += lastliteral - tif->tif_rawcp;
+                               slop = (long)(op - lastliteral);
+                               tif->tif_rawcc += (tmsize_t)(lastliteral - tif->tif_rawcp);
                                if (!TIFFFlushData1(tif))
                                        return (-1);
                                op = tif->tif_rawcp;
@@ -107,7 +102,7 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                                        *op++ = *lastliteral++;
                                lastliteral = tif->tif_rawcp;
                        } else {
-                               tif->tif_rawcc += op - tif->tif_rawcp;
+                               tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp);
                                if (!TIFFFlushData1(tif))
                                        return (-1);
                                op = tif->tif_rawcp;
@@ -118,17 +113,17 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                        if (n > 1) {
                                state = RUN;
                                if (n > 128) {
-                                       *op++ = (tidata) -127;
-                                       *op++ = (tidataval_t) b;
+                                       *op++ = (uint8) -127;
+                                       *op++ = (uint8) b;
                                        n -= 128;
                                        goto again;
                                }
-                               *op++ = (tidataval_t)(-(n-1));
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8)(-(n-1));
+                               *op++ = (uint8) b;
                        } else {
                                lastliteral = op;
                                *op++ = 0;
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8) b;
                                state = LITERAL;
                        }
                        break;
@@ -136,33 +131,33 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                        if (n > 1) {
                                state = LITERAL_RUN;
                                if (n > 128) {
-                                       *op++ = (tidata) -127;
-                                       *op++ = (tidataval_t) b;
+                                       *op++ = (uint8) -127;
+                                       *op++ = (uint8) b;
                                        n -= 128;
                                        goto again;
                                }
-                               *op++ = (tidataval_t)(-(n-1));  /* encode run */
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8)(-(n-1));        /* encode run */
+                               *op++ = (uint8) b;
                        } else {                        /* extend literal */
                                if (++(*lastliteral) == 127)
                                        state = BASE;
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8) b;
                        }
                        break;
                case RUN:               /* last object was run */
                        if (n > 1) {
                                if (n > 128) {
-                                       *op++ = (tidata) -127;
-                                       *op++ = (tidataval_t) b;
+                                       *op++ = (uint8) -127;
+                                       *op++ = (uint8) b;
                                        n -= 128;
                                        goto again;
                                }
-                               *op++ = (tidataval_t)(-(n-1));
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8)(-(n-1));
+                               *op++ = (uint8) b;
                        } else {
                                lastliteral = op;
                                *op++ = 0;
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8) b;
                                state = LITERAL;
                        }
                        break;
@@ -173,7 +168,7 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                         * case we convert literal-run-literal
                         * to a single literal.
                         */
-                       if (n == 1 && op[-2] == (tidata) -1 &&
+                       if (n == 1 && op[-2] == (uint8) -1 &&
                            *lastliteral < 126) {
                                state = (((*lastliteral) += 2) == 127 ?
                                    BASE : LITERAL);
@@ -183,7 +178,7 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
                        goto again;
                }
        }
-       tif->tif_rawcc += op - tif->tif_rawcp;
+       tif->tif_rawcc += (tmsize_t)(op - tif->tif_rawcp);
        tif->tif_rawcp = op;
        return (1);
 }
@@ -196,12 +191,12 @@ PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
  * when it was encoded by strips.
  */
 static int
-PackBitsEncodeChunk(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+PackBitsEncodeChunk(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       tsize_t rowsize = *(tsize_t*)tif->tif_data;
+       tmsize_t rowsize = *(tmsize_t*)tif->tif_data;
 
-       while ((long)cc > 0) {
-               int     chunk = rowsize;
+       while (cc > 0) {
+               tmsize_t chunk = rowsize;
                
                if( cc < chunk )
                    chunk = cc;
@@ -215,17 +210,18 @@ PackBitsEncodeChunk(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
 }
 
 static int
-PackBitsDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+PackBitsDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
+       static const char module[] = "PackBitsDecode";
        char *bp;
-       tsize_t cc;
+       tmsize_t cc;
        long n;
        int b;
 
        (void) s;
        bp = (char*) tif->tif_rawcp;
        cc = tif->tif_rawcc;
-       while (cc > 0 && (long)occ > 0) {
+       while (cc > 0 && occ > 0) {
                n = (long) *bp++, cc--;
                /*
                 * Watch out for compilers that
@@ -236,39 +232,43 @@ PackBitsDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                if (n < 0) {            /* replicate next byte -n+1 times */
                        if (n == -128)  /* nop */
                                continue;
-                        n = -n + 1;
-                        if( occ < n )
-                        {
-                                                       TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-                                        "PackBitsDecode: discarding %d bytes "
-                                        "to avoid buffer overrun",
-                                        n - occ);
-                            n = occ;
-                        }
+                       n = -n + 1;
+                       if( occ < (tmsize_t)n )
+                       {
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                                   "Discarding %lu bytes to avoid buffer overrun",
+                                   (unsigned long) ((tmsize_t)n - occ));
+                               n = (long)occ;
+                       }
                        occ -= n;
                        b = *bp++, cc--;
                        while (n-- > 0)
-                               *op++ = (tidataval_t) b;
+                               *op++ = (uint8) b;
                } else {                /* copy next n+1 bytes literally */
-                       if (occ < n + 1)
-                        {
-                            TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
-                                        "PackBitsDecode: discarding %d bytes "
-                                        "to avoid buffer overrun",
-                                        n - occ + 1);
-                            n = occ - 1;
-                        }
-                        _TIFFmemcpy(op, bp, ++n);
+                       if (occ < (tmsize_t)(n + 1))
+                       {
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                                   "Discarding %lu bytes to avoid buffer overrun",
+                                   (unsigned long) ((tmsize_t)n - occ + 1));
+                               n = (long)occ - 1;
+                       }
+                       if (cc < (tmsize_t) (n+1)) 
+                       {
+                               TIFFWarningExt(tif->tif_clientdata, module,
+                                              "Terminating PackBitsDecode due to lack of data.");
+                               break;
+                       }
+                       _TIFFmemcpy(op, bp, ++n);
                        op += n; occ -= n;
                        bp += n; cc -= n;
                }
        }
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        if (occ > 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "PackBitsDecode: Not enough data for scanline %ld",
-                   (long) tif->tif_row);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Not enough data for scanline %lu",
+                   (unsigned long) tif->tif_row);
                return (0);
        }
        return (1);
@@ -282,7 +282,7 @@ TIFFInitPackBits(TIFF* tif, int scheme)
        tif->tif_decodestrip = PackBitsDecode;
        tif->tif_decodetile = PackBitsDecode;
        tif->tif_preencode = PackBitsPreEncode;
-        tif->tif_postencode = PackBitsPostEncode;
+       tif->tif_postencode = PackBitsPostEncode;
        tif->tif_encoderow = PackBitsEncode;
        tif->tif_encodestrip = PackBitsEncodeChunk;
        tif->tif_encodetile = PackBitsEncodeChunk;
@@ -291,3 +291,10 @@ TIFFInitPackBits(TIFF* tif, int scheme)
 #endif /* PACKBITS_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 817081d8a945f23d9a238456bd3df400eaefc7a0..572dc7f266d28060041ebbc804ff830ec1a658e4 100644 (file)
  * The codec also handle byte swapping the encoded values as necessary
  * since the library does not have the information necessary
  * to know the bit depth of the raw unencoded buffer.
- * 
+ *
+ * NOTE: This decoder does not appear to update tif_rawcp, and tif_rawcc.
+ * This can cause problems with the implementation of CHUNKY_STRIP_READ_SUPPORT
+ * as noted in http://trac.osgeo.org/gdal/ticket/3894.   FrankW - Jan'11
  */
 
 #include "tif_predict.h"
@@ -108,7 +111,7 @@ static float  LogK1, LogK2;
 #define REPEAT(n, op)   { int i; i=n; do { i--; op; } while (i>0); }
 
 static void
-horizontalAccumulateF(uint16 *wp, int n, int stride, float *op, 
+horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
        float *ToLinearF)
 {
     register unsigned int  cr, cg, cb, ca, mask;
@@ -117,9 +120,9 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           t0 = ToLinearF[cr = wp[0]];
-           t1 = ToLinearF[cg = wp[1]];
-           t2 = ToLinearF[cb = wp[2]];
+           t0 = ToLinearF[cr = (wp[0] & mask)];
+           t1 = ToLinearF[cg = (wp[1] & mask)];
+           t2 = ToLinearF[cb = (wp[2] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -136,10 +139,10 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
                op[2] = t2;
            }
        } else if (stride == 4) {
-           t0 = ToLinearF[cr = wp[0]];
-           t1 = ToLinearF[cg = wp[1]];
-           t2 = ToLinearF[cb = wp[2]];
-           t3 = ToLinearF[ca = wp[3]];
+           t0 = ToLinearF[cr = (wp[0] & mask)];
+           t1 = ToLinearF[cg = (wp[1] & mask)];
+           t2 = ToLinearF[cb = (wp[2] & mask)];
+           t3 = ToLinearF[ca = (wp[3] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -183,9 +186,9 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           t0 = ToLinearF[cr = wp[0]] * SCALE12;
-           t1 = ToLinearF[cg = wp[1]] * SCALE12;
-           t2 = ToLinearF[cb = wp[2]] * SCALE12;
+           t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
+           t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
+           t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
            op[0] = CLAMP12(t0);
            op[1] = CLAMP12(t1);
            op[2] = CLAMP12(t2);
@@ -202,10 +205,10 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
                op[2] = CLAMP12(t2);
            }
        } else if (stride == 4) {
-           t0 = ToLinearF[cr = wp[0]] * SCALE12;
-           t1 = ToLinearF[cg = wp[1]] * SCALE12;
-           t2 = ToLinearF[cb = wp[2]] * SCALE12;
-           t3 = ToLinearF[ca = wp[3]] * SCALE12;
+           t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
+           t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
+           t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
+           t3 = ToLinearF[ca = (wp[3] & mask)] * SCALE12;
            op[0] = CLAMP12(t0);
            op[1] = CLAMP12(t1);
            op[2] = CLAMP12(t2);
@@ -247,9 +250,9 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           op[0] = ToLinear16[cr = wp[0]];
-           op[1] = ToLinear16[cg = wp[1]];
-           op[2] = ToLinear16[cb = wp[2]];
+           op[0] = ToLinear16[cr = (wp[0] & mask)];
+           op[1] = ToLinear16[cg = (wp[1] & mask)];
+           op[2] = ToLinear16[cb = (wp[2] & mask)];
            n -= 3;
            while (n > 0) {
                wp += 3;
@@ -260,10 +263,10 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
                op[2] = ToLinear16[(cb += wp[2]) & mask];
            }
        } else if (stride == 4) {
-           op[0] = ToLinear16[cr = wp[0]];
-           op[1] = ToLinear16[cg = wp[1]];
-           op[2] = ToLinear16[cb = wp[2]];
-           op[3] = ToLinear16[ca = wp[3]];
+           op[0] = ToLinear16[cr = (wp[0] & mask)];
+           op[1] = ToLinear16[cg = (wp[1] & mask)];
+           op[2] = ToLinear16[cb = (wp[2] & mask)];
+           op[3] = ToLinear16[ca = (wp[3] & mask)];
            n -= 4;
            while (n > 0) {
                wp += 4;
@@ -327,7 +330,7 @@ horizontalAccumulate11(uint16 *wp, int n, int stride, uint16 *op)
            while (n > 0) {
                REPEAT(stride,
                    wp[stride] += *wp; *op = *wp&mask; wp++; op++)
-               n -= stride;
+               n -= stride;
            }
        }
     }
@@ -342,9 +345,9 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
     if (n >= stride) {
        mask = CODE_MASK;
        if (stride == 3) {
-           op[0] = ToLinear8[cr = wp[0]];
-           op[1] = ToLinear8[cg = wp[1]];
-           op[2] = ToLinear8[cb = wp[2]];
+           op[0] = ToLinear8[cr = (wp[0] & mask)];
+           op[1] = ToLinear8[cg = (wp[1] & mask)];
+           op[2] = ToLinear8[cb = (wp[2] & mask)];
            n -= 3;
            while (n > 0) {
                n -= 3;
@@ -355,10 +358,10 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
                op[2] = ToLinear8[(cb += wp[2]) & mask];
            }
        } else if (stride == 4) {
-           op[0] = ToLinear8[cr = wp[0]];
-           op[1] = ToLinear8[cg = wp[1]];
-           op[2] = ToLinear8[cb = wp[2]];
-           op[3] = ToLinear8[ca = wp[3]];
+           op[0] = ToLinear8[cr = (wp[0] & mask)];
+           op[1] = ToLinear8[cg = (wp[1] & mask)];
+           op[2] = ToLinear8[cb = (wp[2] & mask)];
+           op[3] = ToLinear8[ca = (wp[3] & mask)];
            n -= 4;
            while (n > 0) {
                n -= 4;
@@ -393,9 +396,9 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
        mask = CODE_MASK;
        if (stride == 3) {
            op[0] = 0;
-           t1 = ToLinear8[cb = wp[2]];
-           t2 = ToLinear8[cg = wp[1]];
-           t3 = ToLinear8[cr = wp[0]];
+           t1 = ToLinear8[cb = (wp[2] & mask)];
+           t2 = ToLinear8[cg = (wp[1] & mask)];
+           t3 = ToLinear8[cr = (wp[0] & mask)];
            op[1] = t1;
            op[2] = t2;
            op[3] = t3;
@@ -413,10 +416,10 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
                op[3] = t3;
            }
        } else if (stride == 4) {
-           t0 = ToLinear8[ca = wp[3]];
-           t1 = ToLinear8[cb = wp[2]];
-           t2 = ToLinear8[cg = wp[1]];
-           t3 = ToLinear8[cr = wp[0]];
+           t0 = ToLinear8[ca = (wp[3] & mask)];
+           t1 = ToLinear8[cb = (wp[2] & mask)];
+           t2 = ToLinear8[cg = (wp[1] & mask)];
+           t3 = ToLinear8[cr = (wp[0] & mask)];
            op[0] = t0;
            op[1] = t1;
            op[2] = t2;
@@ -587,13 +590,12 @@ PixarLogMakeTables(PixarLogState *sp)
     return 1;
 }
 
-#define        DecoderState(tif)       ((PixarLogState*) (tif)->tif_data)
-#define        EncoderState(tif)       ((PixarLogState*) (tif)->tif_data)
+#define DecoderState(tif)      ((PixarLogState*) (tif)->tif_data)
+#define EncoderState(tif)      ((PixarLogState*) (tif)->tif_data)
 
-static int PixarLogEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PixarLogDecode(TIFF*, tidata_t, tsize_t, tsample_t);
+static int PixarLogEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s);
+static int PixarLogDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s);
 
-#define N(a)   (sizeof(a)/sizeof(a[0]))
 #define PIXARLOGDATAFMT_UNKNOWN        -1
 
 static int
@@ -631,10 +633,10 @@ PixarLogGuessDataFmt(TIFFDirectory *td)
        return guess;
 }
 
-static uint32
-multiply(size_t m1, size_t m2)
+static tmsize_t
+multiply_ms(tmsize_t m1, tmsize_t m2)
 {
-       uint32  bytes = m1 * m2;
+       tmsize_t bytes = m1 * m2;
 
        if (m1 && bytes / m1 != m2)
                bytes = 0;
@@ -642,29 +644,36 @@ multiply(size_t m1, size_t m2)
        return bytes;
 }
 
+static int
+PixarLogFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
+
 static int
 PixarLogSetupDecode(TIFF* tif)
 {
+       static const char module[] = "PixarLogSetupDecode";
        TIFFDirectory *td = &tif->tif_dir;
        PixarLogState* sp = DecoderState(tif);
-       tsize_t tbuf_size;
-       static const char module[] = "PixarLogSetupDecode";
+       tmsize_t tbuf_size;
 
        assert(sp != NULL);
 
        /* Make sure no byte swapping happens on the data
         * after decompression. */
-       tif->tif_postdecode = _TIFFNoPostDecode;
+       tif->tif_postdecode = _TIFFNoPostDecode;  
 
        /* for some reason, we can't do this in TIFFInitPixarLog */
 
        sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
            td->td_samplesperpixel : 1);
-       tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
+       tbuf_size = multiply_ms(multiply_ms(multiply_ms(sp->stride, td->td_imagewidth),
                                      td->td_rowsperstrip), sizeof(uint16));
        if (tbuf_size == 0)
-               return (0);
-       sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
+               return (0);   /* TODO: this is an error return without error report through TIFFErrorExt */
+       sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size+sizeof(uint16)*sp->stride);
        if (sp->tbuf == NULL)
                return (0);
        if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
@@ -677,7 +686,7 @@ PixarLogSetupDecode(TIFF* tif)
        }
 
        if (inflateInit(&sp->stream) != Z_OK) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
+               TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
                return (0);
        } else {
                sp->state |= PLSTATE_INIT;
@@ -689,24 +698,36 @@ PixarLogSetupDecode(TIFF* tif)
  * Setup state for decoding a strip.
  */
 static int
-PixarLogPreDecode(TIFF* tif, tsample_t s)
+PixarLogPreDecode(TIFF* tif, uint16 s)
 {
+       static const char module[] = "PixarLogPreDecode";
        PixarLogState* sp = DecoderState(tif);
 
        (void) s;
        assert(sp != NULL);
        sp->stream.next_in = tif->tif_rawdata;
-       sp->stream.avail_in = tif->tif_rawcc;
+       assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_in = (uInt) tif->tif_rawcc;
+       if ((tmsize_t)sp->stream.avail_in != tif->tif_rawcc)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        return (inflateReset(&sp->stream) == Z_OK);
 }
 
 static int
-PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+PixarLogDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
+       static const char module[] = "PixarLogDecode";
        TIFFDirectory *td = &tif->tif_dir;
        PixarLogState* sp = DecoderState(tif);
-       static const char module[] = "PixarLogDecode";
-       int i, nsamples, llen;
+       tmsize_t i;
+       tmsize_t nsamples;
+       int llen;
        uint16 *up;
 
        switch (sp->user_datafmt) {
@@ -723,7 +744,7 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                nsamples = occ;
                break;
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+               TIFFErrorExt(tif->tif_clientdata, module,
                        "%d bit input not supported in PixarLog",
                        td->td_bitspersample);
                return 0;
@@ -734,7 +755,16 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
        (void) s;
        assert(sp != NULL);
        sp->stream.next_out = (unsigned char *) sp->tbuf;
-       sp->stream.avail_out = nsamples * sizeof(uint16);
+       assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_out = (uInt) (nsamples * sizeof(uint16));
+       if (sp->stream.avail_out != nsamples * sizeof(uint16))
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        do {
                int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
                if (state == Z_STREAM_END) {
@@ -742,15 +772,15 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                }
                if (state == Z_DATA_ERROR) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Decoding error at scanline %d, %s",
-                           tif->tif_name, tif->tif_row, sp->stream.msg);
+                           "Decoding error at scanline %lu, %s",
+                           (unsigned long) tif->tif_row, sp->stream.msg);
                        if (inflateSync(&sp->stream) != Z_OK)
                                return (0);
                        continue;
                }
                if (state != Z_OK) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                           tif->tif_name, sp->stream.msg);
+                       TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                           sp->stream.msg);
                        return (0);
                }
        } while (sp->stream.avail_out > 0);
@@ -758,8 +788,8 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
        /* hopefully, we got all the bytes we needed */
        if (sp->stream.avail_out != 0) {
                TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Not enough data at scanline %d (short %d bytes)",
-                   tif->tif_name, tif->tif_row, sp->stream.avail_out);
+                   "Not enough data at scanline %lu (short " TIFF_UINT64_FORMAT " bytes)",
+                   (unsigned long) tif->tif_row, (TIFF_UINT64_T) sp->stream.avail_out);
                return (0);
        }
 
@@ -768,6 +798,18 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
        if (tif->tif_flags & TIFF_SWAB)
                TIFFSwabArrayOfShort(up, nsamples);
 
+       /*
+        * if llen is not an exact multiple of nsamples, the decode operation
+        * may overflow the output buffer, so truncate it enough to prevent
+        * that but still salvage as much data as possible.
+        */
+       if (nsamples % llen) { 
+               TIFFWarningExt(tif->tif_clientdata, module,
+                       "stride %lu is not a multiple of sample count, "
+                       "%lu, data truncated.", (unsigned long) llen, (unsigned long) nsamples);
+               nsamples -= nsamples % llen;
+       }
+
        for (i = 0; i < nsamples; i += llen, up += llen) {
                switch (sp->user_datafmt)  {
                case PIXARLOGDATAFMT_FLOAT:
@@ -801,8 +843,8 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
                        op += llen * sizeof(unsigned char);
                        break;
                default:
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                                 "PixarLogDecode: unsupported bits/sample: %d", 
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                                 "Unsupported bits/sample: %d",
                                  td->td_bitspersample);
                        return (0);
                }
@@ -814,10 +856,10 @@ PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
 static int
 PixarLogSetupEncode(TIFF* tif)
 {
+       static const char module[] = "PixarLogSetupEncode";
        TIFFDirectory *td = &tif->tif_dir;
        PixarLogState* sp = EncoderState(tif);
-       tsize_t tbuf_size;
-       static const char module[] = "PixarLogSetupEncode";
+       tmsize_t tbuf_size;
 
        assert(sp != NULL);
 
@@ -825,10 +867,10 @@ PixarLogSetupEncode(TIFF* tif)
 
        sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
            td->td_samplesperpixel : 1);
-       tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
+       tbuf_size = multiply_ms(multiply_ms(multiply_ms(sp->stride, td->td_imagewidth),
                                      td->td_rowsperstrip), sizeof(uint16));
        if (tbuf_size == 0)
-               return (0);
+               return (0);  /* TODO: this is an error return without error report through TIFFErrorExt */
        sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
        if (sp->tbuf == NULL)
                return (0);
@@ -840,7 +882,7 @@ PixarLogSetupEncode(TIFF* tif)
        }
 
        if (deflateInit(&sp->stream, sp->quality) != Z_OK) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
+               TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
                return (0);
        } else {
                sp->state |= PLSTATE_INIT;
@@ -852,21 +894,30 @@ PixarLogSetupEncode(TIFF* tif)
  * Reset encoding state at the start of a strip.
  */
 static int
-PixarLogPreEncode(TIFF* tif, tsample_t s)
+PixarLogPreEncode(TIFF* tif, uint16 s)
 {
+       static const char module[] = "PixarLogPreEncode";
        PixarLogState *sp = EncoderState(tif);
 
        (void) s;
        assert(sp != NULL);
        sp->stream.next_out = tif->tif_rawdata;
+       assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
        sp->stream.avail_out = tif->tif_rawdatasize;
+       if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        return (deflateReset(&sp->stream) == Z_OK);
 }
 
 static void
 horizontalDifferenceF(float *ip, int n, int stride, uint16 *wp, uint16 *FromLT2)
 {
-
     int32 r1, g1, b1, a1, r2, g2, b2, a2, mask;
     float fltsize = Fltsize;
 
@@ -1031,12 +1082,14 @@ horizontalDifference8(unsigned char *ip, int n, int stride,
  * Encode a chunk of pixels.
  */
 static int
-PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+PixarLogEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
+       static const char module[] = "PixarLogEncode";
        TIFFDirectory *td = &tif->tif_dir;
        PixarLogState *sp = EncoderState(tif);
-       static const char module[] = "PixarLogEncode";
-       int     i, n, llen;
+       tmsize_t i;
+       tmsize_t n;
+       int llen;
        unsigned short * up;
 
        (void) s;
@@ -1055,7 +1108,7 @@ PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                n = cc;
                break;
        default:
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+               TIFFErrorExt(tif->tif_clientdata, module,
                        "%d bit input not supported in PixarLog",
                        td->td_bitspersample);
                return 0;
@@ -1081,7 +1134,7 @@ PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
                        bp += llen * sizeof(unsigned char);
                        break;
                default:
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                       TIFFErrorExt(tif->tif_clientdata, module,
                                "%d bit input not supported in PixarLog",
                                td->td_bitspersample);
                        return 0;
@@ -1089,19 +1142,29 @@ PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
        }
  
        sp->stream.next_in = (unsigned char *) sp->tbuf;
-       sp->stream.avail_in = n * sizeof(uint16);
+       assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_in = (uInt) (n * sizeof(uint16));
+       if ((sp->stream.avail_in / sizeof(uint16)) != (uInt) n)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "ZLib cannot deal with buffers this size");
+               return (0);
+       }
 
        do {
                if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
-                           tif->tif_name, sp->stream.msg);
+                       TIFFErrorExt(tif->tif_clientdata, module, "Encoder error: %s",
+                           sp->stream.msg);
                        return (0);
                }
                if (sp->stream.avail_out == 0) {
                        tif->tif_rawcc = tif->tif_rawdatasize;
                        TIFFFlushData1(tif);
                        sp->stream.next_out = tif->tif_rawdata;
-                       sp->stream.avail_out = tif->tif_rawdatasize;
+                       sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in PixarLogPreEncode */
                }
        } while (sp->stream.avail_in > 0);
        return (1);
@@ -1115,8 +1178,8 @@ PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
 static int
 PixarLogPostEncode(TIFF* tif)
 {
-       PixarLogState *sp = EncoderState(tif);
        static const char module[] = "PixarLogPostEncode";
+       PixarLogState *sp = EncoderState(tif);
        int state;
 
        sp->stream.avail_in = 0;
@@ -1126,17 +1189,17 @@ PixarLogPostEncode(TIFF* tif)
                switch (state) {
                case Z_STREAM_END:
                case Z_OK:
-                   if (sp->stream.avail_out != (uint32)tif->tif_rawdatasize) {
+                   if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize) {
                            tif->tif_rawcc =
                                tif->tif_rawdatasize - sp->stream.avail_out;
                            TIFFFlushData1(tif);
                            sp->stream.next_out = tif->tif_rawdata;
-                           sp->stream.avail_out = tif->tif_rawdatasize;
+                           sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in PixarLogPreEncode */
                    }
                    break;
                default:
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                       tif->tif_name, sp->stream.msg);
+                       TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                       sp->stream.msg);
                    return (0);
                }
        } while (state != Z_STREAM_END);
@@ -1148,9 +1211,11 @@ PixarLogClose(TIFF* tif)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
-       /* In a really sneaky maneuver, on close, we covertly modify both
-        * bitspersample and sampleformat in the directory to indicate
-        * 8-bit linear.  This way, the decode "just works" even for
+       /* In a really sneaky (and really incorrect, and untruthfull, and
+        * troublesome, and error-prone) maneuver that completely goes against
+        * the spirit of TIFF, and breaks TIFF, on close, we covertly
+        * modify both bitspersample and sampleformat in the directory to
+        * indicate 8-bit linear.  This way, the decode "just works" even for
         * readers that don't know about PixarLog, or how to set
         * the PIXARLOGDATFMT pseudo-tag.
         */
@@ -1191,26 +1256,26 @@ PixarLogCleanup(TIFF* tif)
 }
 
 static int
-PixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap)
+PixarLogVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
+    static const char module[] = "PixarLogVSetField";
     PixarLogState *sp = (PixarLogState *)tif->tif_data;
     int result;
-    static const char module[] = "PixarLogVSetField";
 
     switch (tag) {
      case TIFFTAG_PIXARLOGQUALITY:
-               sp->quality = va_arg(ap, int);
+               sp->quality = (int) va_arg(ap, int);
                if (tif->tif_mode != O_RDONLY && (sp->state&PLSTATE_INIT)) {
                        if (deflateParams(&sp->stream,
                            sp->quality, Z_DEFAULT_STRATEGY) != Z_OK) {
-                               TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                                       tif->tif_name, sp->stream.msg);
+                               TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                                       sp->stream.msg);
                                return (0);
                        }
                }
                return (1);
      case TIFFTAG_PIXARLOGDATAFMT:
-       sp->user_datafmt = va_arg(ap, int);
+       sp->user_datafmt = (int) va_arg(ap, int);
        /* Tweak the TIFF header so that the rest of libtiff knows what
         * size of data will be passed between app and library, and
         * assume that the app knows what it is doing and is not
@@ -1242,7 +1307,7 @@ PixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap)
        /*
         * Must recalculate sizes should bits/sample change.
         */
-       tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
+       tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tmsize_t)(-1);
        tif->tif_scanlinesize = TIFFScanlineSize(tif);
        result = 1;             /* NB: pseudo tag */
        break;
@@ -1253,7 +1318,7 @@ PixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap)
 }
 
 static int
-PixarLogVGetField(TIFF* tif, ttag_t tag, va_list ap)
+PixarLogVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
     PixarLogState *sp = (PixarLogState *)tif->tif_data;
 
@@ -1270,22 +1335,34 @@ PixarLogVGetField(TIFF* tif, ttag_t tag, va_list ap)
     return (1);
 }
 
-static const TIFFFieldInfo pixarlogFieldInfo[] = {
-    {TIFFTAG_PIXARLOGDATAFMT,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""},
-    {TIFFTAG_PIXARLOGQUALITY,0,0,TIFF_ANY,  FIELD_PSEUDO,FALSE,FALSE,""}
+static const TIFFField pixarlogFields[] = {
+    {TIFFTAG_PIXARLOGDATAFMT, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "", NULL},
+    {TIFFTAG_PIXARLOGQUALITY, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, FALSE, FALSE, "", NULL}
 };
 
 int
 TIFFInitPixarLog(TIFF* tif, int scheme)
 {
+       static const char module[] = "TIFFInitPixarLog";
+
        PixarLogState* sp;
 
        assert(scheme == COMPRESSION_PIXARLOG);
 
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, pixarlogFields,
+                             TIFFArrayCount(pixarlogFields))) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Merging PixarLog codec-specific tags failed");
+               return 0;
+       }
+
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (PixarLogState));
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof (PixarLogState));
        if (tif->tif_data == NULL)
                goto bad;
        sp = (PixarLogState*) tif->tif_data;
@@ -1296,22 +1373,22 @@ TIFFInitPixarLog(TIFF* tif, int scheme)
        /*
         * Install codec methods.
         */
+       tif->tif_fixuptags = PixarLogFixupTags; 
        tif->tif_setupdecode = PixarLogSetupDecode;
        tif->tif_predecode = PixarLogPreDecode;
        tif->tif_decoderow = PixarLogDecode;
-       tif->tif_decodestrip = PixarLogDecode;
+       tif->tif_decodestrip = PixarLogDecode;  
        tif->tif_decodetile = PixarLogDecode;
        tif->tif_setupencode = PixarLogSetupEncode;
        tif->tif_preencode = PixarLogPreEncode;
        tif->tif_postencode = PixarLogPostEncode;
-       tif->tif_encoderow = PixarLogEncode;
+       tif->tif_encoderow = PixarLogEncode;  
        tif->tif_encodestrip = PixarLogEncode;
-       tif->tif_encodetile = PixarLogEncode;
+       tif->tif_encodetile = PixarLogEncode;  
        tif->tif_close = PixarLogClose;
        tif->tif_cleanup = PixarLogCleanup;
 
        /* Override SetField so we can handle our private pseudo-tag */
-       _TIFFMergeFieldInfo(tif, pixarlogFieldInfo, N(pixarlogFieldInfo));
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield = PixarLogVGetField;   /* hook for codec tags */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
@@ -1333,10 +1410,17 @@ TIFFInitPixarLog(TIFF* tif, int scheme)
 
        return (1);
 bad:
-       TIFFErrorExt(tif->tif_clientdata, "TIFFInitPixarLog",
+       TIFFErrorExt(tif->tif_clientdata, module,
                     "No space for PixarLog state block");
        return (0);
 }
 #endif /* PIXARLOG_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index b4a7dfbe690629427c7503271c85187c086a7240..52411c6d14e6d0abf0c1e594ac5a540c36d84c93 100644 (file)
 
 #define        PredictorState(tif)     ((TIFFPredictorState*) (tif)->tif_data)
 
-static void horAcc8(TIFF*, tidata_t, tsize_t);
-static void horAcc16(TIFF*, tidata_t, tsize_t);
-static void swabHorAcc16(TIFF*, tidata_t, tsize_t);
-static void horDiff8(TIFF*, tidata_t, tsize_t);
-static void horDiff16(TIFF*, tidata_t, tsize_t);
-static void fpAcc(TIFF*, tidata_t, tsize_t);
-static void fpDiff(TIFF*, tidata_t, tsize_t);
-static int PredictorDecodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorDecodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorEncodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorEncodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
+static void horAcc8(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void horAcc16(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void horAcc32(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void swabHorAcc16(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void swabHorAcc32(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void horDiff8(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void horDiff16(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void horDiff32(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void fpAcc(TIFF* tif, uint8* cp0, tmsize_t cc);
+static void fpDiff(TIFF* tif, uint8* cp0, tmsize_t cc);
+static int PredictorDecodeRow(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
+static int PredictorDecodeTile(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s);
+static int PredictorEncodeRow(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s);
+static int PredictorEncodeTile(TIFF* tif, uint8* bp0, tmsize_t cc0, uint16 s);
 
 static int
 PredictorSetup(TIFF* tif)
@@ -60,25 +63,26 @@ PredictorSetup(TIFF* tif)
                        return 1;
                case PREDICTOR_HORIZONTAL:
                        if (td->td_bitspersample != 8
-                           && td->td_bitspersample != 16) {
+                           && td->td_bitspersample != 16
+                           && td->td_bitspersample != 32) {
                                TIFFErrorExt(tif->tif_clientdata, module,
-    "Horizontal differencing \"Predictor\" not supported with %d-bit samples",
-                                         td->td_bitspersample);
+                                   "Horizontal differencing \"Predictor\" not supported with %d-bit samples",
+                                   td->td_bitspersample);
                                return 0;
                        }
                        break;
                case PREDICTOR_FLOATINGPOINT:
                        if (td->td_sampleformat != SAMPLEFORMAT_IEEEFP) {
                                TIFFErrorExt(tif->tif_clientdata, module,
-       "Floating point \"Predictor\" not supported with %d data format",
-                                         td->td_sampleformat);
+                                   "Floating point \"Predictor\" not supported with %d data format",
+                                   td->td_sampleformat);
                                return 0;
                        }
                        break;
                default:
                        TIFFErrorExt(tif->tif_clientdata, module,
-                                 "\"Predictor\" value %d not supported",
-                                 sp->predictor);
+                           "\"Predictor\" value %d not supported",
+                           sp->predictor);
                        return 0;
        }
        sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
@@ -90,6 +94,8 @@ PredictorSetup(TIFF* tif)
                sp->rowsize = TIFFTileRowSize(tif);
        else
                sp->rowsize = TIFFScanlineSize(tif);
+       if (sp->rowsize == 0)
+               return 0;
 
        return 1;
 }
@@ -105,19 +111,24 @@ PredictorSetupDecode(TIFF* tif)
 
        if (sp->predictor == 2) {
                switch (td->td_bitspersample) {
-                       case 8:  sp->pfunc = horAcc8; break;
-                       case 16: sp->pfunc = horAcc16; break;
+                       case 8:  sp->decodepfunc = horAcc8; break;
+                       case 16: sp->decodepfunc = horAcc16; break;
+                       case 32: sp->decodepfunc = horAcc32; break;
                }
                /*
                 * Override default decoding method with one that does the
                 * predictor stuff.
                 */
-               sp->coderow = tif->tif_decoderow;
-               tif->tif_decoderow = PredictorDecodeRow;
-               sp->codestrip = tif->tif_decodestrip;
-               tif->tif_decodestrip = PredictorDecodeTile;
-               sp->codetile = tif->tif_decodetile;
-               tif->tif_decodetile = PredictorDecodeTile;
+                if( tif->tif_decoderow != PredictorDecodeRow )
+                {
+                    sp->decoderow = tif->tif_decoderow;
+                    tif->tif_decoderow = PredictorDecodeRow;
+                    sp->decodestrip = tif->tif_decodestrip;
+                    tif->tif_decodestrip = PredictorDecodeTile;
+                    sp->decodetile = tif->tif_decodetile;
+                    tif->tif_decodetile = PredictorDecodeTile;
+                }
+
                /*
                 * If the data is horizontally differenced 16-bit data that
                 * requires byte-swapping, then it must be byte swapped before
@@ -126,25 +137,31 @@ PredictorSetupDecode(TIFF* tif)
                 * the library setup when the directory was read.
                 */
                if (tif->tif_flags & TIFF_SWAB) {
-                       if (sp->pfunc == horAcc16) {
-                               sp->pfunc = swabHorAcc16;
+                       if (sp->decodepfunc == horAcc16) {
+                               sp->decodepfunc = swabHorAcc16;
                                tif->tif_postdecode = _TIFFNoPostDecode;
-                       } /* else handle 32-bit case... */
+            } else if (sp->decodepfunc == horAcc32) {
+                               sp->decodepfunc = swabHorAcc32;
+                               tif->tif_postdecode = _TIFFNoPostDecode;
+            }
                }
        }
 
        else if (sp->predictor == 3) {
-               sp->pfunc = fpAcc;
+               sp->decodepfunc = fpAcc;
                /*
                 * Override default decoding method with one that does the
                 * predictor stuff.
                 */
-               sp->coderow = tif->tif_decoderow;
-               tif->tif_decoderow = PredictorDecodeRow;
-               sp->codestrip = tif->tif_decodestrip;
-               tif->tif_decodestrip = PredictorDecodeTile;
-               sp->codetile = tif->tif_decodetile;
-               tif->tif_decodetile = PredictorDecodeTile;
+                if( tif->tif_decoderow != PredictorDecodeRow )
+                {
+                    sp->decoderow = tif->tif_decoderow;
+                    tif->tif_decoderow = PredictorDecodeRow;
+                    sp->decodestrip = tif->tif_decodestrip;
+                    tif->tif_decodestrip = PredictorDecodeTile;
+                    sp->decodetile = tif->tif_decodetile;
+                    tif->tif_decodetile = PredictorDecodeTile;
+                }
                /*
                 * The data should not be swapped outside of the floating
                 * point predictor, the accumulation routine should return
@@ -173,33 +190,40 @@ PredictorSetupEncode(TIFF* tif)
 
        if (sp->predictor == 2) {
                switch (td->td_bitspersample) {
-                       case 8:  sp->pfunc = horDiff8; break;
-                       case 16: sp->pfunc = horDiff16; break;
+                       case 8:  sp->encodepfunc = horDiff8; break;
+                       case 16: sp->encodepfunc = horDiff16; break;
+                       case 32: sp->encodepfunc = horDiff32; break;
                }
                /*
                 * Override default encoding method with one that does the
                 * predictor stuff.
                 */
-               sp->coderow = tif->tif_encoderow;
-               tif->tif_encoderow = PredictorEncodeRow;
-               sp->codestrip = tif->tif_encodestrip;
-               tif->tif_encodestrip = PredictorEncodeTile;
-               sp->codetile = tif->tif_encodetile;
-               tif->tif_encodetile = PredictorEncodeTile;
+                if( tif->tif_encoderow != PredictorEncodeRow )
+                {
+                    sp->encoderow = tif->tif_encoderow;
+                    tif->tif_encoderow = PredictorEncodeRow;
+                    sp->encodestrip = tif->tif_encodestrip;
+                    tif->tif_encodestrip = PredictorEncodeTile;
+                    sp->encodetile = tif->tif_encodetile;
+                    tif->tif_encodetile = PredictorEncodeTile;
+                }
        }
-       
+
        else if (sp->predictor == 3) {
-               sp->pfunc = fpDiff;
+               sp->encodepfunc = fpDiff;
                /*
                 * Override default encoding method with one that does the
                 * predictor stuff.
                 */
-               sp->coderow = tif->tif_encoderow;
-               tif->tif_encoderow = PredictorEncodeRow;
-               sp->codestrip = tif->tif_encodestrip;
-               tif->tif_encodestrip = PredictorEncodeTile;
-               sp->codetile = tif->tif_encodetile;
-               tif->tif_encodetile = PredictorEncodeTile;
+                if( tif->tif_encoderow != PredictorEncodeRow )
+                {
+                    sp->encoderow = tif->tif_encoderow;
+                    tif->tif_encoderow = PredictorEncodeRow;
+                    sp->encodestrip = tif->tif_encodestrip;
+                    tif->tif_encodestrip = PredictorEncodeTile;
+                    sp->encodetile = tif->tif_encodetile;
+                    tif->tif_encodetile = PredictorEncodeTile;
+                }
        }
 
        return 1;
@@ -207,7 +231,7 @@ PredictorSetupEncode(TIFF* tif)
 
 #define REPEAT4(n, op)         \
     switch (n) {               \
-    default: { int i; for (i = n-4; i > 0; i--) { op; } } \
+    default: { tmsize_t i; for (i = n-4; i > 0; i--) { op; } } \
     case 4:  op;               \
     case 3:  op;               \
     case 2:  op;               \
@@ -216,13 +240,13 @@ PredictorSetupEncode(TIFF* tif)
     }
 
 static void
-horAcc8(TIFF* tif, tidata_t cp0, tsize_t cc)
+horAcc8(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
-       tsize_t stride = PredictorState(tif)->stride;
+       tmsize_t stride = PredictorState(tif)->stride;
 
        char* cp = (char*) cp0;
+       assert((cc%stride)==0);
        if (cc > stride) {
-               cc -= stride;
                /*
                 * Pipeline the most common cases.
                 */
@@ -230,40 +254,49 @@ horAcc8(TIFF* tif, tidata_t cp0, tsize_t cc)
                        unsigned int cr = cp[0];
                        unsigned int cg = cp[1];
                        unsigned int cb = cp[2];
-                       do {
-                               cc -= 3, cp += 3;
+                       cc -= 3;
+                       cp += 3;
+                       while (cc>0) {
                                cp[0] = (char) (cr += cp[0]);
                                cp[1] = (char) (cg += cp[1]);
                                cp[2] = (char) (cb += cp[2]);
-                       } while ((int32) cc > 0);
+                               cc -= 3;
+                               cp += 3;
+                       }
                } else if (stride == 4)  {
                        unsigned int cr = cp[0];
                        unsigned int cg = cp[1];
                        unsigned int cb = cp[2];
                        unsigned int ca = cp[3];
-                       do {
-                               cc -= 4, cp += 4;
+                       cc -= 4;
+                       cp += 4;
+                       while (cc>0) {
                                cp[0] = (char) (cr += cp[0]);
                                cp[1] = (char) (cg += cp[1]);
                                cp[2] = (char) (cb += cp[2]);
                                cp[3] = (char) (ca += cp[3]);
-                       } while ((int32) cc > 0);
+                               cc -= 4;
+                               cp += 4;
+                       }
                } else  {
+                       cc -= stride;
                        do {
                                REPEAT4(stride, cp[stride] =
                                        (char) (cp[stride] + *cp); cp++)
                                cc -= stride;
-                       } while ((int32) cc > 0);
+                       } while (cc>0);
                }
        }
 }
 
 static void
-swabHorAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
+swabHorAcc16(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
-       tsize_t stride = PredictorState(tif)->stride;
+       tmsize_t stride = PredictorState(tif)->stride;
        uint16* wp = (uint16*) cp0;
-       tsize_t wc = cc / 2;
+       tmsize_t wc = cc / 2;
+
+       assert((cc%(2*stride))==0);
 
        if (wc > stride) {
                TIFFSwabArrayOfShort(wp, wc);
@@ -271,23 +304,62 @@ swabHorAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
                do {
                        REPEAT4(stride, wp[stride] += wp[0]; wp++)
                        wc -= stride;
-               } while ((int32) wc > 0);
+               } while (wc > 0);
        }
 }
 
 static void
-horAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
+horAcc16(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
-       tsize_t stride = PredictorState(tif)->stride;
+       tmsize_t stride = PredictorState(tif)->stride;
        uint16* wp = (uint16*) cp0;
-       tsize_t wc = cc / 2;
+       tmsize_t wc = cc / 2;
+
+       assert((cc%(2*stride))==0);
+
+       if (wc > stride) {
+               wc -= stride;
+               do {
+                       REPEAT4(stride, wp[stride] += wp[0]; wp++)
+                       wc -= stride;
+               } while (wc > 0);
+       }
+}
+
+static void
+swabHorAcc32(TIFF* tif, uint8* cp0, tmsize_t cc)
+{
+       tmsize_t stride = PredictorState(tif)->stride;
+       uint32* wp = (uint32*) cp0;
+       tmsize_t wc = cc / 4;
+
+       assert((cc%(4*stride))==0);
+
+       if (wc > stride) {
+               TIFFSwabArrayOfLong(wp, wc);
+               wc -= stride;
+               do {
+                       REPEAT4(stride, wp[stride] += wp[0]; wp++)
+                       wc -= stride;
+               } while (wc > 0);
+       }
+}
+
+static void
+horAcc32(TIFF* tif, uint8* cp0, tmsize_t cc)
+{
+       tmsize_t stride = PredictorState(tif)->stride;
+       uint32* wp = (uint32*) cp0;
+       tmsize_t wc = cc / 4;
+
+       assert((cc%(4*stride))==0);
 
        if (wc > stride) {
                wc -= stride;
                do {
                        REPEAT4(stride, wp[stride] += wp[0]; wp++)
                        wc -= stride;
-               } while ((int32) wc > 0);
+               } while (wc > 0);
        }
 }
 
@@ -295,15 +367,17 @@ horAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
  * Floating point predictor accumulation routine.
  */
 static void
-fpAcc(TIFF* tif, tidata_t cp0, tsize_t cc)
+fpAcc(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
-       tsize_t stride = PredictorState(tif)->stride;
+       tmsize_t stride = PredictorState(tif)->stride;
        uint32 bps = tif->tif_dir.td_bitspersample / 8;
-       tsize_t wc = cc / bps;
-       tsize_t count = cc;
+       tmsize_t wc = cc / bps;
+       tmsize_t count = cc;
        uint8 *cp = (uint8 *) cp0;
        uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
 
+       assert((cc%(bps*stride))==0);
+
        if (!tmp)
                return;
 
@@ -317,12 +391,12 @@ fpAcc(TIFF* tif, tidata_t cp0, tsize_t cc)
        for (count = 0; count < wc; count++) {
                uint32 byte;
                for (byte = 0; byte < bps; byte++) {
-#ifdef WORDS_BIGENDIAN
+                       #ifdef WORDS_BIGENDIAN
                        cp[bps * count + byte] = tmp[byte * wc + count];
-#else
+                       #else
                        cp[bps * count + byte] =
                                tmp[(bps - byte - 1) * wc + count];
-#endif
+                       #endif
                }
        }
        _TIFFfree(tmp);
@@ -332,16 +406,16 @@ fpAcc(TIFF* tif, tidata_t cp0, tsize_t cc)
  * Decode a scanline and apply the predictor routine.
  */
 static int
-PredictorDecodeRow(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
+PredictorDecodeRow(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
 {
        TIFFPredictorState *sp = PredictorState(tif);
 
        assert(sp != NULL);
-       assert(sp->coderow != NULL);
-       assert(sp->pfunc != NULL);
+       assert(sp->decoderow != NULL);
+       assert(sp->decodepfunc != NULL);  
 
-       if ((*sp->coderow)(tif, op0, occ0, s)) {
-               (*sp->pfunc)(tif, op0, occ0);
+       if ((*sp->decoderow)(tif, op0, occ0, s)) {
+               (*sp->decodepfunc)(tif, op0, occ0);
                return 1;
        } else
                return 0;
@@ -355,19 +429,20 @@ PredictorDecodeRow(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
  * strip/tile dimensions.
  */
 static int
-PredictorDecodeTile(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
+PredictorDecodeTile(TIFF* tif, uint8* op0, tmsize_t occ0, uint16 s)
 {
        TIFFPredictorState *sp = PredictorState(tif);
 
        assert(sp != NULL);
-       assert(sp->codetile != NULL);
+       assert(sp->decodetile != NULL);
 
-       if ((*sp->codetile)(tif, op0, occ0, s)) {
-               tsize_t rowsize = sp->rowsize;
+       if ((*sp->decodetile)(tif, op0, occ0, s)) {
+               tmsize_t rowsize = sp->rowsize;
                assert(rowsize > 0);
-               assert(sp->pfunc != NULL);
-               while ((long)occ0 > 0) {
-                       (*sp->pfunc)(tif, op0, (tsize_t) rowsize);
+               assert((occ0%rowsize)==0);
+               assert(sp->decodepfunc != NULL);
+               while (occ0 > 0) {
+                       (*sp->decodepfunc)(tif, op0, rowsize);
                        occ0 -= rowsize;
                        op0 += rowsize;
                }
@@ -377,12 +452,14 @@ PredictorDecodeTile(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
 }
 
 static void
-horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
+horDiff8(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
        TIFFPredictorState* sp = PredictorState(tif);
-       tsize_t stride = sp->stride;
+       tmsize_t stride = sp->stride;
        char* cp = (char*) cp0;
 
+       assert((cc%stride)==0);
+
        if (cc > stride) {
                cc -= stride;
                /*
@@ -398,7 +475,7 @@ horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
                                g1 = cp[4]; cp[4] = g1-g2; g2 = g1;
                                b1 = cp[5]; cp[5] = b1-b2; b2 = b1;
                                cp += 3;
-                       } while ((int32)(cc -= 3) > 0);
+                       } while ((cc -= 3) > 0);
                } else if (stride == 4) {
                        int r1, g1, b1, a1;
                        int r2 = cp[0];
@@ -411,23 +488,45 @@ horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
                                b1 = cp[6]; cp[6] = b1-b2; b2 = b1;
                                a1 = cp[7]; cp[7] = a1-a2; a2 = a1;
                                cp += 4;
-                       } while ((int32)(cc -= 4) > 0);
+                       } while ((cc -= 4) > 0);
                } else {
                        cp += cc - 1;
                        do {
                                REPEAT4(stride, cp[stride] -= cp[0]; cp--)
-                       } while ((int32)(cc -= stride) > 0);
+                       } while ((cc -= stride) > 0);
                }
        }
 }
 
 static void
-horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
+horDiff16(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
        TIFFPredictorState* sp = PredictorState(tif);
-       tsize_t stride = sp->stride;
+       tmsize_t stride = sp->stride;
        int16 *wp = (int16*) cp0;
-       tsize_t wc = cc/2;
+       tmsize_t wc = cc/2;
+
+       assert((cc%(2*stride))==0);
+
+       if (wc > stride) {
+               wc -= stride;
+               wp += wc - 1;
+               do {
+                       REPEAT4(stride, wp[stride] -= wp[0]; wp--)
+                       wc -= stride;
+               } while (wc > 0);
+       }
+}
+
+static void
+horDiff32(TIFF* tif, uint8* cp0, tmsize_t cc)
+{
+       TIFFPredictorState* sp = PredictorState(tif);
+       tmsize_t stride = sp->stride;
+       int32 *wp = (int32*) cp0;
+       tmsize_t wc = cc/4;
+
+       assert((cc%(4*stride))==0);
 
        if (wc > stride) {
                wc -= stride;
@@ -435,7 +534,7 @@ horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
                do {
                        REPEAT4(stride, wp[stride] -= wp[0]; wp--)
                        wc -= stride;
-               } while ((int32) wc > 0);
+               } while (wc > 0);
        }
 }
 
@@ -443,15 +542,17 @@ horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
  * Floating point predictor differencing routine.
  */
 static void
-fpDiff(TIFF* tif, tidata_t cp0, tsize_t cc)
+fpDiff(TIFF* tif, uint8* cp0, tmsize_t cc)
 {
-       tsize_t stride = PredictorState(tif)->stride;
+       tmsize_t stride = PredictorState(tif)->stride;
        uint32 bps = tif->tif_dir.td_bitspersample / 8;
-       tsize_t wc = cc / bps;
-       tsize_t count;
+       tmsize_t wc = cc / bps;
+       tmsize_t count;
        uint8 *cp = (uint8 *) cp0;
        uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
 
+       assert((cc%(bps*stride))==0);
+
        if (!tmp)
                return;
 
@@ -459,12 +560,12 @@ fpDiff(TIFF* tif, tidata_t cp0, tsize_t cc)
        for (count = 0; count < wc; count++) {
                uint32 byte;
                for (byte = 0; byte < bps; byte++) {
-#ifdef WORDS_BIGENDIAN
-                       cp[byte * wc + count] = tmp[bps * count + byte];
-#else
+                       #ifdef WORDS_BIGENDIAN
+                       cp[byte * wc + count] = tmp[bps * count + byte];
+                       #else
                        cp[(bps - byte - 1) * wc + count] =
                                tmp[bps * count + byte];
-#endif
+                       #endif
                }
        }
        _TIFFfree(tmp);
@@ -476,50 +577,71 @@ fpDiff(TIFF* tif, tidata_t cp0, tsize_t cc)
 }
 
 static int
-PredictorEncodeRow(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+PredictorEncodeRow(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
        TIFFPredictorState *sp = PredictorState(tif);
 
        assert(sp != NULL);
-       assert(sp->pfunc != NULL);
-       assert(sp->coderow != NULL);
+       assert(sp->encodepfunc != NULL);
+       assert(sp->encoderow != NULL);
 
        /* XXX horizontal differencing alters user's data XXX */
-       (*sp->pfunc)(tif, bp, cc);
-       return (*sp->coderow)(tif, bp, cc, s);
+       (*sp->encodepfunc)(tif, bp, cc);
+       return (*sp->encoderow)(tif, bp, cc, s);
 }
 
 static int
-PredictorEncodeTile(TIFF* tif, tidata_t bp0, tsize_t cc0, tsample_t s)
+PredictorEncodeTile(TIFF* tif, uint8* bp0, tmsize_t cc0, uint16 s)
 {
+       static const char module[] = "PredictorEncodeTile";
        TIFFPredictorState *sp = PredictorState(tif);
-       tsize_t cc = cc0, rowsize;
-       unsigned char* bp = bp0;
+        uint8 *working_copy;
+       tmsize_t cc = cc0, rowsize;
+       unsigned char* bp;
+        int result_code;
 
        assert(sp != NULL);
-       assert(sp->pfunc != NULL);
-       assert(sp->codetile != NULL);
+       assert(sp->encodepfunc != NULL);
+       assert(sp->encodetile != NULL);
+
+        /* 
+         * Do predictor manipulation in a working buffer to avoid altering
+         * the callers buffer. http://trac.osgeo.org/gdal/ticket/1965
+         */
+        working_copy = (uint8*) _TIFFmalloc(cc0);
+        if( working_copy == NULL )
+        {
+            TIFFErrorExt(tif->tif_clientdata, module, 
+                         "Out of memory allocating " TIFF_SSIZE_FORMAT " byte temp buffer.",
+                         cc0 );
+            return 0;
+        }
+        memcpy( working_copy, bp0, cc0 );
+        bp = working_copy;
 
        rowsize = sp->rowsize;
        assert(rowsize > 0);
-       while ((long)cc > 0) {
-               (*sp->pfunc)(tif, bp, (tsize_t) rowsize);
+       assert((cc0%rowsize)==0);
+       while (cc > 0) {
+               (*sp->encodepfunc)(tif, bp, rowsize);
                cc -= rowsize;
                bp += rowsize;
        }
-       return (*sp->codetile)(tif, bp0, cc0, s);
+       result_code = (*sp->encodetile)(tif, working_copy, cc0, s);
+
+        _TIFFfree( working_copy );
+
+        return result_code;
 }
 
 #define        FIELD_PREDICTOR (FIELD_CODEC+0)         /* XXX */
 
-static const TIFFFieldInfo predictFieldInfo[] = {
-    { TIFFTAG_PREDICTOR,        1, 1, TIFF_SHORT,      FIELD_PREDICTOR,
-      FALSE,   FALSE,  "Predictor" },
+static const TIFFField predictFields[] = {
+    { TIFFTAG_PREDICTOR, 1, 1, TIFF_SHORT, 0, TIFF_SETGET_UINT16, TIFF_SETGET_UINT16, FIELD_PREDICTOR, FALSE, FALSE, "Predictor", NULL },
 };
-#define        N(a)    (sizeof (a) / sizeof (a[0]))
 
 static int
-PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
+PredictorVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
        TIFFPredictorState *sp = PredictorState(tif);
 
@@ -528,7 +650,7 @@ PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
 
        switch (tag) {
        case TIFFTAG_PREDICTOR:
-               sp->predictor = (uint16) va_arg(ap, int);
+               sp->predictor = (uint16) va_arg(ap, uint16_vap);
                TIFFSetFieldBit(tif, FIELD_PREDICTOR);
                break;
        default:
@@ -539,7 +661,7 @@ PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
 }
 
 static int
-PredictorVGetField(TIFF* tif, ttag_t tag, va_list ap)
+PredictorVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        TIFFPredictorState *sp = PredictorState(tif);
 
@@ -565,9 +687,9 @@ PredictorPrintDir(TIFF* tif, FILE* fd, long flags)
        if (TIFFFieldSet(tif,FIELD_PREDICTOR)) {
                fprintf(fd, "  Predictor: ");
                switch (sp->predictor) {
-               case 1: fprintf(fd, "none "); break;
-               case 2: fprintf(fd, "horizontal differencing "); break;
-               case 3: fprintf(fd, "floating point predictor "); break;
+                       case 1: fprintf(fd, "none "); break;
+                       case 2: fprintf(fd, "horizontal differencing "); break;
+                       case 3: fprintf(fd, "floating point predictor "); break;
                }
                fprintf(fd, "%u (0x%x)\n", sp->predictor, sp->predictor);
        }
@@ -583,16 +705,24 @@ TIFFPredictorInit(TIFF* tif)
        assert(sp != 0);
 
        /*
-        * Merge codec-specific tag information and
-        * override parent get/set field methods.
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, predictFields,
+                             TIFFArrayCount(predictFields))) {
+               TIFFErrorExt(tif->tif_clientdata, "TIFFPredictorInit",
+                   "Merging Predictor codec-specific tags failed");
+               return 0;
+       }
+
+       /*
+        * Override parent get/set field methods.
         */
-       _TIFFMergeFieldInfo(tif, predictFieldInfo, N(predictFieldInfo));
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield =
             PredictorVGetField;/* hook for predictor tag */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
        tif->tif_tagmethods.vsetfield =
-            PredictorVSetField;/* hook for predictor tag */
+           PredictorVSetField;/* hook for predictor tag */
        sp->printdir = tif->tif_tagmethods.printdir;
        tif->tif_tagmethods.printdir =
             PredictorPrintDir; /* hook for predictor tag */
@@ -603,7 +733,8 @@ TIFFPredictorInit(TIFF* tif)
        tif->tif_setupencode = PredictorSetupEncode;
 
        sp->predictor = 1;                      /* default value */
-       sp->pfunc = NULL;                       /* no predictor routine */
+       sp->encodepfunc = NULL;                 /* no predictor routine */
+       sp->decodepfunc = NULL;                 /* no predictor routine */
        return 1;
 }
 
@@ -624,3 +755,10 @@ TIFFPredictorCleanup(TIFF* tif)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 8563c83c8e70aee3263059926fe5782a2774eb45..91330ccec89c350f526831f8b8efa1b9457e1861 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1995-1997 Sam Leffler
  * Copyright (c) 1995-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
  * the predictor code can cast tif_data to find its state.
  */
 typedef struct {
-       int             predictor;      /* predictor tag value */
-       int             stride;         /* sample stride over data */
-       tsize_t         rowsize;        /* tile/strip row size */
+       int             predictor;      /* predictor tag value */
+       tmsize_t        stride;         /* sample stride over data */
+       tmsize_t        rowsize;        /* tile/strip row size */
+
+       TIFFCodeMethod  encoderow;      /* parent codec encode/decode row */
+       TIFFCodeMethod  encodestrip;    /* parent codec encode/decode strip */
+       TIFFCodeMethod  encodetile;     /* parent codec encode/decode tile */ 
+       TIFFPostMethod  encodepfunc;    /* horizontal differencer */
 
-       TIFFPostMethod  pfunc;          /* horizontal differencer/accumulator */
-       TIFFCodeMethod  coderow;        /* parent codec encode/decode row */
-       TIFFCodeMethod  codestrip;      /* parent codec encode/decode strip */
-       TIFFCodeMethod  codetile;       /* parent codec encode/decode tile */
-       TIFFVGetMethod  vgetparent;     /* super-class method */
-       TIFFVSetMethod  vsetparent;     /* super-class method */
-       TIFFPrintMethod printdir;       /* super-class method */
-       TIFFBoolMethod  setupdecode;    /* super-class method */
-       TIFFBoolMethod  setupencode;    /* super-class method */
+       TIFFCodeMethod  decoderow;      /* parent codec encode/decode row */
+       TIFFCodeMethod  decodestrip;    /* parent codec encode/decode strip */
+       TIFFCodeMethod  decodetile;     /* parent codec encode/decode tile */ 
+       TIFFPostMethod  decodepfunc;    /* horizontal accumulator */
+
+       TIFFVGetMethod  vgetparent;     /* super-class method */
+       TIFFVSetMethod  vsetparent;     /* super-class method */
+       TIFFPrintMethod printdir;       /* super-class method */
+       TIFFBoolMethod  setupdecode;    /* super-class method */
+       TIFFBoolMethod  setupencode;    /* super-class method */
 } TIFFPredictorState;
 
 #if defined(__cplusplus)
 extern "C" {
 #endif
-extern int TIFFPredictorInit(TIFF*);
-extern int TIFFPredictorCleanup(TIFF*);
+extern int TIFFPredictorInit(TIFF*);
+extern int TIFFPredictorCleanup(TIFF*);
 #if defined(__cplusplus)
 }
 #endif
 #endif /* _TIFFPREDICT_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index e7162960344e6a6581e56f75d3011040509d93cb..9b439cbf9cbb41422129070ee8715135eda11879 100644 (file)
@@ -34,6 +34,9 @@
 
 #include <ctype.h>
 
+static void
+_TIFFprintAsciiBounded(FILE* fd, const char* cp, int max_chars);
+
 static const char *photoNames[] = {
     "min-is-white",                            /* PHOTOMETRIC_MINISWHITE */
     "min-is-black",                            /* PHOTOMETRIC_MINISBLACK */
@@ -44,6 +47,8 @@ static const char *photoNames[] = {
     "YCbCr",                                   /* PHOTOMETRIC_YCBCR */
     "7 (0x7)",
     "CIE L*a*b*",                              /* PHOTOMETRIC_CIELAB */
+    "ICC L*a*b*",                              /* PHOTOMETRIC_ICCLAB */
+    "ITU L*a*b*"                               /* PHOTOMETRIC_ITULAB */
 };
 #define        NPHOTONAMES     (sizeof (photoNames) / sizeof (photoNames[0]))
 
@@ -61,7 +66,7 @@ static const char *orientNames[] = {
 #define        NORIENTNAMES    (sizeof (orientNames) / sizeof (orientNames[0]))
 
 static void
-_TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
+_TIFFPrintField(FILE* fd, const TIFFField *fip,
                uint32 value_count, void *raw_data)
 {
        uint32 j;
@@ -73,7 +78,7 @@ _TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
                        fprintf(fd, "%u", ((uint8 *) raw_data)[j]);
                else if(fip->field_type == TIFF_UNDEFINED)
                        fprintf(fd, "0x%x",
-                               (unsigned int) ((unsigned char *) raw_data)[j]);
+                           (unsigned int) ((unsigned char *) raw_data)[j]);
                else if(fip->field_type == TIFF_SBYTE)
                        fprintf(fd, "%d", ((int8 *) raw_data)[j]);
                else if(fip->field_type == TIFF_SHORT)
@@ -82,23 +87,46 @@ _TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
                        fprintf(fd, "%d", ((int16 *) raw_data)[j]);
                else if(fip->field_type == TIFF_LONG)
                        fprintf(fd, "%lu",
-                               (unsigned long)((uint32 *) raw_data)[j]);
+                           (unsigned long)((uint32 *) raw_data)[j]);
                else if(fip->field_type == TIFF_SLONG)
                        fprintf(fd, "%ld", (long)((int32 *) raw_data)[j]);
+               else if(fip->field_type == TIFF_IFD)
+                       fprintf(fd, "0x%lx",
+                               (unsigned long)((uint32 *) raw_data)[j]);
                else if(fip->field_type == TIFF_RATIONAL
                        || fip->field_type == TIFF_SRATIONAL
                        || fip->field_type == TIFF_FLOAT)
                        fprintf(fd, "%f", ((float *) raw_data)[j]);
-               else if(fip->field_type == TIFF_IFD)
-                       fprintf(fd, "0x%ulx", ((uint32 *) raw_data)[j]);
+               else if(fip->field_type == TIFF_LONG8)
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       fprintf(fd, "%I64u",
+                           (unsigned __int64)((uint64 *) raw_data)[j]);
+#else
+                       fprintf(fd, "%llu",
+                           (unsigned long long)((uint64 *) raw_data)[j]);
+#endif
+               else if(fip->field_type == TIFF_SLONG8)
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       fprintf(fd, "%I64d", (__int64)((int64 *) raw_data)[j]);
+#else
+                       fprintf(fd, "%lld", (long long)((int64 *) raw_data)[j]);
+#endif
+               else if(fip->field_type == TIFF_IFD8)
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       fprintf(fd, "0x%I64x",
+                               (unsigned __int64)((uint64 *) raw_data)[j]);
+#else
+                       fprintf(fd, "0x%llx",
+                               (unsigned long long)((uint64 *) raw_data)[j]);
+#endif
+               else if(fip->field_type == TIFF_FLOAT)
+                       fprintf(fd, "%f", ((float *)raw_data)[j]);
+               else if(fip->field_type == TIFF_DOUBLE)
+                       fprintf(fd, "%f", ((double *) raw_data)[j]);
                else if(fip->field_type == TIFF_ASCII) {
                        fprintf(fd, "%s", (char *) raw_data);
                        break;
                }
-               else if(fip->field_type == TIFF_DOUBLE)
-                       fprintf(fd, "%f", ((double *) raw_data)[j]);
-               else if(fip->field_type == TIFF_FLOAT)
-                       fprintf(fd, "%f", ((float *)raw_data)[j]);
                else {
                        fprintf(fd, "<unsupported data type in TIFFPrint>");
                        break;
@@ -112,16 +140,22 @@ _TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
 }
 
 static int
-_TIFFPrettyPrintField(TIFF* tif, FILE* fd, ttag_t tag,
+_TIFFPrettyPrintField(TIFF* tif, const TIFFField *fip, FILE* fd, uint32 tag,
                      uint32 value_count, void *raw_data)
 {
-       TIFFDirectory *td = &tif->tif_dir;
+        (void) tif;
 
+       /* do not try to pretty print auto-defined fields */
+       if (strncmp(fip->field_name,"Tag ", 4) == 0) {
+               return 0;
+       }
+        
        switch (tag)
        {
                case TIFFTAG_INKSET:
-                       fprintf(fd, "  Ink Set: ");
-                       switch (*((uint16*)raw_data)) {
+                       if (value_count == 2 && fip->field_type == TIFF_SHORT) {
+                               fprintf(fd, "  Ink Set: ");
+                               switch (*((uint16*)raw_data)) {
                                case INKSET_CMYK:
                                        fprintf(fd, "CMYK\n");
                                        break;
@@ -130,30 +164,31 @@ _TIFFPrettyPrintField(TIFF* tif, FILE* fd, ttag_t tag,
                                                *((uint16*)raw_data),
                                                *((uint16*)raw_data));
                                        break;
+                               }
+                               return 1;
                        }
-                       return 1;
+                       return 0;
+
                case TIFFTAG_DOTRANGE:
-                       fprintf(fd, "  Dot Range: %u-%u\n",
-                               ((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
-                       return 1;
+                       if (value_count == 2 && fip->field_type == TIFF_SHORT) {
+                               fprintf(fd, "  Dot Range: %u-%u\n",
+                                       ((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
+                               return 1;
+                       }
+                       return 0;
+
                case TIFFTAG_WHITEPOINT:
-                       fprintf(fd, "  White Point: %g-%g\n",
-                               ((float *)raw_data)[0], ((float *)raw_data)[1]);                        return 1;
-               case TIFFTAG_REFERENCEBLACKWHITE:
-               {
-                       uint16 i;
+                       if (value_count == 2 && fip->field_type == TIFF_RATIONAL) {
+                               fprintf(fd, "  White Point: %g-%g\n",
+                                       ((float *)raw_data)[0], ((float *)raw_data)[1]);
+                               return 1;
+                       } 
+                       return 0;
 
-                       fprintf(fd, "  Reference Black/White:\n");
-                       for (i = 0; i < td->td_samplesperpixel; i++)
-                       fprintf(fd, "    %2d: %5g %5g\n", i,
-                               ((float *)raw_data)[2*i+0],
-                               ((float *)raw_data)[2*i+1]);
-                       return 1;
-               }
                case TIFFTAG_XMLPACKET:
                {
                        uint32 i;
-                       
+
                        fprintf(fd, "  XMLPacket (XMP Metadata):\n" );
                        for(i = 0; i < value_count; i++)
                                fputc(((char *)raw_data)[i], fd);
@@ -166,23 +201,29 @@ _TIFFPrettyPrintField(TIFF* tif, FILE* fd, ttag_t tag,
                         * defined as array of LONG values.
                         */
                        fprintf(fd,
-                               "  RichTIFFIPTC Data: <present>, %lu bytes\n",
-                               (unsigned long) value_count * 4);
+                           "  RichTIFFIPTC Data: <present>, %lu bytes\n",
+                           (unsigned long) value_count * 4);
                        return 1;
+
                case TIFFTAG_PHOTOSHOP:
                        fprintf(fd, "  Photoshop Data: <present>, %lu bytes\n",
-                               (unsigned long) value_count);
+                           (unsigned long) value_count);
                        return 1;
+
                case TIFFTAG_ICCPROFILE:
                        fprintf(fd, "  ICC Profile: <present>, %lu bytes\n",
-                               (unsigned long) value_count);
+                           (unsigned long) value_count);
                        return 1;
+
                case TIFFTAG_STONITS:
-                       fprintf(fd,
-                               "  Sample to Nits conversion factor: %.4e\n",
-                               *((double*)raw_data));
-                       return 1;
-        }
+                       if (value_count == 1 && fip->field_type == TIFF_DOUBLE) { 
+                               fprintf(fd,
+                                       "  Sample to Nits conversion factor: %.4e\n",
+                                       *((double*)raw_data));
+                               return 1;
+                       }
+                       return 0;
+       }
 
        return 0;
 }
@@ -199,8 +240,15 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
        uint16 i;
        long l, n;
 
-       fprintf(fd, "TIFF Directory at offset 0x%lx (%lu)\n",
-               (unsigned long)tif->tif_diroff, (unsigned long)tif->tif_diroff);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+       fprintf(fd, "TIFF Directory at offset 0x%I64x (%I64u)\n",
+               (unsigned __int64) tif->tif_diroff,
+               (unsigned __int64) tif->tif_diroff);
+#else
+       fprintf(fd, "TIFF Directory at offset 0x%llx (%llu)\n",
+               (unsigned long long) tif->tif_diroff,
+               (unsigned long long) tif->tif_diroff);
+#endif
        if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) {
                fprintf(fd, "  Subfile Type:");
                sep = " ";
@@ -344,9 +392,13 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                fprintf(fd, "  Ink Names: ");
                i = td->td_samplesperpixel;
                sep = "";
-               for (cp = td->td_inknames; i > 0; cp = strchr(cp,'\0')+1, i--) {
+               for (cp = td->td_inknames; 
+                    i > 0 && cp < td->td_inknames + td->td_inknameslen; 
+                    cp = strchr(cp,'\0')+1, i--) {
+                       int max_chars = 
+                               td->td_inknameslen - (cp - td->td_inknames);
                        fputs(sep, fd);
-                       _TIFFprintAscii(fd, cp);
+                       _TIFFprintAsciiBounded(fd, cp, max_chars);
                        sep = ", ";
                }
                 fputs("\n", fd);
@@ -386,18 +438,9 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
        }
        if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING))
         {
-            /*
-             * For hacky reasons (see tif_jpeg.c - JPEGFixupTestSubsampling),
-             * we need to fetch this rather than trust what is in our
-             * structures.
-             */
-            uint16 subsampling[2];
-
-            TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                          subsampling + 0, subsampling + 1 );
                fprintf(fd, "  YCbCr Subsampling: %u, %u\n",
-                        subsampling[0], subsampling[1] );
-        }
+                       td->td_ycbcrsubsampling[0], td->td_ycbcrsubsampling[1] );
+       }
        if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING)) {
                fprintf(fd, "  YCbCr Positioning: ");
                switch (td->td_ycbcrpositioning) {
@@ -437,12 +480,20 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                fprintf(fd, "  Min Sample Value: %u\n", td->td_minsamplevalue);
        if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
                fprintf(fd, "  Max Sample Value: %u\n", td->td_maxsamplevalue);
-       if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE))
-               fprintf(fd, "  SMin Sample Value: %g\n",
-                   td->td_sminsamplevalue);
-       if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE))
-               fprintf(fd, "  SMax Sample Value: %g\n",
-                   td->td_smaxsamplevalue);
+       if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE)) {
+               int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1;
+               fprintf(fd, "  SMin Sample Value:");
+               for (i = 0; i < count; ++i)
+                       fprintf(fd, " %g", td->td_sminsamplevalue[i]);
+               fprintf(fd, "\n");
+       }
+       if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE)) {
+               int count = (tif->tif_flags & TIFF_PERSAMPLE) ? td->td_samplesperpixel : 1;
+               fprintf(fd, "  SMax Sample Value:");
+               for (i = 0; i < count; ++i)
+                       fprintf(fd, " %g", td->td_smaxsamplevalue[i]);
+               fprintf(fd, "\n");
+       }
        if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) {
                fprintf(fd, "  Planar Configuration: ");
                switch (td->td_planarconfig) {
@@ -475,6 +526,13 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                } else
                        fprintf(fd, "(present)\n");
        }
+       if (TIFFFieldSet(tif,FIELD_REFBLACKWHITE)) {
+               fprintf(fd, "  Reference Black/White:\n");
+               for (i = 0; i < 3; i++)
+               fprintf(fd, "    %2d: %5g %5g\n", i,
+                       td->td_refblackwhite[2*i+0],
+                       td->td_refblackwhite[2*i+1]);
+       }
        if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION)) {
                fprintf(fd, "  Transfer Function: ");
                if (flags & TIFFPRINT_CURVES) {
@@ -491,127 +549,139 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
                } else
                        fprintf(fd, "(present)\n");
        }
-       if (TIFFFieldSet(tif, FIELD_SUBIFD)) {
+       if (TIFFFieldSet(tif, FIELD_SUBIFD) && (td->td_subifd)) {
                fprintf(fd, "  SubIFD Offsets:");
                for (i = 0; i < td->td_nsubifd; i++)
-                       fprintf(fd, " %5lu", (long) td->td_subifd[i]);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       fprintf(fd, " %5I64u",
+                               (unsigned __int64) td->td_subifd[i]);
+#else
+                       fprintf(fd, " %5llu",
+                               (unsigned long long) td->td_subifd[i]);
+#endif
                fputc('\n', fd);
        }
 
-        /*
-        ** Custom tag support.
-        */
-        {
-            int  i;
-            short count;
-
-            count = (short) TIFFGetTagListCount(tif);
-            for(i = 0; i < count; i++) {
-                ttag_t  tag = TIFFGetTagListEntry(tif, i);
-                const TIFFFieldInfo *fip;
-                uint16 value_count;
-                int mem_alloc = 0;
-                void *raw_data;
-
-                fip = TIFFFieldWithTag(tif, tag);
-                if(fip == NULL)
-                       continue;
+       /*
+       ** Custom tag support.
+       */
+       {
+               int  i;
+               short count;
 
-               if(fip->field_passcount) {
-                       if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
+               count = (short) TIFFGetTagListCount(tif);
+               for(i = 0; i < count; i++) {
+                       uint32 tag = TIFFGetTagListEntry(tif, i);
+                       const TIFFField *fip;
+                       uint32 value_count;
+                       int mem_alloc = 0;
+                       void *raw_data;
+
+                       fip = TIFFFieldWithTag(tif, tag);
+                       if(fip == NULL)
                                continue;
-               } else {
-                       if (fip->field_readcount == TIFF_VARIABLE
-                           || fip->field_readcount == TIFF_VARIABLE2)
-                               value_count = 1;
-                       else if (fip->field_readcount == TIFF_SPP)
-                               value_count = td->td_samplesperpixel;
-                       else
-                               value_count = fip->field_readcount;
-                       if ((fip->field_type == TIFF_ASCII
-                            || fip->field_readcount == TIFF_VARIABLE
-                            || fip->field_readcount == TIFF_VARIABLE2
-                            || fip->field_readcount == TIFF_SPP
-                            || value_count > 1)
-                           && fip->field_tag != TIFFTAG_PAGENUMBER
-                           && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                           && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                           && fip->field_tag != TIFFTAG_DOTRANGE) {
-                               if(TIFFGetField(tif, tag, &raw_data) != 1)
-                                       continue;
-                       } else if (fip->field_tag != TIFFTAG_PAGENUMBER
-                                  && fip->field_tag != TIFFTAG_HALFTONEHINTS
-                                  && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
-                                  && fip->field_tag != TIFFTAG_DOTRANGE) {
-                               raw_data = _TIFFmalloc(
-                                       _TIFFDataSize(fip->field_type)
-                                       * value_count);
-                               mem_alloc = 1;
-                               if(TIFFGetField(tif, tag, raw_data) != 1) {
-                                       _TIFFfree(raw_data);
+
+                       if(fip->field_passcount) {
+                               if (fip->field_readcount == TIFF_VARIABLE ) {
+                                       if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
+                                               continue;
+                               } else if (fip->field_readcount == TIFF_VARIABLE2 ) {
+                                       uint16 small_value_count;
+                                       if(TIFFGetField(tif, tag, &small_value_count, &raw_data) != 1)
+                                               continue;
+                                       value_count = small_value_count;
+                               } else {
+                                       assert (fip->field_readcount == TIFF_VARIABLE
+                                               || fip->field_readcount == TIFF_VARIABLE2);
                                        continue;
-                               }
+                               } 
                        } else {
-                               /* 
-                                * XXX: Should be fixed and removed, see the
-                                * notes related to TIFFTAG_PAGENUMBER,
-                                * TIFFTAG_HALFTONEHINTS,
-                                * TIFFTAG_YCBCRSUBSAMPLING and
-                                * TIFFTAG_DOTRANGE tags in tif_dir.c. */
-                               char *tmp;
-                               raw_data = _TIFFmalloc(
-                                       _TIFFDataSize(fip->field_type)
-                                       * value_count);
-                               tmp = raw_data;
-                               mem_alloc = 1;
-                               if(TIFFGetField(tif, tag, tmp,
-                               tmp + _TIFFDataSize(fip->field_type)) != 1) {
-                                       _TIFFfree(raw_data);
-                                       continue;
+                               if (fip->field_readcount == TIFF_VARIABLE
+                                   || fip->field_readcount == TIFF_VARIABLE2)
+                                       value_count = 1;
+                               else if (fip->field_readcount == TIFF_SPP)
+                                       value_count = td->td_samplesperpixel;
+                               else
+                                       value_count = fip->field_readcount;
+                               if (fip->field_tag == TIFFTAG_DOTRANGE
+                                   && strcmp(fip->field_name,"DotRange") == 0) {
+                                       /* TODO: This is an evil exception and should not have been
+                                          handled this way ... likely best if we move it into
+                                          the directory structure with an explicit field in 
+                                          libtiff 4.1 and assign it a FIELD_ value */
+                                       static uint16 dotrange[2];
+                                       raw_data = dotrange;
+                                       TIFFGetField(tif, tag, dotrange+0, dotrange+1);
+                               } else if (fip->field_type == TIFF_ASCII
+                                          || fip->field_readcount == TIFF_VARIABLE
+                                          || fip->field_readcount == TIFF_VARIABLE2
+                                          || fip->field_readcount == TIFF_SPP
+                                          || value_count > 1) {
+                                       if(TIFFGetField(tif, tag, &raw_data) != 1)
+                                               continue;
+                               } else {
+                                       raw_data = _TIFFmalloc(
+                                           _TIFFDataSize(fip->field_type)
+                                           * value_count);
+                                       mem_alloc = 1;
+                                       if(TIFFGetField(tif, tag, raw_data) != 1) {
+                                               _TIFFfree(raw_data);
+                                               continue;
+                                       }
                                }
                        }
-               }
 
-               /*
-                * Catch the tags which needs to be specially handled and
-                * pretty print them. If tag not handled in
-                * _TIFFPrettyPrintField() fall down and print it as any other
-                * tag.
-                */
-               if (_TIFFPrettyPrintField(tif, fd, tag, value_count, raw_data)) {
+                       /*
+                        * Catch the tags which needs to be specially handled
+                        * and pretty print them. If tag not handled in
+                        * _TIFFPrettyPrintField() fall down and print it as
+                        * any other tag.
+                        */
+                       if (!_TIFFPrettyPrintField(tif, fip, fd, tag, value_count, raw_data))
+                               _TIFFPrintField(fd, fip, value_count, raw_data);
+
                        if(mem_alloc)
                                _TIFFfree(raw_data);
-                       continue;
                }
-               else
-                       _TIFFPrintField(fd, fip, value_count, raw_data);
-
-               if(mem_alloc)
-                       _TIFFfree(raw_data);
-            }
-        }
+       }
         
        if (tif->tif_tagmethods.printdir)
                (*tif->tif_tagmethods.printdir)(tif, fd, flags);
+
+        _TIFFFillStriles( tif );
+        
        if ((flags & TIFFPRINT_STRIPS) &&
            TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) {
-               tstrip_t s;
+               uint32 s;
 
                fprintf(fd, "  %lu %s:\n",
                    (long) td->td_nstrips,
                    isTiled(tif) ? "Tiles" : "Strips");
                for (s = 0; s < td->td_nstrips; s++)
-                       fprintf(fd, "    %3lu: [%8lu, %8lu]\n",
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       fprintf(fd, "    %3lu: [%8I64u, %8I64u]\n",
+                           (unsigned long) s,
+                           (unsigned __int64) td->td_stripoffset[s],
+                           (unsigned __int64) td->td_stripbytecount[s]);
+#else
+                       fprintf(fd, "    %3lu: [%8llu, %8llu]\n",
                            (unsigned long) s,
-                           (unsigned long) td->td_stripoffset[s],
-                           (unsigned long) td->td_stripbytecount[s]);
+                           (unsigned long long) td->td_stripoffset[s],
+                           (unsigned long long) td->td_stripbytecount[s]);
+#endif
        }
 }
 
 void
 _TIFFprintAscii(FILE* fd, const char* cp)
 {
-       for (; *cp != '\0'; cp++) {
+       _TIFFprintAsciiBounded( fd, cp, strlen(cp));
+}
+
+static void
+_TIFFprintAsciiBounded(FILE* fd, const char* cp, int max_chars)
+{
+       for (; max_chars > 0 && *cp != '\0'; cp++, max_chars--) {
                const char* tp;
 
                if (isprint((int)*cp)) {
@@ -637,3 +707,10 @@ _TIFFprintAsciiTag(FILE* fd, const char* name, const char* value)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 90186d8439cf20bf64508fca2b1f335e3a5bad2d..4e0e84d9f74266ff7a1cdccdcaba863616ad03cf 100644 (file)
 #include "tiffiop.h"
 #include <stdio.h>
 
-       int TIFFFillStrip(TIFF*, tstrip_t);
-       int TIFFFillTile(TIFF*, ttile_t);
-static int TIFFStartStrip(TIFF*, tstrip_t);
-static int TIFFStartTile(TIFF*, ttile_t);
-static int TIFFCheckRead(TIFF*, int);
+int TIFFFillStrip(TIFF* tif, uint32 strip);
+int TIFFFillTile(TIFF* tif, uint32 tile);
+static int TIFFStartStrip(TIFF* tif, uint32 strip);
+static int TIFFStartTile(TIFF* tif, uint32 tile);
+static int TIFFCheckRead(TIFF*, int);
+static tmsize_t
+TIFFReadRawStrip1(TIFF* tif, uint32 strip, void* buf, tmsize_t size,const char* module);
 
-#define        NOSTRIP ((tstrip_t) -1)                 /* undefined state */
-#define        NOTILE  ((ttile_t) -1)                  /* undefined state */
+#define NOSTRIP ((uint32)(-1))       /* undefined state */
+#define NOTILE ((uint32)(-1))         /* undefined state */
+
+static int
+TIFFFillStripPartial( TIFF *tif, int strip, tmsize_t read_ahead, int restart )
+{
+       static const char module[] = "TIFFFillStripPartial";
+       register TIFFDirectory *td = &tif->tif_dir;
+        uint64 unused_data;
+        uint64 read_offset;
+        tmsize_t cc, to_read;
+        /* tmsize_t bytecountm; */
+        
+        if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+            return 0;
+        
+        /*
+         * Expand raw data buffer, if needed, to hold data
+         * strip coming from file (perhaps should set upper
+         * bound on the size of a buffer we'll use?).
+         */
+
+        /* bytecountm=(tmsize_t) td->td_stripbytecount[strip]; */
+        if (read_ahead*2 > tif->tif_rawdatasize) {
+                assert( restart );
+                
+                tif->tif_curstrip = NOSTRIP;
+                if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
+                        TIFFErrorExt(tif->tif_clientdata, module,
+                                     "Data buffer too small to hold part of strip %lu",
+                                     (unsigned long) strip);
+                        return (0);
+                }
+                if (!TIFFReadBufferSetup(tif, 0, read_ahead*2))
+                        return (0);
+        }
+
+        if( restart )
+        {
+                tif->tif_rawdataloaded = 0;
+                tif->tif_rawdataoff = 0;
+        }
+
+        /*
+        ** If we are reading more data, move any unused data to the
+        ** start of the buffer.
+        */
+        if( tif->tif_rawdataloaded > 0 )
+                unused_data = tif->tif_rawdataloaded - (tif->tif_rawcp - tif->tif_rawdata);
+        else
+                unused_data = 0;
+        
+        if( unused_data > 0 )
+        {
+               assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
+                memmove( tif->tif_rawdata, tif->tif_rawcp, unused_data );
+        }
+
+        /*
+        ** Seek to the point in the file where more data should be read.
+        */
+        read_offset = td->td_stripoffset[strip]
+                + tif->tif_rawdataoff + tif->tif_rawdataloaded;
+
+        if (!SeekOK(tif, read_offset)) {
+                TIFFErrorExt(tif->tif_clientdata, module,
+                             "Seek error at scanline %lu, strip %lu",
+                             (unsigned long) tif->tif_row, (unsigned long) strip);
+                return 0;
+        }
+
+        /*
+        ** How much do we want to read?
+        */
+        to_read = tif->tif_rawdatasize - unused_data;
+        if( (uint64) to_read > td->td_stripbytecount[strip] 
+            - tif->tif_rawdataoff - tif->tif_rawdataloaded )
+        {
+                to_read = td->td_stripbytecount[strip]
+                        - tif->tif_rawdataoff - tif->tif_rawdataloaded;
+        }
+
+       assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
+        cc = TIFFReadFile(tif, tif->tif_rawdata + unused_data, to_read);
+
+        if (cc != to_read) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                TIFFErrorExt(tif->tif_clientdata, module,
+                             "Read error at scanline %lu; got %I64u bytes, expected %I64u",
+                             (unsigned long) tif->tif_row,
+                             (unsigned __int64) cc,
+                             (unsigned __int64) to_read);
+#else
+                TIFFErrorExt(tif->tif_clientdata, module,
+                             "Read error at scanline %lu; got %llu bytes, expected %llu",
+                             (unsigned long) tif->tif_row,
+                             (unsigned long long) cc,
+                             (unsigned long long) to_read);
+#endif
+                return 0;
+        }
+        
+        tif->tif_rawdataoff = tif->tif_rawdataoff + tif->tif_rawdataloaded - unused_data ;
+        tif->tif_rawdataloaded = unused_data + to_read;
+
+        tif->tif_rawcp = tif->tif_rawdata;
+                        
+        if (!isFillOrder(tif, td->td_fillorder) &&
+            (tif->tif_flags & TIFF_NOBITREV) == 0) {
+               assert((tif->tif_flags&TIFF_BUFFERMMAP)==0);
+                TIFFReverseBits(tif->tif_rawdata + unused_data, to_read );
+       }
+
+        /*
+        ** When starting a strip from the beginning we need to
+        ** restart the decoder.
+        */
+        if( restart )
+                return TIFFStartStrip(tif, strip);
+        else
+                return 1;
+}
 
 /*
  * Seek to a random row+sample in a file.
+ *
+ * Only used by TIFFReadScanline, and is only used on
+ * strip organized files.  We do some tricky stuff to try
+ * and avoid reading the whole compressed raw data for big
+ * strips.
  */
 static int
-TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
+TIFFSeek(TIFF* tif, uint32 row, uint16 sample )
 {
        register TIFFDirectory *td = &tif->tif_dir;
-       tstrip_t strip;
+       uint32 strip;
+        int    whole_strip;
+       tmsize_t read_ahead = 0;
 
+        /*
+        ** Establish what strip we are working from.
+        */
        if (row >= td->td_imagelength) {        /* out of range */
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Row out of range, max %lu",
-                   (unsigned long) row, (unsigned long) td->td_imagelength);
+               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                   "%lu: Row out of range, max %lu",
+                   (unsigned long) row,
+                   (unsigned long) td->td_imagelength);
                return (0);
        }
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
@@ -61,13 +195,60 @@ TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
                            (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
                        return (0);
                }
-               strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
+               strip = (uint32)sample*td->td_stripsperimage + row/td->td_rowsperstrip;
        } else
                strip = row / td->td_rowsperstrip;
-       if (strip != tif->tif_curstrip) {       /* different strip, refill */
-               if (!TIFFFillStrip(tif, strip))
-                       return (0);
-       } else if (row < tif->tif_row) {
+
+        /*
+         * Do we want to treat this strip as one whole chunk or
+         * read it a few lines at a time?
+         */
+#if defined(CHUNKY_STRIP_READ_SUPPORT)
+        if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+            return 0;
+        whole_strip = tif->tif_dir.td_stripbytecount[strip] < 10
+                || isMapped(tif);
+#else
+        whole_strip = 1;
+#endif
+        
+        if( !whole_strip )
+        {
+                read_ahead = tif->tif_scanlinesize * 16 + 5000;
+        }
+
+        /*
+         * If we haven't loaded this strip, do so now, possibly
+         * only reading the first part.
+         */
+       if (strip != tif->tif_curstrip) {       /* different strip, refill */
+                
+                if( whole_strip )
+                {
+                        if (!TIFFFillStrip(tif, strip))
+                                return (0);
+                }
+                else
+                {
+                        if( !TIFFFillStripPartial(tif,strip,read_ahead,1) )
+                                return 0;
+                }
+       }
+
+        /*
+        ** If we already have some data loaded, do we need to read some more?
+        */
+        else if( !whole_strip )
+        {
+                if( ((tif->tif_rawdata + tif->tif_rawdataloaded) - tif->tif_rawcp) < read_ahead 
+                    && (uint64) tif->tif_rawdataoff+tif->tif_rawdataloaded < td->td_stripbytecount[strip] )
+                {
+                        if( !TIFFFillStripPartial(tif,strip,read_ahead,0) )
+                                return 0;
+                }
+        }
+
+        if (row < tif->tif_row) {
                /*
                 * Moving backwards within the same strip: backup
                 * to the start and then decode forward (below).
@@ -76,22 +257,36 @@ TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
                 * strip, it's better to just read and decode the entire
                 * strip, and then access the decoded data in a random fashion.
                 */
-               if (!TIFFStartStrip(tif, strip))
-                       return (0);
+
+                if( tif->tif_rawdataoff != 0 )
+                {
+                        if( !TIFFFillStripPartial(tif,strip,read_ahead,1) )
+                                return 0;
+                }
+                else
+                {
+                        if (!TIFFStartStrip(tif, strip))
+                                return (0);
+                }
        }
+        
        if (row != tif->tif_row) {
                /*
                 * Seek forward to the desired row.
                 */
+
+                /* TODO: Will this really work with partial buffers? */
+                
                if (!(*tif->tif_seek)(tif, row - tif->tif_row))
                        return (0);
                tif->tif_row = row;
        }
+
        return (1);
 }
 
 int
-TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
+TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample)
 {
        int e;
 
@@ -102,14 +297,14 @@ TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
                 * Decompress desired row into user buffer.
                 */
                e = (*tif->tif_decoderow)
-                   (tif, (tidata_t) buf, tif->tif_scanlinesize, sample);
+                   (tif, (uint8*) buf, tif->tif_scanlinesize, sample);  
 
-                /* we are now poised at the beginning of the next row */
-                tif->tif_row = row + 1;
+               /* we are now poised at the beginning of the next row */
+               tif->tif_row = row + 1;
 
                if (e)
-                       (*tif->tif_postdecode)(tif, (tidata_t) buf,
-                           tif->tif_scanlinesize);
+                       (*tif->tif_postdecode)(tif, (uint8*) buf,
+                           tif->tif_scanlinesize);  
        }
        return (e > 0 ? 1 : -1);
 }
@@ -118,91 +313,120 @@ TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
  * Read a strip of data and decompress the specified
  * amount into the user-supplied buffer.
  */
-tsize_t
-TIFFReadEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
+tmsize_t
+TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size)
 {
+       static const char module[] = "TIFFReadEncodedStrip";
        TIFFDirectory *td = &tif->tif_dir;
-       uint32 nrows;
-       tsize_t stripsize;
-        tstrip_t sep_strip, strips_per_sep;
-
-       if (!TIFFCheckRead(tif, 0))
-               return (-1);
-       if (strip >= td->td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%ld: Strip out of range, max %ld",
-                   (long) strip, (long) td->td_nstrips);
-               return (-1);
+       uint32 rowsperstrip;
+       uint32 stripsperplane;
+       uint32 stripinplane;
+       uint16 plane;
+       uint32 rows;
+       tmsize_t stripsize;
+       if (!TIFFCheckRead(tif,0))
+               return((tmsize_t)(-1));
+       if (strip>=td->td_nstrips)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,
+                   "%lu: Strip out of range, max %lu",(unsigned long)strip,
+                   (unsigned long)td->td_nstrips);
+               return((tmsize_t)(-1));
        }
        /*
         * Calculate the strip size according to the number of
         * rows in the strip (check for truncated last strip on any
-         * of the separations).
+        * of the separations).
         */
-        if( td->td_rowsperstrip >= td->td_imagelength )
-            strips_per_sep = 1;
-        else
-            strips_per_sep = (td->td_imagelength+td->td_rowsperstrip-1)
-                / td->td_rowsperstrip;
-
-        sep_strip = strip % strips_per_sep;
-
-       if (sep_strip != strips_per_sep-1 ||
-           (nrows = td->td_imagelength % td->td_rowsperstrip) == 0)
-               nrows = td->td_rowsperstrip;
-
-       stripsize = TIFFVStripSize(tif, nrows);
-       if (size == (tsize_t) -1)
-               size = stripsize;
-       else if (size > stripsize)
-               size = stripsize;
-       if (TIFFFillStrip(tif, strip) 
-            && (*tif->tif_decodestrip)(tif, (tidata_t) buf, size, 
-                         (tsample_t)(strip / td->td_stripsperimage)) > 0 ) {
-               (*tif->tif_postdecode)(tif, (tidata_t) buf, size);
-               return (size);
-       } else
-               return ((tsize_t) -1);
+       rowsperstrip=td->td_rowsperstrip;
+       if (rowsperstrip>td->td_imagelength)
+               rowsperstrip=td->td_imagelength;
+       stripsperplane=((td->td_imagelength+rowsperstrip-1)/rowsperstrip);
+       stripinplane=(strip%stripsperplane);
+       plane=(strip/stripsperplane);
+       rows=td->td_imagelength-stripinplane*rowsperstrip;
+       if (rows>rowsperstrip)
+               rows=rowsperstrip;
+       stripsize=TIFFVStripSize(tif,rows);
+       if (stripsize==0)
+               return((tmsize_t)(-1));
+       if ((size!=(tmsize_t)(-1))&&(size<stripsize))
+               stripsize=size;
+       if (!TIFFFillStrip(tif,strip))
+               return((tmsize_t)(-1));
+       if ((*tif->tif_decodestrip)(tif,buf,stripsize,plane)<=0)
+               return((tmsize_t)(-1));
+       (*tif->tif_postdecode)(tif,buf,stripsize);
+       return(stripsize);
 }
 
-static tsize_t
-TIFFReadRawStrip1(TIFF* tif,
-    tstrip_t strip, tdata_t buf, tsize_t size, const char* module)
+static tmsize_t
+TIFFReadRawStrip1(TIFF* tif, uint32 strip, void* buf, tmsize_t size,
+    const char* module)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
+    if (!_TIFFFillStriles( tif ))
+        return ((tmsize_t)(-1));
+        
+       assert((tif->tif_flags&TIFF_NOREADRAW)==0);
        if (!isMapped(tif)) {
-               tsize_t cc;
+               tmsize_t cc;
 
                if (!SeekOK(tif, td->td_stripoffset[strip])) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Seek error at scanline %lu, strip %lu",
-                           tif->tif_name,
+                           "Seek error at scanline %lu, strip %lu",
                            (unsigned long) tif->tif_row, (unsigned long) strip);
-                       return (-1);
+                       return ((tmsize_t)(-1));
                }
                cc = TIFFReadFile(tif, buf, size);
                if (cc != size) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
                        TIFFErrorExt(tif->tif_clientdata, module,
-               "%s: Read error at scanline %lu; got %lu bytes, expected %lu",
-                           tif->tif_name,
-                           (unsigned long) tif->tif_row,
-                           (unsigned long) cc,
-                           (unsigned long) size);
-                       return (-1);
+               "Read error at scanline %lu; got %I64u bytes, expected %I64u",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned __int64) cc,
+                                    (unsigned __int64) size);
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+               "Read error at scanline %lu; got %llu bytes, expected %llu",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long long) cc,
+                                    (unsigned long long) size);
+#endif
+                       return ((tmsize_t)(-1));
                }
        } else {
-               if (td->td_stripoffset[strip] + size > tif->tif_size) {
+               tmsize_t ma,mb;
+               tmsize_t n;
+               ma=(tmsize_t)td->td_stripoffset[strip];
+               mb=ma+size;
+               if (((uint64)ma!=td->td_stripoffset[strip])||(ma>tif->tif_size))
+                       n=0;
+               else if ((mb<ma)||(mb<size)||(mb>tif->tif_size))
+                       n=tif->tif_size-ma;
+               else
+                       n=size;
+               if (n!=size) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
                        TIFFErrorExt(tif->tif_clientdata, module,
-    "%s: Read error at scanline %lu, strip %lu; got %lu bytes, expected %lu",
-                           tif->tif_name,
-                           (unsigned long) tif->tif_row,
-                           (unsigned long) strip,
-                           (unsigned long) tif->tif_size - td->td_stripoffset[strip],
-                           (unsigned long) size);
-                       return (-1);
+       "Read error at scanline %lu, strip %lu; got %I64u bytes, expected %I64u",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) strip,
+                                    (unsigned __int64) n,
+                                    (unsigned __int64) size);
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+       "Read error at scanline %lu, strip %lu; got %llu bytes, expected %llu",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) strip,
+                                    (unsigned long long) n,
+                                    (unsigned long long) size);
+#endif
+                       return ((tmsize_t)(-1));
                }
-               _TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[strip],
-                            size);
+               _TIFFmemcpy(buf, tif->tif_base + ma,
+                           size);
        }
        return (size);
 }
@@ -210,109 +434,192 @@ TIFFReadRawStrip1(TIFF* tif,
 /*
  * Read a strip of data from the file.
  */
-tsize_t
-TIFFReadRawStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
+tmsize_t
+TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size)
 {
        static const char module[] = "TIFFReadRawStrip";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t bytecount;
+       uint64 bytecount;
+       tmsize_t bytecountm;
 
        if (!TIFFCheckRead(tif, 0))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        if (strip >= td->td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Strip out of range, max %lu",
-                   (unsigned long) strip, (unsigned long) td->td_nstrips);
-               return ((tsize_t) -1);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                    "%lu: Strip out of range, max %lu",
+                    (unsigned long) strip,
+                    (unsigned long) td->td_nstrips);
+               return ((tmsize_t)(-1));
+       }
+       if (tif->tif_flags&TIFF_NOREADRAW)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "Compression scheme does not support access to raw uncompressed data");
+               return ((tmsize_t)(-1));
        }
        bytecount = td->td_stripbytecount[strip];
        if (bytecount <= 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "%lu: Invalid strip byte count, strip %lu",
-                   (unsigned long) bytecount, (unsigned long) strip);
-               return ((tsize_t) -1);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%I64u: Invalid strip byte count, strip %lu",
+                            (unsigned __int64) bytecount,
+                            (unsigned long) strip);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%llu: Invalid strip byte count, strip %lu",
+                            (unsigned long long) bytecount,
+                            (unsigned long) strip);
+#endif
+               return ((tmsize_t)(-1));
+       }
+       bytecountm = (tmsize_t)bytecount;
+       if ((uint64)bytecountm!=bytecount) {
+               TIFFErrorExt(tif->tif_clientdata, module, "Integer overflow");
+               return ((tmsize_t)(-1));
        }
-       if (size != (tsize_t)-1 && size < bytecount)
-               bytecount = size;
-       return (TIFFReadRawStrip1(tif, strip, buf, bytecount, module));
+       if (size != (tmsize_t)(-1) && size < bytecountm)
+               bytecountm = size;
+       return (TIFFReadRawStrip1(tif, strip, buf, bytecountm, module));
 }
 
 /*
- * Read the specified strip and setup for decoding. 
- * The data buffer is expanded, as necessary, to
- * hold the strip's data.
+ * Read the specified strip and setup for decoding. The data buffer is
+ * expanded, as necessary, to hold the strip's data.
  */
 int
-TIFFFillStrip(TIFF* tif, tstrip_t strip)
+TIFFFillStrip(TIFF* tif, uint32 strip)
 {
        static const char module[] = "TIFFFillStrip";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t bytecount;
 
-       bytecount = td->td_stripbytecount[strip];
-       if (bytecount <= 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "%lu: Invalid strip byte count, strip %lu",
-                   (unsigned long) bytecount, (unsigned long) strip);
-               return (0);
-       }
-       if (isMapped(tif) &&
-           (isFillOrder(tif, td->td_fillorder)
-             || (tif->tif_flags & TIFF_NOBITREV))) {
-               /*
-                * The image is mapped into memory and we either don't
-                * need to flip bits or the compression routine is going
-                * to handle this operation itself.  In this case, avoid
-                * copying the raw data and instead just reference the
-                * data from the memory mapped file image.  This assumes
-                * that the decompression routines do not modify the
-                * contents of the raw data buffer (if they try to,
-                * the application will get a fault since the file is
-                * mapped read-only).
-                */
-               if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
-                       _TIFFfree(tif->tif_rawdata);
-               tif->tif_flags &= ~TIFF_MYBUFFER;
-               if ( td->td_stripoffset[strip] + bytecount > tif->tif_size) {
-                       /*
-                        * This error message might seem strange, but it's
-                        * what would happen if a read were done instead.
-                        */
+    if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+        return 0;
+        
+       if ((tif->tif_flags&TIFF_NOREADRAW)==0)
+       {
+               uint64 bytecount = td->td_stripbytecount[strip];
+               if (bytecount <= 0) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "Invalid strip byte count %I64u, strip %lu",
+                                    (unsigned __int64) bytecount,
+                                    (unsigned long) strip);
+#else
                        TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Read error on strip %lu; got %lu bytes, expected %lu",
-                           tif->tif_name,
-                           (unsigned long) strip,
-                           (unsigned long) tif->tif_size - td->td_stripoffset[strip],
-                           (unsigned long) bytecount);
-                       tif->tif_curstrip = NOSTRIP;
+                               "Invalid strip byte count %llu, strip %lu",
+                                    (unsigned long long) bytecount,
+                                    (unsigned long) strip);
+#endif
                        return (0);
                }
-               tif->tif_rawdatasize = bytecount;
-               tif->tif_rawdata = tif->tif_base + td->td_stripoffset[strip];
-       } else {
-               /*
-                * Expand raw data buffer, if needed, to
-                * hold data strip coming from file
-                * (perhaps should set upper bound on
-                *  the size of a buffer we'll use?).
-                */
-               if (bytecount > tif->tif_rawdatasize) {
-                       tif->tif_curstrip = NOSTRIP;
-                       if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
+               if (isMapped(tif) &&
+                   (isFillOrder(tif, td->td_fillorder)
+                   || (tif->tif_flags & TIFF_NOBITREV))) {
+                       /*
+                        * The image is mapped into memory and we either don't
+                        * need to flip bits or the compression routine is
+                        * going to handle this operation itself.  In this
+                        * case, avoid copying the raw data and instead just
+                        * reference the data from the memory mapped file
+                        * image.  This assumes that the decompression
+                        * routines do not modify the contents of the raw data
+                        * buffer (if they try to, the application will get a
+                        * fault since the file is mapped read-only).
+                        */
+                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
+                               _TIFFfree(tif->tif_rawdata);
+                               tif->tif_rawdata = NULL;
+                               tif->tif_rawdatasize = 0;
+                       }
+                       tif->tif_flags &= ~TIFF_MYBUFFER;
+                       /*
+                        * We must check for overflow, potentially causing
+                        * an OOB read. Instead of simple
+                        *
+                        *  td->td_stripoffset[strip]+bytecount > tif->tif_size
+                        *
+                        * comparison (which can overflow) we do the following
+                        * two comparisons:
+                        */
+                       if (bytecount > (uint64)tif->tif_size ||
+                           td->td_stripoffset[strip] > (uint64)tif->tif_size - bytecount) {
+                               /*
+                                * This error message might seem strange, but
+                                * it's what would happen if a read were done
+                                * instead.
+                                */
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
                                TIFFErrorExt(tif->tif_clientdata, module,
-                               "%s: Data buffer too small to hold strip %lu",
-                                   tif->tif_name, (unsigned long) strip);
+
+                                       "Read error on strip %lu; "
+                                       "got %I64u bytes, expected %I64u",
+                                       (unsigned long) strip,
+                                       (unsigned __int64) tif->tif_size - td->td_stripoffset[strip],
+                                       (unsigned __int64) bytecount);
+#else
+                               TIFFErrorExt(tif->tif_clientdata, module,
+
+                                       "Read error on strip %lu; "
+                                       "got %llu bytes, expected %llu",
+                                       (unsigned long) strip,
+                                       (unsigned long long) tif->tif_size - td->td_stripoffset[strip],
+                                       (unsigned long long) bytecount);
+#endif
+                               tif->tif_curstrip = NOSTRIP;
                                return (0);
                        }
-                       if (!TIFFReadBufferSetup(tif, 0,
-                           TIFFroundup(bytecount, 1024)))
+                       tif->tif_rawdatasize = (tmsize_t)bytecount;
+                       tif->tif_rawdata = tif->tif_base + (tmsize_t)td->td_stripoffset[strip];
+                        tif->tif_rawdataoff = 0;
+                        tif->tif_rawdataloaded = (tmsize_t) bytecount;
+
+                       /* 
+                        * When we have tif_rawdata reference directly into the memory mapped file
+                        * we need to be pretty careful about how we use the rawdata.  It is not
+                        * a general purpose working buffer as it normally otherwise is.  So we
+                        * keep track of this fact to avoid using it improperly.
+                        */
+                       tif->tif_flags |= TIFF_BUFFERMMAP;
+               } else {
+                       /*
+                        * Expand raw data buffer, if needed, to hold data
+                        * strip coming from file (perhaps should set upper
+                        * bound on the size of a buffer we'll use?).
+                        */
+                       tmsize_t bytecountm;
+                       bytecountm=(tmsize_t)bytecount;
+                       if ((uint64)bytecountm!=bytecount)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+                               return(0);
+                       }
+                       if (bytecountm > tif->tif_rawdatasize) {
+                               tif->tif_curstrip = NOSTRIP;
+                               if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                           "Data buffer too small to hold strip %lu",
+                                           (unsigned long) strip);
+                                       return (0);
+                               }
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
+                       if (tif->tif_flags&TIFF_BUFFERMMAP) {
+                               tif->tif_curstrip = NOSTRIP;
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
+                       if (TIFFReadRawStrip1(tif, strip, tif->tif_rawdata,
+                               bytecountm, module) != bytecountm)
                                return (0);
-               }
-               if (TIFFReadRawStrip1(tif, strip, (unsigned char *)tif->tif_rawdata,
-                   bytecount, module) != bytecount)
-                       return (0);
-               if (!isFillOrder(tif, td->td_fillorder) &&
-                   (tif->tif_flags & TIFF_NOBITREV) == 0)
-                       TIFFReverseBits(tif->tif_rawdata, bytecount);
+
+                        tif->tif_rawdataoff = 0;
+                        tif->tif_rawdataloaded = bytecountm;
+                        
+                       if (!isFillOrder(tif, td->td_fillorder) &&
+                           (tif->tif_flags & TIFF_NOBITREV) == 0)
+                               TIFFReverseBits(tif->tif_rawdata, bytecountm);
+                }
        }
        return (TIFFStartStrip(tif, strip));
 }
@@ -326,87 +633,117 @@ TIFFFillStrip(TIFF* tif, tstrip_t strip)
  * Read and decompress a tile of data.  The
  * tile is selected by the (x,y,z,s) coordinates.
  */
-tsize_t
-TIFFReadTile(TIFF* tif,
-    tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
+tmsize_t
+TIFFReadTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s)
 {
        if (!TIFFCheckRead(tif, 1) || !TIFFCheckTile(tif, x, y, z, s))
-               return (-1);
+               return ((tmsize_t)(-1));
        return (TIFFReadEncodedTile(tif,
-           TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
+           TIFFComputeTile(tif, x, y, z, s), buf, (tmsize_t)(-1)));
 }
 
 /*
  * Read a tile of data and decompress the specified
  * amount into the user-supplied buffer.
  */
-tsize_t
-TIFFReadEncodedTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
+tmsize_t
+TIFFReadEncodedTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size)
 {
+       static const char module[] = "TIFFReadEncodedTile";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t tilesize = tif->tif_tilesize;
+       tmsize_t tilesize = tif->tif_tilesize;
 
        if (!TIFFCheckRead(tif, 1))
-               return (-1);
+               return ((tmsize_t)(-1));
        if (tile >= td->td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%ld: Tile out of range, max %ld",
-                   (long) tile, (unsigned long) td->td_nstrips);
-               return (-1);
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "%lu: Tile out of range, max %lu",
+                   (unsigned long) tile, (unsigned long) td->td_nstrips);
+               return ((tmsize_t)(-1));
        }
-       if (size == (tsize_t) -1)
+       if (size == (tmsize_t)(-1))
                size = tilesize;
        else if (size > tilesize)
                size = tilesize;
        if (TIFFFillTile(tif, tile) && (*tif->tif_decodetile)(tif,
-           (tidata_t) buf, size, (tsample_t)(tile/td->td_stripsperimage))) {
-               (*tif->tif_postdecode)(tif, (tidata_t) buf, size);
+           (uint8*) buf, size, (uint16)(tile/td->td_stripsperimage))) {
+               (*tif->tif_postdecode)(tif, (uint8*) buf, size);
                return (size);
        } else
-               return (-1);
+               return ((tmsize_t)(-1));
 }
 
-static tsize_t
-TIFFReadRawTile1(TIFF* tif,
-    ttile_t tile, tdata_t buf, tsize_t size, const char* module)
+static tmsize_t
+TIFFReadRawTile1(TIFF* tif, uint32 tile, void* buf, tmsize_t size, const char* module)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
+    if (!_TIFFFillStriles( tif ))
+        return ((tmsize_t)(-1));
+
+       assert((tif->tif_flags&TIFF_NOREADRAW)==0);
        if (!isMapped(tif)) {
-               tsize_t cc;
+               tmsize_t cc;
 
                if (!SeekOK(tif, td->td_stripoffset[tile])) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Seek error at row %ld, col %ld, tile %ld",
-                           tif->tif_name,
-                           (long) tif->tif_row,
-                           (long) tif->tif_col,
-                           (long) tile);
-                       return ((tsize_t) -1);
+                           "Seek error at row %lu, col %lu, tile %lu",
+                           (unsigned long) tif->tif_row,
+                           (unsigned long) tif->tif_col,
+                           (unsigned long) tile);
+                       return ((tmsize_t)(-1));
                }
                cc = TIFFReadFile(tif, buf, size);
                if (cc != size) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       TIFFErrorExt(tif->tif_clientdata, module,
+       "Read error at row %lu, col %lu; got %I64u bytes, expected %I64u",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) tif->tif_col,
+                                    (unsigned __int64) cc,
+                                    (unsigned __int64) size);
+#else
                        TIFFErrorExt(tif->tif_clientdata, module,
-           "%s: Read error at row %ld, col %ld; got %lu bytes, expected %lu",
-                           tif->tif_name,
-                           (long) tif->tif_row,
-                           (long) tif->tif_col,
-                           (unsigned long) cc,
-                           (unsigned long) size);
-                       return ((tsize_t) -1);
+       "Read error at row %lu, col %lu; got %llu bytes, expected %llu",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) tif->tif_col,
+                                    (unsigned long long) cc,
+                                    (unsigned long long) size);
+#endif
+                       return ((tmsize_t)(-1));
                }
        } else {
-               if (td->td_stripoffset[tile] + size > tif->tif_size) {
+               tmsize_t ma,mb;
+               tmsize_t n;
+               ma=(tmsize_t)td->td_stripoffset[tile];
+               mb=ma+size;
+               if (((uint64)ma!=td->td_stripoffset[tile])||(ma>tif->tif_size))
+                       n=0;
+               else if ((mb<ma)||(mb<size)||(mb>tif->tif_size))
+                       n=tif->tif_size-ma;
+               else
+                       n=size;
+               if (n!=size) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
                        TIFFErrorExt(tif->tif_clientdata, module,
-    "%s: Read error at row %ld, col %ld, tile %ld; got %lu bytes, expected %lu",
-                           tif->tif_name,
-                           (long) tif->tif_row,
-                           (long) tif->tif_col,
-                           (long) tile,
-                           (unsigned long) tif->tif_size - td->td_stripoffset[tile],
-                           (unsigned long) size);
-                       return ((tsize_t) -1);
+"Read error at row %lu, col %lu, tile %lu; got %I64u bytes, expected %I64u",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) tif->tif_col,
+                                    (unsigned long) tile,
+                                    (unsigned __int64) n,
+                                    (unsigned __int64) size);
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+"Read error at row %lu, col %lu, tile %lu; got %llu bytes, expected %llu",
+                                    (unsigned long) tif->tif_row,
+                                    (unsigned long) tif->tif_col,
+                                    (unsigned long) tile,
+                                    (unsigned long long) n,
+                                    (unsigned long long) size);
+#endif
+                       return ((tmsize_t)(-1));
                }
-               _TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[tile], size);
+               _TIFFmemcpy(buf, tif->tif_base + ma, size);
        }
        return (size);
 }
@@ -414,94 +751,152 @@ TIFFReadRawTile1(TIFF* tif,
 /*
  * Read a tile of data from the file.
  */
-tsize_t
-TIFFReadRawTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
+tmsize_t
+TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size)
 {
        static const char module[] = "TIFFReadRawTile";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t bytecount;
+       uint64 bytecount64;
+       tmsize_t bytecountm;
 
        if (!TIFFCheckRead(tif, 1))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        if (tile >= td->td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "%lu: Tile out of range, max %lu",
+               TIFFErrorExt(tif->tif_clientdata, module,
+                   "%lu: Tile out of range, max %lu",
                    (unsigned long) tile, (unsigned long) td->td_nstrips);
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        }
-       bytecount = td->td_stripbytecount[tile];
-       if (size != (tsize_t) -1 && size < bytecount)
-               bytecount = size;
-       return (TIFFReadRawTile1(tif, tile, buf, bytecount, module));
+       if (tif->tif_flags&TIFF_NOREADRAW)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module,
+               "Compression scheme does not support access to raw uncompressed data");
+               return ((tmsize_t)(-1));
+       }
+       bytecount64 = td->td_stripbytecount[tile];
+       if (size != (tmsize_t)(-1) && (uint64)size < bytecount64)
+               bytecount64 = (uint64)size;
+       bytecountm = (tmsize_t)bytecount64;
+       if ((uint64)bytecountm!=bytecount64)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               return ((tmsize_t)(-1));
+       }
+       return (TIFFReadRawTile1(tif, tile, buf, bytecountm, module));
 }
 
 /*
- * Read the specified tile and setup for decoding. 
- * The data buffer is expanded, as necessary, to
- * hold the tile's data.
+ * Read the specified tile and setup for decoding. The data buffer is
+ * expanded, as necessary, to hold the tile's data.
  */
 int
-TIFFFillTile(TIFF* tif, ttile_t tile)
+TIFFFillTile(TIFF* tif, uint32 tile)
 {
        static const char module[] = "TIFFFillTile";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t bytecount;
 
-       bytecount = td->td_stripbytecount[tile];
-       if (bytecount <= 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "%lu: Invalid tile byte count, tile %lu",
-                   (unsigned long) bytecount, (unsigned long) tile);
-               return (0);
-       }
-       if (isMapped(tif) &&
-           (isFillOrder(tif, td->td_fillorder)
-             || (tif->tif_flags & TIFF_NOBITREV))) {
-               /*
-                * The image is mapped into memory and we either don't
-                * need to flip bits or the compression routine is going
-                * to handle this operation itself.  In this case, avoid
-                * copying the raw data and instead just reference the
-                * data from the memory mapped file image.  This assumes
-                * that the decompression routines do not modify the
-                * contents of the raw data buffer (if they try to,
-                * the application will get a fault since the file is
-                * mapped read-only).
-                */
-               if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
-                       _TIFFfree(tif->tif_rawdata);
-               tif->tif_flags &= ~TIFF_MYBUFFER;
-               if ( td->td_stripoffset[tile] + bytecount > tif->tif_size) {
-                       tif->tif_curtile = NOTILE;
+    if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+        return 0;
+        
+       if ((tif->tif_flags&TIFF_NOREADRAW)==0)
+       {
+               uint64 bytecount = td->td_stripbytecount[tile];
+               if (bytecount <= 0) {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "%I64u: Invalid tile byte count, tile %lu",
+                                    (unsigned __int64) bytecount,
+                                    (unsigned long) tile);
+#else
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                               "%llu: Invalid tile byte count, tile %lu",
+                                    (unsigned long long) bytecount,
+                                    (unsigned long) tile);
+#endif
                        return (0);
                }
-               tif->tif_rawdatasize = bytecount;
-               tif->tif_rawdata = tif->tif_base + td->td_stripoffset[tile];
-       } else {
-               /*
-                * Expand raw data buffer, if needed, to
-                * hold data tile coming from file
-                * (perhaps should set upper bound on
-                *  the size of a buffer we'll use?).
-                */
-               if (bytecount > tif->tif_rawdatasize) {
-                       tif->tif_curtile = NOTILE;
-                       if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
-                               TIFFErrorExt(tif->tif_clientdata, module,
-                               "%s: Data buffer too small to hold tile %ld",
-                                   tif->tif_name, (long) tile);
+               if (isMapped(tif) &&
+                   (isFillOrder(tif, td->td_fillorder)
+                    || (tif->tif_flags & TIFF_NOBITREV))) {
+                       /*
+                        * The image is mapped into memory and we either don't
+                        * need to flip bits or the compression routine is
+                        * going to handle this operation itself.  In this
+                        * case, avoid copying the raw data and instead just
+                        * reference the data from the memory mapped file
+                        * image.  This assumes that the decompression
+                        * routines do not modify the contents of the raw data
+                        * buffer (if they try to, the application will get a
+                        * fault since the file is mapped read-only).
+                        */
+                       if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
+                               _TIFFfree(tif->tif_rawdata);
+                               tif->tif_rawdata = NULL;
+                               tif->tif_rawdatasize = 0;
+                       }
+                       tif->tif_flags &= ~TIFF_MYBUFFER;
+                       /*
+                        * We must check for overflow, potentially causing
+                        * an OOB read. Instead of simple
+                        *
+                        *  td->td_stripoffset[tile]+bytecount > tif->tif_size
+                        *
+                        * comparison (which can overflow) we do the following
+                        * two comparisons:
+                        */
+                       if (bytecount > (uint64)tif->tif_size ||
+                           td->td_stripoffset[tile] > (uint64)tif->tif_size - bytecount) {
+                               tif->tif_curtile = NOTILE;
                                return (0);
                        }
-                       if (!TIFFReadBufferSetup(tif, 0,
-                           TIFFroundup(bytecount, 1024)))
+                       tif->tif_rawdatasize = (tmsize_t)bytecount;
+                       tif->tif_rawdata =
+                               tif->tif_base + (tmsize_t)td->td_stripoffset[tile];
+                        tif->tif_rawdataoff = 0;
+                        tif->tif_rawdataloaded = (tmsize_t) bytecount;
+                       tif->tif_flags |= TIFF_BUFFERMMAP;
+               } else {
+                       /*
+                        * Expand raw data buffer, if needed, to hold data
+                        * tile coming from file (perhaps should set upper
+                        * bound on the size of a buffer we'll use?).
+                        */
+                       tmsize_t bytecountm;
+                       bytecountm=(tmsize_t)bytecount;
+                       if ((uint64)bytecountm!=bytecount)
+                       {
+                               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+                               return(0);
+                       }
+                       if (bytecountm > tif->tif_rawdatasize) {
+                               tif->tif_curtile = NOTILE;
+                               if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
+                                       TIFFErrorExt(tif->tif_clientdata, module,
+                                           "Data buffer too small to hold tile %lu",
+                                           (unsigned long) tile);
+                                       return (0);
+                               }
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
+                       if (tif->tif_flags&TIFF_BUFFERMMAP) {
+                               tif->tif_curtile = NOTILE;
+                               if (!TIFFReadBufferSetup(tif, 0, bytecountm))
+                                       return (0);
+                       }
+
+                       if (TIFFReadRawTile1(tif, tile, tif->tif_rawdata,
+                           bytecountm, module) != bytecountm)
                                return (0);
+
+                        tif->tif_rawdataoff = 0;
+                        tif->tif_rawdataloaded = bytecountm;
+                        
+                       if (!isFillOrder(tif, td->td_fillorder) &&
+                           (tif->tif_flags & TIFF_NOBITREV) == 0)
+                               TIFFReverseBits(tif->tif_rawdata,
+                                                tif->tif_rawdataloaded);
                }
-               if (TIFFReadRawTile1(tif, tile,
-                                     (unsigned char *)tif->tif_rawdata,
-                                     bytecount, module) != bytecount)
-                       return (0);
-               if (!isFillOrder(tif, td->td_fillorder) &&
-                   (tif->tif_flags & TIFF_NOBITREV) == 0)
-                       TIFFReverseBits(tif->tif_rawdata, bytecount);
        }
        return (TIFFStartTile(tif, tile));
 }
@@ -516,28 +911,34 @@ TIFFFillTile(TIFF* tif, ttile_t tile)
  * raw data.
  */
 int
-TIFFReadBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
+TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size)
 {
        static const char module[] = "TIFFReadBufferSetup";
 
+       assert((tif->tif_flags&TIFF_NOREADRAW)==0);
+       tif->tif_flags &= ~TIFF_BUFFERMMAP;
+
        if (tif->tif_rawdata) {
                if (tif->tif_flags & TIFF_MYBUFFER)
                        _TIFFfree(tif->tif_rawdata);
                tif->tif_rawdata = NULL;
+               tif->tif_rawdatasize = 0;
        }
        if (bp) {
                tif->tif_rawdatasize = size;
-               tif->tif_rawdata = (tidata_t) bp;
+               tif->tif_rawdata = (uint8*) bp;
                tif->tif_flags &= ~TIFF_MYBUFFER;
        } else {
-               tif->tif_rawdatasize = TIFFroundup(size, 1024);
-               tif->tif_rawdata = (tidata_t) _TIFFmalloc(tif->tif_rawdatasize);
+               tif->tif_rawdatasize = (tmsize_t)TIFFroundup_64((uint64)size, 1024);
+               if (tif->tif_rawdatasize==0)
+                       tif->tif_rawdatasize=(tmsize_t)(-1);
+               tif->tif_rawdata = (uint8*) _TIFFmalloc(tif->tif_rawdatasize);
                tif->tif_flags |= TIFF_MYBUFFER;
        }
        if (tif->tif_rawdata == NULL) {
                TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: No space for data buffer at scanline %ld",
-                   tif->tif_name, (long) tif->tif_row);
+                   "No space for data buffer at scanline %lu",
+                   (unsigned long) tif->tif_row);
                tif->tif_rawdatasize = 0;
                return (0);
        }
@@ -549,10 +950,13 @@ TIFFReadBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
  * strip has just been read in.
  */
 static int
-TIFFStartStrip(TIFF* tif, tstrip_t strip)
+TIFFStartStrip(TIFF* tif, uint32 strip)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
+    if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+        return 0;
+
        if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
                if (!(*tif->tif_setupdecode)(tif))
                        return (0);
@@ -560,10 +964,20 @@ TIFFStartStrip(TIFF* tif, tstrip_t strip)
        }
        tif->tif_curstrip = strip;
        tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-       tif->tif_rawcp = tif->tif_rawdata;
-       tif->tif_rawcc = td->td_stripbytecount[strip];
+        tif->tif_flags &= ~TIFF_BUF4WRITE;
+
+       if (tif->tif_flags&TIFF_NOREADRAW)
+       {
+               tif->tif_rawcp = NULL;
+               tif->tif_rawcc = 0;  
+       }
+       else
+       {
+               tif->tif_rawcp = tif->tif_rawdata;
+               tif->tif_rawcc = (tmsize_t)td->td_stripbytecount[strip];
+       }
        return ((*tif->tif_predecode)(tif,
-                       (tsample_t)(strip / td->td_stripsperimage)));
+                       (uint16)(strip / td->td_stripsperimage)));
 }
 
 /*
@@ -571,10 +985,13 @@ TIFFStartStrip(TIFF* tif, tstrip_t strip)
  * tile has just been read in.
  */
 static int
-TIFFStartTile(TIFF* tif, ttile_t tile)
+TIFFStartTile(TIFF* tif, uint32 tile)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
+    if (!_TIFFFillStriles( tif ) || !tif->tif_dir.td_stripbytecount)
+        return 0;
+
        if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
                if (!(*tif->tif_setupdecode)(tif))
                        return (0);
@@ -582,15 +999,24 @@ TIFFStartTile(TIFF* tif, ttile_t tile)
        }
        tif->tif_curtile = tile;
        tif->tif_row =
-           (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth)) *
+           (tile % TIFFhowmany_32(td->td_imagewidth, td->td_tilewidth)) *
                td->td_tilelength;
        tif->tif_col =
-           (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength)) *
+           (tile % TIFFhowmany_32(td->td_imagelength, td->td_tilelength)) *
                td->td_tilewidth;
-       tif->tif_rawcp = tif->tif_rawdata;
-       tif->tif_rawcc = td->td_stripbytecount[tile];
+        tif->tif_flags &= ~TIFF_BUF4WRITE;
+       if (tif->tif_flags&TIFF_NOREADRAW)
+       {
+               tif->tif_rawcp = NULL;
+               tif->tif_rawcc = 0;
+       }
+       else
+       {
+               tif->tif_rawcp = tif->tif_rawdata;
+               tif->tif_rawcc = (tmsize_t)td->td_stripbytecount[tile];
+       }
        return ((*tif->tif_predecode)(tif,
-                       (tsample_t)(tile/td->td_stripsperimage)));
+                       (uint16)(tile/td->td_stripsperimage)));
 }
 
 static int
@@ -610,13 +1036,13 @@ TIFFCheckRead(TIFF* tif, int tiles)
 }
 
 void
-_TIFFNoPostDecode(TIFF* tif, tidata_t buf, tsize_t cc)
+_TIFFNoPostDecode(TIFF* tif, uint8* buf, tmsize_t cc)
 {
     (void) tif; (void) buf; (void) cc;
 }
 
 void
-_TIFFSwab16BitData(TIFF* tif, tidata_t buf, tsize_t cc)
+_TIFFSwab16BitData(TIFF* tif, uint8* buf, tmsize_t cc)
 {
     (void) tif;
     assert((cc & 1) == 0);
@@ -624,7 +1050,7 @@ _TIFFSwab16BitData(TIFF* tif, tidata_t buf, tsize_t cc)
 }
 
 void
-_TIFFSwab24BitData(TIFF* tif, tidata_t buf, tsize_t cc)
+_TIFFSwab24BitData(TIFF* tif, uint8* buf, tmsize_t cc)
 {
     (void) tif;
     assert((cc % 3) == 0);
@@ -632,7 +1058,7 @@ _TIFFSwab24BitData(TIFF* tif, tidata_t buf, tsize_t cc)
 }
 
 void
-_TIFFSwab32BitData(TIFF* tif, tidata_t buf, tsize_t cc)
+_TIFFSwab32BitData(TIFF* tif, uint8* buf, tmsize_t cc)
 {
     (void) tif;
     assert((cc & 3) == 0);
@@ -640,7 +1066,7 @@ _TIFFSwab32BitData(TIFF* tif, tidata_t buf, tsize_t cc)
 }
 
 void
-_TIFFSwab64BitData(TIFF* tif, tidata_t buf, tsize_t cc)
+_TIFFSwab64BitData(TIFF* tif, uint8* buf, tmsize_t cc)
 {
     (void) tif;
     assert((cc & 7) == 0);
@@ -648,3 +1074,10 @@ _TIFFSwab64BitData(TIFF* tif, tidata_t buf, tsize_t cc)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 4c7b51befc070e3e6d9a1a9c88a921036e96e60d..b93e4711029072d6a7b1620cbd89a42bd3ec8184 100644 (file)
 #include "tiffiop.h"
 #include <iostream>
 
+#ifndef __VMS
 using namespace std;
+#endif
 
-class tiffis_data
+/*
+  ISO C++ uses a 'std::streamsize' type to define counts.  This makes
+  it similar to, (but perhaps not the same as) size_t.
+
+  The std::ios::pos_type is used to represent stream positions as used
+  by tellg(), tellp(), seekg(), and seekp().  This makes it similar to
+  (but perhaps not the same as) 'off_t'.  The std::ios::streampos type
+  is used for character streams, but is documented to not be an
+  integral type anymore, so it should *not* be assigned to an integral
+  type.
+
+  The std::ios::off_type is used to specify relative offsets needed by
+  the variants of seekg() and seekp() which accept a relative offset
+  argument.
+
+  Useful prototype knowledge:
+
+  Obtain read position
+    ios::pos_type basic_istream::tellg()
+
+  Set read position
+    basic_istream& basic_istream::seekg(ios::pos_type)
+    basic_istream& basic_istream::seekg(ios::off_type, ios_base::seekdir)
+
+  Read data
+    basic_istream& istream::read(char *str, streamsize count)
+
+  Number of characters read in last unformatted read
+    streamsize istream::gcount();
+
+  Obtain write position
+    ios::pos_type basic_ostream::tellp()
+
+  Set write position
+    basic_ostream& basic_ostream::seekp(ios::pos_type)
+    basic_ostream& basic_ostream::seekp(ios::off_type, ios_base::seekdir)
+
+  Write data
+    basic_ostream& ostream::write(const char *str, streamsize count)
+*/
+
+struct tiffis_data;
+struct tiffos_data;
+
+extern "C" {
+
+       static tmsize_t _tiffosReadProc(thandle_t, void*, tmsize_t);
+       static tmsize_t _tiffisReadProc(thandle_t fd, void* buf, tmsize_t size);
+       static tmsize_t _tiffosWriteProc(thandle_t fd, void* buf, tmsize_t size);
+       static tmsize_t _tiffisWriteProc(thandle_t, void*, tmsize_t);
+       static uint64   _tiffosSeekProc(thandle_t fd, uint64 off, int whence);
+       static uint64   _tiffisSeekProc(thandle_t fd, uint64 off, int whence);
+       static uint64   _tiffosSizeProc(thandle_t fd);
+       static uint64   _tiffisSizeProc(thandle_t fd);
+       static int      _tiffosCloseProc(thandle_t fd);
+       static int      _tiffisCloseProc(thandle_t fd);
+       static int      _tiffDummyMapProc(thandle_t , void** base, toff_t* size );
+       static void     _tiffDummyUnmapProc(thandle_t , void* base, toff_t size );
+       static TIFF*    _tiffStreamOpen(const char* name, const char* mode, void *fd);
+
+struct tiffis_data
 {
-  public:
-
-       istream *myIS;
-        long   myStreamStartPos;
+       istream *stream;
+        ios::pos_type start_pos;
 };
 
-class tiffos_data
+struct tiffos_data
 {
-  public:
-
-       ostream *myOS;
-       long    myStreamStartPos;
+       ostream *stream;
+       ios::pos_type start_pos;
 };
 
-static tsize_t
-_tiffosReadProc(thandle_t, tdata_t, tsize_t)
+static tmsize_t
+_tiffosReadProc(thandle_t, void*, tmsize_t)
 {
         return 0;
 }
 
-static tsize_t
-_tiffisReadProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffisReadProc(thandle_t fd, void* buf, tmsize_t size)
 {
-        tiffis_data    *data = (tiffis_data *)fd;
+        tiffis_data    *data = reinterpret_cast<tiffis_data *>(fd);
 
-        data->myIS->read((char *)buf, (int)size);
+        // Verify that type does not overflow.
+        streamsize request_size = size;
+        if (static_cast<tmsize_t>(request_size) != size)
+          return static_cast<tmsize_t>(-1);
 
-        return data->myIS->gcount();
+        data->stream->read((char *) buf, request_size);
+
+        return static_cast<tmsize_t>(data->stream->gcount());
 }
 
-static tsize_t
-_tiffosWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffosWriteProc(thandle_t fd, void* buf, tmsize_t size)
 {
-       tiffos_data     *data = (tiffos_data *)fd;
-       ostream         *os = data->myOS;
-       int             pos = os->tellp();
+       tiffos_data     *data = reinterpret_cast<tiffos_data *>(fd);
+       ostream         *os = data->stream;
+       ios::pos_type   pos = os->tellp();
+
+        // Verify that type does not overflow.
+        streamsize request_size = size;
+        if (static_cast<tmsize_t>(request_size) != size)
+          return static_cast<tmsize_t>(-1);
 
-       os->write((const char *)buf, size);
+       os->write(reinterpret_cast<const char *>(buf), request_size);
 
-       return ((int)os->tellp()) - pos;
+       return static_cast<tmsize_t>(os->tellp() - pos);
 }
 
-static tsize_t
-_tiffisWriteProc(thandle_t, tdata_t, tsize_t)
+static tmsize_t
+_tiffisWriteProc(thandle_t, void*, tmsize_t)
 {
        return 0;
 }
 
-static toff_t
-_tiffosSeekProc(thandle_t fd, toff_t off, int whence)
+static uint64
+_tiffosSeekProc(thandle_t fd, uint64 off, int whence)
 {
-       tiffos_data     *data = (tiffos_data *)fd;
-       ostream *os = data->myOS;
+       tiffos_data     *data = reinterpret_cast<tiffos_data *>(fd);
+       ostream         *os = data->stream;
 
        // if the stream has already failed, don't do anything
        if( os->fail() )
-               return os->tellp();
+               return static_cast<uint64>(-1);
 
        switch(whence) {
        case SEEK_SET:
-           os->seekp(data->myStreamStartPos + off, ios::beg);
+               {
+                       // Compute 64-bit offset
+                       uint64 new_offset = static_cast<uint64>(data->start_pos) + off;
+
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(new_offset);
+                       if (static_cast<uint64>(offset) != new_offset)
+                               return static_cast<uint64>(-1);
+                       
+                       os->seekp(offset, ios::beg);
                break;
+               }
        case SEEK_CUR:
-               os->seekp(off, ios::cur);
-               break;
+               {
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(off);
+                       if (static_cast<uint64>(offset) != off)
+                               return static_cast<uint64>(-1);
+
+                       os->seekp(offset, ios::cur);
+                       break;
+               }
        case SEEK_END:
-               os->seekp(off, ios::end);
-               break;
+               {
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(off);
+                       if (static_cast<uint64>(offset) != off)
+                               return static_cast<uint64>(-1);
+
+                       os->seekp(offset, ios::end);
+                       break;
+               }
        }
 
        // Attempt to workaround problems with seeking past the end of the
@@ -109,15 +201,20 @@ _tiffosSeekProc(thandle_t fd, toff_t off, int whence)
        // ostrstream/ostringstream does. In that situation, add intermediate
        // '\0' characters.
        if( os->fail() ) {
+#ifdef __VMS
+               int             old_state;
+#else
                ios::iostate    old_state;
-               toff_t          origin;
+#endif
+               ios::pos_type   origin;
 
                old_state = os->rdstate();
                // reset the fail bit or else tellp() won't work below
                os->clear(os->rdstate() & ~ios::failbit);
                switch( whence ) {
                        case SEEK_SET:
-                               origin = data->myStreamStartPos;
+                        default:
+                               origin = data->start_pos;
                                break;
                        case SEEK_CUR:
                                origin = os->tellp();
@@ -131,80 +228,104 @@ _tiffosSeekProc(thandle_t fd, toff_t off, int whence)
                os->clear(old_state);   
 
                // only do something if desired seek position is valid
-               if( origin + off > data->myStreamStartPos ) {
-                       toff_t  num_fill;
+               if( (static_cast<uint64>(origin) + off) > static_cast<uint64>(data->start_pos) ) {
+                       uint64  num_fill;
 
                        // clear the fail bit 
                        os->clear(os->rdstate() & ~ios::failbit);
 
                        // extend the stream to the expected size
                        os->seekp(0, ios::end);
-                       num_fill = origin + off - (toff_t)os->tellp();
-                       for( toff_t i = 0; i < num_fill; i++ )
+                       num_fill = (static_cast<uint64>(origin)) + off - os->tellp();
+                       for( uint64 i = 0; i < num_fill; i++ )
                                os->put('\0');
 
                        // retry the seek
-                       os->seekp(origin + off, ios::beg);
+                       os->seekp(static_cast<ios::off_type>(static_cast<uint64>(origin) + off), ios::beg);
                }
        }
 
-       return os->tellp();
+       return static_cast<uint64>(os->tellp());
 }
 
-static toff_t
-_tiffisSeekProc(thandle_t fd, toff_t off, int whence)
+static uint64
+_tiffisSeekProc(thandle_t fd, uint64 off, int whence)
 {
-       tiffis_data     *data = (tiffis_data *)fd;
+       tiffis_data     *data = reinterpret_cast<tiffis_data *>(fd);
 
        switch(whence) {
        case SEEK_SET:
-               data->myIS->seekg(data->myStreamStartPos + off, ios::beg);
-               break;
+               {
+                       // Compute 64-bit offset
+                       uint64 new_offset = static_cast<uint64>(data->start_pos) + off;
+                       
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(new_offset);
+                       if (static_cast<uint64>(offset) != new_offset)
+                               return static_cast<uint64>(-1);
+
+                       data->stream->seekg(offset, ios::beg);
+                       break;
+               }
        case SEEK_CUR:
-               data->myIS->seekg(off, ios::cur);
-               break;
+               {
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(off);
+                       if (static_cast<uint64>(offset) != off)
+                               return static_cast<uint64>(-1);
+
+                       data->stream->seekg(offset, ios::cur);
+                       break;
+               }
        case SEEK_END:
-               data->myIS->seekg(off, ios::end);
-               break;
+               {
+                       // Verify that value does not overflow
+                       ios::off_type offset = static_cast<ios::off_type>(off);
+                       if (static_cast<uint64>(offset) != off)
+                               return static_cast<uint64>(-1);
+
+                       data->stream->seekg(offset, ios::end);
+                       break;
+               }
        }
 
-       return ((long)data->myIS->tellg()) - data->myStreamStartPos;
+       return (uint64) (data->stream->tellg() - data->start_pos);
 }
 
-static toff_t
+static uint64
 _tiffosSizeProc(thandle_t fd)
 {
-       tiffos_data     *data = (tiffos_data *)fd;
-       ostream         *os = data->myOS;
-       toff_t          pos = os->tellp();
-       toff_t          len;
+       tiffos_data     *data = reinterpret_cast<tiffos_data *>(fd);
+       ostream         *os = data->stream;
+       ios::pos_type   pos = os->tellp();
+       ios::pos_type   len;
 
        os->seekp(0, ios::end);
        len = os->tellp();
        os->seekp(pos);
 
-       return len;
+       return (uint64) len;
 }
 
-static toff_t
+static uint64
 _tiffisSizeProc(thandle_t fd)
 {
-       tiffis_data     *data = (tiffis_data *)fd;
-       int             pos = data->myIS->tellg();
-       int             len;
+       tiffis_data     *data = reinterpret_cast<tiffis_data *>(fd);
+       ios::pos_type   pos = data->stream->tellg();
+       ios::pos_type   len;
 
-       data->myIS->seekg(0, ios::end);
-       len = data->myIS->tellg();
-       data->myIS->seekg(pos);
+       data->stream->seekg(0, ios::end);
+       len = data->stream->tellg();
+       data->stream->seekg(pos);
 
-       return len;
+       return (uint64) len;
 }
 
 static int
 _tiffosCloseProc(thandle_t fd)
 {
        // Our stream was not allocated by us, so it shouldn't be closed by us.
-       delete (tiffos_data *)fd;
+       delete reinterpret_cast<tiffos_data *>(fd);
        return 0;
 }
 
@@ -212,18 +333,18 @@ static int
 _tiffisCloseProc(thandle_t fd)
 {
        // Our stream was not allocated by us, so it shouldn't be closed by us.
-       delete (tiffis_data *)fd;
+       delete reinterpret_cast<tiffis_data *>(fd);
        return 0;
 }
 
 static int
-_tiffDummyMapProc(thandle_t , tdata_t* , toff_t* )
+_tiffDummyMapProc(thandle_t , void** base, toff_t* size )
 {
        return (0);
 }
 
 static void
-_tiffDummyUnmapProc(thandle_t , tdata_t , toff_t )
+_tiffDummyUnmapProc(thandle_t , void* base, toff_t size )
 {
 }
 
@@ -237,32 +358,40 @@ _tiffStreamOpen(const char* name, const char* mode, void *fd)
 
        if( strchr(mode, 'w') ) {
                tiffos_data     *data = new tiffos_data;
-               data->myOS = (ostream *)fd;
-               data->myStreamStartPos = data->myOS->tellp();
+               data->stream = reinterpret_cast<ostream *>(fd);
+               data->start_pos = data->stream->tellp();
 
                // Open for writing.
                tif = TIFFClientOpen(name, mode,
-                               (thandle_t) data,
-                               _tiffosReadProc, _tiffosWriteProc,
-                               _tiffosSeekProc, _tiffosCloseProc,
+                               reinterpret_cast<thandle_t>(data),
+                               _tiffosReadProc,
+                                _tiffosWriteProc,
+                               _tiffosSeekProc,
+                                _tiffosCloseProc,
                                _tiffosSizeProc,
-                               _tiffDummyMapProc, _tiffDummyUnmapProc);
+                               _tiffDummyMapProc,
+                                _tiffDummyUnmapProc);
        } else {
                tiffis_data     *data = new tiffis_data;
-               data->myIS = (istream *)fd;
-               data->myStreamStartPos = data->myIS->tellg();
+               data->stream = reinterpret_cast<istream *>(fd);
+               data->start_pos = data->stream->tellg();
                // Open for reading.
                tif = TIFFClientOpen(name, mode,
-                               (thandle_t) data,
-                               _tiffisReadProc, _tiffisWriteProc,
-                               _tiffisSeekProc, _tiffisCloseProc,
+                               reinterpret_cast<thandle_t>(data),
+                               _tiffisReadProc,
+                                _tiffisWriteProc,
+                               _tiffisSeekProc,
+                                _tiffisCloseProc,
                                _tiffisSizeProc,
-                               _tiffDummyMapProc, _tiffDummyUnmapProc);
+                               _tiffDummyMapProc,
+                                _tiffDummyUnmapProc);
        }
 
        return (tif);
 }
 
+} /* extern "C" */
+
 TIFF*
 TIFFStreamOpen(const char* name, ostream *os)
 {
@@ -270,7 +399,7 @@ TIFFStreamOpen(const char* name, ostream *os)
        // written to it yet, then tellp() will return -1 which will break us.
        // We workaround this by writing out a dummy character and
        // then seek back to the beginning.
-       if( !os->fail() && (int)os->tellp() < 0 ) {
+       if( !os->fail() && static_cast<int>(os->tellp()) < 0 ) {
                *os << '\0';
                os->seekp(0);
        }
@@ -287,3 +416,10 @@ TIFFStreamOpen(const char* name, istream *is)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+  Local Variables:
+  mode: c
+  indent-tabs-mode: true
+  c-basic-offset: 8
+  End:
+*/
index cc3bc3595e7cf27ae91fcec1eddce1ac24e6edaf..397b615e4e3a76b3b32d679a1aa9929d1082d7e0 100644 (file)
  */
 #include "tiffiop.h"
 
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
-       /*
-        * XXX: We are using casting to uint32 here, bacause sizeof(size_t)
-        * may be larger than sizeof(uint32) on 64-bit architectures.
-        */
-       uint32  bytes = summand1 + summand2;
-
-       if (bytes - summand1 != summand2) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-               bytes = 0;
-       }
-
-       return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
-       uint32  bytes = nmemb * elem_size;
-
-       if (elem_size && bytes / elem_size != nmemb) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-               bytes = 0;
-       }
-
-       return (bytes);
-}
-
 /*
  * Compute which strip a (row,sample) value is in.
  */
-tstrip_t
-TIFFComputeStrip(TIFF* tif, uint32 row, tsample_t sample)
+uint32
+TIFFComputeStrip(TIFF* tif, uint32 row, uint16 sample)
 {
+       static const char module[] = "TIFFComputeStrip";
        TIFFDirectory *td = &tif->tif_dir;
-       tstrip_t strip;
+       uint32 strip;
 
        strip = row / td->td_rowsperstrip;
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
                if (sample >= td->td_samplesperpixel) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+                       TIFFErrorExt(tif->tif_clientdata, module,
                            "%lu: Sample out of range, max %lu",
                            (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
-                       return ((tstrip_t) 0);
+                       return (0);
                }
-               strip += sample*td->td_stripsperimage;
+               strip += (uint32)sample*td->td_stripsperimage;
        }
        return (strip);
 }
@@ -86,33 +57,34 @@ TIFFComputeStrip(TIFF* tif, uint32 row, tsample_t sample)
 /*
  * Compute how many strips are in an image.
  */
-tstrip_t
+uint32
 TIFFNumberOfStrips(TIFF* tif)
 {
        TIFFDirectory *td = &tif->tif_dir;
-       tstrip_t nstrips;
+       uint32 nstrips;
 
        nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 :
-            TIFFhowmany(td->td_imagelength, td->td_rowsperstrip));
+            TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip));
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-               nstrips = multiply(tif, nstrips, td->td_samplesperpixel,
-                                  "TIFFNumberOfStrips");
+               nstrips = _TIFFMultiply32(tif, nstrips, (uint32)td->td_samplesperpixel,
+                   "TIFFNumberOfStrips");
        return (nstrips);
 }
 
 /*
  * Compute the # bytes in a variable height, row-aligned strip.
  */
-tsize_t
-TIFFVStripSize(TIFF* tif, uint32 nrows)
+uint64
+TIFFVStripSize64(TIFF* tif, uint32 nrows)
 {
+       static const char module[] = "TIFFVStripSize64";
        TIFFDirectory *td = &tif->tif_dir;
-
-       if (nrows == (uint32) -1)
-               nrows = td->td_imagelength;
-       if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-           td->td_photometric == PHOTOMETRIC_YCBCR &&
-           !isUpSampled(tif)) {
+       if (nrows==(uint32)(-1))
+               nrows=td->td_imagelength;
+       if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&&
+           (td->td_photometric == PHOTOMETRIC_YCBCR)&&
+           (!isUpSampled(tif)))
+       {
                /*
                 * Packed YCbCr data contain one Cb+Cr for every
                 * HorizontalSampling*VerticalSampling Y values.
@@ -121,54 +93,103 @@ TIFFVStripSize(TIFF* tif, uint32 nrows)
                 * horizontal/vertical subsampling area include
                 * YCbCr data for the extended image.
                 */
-                uint16 ycbcrsubsampling[2];
-                tsize_t w, scanline, samplingarea;
-
-                TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                              ycbcrsubsampling + 0, 
-                              ycbcrsubsampling + 1 );
-
-               samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1];
-               if (samplingarea == 0) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                                    "Invalid YCbCr subsampling");
+               uint16 ycbcrsubsampling[2];
+               uint16 samplingblock_samples;
+               uint32 samplingblocks_hor;
+               uint32 samplingblocks_ver;
+               uint64 samplingrow_samples;
+               uint64 samplingrow_size;
+               if(td->td_samplesperpixel!=3)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,
+                           "Invalid td_samplesperpixel value");
                        return 0;
                }
-
-               w = TIFFroundup(td->td_imagewidth, ycbcrsubsampling[0]);
-               scanline = TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
-                                                "TIFFVStripSize"));
-               nrows = TIFFroundup(nrows, ycbcrsubsampling[1]);
-               /* NB: don't need TIFFhowmany here 'cuz everything is rounded */
-               scanline = multiply(tif, nrows, scanline, "TIFFVStripSize");
-               return ((tsize_t)
-                   summarize(tif, scanline,
-                             multiply(tif, 2, scanline / samplingarea,
-                                      "TIFFVStripSize"), "TIFFVStripSize"));
-       } else
-               return ((tsize_t) multiply(tif, nrows, TIFFScanlineSize(tif),
-                                          "TIFFVStripSize"));
+               TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0,
+                   ycbcrsubsampling+1);
+               if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4)
+                   ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,
+                                    "Invalid YCbCr subsampling (%dx%d)", 
+                                    ycbcrsubsampling[0], 
+                                    ycbcrsubsampling[1] );
+                       return 0;
+               }
+               samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2;
+               samplingblocks_hor=TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]);
+               samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]);
+               samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module);
+               samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module));
+               return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module));
+       }
+       else
+               return(_TIFFMultiply64(tif,nrows,TIFFScanlineSize64(tif),module));
+}
+tmsize_t
+TIFFVStripSize(TIFF* tif, uint32 nrows)
+{
+       static const char module[] = "TIFFVStripSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFVStripSize64(tif,nrows);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               n=0;
+       }
+       return(n);
 }
-
 
 /*
  * Compute the # bytes in a raw strip.
  */
-tsize_t
-TIFFRawStripSize(TIFF* tif, tstrip_t strip)
+uint64
+TIFFRawStripSize64(TIFF* tif, uint32 strip)
 {
+       static const char module[] = "TIFFRawStripSize64";
        TIFFDirectory* td = &tif->tif_dir;
-       tsize_t bytecount = td->td_stripbytecount[strip];
+       uint64 bytecount = td->td_stripbytecount[strip];
 
-       if (bytecount <= 0) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                         "%lu: Invalid strip byte count, strip %lu",
-                         (unsigned long) bytecount, (unsigned long) strip);
-               bytecount = (tsize_t) -1;
+       if (bytecount == 0)
+       {
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%I64u: Invalid strip byte count, strip %lu",
+                            (unsigned __int64) bytecount,
+                            (unsigned long) strip);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%llu: Invalid strip byte count, strip %lu",
+                            (unsigned long long) bytecount,
+                            (unsigned long) strip);
+#endif
+               bytecount = (uint64) -1;
        }
 
        return bytecount;
 }
+tmsize_t
+TIFFRawStripSize(TIFF* tif, uint32 strip)
+{
+       static const char module[] = "TIFFRawStripSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFRawStripSize64(tif,strip);
+       if (m==(uint64)(-1))
+               n=(tmsize_t)(-1);
+       else
+       {
+               n=(tmsize_t)m;
+               if ((uint64)n!=m)
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+                       n=0;
+               }
+       }
+       return(n);
+}
 
 /*
  * Compute the # bytes in a (row-aligned) strip.
@@ -178,14 +199,29 @@ TIFFRawStripSize(TIFF* tif, tstrip_t strip)
  * truncated to reflect the actual space required
  * to hold the strip.
  */
-tsize_t
-TIFFStripSize(TIFF* tif)
+uint64
+TIFFStripSize64(TIFF* tif)
 {
        TIFFDirectory* td = &tif->tif_dir;
        uint32 rps = td->td_rowsperstrip;
        if (rps > td->td_imagelength)
                rps = td->td_imagelength;
-       return (TIFFVStripSize(tif, rps));
+       return (TIFFVStripSize64(tif, rps));
+}
+tmsize_t
+TIFFStripSize(TIFF* tif)
+{
+       static const char module[] = "TIFFStripSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFStripSize64(tif);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /*
@@ -209,10 +245,17 @@ _TIFFDefaultStripSize(TIFF* tif, uint32 s)
                 * image up into strips that are approximately
                 * STRIP_SIZE_DEFAULT bytes long.
                 */
-               tsize_t scanline = TIFFScanlineSize(tif);
-               s = (uint32)STRIP_SIZE_DEFAULT / (scanline == 0 ? 1 : scanline);
-               if (s == 0)             /* very wide images */
-                       s = 1;
+               uint64 scanlinesize;
+               uint64 rows;
+               scanlinesize=TIFFScanlineSize64(tif);
+               if (scanlinesize==0)
+                       scanlinesize=1;
+               rows=(uint64)STRIP_SIZE_DEFAULT/scanlinesize;
+               if (rows==0)
+                       rows=1;
+               else if (rows>0xFFFFFFFF)
+                       rows=0xFFFFFFFF;
+               s=(uint32)rows;
        }
        return (s);
 }
@@ -222,49 +265,75 @@ _TIFFDefaultStripSize(TIFF* tif, uint32 s)
  * one of the scanline-oriented i/o routines.  Note that
  * this number may be 1/samples-per-pixel if data is
  * stored as separate planes.
+ * The ScanlineSize in case of YCbCrSubsampling is defined as the
+ * strip size divided by the strip height, i.e. the size of a pack of vertical
+ * subsampling lines divided by vertical subsampling. It should thus make
+ * sense when multiplied by a multiple of vertical subsampling.
  */
-tsize_t
-TIFFScanlineSize(TIFF* tif)
+uint64
+TIFFScanlineSize64(TIFF* tif)
 {
+       static const char module[] = "TIFFScanlineSize64";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t scanline;
-       
-       if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-               if (td->td_photometric == PHOTOMETRIC_YCBCR
-                   && !isUpSampled(tif)) {
+       uint64 scanline_size;
+       if (td->td_planarconfig==PLANARCONFIG_CONTIG)
+       {
+               if ((td->td_photometric==PHOTOMETRIC_YCBCR)&&
+                   (td->td_samplesperpixel==3)&&
+                   (!isUpSampled(tif)))
+               {
                        uint16 ycbcrsubsampling[2];
-
-                       TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING, 
-                                    ycbcrsubsampling + 0,
-                                    ycbcrsubsampling + 1);
-
-                       if (ycbcrsubsampling[0] == 0) {
-                               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                                            "Invalid YCbCr subsampling");
-                               return 0;
+                       uint16 samplingblock_samples;
+                       uint32 samplingblocks_hor;
+                       uint64 samplingrow_samples;
+                       uint64 samplingrow_size;
+                       if(td->td_samplesperpixel!=3)
+                       {
+                            TIFFErrorExt(tif->tif_clientdata,module,
+                                         "Invalid td_samplesperpixel value");
+                            return 0;
                        }
-
-                       scanline = TIFFroundup(td->td_imagewidth,
-                                              ycbcrsubsampling[0]);
-                       scanline = TIFFhowmany8(multiply(tif, scanline,
-                                                        td->td_bitspersample,
-                                                        "TIFFScanlineSize"));
-                       return ((tsize_t)
-                               summarize(tif, scanline,
-                                         multiply(tif, 2,
-                                               scanline / ycbcrsubsampling[0],
-                                               "TIFFVStripSize"),
-                                         "TIFFVStripSize"));
-               } else {
-                       scanline = multiply(tif, td->td_imagewidth,
-                                           td->td_samplesperpixel,
-                                           "TIFFScanlineSize");
+                       TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,
+                                              ycbcrsubsampling+0,
+                                              ycbcrsubsampling+1);
+                       if (((ycbcrsubsampling[0]!=1)&&(ycbcrsubsampling[0]!=2)&&(ycbcrsubsampling[0]!=4)) ||
+                           ((ycbcrsubsampling[1]!=1)&&(ycbcrsubsampling[1]!=2)&&(ycbcrsubsampling[1]!=4)))
+                       {
+                            TIFFErrorExt(tif->tif_clientdata,module,
+                                         "Invalid YCbCr subsampling");
+                            return 0;
+                       }
+                       samplingblock_samples = ycbcrsubsampling[0]*ycbcrsubsampling[1]+2;
+                       samplingblocks_hor = TIFFhowmany_32(td->td_imagewidth,ycbcrsubsampling[0]);
+                       samplingrow_samples = _TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module);
+                       samplingrow_size = TIFFhowmany_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module),8);
+                       scanline_size = (samplingrow_size/ycbcrsubsampling[1]);
                }
-       } else
-               scanline = td->td_imagewidth;
-       return ((tsize_t) TIFFhowmany8(multiply(tif, scanline,
-                                               td->td_bitspersample,
-                                               "TIFFScanlineSize")));
+               else
+               {
+                       uint64 scanline_samples;
+                       scanline_samples=_TIFFMultiply64(tif,td->td_imagewidth,td->td_samplesperpixel,module);
+                       scanline_size=TIFFhowmany_64(_TIFFMultiply64(tif,scanline_samples,td->td_bitspersample,module),8);
+               }
+       }
+       else
+               scanline_size=TIFFhowmany_64(_TIFFMultiply64(tif,td->td_imagewidth,td->td_bitspersample,module),8);
+       return(scanline_size);
+}
+tmsize_t
+TIFFScanlineSize(TIFF* tif)
+{
+       static const char module[] = "TIFFScanlineSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFScanlineSize64(tif);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /*
@@ -273,22 +342,42 @@ TIFFScanlineSize(TIFF* tif)
  * I/O size returned by TIFFScanlineSize which may be less
  * if data is store as separate planes).
  */
-tsize_t
-TIFFRasterScanlineSize(TIFF* tif)
+uint64
+TIFFRasterScanlineSize64(TIFF* tif)
 {
+       static const char module[] = "TIFFRasterScanlineSize64";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t scanline;
-       
-       scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
-                            "TIFFRasterScanlineSize");
+       uint64 scanline;
+
+       scanline = _TIFFMultiply64(tif, td->td_bitspersample, td->td_imagewidth, module);
        if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
-               scanline = multiply (tif, scanline, td->td_samplesperpixel,
-                                    "TIFFRasterScanlineSize");
-               return ((tsize_t) TIFFhowmany8(scanline));
+               scanline = _TIFFMultiply64(tif, scanline, td->td_samplesperpixel, module);
+               return (TIFFhowmany8_64(scanline));
        } else
-               return ((tsize_t) multiply (tif, TIFFhowmany8(scanline),
-                                           td->td_samplesperpixel,
-                                           "TIFFRasterScanlineSize"));
+               return (_TIFFMultiply64(tif, TIFFhowmany8_64(scanline),
+                   td->td_samplesperpixel, module));
+}
+tmsize_t
+TIFFRasterScanlineSize(TIFF* tif)
+{
+       static const char module[] = "TIFFRasterScanlineSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFRasterScanlineSize64(tif);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer arithmetic overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index aad43df97c7ca97135d32c3486c597caf1e3c395..9af87a4d4b39ff675dc15be4c38be546c2c0a4d7 100644 (file)
@@ -37,7 +37,7 @@ TIFFSwabShort(uint16* wp)
 {
        register unsigned char* cp = (unsigned char*) wp;
        unsigned char t;
-
+       assert(sizeof(uint16)==2);
        t = cp[1]; cp[1] = cp[0]; cp[0] = t;
 }
 #endif
@@ -48,19 +48,33 @@ TIFFSwabLong(uint32* lp)
 {
        register unsigned char* cp = (unsigned char*) lp;
        unsigned char t;
-
+       assert(sizeof(uint32)==4);
        t = cp[3]; cp[3] = cp[0]; cp[0] = t;
        t = cp[2]; cp[2] = cp[1]; cp[1] = t;
 }
 #endif
 
+#ifndef TIFFSwabLong8
+void
+TIFFSwabLong8(uint64* lp)
+{
+       register unsigned char* cp = (unsigned char*) lp;
+       unsigned char t;
+       assert(sizeof(uint64)==8);
+       t = cp[7]; cp[7] = cp[0]; cp[0] = t;
+       t = cp[6]; cp[6] = cp[1]; cp[1] = t;
+       t = cp[5]; cp[5] = cp[2]; cp[2] = t;
+       t = cp[4]; cp[4] = cp[3]; cp[3] = t;
+}
+#endif
+
 #ifndef TIFFSwabArrayOfShort
 void
-TIFFSwabArrayOfShort(uint16* wp, register unsigned long n)
+TIFFSwabArrayOfShort(register uint16* wp, tmsize_t n)
 {
        register unsigned char* cp;
        register unsigned char t;
-
+       assert(sizeof(uint16)==2);
        /* XXX unroll loop some */
        while (n-- > 0) {
                cp = (unsigned char*) wp;
@@ -72,7 +86,7 @@ TIFFSwabArrayOfShort(uint16* wp, register unsigned long n)
 
 #ifndef TIFFSwabArrayOfTriples
 void
-TIFFSwabArrayOfTriples(uint8* tp, unsigned long n)
+TIFFSwabArrayOfTriples(register uint8* tp, tmsize_t n)
 {
        unsigned char* cp;
        unsigned char t;
@@ -88,11 +102,11 @@ TIFFSwabArrayOfTriples(uint8* tp, unsigned long n)
 
 #ifndef TIFFSwabArrayOfLong
 void
-TIFFSwabArrayOfLong(register uint32* lp, register unsigned long n)
+TIFFSwabArrayOfLong(register uint32* lp, tmsize_t n)
 {
        register unsigned char *cp;
        register unsigned char t;
-
+       assert(sizeof(uint32)==4);
        /* XXX unroll loop some */
        while (n-- > 0) {
                cp = (unsigned char *)lp;
@@ -103,30 +117,84 @@ TIFFSwabArrayOfLong(register uint32* lp, register unsigned long n)
 }
 #endif
 
+#ifndef TIFFSwabArrayOfLong8
+void
+TIFFSwabArrayOfLong8(register uint64* lp, tmsize_t n)
+{
+       register unsigned char *cp;
+       register unsigned char t;
+       assert(sizeof(uint64)==8);
+       /* XXX unroll loop some */
+       while (n-- > 0) {
+               cp = (unsigned char *)lp;
+               t = cp[7]; cp[7] = cp[0]; cp[0] = t;
+               t = cp[6]; cp[6] = cp[1]; cp[1] = t;
+               t = cp[5]; cp[5] = cp[2]; cp[2] = t;
+               t = cp[4]; cp[4] = cp[3]; cp[3] = t;
+               lp++;
+       }
+}
+#endif
+
+#ifndef TIFFSwabFloat
+void
+TIFFSwabFloat(float* fp)
+{
+       register unsigned char* cp = (unsigned char*) fp;
+       unsigned char t;
+       assert(sizeof(float)==4);
+       t = cp[3]; cp[3] = cp[0]; cp[0] = t;
+       t = cp[2]; cp[2] = cp[1]; cp[1] = t;
+}
+#endif
+
+#ifndef TIFFSwabArrayOfFloat
+void
+TIFFSwabArrayOfFloat(register float* fp, tmsize_t n)
+{
+       register unsigned char *cp;
+       register unsigned char t;
+       assert(sizeof(float)==4);
+       /* XXX unroll loop some */
+       while (n-- > 0) {
+               cp = (unsigned char *)fp;
+               t = cp[3]; cp[3] = cp[0]; cp[0] = t;
+               t = cp[2]; cp[2] = cp[1]; cp[1] = t;
+               fp++;
+       }
+}
+#endif
+
 #ifndef TIFFSwabDouble
 void
 TIFFSwabDouble(double *dp)
 {
-        register uint32* lp = (uint32*) dp;
-        uint32 t;
-
-       TIFFSwabArrayOfLong(lp, 2);
-       t = lp[0]; lp[0] = lp[1]; lp[1] = t;
+       register unsigned char* cp = (unsigned char*) dp;
+       unsigned char t;
+       assert(sizeof(double)==8);
+       t = cp[7]; cp[7] = cp[0]; cp[0] = t;
+       t = cp[6]; cp[6] = cp[1]; cp[1] = t;
+       t = cp[5]; cp[5] = cp[2]; cp[2] = t;
+       t = cp[4]; cp[4] = cp[3]; cp[3] = t;
 }
 #endif
 
 #ifndef TIFFSwabArrayOfDouble
 void
-TIFFSwabArrayOfDouble(double* dp, register unsigned long n)
+TIFFSwabArrayOfDouble(double* dp, tmsize_t n)
 {
-       register uint32* lp = (uint32*) dp;
-        register uint32 t;
-
-       TIFFSwabArrayOfLong(lp, n + n);
-        while (n-- > 0) {
-               t = lp[0]; lp[0] = lp[1]; lp[1] = t;
-                lp += 2;
-        }
+       register unsigned char *cp;
+       register unsigned char t;
+       assert(sizeof(double)==8);
+       /* XXX unroll loop some */
+       while (n-- > 0) {
+               cp = (unsigned char *)dp;
+               t = cp[7]; cp[7] = cp[0]; cp[0] = t;
+               t = cp[6]; cp[6] = cp[1]; cp[1] = t;
+               t = cp[5]; cp[5] = cp[2]; cp[2] = t;
+               t = cp[4]; cp[4] = cp[3]; cp[3] = t;
+               dp++;
+       }
 }
 #endif
 
@@ -215,7 +283,7 @@ TIFFGetBitRevTable(int reversed)
 }
 
 void
-TIFFReverseBits(register unsigned char* cp, register unsigned long n)
+TIFFReverseBits(uint8* cp, tmsize_t n)  
 {
        for (; n > 8; n -= 8) {
                cp[0] = TIFFBitRevTable[cp[0]];
@@ -233,3 +301,10 @@ TIFFReverseBits(register unsigned char* cp, register unsigned long n)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index bbd8fe2052dd4c051f256428d60ddbc5a4f433b5..d4ca60db7897ca01e81cd2a4d3dc5d2f7ffe6a78 100644 (file)
@@ -25,6 +25,7 @@
  */
 
 #include "tiffiop.h"
+#include <assert.h>
 #ifdef THUNDER_SUPPORT
 /*
  * TIFF Library.
 static const int twobitdeltas[4] = { 0, 1, 0, -1 };
 static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
 
-#define        SETPIXEL(op, v) { \
-       lastpixel = (v) & 0xf; \
-       if (npixels++ & 1) \
-           *op++ |= lastpixel; \
-       else \
-           op[0] = (tidataval_t) (lastpixel << 4); \
+#define        SETPIXEL(op, v) {                     \
+       lastpixel = (v) & 0xf;                \
+        if ( npixels < maxpixels )         \
+        {                                     \
+         if (npixels++ & 1)                  \
+           *op++ |= lastpixel;               \
+         else                                \
+           op[0] = (uint8) (lastpixel << 4); \
+        }                                     \
 }
 
 static int
-ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
+ThunderSetupDecode(TIFF* tif)
 {
+       static const char module[] = "ThunderSetupDecode";
+
+        if( tif->tif_dir.td_bitspersample != 4 )
+        {
+                TIFFErrorExt(tif->tif_clientdata, module,
+                             "Wrong bitspersample value (%d), Thunder decoder only supports 4bits per sample.",
+                             (int) tif->tif_dir.td_bitspersample );
+                return 0;
+        }
+        
+
+       return (1);
+}
+
+static int
+ThunderDecode(TIFF* tif, uint8* op, tmsize_t maxpixels)
+{
+       static const char module[] = "ThunderDecode";
        register unsigned char *bp;
-       register tsize_t cc;
+       register tmsize_t cc;
        unsigned int lastpixel;
-       tsize_t npixels;
+       tmsize_t npixels;
 
        bp = (unsigned char *)tif->tif_rawcp;
        cc = tif->tif_rawcc;
@@ -93,7 +115,7 @@ ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
                        npixels += n;
                        if (npixels < maxpixels) {
                                for (; n > 0; n -= 2)
-                                       *op++ = (tidataval_t) lastpixel;
+                                       *op++ = (uint8) lastpixel;
                        }
                        if (n == -1)
                                *--op &= 0xf0;
@@ -118,25 +140,43 @@ ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
                        break;
                }
        }
-       tif->tif_rawcp = (tidata_t) bp;
+       tif->tif_rawcp = (uint8*) bp;
        tif->tif_rawcc = cc;
        if (npixels != maxpixels) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                   "ThunderDecode: %s data at scanline %ld (%lu != %lu)",
-                   npixels < maxpixels ? "Not enough" : "Too much",
-                   (long) tif->tif_row, (long) npixels, (long) maxpixels);
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%s data at scanline %lu (%I64u != %I64u)",
+                            npixels < maxpixels ? "Not enough" : "Too much",
+                            (unsigned long) tif->tif_row,
+                            (unsigned __int64) npixels,
+                            (unsigned __int64) maxpixels);
+#else
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "%s data at scanline %lu (%llu != %llu)",
+                            npixels < maxpixels ? "Not enough" : "Too much",
+                            (unsigned long) tif->tif_row,
+                            (unsigned long long) npixels,
+                            (unsigned long long) maxpixels);
+#endif
                return (0);
        }
-       return (1);
+
+        return (1);
 }
 
 static int
-ThunderDecodeRow(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
+ThunderDecodeRow(TIFF* tif, uint8* buf, tmsize_t occ, uint16 s)
 {
-       tidata_t row = buf;
+       static const char module[] = "ThunderDecodeRow";
+       uint8* row = buf;
        
        (void) s;
-       while ((long)occ > 0) {
+       if (occ % tif->tif_scanlinesize)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Fractional scanlines cannot be read");
+               return (0);
+       }
+       while (occ > 0) {
                if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
                        return (0);
                occ -= tif->tif_scanlinesize;
@@ -149,10 +189,19 @@ int
 TIFFInitThunderScan(TIFF* tif, int scheme)
 {
        (void) scheme;
+
+        tif->tif_setupdecode = ThunderSetupDecode;
        tif->tif_decoderow = ThunderDecodeRow;
-       tif->tif_decodestrip = ThunderDecodeRow;
+       tif->tif_decodestrip = ThunderDecodeRow; 
        return (1);
 }
 #endif /* THUNDER_SUPPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 22ad35cd8d82af977462a124c6ead9ce8168ac42..9ef043e7074412b3cd9a6f58a9223f7f2b99e40c 100644 (file)
  */
 #include "tiffiop.h"
 
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
-       /*
-        * XXX: We are using casting to uint32 here, because sizeof(size_t)
-        * may be larger than sizeof(uint32) on 64-bit architectures.
-        */
-       uint32  bytes = summand1 + summand2;
-
-       if (bytes - summand1 != summand2) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-               bytes = 0;
-       }
-
-       return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
-       uint32  bytes = nmemb * elem_size;
-
-       if (elem_size && bytes / elem_size != nmemb) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
-               bytes = 0;
-       }
-
-       return (bytes);
-}
-
 /*
  * Compute which tile an (x,y,z,s) value is in.
  */
-ttile_t
-TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
+uint32
+TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s)
 {
        TIFFDirectory *td = &tif->tif_dir;
        uint32 dx = td->td_tilewidth;
        uint32 dy = td->td_tilelength;
        uint32 dz = td->td_tiledepth;
-       ttile_t tile = 1;
+       uint32 tile = 1;
 
        if (td->td_imagedepth == 1)
                z = 0;
@@ -82,9 +52,9 @@ TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
        if (dz == (uint32) -1)
                dz = td->td_imagedepth;
        if (dx != 0 && dy != 0 && dz != 0) {
-               uint32 xpt = TIFFhowmany(td->td_imagewidth, dx); 
-               uint32 ypt = TIFFhowmany(td->td_imagelength, dy); 
-               uint32 zpt = TIFFhowmany(td->td_imagedepth, dz); 
+               uint32 xpt = TIFFhowmany_32(td->td_imagewidth, dx);
+               uint32 ypt = TIFFhowmany_32(td->td_imagelength, dy);
+               uint32 zpt = TIFFhowmany_32(td->td_imagedepth, dz);
 
                if (td->td_planarconfig == PLANARCONFIG_SEPARATE) 
                        tile = (xpt*ypt*zpt)*s +
@@ -102,7 +72,7 @@ TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
  * against the image bounds.
  */
 int
-TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
+TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s)
 {
        TIFFDirectory *td = &tif->tif_dir;
 
@@ -141,14 +111,14 @@ TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
 /*
  * Compute how many tiles are in an image.
  */
-ttile_t
+uint32
 TIFFNumberOfTiles(TIFF* tif)
 {
        TIFFDirectory *td = &tif->tif_dir;
        uint32 dx = td->td_tilewidth;
        uint32 dy = td->td_tilelength;
        uint32 dz = td->td_tiledepth;
-       ttile_t ntiles;
+       uint32 ntiles;
 
        if (dx == (uint32) -1)
                dx = td->td_imagewidth;
@@ -157,50 +127,66 @@ TIFFNumberOfTiles(TIFF* tif)
        if (dz == (uint32) -1)
                dz = td->td_imagedepth;
        ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
-           multiply(tif, multiply(tif, TIFFhowmany(td->td_imagewidth, dx),
-                                  TIFFhowmany(td->td_imagelength, dy),
-                                  "TIFFNumberOfTiles"),
-                    TIFFhowmany(td->td_imagedepth, dz), "TIFFNumberOfTiles");
+           _TIFFMultiply32(tif, _TIFFMultiply32(tif, TIFFhowmany_32(td->td_imagewidth, dx),
+           TIFFhowmany_32(td->td_imagelength, dy),
+           "TIFFNumberOfTiles"),
+           TIFFhowmany_32(td->td_imagedepth, dz), "TIFFNumberOfTiles");
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
-               ntiles = multiply(tif, ntiles, td->td_samplesperpixel,
-                                 "TIFFNumberOfTiles");
+               ntiles = _TIFFMultiply32(tif, ntiles, td->td_samplesperpixel,
+                   "TIFFNumberOfTiles");
        return (ntiles);
 }
 
 /*
  * Compute the # bytes in each row of a tile.
  */
-tsize_t
-TIFFTileRowSize(TIFF* tif)
+uint64
+TIFFTileRowSize64(TIFF* tif)
 {
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t rowsize;
-       
+       uint64 rowsize;
+
        if (td->td_tilelength == 0 || td->td_tilewidth == 0)
-               return ((tsize_t) 0);
-       rowsize = multiply(tif, td->td_bitspersample, td->td_tilewidth,
-                          "TIFFTileRowSize");
+               return (0);
+       rowsize = _TIFFMultiply64(tif, td->td_bitspersample, td->td_tilewidth,
+           "TIFFTileRowSize");
        if (td->td_planarconfig == PLANARCONFIG_CONTIG)
-               rowsize = multiply(tif, rowsize, td->td_samplesperpixel,
-                                  "TIFFTileRowSize");
-       return ((tsize_t) TIFFhowmany8(rowsize));
+               rowsize = _TIFFMultiply64(tif, rowsize, td->td_samplesperpixel,
+                   "TIFFTileRowSize");
+       return (TIFFhowmany8_64(rowsize));
+}
+tmsize_t
+TIFFTileRowSize(TIFF* tif)
+{
+       static const char module[] = "TIFFTileRowSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFTileRowSize64(tif);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /*
  * Compute the # bytes in a variable length, row-aligned tile.
  */
-tsize_t
-TIFFVTileSize(TIFF* tif, uint32 nrows)
+uint64
+TIFFVTileSize64(TIFF* tif, uint32 nrows)
 {
+       static const char module[] = "TIFFVTileSize64";
        TIFFDirectory *td = &tif->tif_dir;
-       tsize_t tilesize;
-
        if (td->td_tilelength == 0 || td->td_tilewidth == 0 ||
            td->td_tiledepth == 0)
-               return ((tsize_t) 0);
-       if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
-           td->td_photometric == PHOTOMETRIC_YCBCR &&
-           !isUpSampled(tif)) {
+               return (0);
+       if ((td->td_planarconfig==PLANARCONFIG_CONTIG)&&
+           (td->td_photometric==PHOTOMETRIC_YCBCR)&&
+           (td->td_samplesperpixel==3)&&
+           (!isUpSampled(tif)))
+       {
                /*
                 * Packed YCbCr data contain one Cb+Cr for every
                 * HorizontalSampling*VerticalSampling Y values.
@@ -209,38 +195,71 @@ TIFFVTileSize(TIFF* tif, uint32 nrows)
                 * horizontal/vertical subsampling area include
                 * YCbCr data for the extended image.
                 */
-               tsize_t w =
-                   TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]);
-               tsize_t rowsize =
-                   TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
-                                         "TIFFVTileSize"));
-               tsize_t samplingarea =
-                   td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1];
-               if (samplingarea == 0) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Invalid YCbCr subsampling");
+               uint16 ycbcrsubsampling[2];
+               uint16 samplingblock_samples;
+               uint32 samplingblocks_hor;
+               uint32 samplingblocks_ver;
+               uint64 samplingrow_samples;
+               uint64 samplingrow_size;
+               TIFFGetFieldDefaulted(tif,TIFFTAG_YCBCRSUBSAMPLING,ycbcrsubsampling+0,
+                   ycbcrsubsampling+1);
+               if ((ycbcrsubsampling[0] != 1 && ycbcrsubsampling[0] != 2 && ycbcrsubsampling[0] != 4)
+                   ||(ycbcrsubsampling[1] != 1 && ycbcrsubsampling[1] != 2 && ycbcrsubsampling[1] != 4))
+               {
+                       TIFFErrorExt(tif->tif_clientdata,module,
+                                    "Invalid YCbCr subsampling (%dx%d)", 
+                                    ycbcrsubsampling[0], 
+                                    ycbcrsubsampling[1] );
                        return 0;
                }
-               nrows = TIFFroundup(nrows, td->td_ycbcrsubsampling[1]);
-               /* NB: don't need TIFFhowmany here 'cuz everything is rounded */
-               tilesize = multiply(tif, nrows, rowsize, "TIFFVTileSize");
-               tilesize = summarize(tif, tilesize,
-                                    multiply(tif, 2, tilesize / samplingarea,
-                                             "TIFFVTileSize"),
-                                    "TIFFVTileSize");
-       } else
-               tilesize = multiply(tif, nrows, TIFFTileRowSize(tif),
-                                   "TIFFVTileSize");
-       return ((tsize_t)
-           multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize"));
+               samplingblock_samples=ycbcrsubsampling[0]*ycbcrsubsampling[1]+2;
+               samplingblocks_hor=TIFFhowmany_32(td->td_tilewidth,ycbcrsubsampling[0]);
+               samplingblocks_ver=TIFFhowmany_32(nrows,ycbcrsubsampling[1]);
+               samplingrow_samples=_TIFFMultiply64(tif,samplingblocks_hor,samplingblock_samples,module);
+               samplingrow_size=TIFFhowmany8_64(_TIFFMultiply64(tif,samplingrow_samples,td->td_bitspersample,module));
+               return(_TIFFMultiply64(tif,samplingrow_size,samplingblocks_ver,module));
+       }
+       else
+               return(_TIFFMultiply64(tif,nrows,TIFFTileRowSize64(tif),module));
+}
+tmsize_t
+TIFFVTileSize(TIFF* tif, uint32 nrows)
+{
+       static const char module[] = "TIFFVTileSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFVTileSize64(tif,nrows);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /*
  * Compute the # bytes in a row-aligned tile.
  */
-tsize_t
+uint64
+TIFFTileSize64(TIFF* tif)
+{
+       return (TIFFVTileSize64(tif, tif->tif_dir.td_tilelength));
+}
+tmsize_t
 TIFFTileSize(TIFF* tif)
 {
-       return (TIFFVTileSize(tif, tif->tif_dir.td_tilelength));
+       static const char module[] = "TIFFTileSize";
+       uint64 m;
+       tmsize_t n;
+       m=TIFFTileSize64(tif);
+       n=(tmsize_t)m;
+       if ((uint64)n!=m)
+       {
+               TIFFErrorExt(tif->tif_clientdata,module,"Integer overflow");
+               n=0;
+       }
+       return(n);
 }
 
 /*
@@ -265,9 +284,16 @@ _TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
                *th = 256;
        /* roundup to a multiple of 16 per the spec */
        if (*tw & 0xf)
-               *tw = TIFFroundup(*tw, 16);
+               *tw = TIFFroundup_32(*tw, 16);
        if (*th & 0xf)
-               *th = TIFFroundup(*th, 16);
+               *th = TIFFroundup_32(*th, 16);
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 24ded1c6701a1fa1b1906c7954afdac3a475d293..034ebc399414f8063814baa78ad2c27d7a698c7c 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
  * TIFF Library UNIX-specific Routines. These are should also work with the
  * Windows Common RunTime Library.
  */
+
 #include <tif_config.h>
 
 #ifdef HAVE_SYS_TYPES_H
 # include <sys/types.h>
 #endif
 
+#include <errno.h>
+
 #include <stdarg.h>
 #include <stdlib.h>
 #include <sys/stat.h>
 
 #include "tiffiop.h"
 
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffReadProc(thandle_t fd, void* buf, tmsize_t size)
 {
-       return ((tsize_t) read((int) fd, buf, (size_t) size));
+       size_t size_io = (size_t) size;
+       if ((tmsize_t) size_io != size)
+       {
+               errno=EINVAL;
+               return (tmsize_t) -1;
+       }
+       return ((tmsize_t) read((int) fd, buf, size_io));
 }
 
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffWriteProc(thandle_t fd, void* buf, tmsize_t size)
 {
-       return ((tsize_t) write((int) fd, buf, (size_t) size));
+       size_t size_io = (size_t) size;
+       if ((tmsize_t) size_io != size)
+       {
+               errno=EINVAL;
+               return (tmsize_t) -1;
+       }
+       return ((tmsize_t) write((int) fd, buf, size_io));
 }
 
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
+static uint64
+_tiffSeekProc(thandle_t fd, uint64 off, int whence)
 {
-       return ((toff_t) lseek((int) fd, (off_t) off, whence));
+       off_t off_io = (off_t) off;
+       if ((uint64) off_io != off)
+       {
+               errno=EINVAL;
+               return (uint64) -1; /* this is really gross */
+       }
+       return((uint64)lseek((int)fd,off_io,whence));
 }
 
 static int
 _tiffCloseProc(thandle_t fd)
 {
-       return (close((int) fd));
+       return(close((int)fd));
 }
 
-
-static toff_t
+static uint64
 _tiffSizeProc(thandle_t fd)
 {
-#ifdef _AM29K
-       long fsize;
-       return ((fsize = lseek((int) fd, 0, SEEK_END)) < 0 ? 0 : fsize);
-#else
        struct stat sb;
-       return (toff_t) (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-#endif
+       if (fstat((int)fd,&sb)<0)
+               return(0);
+       else
+               return((uint64)sb.st_size);
 }
 
 #ifdef HAVE_MMAP
 #include <sys/mman.h>
 
 static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+_tiffMapProc(thandle_t fd, void** pbase, toff_t* psize)
 {
-       toff_t size = _tiffSizeProc(fd);
-       if (size != (toff_t) -1) {
-               *pbase = (tdata_t)
-                   mmap(0, size, PROT_READ, MAP_SHARED, (int) fd, 0);
-               if (*pbase != (tdata_t) -1) {
-                       *psize = size;
+       uint64 size64 = _tiffSizeProc(fd);
+       tmsize_t sizem = (tmsize_t)size64;
+       if ((uint64)sizem==size64) {
+               *pbase = (void*)
+                   mmap(0, (size_t)sizem, PROT_READ, MAP_SHARED, (int) fd, 0);
+               if (*pbase != (void*) -1) {
+                       *psize = (tmsize_t)sizem;
                        return (1);
                }
        }
@@ -108,21 +127,21 @@ _tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
 }
 
 static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+_tiffUnmapProc(thandle_t fd, void* base, toff_t size)
 {
        (void) fd;
        (void) munmap(base, (off_t) size);
 }
 #else /* !HAVE_MMAP */
 static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+_tiffMapProc(thandle_t fd, void** pbase, toff_t* psize)
 {
        (void) fd; (void) pbase; (void) psize;
        return (0);
 }
 
 static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+_tiffUnmapProc(thandle_t fd, void* base, toff_t size)
 {
        (void) fd; (void) base; (void) size;
 }
@@ -154,24 +173,24 @@ TIFFOpen(const char* name, const char* mode)
 {
        static const char module[] = "TIFFOpen";
        int m, fd;
-        TIFF* tif;
+       TIFF* tif;
 
        m = _TIFFgetMode(mode, module);
        if (m == -1)
                return ((TIFF*)0);
 
-/* for cygwin and mingw */        
+/* for cygwin and mingw */
 #ifdef O_BINARY
-        m |= O_BINARY;
-#endif        
-        
-#ifdef _AM29K
-       fd = open(name, m);
-#else
-       fd = open(name, m, 0666);
+       m |= O_BINARY;
 #endif
+
+       fd = open(name, m, 0666);
        if (fd < 0) {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
+               if (errno > 0 && strerror(errno) != NULL ) {
+                       TIFFErrorExt(0, module, "%s: %s", name, strerror(errno) );
+               } else {
+                       TIFFErrorExt(0, module, "%s: Cannot open", name);
+               }
                return ((TIFF *)0);
        }
 
@@ -199,11 +218,11 @@ TIFFOpenW(const wchar_t* name, const char* mode)
        if (m == -1)
                return ((TIFF*)0);
 
-/* for cygwin and mingw */        
+/* for cygwin and mingw */
 #ifdef O_BINARY
-        m |= O_BINARY;
-#endif        
-        
+       m |= O_BINARY;
+#endif
+
        fd = _wopen(name, m, 0666);
        if (fd < 0) {
                TIFFErrorExt(0, module, "%s: Cannot open", name);
@@ -236,37 +255,37 @@ TIFFOpenW(const wchar_t* name, const char* mode)
 #endif
 
 void*
-_TIFFmalloc(tsize_t s)
+_TIFFmalloc(tmsize_t s)
 {
        return (malloc((size_t) s));
 }
 
 void
-_TIFFfree(tdata_t p)
+_TIFFfree(void* p)
 {
        free(p);
 }
 
 void*
-_TIFFrealloc(tdata_t p, tsize_t s)
+_TIFFrealloc(void* p, tmsize_t s)
 {
        return (realloc(p, (size_t) s));
 }
 
 void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
+_TIFFmemset(void* p, int v, tmsize_t c)
 {
        memset(p, v, (size_t) c);
 }
 
 void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
+_TIFFmemcpy(void* d, const void* s, tmsize_t c)
 {
        memcpy(d, s, (size_t) c);
 }
 
 int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
+_TIFFmemcmp(const void* p1, const void* p2, tmsize_t c)
 {
        return (memcmp(p1, p2, (size_t) c));
 }
@@ -291,3 +310,13 @@ unixErrorHandler(const char* module, const char* fmt, va_list ap)
        fprintf(stderr, ".\n");
 }
 TIFFErrorHandler _TIFFerrorHandler = unixErrorHandler;
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
+
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 1264b71591b0534293965c37e2644e26a4a6e32d..f92c843d88d0545c30cab02aa73e04872e3c9e43 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_version.c,v 1.2 2000/11/13 14:42:38 warmerda Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_version.c,v 1.3 2010-03-10 18:56:49 bfriesen Exp $ */
 /*
  * Copyright (c) 1992-1997 Sam Leffler
  * Copyright (c) 1992-1997 Silicon Graphics, Inc.
@@ -31,3 +31,10 @@ TIFFGetVersion(void)
 {
        return (TIFFVersion);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index d593469d2d04e8b30133001e9af190bfbac69ac7..423b636e6e34ccb4ff94c536e7a225557fd9a588 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_warning.c,v 1.2 2005/12/23 01:18:59 joris Exp $ */
+/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_warning.c,v 1.3 2010-03-10 18:56:49 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
@@ -72,3 +72,10 @@ TIFFWarningExt(thandle_t fd, const char* module, const char* fmt, ...)
 }
 
 
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tif_win3.c b/src/tiff/libtiff/tif_win3.c
deleted file mode 100644 (file)
index b16b214..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_win3.c,v 1.2 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and 
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Windows 3.x-specific Routines.
- */
-#include "tiffiop.h"
-#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
-#include <io.h>                /* for open, close, etc. function prototypes */
-#endif
-
-#include <windows.h>
-#include <windowsx.h>
-#include <memory.h>
-
-static tsize_t 
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (_hread(fd, buf, size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
-       return (_hwrite(fd, buf, size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
-       return (_llseek(fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
-       return (_lclose(fd));
-}
-
-#include <sys/stat.h>
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-       struct stat sb;
-       return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
-       return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
-       TIFF* tif;
-
-       tif = TIFFClientOpen(name, mode,
-           (thandle_t) fd,
-           _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
-           _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
-       if (tif)
-               tif->tif_fd = fd;
-       return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
-       static const char module[] = "TIFFOpen";
-       int m, fd;
-       OFSTRUCT of;
-       int mm = 0;
-
-       m = _TIFFgetMode(mode, module);
-       if (m == -1)
-               return ((TIFF*)0);
-       if (m & O_CREAT) {
-               if ((m & O_TRUNC) || OpenFile(name, &of, OF_EXIST) != HFILE_ERROR)
-                       mm |= OF_CREATE;
-       }
-       if (m & O_WRONLY)
-               mm |= OF_WRITE;
-       if (m & O_RDWR)
-               mm |= OF_READWRITE;
-       fd = OpenFile(name, &of, mm);
-       if (fd < 0) {
-               TIFFErrorExt(0, module, "%s: Cannot open", name);
-               return ((TIFF*)0);
-       }
-       return (TIFFFdOpen(fd, name, mode));
-}
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
-       return (tdata_t) GlobalAllocPtr(GHND, (DWORD) s);
-}
-
-void
-_TIFFfree(tdata_t p)
-{
-       GlobalFreePtr(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
-       return (tdata_t) GlobalReAllocPtr(p, (DWORD) s, GHND);
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
-       char* pp = (char*) p;
-
-       while (c > 0) {
-               tsize_t chunk = 0x10000 - ((uint32) pp & 0xffff);/* What's left in segment */
-               if (chunk > 0xff00)                             /* No more than 0xff00 */
-                       chunk = 0xff00;
-               if (chunk > c)                                  /* No more than needed */
-                       chunk = c;
-               memset(pp, v, chunk);
-               pp = (char*) (chunk + (char huge*) pp);
-               c -= chunk;
-       }
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
-       if (c > 0xFFFF)
-               hmemcpy((void _huge*) d, (void _huge*) s, c);
-       else
-               (void) memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t d, const tdata_t s, tsize_t c)
-{
-       char* dd = (char*) d;
-       char* ss = (char*) s;
-       tsize_t chunks, chunkd, chunk;
-       int result;
-
-       while (c > 0) {
-               chunks = 0x10000 - ((uint32) ss & 0xffff);      /* What's left in segment */
-               chunkd = 0x10000 - ((uint32) dd & 0xffff);      /* What's left in segment */
-               chunk = c;                                      /* Get the largest of     */
-               if (chunk > chunks)                             /*   c, chunks, chunkd,   */
-                       chunk = chunks;                         /*   0xff00               */
-               if (chunk > chunkd)
-                       chunk = chunkd;
-               if (chunk > 0xff00)
-                       chunk = 0xff00;
-               result = memcmp(dd, ss, chunk);
-               if (result != 0)
-                       return (result);
-               dd = (char*) (chunk + (char huge*) dd);
-               ss = (char*) (chunk + (char huge*) ss);
-               c -= chunk;
-       }
-       return (0);
-}
-
-static void
-win3WarningHandler(const char* module, const char* fmt, va_list ap)
-{
-       char e[512] = { '\0' };
-       if (module != NULL)
-               strcat(strcpy(e, module), ":");
-       vsprintf(e+strlen(e), fmt, ap);
-       strcat(e, ".");
-       MessageBox(GetActiveWindow(), e, "LibTIFF Warning",
-           MB_OK|MB_ICONEXCLAMATION);
-}
-TIFFErrorHandler _TIFFwarningHandler = win3WarningHandler;
-
-static void
-win3ErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-       char e[512] = { '\0' };
-       if (module != NULL)
-               strcat(strcpy(e, module), ":");
-       vsprintf(e+strlen(e), fmt, ap);
-       strcat(e, ".");
-       MessageBox(GetActiveWindow(), e, "LibTIFF Error", MB_OK|MB_ICONSTOP);
-}
-TIFFErrorHandler _TIFFerrorHandler = win3ErrorHandler;
index 4fb5b7650f4e3ddecacea526398af75d4a2ec2c1..9910738b49476b5a2bc3aef23fe8fc056f049331 100644 (file)
 
 #include <windows.h>
 
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffReadProc(thandle_t fd, void* buf, tmsize_t size)
 {
-       DWORD dwSizeRead;
-       if (!ReadFile(fd, buf, size, &dwSizeRead, NULL))
-               return(0);
-       return ((tsize_t) dwSizeRead);
+       /* tmsize_t is 64bit on 64bit systems, but the WinAPI ReadFile takes
+        * 32bit sizes, so we loop through the data in suitable 32bit sized
+        * chunks */
+       uint8* ma;
+       uint64 mb;
+       DWORD n;
+       DWORD o;
+       tmsize_t p;
+       ma=(uint8*)buf;
+       mb=size;
+       p=0;
+       while (mb>0)
+       {
+               n=0x80000000UL;
+               if ((uint64)n>mb)
+                       n=(DWORD)mb;
+               if (!ReadFile(fd,(LPVOID)ma,n,&o,NULL))
+                       return(0);
+               ma+=o;
+               mb-=o;
+               p+=o;
+               if (o!=n)
+                       break;
+       }
+       return(p);
 }
 
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
+static tmsize_t
+_tiffWriteProc(thandle_t fd, void* buf, tmsize_t size)
 {
-       DWORD dwSizeWritten;
-       if (!WriteFile(fd, buf, size, &dwSizeWritten, NULL))
-               return(0);
-       return ((tsize_t) dwSizeWritten);
+       /* tmsize_t is 64bit on 64bit systems, but the WinAPI WriteFile takes
+        * 32bit sizes, so we loop through the data in suitable 32bit sized
+        * chunks */
+       uint8* ma;
+       uint64 mb;
+       DWORD n;
+       DWORD o;
+       tmsize_t p;
+       ma=(uint8*)buf;
+       mb=size;
+       p=0;
+       while (mb>0)
+       {
+               n=0x80000000UL;
+               if ((uint64)n>mb)
+                       n=(DWORD)mb;
+               if (!WriteFile(fd,(LPVOID)ma,n,&o,NULL))
+                       return(0);
+               ma+=o;
+               mb-=o;
+               p+=o;
+               if (o!=n)
+                       break;
+       }
+       return(p);
 }
 
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
+static uint64
+_tiffSeekProc(thandle_t fd, uint64 off, int whence)
 {
-       DWORD dwMoveMethod, dwMoveHigh;
-
-        /* we use this as a special code, so avoid accepting it */
-        if( off == 0xFFFFFFFF )
-            return 0xFFFFFFFF;
-        
+       LARGE_INTEGER offli;
+       DWORD dwMoveMethod;
+       offli.QuadPart = off;
        switch(whence)
        {
-       case SEEK_SET:
-               dwMoveMethod = FILE_BEGIN;
-               break;
-       case SEEK_CUR:
-               dwMoveMethod = FILE_CURRENT;
-               break;
-       case SEEK_END:
-               dwMoveMethod = FILE_END;
-               break;
-       default:
-               dwMoveMethod = FILE_BEGIN;
-               break;
+               case SEEK_SET:
+                       dwMoveMethod = FILE_BEGIN;
+                       break;
+               case SEEK_CUR:
+                       dwMoveMethod = FILE_CURRENT;
+                       break;
+               case SEEK_END:
+                       dwMoveMethod = FILE_END;
+                       break;
+               default:
+                       dwMoveMethod = FILE_BEGIN;
+                       break;
        }
-        dwMoveHigh = 0;
-       return ((toff_t)SetFilePointer(fd, (LONG) off, (PLONG)&dwMoveHigh,
-                                       dwMoveMethod));
+       offli.LowPart=SetFilePointer(fd,offli.LowPart,&offli.HighPart,dwMoveMethod);
+       if ((offli.LowPart==INVALID_SET_FILE_POINTER)&&(GetLastError()!=NO_ERROR))
+               offli.QuadPart=0;
+       return(offli.QuadPart);
 }
 
 static int
@@ -85,18 +125,20 @@ _tiffCloseProc(thandle_t fd)
        return (CloseHandle(fd) ? 0 : -1);
 }
 
-static toff_t
+static uint64
 _tiffSizeProc(thandle_t fd)
 {
-       return ((toff_t)GetFileSize(fd, NULL));
+       ULARGE_INTEGER m;
+       m.LowPart=GetFileSize(fd,&m.HighPart);
+       return(m.QuadPart);
 }
 
-#ifdef __BORLANDC__
-#pragma argsused
-#endif
 static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+_tiffDummyMapProc(thandle_t fd, void** pbase, toff_t* psize)
 {
+       (void) fd;
+       (void) pbase;
+       (void) psize;
        return (0);
 }
 
@@ -112,14 +154,20 @@ _tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
  * with Visual C++ 5.0
  */
 static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
+_tiffMapProc(thandle_t fd, void** pbase, toff_t* psize)
 {
-       toff_t size;
+       uint64 size;
+       tmsize_t sizem;
        HANDLE hMapFile;
 
-       if ((size = _tiffSizeProc(fd)) == 0xFFFFFFFF)
+       size = _tiffSizeProc(fd);
+       sizem = (tmsize_t)size;
+       if ((uint64)sizem!=size)
                return (0);
-       hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, size, NULL);
+
+       /* By passing in 0 for the maximum file size, it specifies that we
+          create a file mapping object for the full file size. */
+       hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, 0, NULL);
        if (hMapFile == NULL)
                return (0);
        *pbase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
@@ -130,17 +178,19 @@ _tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
        return(1);
 }
 
-#ifdef __BORLANDC__
-#pragma argsused
-#endif
 static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+_tiffDummyUnmapProc(thandle_t fd, void* base, toff_t size)
 {
+       (void) fd;
+       (void) base;
+       (void) size;
 }
 
 static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
+_tiffUnmapProc(thandle_t fd, void* base, toff_t size)
 {
+       (void) fd;
+       (void) size;
        UnmapViewOfFile(base);
 }
 
@@ -153,8 +203,17 @@ TIFF*
 TIFFFdOpen(int ifd, const char* name, const char* mode)
 {
        TIFF* tif;
-       BOOL fSuppressMap = (mode[1] == 'u' || (mode[1]!=0 && mode[2] == 'u'));
-
+       int fSuppressMap;
+       int m;
+       fSuppressMap=0;
+       for (m=0; mode[m]!=0; m++)
+       {
+               if (mode[m]=='u')
+               {
+                       fSuppressMap=1;
+                       break;
+               }
+       }
        tif = TIFFClientOpen(name, mode, (thandle_t)ifd,
                        _tiffReadProc, _tiffWriteProc,
                        _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
@@ -165,6 +224,8 @@ TIFFFdOpen(int ifd, const char* name, const char* mode)
        return (tif);
 }
 
+#ifndef _WIN32_WCE
+
 /*
  * Open a TIFF file for read/writing.
  */
@@ -179,26 +240,15 @@ TIFFOpen(const char* name, const char* mode)
 
        m = _TIFFgetMode(mode, module);
 
-       switch(m)
-       {
-       case O_RDONLY:
-               dwMode = OPEN_EXISTING;
-               break;
-       case O_RDWR:
-               dwMode = OPEN_ALWAYS;
-               break;
-       case O_RDWR|O_CREAT:
-               dwMode = OPEN_ALWAYS;
-               break;
-       case O_RDWR|O_TRUNC:
-               dwMode = CREATE_ALWAYS;
-               break;
-       case O_RDWR|O_CREAT|O_TRUNC:
-               dwMode = CREATE_ALWAYS;
-               break;
-       default:
-               return ((TIFF*)0);
+       switch(m) {
+               case O_RDONLY:                  dwMode = OPEN_EXISTING; break;
+               case O_RDWR:                    dwMode = OPEN_ALWAYS;   break;
+               case O_RDWR|O_CREAT:            dwMode = OPEN_ALWAYS;   break;
+               case O_RDWR|O_TRUNC:            dwMode = CREATE_ALWAYS; break;
+               case O_RDWR|O_CREAT|O_TRUNC:    dwMode = CREATE_ALWAYS; break;
+               default:                        return ((TIFF*)0);
        }
+
        fd = (thandle_t)CreateFileA(name,
                (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE),
                FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
@@ -242,7 +292,7 @@ TIFFOpenW(const wchar_t* name, const char* mode)
 
        fd = (thandle_t)CreateFileW(name,
                (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE),
-               FILE_SHARE_READ, NULL, dwMode,
+               FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
                (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
                NULL);
        if (fd == INVALID_HANDLE_VALUE) {
@@ -274,68 +324,50 @@ TIFFOpenW(const wchar_t* name, const char* mode)
        return tif;
 }
 
-tdata_t
-_TIFFmalloc(tsize_t s)
+#endif /* ndef _WIN32_WCE */
+
+void*
+_TIFFmalloc(tmsize_t s)
 {
-       return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
+       return (malloc((size_t) s));
 }
 
 void
-_TIFFfree(tdata_t p)
+_TIFFfree(void* p)
 {
-       GlobalFree(p);
-       return;
+       free(p);
 }
 
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
+void*
+_TIFFrealloc(void* p, tmsize_t s)
 {
-        void* pvTmp;
-        tsize_t old;
-
-        if(p == NULL)
-                return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
-
-        old = GlobalSize(p);
-
-        if (old>=s) {
-                if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
-                       CopyMemory(pvTmp, p, s);
-                       GlobalFree(p);
-                }
-        } else {
-                if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
-                       CopyMemory(pvTmp, p, old);
-                       GlobalFree(p);
-                }
-        }
-        return ((tdata_t)pvTmp);
+       return (realloc(p, (size_t) s));
 }
 
 void
-_TIFFmemset(void* p, int v, tsize_t c)
+_TIFFmemset(void* p, int v, tmsize_t c)
 {
-       FillMemory(p, c, (BYTE)v);
+       memset(p, v, (size_t) c);
 }
 
 void
-_TIFFmemcpy(void* d, const tdata_t s, tsize_t c)
+_TIFFmemcpy(void* d, const void* s, tmsize_t c)
 {
-       CopyMemory(d, s, c);
+       memcpy(d, s, (size_t) c);
 }
 
 int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
+_TIFFmemcmp(const void* p1, const void* p2, tmsize_t c)
 {
-       register const BYTE *pb1 = (const BYTE *) p1;
-       register const BYTE *pb2 = (const BYTE *) p2;
-       register DWORD dwTmp = c;
-       register int iTmp;
-       for (iTmp = 0; dwTmp-- && !iTmp; iTmp = (int)*pb1++ - (int)*pb2++)
-               ;
-       return (iTmp);
+       return (memcmp(p1, p2, (size_t) c));
 }
 
+#ifndef _WIN32_WCE
+
+#if (_MSC_VER < 1500)
+#  define vsnprintf _vsnprintf
+#endif
+
 static void
 Win32WarningHandler(const char* module, const char* fmt, va_list ap)
 {
@@ -345,14 +377,17 @@ Win32WarningHandler(const char* module, const char* fmt, va_list ap)
        const char *szTitleText = "%s Warning";
        const char *szDefaultModule = "LIBTIFF";
        const char *szTmpModule = (module == NULL) ? szDefaultModule : module;
-       if ((szTitle = (char *)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
-               strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
+       SIZE_T nBufSize = (strlen(szTmpModule) +
+                       strlen(szTitleText) + strlen(fmt) + 256)*sizeof(char);
+
+       if ((szTitle = (char*)LocalAlloc(LMEM_FIXED, nBufSize)) == NULL)
                return;
        sprintf(szTitle, szTitleText, szTmpModule);
        szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
-       vsprintf(szTmp, fmt, ap);
+       vsnprintf(szTmp, nBufSize-(strlen(szTitle)+2)*sizeof(char), fmt, ap);
        MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONINFORMATION);
        LocalFree(szTitle);
+
        return;
 #else
        if (module != NULL)
@@ -365,7 +400,7 @@ Win32WarningHandler(const char* module, const char* fmt, va_list ap)
 TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
 
 static void
-Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
+Win32ErrorHandler(const char *module, const char *fmt, va_list ap)
 {
 #ifndef TIF_PLATFORM_CONSOLE
        char *szTitle;
@@ -373,12 +408,14 @@ Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
        const char *szTitleText = "%s Error";
        const char *szDefaultModule = "LIBTIFF";
        const char *szTmpModule = (module == NULL) ? szDefaultModule : module;
-       if ((szTitle = (char *)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
-               strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
+       SIZE_T nBufSize = (strlen(szTmpModule) +
+                       strlen(szTitleText) + strlen(fmt) + 256)*sizeof(char);
+
+       if ((szTitle = (char*)LocalAlloc(LMEM_FIXED, nBufSize)) == NULL)
                return;
        sprintf(szTitle, szTitleText, szTmpModule);
        szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
-       vsprintf(szTmp, fmt, ap);
+       vsnprintf(szTmp, nBufSize-(strlen(szTitle)+2)*sizeof(char), fmt, ap);
        MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONEXCLAMATION);
        LocalFree(szTitle);
        return;
@@ -391,4 +428,13 @@ Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
 }
 TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;
 
+#endif /* ndef _WIN32_WCE */
+
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index aef022a951b3773db2378c944de36d717db0dea1..3d4daa26afc4e7a18158a7e9a549272027858cfd 100644 (file)
@@ -4,23 +4,23 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
 #include "tiffiop.h"
 #include <stdio.h>
 
-#define        STRIPINCR       20              /* expansion factor on strip array */
+#define STRIPINCR      20              /* expansion factor on strip array */
 
-#define        WRITECHECKSTRIPS(tif, module)                           \
+#define WRITECHECKSTRIPS(tif, module)                          \
        (((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),0,module))
-#define        WRITECHECKTILES(tif, module)                            \
+#define WRITECHECKTILES(tif, module)                           \
        (((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),1,module))
-#define        BUFFERCHECK(tif)                                        \
+#define BUFFERCHECK(tif)                                       \
        ((((tif)->tif_flags & TIFF_BUFFERSETUP) && tif->tif_rawdata) || \
-           TIFFWriteBufferSetup((tif), NULL, (tsize_t) -1))
+           TIFFWriteBufferSetup((tif), NULL, (tmsize_t) -1))
 
-static int TIFFGrowStrips(TIFF*, int, const char*);
-static int TIFFAppendToStrip(TIFF*, tstrip_t, tidata_t, tsize_t);
+static int TIFFGrowStrips(TIFF* tif, uint32 delta, const char* module);
+static int TIFFAppendToStrip(TIFF* tif, uint32 strip, uint8* data, tmsize_t cc);
 
 int
-TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
+TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample)
 {
        static const char module[] = "TIFFWriteScanline";
        register TIFFDirectory *td;
        int status, imagegrew = 0;
-       tstrip_t strip;
+       uint32 strip;
 
        if (!WRITECHECKSTRIPS(tif, module))
                return (-1);
@@ -62,6 +62,8 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
         */
        if (!BUFFERCHECK(tif))
                return (-1);
+        tif->tif_flags |= TIFF_BUF4WRITE; /* not strictly sure this is right*/
+
        td = &tif->tif_dir;
        /*
         * Extend image length if needed
@@ -69,8 +71,8 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
         */
        if (row >= td->td_imagelength) {        /* extend image */
                if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "Can not change \"ImageLength\" when using separate planes");
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Can not change \"ImageLength\" when using separate planes");
                        return (-1);
                }
                td->td_imagelength = row+1;
@@ -81,9 +83,9 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
         */
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
                if (sample >= td->td_samplesperpixel) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-                           "%d: Sample out of range, max %d",
-                           sample, td->td_samplesperpixel);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "%lu: Sample out of range, max %lu",
+                           (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
                        return (-1);
                }
                strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
@@ -112,7 +114,7 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
                 */
                if (strip >= td->td_stripsperimage && imagegrew)
                        td->td_stripsperimage =
-                           TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
+                           TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip);
                tif->tif_row =
                    (strip % td->td_stripsperimage) * td->td_rowsperstrip;
                if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
@@ -161,10 +163,10 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
                tif->tif_row = row;
        }
 
-        /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) buf, tif->tif_scanlinesize );
+       /* swab if needed - note that source buffer will be altered */
+       tif->tif_postdecode( tif, (uint8*) buf, tif->tif_scanlinesize );
 
-       status = (*tif->tif_encoderow)(tif, (tidata_t) buf,
+       status = (*tif->tif_encoderow)(tif, (uint8*) buf,
            tif->tif_scanlinesize, sample);
 
         /* we are now poised at the beginning of the next row */
@@ -178,15 +180,15 @@ TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
  *
  * NB: Image length must be setup before writing.
  */
-tsize_t
-TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
+tmsize_t
+TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc)
 {
        static const char module[] = "TIFFWriteEncodedStrip";
        TIFFDirectory *td = &tif->tif_dir;
-       tsample_t sample;
+       uint16 sample;
 
        if (!WRITECHECKSTRIPS(tif, module))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
        /*
         * Check strip array to make sure there's space.
         * We don't support dynamically growing files that
@@ -198,14 +200,14 @@ TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
         */
        if (strip >= td->td_nstrips) {
                if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "Can not grow image by strips when using separate planes");
-                       return ((tsize_t) -1);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Can not grow image by strips when using separate planes");
+                       return ((tmsize_t) -1);
                }
                if (!TIFFGrowStrips(tif, 1, module))
-                       return ((tsize_t) -1);
+                       return ((tmsize_t) -1);
                td->td_stripsperimage =
-                   TIFFhowmany(td->td_imagelength, td->td_rowsperstrip);
+                   TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip);  
        }
        /*
         * Handle delayed allocation of data buffer.  This
@@ -213,45 +215,57 @@ TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
         * info.
         */
        if (!BUFFERCHECK(tif))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
+
+        tif->tif_flags |= TIFF_BUF4WRITE;
        tif->tif_curstrip = strip;
+
        tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
        if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
                if (!(*tif->tif_setupencode)(tif))
-                       return ((tsize_t) -1);
+                       return ((tmsize_t) -1);
                tif->tif_flags |= TIFF_CODERSETUP;
        }
-        
-       tif->tif_rawcc = 0;
-       tif->tif_rawcp = tif->tif_rawdata;
 
-        if( td->td_stripbytecount[strip] > 0 )
+       if( td->td_stripbytecount[strip] > 0 )
         {
-            /* if we are writing over existing tiles, zero length. */
-            td->td_stripbytecount[strip] = 0;
-
-            /* this forces TIFFAppendToStrip() to do a seek */
+            /* Make sure that at the first attempt of rewriting the tile, we will have */
+            /* more bytes available in the output buffer than the previous byte count, */
+            /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */
+            /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */
+            if( tif->tif_rawdatasize <= td->td_stripbytecount[strip] )
+            {
+                if( !(TIFFWriteBufferSetup(tif, NULL,
+                    (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[strip] + 1), 1024))) )
+                    return ((tmsize_t)(-1));
+            }
+
+           /* Force TIFFAppendToStrip() to consider placing data at end
+               of file. */
             tif->tif_curoff = 0;
         }
-        
+
+    tif->tif_rawcc = 0;
+    tif->tif_rawcp = tif->tif_rawdata;
+
        tif->tif_flags &= ~TIFF_POSTENCODE;
-       sample = (tsample_t)(strip / td->td_stripsperimage);
+       sample = (uint16)(strip / td->td_stripsperimage);
        if (!(*tif->tif_preencode)(tif, sample))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
 
         /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) data, cc );
+       tif->tif_postdecode( tif, (uint8*) data, cc );
 
-       if (!(*tif->tif_encodestrip)(tif, (tidata_t) data, cc, sample))
-               return ((tsize_t) 0);
+       if (!(*tif->tif_encodestrip)(tif, (uint8*) data, cc, sample))
+               return (0);
        if (!(*tif->tif_postencode)(tif))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
        if (!isFillOrder(tif, td->td_fillorder) &&
            (tif->tif_flags & TIFF_NOBITREV) == 0)
                TIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc);
        if (tif->tif_rawcc > 0 &&
            !TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
        tif->tif_rawcc = 0;
        tif->tif_rawcp = tif->tif_rawdata;
        return (cc);
@@ -262,14 +276,14 @@ TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
  *
  * NB: Image length must be setup before writing.
  */
-tsize_t
-TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
+tmsize_t
+TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc)
 {
        static const char module[] = "TIFFWriteRawStrip";
        TIFFDirectory *td = &tif->tif_dir;
 
        if (!WRITECHECKSTRIPS(tif, module))
-               return ((tsize_t) -1);
+               return ((tmsize_t) -1);
        /*
         * Check strip array to make sure there's space.
         * We don't support dynamically growing files that
@@ -281,9 +295,9 @@ TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
         */
        if (strip >= td->td_nstrips) {
                if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
-                       TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
-               "Can not grow image by strips when using separate planes");
-                       return ((tsize_t) -1);
+                       TIFFErrorExt(tif->tif_clientdata, module,
+                           "Can not grow image by strips when using separate planes");
+                       return ((tmsize_t) -1);
                }
                /*
                 * Watch out for a growing image.  The value of
@@ -292,26 +306,25 @@ TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
                 */
                if (strip >= td->td_stripsperimage)
                        td->td_stripsperimage =
-                           TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
+                           TIFFhowmany_32(td->td_imagelength,td->td_rowsperstrip);
                if (!TIFFGrowStrips(tif, 1, module))
-                       return ((tsize_t) -1);
+                       return ((tmsize_t) -1);
        }
        tif->tif_curstrip = strip;
        tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
-       return (TIFFAppendToStrip(tif, strip, (tidata_t) data, cc) ?
-           cc : (tsize_t) -1);
+       return (TIFFAppendToStrip(tif, strip, (uint8*) data, cc) ?
+           cc : (tmsize_t) -1);
 }
 
 /*
  * Write and compress a tile of data.  The
  * tile is selected by the (x,y,z,s) coordinates.
  */
-tsize_t
-TIFFWriteTile(TIFF* tif,
-    tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
+tmsize_t
+TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s)
 {
        if (!TIFFCheckTile(tif, x, y, z, s))
-               return (-1);
+               return ((tmsize_t)(-1));
        /*
         * NB: A tile size of -1 is used instead of tif_tilesize knowing
         *     that TIFFWriteEncodedTile will clamp this to the tile size.
@@ -319,7 +332,7 @@ TIFFWriteTile(TIFF* tif,
         *     after the output buffer is setup in TIFFWriteBufferSetup.
         */
        return (TIFFWriteEncodedTile(tif,
-           TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
+           TIFFComputeTile(tif, x, y, z, s), buf, (tmsize_t)(-1)));
 }
 
 /*
@@ -334,20 +347,20 @@ TIFFWriteTile(TIFF* tif,
  *     interface does not support automatically growing
  *     the image on each write (as TIFFWriteScanline does).
  */
-tsize_t
-TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
+tmsize_t
+TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc)
 {
        static const char module[] = "TIFFWriteEncodedTile";
        TIFFDirectory *td;
-       tsample_t sample;
+       uint16 sample;
 
        if (!WRITECHECKTILES(tif, module))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        td = &tif->tif_dir;
        if (tile >= td->td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
-                   tif->tif_name, (unsigned long) tile, (unsigned long) td->td_nstrips);
-               return ((tsize_t) -1);
+               TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu",
+                   (unsigned long) tile, (unsigned long) td->td_nstrips);
+               return ((tmsize_t)(-1));
        }
        /*
         * Handle delayed allocation of data buffer.  This
@@ -355,39 +368,50 @@ TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
         * directory information).
         */
        if (!BUFFERCHECK(tif))
-               return ((tsize_t) -1);
-       tif->tif_curtile = tile;
+               return ((tmsize_t)(-1));
 
-       tif->tif_rawcc = 0;
-       tif->tif_rawcp = tif->tif_rawdata;
+        tif->tif_flags |= TIFF_BUF4WRITE;
+       tif->tif_curtile = tile;
 
-        if( td->td_stripbytecount[tile] > 0 )
+       if( td->td_stripbytecount[tile] > 0 )
         {
-            /* if we are writing over existing tiles, zero length. */
-            td->td_stripbytecount[tile] = 0;
-
-            /* this forces TIFFAppendToStrip() to do a seek */
+            /* Make sure that at the first attempt of rewriting the tile, we will have */
+            /* more bytes available in the output buffer than the previous byte count, */
+            /* so that TIFFAppendToStrip() will detect the overflow when it is called the first */
+            /* time if the new compressed tile is bigger than the older one. (GDAL #4771) */
+            if( tif->tif_rawdatasize <= td->td_stripbytecount[tile] )
+            {
+                if( !(TIFFWriteBufferSetup(tif, NULL,
+                    (tmsize_t)TIFFroundup_64((uint64)(td->td_stripbytecount[tile] + 1), 1024))) )
+                    return ((tmsize_t)(-1));
+            }
+
+           /* Force TIFFAppendToStrip() to consider placing data at end
+               of file. */
             tif->tif_curoff = 0;
         }
-        
+
+    tif->tif_rawcc = 0;
+    tif->tif_rawcp = tif->tif_rawdata;
+
        /* 
         * Compute tiles per row & per column to compute
         * current row and column
         */
-       tif->tif_row = (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength))
+       tif->tif_row = (tile % TIFFhowmany_32(td->td_imagelength, td->td_tilelength))
                * td->td_tilelength;
-       tif->tif_col = (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth))
+       tif->tif_col = (tile % TIFFhowmany_32(td->td_imagewidth, td->td_tilewidth))
                * td->td_tilewidth;
 
        if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
                if (!(*tif->tif_setupencode)(tif))
-                       return ((tsize_t) -1);
+                       return ((tmsize_t)(-1));
                tif->tif_flags |= TIFF_CODERSETUP;
        }
        tif->tif_flags &= ~TIFF_POSTENCODE;
-       sample = (tsample_t)(tile/td->td_stripsperimage);
+       sample = (uint16)(tile/td->td_stripsperimage);
        if (!(*tif->tif_preencode)(tif, sample))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        /*
         * Clamp write amount to the tile size.  This is mostly
         * done so that callers can pass in some large number
@@ -397,18 +421,18 @@ TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
                cc = tif->tif_tilesize;
 
         /* swab if needed - note that source buffer will be altered */
-        tif->tif_postdecode( tif, (tidata_t) data, cc );
+       tif->tif_postdecode( tif, (uint8*) data, cc );
 
-       if (!(*tif->tif_encodetile)(tif, (tidata_t) data, cc, sample))
-               return ((tsize_t) 0);
+       if (!(*tif->tif_encodetile)(tif, (uint8*) data, cc, sample))
+               return (0);
        if (!(*tif->tif_postencode)(tif))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        if (!isFillOrder(tif, td->td_fillorder) &&
            (tif->tif_flags & TIFF_NOBITREV) == 0)
-               TIFFReverseBits((unsigned char *)tif->tif_rawdata, tif->tif_rawcc);
+               TIFFReverseBits((uint8*)tif->tif_rawdata, tif->tif_rawcc);
        if (tif->tif_rawcc > 0 && !TIFFAppendToStrip(tif, tile,
            tif->tif_rawdata, tif->tif_rawcc))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        tif->tif_rawcc = 0;
        tif->tif_rawcp = tif->tif_rawdata;
        return (cc);
@@ -423,21 +447,21 @@ TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
  *     interface does not support automatically growing
  *     the image on each write (as TIFFWriteScanline does).
  */
-tsize_t
-TIFFWriteRawTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
+tmsize_t
+TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc)
 {
        static const char module[] = "TIFFWriteRawTile";
 
        if (!WRITECHECKTILES(tif, module))
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        if (tile >= tif->tif_dir.td_nstrips) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
-                   tif->tif_name, (unsigned long) tile,
+               TIFFErrorExt(tif->tif_clientdata, module, "Tile %lu out of range, max %lu",
+                   (unsigned long) tile,
                    (unsigned long) tif->tif_dir.td_nstrips);
-               return ((tsize_t) -1);
+               return ((tmsize_t)(-1));
        }
-       return (TIFFAppendToStrip(tif, tile, (tidata_t) data, cc) ?
-           cc : (tsize_t) -1);
+       return (TIFFAppendToStrip(tif, tile, (uint8*) data, cc) ?
+           cc : (tmsize_t)(-1));
 }
 
 #define        isUnspecified(tif, f) \
@@ -459,18 +483,18 @@ TIFFSetupStrips(TIFF* tif)
        td->td_nstrips = td->td_stripsperimage;
        if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
                td->td_stripsperimage /= td->td_samplesperpixel;
-       td->td_stripoffset = (uint32 *)
-           _TIFFmalloc(td->td_nstrips * sizeof (uint32));
-       td->td_stripbytecount = (uint32 *)
-           _TIFFmalloc(td->td_nstrips * sizeof (uint32));
+       td->td_stripoffset = (uint64 *)
+           _TIFFmalloc(td->td_nstrips * sizeof (uint64));
+       td->td_stripbytecount = (uint64 *)
+           _TIFFmalloc(td->td_nstrips * sizeof (uint64));
        if (td->td_stripoffset == NULL || td->td_stripbytecount == NULL)
                return (0);
        /*
         * Place data at the end-of-file
         * (by setting offsets to zero).
         */
-       _TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint32));
-       _TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint32));
+       _TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint64));
+       _TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint64));
        TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
        TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
        return (1);
@@ -487,16 +511,17 @@ int
 TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
 {
        if (tif->tif_mode == O_RDONLY) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: File not open for writing",
-                   tif->tif_name);
+               TIFFErrorExt(tif->tif_clientdata, module, "File not open for writing");
                return (0);
        }
        if (tiles ^ isTiled(tif)) {
-               TIFFErrorExt(tif->tif_clientdata, tif->tif_name, tiles ?
+               TIFFErrorExt(tif->tif_clientdata, module, tiles ?
                    "Can not write tiles to a stripped image" :
                    "Can not write scanlines to a tiled image");
                return (0);
        }
+
+        _TIFFFillStriles( tif );
         
        /*
         * On the first write verify all the required information
@@ -510,8 +535,7 @@ TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
         */
        if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
                TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Must set \"ImageWidth\" before writing data",
-                   tif->tif_name);
+                   "Must set \"ImageWidth\" before writing data");
                return (0);
        }
        if (tif->tif_dir.td_samplesperpixel == 1) {
@@ -521,23 +545,32 @@ TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
                 * because this field is used in other parts of library even
                 * in the single band case.
                 */
-               tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG;
+               if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG))
+                    tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG;
        } else {
                if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Must set \"PlanarConfiguration\" before writing data",
-                           tif->tif_name);
+                           "Must set \"PlanarConfiguration\" before writing data");
                        return (0);
                }
        }
        if (tif->tif_dir.td_stripoffset == NULL && !TIFFSetupStrips(tif)) {
                tif->tif_dir.td_nstrips = 0;
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for %s arrays",
-                   tif->tif_name, isTiled(tif) ? "tile" : "strip");
+               TIFFErrorExt(tif->tif_clientdata, module, "No space for %s arrays",
+                   isTiled(tif) ? "tile" : "strip");
                return (0);
        }
-       tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
+       if (isTiled(tif))
+       {
+               tif->tif_tilesize = TIFFTileSize(tif);
+               if (tif->tif_tilesize == 0)
+                       return (0);
+       }
+       else
+               tif->tif_tilesize = (tmsize_t)(-1);
        tif->tif_scanlinesize = TIFFScanlineSize(tif);
+       if (tif->tif_scanlinesize == 0)
+               return (0);
        tif->tif_flags |= TIFF_BEENWRITING;
        return (1);
 }
@@ -546,7 +579,7 @@ TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
  * Setup the raw data buffer used for encoding.
  */
 int
-TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
+TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size)
 {
        static const char module[] = "TIFFWriteBufferSetup";
 
@@ -557,7 +590,7 @@ TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
                }
                tif->tif_rawdata = NULL;
        }
-       if (size == (tsize_t) -1) {
+       if (size == (tmsize_t)(-1)) {
                size = (isTiled(tif) ?
                    tif->tif_tilesize : TIFFStripSize(tif));
                /*
@@ -570,14 +603,13 @@ TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
        if (bp == NULL) {
                bp = _TIFFmalloc(size);
                if (bp == NULL) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for output buffer",
-                           tif->tif_name);
+                       TIFFErrorExt(tif->tif_clientdata, module, "No space for output buffer");
                        return (0);
                }
                tif->tif_flags |= TIFF_MYBUFFER;
        } else
                tif->tif_flags &= ~TIFF_MYBUFFER;
-       tif->tif_rawdata = (tidata_t) bp;
+       tif->tif_rawdata = (uint8*) bp;
        tif->tif_rawdatasize = size;
        tif->tif_rawcc = 0;
        tif->tif_rawcp = tif->tif_rawdata;
@@ -589,33 +621,35 @@ TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
  * Grow the strip data structures by delta strips.
  */
 static int
-TIFFGrowStrips(TIFF* tif, int delta, const char* module)
+TIFFGrowStrips(TIFF* tif, uint32 delta, const char* module)
 {
-       TIFFDirectory   *td = &tif->tif_dir;
-       uint32          *new_stripoffset, *new_stripbytecount;
+       TIFFDirectory *td = &tif->tif_dir;
+       uint64* new_stripoffset;
+       uint64* new_stripbytecount;
 
        assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
-       new_stripoffset = (uint32*)_TIFFrealloc(td->td_stripoffset,
-               (td->td_nstrips + delta) * sizeof (uint32));
-       new_stripbytecount = (uint32*)_TIFFrealloc(td->td_stripbytecount,
-               (td->td_nstrips + delta) * sizeof (uint32));
+       new_stripoffset = (uint64*)_TIFFrealloc(td->td_stripoffset,
+               (td->td_nstrips + delta) * sizeof (uint64));
+       new_stripbytecount = (uint64*)_TIFFrealloc(td->td_stripbytecount,
+               (td->td_nstrips + delta) * sizeof (uint64));
        if (new_stripoffset == NULL || new_stripbytecount == NULL) {
                if (new_stripoffset)
                        _TIFFfree(new_stripoffset);
                if (new_stripbytecount)
                        _TIFFfree(new_stripbytecount);
                td->td_nstrips = 0;
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: No space to expand strip arrays",
-                         tif->tif_name);
+               TIFFErrorExt(tif->tif_clientdata, module, "No space to expand strip arrays");
                return (0);
        }
        td->td_stripoffset = new_stripoffset;
        td->td_stripbytecount = new_stripbytecount;
        _TIFFmemset(td->td_stripoffset + td->td_nstrips,
-                   0, delta*sizeof (uint32));
+                   0, delta*sizeof (uint64));
        _TIFFmemset(td->td_stripbytecount + td->td_nstrips,
-                   0, delta*sizeof (uint32));
+                   0, delta*sizeof (uint64));
        td->td_nstrips += delta;
+        tif->tif_flags |= TIFF_DIRTYDIRECT;
+
        return (1);
 }
 
@@ -623,67 +657,72 @@ TIFFGrowStrips(TIFF* tif, int delta, const char* module)
  * Append the data to the specified strip.
  */
 static int
-TIFFAppendToStrip(TIFF* tif, tstrip_t strip, tidata_t data, tsize_t cc)
+TIFFAppendToStrip(TIFF* tif, uint32 strip, uint8* data, tmsize_t cc)
 {
-       TIFFDirectory *td = &tif->tif_dir;
        static const char module[] = "TIFFAppendToStrip";
+       TIFFDirectory *td = &tif->tif_dir;
+       uint64 m;
+        int64 old_byte_count = -1;
 
        if (td->td_stripoffset[strip] == 0 || tif->tif_curoff == 0) {
-               /*
-                * No current offset, set the current strip.
-                */
-               assert(td->td_nstrips > 0);
-               if (td->td_stripoffset[strip] != 0) {
-                       /*
-                        * Prevent overlapping of the data chunks. We need
-                         * this to enable in place updating of the compressed
-                         * images. Larger blocks will be moved at the end of
-                         * the file without any optimization of the spare
-                         * space, so such scheme is not too much effective.
-                        */
-                       if (td->td_stripbytecountsorted) {
-                               if (strip == td->td_nstrips - 1
-                                   || td->td_stripoffset[strip + 1] <
-                                       td->td_stripoffset[strip] + cc) {
-                                       td->td_stripoffset[strip] =
-                                               TIFFSeekFile(tif, (toff_t)0,
-                                                            SEEK_END);
-                               }
-                       } else {
-                               tstrip_t i;
-                               for (i = 0; i < td->td_nstrips; i++) {
-                                       if (td->td_stripoffset[i] > 
-                                               td->td_stripoffset[strip]
-                                           && td->td_stripoffset[i] <
-                                               td->td_stripoffset[strip] + cc) {
-                                               td->td_stripoffset[strip] =
-                                                       TIFFSeekFile(tif,
-                                                                    (toff_t)0,
-                                                                    SEEK_END);
-                                       }
-                               }
-                       }
-
-                       if (!SeekOK(tif, td->td_stripoffset[strip])) {
-                               TIFFErrorExt(tif->tif_clientdata, module,
-                                         "%s: Seek error at scanline %lu",
-                                         tif->tif_name,
-                                         (unsigned long)tif->tif_row);
-                               return (0);
-                       }
-               } else
-                       td->td_stripoffset[strip] =
-                           TIFFSeekFile(tif, (toff_t) 0, SEEK_END);
-               tif->tif_curoff = td->td_stripoffset[strip];
+            assert(td->td_nstrips > 0);
+
+            if( td->td_stripbytecount[strip] != 0 
+                && td->td_stripoffset[strip] != 0 
+                && td->td_stripbytecount[strip] >= (uint64) cc )
+            {
+                /* 
+                 * There is already tile data on disk, and the new tile
+                 * data we have will fit in the same space.  The only 
+                 * aspect of this that is risky is that there could be
+                 * more data to append to this strip before we are done
+                 * depending on how we are getting called.
+                 */
+                if (!SeekOK(tif, td->td_stripoffset[strip])) {
+                    TIFFErrorExt(tif->tif_clientdata, module,
+                                 "Seek error at scanline %lu",
+                                 (unsigned long)tif->tif_row);
+                    return (0);
+                }
+            }
+            else
+            {
+                /* 
+                 * Seek to end of file, and set that as our location to 
+                 * write this strip.
+                 */
+                td->td_stripoffset[strip] = TIFFSeekFile(tif, 0, SEEK_END);
+                tif->tif_flags |= TIFF_DIRTYSTRIP;
+            }
+
+            tif->tif_curoff = td->td_stripoffset[strip];
+
+            /*
+             * We are starting a fresh strip/tile, so set the size to zero.
+             */
+            old_byte_count = td->td_stripbytecount[strip];
+            td->td_stripbytecount[strip] = 0;
        }
 
-       if (!WriteOK(tif, data, cc)) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: Write error at scanline %lu",
-                   tif->tif_name, (unsigned long) tif->tif_row);
+       m = tif->tif_curoff+cc;
+       if (!(tif->tif_flags&TIFF_BIGTIFF))
+               m = (uint32)m;
+       if ((m<tif->tif_curoff)||(m<(uint64)cc))
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "Maximum TIFF file size exceeded");
                return (0);
        }
-       tif->tif_curoff += cc;
+       if (!WriteOK(tif, data, cc)) {
+               TIFFErrorExt(tif->tif_clientdata, module, "Write error at scanline %lu",
+                   (unsigned long) tif->tif_row);
+                   return (0);
+       }
+       tif->tif_curoff = m;
        td->td_stripbytecount[strip] += cc;
+
+        if( (int64) td->td_stripbytecount[strip] != old_byte_count )
+            tif->tif_flags |= TIFF_DIRTYSTRIP;
+            
        return (1);
 }
 
@@ -695,10 +734,10 @@ TIFFAppendToStrip(TIFF* tif, tstrip_t strip, tidata_t data, tsize_t cc)
 int
 TIFFFlushData1(TIFF* tif)
 {
-       if (tif->tif_rawcc > 0) {
+       if (tif->tif_rawcc > 0 && tif->tif_flags & TIFF_BUF4WRITE ) {
                if (!isFillOrder(tif, tif->tif_dir.td_fillorder) &&
                    (tif->tif_flags & TIFF_NOBITREV) == 0)
-                       TIFFReverseBits((unsigned char *)tif->tif_rawdata,
+                       TIFFReverseBits((uint8*)tif->tif_rawdata,
                            tif->tif_rawcc);
                if (!TIFFAppendToStrip(tif,
                    isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip,
@@ -723,3 +762,10 @@ TIFFSetWriteOffset(TIFF* tif, toff_t off)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 0a19921e77f9ca7debe382a00a13017c01cc11d2..d5e4d31d2a03b916ae761eab2bce0c7835bfec06 100644 (file)
  * State block for each open TIFF
  * file using ZIP compression/decompression.
  */
-typedef        struct {
+typedef struct {
        TIFFPredictorState predict;
-       z_stream        stream;
-       int             zipquality;             /* compression level */
-       int             state;                  /* state flags */
-#define        ZSTATE_INIT     0x1             /* zlib setup successfully */
-
-       TIFFVGetMethod  vgetparent;             /* super-class method */
-       TIFFVSetMethod  vsetparent;             /* super-class method */
+        z_stream        stream;
+       int             zipquality;            /* compression level */
+       int             state;                 /* state flags */
+#define ZSTATE_INIT_DECODE 0x01
+#define ZSTATE_INIT_ENCODE 0x02
+
+       TIFFVGetMethod  vgetparent;            /* super-class method */
+       TIFFVSetMethod  vsetparent;            /* super-class method */
 } ZIPState;
 
-#define        ZState(tif)             ((ZIPState*) (tif)->tif_data)
-#define        DecoderState(tif)       ZState(tif)
-#define        EncoderState(tif)       ZState(tif)
+#define ZState(tif)             ((ZIPState*) (tif)->tif_data)
+#define DecoderState(tif)       ZState(tif)
+#define EncoderState(tif)       ZState(tif)
+
+static int ZIPEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s);
+static int ZIPDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s);
 
-static int ZIPEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int ZIPDecode(TIFF*, tidata_t, tsize_t, tsample_t);
+static int
+ZIPFixupTags(TIFF* tif)
+{
+       (void) tif;
+       return (1);
+}
 
 static int
 ZIPSetupDecode(TIFF* tif)
 {
-       ZIPState* sp = DecoderState(tif);
        static const char module[] = "ZIPSetupDecode";
+       ZIPState* sp = DecoderState(tif);
 
        assert(sp != NULL);
+        
+        /* if we were last encoding, terminate this mode */
+       if (sp->state & ZSTATE_INIT_ENCODE) {
+           deflateEnd(&sp->stream);
+           sp->state = 0;
+       }
+
        if (inflateInit(&sp->stream) != Z_OK) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
+               TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
                return (0);
        } else {
-               sp->state |= ZSTATE_INIT;
+               sp->state |= ZSTATE_INIT_DECODE;
                return (1);
        }
 }
@@ -103,66 +118,103 @@ ZIPSetupDecode(TIFF* tif)
  * Setup state for decoding a strip.
  */
 static int
-ZIPPreDecode(TIFF* tif, tsample_t s)
+ZIPPreDecode(TIFF* tif, uint16 s)
 {
+       static const char module[] = "ZIPPreDecode";
        ZIPState* sp = DecoderState(tif);
 
        (void) s;
        assert(sp != NULL);
+
+       if( (sp->state & ZSTATE_INIT_DECODE) == 0 )
+            tif->tif_setupdecode( tif );
+
        sp->stream.next_in = tif->tif_rawdata;
-       sp->stream.avail_in = tif->tif_rawcc;
+       assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_in = (uInt) tif->tif_rawcc;
+       if ((tmsize_t)sp->stream.avail_in != tif->tif_rawcc)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        return (inflateReset(&sp->stream) == Z_OK);
 }
 
 static int
-ZIPDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
+ZIPDecode(TIFF* tif, uint8* op, tmsize_t occ, uint16 s)
 {
-       ZIPState* sp = DecoderState(tif);
        static const char module[] = "ZIPDecode";
+       ZIPState* sp = DecoderState(tif);
 
        (void) s;
        assert(sp != NULL);
+       assert(sp->state == ZSTATE_INIT_DECODE);
+
+        sp->stream.next_in = tif->tif_rawcp;
+       sp->stream.avail_in = (uInt) tif->tif_rawcc;
+        
        sp->stream.next_out = op;
-       sp->stream.avail_out = occ;
+       assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_out = (uInt) occ;
+       if ((tmsize_t)sp->stream.avail_out != occ)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        do {
                int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
                if (state == Z_STREAM_END)
                        break;
                if (state == Z_DATA_ERROR) {
                        TIFFErrorExt(tif->tif_clientdata, module,
-                           "%s: Decoding error at scanline %d, %s",
-                           tif->tif_name, tif->tif_row, sp->stream.msg);
+                           "Decoding error at scanline %lu, %s",
+                           (unsigned long) tif->tif_row, sp->stream.msg);
                        if (inflateSync(&sp->stream) != Z_OK)
                                return (0);
                        continue;
                }
                if (state != Z_OK) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                           tif->tif_name, sp->stream.msg);
+                       TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                           sp->stream.msg);
                        return (0);
                }
        } while (sp->stream.avail_out > 0);
        if (sp->stream.avail_out != 0) {
                TIFFErrorExt(tif->tif_clientdata, module,
-                   "%s: Not enough data at scanline %d (short %d bytes)",
-                   tif->tif_name, tif->tif_row, sp->stream.avail_out);
+                   "Not enough data at scanline %lu (short " TIFF_UINT64_FORMAT " bytes)",
+                   (unsigned long) tif->tif_row, (TIFF_UINT64_T) sp->stream.avail_out);
                return (0);
        }
+
+        tif->tif_rawcp = sp->stream.next_in;
+        tif->tif_rawcc = sp->stream.avail_in;
+
        return (1);
 }
 
 static int
 ZIPSetupEncode(TIFF* tif)
 {
-       ZIPState* sp = EncoderState(tif);
        static const char module[] = "ZIPSetupEncode";
+       ZIPState* sp = EncoderState(tif);
 
        assert(sp != NULL);
+       if (sp->state & ZSTATE_INIT_DECODE) {
+               inflateEnd(&sp->stream);
+               sp->state = 0;
+       }
+
        if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) {
-               TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
+               TIFFErrorExt(tif->tif_clientdata, module, "%s", sp->stream.msg);
                return (0);
        } else {
-               sp->state |= ZSTATE_INIT;
+               sp->state |= ZSTATE_INIT_ENCODE;
                return (1);
        }
 }
@@ -171,14 +223,27 @@ ZIPSetupEncode(TIFF* tif)
  * Reset encoding state at the start of a strip.
  */
 static int
-ZIPPreEncode(TIFF* tif, tsample_t s)
+ZIPPreEncode(TIFF* tif, uint16 s)
 {
+       static const char module[] = "ZIPPreEncode";
        ZIPState *sp = EncoderState(tif);
 
        (void) s;
        assert(sp != NULL);
+       if( sp->state != ZSTATE_INIT_ENCODE )
+            tif->tif_setupencode( tif );
+
        sp->stream.next_out = tif->tif_rawdata;
+       assert(sizeof(sp->stream.avail_out)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
        sp->stream.avail_out = tif->tif_rawdatasize;
+       if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        return (deflateReset(&sp->stream) == Z_OK);
 }
 
@@ -186,25 +251,37 @@ ZIPPreEncode(TIFF* tif, tsample_t s)
  * Encode a chunk of pixels.
  */
 static int
-ZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
+ZIPEncode(TIFF* tif, uint8* bp, tmsize_t cc, uint16 s)
 {
-       ZIPState *sp = EncoderState(tif);
        static const char module[] = "ZIPEncode";
+       ZIPState *sp = EncoderState(tif);
+
+       assert(sp != NULL);
+       assert(sp->state == ZSTATE_INIT_ENCODE);
 
        (void) s;
        sp->stream.next_in = bp;
-       sp->stream.avail_in = cc;
+       assert(sizeof(sp->stream.avail_in)==4);  /* if this assert gets raised,
+           we need to simplify this code to reflect a ZLib that is likely updated
+           to deal with 8byte memory sizes, though this code will respond
+           apropriately even before we simplify it */
+       sp->stream.avail_in = (uInt) cc;
+       if ((tmsize_t)sp->stream.avail_in != cc)
+       {
+               TIFFErrorExt(tif->tif_clientdata, module, "ZLib cannot deal with buffers this size");
+               return (0);
+       }
        do {
                if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
-                           tif->tif_name, sp->stream.msg);
+                       TIFFErrorExt(tif->tif_clientdata, module, "Encoder error: %s",
+                           sp->stream.msg);
                        return (0);
                }
                if (sp->stream.avail_out == 0) {
                        tif->tif_rawcc = tif->tif_rawdatasize;
                        TIFFFlushData1(tif);
                        sp->stream.next_out = tif->tif_rawdata;
-                       sp->stream.avail_out = tif->tif_rawdatasize;
+                       sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */
                }
        } while (sp->stream.avail_in > 0);
        return (1);
@@ -217,8 +294,8 @@ ZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
 static int
 ZIPPostEncode(TIFF* tif)
 {
-       ZIPState *sp = EncoderState(tif);
        static const char module[] = "ZIPPostEncode";
+       ZIPState *sp = EncoderState(tif);
        int state;
 
        sp->stream.avail_in = 0;
@@ -227,19 +304,18 @@ ZIPPostEncode(TIFF* tif)
                switch (state) {
                case Z_STREAM_END:
                case Z_OK:
-                   if ((int)sp->stream.avail_out != (int)tif->tif_rawdatasize)
-                    {
-                           tif->tif_rawcc =
-                               tif->tif_rawdatasize - sp->stream.avail_out;
-                           TIFFFlushData1(tif);
-                           sp->stream.next_out = tif->tif_rawdata;
-                           sp->stream.avail_out = tif->tif_rawdatasize;
-                   }
-                   break;
+                       if ((tmsize_t)sp->stream.avail_out != tif->tif_rawdatasize)
+                       {
+                               tif->tif_rawcc =  tif->tif_rawdatasize - sp->stream.avail_out;
+                               TIFFFlushData1(tif);
+                               sp->stream.next_out = tif->tif_rawdata;
+                               sp->stream.avail_out = (uInt) tif->tif_rawdatasize;  /* this is a safe typecast, as check is made already in ZIPPreEncode */
+                       }
+                       break;
                default:
-                       TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                       tif->tif_name, sp->stream.msg);
-                   return (0);
+                       TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                           sp->stream.msg);
+                       return (0);
                }
        } while (state != Z_STREAM_END);
        return (1);
@@ -257,12 +333,12 @@ ZIPCleanup(TIFF* tif)
        tif->tif_tagmethods.vgetfield = sp->vgetparent;
        tif->tif_tagmethods.vsetfield = sp->vsetparent;
 
-       if (sp->state&ZSTATE_INIT) {
-               /* NB: avoid problems in the library */
-               if (tif->tif_mode == O_RDONLY)
-                       inflateEnd(&sp->stream);
-               else
-                       deflateEnd(&sp->stream);
+       if (sp->state & ZSTATE_INIT_ENCODE) {
+               deflateEnd(&sp->stream);
+               sp->state = 0;
+       } else if( sp->state & ZSTATE_INIT_DECODE) {
+               inflateEnd(&sp->stream);
+               sp->state = 0;
        }
        _TIFFfree(sp);
        tif->tif_data = NULL;
@@ -271,19 +347,19 @@ ZIPCleanup(TIFF* tif)
 }
 
 static int
-ZIPVSetField(TIFF* tif, ttag_t tag, va_list ap)
+ZIPVSetField(TIFF* tif, uint32 tag, va_list ap)
 {
-       ZIPState* sp = ZState(tif);
        static const char module[] = "ZIPVSetField";
+       ZIPState* sp = ZState(tif);
 
        switch (tag) {
        case TIFFTAG_ZIPQUALITY:
-               sp->zipquality = va_arg(ap, int);
-               if (tif->tif_mode != O_RDONLY && (sp->state&ZSTATE_INIT)) {
+               sp->zipquality = (int) va_arg(ap, int);
+               if ( sp->state&ZSTATE_INIT_ENCODE ) {
                        if (deflateParams(&sp->stream,
                            sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) {
-                               TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
-                                   tif->tif_name, sp->stream.msg);
+                               TIFFErrorExt(tif->tif_clientdata, module, "ZLib error: %s",
+                                   sp->stream.msg);
                                return (0);
                        }
                }
@@ -295,7 +371,7 @@ ZIPVSetField(TIFF* tif, ttag_t tag, va_list ap)
 }
 
 static int
-ZIPVGetField(TIFF* tif, ttag_t tag, va_list ap)
+ZIPVGetField(TIFF* tif, uint32 tag, va_list ap)
 {
        ZIPState* sp = ZState(tif);
 
@@ -309,23 +385,32 @@ ZIPVGetField(TIFF* tif, ttag_t tag, va_list ap)
        return (1);
 }
 
-static const TIFFFieldInfo zipFieldInfo[] = {
-    { TIFFTAG_ZIPQUALITY,       0, 0,  TIFF_ANY,       FIELD_PSEUDO,
-      TRUE,    FALSE,  "" },
+static const TIFFField zipFields[] = {
+    { TIFFTAG_ZIPQUALITY, 0, 0, TIFF_ANY, 0, TIFF_SETGET_INT, TIFF_SETGET_UNDEFINED, FIELD_PSEUDO, TRUE, FALSE, "", NULL },
 };
 
 int
 TIFFInitZIP(TIFF* tif, int scheme)
 {
+       static const char module[] = "TIFFInitZIP";
        ZIPState* sp;
 
        assert( (scheme == COMPRESSION_DEFLATE)
                || (scheme == COMPRESSION_ADOBE_DEFLATE));
 
+       /*
+        * Merge codec-specific tag information.
+        */
+       if (!_TIFFMergeFields(tif, zipFields, TIFFArrayCount(zipFields))) {
+               TIFFErrorExt(tif->tif_clientdata, module,
+                            "Merging Deflate codec-specific tags failed");
+               return 0;
+       }
+
        /*
         * Allocate state block so tag methods have storage to record values.
         */
-       tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (ZIPState));
+       tif->tif_data = (uint8*) _TIFFmalloc(sizeof (ZIPState));
        if (tif->tif_data == NULL)
                goto bad;
        sp = ZState(tif);
@@ -335,10 +420,8 @@ TIFFInitZIP(TIFF* tif, int scheme)
        sp->stream.data_type = Z_BINARY;
 
        /*
-        * Merge codec-specific tag information and
-        * override parent get/set field methods.
+        * Override parent get/set field methods.
         */
-       _TIFFMergeFieldInfo(tif, zipFieldInfo, TIFFArrayCount(zipFieldInfo));
        sp->vgetparent = tif->tif_tagmethods.vgetfield;
        tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */
        sp->vsetparent = tif->tif_tagmethods.vsetfield;
@@ -351,11 +434,12 @@ TIFFInitZIP(TIFF* tif, int scheme)
        /*
         * Install codec methods.
         */
+       tif->tif_fixuptags = ZIPFixupTags; 
        tif->tif_setupdecode = ZIPSetupDecode;
        tif->tif_predecode = ZIPPreDecode;
        tif->tif_decoderow = ZIPDecode;
        tif->tif_decodestrip = ZIPDecode;
-       tif->tif_decodetile = ZIPDecode;
+       tif->tif_decodetile = ZIPDecode;  
        tif->tif_setupencode = ZIPSetupEncode;
        tif->tif_preencode = ZIPPreEncode;
        tif->tif_postencode = ZIPPostEncode;
@@ -369,10 +453,17 @@ TIFFInitZIP(TIFF* tif, int scheme)
        (void) TIFFPredictorInit(tif);
        return (1);
 bad:
-       TIFFErrorExt(tif->tif_clientdata, "TIFFInitZIP",
+       TIFFErrorExt(tif->tif_clientdata, module,
                     "No space for ZIP state block");
        return (0);
 }
 #endif /* ZIP_SUPORT */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 5a8a7dce412d7635b7b5f52f7fe76849aed15220..8f8b10de2c448d09461c01b6e42078e70824b0c5 100644 (file)
  *    Suite 200
  *    Seattle, WA  98104
  *    206-622-5500
- *    
+ *
  *    (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf)
  *
- * For Big TIFF design notes see the following link
- *    http://gdal.maptools.org/twiki/bin/view/libtiff/BigTIFFDesign
+ * For BigTIFF design notes see the following links
+ *    http://www.remotesensing.org/libtiff/bigtiffdesign.html
+ *    http://www.awaresystems.be/imaging/tiff/bigtiff.html
  */
-#define        TIFF_VERSION            42
-#define TIFF_BIGTIFF_VERSION    43
 
-#define        TIFF_BIGENDIAN          0x4d4d
-#define        TIFF_LITTLEENDIAN       0x4949
-#define        MDI_LITTLEENDIAN        0x5045
-#define        MDI_BIGENDIAN           0x4550
+#define TIFF_VERSION_CLASSIC 42
+#define TIFF_VERSION_BIG 43
+
+#define TIFF_BIGENDIAN      0x4d4d
+#define TIFF_LITTLEENDIAN   0x4949
+#define MDI_LITTLEENDIAN    0x5045
+#define MDI_BIGENDIAN       0x4550
+
 /*
  * Intrinsic data types required by the file format:
  *
- * 8-bit quantities    int8/uint8
- * 16-bit quantities   int16/uint16
- * 32-bit quantities   int32/uint32
- * strings             unsigned char*
+ * 8-bit quantities     int8/uint8
+ * 16-bit quantities    int16/uint16
+ * 32-bit quantities    int32/uint32
+ * 64-bit quantities    int64/uint64
+ * strings              unsigned char*
  */
 
-#ifndef HAVE_INT8
-typedef        signed char int8;       /* NB: non-ANSI compilers may not grok */
-#endif
-typedef        unsigned char uint8;
-#ifndef HAVE_INT16
-typedef        short int16;
-#endif
-typedef        unsigned short uint16;  /* sizeof (uint16) must == 2 */
-#if SIZEOF_INT == 4
-#ifndef HAVE_INT32
-typedef        int int32;
-#endif
-typedef        unsigned int uint32;    /* sizeof (uint32) must == 4 */
-#elif SIZEOF_LONG == 4
-#ifndef HAVE_INT32
-typedef        long int32;
-#endif
-typedef        unsigned long uint32;   /* sizeof (uint32) must == 4 */
-#endif
+typedef TIFF_INT8_T   int8;
+typedef TIFF_UINT8_T  uint8;
 
-/* For TIFFReassignTagToIgnore */
-enum TIFFIgnoreSense /* IGNORE tag table */
-{
-       TIS_STORE,
-       TIS_EXTRACT,
-       TIS_EMPTY
-};
+typedef TIFF_INT16_T  int16;
+typedef TIFF_UINT16_T uint16;
+
+typedef TIFF_INT32_T  int32;
+typedef TIFF_UINT32_T uint32;
+
+typedef TIFF_INT64_T  int64;
+typedef TIFF_UINT64_T uint64;
 
 /*
- * TIFF header.
+ * Some types as promoted in a variable argument list
+ * We use uint16_vap rather then directly using int, because this way
+ * we document the type we actually want to pass through, conceptually,
+ * rather then confusing the issue by merely stating the type it gets
+ * promoted to
  */
-typedef        struct {
-       uint16  tiff_magic;     /* magic number (defines byte order) */
-#define TIFF_MAGIC_SIZE                2
-       uint16  tiff_version;   /* TIFF version number */
-#define TIFF_VERSION_SIZE      2
-       uint32  tiff_diroff;    /* byte offset to first directory */
-#define TIFF_DIROFFSET_SIZE    4
-} TIFFHeader;
 
+typedef int uint16_vap;
 
 /*
- * TIFF Image File Directories are comprised of a table of field
- * descriptors of the form shown below.  The table is sorted in
- * ascending order by tag.  The values associated with each entry are
- * disjoint and may appear anywhere in the file (so long as they are
- * placed on a word boundary).
- *
- * If the value is 4 bytes or less, then it is placed in the offset
- * field to save space.  If the value is less than 4 bytes, it is
- * left-justified in the offset field.
+ * TIFF header.
  */
-typedef        struct {
-       uint16          tdir_tag;       /* see below */
-       uint16          tdir_type;      /* data type; see below */
-       uint32          tdir_count;     /* number of items; length in spec */
-       uint32          tdir_offset;    /* byte offset to field data */
-} TIFFDirEntry;
+typedef struct {
+       uint16 tiff_magic;      /* magic number (defines byte order) */
+       uint16 tiff_version;    /* TIFF version number */
+} TIFFHeaderCommon;
+typedef struct {
+       uint16 tiff_magic;      /* magic number (defines byte order) */
+       uint16 tiff_version;    /* TIFF version number */
+       uint32 tiff_diroff;     /* byte offset to first directory */
+} TIFFHeaderClassic;
+typedef struct {
+       uint16 tiff_magic;      /* magic number (defines byte order) */
+       uint16 tiff_version;    /* TIFF version number */
+       uint16 tiff_offsetsize; /* size of offsets, should be 8 */
+       uint16 tiff_unused;     /* unused word, should be 0 */
+       uint64 tiff_diroff;     /* byte offset to first directory */
+} TIFFHeaderBig;
+
 
 /*
  * NB: In the comments below,
@@ -138,21 +126,24 @@ typedef   struct {
  *
  * Note: RATIONALs are the ratio of two 32-bit integer values.
  */
-typedef        enum {
-       TIFF_NOTYPE     = 0,    /* placeholder */
-       TIFF_BYTE       = 1,    /* 8-bit unsigned integer */
-       TIFF_ASCII      = 2,    /* 8-bit bytes w/ last byte null */
-       TIFF_SHORT      = 3,    /* 16-bit unsigned integer */
-       TIFF_LONG       = 4,    /* 32-bit unsigned integer */
-       TIFF_RATIONAL   = 5,    /* 64-bit unsigned fraction */
-       TIFF_SBYTE      = 6,    /* !8-bit signed integer */
-       TIFF_UNDEFINED  = 7,    /* !8-bit untyped data */
-       TIFF_SSHORT     = 8,    /* !16-bit signed integer */
-       TIFF_SLONG      = 9,    /* !32-bit signed integer */
-       TIFF_SRATIONAL  = 10,   /* !64-bit signed fraction */
-       TIFF_FLOAT      = 11,   /* !32-bit IEEE floating point */
-       TIFF_DOUBLE     = 12,   /* !64-bit IEEE floating point */
-       TIFF_IFD        = 13    /* %32-bit unsigned integer (offset) */
+typedef enum {
+       TIFF_NOTYPE = 0,      /* placeholder */
+       TIFF_BYTE = 1,        /* 8-bit unsigned integer */
+       TIFF_ASCII = 2,       /* 8-bit bytes w/ last byte null */
+       TIFF_SHORT = 3,       /* 16-bit unsigned integer */
+       TIFF_LONG = 4,        /* 32-bit unsigned integer */
+       TIFF_RATIONAL = 5,    /* 64-bit unsigned fraction */
+       TIFF_SBYTE = 6,       /* !8-bit signed integer */
+       TIFF_UNDEFINED = 7,   /* !8-bit untyped data */
+       TIFF_SSHORT = 8,      /* !16-bit signed integer */
+       TIFF_SLONG = 9,       /* !32-bit signed integer */
+       TIFF_SRATIONAL = 10,  /* !64-bit signed fraction */
+       TIFF_FLOAT = 11,      /* !32-bit IEEE floating point */
+       TIFF_DOUBLE = 12,     /* !64-bit IEEE floating point */
+       TIFF_IFD = 13,        /* %32-bit unsigned integer (offset) */
+       TIFF_LONG8 = 16,      /* BigTIFF 64-bit unsigned integer */
+       TIFF_SLONG8 = 17,     /* BigTIFF 64-bit signed integer */
+       TIFF_IFD8 = 18        /* BigTIFF 64-bit unsigned integer (offset) */
 } TIFFDataType;
 
 /*
@@ -179,6 +170,8 @@ typedef     enum {
 #define            COMPRESSION_LZW             5       /* Lempel-Ziv  & Welch */
 #define            COMPRESSION_OJPEG           6       /* !6.0 JPEG */
 #define            COMPRESSION_JPEG            7       /* %JPEG DCT compression */
+#define     COMPRESSION_T85                    9       /* !TIFF/FX T.85 JBIG compression */
+#define     COMPRESSION_T43                    10      /* !TIFF/FX T.43 colour by layered JBIG compression */
 #define            COMPRESSION_NEXT            32766   /* NeXT 2-bit RLE */
 #define            COMPRESSION_CCITTRLEW       32771   /* #1 w/ word alignment */
 #define            COMPRESSION_PACKBITS        32773   /* Macintosh RLE */
@@ -200,6 +193,7 @@ typedef     enum {
 #define     COMPRESSION_SGILOG         34676   /* SGI Log Luminance RLE */
 #define     COMPRESSION_SGILOG24       34677   /* SGI Log 24-bit packed */
 #define     COMPRESSION_JP2000          34712   /* Leadtools JPEG2000 */
+#define            COMPRESSION_LZMA            34925   /* LZMA2 */
 #define        TIFFTAG_PHOTOMETRIC             262     /* photometric interpretation */
 #define            PHOTOMETRIC_MINISWHITE      0       /* min value is white */
 #define            PHOTOMETRIC_MINISBLACK      1       /* min value is black */
@@ -331,6 +325,30 @@ typedef    enum {
                                                   [Adobe TIFF Technote 3] */
 #define        TIFFTAG_JPEGTABLES              347     /* %JPEG table stream */
 #define        TIFFTAG_OPIPROXY                351     /* %OPI Proxy [Adobe TIFF technote] */
+/* Tags 400-435 are from the TIFF/FX spec */
+#define TIFFTAG_GLOBALPARAMETERSIFD    400     /* ! */
+#define TIFFTAG_PROFILETYPE                    401     /* ! */
+#define     PROFILETYPE_UNSPECIFIED    0       /* ! */
+#define     PROFILETYPE_G3_FAX         1       /* ! */
+#define TIFFTAG_FAXPROFILE                     402     /* ! */
+#define     FAXPROFILE_S                       1       /* !TIFF/FX FAX profile S */
+#define     FAXPROFILE_F                       2       /* !TIFF/FX FAX profile F */
+#define     FAXPROFILE_J                       3       /* !TIFF/FX FAX profile J */
+#define     FAXPROFILE_C                       4       /* !TIFF/FX FAX profile C */
+#define     FAXPROFILE_L                       5       /* !TIFF/FX FAX profile L */
+#define     FAXPROFILE_M                       6       /* !TIFF/FX FAX profile LM */
+#define TIFFTAG_CODINGMETHODS          403     /* !TIFF/FX coding methods */
+#define     CODINGMETHODS_T4_1D                (1 << 1)        /* !T.4 1D */
+#define     CODINGMETHODS_T4_2D                (1 << 2)        /* !T.4 2D */
+#define     CODINGMETHODS_T6           (1 << 3)        /* !T.6 */
+#define     CODINGMETHODS_T85          (1 << 4)        /* !T.85 JBIG */
+#define     CODINGMETHODS_T42          (1 << 5)        /* !T.42 JPEG */
+#define     CODINGMETHODS_T43          (1 << 6)        /* !T.43 colour by layered JBIG */
+#define TIFFTAG_VERSIONYEAR                    404     /* !TIFF/FX version year */
+#define TIFFTAG_MODENUMBER                     405     /* !TIFF/FX mode number */
+#define TIFFTAG_DECODE                         433     /* !TIFF/FX decode */
+#define TIFFTAG_IMAGEBASECOLOR         434     /* !TIFF/FX image base colour */
+#define TIFFTAG_T82OPTIONS                     435     /* !TIFF/FX T.82 options */
 /*
  * Tags 512-521 are obsoleted by Technical Note #2 which specifies a
  * revised JPEG-in-TIFF scheme.
@@ -352,6 +370,7 @@ typedef     enum {
 #define            YCBCRPOSITION_CENTERED      1       /* !as in PostScript Level 2 */
 #define            YCBCRPOSITION_COSITED       2       /* !as in CCIR 601-1 */
 #define        TIFFTAG_REFERENCEBLACKWHITE     532     /* !colorimetry info */
+#define TIFFTAG_STRIPROWCOUNTS         559 /* !TIFF/FX strip row counts */
 #define        TIFFTAG_XMLPACKET               700     /* %XML packet
                                                   [Adobe XMP Specification,
                                                   January 2004 */
@@ -418,6 +437,7 @@ typedef     enum {
 #define TIFFTAG_EXIFIFD                        34665   /* Pointer to EXIF private directory */
 /* tag 34750 is a private tag registered to Adobe? */
 #define TIFFTAG_ICCPROFILE             34675   /* ICC profile data */
+#define TIFFTAG_IMAGELAYER             34732   /* !TIFF/FX image layer information */
 /* tag 34750 is a private tag registered to Pixel Magic */
 #define        TIFFTAG_JBIGOPTIONS             34750   /* JBIG options */
 #define TIFFTAG_GPSIFD                 34853   /* Pointer to GPS private directory */
@@ -580,6 +600,10 @@ typedef    enum {
 #define TIFFTAG_SGILOGENCODE           65561 /* SGILog data encoding control*/
 #define     SGILOGENCODE_NODITHER      0     /* do not dither encoded values*/
 #define     SGILOGENCODE_RANDITHER     1     /* randomly dither encd values */
+#define        TIFFTAG_LZMAPRESET              65562   /* LZMA2 preset (compression level) */
+#define TIFFTAG_PERSAMPLE       65563  /* interface for per sample tags */
+#define     PERSAMPLE_MERGED        0  /* present as a single value */
+#define     PERSAMPLE_MULTI         1  /* present as multiple values */
 
 /*
  * EXIF tags
@@ -649,3 +673,10 @@ typedef    enum {
 #endif /* _TIFF_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tiffconf.h b/src/tiff/libtiff/tiffconf.h
deleted file mode 100644 (file)
index bf88938..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/* libtiff/tiffconf.h.  Generated by configure.  */
-/*
-  Configuration defines for installed libtiff.
-  This file maintained for backward compatibility. Do not use definitions
-  from this file in your programs.
-*/
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-/* Define to 1 if the system has the type `int16'. */
-/* #undef HAVE_INT16 */
-
-/* Define to 1 if the system has the type `int32'. */
-/* #undef HAVE_INT32 */
-
-/* Define to 1 if the system has the type `int8'. */
-/* #undef HAVE_INT8 */
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
-   machine */
-#define HAVE_IEEEFP 1
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
-   (Intel) */
-#define HOST_BIGENDIAN 0
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Support JPEG compression (requires IJG JPEG library) */
-#define JPEG_SUPPORT 1
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
-   fails with unpatched IJG JPEG library) */
-/* #undef OJPEG_SUPPORT */
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#define PIXARLOG_SUPPORT 1
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Support Deflate compression */
-#define ZIP_SUPPORT 1
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
-   images to mutiple strips of ~8Kb to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
-   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
-   packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
-   lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/* Support MS MDI magic number files as TIFF */
-#define MDI_SUPPORT 1
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
index 1b266e8db7b8d7e3905afa44f1438ff5b6d75610..6da9c5a654c438a689f5317b647633b7f74abe8a 100644 (file)
@@ -7,6 +7,36 @@
 #ifndef _TIFFCONF_
 #define _TIFFCONF_
 
+/* Signed 16-bit type */
+#undef TIFF_INT16_T
+
+/* Signed 32-bit type */
+#undef TIFF_INT32_T
+
+/* Signed 64-bit type */
+#undef TIFF_INT64_T
+
+/* Signed 8-bit type */
+#undef TIFF_INT8_T
+
+/* Unsigned 16-bit type */
+#undef TIFF_UINT16_T
+
+/* Unsigned 32-bit type */
+#undef TIFF_UINT32_T
+
+/* Unsigned 64-bit type */
+#undef TIFF_UINT64_T
+
+/* Unsigned 8-bit type */
+#undef TIFF_UINT8_T
+
+/* Signed size type */
+#undef TIFF_SSIZE_T
+
+/* Pointer difference type */
+#undef TIFF_PTRDIFF_T
+
 /* Define to 1 if the system has the type `int16'. */
 #undef HAVE_INT16
 
 /* Define to 1 if the system has the type `int8'. */
 #undef HAVE_INT8
 
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
 /* Compatibility stuff. */
 
 /* Define as 0 or 1 according to the floating point format suported by the
@@ -41,6 +65,9 @@
 /* Support JPEG compression (requires IJG JPEG library) */
 #undef JPEG_SUPPORT
 
+/* Support JBIG compression (requires JBIG-KIT library) */
+#undef JBIG_SUPPORT
+
 /* Support LogLuv high dynamic range encoding */
 #undef LOGLUV_SUPPORT
 
diff --git a/src/tiff/libtiff/tiffconf.h.vc b/src/tiff/libtiff/tiffconf.h.vc
deleted file mode 100644 (file)
index 6de39de..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*\r
-  Configuration defines for installed libtiff.\r
-  This file maintained for backward compatibility. Do not use definitions\r
-  from this file in your programs.\r
-*/\r
-\r
-#ifndef _TIFFCONF_\r
-#define _TIFFCONF_\r
-\r
-/* Define to 1 if the system has the type `int16'. */\r
-/* #undef HAVE_INT16 */\r
-\r
-/* Define to 1 if the system has the type `int32'. */\r
-/* #undef HAVE_INT32 */\r
-\r
-/* Define to 1 if the system has the type `int8'. */\r
-/* #undef HAVE_INT8 */\r
-\r
-/* The size of a `int', as computed by sizeof. */\r
-#define SIZEOF_INT 4\r
-\r
-/* The size of a `long', as computed by sizeof. */\r
-#define SIZEOF_LONG 4\r
-\r
-/* Compatibility stuff. */\r
-\r
-/* Define as 0 or 1 according to the floating point format suported by the\r
-   machine */\r
-#define HAVE_IEEEFP 1\r
-\r
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */\r
-#define HOST_FILLORDER FILLORDER_LSB2MSB\r
-\r
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian\r
-   (Intel) */\r
-#define HOST_BIGENDIAN 0\r
-\r
-/* Support CCITT Group 3 & 4 algorithms */\r
-#define CCITT_SUPPORT 1\r
-\r
-/* Support JPEG compression (requires IJG JPEG library) */\r
-/* #undef JPEG_SUPPORT */\r
-\r
-/* Support LogLuv high dynamic range encoding */\r
-#define LOGLUV_SUPPORT 1\r
-\r
-/* Support LZW algorithm */\r
-#define LZW_SUPPORT 1\r
-\r
-/* Support NeXT 2-bit RLE algorithm */\r
-#define NEXT_SUPPORT 1\r
-\r
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation\r
-   fails with unpatched IJG JPEG library) */\r
-/* #undef OJPEG_SUPPORT */\r
-\r
-/* Support Macintosh PackBits algorithm */\r
-#define PACKBITS_SUPPORT 1\r
-\r
-/* Support Pixar log-format algorithm (requires Zlib) */\r
-/* #undef PIXARLOG_SUPPORT */\r
-\r
-/* Support ThunderScan 4-bit RLE algorithm */\r
-#define THUNDER_SUPPORT 1\r
-\r
-/* Support Deflate compression */\r
-/* #undef ZIP_SUPPORT */\r
-\r
-/* Support strip chopping (whether or not to convert single-strip uncompressed\r
-   images to mutiple strips of ~8Kb to reduce memory usage) */\r
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP\r
-\r
-/* Enable SubIFD tag (330) support */\r
-#define SUBIFD_SUPPORT 1\r
-\r
-/* Treat extra sample as alpha (default enabled). The RGBA interface will\r
-   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many\r
-   packages produce RGBA files but don't mark the alpha properly. */\r
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1\r
-\r
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files\r
-   lacking the tag (default enabled). */\r
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1\r
-\r
-/*\r
- * Feature support definitions.\r
- * XXX: These macros are obsoleted. Don't use them in your apps!\r
- * Macros stays here for backward compatibility and should be always defined.\r
- */\r
-#define COLORIMETRY_SUPPORT\r
-#define YCBCR_SUPPORT\r
-#define CMYK_SUPPORT\r
-#define ICC_SUPPORT\r
-#define PHOTOSHOP_SUPPORT\r
-#define IPTC_SUPPORT\r
-\r
-#endif /* _TIFFCONF_ */\r
diff --git a/src/tiff/libtiff/tiffconf.vc.h b/src/tiff/libtiff/tiffconf.vc.h
new file mode 100644 (file)
index 0000000..4ea897e
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+  Configuration defines for installed libtiff.
+  This file maintained for backward compatibility. Do not use definitions
+  from this file in your programs.
+*/
+
+#ifndef _TIFFCONF_
+#define _TIFFCONF_
+
+/* Define to 1 if the system has the type `int16'. */
+/* #undef HAVE_INT16 */
+
+/* Define to 1 if the system has the type `int32'. */
+/* #undef HAVE_INT32 */
+
+/* Define to 1 if the system has the type `int8'. */
+/* #undef HAVE_INT8 */
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* Signed 8-bit type */
+#define TIFF_INT8_T signed char
+
+/* Unsigned 8-bit type */
+#define TIFF_UINT8_T unsigned char
+
+/* Signed 16-bit type */
+#define TIFF_INT16_T signed short
+
+/* Unsigned 16-bit type */
+#define TIFF_UINT16_T unsigned short
+
+/* Signed 32-bit type formatter */
+#define TIFF_INT32_FORMAT "%d"
+
+/* Signed 32-bit type */
+#define TIFF_INT32_T signed int
+
+/* Unsigned 32-bit type formatter */
+#define TIFF_UINT32_FORMAT "%u"
+
+/* Unsigned 32-bit type */
+#define TIFF_UINT32_T unsigned int
+
+/* Signed 64-bit type formatter */
+#define TIFF_INT64_FORMAT "%I64d"
+
+/* Signed 64-bit type */
+#define TIFF_INT64_T signed __int64
+
+/* Unsigned 64-bit type formatter */
+#define TIFF_UINT64_FORMAT "%I64u"
+
+/* Unsigned 64-bit type */
+#define TIFF_UINT64_T unsigned __int64
+
+/* Signed size type */
+#if defined(_WIN64)
+#define TIFF_SSIZE_T signed __int64
+#else
+#define TIFF_SSIZE_T signed int
+#endif
+
+/* Signed size type formatter */
+#if defined(_WIN64)
+#define TIFF_SSIZE_FORMAT "%I64d"
+#else
+#define TIFF_SSIZE_FORMAT "%ld"
+#endif
+
+/* Pointer difference type */
+#define TIFF_PTRDIFF_T long
+
+/* Compatibility stuff. */
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+#define HAVE_IEEEFP 1
+
+/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
+   (Intel) */
+#define HOST_BIGENDIAN 0
+
+/* Support CCITT Group 3 & 4 algorithms */
+#define CCITT_SUPPORT 1
+
+/* Support JPEG compression (requires IJG JPEG library) */
+#define JPEG_SUPPORT 1
+
+/* Support LogLuv high dynamic range encoding */
+#define LOGLUV_SUPPORT 1
+
+/* Support LZW algorithm */
+#define LZW_SUPPORT 1
+
+/* Support NeXT 2-bit RLE algorithm */
+#define NEXT_SUPPORT 1
+
+/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
+   fails with unpatched IJG JPEG library) */
+/* #undef OJPEG_SUPPORT */
+
+/* Support Macintosh PackBits algorithm */
+#define PACKBITS_SUPPORT 1
+
+/* Support Pixar log-format algorithm (requires Zlib) */
+#define PIXARLOG_SUPPORT 1
+
+/* Support ThunderScan 4-bit RLE algorithm */
+#define THUNDER_SUPPORT 1
+
+/* Support Deflate compression */
+#define ZIP_SUPPORT 1
+
+/* Support strip chopping (whether or not to convert single-strip uncompressed
+   images to mutiple strips of ~8Kb to reduce memory usage) */
+#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
+
+/* Enable SubIFD tag (330) support */
+#define SUBIFD_SUPPORT 1
+
+/* Treat extra sample as alpha (default enabled). The RGBA interface will
+   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
+   packages produce RGBA files but don't mark the alpha properly. */
+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
+
+/* Pick up YCbCr subsampling info from the JPEG data stream to support files
+   lacking the tag (default enabled). */
+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
+
+/* Support MS MDI magic number files as TIFF */
+#define MDI_SUPPORT 1
+
+/*
+ * Feature support definitions.
+ * XXX: These macros are obsoleted. Don't use them in your apps!
+ * Macros stays here for backward compatibility and should be always defined.
+ */
+#define COLORIMETRY_SUPPORT
+#define YCBCR_SUPPORT
+#define CMYK_SUPPORT
+#define ICC_SUPPORT
+#define PHOTOSHOP_SUPPORT
+#define IPTC_SUPPORT
+
+#endif /* _TIFFCONF_ */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/libtiff/tiffconf.wince.h b/src/tiff/libtiff/tiffconf.wince.h
new file mode 100644 (file)
index 0000000..07218fa
--- /dev/null
@@ -0,0 +1,121 @@
+/* $Id$ */
+
+/*
+ * Windows CE platform tiffconf.wince.h
+ * Created by Mateusz Loskot (mateusz@loskot.net)
+ *
+ * NOTE: Requires WCELIBCEX library with wceex_* functions,
+ * It's an extension to C library on Windows CE platform.
+ * For example, HAVE_STDIO_H definition indicates there are
+ * following files available:
+ * stdio.h - from Windows CE / Windows Mobile SDK 
+ * wce_stdio.h - from WCELIBCEX library
+ */
+
+
+/*
+  Configuration defines for installed libtiff.
+  This file maintained for backward compatibility. Do not use definitions
+  from this file in your programs.
+*/
+
+#ifndef _WIN32_WCE
+# error This version of tif_config.h header is dedicated for Windows CE platform!
+#endif
+
+
+#ifndef _TIFFCONF_
+#define _TIFFCONF_
+
+/* Define to 1 if the system has the type `int16'. */
+/* #undef HAVE_INT16 */
+
+/* Define to 1 if the system has the type `int32'. */
+/* #undef HAVE_INT32 */
+
+/* Define to 1 if the system has the type `int8'. */
+/* #undef HAVE_INT8 */
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* Compatibility stuff. */
+
+/* Define as 0 or 1 according to the floating point format suported by the
+   machine */
+#define HAVE_IEEEFP 1
+
+/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
+#define HOST_FILLORDER FILLORDER_LSB2MSB
+
+/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
+   (Intel) */
+#define HOST_BIGENDIAN 0
+
+/* Support CCITT Group 3 & 4 algorithms */
+#define CCITT_SUPPORT 1
+
+/* Support JPEG compression (requires IJG JPEG library) */
+/* #undef JPEG_SUPPORT */
+
+/* Support LogLuv high dynamic range encoding */
+#define LOGLUV_SUPPORT 1
+
+/* Support LZW algorithm */
+#define LZW_SUPPORT 1
+
+/* Support NeXT 2-bit RLE algorithm */
+#define NEXT_SUPPORT 1
+
+/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
+   fails with unpatched IJG JPEG library) */
+/* #undef OJPEG_SUPPORT */
+
+/* Support Macintosh PackBits algorithm */
+#define PACKBITS_SUPPORT 1
+
+/* Support Pixar log-format algorithm (requires Zlib) */
+/* #undef PIXARLOG_SUPPORT */
+
+/* Support ThunderScan 4-bit RLE algorithm */
+#define THUNDER_SUPPORT 1
+
+/* Support Deflate compression */
+/* #undef ZIP_SUPPORT */
+
+/* Support strip chopping (whether or not to convert single-strip uncompressed
+   images to mutiple strips of ~8Kb to reduce memory usage) */
+#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
+
+/* Enable SubIFD tag (330) support */
+#define SUBIFD_SUPPORT 1
+
+/* Treat extra sample as alpha (default enabled). The RGBA interface will
+   treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
+   packages produce RGBA files but don't mark the alpha properly. */
+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
+
+/* Pick up YCbCr subsampling info from the JPEG data stream to support files
+   lacking the tag (default enabled). */
+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
+
+/*
+ * Feature support definitions.
+ * XXX: These macros are obsoleted. Don't use them in your apps!
+ * Macros stays here for backward compatibility and should be always defined.
+ */
+#define COLORIMETRY_SUPPORT
+#define YCBCR_SUPPORT
+#define CMYK_SUPPORT
+#define ICC_SUPPORT
+#define PHOTOSHOP_SUPPORT
+#define IPTC_SUPPORT
+
+#endif /* _TIFFCONF_ */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index ced1eaf2c426d85a55a43fefd692ac07930db29b..67cf0c092fe49d8e8c0d26152a79ac01b818b230 100644 (file)
@@ -4,18 +4,18 @@
  * Copyright (c) 1988-1997 Sam Leffler
  * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  *
- * Permission to use, copy, modify, distribute, and sell this software and 
+ * Permission to use, copy, modify, distribute, and sell this software and
  * its documentation for any purpose is hereby granted without fee, provided
  * that (i) the above copyright notices and this permission notice appear in
  * all copies of the software and related documentation, and (ii) the names of
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
@@ -37,7 +37,7 @@
  * TIFF is defined as an incomplete type to hide the
  * library's internal data structures from clients.
  */
-typedef        struct tiff TIFF;
+typedef struct tiff TIFF;
 
 /*
  * The following typedefs define the intrinsic size of
@@ -55,17 +55,27 @@ typedef     struct tiff TIFF;
  * NB: tsize_t is int32 and not uint32 because some functions
  *     return -1.
  * NB: toff_t is not off_t for many reasons; TIFFs max out at
- *     32-bit file offsets being the most important, and to ensure
- *     that it is unsigned, rather than signed.
+ *     32-bit file offsets, and BigTIFF maxes out at 64-bit
+ *     offsets being the most important, and to ensure use of
+ *     a consistently unsigned type across architectures.
+ *     Prior to libtiff 4.0, this was an unsigned 32 bit type.
+ */
+/*
+ * this is the machine addressing size type, only it's signed, so make it
+ * int32 on 32bit machines, int64 on 64bit machines
  */
-typedef        uint32 ttag_t;          /* directory tag */
-typedef        uint16 tdir_t;          /* directory index */
-typedef        uint16 tsample_t;       /* sample number */
-typedef        uint32 tstrip_t;        /* strip number */
-typedef uint32 ttile_t;                /* tile number */
-typedef        int32 tsize_t;          /* i/o size in bytes */
-typedef        void* tdata_t;          /* image data ref */
-typedef        uint32 toff_t;          /* file offset */
+typedef TIFF_SSIZE_T tmsize_t;
+typedef uint64 toff_t;          /* file offset */
+/* the following are deprecated and should be replaced by their defining
+   counterparts */
+typedef uint32 ttag_t;          /* directory tag */
+typedef uint16 tdir_t;          /* directory index */
+typedef uint16 tsample_t;       /* sample number */
+typedef uint32 tstrile_t;       /* strip or tile number */
+typedef tstrile_t tstrip_t;     /* strip number */
+typedef tstrile_t ttile_t;      /* tile number */
+typedef tmsize_t tsize_t;       /* i/o size in bytes */
+typedef void* tdata_t;          /* image data ref */
 
 #if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32))
 #define __WIN32__
@@ -88,31 +98,27 @@ typedef     uint32 toff_t;          /* file offset */
 # define VC_EXTRALEAN
 # include <windows.h>
 # ifdef __WIN32__
-DECLARE_HANDLE(thandle_t);     /* Win32 file handle */
+DECLARE_HANDLE(thandle_t);     /* Win32 file handle */
 # else
-typedef        HFILE thandle_t;        /* client data handle */
+typedef HFILE thandle_t;       /* client data handle */
 # endif /* __WIN32__ */
 #else
-typedef        void* thandle_t;        /* client data handle */
+typedef void* thandle_t;       /* client data handle */
 #endif /* USE_WIN32_FILEIO */
 
-#ifndef NULL
-# define NULL  (void *)0
-#endif
-
 /*
  * Flags to pass to TIFFPrintDirectory to control
  * printing of data structures that are potentially
  * very large.   Bit-or these flags to enable printing
  * multiple items.
  */
-#define        TIFFPRINT_NONE          0x0             /* no extra info */
-#define        TIFFPRINT_STRIPS        0x1             /* strips/tiles info */
-#define        TIFFPRINT_CURVES        0x2             /* color/gray response curves */
-#define        TIFFPRINT_COLORMAP      0x4             /* colormap */
-#define        TIFFPRINT_JPEGQTABLES   0x100           /* JPEG Q matrices */
-#define        TIFFPRINT_JPEGACTABLES  0x200           /* JPEG AC tables */
-#define        TIFFPRINT_JPEGDCTABLES  0x200           /* JPEG DC tables */
+#define TIFFPRINT_NONE        0x0    /* no extra info */
+#define TIFFPRINT_STRIPS       0x1    /* strips/tiles info */
+#define TIFFPRINT_CURVES       0x2    /* color/gray response curves */
+#define TIFFPRINT_COLORMAP     0x4    /* colormap */
+#define TIFFPRINT_JPEGQTABLES  0x100  /* JPEG Q matrices */
+#define TIFFPRINT_JPEGACTABLES 0x200  /* JPEG AC tables */
+#define TIFFPRINT_JPEGDCTABLES 0x200  /* JPEG DC tables */
 
 /* 
  * Colour conversion stuff
@@ -129,42 +135,42 @@ typedef   void* thandle_t;        /* client data handle */
 
 /* Structure for holding information about a display device. */
 
-typedef        unsigned char TIFFRGBValue;             /* 8-bit samples */
+typedef unsigned char TIFFRGBValue;               /* 8-bit samples */
 
 typedef struct {
-       float d_mat[3][3];              /* XYZ -> luminance matrix */
-       float d_YCR;                    /* Light o/p for reference white */
+       float d_mat[3][3];                        /* XYZ -> luminance matrix */
+       float d_YCR;                              /* Light o/p for reference white */
        float d_YCG;
        float d_YCB;
-       uint32 d_Vrwr;                  /* Pixel values for ref. white */
+       uint32 d_Vrwr;                            /* Pixel values for ref. white */
        uint32 d_Vrwg;
        uint32 d_Vrwb;
-       float d_Y0R;                    /* Residual light for black pixel */
+       float d_Y0R;                              /* Residual light for black pixel */
        float d_Y0G;
        float d_Y0B;
-       float d_gammaR;                 /* Gamma values for the three guns */
+       float d_gammaR;                           /* Gamma values for the three guns */
        float d_gammaG;
        float d_gammaB;
 } TIFFDisplay;
 
-typedef struct {                               /* YCbCr->RGB support */
-       TIFFRGBValue* clamptab;                 /* range clamping table */
-       int*    Cr_r_tab;
-       int*    Cb_b_tab;
-       int32*  Cr_g_tab;
-       int32*  Cb_g_tab;
-        int32*  Y_tab;
+typedef struct {                                  /* YCbCr->RGB support */
+       TIFFRGBValue* clamptab;                   /* range clamping table */
+       int* Cr_r_tab;
+       int* Cb_b_tab;
+       int32* Cr_g_tab;
+       int32* Cb_g_tab;
+       int32* Y_tab;
 } TIFFYCbCrToRGB;
 
-typedef struct {                               /* CIE Lab 1976->RGB support */
-       int     range;                          /* Size of conversion table */
+typedef struct {                                  /* CIE Lab 1976->RGB support */
+       int range;                                /* Size of conversion table */
 #define CIELABTORGB_TABLE_RANGE 1500
-       float   rstep, gstep, bstep;
-       float   X0, Y0, Z0;                     /* Reference white point */
+       float rstep, gstep, bstep;
+       float X0, Y0, Z0;                         /* Reference white point */
        TIFFDisplay display;
-       float   Yr2r[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yr to r */
-       float   Yg2g[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yg to g */
-       float   Yb2b[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yb to b */
+       float Yr2r[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yr to r */
+       float Yg2g[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yg to g */
+       float Yb2b[CIELABTORGB_TABLE_RANGE + 1];  /* Conversion of Yb to b */
 } TIFFCIELabToRGB;
 
 /*
@@ -191,45 +197,49 @@ typedef void (*tileSeparateRoutine)
  * RGBA-reader state.
  */
 struct _TIFFRGBAImage {
-       TIFF*   tif;                            /* image handle */
-       int     stoponerr;                      /* stop on read error */
-       int     isContig;                       /* data is packed/separate */
-       int     alpha;                          /* type of alpha data present */
-       uint32  width;                          /* image width */
-       uint32  height;                         /* image height */
-       uint16  bitspersample;                  /* image bits/sample */
-       uint16  samplesperpixel;                /* image samples/pixel */
-       uint16  orientation;                    /* image orientation */
-       uint16  req_orientation;                /* requested orientation */
-       uint16  photometric;                    /* image photometric interp */
-       uint16* redcmap;                        /* colormap pallete */
-       uint16* greencmap;
-       uint16* bluecmap;
-                                               /* get image data routine */
-       int     (*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
+       TIFF* tif;                              /* image handle */
+       int stoponerr;                          /* stop on read error */
+       int isContig;                           /* data is packed/separate */
+       int alpha;                              /* type of alpha data present */
+       uint32 width;                           /* image width */
+       uint32 height;                          /* image height */
+       uint16 bitspersample;                   /* image bits/sample */
+       uint16 samplesperpixel;                 /* image samples/pixel */
+       uint16 orientation;                     /* image orientation */
+       uint16 req_orientation;                 /* requested orientation */
+       uint16 photometric;                     /* image photometric interp */
+       uint16* redcmap;                        /* colormap pallete */
+       uint16* greencmap;
+       uint16* bluecmap;
+       /* get image data routine */
+       int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
+       /* put decoded strip/tile */
        union {
            void (*any)(TIFFRGBAImage*);
-           tileContigRoutine   contig;
-           tileSeparateRoutine separate;
-       } put;                                  /* put decoded strip/tile */
-       TIFFRGBValue* Map;                      /* sample mapping array */
-       uint32** BWmap;                         /* black&white map */
-       uint32** PALmap;                        /* palette image map */
-       TIFFYCbCrToRGB* ycbcr;                  /* YCbCr conversion state */
-        TIFFCIELabToRGB* cielab;               /* CIE L*a*b conversion state */
-
-        int    row_offset;
-        int     col_offset;
+           tileContigRoutine contig;
+           tileSeparateRoutine separate;
+       } put;
+       TIFFRGBValue* Map;                      /* sample mapping array */
+       uint32** BWmap;                         /* black&white map */
+       uint32** PALmap;                        /* palette image map */
+       TIFFYCbCrToRGB* ycbcr;                  /* YCbCr conversion state */
+       TIFFCIELabToRGB* cielab;                /* CIE L*a*b conversion state */
+
+       uint8* UaToAa;                          /* Unassociated alpha to associated alpha convertion LUT */
+       uint8* Bitdepth16To8;                   /* LUT for conversion from 16bit to 8bit values */
+
+       int row_offset;
+       int col_offset;
 };
 
 /*
  * Macros for extracting components from the
  * packed ABGR form returned by TIFFReadRGBAImage.
  */
-#define        TIFFGetR(abgr)  ((abgr) & 0xff)
-#define        TIFFGetG(abgr)  (((abgr) >> 8) & 0xff)
-#define        TIFFGetB(abgr)  (((abgr) >> 16) & 0xff)
-#define        TIFFGetA(abgr)  (((abgr) >> 24) & 0xff)
+#define TIFFGetR(abgr) ((abgr) & 0xff)
+#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)
+#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)
+#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)
 
 /*
  * A CODEC is a software package that implements decoding,
@@ -238,11 +248,11 @@ struct _TIFFRGBAImage {
  * More codecs may be registered through calls to the library
  * and/or the builtin implementations may be overridden.
  */
-typedef        int (*TIFFInitMethod)(TIFF*, int);
+typedef int (*TIFFInitMethod)(TIFF*, int);
 typedef struct {
-       char*           name;
-       uint16          scheme;
-       TIFFInitMethod  init;
+       char* name;
+       uint16 scheme;
+       TIFFInitMethod init;
 } TIFFCodec;
 
 #include <stdio.h>
@@ -250,262 +260,287 @@ typedef struct {
 
 /* share internal LogLuv conversion routines? */
 #ifndef LOGLUV_PUBLIC
-#define LOGLUV_PUBLIC          1
+#define LOGLUV_PUBLIC 1
+#endif
+
+#if !defined(__GNUC__) && !defined(__attribute__)
+#  define __attribute__(x) /*nothing*/
 #endif
 
 #if defined(c_plusplus) || defined(__cplusplus)
 extern "C" {
 #endif
-typedef        void (*TIFFErrorHandler)(const char*, const char*, va_list);
-typedef        void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list);
-typedef        tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
-typedef        toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
-typedef        int (*TIFFCloseProc)(thandle_t);
-typedef        toff_t (*TIFFSizeProc)(thandle_t);
-typedef        int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
-typedef        void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
-typedef        void (*TIFFExtendProc)(TIFF*); 
-
-extern const char* TIFFGetVersion(void);
-
-extern const TIFFCodec* TIFFFindCODEC(uint16);
-extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
-extern void TIFFUnRegisterCODEC(TIFFCodec*);
-extern  int TIFFIsCODECConfigured(uint16);
-extern TIFFCodec* TIFFGetConfiguredCODECs(void);
+typedef void (*TIFFErrorHandler)(const char*, const char*, va_list);
+typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list);
+typedef tmsize_t (*TIFFReadWriteProc)(thandle_t, void*, tmsize_t);
+typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
+typedef int (*TIFFCloseProc)(thandle_t);
+typedef toff_t (*TIFFSizeProc)(thandle_t);
+typedef int (*TIFFMapFileProc)(thandle_t, void** base, toff_t* size);
+typedef void (*TIFFUnmapFileProc)(thandle_t, void* base, toff_t size);
+typedef void (*TIFFExtendProc)(TIFF*);
+
+extern const char* TIFFGetVersion(void);
+
+extern const TIFFCodec* TIFFFindCODEC(uint16);
+extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
+extern void TIFFUnRegisterCODEC(TIFFCodec*);
+extern int TIFFIsCODECConfigured(uint16);
+extern TIFFCodec* TIFFGetConfiguredCODECs(void);
 
 /*
  * Auxiliary functions.
  */
 
-extern tdata_t _TIFFmalloc(tsize_t);
-extern tdata_t _TIFFrealloc(tdata_t, tsize_t);
-extern void _TIFFmemset(tdata_t, int, tsize_t);
-extern void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
-extern int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
-extern void _TIFFfree(tdata_t);
+extern void* _TIFFmalloc(tmsize_t s);
+extern void* _TIFFrealloc(void* p, tmsize_t s);
+extern void _TIFFmemset(void* p, int v, tmsize_t c);
+extern void _TIFFmemcpy(void* d, const void* s, tmsize_t c);
+extern int _TIFFmemcmp(const void* p1, const void* p2, tmsize_t c);
+extern void _TIFFfree(void* p);
 
 /*
 ** Stuff, related to tag handling and creating custom tags.
 */
-extern  int  TIFFGetTagListCount( TIFF * );
-extern  ttag_t TIFFGetTagListEntry( TIFF *, int tag_index );
+extern int TIFFGetTagListCount( TIFF * );
+extern uint32 TIFFGetTagListEntry( TIFF *, int tag_index );
     
-#define        TIFF_ANY        TIFF_NOTYPE     /* for field descriptor searching */
-#define        TIFF_VARIABLE   -1              /* marker for variable length tags */
-#define        TIFF_SPP        -2              /* marker for SamplesPerPixel tags */
-#define        TIFF_VARIABLE2  -3              /* marker for uint32 var-length tags */
+#define TIFF_ANY       TIFF_NOTYPE     /* for field descriptor searching */
+#define TIFF_VARIABLE  -1              /* marker for variable length tags */
+#define TIFF_SPP       -2              /* marker for SamplesPerPixel tags */
+#define TIFF_VARIABLE2 -3              /* marker for uint32 var-length tags */
 
-#define FIELD_CUSTOM    65    
+#define FIELD_CUSTOM    65
 
-typedef        struct {
-       ttag_t  field_tag;              /* field's tag */
-       short   field_readcount;        /* read count/TIFF_VARIABLE/TIFF_SPP */
-       short   field_writecount;       /* write count/TIFF_VARIABLE */
-       TIFFDataType field_type;        /* type of associated data */
-        unsigned short field_bit;      /* bit in fieldsset bit vector */
-       unsigned char field_oktochange; /* if true, can change while writing */
-       unsigned char field_passcount;  /* if true, pass dir count on set */
-       char    *field_name;            /* ASCII name */
-} TIFFFieldInfo;
+typedef struct _TIFFField TIFFField;
+typedef struct _TIFFFieldArray TIFFFieldArray;
+
+extern const TIFFField* TIFFFindField(TIFF *, uint32, TIFFDataType);
+extern const TIFFField* TIFFFieldWithTag(TIFF*, uint32);
+extern const TIFFField* TIFFFieldWithName(TIFF*, const char *);
+
+extern uint32 TIFFFieldTag(const TIFFField*);
+extern const char* TIFFFieldName(const TIFFField*);
+extern TIFFDataType TIFFFieldDataType(const TIFFField*);
+extern int TIFFFieldPassCount(const TIFFField*);
+extern int TIFFFieldReadCount(const TIFFField*);
+extern int TIFFFieldWriteCount(const TIFFField*);
+
+typedef int (*TIFFVSetMethod)(TIFF*, uint32, va_list);
+typedef int (*TIFFVGetMethod)(TIFF*, uint32, va_list);
+typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long);
 
-typedef struct _TIFFTagValue {
-    const TIFFFieldInfo  *info;
-    int             count;
-    void           *value;
-} TIFFTagValue;
-
-extern void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
-extern const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
-extern  const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *,
-                                                    TIFFDataType);
-extern const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t);
-extern const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *);
-
-typedef        int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list);
-typedef        int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list);
-typedef        void (*TIFFPrintMethod)(TIFF*, FILE*, long);
-    
 typedef struct {
-    TIFFVSetMethod     vsetfield;      /* tag set routine */
-    TIFFVGetMethod     vgetfield;      /* tag get routine */
-    TIFFPrintMethod    printdir;       /* directory print routine */
+    TIFFVSetMethod vsetfield; /* tag set routine */
+    TIFFVGetMethod vgetfield; /* tag get routine */
+    TIFFPrintMethod printdir; /* directory print routine */
 } TIFFTagMethods;
-        
-extern  TIFFTagMethods *TIFFAccessTagMethods( TIFF * );
-extern  void *TIFFGetClientInfo( TIFF *, const char * );
-extern  void TIFFSetClientInfo( TIFF *, void *, const char * );
-
-extern void TIFFCleanup(TIFF*);
-extern void TIFFClose(TIFF*);
-extern int TIFFFlush(TIFF*);
-extern int TIFFFlushData(TIFF*);
-extern int TIFFGetField(TIFF*, ttag_t, ...);
-extern int TIFFVGetField(TIFF*, ttag_t, va_list);
-extern int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
-extern int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
-extern int TIFFReadDirectory(TIFF*);
-extern int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[],
-                                   size_t);
-extern int TIFFReadEXIFDirectory(TIFF*, toff_t);
-extern tsize_t TIFFScanlineSize(TIFF*);
-extern tsize_t TIFFRasterScanlineSize(TIFF*);
-extern tsize_t TIFFStripSize(TIFF*);
-extern tsize_t TIFFRawStripSize(TIFF*, tstrip_t);
-extern tsize_t TIFFVStripSize(TIFF*, uint32);
-extern tsize_t TIFFTileRowSize(TIFF*);
-extern tsize_t TIFFTileSize(TIFF*);
-extern tsize_t TIFFVTileSize(TIFF*, uint32);
-extern uint32 TIFFDefaultStripSize(TIFF*, uint32);
-extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern int TIFFFileno(TIFF*);
-extern  int TIFFSetFileno(TIFF*, int);
-extern  thandle_t TIFFClientdata(TIFF*);
-extern  thandle_t TIFFSetClientdata(TIFF*, thandle_t);
-extern int TIFFGetMode(TIFF*);
-extern int TIFFSetMode(TIFF*, int);
-extern int TIFFIsTiled(TIFF*);
-extern int TIFFIsByteSwapped(TIFF*);
-extern int TIFFIsUpSampled(TIFF*);
-extern int TIFFIsMSB2LSB(TIFF*);
-extern int TIFFIsBigEndian(TIFF*);
-extern TIFFReadWriteProc TIFFGetReadProc(TIFF*);
-extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*);
-extern TIFFSeekProc TIFFGetSeekProc(TIFF*);
-extern TIFFCloseProc TIFFGetCloseProc(TIFF*);
-extern TIFFSizeProc TIFFGetSizeProc(TIFF*);
-extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*);
-extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*);
-extern uint32 TIFFCurrentRow(TIFF*);
-extern tdir_t TIFFCurrentDirectory(TIFF*);
-extern tdir_t TIFFNumberOfDirectories(TIFF*);
-extern uint32 TIFFCurrentDirOffset(TIFF*);
-extern tstrip_t TIFFCurrentStrip(TIFF*);
-extern ttile_t TIFFCurrentTile(TIFF*);
-extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
-extern int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
-extern int TIFFSetupStrips(TIFF *);
-extern  int TIFFWriteCheck(TIFF*, int, const char *);
-extern void TIFFFreeDirectory(TIFF*);
-extern  int TIFFCreateDirectory(TIFF*);
-extern int TIFFLastDirectory(TIFF*);
-extern int TIFFSetDirectory(TIFF*, tdir_t);
-extern int TIFFSetSubDirectory(TIFF*, uint32);
-extern int TIFFUnlinkDirectory(TIFF*, tdir_t);
-extern int TIFFSetField(TIFF*, ttag_t, ...);
-extern int TIFFVSetField(TIFF*, ttag_t, va_list);
-extern int TIFFWriteDirectory(TIFF *);
-extern int TIFFCheckpointDirectory(TIFF *);
-extern int TIFFRewriteDirectory(TIFF *);
-extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);
+
+extern  TIFFTagMethods *TIFFAccessTagMethods(TIFF *);
+extern  void *TIFFGetClientInfo(TIFF *, const char *);
+extern  void TIFFSetClientInfo(TIFF *, void *, const char *);
+
+extern void TIFFCleanup(TIFF* tif);
+extern void TIFFClose(TIFF* tif);
+extern int TIFFFlush(TIFF* tif);
+extern int TIFFFlushData(TIFF* tif);
+extern int TIFFGetField(TIFF* tif, uint32 tag, ...);
+extern int TIFFVGetField(TIFF* tif, uint32 tag, va_list ap);
+extern int TIFFGetFieldDefaulted(TIFF* tif, uint32 tag, ...);
+extern int TIFFVGetFieldDefaulted(TIFF* tif, uint32 tag, va_list ap);
+extern int TIFFReadDirectory(TIFF* tif);
+extern int TIFFReadCustomDirectory(TIFF* tif, toff_t diroff, const TIFFFieldArray* infoarray);
+extern int TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff);
+extern uint64 TIFFScanlineSize64(TIFF* tif);
+extern tmsize_t TIFFScanlineSize(TIFF* tif);
+extern uint64 TIFFRasterScanlineSize64(TIFF* tif);
+extern tmsize_t TIFFRasterScanlineSize(TIFF* tif);
+extern uint64 TIFFStripSize64(TIFF* tif);
+extern tmsize_t TIFFStripSize(TIFF* tif);
+extern uint64 TIFFRawStripSize64(TIFF* tif, uint32 strip);
+extern tmsize_t TIFFRawStripSize(TIFF* tif, uint32 strip);
+extern uint64 TIFFVStripSize64(TIFF* tif, uint32 nrows);
+extern tmsize_t TIFFVStripSize(TIFF* tif, uint32 nrows);
+extern uint64 TIFFTileRowSize64(TIFF* tif);
+extern tmsize_t TIFFTileRowSize(TIFF* tif);
+extern uint64 TIFFTileSize64(TIFF* tif);
+extern tmsize_t TIFFTileSize(TIFF* tif);
+extern uint64 TIFFVTileSize64(TIFF* tif, uint32 nrows);
+extern tmsize_t TIFFVTileSize(TIFF* tif, uint32 nrows);
+extern uint32 TIFFDefaultStripSize(TIFF* tif, uint32 request);
+extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
+extern int TIFFFileno(TIFF*);
+extern int TIFFSetFileno(TIFF*, int);
+extern thandle_t TIFFClientdata(TIFF*);
+extern thandle_t TIFFSetClientdata(TIFF*, thandle_t);
+extern int TIFFGetMode(TIFF*);
+extern int TIFFSetMode(TIFF*, int);
+extern int TIFFIsTiled(TIFF*);
+extern int TIFFIsByteSwapped(TIFF*);
+extern int TIFFIsUpSampled(TIFF*);
+extern int TIFFIsMSB2LSB(TIFF*);
+extern int TIFFIsBigEndian(TIFF*);
+extern TIFFReadWriteProc TIFFGetReadProc(TIFF*);
+extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*);
+extern TIFFSeekProc TIFFGetSeekProc(TIFF*);                                                          
+extern TIFFCloseProc TIFFGetCloseProc(TIFF*);
+extern TIFFSizeProc TIFFGetSizeProc(TIFF*);
+extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*);
+extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*);
+extern uint32 TIFFCurrentRow(TIFF*);
+extern uint16 TIFFCurrentDirectory(TIFF*);
+extern uint16 TIFFNumberOfDirectories(TIFF*);
+extern uint64 TIFFCurrentDirOffset(TIFF*);
+extern uint32 TIFFCurrentStrip(TIFF*);
+extern uint32 TIFFCurrentTile(TIFF* tif);
+extern int TIFFReadBufferSetup(TIFF* tif, void* bp, tmsize_t size);
+extern int TIFFWriteBufferSetup(TIFF* tif, void* bp, tmsize_t size);  
+extern int TIFFSetupStrips(TIFF *);
+extern int TIFFWriteCheck(TIFF*, int, const char *);
+extern void TIFFFreeDirectory(TIFF*);
+extern int TIFFCreateDirectory(TIFF*);
+extern int TIFFCreateCustomDirectory(TIFF*,const TIFFFieldArray*);
+extern int TIFFCreateEXIFDirectory(TIFF*);
+extern int TIFFLastDirectory(TIFF*);
+extern int TIFFSetDirectory(TIFF*, uint16);
+extern int TIFFSetSubDirectory(TIFF*, uint64);
+extern int TIFFUnlinkDirectory(TIFF*, uint16);
+extern int TIFFSetField(TIFF*, uint32, ...);
+extern int TIFFVSetField(TIFF*, uint32, va_list);
+extern int TIFFUnsetField(TIFF*, uint32);
+extern int TIFFWriteDirectory(TIFF *);
+extern int TIFFWriteCustomDirectory(TIFF *, uint64 *);
+extern int TIFFCheckpointDirectory(TIFF *);
+extern int TIFFRewriteDirectory(TIFF *);
 
 #if defined(c_plusplus) || defined(__cplusplus)
-extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
-                                     int = ORIENTATION_BOTLEFT, int = 0);
+extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
+extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0);
+extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample = 0);
+extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
+extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
+    int = ORIENTATION_BOTLEFT, int = 0);
 #else
-extern void TIFFPrintDirectory(TIFF*, FILE*, long);
-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
+extern void TIFFPrintDirectory(TIFF*, FILE*, long);
+extern int TIFFReadScanline(TIFF* tif, void* buf, uint32 row, uint16 sample);
+extern int TIFFWriteScanline(TIFF* tif, void* buf, uint32 row, uint16 sample);
+extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
+extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
 #endif
 
-extern int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
-extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
-extern int TIFFRGBAImageOK(TIFF*, char [1024]);
-extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
-extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
-extern void TIFFRGBAImageEnd(TIFFRGBAImage*);
-extern TIFF* TIFFOpen(const char*, const char*);
+extern int TIFFReadRGBAStrip(TIFF*, uint32, uint32 * );
+extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
+extern int TIFFRGBAImageOK(TIFF*, char [1024]);
+extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
+extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
+extern void TIFFRGBAImageEnd(TIFFRGBAImage*);
+extern TIFF* TIFFOpen(const char*, const char*);
 # ifdef __WIN32__
-extern TIFF* TIFFOpenW(const wchar_t*, const char*);
+extern TIFF* TIFFOpenW(const wchar_t*, const char*);
 # endif /* __WIN32__ */
-extern TIFF* TIFFFdOpen(int, const char*, const char*);
-extern TIFF* TIFFClientOpen(const char*, const char*,
+extern TIFF* TIFFFdOpen(int, const char*, const char*);
+extern TIFF* TIFFClientOpen(const char*, const char*,
            thandle_t,
            TIFFReadWriteProc, TIFFReadWriteProc,
            TIFFSeekProc, TIFFCloseProc,
            TIFFSizeProc,
            TIFFMapFileProc, TIFFUnmapFileProc);
-extern const char* TIFFFileName(TIFF*);
-extern const char* TIFFSetFileName(TIFF*, const char *);
-extern void TIFFError(const char*, const char*, ...);
-extern void TIFFErrorExt(thandle_t, const char*, const char*, ...);
-extern void TIFFWarning(const char*, const char*, ...);
-extern void TIFFWarningExt(thandle_t, const char*, const char*, ...);
-extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
-extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt);
-extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
-extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt);
-extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
-extern ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern ttile_t TIFFNumberOfTiles(TIFF*);
-extern tsize_t TIFFReadTile(TIFF*,
-           tdata_t, uint32, uint32, uint32, tsample_t);
-extern tsize_t TIFFWriteTile(TIFF*,
-           tdata_t, uint32, uint32, uint32, tsample_t);
-extern tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t);
-extern tstrip_t TIFFNumberOfStrips(TIFF*);
-extern tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern int TIFFDataWidth(TIFFDataType);    /* table of tag datatype widths */
-extern void TIFFSetWriteOffset(TIFF*, toff_t);
-extern void TIFFSwabShort(uint16*);
-extern void TIFFSwabLong(uint32*);
-extern void TIFFSwabDouble(double*);
-extern void TIFFSwabArrayOfShort(uint16*, unsigned long);
-extern void TIFFSwabArrayOfTriples(uint8*, unsigned long);
-extern void TIFFSwabArrayOfLong(uint32*, unsigned long);
-extern void TIFFSwabArrayOfDouble(double*, unsigned long);
-extern void TIFFReverseBits(unsigned char *, unsigned long);
-extern const unsigned char* TIFFGetBitRevTable(int);
+extern const char* TIFFFileName(TIFF*);
+extern const char* TIFFSetFileName(TIFF*, const char *);
+extern void TIFFError(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3)));
+extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4)));
+extern void TIFFWarning(const char*, const char*, ...) __attribute__((__format__ (__printf__,2,3)));
+extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((__format__ (__printf__,3,4)));
+extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
+extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt);
+extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
+extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt);
+extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
+extern uint32 TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s);
+extern int TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, uint16 s);
+extern uint32 TIFFNumberOfTiles(TIFF*);
+extern tmsize_t TIFFReadTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s);  
+extern tmsize_t TIFFWriteTile(TIFF* tif, void* buf, uint32 x, uint32 y, uint32 z, uint16 s);
+extern uint32 TIFFComputeStrip(TIFF*, uint32, uint16);
+extern uint32 TIFFNumberOfStrips(TIFF*);
+extern tmsize_t TIFFReadEncodedStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size);
+extern tmsize_t TIFFReadRawStrip(TIFF* tif, uint32 strip, void* buf, tmsize_t size);  
+extern tmsize_t TIFFReadEncodedTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size);  
+extern tmsize_t TIFFReadRawTile(TIFF* tif, uint32 tile, void* buf, tmsize_t size);  
+extern tmsize_t TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc);
+extern tmsize_t TIFFWriteRawStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc);  
+extern tmsize_t TIFFWriteEncodedTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc);  
+extern tmsize_t TIFFWriteRawTile(TIFF* tif, uint32 tile, void* data, tmsize_t cc);  
+extern int TIFFDataWidth(TIFFDataType);    /* table of tag datatype widths */
+extern void TIFFSetWriteOffset(TIFF* tif, toff_t off);
+extern void TIFFSwabShort(uint16*);
+extern void TIFFSwabLong(uint32*);
+extern void TIFFSwabLong8(uint64*);
+extern void TIFFSwabFloat(float*);
+extern void TIFFSwabDouble(double*);
+extern void TIFFSwabArrayOfShort(uint16* wp, tmsize_t n);
+extern void TIFFSwabArrayOfTriples(uint8* tp, tmsize_t n);
+extern void TIFFSwabArrayOfLong(uint32* lp, tmsize_t n);
+extern void TIFFSwabArrayOfLong8(uint64* lp, tmsize_t n);
+extern void TIFFSwabArrayOfFloat(float* fp, tmsize_t n);
+extern void TIFFSwabArrayOfDouble(double* dp, tmsize_t n);
+extern void TIFFReverseBits(uint8* cp, tmsize_t n);
+extern const unsigned char* TIFFGetBitRevTable(int);
 
 #ifdef LOGLUV_PUBLIC
 #define U_NEU          0.210526316
 #define V_NEU          0.473684211
 #define UVSCALE                410.
-extern double LogL16toY(int);
-extern double LogL10toY(int);
-extern void XYZtoRGB24(float*, uint8*);
-extern int uv_decode(double*, double*, int);
-extern void LogLuv24toXYZ(uint32, float*);
-extern void LogLuv32toXYZ(uint32, float*);
+extern double LogL16toY(int);
+extern double LogL10toY(int);
+extern void XYZtoRGB24(float*, uint8*);
+extern int uv_decode(double*, double*, int);
+extern void LogLuv24toXYZ(uint32, float*);
+extern void LogLuv32toXYZ(uint32, float*);
 #if defined(c_plusplus) || defined(__cplusplus)
-extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
-extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
-extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
-extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
-extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
+extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
+extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
+extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
+extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
+extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
 #else
-extern int LogL16fromY(double, int);
-extern int LogL10fromY(double, int);
-extern int uv_encode(double, double, int);
-extern uint32 LogLuv24fromXYZ(float*, int);
-extern uint32 LogLuv32fromXYZ(float*, int);
+extern int LogL16fromY(double, int);
+extern int LogL10fromY(double, int);
+extern int uv_encode(double, double, int);
+extern uint32 LogLuv24fromXYZ(float*, int);
+extern uint32 LogLuv32fromXYZ(float*, int);
 #endif
 #endif /* LOGLUV_PUBLIC */
-    
-extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*);
+
+extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, const TIFFDisplay *, float*);
 extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32,
-                           float *, float *, float *);
+    float *, float *, float *);
 extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float,
-                        uint32 *, uint32 *, uint32 *);
+    uint32 *, uint32 *, uint32 *);
 
 extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*);
 extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
-                          uint32 *, uint32 *, uint32 *);
+    uint32 *, uint32 *, uint32 *);
+
+/****************************************************************************
+ *               O B S O L E T E D    I N T E R F A C E S
+ *
+ * Don't use this stuff in your applications, it may be removed in the future
+ * libtiff versions.
+ ****************************************************************************/
+typedef        struct {
+       ttag_t  field_tag;              /* field's tag */
+       short   field_readcount;        /* read count/TIFF_VARIABLE/TIFF_SPP */
+       short   field_writecount;       /* write count/TIFF_VARIABLE */
+       TIFFDataType field_type;        /* type of associated data */
+        unsigned short field_bit;      /* bit in fieldsset bit vector */
+       unsigned char field_oktochange; /* if true, can change while writing */
+       unsigned char field_passcount;  /* if true, pass dir count on set */
+       char    *field_name;            /* ASCII name */
+} TIFFFieldInfo;
 
+extern int TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], uint32);
+        
 #if defined(c_plusplus) || defined(__cplusplus)
 }
 #endif
@@ -513,3 +548,10 @@ extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
 #endif /* _TIFFIO_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index ac7b9f2cd117b409b497c4d36c742327b62caac5..ed994f115653ce73ee9437743d4295df9604749e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tiffio.hxx,v 1.1 2004/11/21 16:12:08 dron Exp $ */
+/* $Id: tiffio.hxx,v 1.3 2010-06-08 18:55:15 bfriesen Exp $ */
 
 /*
  * Copyright (c) 1988-1997 Sam Leffler
 #include <iostream>
 #include "tiff.h"
 
-extern TIFF* TIFFStreamOpen(const char*, std::ostream *);
-extern TIFF* TIFFStreamOpen(const char*, std::istream *);
+extern TIFF* TIFFStreamOpen(const char*, std::ostream *);
+extern TIFF* TIFFStreamOpen(const char*, std::istream *);
 
 #endif /* _TIFFIO_HXX_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c++
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index fd3e0d4e038e2cae8f28c32037d2e01b156ff7fd..5416b03283895072a7cc18f2eac3f24986c05b76 100644 (file)
@@ -58,6 +58,7 @@ extern void *lfind(const void *, const void *, size_t *, size_t,
 #endif
 
 #include "tiffio.h"
+
 #include "tif_dir.h"
 
 #ifndef STRIP_SIZE_DEFAULT
@@ -73,158 +74,184 @@ extern void *lfind(const void *, const void *, size_t *, size_t,
 
 typedef struct client_info {
     struct client_info *next;
-    void      *data;
-    char      *name;
+    void *data;
+    char *name;
 } TIFFClientInfoLink;
 
 /*
  * Typedefs for ``method pointers'' used internally.
+ * these are depriciated and provided only for backwards compatibility
  */
-typedef        unsigned char tidataval_t;      /* internal image data value type */
-typedef        tidataval_t* tidata_t;          /* reference to internal image data */
-
-typedef        void (*TIFFVoidMethod)(TIFF*);
-typedef        int (*TIFFBoolMethod)(TIFF*);
-typedef        int (*TIFFPreMethod)(TIFF*, tsample_t);
-typedef        int (*TIFFCodeMethod)(TIFF*, tidata_t, tsize_t, tsample_t);
-typedef        int (*TIFFSeekMethod)(TIFF*, uint32);
-typedef        void (*TIFFPostMethod)(TIFF*, tidata_t, tsize_t);
-typedef        uint32 (*TIFFStripMethod)(TIFF*, uint32);
-typedef        void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
+typedef unsigned char tidataval_t;    /* internal image data value type */
+typedef tidataval_t* tidata_t;        /* reference to internal image data */
+
+typedef void (*TIFFVoidMethod)(TIFF*);
+typedef int (*TIFFBoolMethod)(TIFF*);
+typedef int (*TIFFPreMethod)(TIFF*, uint16);
+typedef int (*TIFFCodeMethod)(TIFF* tif, uint8* buf, tmsize_t size, uint16 sample);
+typedef int (*TIFFSeekMethod)(TIFF*, uint32);
+typedef void (*TIFFPostMethod)(TIFF* tif, uint8* buf, tmsize_t size);
+typedef uint32 (*TIFFStripMethod)(TIFF*, uint32);
+typedef void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
 
 struct tiff {
-       char*           tif_name;       /* name of open file */
-       int             tif_fd;         /* open file descriptor */
-       int             tif_mode;       /* open mode (O_*) */
-       uint32          tif_flags;
-#define        TIFF_FILLORDER          0x0003  /* natural bit fill order for machine */
-#define        TIFF_DIRTYHEADER        0x0004  /* header must be written on close */
-#define        TIFF_DIRTYDIRECT        0x0008  /* current directory must be written */
-#define        TIFF_BUFFERSETUP        0x0010  /* data buffers setup */
-#define        TIFF_CODERSETUP         0x0020  /* encoder/decoder setup done */
-#define        TIFF_BEENWRITING        0x0040  /* written 1+ scanlines to file */
-#define        TIFF_SWAB               0x0080  /* byte swap file information */
-#define        TIFF_NOBITREV           0x0100  /* inhibit bit reversal logic */
-#define        TIFF_MYBUFFER           0x0200  /* my raw data buffer; free on close */
-#define        TIFF_ISTILED            0x0400  /* file is tile, not strip- based */
-#define        TIFF_MAPPED             0x0800  /* file is mapped into memory */
-#define        TIFF_POSTENCODE         0x1000  /* need call to postencode routine */
-#define        TIFF_INSUBIFD           0x2000  /* currently writing a subifd */
-#define        TIFF_UPSAMPLED          0x4000  /* library is doing data up-sampling */ 
-#define        TIFF_STRIPCHOP          0x8000  /* enable strip chopping support */
-#define        TIFF_HEADERONLY         0x10000 /* read header only, do not process */
-                                       /* the first directory */
-       toff_t          tif_diroff;     /* file offset of current directory */
-       toff_t          tif_nextdiroff; /* file offset of following directory */
-       toff_t*         tif_dirlist;    /* list of offsets to already seen */
-                                       /* directories to prevent IFD looping */
-       uint16          tif_dirnumber;  /* number of already seen directories */
-       TIFFDirectory   tif_dir;        /* internal rep of current directory */
-       TIFFHeader      tif_header;     /* file's header block */
-       const int*      tif_typeshift;  /* data type shift counts */
-       const long*     tif_typemask;   /* data type masks */
-       uint32          tif_row;        /* current scanline */
-       tdir_t          tif_curdir;     /* current directory (index) */
-       tstrip_t        tif_curstrip;   /* current strip for read/write */
-       toff_t          tif_curoff;     /* current offset for read/write */
-       toff_t          tif_dataoff;    /* current offset for writing dir */
-/* SubIFD support */
-       uint16          tif_nsubifd;    /* remaining subifds to write */
-       toff_t          tif_subifdoff;  /* offset for patching SubIFD link */
-/* tiling support */
-       uint32          tif_col;        /* current column (offset by row too) */
-       ttile_t         tif_curtile;    /* current tile for read/write */
-       tsize_t         tif_tilesize;   /* # of bytes in a tile */
-/* compression scheme hooks */
-       int             tif_decodestatus;
-       TIFFBoolMethod  tif_setupdecode;/* called once before predecode */
-       TIFFPreMethod   tif_predecode;  /* pre- row/strip/tile decoding */
-       TIFFBoolMethod  tif_setupencode;/* called once before preencode */
-       int             tif_encodestatus;
-       TIFFPreMethod   tif_preencode;  /* pre- row/strip/tile encoding */
-       TIFFBoolMethod  tif_postencode; /* post- row/strip/tile encoding */
-       TIFFCodeMethod  tif_decoderow;  /* scanline decoding routine */
-       TIFFCodeMethod  tif_encoderow;  /* scanline encoding routine */
-       TIFFCodeMethod  tif_decodestrip;/* strip decoding routine */
-       TIFFCodeMethod  tif_encodestrip;/* strip encoding routine */
-       TIFFCodeMethod  tif_decodetile; /* tile decoding routine */
-       TIFFCodeMethod  tif_encodetile; /* tile encoding routine */
-       TIFFVoidMethod  tif_close;      /* cleanup-on-close routine */
-       TIFFSeekMethod  tif_seek;       /* position within a strip routine */
-       TIFFVoidMethod  tif_cleanup;    /* cleanup state routine */
-       TIFFStripMethod tif_defstripsize;/* calculate/constrain strip size */
-       TIFFTileMethod  tif_deftilesize;/* calculate/constrain tile size */
-       tidata_t        tif_data;       /* compression scheme private data */
-/* input/output buffering */
-       tsize_t         tif_scanlinesize;/* # of bytes in a scanline */
-       tsize_t         tif_scanlineskew;/* scanline skew for reading strips */
-       tidata_t        tif_rawdata;    /* raw data buffer */
-       tsize_t         tif_rawdatasize;/* # of bytes in raw data buffer */
-       tidata_t        tif_rawcp;      /* current spot in raw buffer */
-       tsize_t         tif_rawcc;      /* bytes unread from raw buffer */
-/* memory-mapped file support */
-       tidata_t        tif_base;       /* base of mapped file */
-       toff_t          tif_size;       /* size of mapped file region (bytes) */
-       TIFFMapFileProc tif_mapproc;    /* map file method */
-       TIFFUnmapFileProc tif_unmapproc;/* unmap file method */
-/* input/output callback methods */
-       thandle_t       tif_clientdata; /* callback parameter */
-       TIFFReadWriteProc tif_readproc; /* read method */
-       TIFFReadWriteProc tif_writeproc;/* write method */
-       TIFFSeekProc    tif_seekproc;   /* lseek method */
-       TIFFCloseProc   tif_closeproc;  /* close method */
-       TIFFSizeProc    tif_sizeproc;   /* filesize method */
-/* post-decoding support */
-       TIFFPostMethod  tif_postdecode; /* post decoding routine */
-/* tag support */
-       TIFFFieldInfo** tif_fieldinfo;  /* sorted table of registered tags */
-       size_t          tif_nfields;    /* # entries in registered tag table */
-       const TIFFFieldInfo *tif_foundfield;/* cached pointer to already found tag */
-        TIFFTagMethods  tif_tagmethods; /* tag get/set/print routines */
-        TIFFClientInfoLink *tif_clientinfo; /* extra client information. */
+       char*                tif_name;         /* name of open file */
+       int                  tif_fd;           /* open file descriptor */
+       int                  tif_mode;         /* open mode (O_*) */
+       uint32               tif_flags;
+       #define TIFF_FILLORDER   0x00003 /* natural bit fill order for machine */
+       #define TIFF_DIRTYHEADER 0x00004 /* header must be written on close */
+       #define TIFF_DIRTYDIRECT 0x00008 /* current directory must be written */
+       #define TIFF_BUFFERSETUP 0x00010 /* data buffers setup */
+       #define TIFF_CODERSETUP  0x00020 /* encoder/decoder setup done */
+       #define TIFF_BEENWRITING 0x00040 /* written 1+ scanlines to file */
+       #define TIFF_SWAB        0x00080 /* byte swap file information */
+       #define TIFF_NOBITREV    0x00100 /* inhibit bit reversal logic */
+       #define TIFF_MYBUFFER    0x00200 /* my raw data buffer; free on close */
+       #define TIFF_ISTILED     0x00400 /* file is tile, not strip- based */
+       #define TIFF_MAPPED      0x00800 /* file is mapped into memory */
+       #define TIFF_POSTENCODE  0x01000 /* need call to postencode routine */
+       #define TIFF_INSUBIFD    0x02000 /* currently writing a subifd */
+       #define TIFF_UPSAMPLED   0x04000 /* library is doing data up-sampling */
+       #define TIFF_STRIPCHOP   0x08000 /* enable strip chopping support */
+       #define TIFF_HEADERONLY  0x10000 /* read header only, do not process the first directory */
+       #define TIFF_NOREADRAW   0x20000 /* skip reading of raw uncompressed image data */
+       #define TIFF_INCUSTOMIFD 0x40000 /* currently writing a custom IFD */
+       #define TIFF_BIGTIFF     0x80000 /* read/write bigtiff */
+        #define TIFF_BUF4WRITE  0x100000 /* rawcc bytes are for writing */
+        #define TIFF_DIRTYSTRIP 0x200000 /* stripoffsets/stripbytecount dirty*/
+        #define TIFF_PERSAMPLE  0x400000 /* get/set per sample tags as arrays */
+        #define TIFF_BUFFERMMAP 0x800000 /* read buffer (tif_rawdata) points into mmap() memory */
+       uint64               tif_diroff;       /* file offset of current directory */
+       uint64               tif_nextdiroff;   /* file offset of following directory */
+       uint64*              tif_dirlist;      /* list of offsets to already seen directories to prevent IFD looping */
+       uint16               tif_dirlistsize;  /* number of entires in offset list */
+       uint16               tif_dirnumber;    /* number of already seen directories */
+       TIFFDirectory        tif_dir;          /* internal rep of current directory */
+       TIFFDirectory        tif_customdir;    /* custom IFDs are separated from the main ones */
+       union {
+               TIFFHeaderCommon common;
+               TIFFHeaderClassic classic;
+               TIFFHeaderBig big;
+       } tif_header;
+       uint16               tif_header_size;  /* file's header block and its length */
+       uint32               tif_row;          /* current scanline */
+       uint16               tif_curdir;       /* current directory (index) */
+       uint32               tif_curstrip;     /* current strip for read/write */
+       uint64               tif_curoff;       /* current offset for read/write */
+       uint64               tif_dataoff;      /* current offset for writing dir */
+       /* SubIFD support */
+       uint16               tif_nsubifd;      /* remaining subifds to write */
+       uint64               tif_subifdoff;    /* offset for patching SubIFD link */
+       /* tiling support */
+       uint32               tif_col;          /* current column (offset by row too) */
+       uint32               tif_curtile;      /* current tile for read/write */
+       tmsize_t             tif_tilesize;     /* # of bytes in a tile */
+       /* compression scheme hooks */
+       int                  tif_decodestatus;
+       TIFFBoolMethod       tif_fixuptags;    /* called in TIFFReadDirectory */
+       TIFFBoolMethod       tif_setupdecode;  /* called once before predecode */
+       TIFFPreMethod        tif_predecode;    /* pre- row/strip/tile decoding */
+       TIFFBoolMethod       tif_setupencode;  /* called once before preencode */
+       int                  tif_encodestatus;
+       TIFFPreMethod        tif_preencode;    /* pre- row/strip/tile encoding */
+       TIFFBoolMethod       tif_postencode;   /* post- row/strip/tile encoding */
+       TIFFCodeMethod       tif_decoderow;    /* scanline decoding routine */
+       TIFFCodeMethod       tif_encoderow;    /* scanline encoding routine */
+       TIFFCodeMethod       tif_decodestrip;  /* strip decoding routine */
+       TIFFCodeMethod       tif_encodestrip;  /* strip encoding routine */
+       TIFFCodeMethod       tif_decodetile;   /* tile decoding routine */
+       TIFFCodeMethod       tif_encodetile;   /* tile encoding routine */
+       TIFFVoidMethod       tif_close;        /* cleanup-on-close routine */
+       TIFFSeekMethod       tif_seek;         /* position within a strip routine */
+       TIFFVoidMethod       tif_cleanup;      /* cleanup state routine */
+       TIFFStripMethod      tif_defstripsize; /* calculate/constrain strip size */
+       TIFFTileMethod       tif_deftilesize;  /* calculate/constrain tile size */
+       uint8*               tif_data;         /* compression scheme private data */
+       /* input/output buffering */
+       tmsize_t             tif_scanlinesize; /* # of bytes in a scanline */
+       tmsize_t             tif_scanlineskew; /* scanline skew for reading strips */
+       uint8*               tif_rawdata;      /* raw data buffer */
+       tmsize_t             tif_rawdatasize;  /* # of bytes in raw data buffer */
+        tmsize_t             tif_rawdataoff;   /* rawdata offset within strip */
+        tmsize_t             tif_rawdataloaded;/* amount of data in rawdata */
+       uint8*               tif_rawcp;        /* current spot in raw buffer */
+       tmsize_t             tif_rawcc;        /* bytes unread from raw buffer */
+       /* memory-mapped file support */
+       uint8*               tif_base;         /* base of mapped file */
+       tmsize_t             tif_size;         /* size of mapped file region (bytes, thus tmsize_t) */
+       TIFFMapFileProc      tif_mapproc;      /* map file method */
+       TIFFUnmapFileProc    tif_unmapproc;    /* unmap file method */
+       /* input/output callback methods */
+       thandle_t            tif_clientdata;   /* callback parameter */
+       TIFFReadWriteProc    tif_readproc;     /* read method */
+       TIFFReadWriteProc    tif_writeproc;    /* write method */
+       TIFFSeekProc         tif_seekproc;     /* lseek method */
+       TIFFCloseProc        tif_closeproc;    /* close method */
+       TIFFSizeProc         tif_sizeproc;     /* filesize method */
+       /* post-decoding support */
+       TIFFPostMethod       tif_postdecode;   /* post decoding routine */
+       /* tag support */
+       TIFFField**          tif_fields;       /* sorted table of registered tags */
+       size_t               tif_nfields;      /* # entries in registered tag table */
+       const TIFFField*     tif_foundfield;   /* cached pointer to already found tag */
+       TIFFTagMethods       tif_tagmethods;   /* tag get/set/print routines */
+       TIFFClientInfoLink*  tif_clientinfo;   /* extra client information. */
+       /* Backward compatibility stuff. We need these two fields for
+        * setting up an old tag extension scheme. */
+       TIFFFieldArray*      tif_fieldscompat;
+       size_t               tif_nfieldscompat;
 };
 
-#define        isPseudoTag(t)  (t > 0xffff)    /* is tag value normal or pseudo */
-
-#define        isTiled(tif)    (((tif)->tif_flags & TIFF_ISTILED) != 0)
-#define        isMapped(tif)   (((tif)->tif_flags & TIFF_MAPPED) != 0)
-#define        isFillOrder(tif, o)     (((tif)->tif_flags & (o)) != 0)
-#define        isUpSampled(tif)        (((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
-#define        TIFFReadFile(tif, buf, size) \
-       ((*(tif)->tif_readproc)((tif)->tif_clientdata,buf,size))
-#define        TIFFWriteFile(tif, buf, size) \
-       ((*(tif)->tif_writeproc)((tif)->tif_clientdata,buf,size))
-#define        TIFFSeekFile(tif, off, whence) \
-       ((*(tif)->tif_seekproc)((tif)->tif_clientdata,(toff_t)(off),whence))
-#define        TIFFCloseFile(tif) \
+#define isPseudoTag(t) (t > 0xffff)            /* is tag value normal or pseudo */
+
+#define isTiled(tif) (((tif)->tif_flags & TIFF_ISTILED) != 0)
+#define isMapped(tif) (((tif)->tif_flags & TIFF_MAPPED) != 0)
+#define isFillOrder(tif, o) (((tif)->tif_flags & (o)) != 0)
+#define isUpSampled(tif) (((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
+#define TIFFReadFile(tif, buf, size) \
+       ((*(tif)->tif_readproc)((tif)->tif_clientdata,(buf),(size)))
+#define TIFFWriteFile(tif, buf, size) \
+       ((*(tif)->tif_writeproc)((tif)->tif_clientdata,(buf),(size)))
+#define TIFFSeekFile(tif, off, whence) \
+       ((*(tif)->tif_seekproc)((tif)->tif_clientdata,(off),(whence)))
+#define TIFFCloseFile(tif) \
        ((*(tif)->tif_closeproc)((tif)->tif_clientdata))
-#define        TIFFGetFileSize(tif) \
+#define TIFFGetFileSize(tif) \
        ((*(tif)->tif_sizeproc)((tif)->tif_clientdata))
-#define        TIFFMapFileContents(tif, paddr, psize) \
-       ((*(tif)->tif_mapproc)((tif)->tif_clientdata,paddr,psize))
-#define        TIFFUnmapFileContents(tif, addr, size) \
-       ((*(tif)->tif_unmapproc)((tif)->tif_clientdata,addr,size))
+#define TIFFMapFileContents(tif, paddr, psize) \
+       ((*(tif)->tif_mapproc)((tif)->tif_clientdata,(paddr),(psize)))
+#define TIFFUnmapFileContents(tif, addr, size) \
+       ((*(tif)->tif_unmapproc)((tif)->tif_clientdata,(addr),(size)))
 
 /*
  * Default Read/Seek/Write definitions.
  */
 #ifndef ReadOK
-#define        ReadOK(tif, buf, size) \
-       (TIFFReadFile(tif, (tdata_t) buf, (tsize_t)(size)) == (tsize_t)(size))
+#define ReadOK(tif, buf, size) \
+       (TIFFReadFile((tif),(buf),(size))==(size))
 #endif
 #ifndef SeekOK
-#define        SeekOK(tif, off) \
-       (TIFFSeekFile(tif, (toff_t) off, SEEK_SET) == (toff_t) off)
+#define SeekOK(tif, off) \
+       (TIFFSeekFile((tif),(off),SEEK_SET)==(off))
 #endif
 #ifndef WriteOK
-#define        WriteOK(tif, buf, size) \
-       (TIFFWriteFile(tif, (tdata_t) buf, (tsize_t) size) == (tsize_t) size)
+#define WriteOK(tif, buf, size) \
+       (TIFFWriteFile((tif),(buf),(size))==(size))
 #endif
 
 /* NB: the uint32 casts are to silence certain ANSI-C compilers */
-#define TIFFhowmany(x, y) ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y)))
-#define TIFFhowmany8(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
-#define        TIFFroundup(x, y) (TIFFhowmany(x,y)*(y))
+#define TIFFhowmany_32(x, y) (((uint32)x < (0xffffffff - (uint32)(y-1))) ? \
+                          ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y))) : \
+                          0U)
+#define TIFFhowmany8_32(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
+#define TIFFroundup_32(x, y) (TIFFhowmany_32(x,y)*(y))
+#define TIFFhowmany_64(x, y) ((((uint64)(x))+(((uint64)(y))-1))/((uint64)(y)))
+#define TIFFhowmany8_64(x) (((x)&0x07)?((uint64)(x)>>3)+1:(uint64)(x)>>3)
+#define TIFFroundup_64(x, y) (TIFFhowmany_64(x,y)*(y))
+
+/* Safe multiply which returns zero if there is an integer overflow */
+#define TIFFSafeMultiply(t,v,m) ((((t)(m) != (t)0) && (((t)(((v)*(m))/(m))) == (t)(v))) ? (t)((v)*(m)) : (t)0)
 
 #define TIFFmax(A,B) ((A)>(B)?(A):(B))
 #define TIFFmin(A,B) ((A)<(B)?(A):(B))
@@ -234,85 +261,95 @@ struct tiff {
 #if defined(__cplusplus)
 extern "C" {
 #endif
-extern int _TIFFgetMode(const char*, const char*);
-extern int _TIFFNoRowEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoStripEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoTileEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoRowDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoStripDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoTileDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern void _TIFFNoPostDecode(TIFF*, tidata_t, tsize_t);
-extern  int  _TIFFNoPreCode (TIFF*, tsample_t); 
-extern int _TIFFNoSeek(TIFF*, uint32);
-extern void _TIFFSwab16BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab24BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab32BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab64BitData(TIFF*, tidata_t, tsize_t);
-extern int TIFFFlushData1(TIFF*);
-extern int TIFFDefaultDirectory(TIFF*);
-extern void _TIFFSetDefaultCompressionState(TIFF*);
-extern int TIFFSetCompressionScheme(TIFF*, int);
-extern int TIFFSetDefaultCompressionState(TIFF*);
-extern uint32 _TIFFDefaultStripSize(TIFF*, uint32);
-extern void _TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern int _TIFFDataSize(TIFFDataType);
-
-extern void _TIFFsetByteArray(void**, void*, uint32);
-extern void _TIFFsetString(char**, char*);
-extern void _TIFFsetShortArray(uint16**, uint16*, uint32);
-extern void _TIFFsetLongArray(uint32**, uint32*, uint32);
-extern void _TIFFsetFloatArray(float**, float*, uint32);
-extern void _TIFFsetDoubleArray(double**, double*, uint32);
-
-extern void _TIFFprintAscii(FILE*, const char*);
-extern void _TIFFprintAsciiTag(FILE*, const char*, const char*);
-
-extern TIFFErrorHandler _TIFFwarningHandler;
-extern TIFFErrorHandler _TIFFerrorHandler;
-extern TIFFErrorHandlerExt _TIFFwarningHandlerExt;
-extern TIFFErrorHandlerExt _TIFFerrorHandlerExt;
-
-extern tdata_t _TIFFCheckMalloc(TIFF*, size_t, size_t, const char*);
-
-extern int TIFFInitDumpMode(TIFF*, int);
+extern int _TIFFgetMode(const char* mode, const char* module);
+extern int _TIFFNoRowEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
+extern int _TIFFNoStripEncode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
+extern int _TIFFNoTileEncode(TIFF*, uint8* pp, tmsize_t cc, uint16 s);
+extern int _TIFFNoRowDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
+extern int _TIFFNoStripDecode(TIFF* tif, uint8* pp, tmsize_t cc, uint16 s);
+extern int _TIFFNoTileDecode(TIFF*, uint8* pp, tmsize_t cc, uint16 s);
+extern void _TIFFNoPostDecode(TIFF* tif, uint8* buf, tmsize_t cc);
+extern int _TIFFNoPreCode(TIFF* tif, uint16 s);
+extern int _TIFFNoSeek(TIFF* tif, uint32 off);
+extern void _TIFFSwab16BitData(TIFF* tif, uint8* buf, tmsize_t cc);
+extern void _TIFFSwab24BitData(TIFF* tif, uint8* buf, tmsize_t cc);
+extern void _TIFFSwab32BitData(TIFF* tif, uint8* buf, tmsize_t cc);
+extern void _TIFFSwab64BitData(TIFF* tif, uint8* buf, tmsize_t cc);
+extern int TIFFFlushData1(TIFF* tif);
+extern int TIFFDefaultDirectory(TIFF* tif);
+extern void _TIFFSetDefaultCompressionState(TIFF* tif);
+extern int _TIFFRewriteField(TIFF *, uint16, TIFFDataType, tmsize_t, void *);
+extern int TIFFSetCompressionScheme(TIFF* tif, int scheme);
+extern int TIFFSetDefaultCompressionState(TIFF* tif);
+extern uint32 _TIFFDefaultStripSize(TIFF* tif, uint32 s);
+extern void _TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th);
+extern int _TIFFDataSize(TIFFDataType type);
+
+extern void _TIFFsetByteArray(void**, void*, uint32);
+extern void _TIFFsetString(char**, char*);
+extern void _TIFFsetShortArray(uint16**, uint16*, uint32);
+extern void _TIFFsetLongArray(uint32**, uint32*, uint32);
+extern void _TIFFsetFloatArray(float**, float*, uint32);
+extern void _TIFFsetDoubleArray(double**, double*, uint32);
+
+extern void _TIFFprintAscii(FILE*, const char*);
+extern void _TIFFprintAsciiTag(FILE*, const char*, const char*);
+
+extern TIFFErrorHandler _TIFFwarningHandler;
+extern TIFFErrorHandler _TIFFerrorHandler;
+extern TIFFErrorHandlerExt _TIFFwarningHandlerExt;
+extern TIFFErrorHandlerExt _TIFFerrorHandlerExt;
+
+extern uint32 _TIFFMultiply32(TIFF*, uint32, uint32, const char*);
+extern uint64 _TIFFMultiply64(TIFF*, uint64, uint64, const char*);
+extern void* _TIFFCheckMalloc(TIFF*, tmsize_t, tmsize_t, const char*);
+extern void* _TIFFCheckRealloc(TIFF*, void*, tmsize_t, tmsize_t, const char*);
+
+extern double _TIFFUInt64ToDouble(uint64);
+extern float _TIFFUInt64ToFloat(uint64);
+
+extern int TIFFInitDumpMode(TIFF*, int);
 #ifdef PACKBITS_SUPPORT
-extern int TIFFInitPackBits(TIFF*, int);
+extern int TIFFInitPackBits(TIFF*, int);
 #endif
 #ifdef CCITT_SUPPORT
-extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
-extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
+extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
+extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
 #endif
 #ifdef THUNDER_SUPPORT
-extern int TIFFInitThunderScan(TIFF*, int);
+extern int TIFFInitThunderScan(TIFF*, int);
 #endif
 #ifdef NEXT_SUPPORT
-extern int TIFFInitNeXT(TIFF*, int);
+extern int TIFFInitNeXT(TIFF*, int);
 #endif
 #ifdef LZW_SUPPORT
-extern int TIFFInitLZW(TIFF*, int);
+extern int TIFFInitLZW(TIFF*, int);
 #endif
 #ifdef OJPEG_SUPPORT
-extern int TIFFInitOJPEG(TIFF*, int);
+extern int TIFFInitOJPEG(TIFF*, int);
 #endif
 #ifdef JPEG_SUPPORT
-extern int TIFFInitJPEG(TIFF*, int);
+extern int TIFFInitJPEG(TIFF*, int);
 #endif
 #ifdef JBIG_SUPPORT
-extern int TIFFInitJBIG(TIFF*, int);
+extern int TIFFInitJBIG(TIFF*, int);
 #endif
 #ifdef ZIP_SUPPORT
-extern int TIFFInitZIP(TIFF*, int);
+extern int TIFFInitZIP(TIFF*, int);
 #endif
 #ifdef PIXARLOG_SUPPORT
-extern int TIFFInitPixarLog(TIFF*, int);
+extern int TIFFInitPixarLog(TIFF*, int);
 #endif
 #ifdef LOGLUV_SUPPORT
-extern int TIFFInitSGILog(TIFF*, int);
+extern int TIFFInitSGILog(TIFF*, int);
+#endif
+#ifdef LZMA_SUPPORT
+extern int TIFFInitLZMA(TIFF*, int);
 #endif
 #ifdef VMS
-extern const TIFFCodec _TIFFBuiltinCODECS[];
+extern const TIFFCodec _TIFFBuiltinCODECS[];
 #else
-extern TIFFCodec _TIFFBuiltinCODECS[];
+extern TIFFCodec _TIFFBuiltinCODECS[];
 #endif
 
 #if defined(__cplusplus)
@@ -321,3 +358,10 @@ extern     TIFFCodec _TIFFBuiltinCODECS[];
 #endif /* _TIFFIOP_ */
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 9744f8d30898dbf21218b9bcf6f579c91dcd1a9c..40edc813d5f5ad9aee85e5990090e7147aa50ff3 100644 (file)
@@ -1,4 +1,4 @@
-#define TIFFLIB_VERSION_STR "LIBTIFF, Version 3.8.2\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
+#define TIFFLIB_VERSION_STR "LIBTIFF, Version 4.0.3\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
 /*
  * This define can be used in code that requires
  * compilation-related definitions specific to a
@@ -6,4 +6,4 @@
  * version checking should be done based on the
  * string returned by TIFFGetVersion.
  */
-#define TIFFLIB_VERSION 20060323
+#define TIFFLIB_VERSION 20120922
index 5b2d7d71fa6f436d3d74d3854476318312ff61f8..50f11d7e0aeccdbcdaa16f701d19f48a13681da3 100644 (file)
@@ -171,3 +171,10 @@ static struct {
        { (float)0.016994,      31,     16237 },
        { (float)0.023659,      21,     16268 },
 };
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index a213cde7ed6f8743174800587b522053beed1719..b54feb7061136ac0189d54145442f3f493ff4556 100644 (file)
@@ -170,97 +170,130 @@ dnl Available from the GNU Autoconf Macro Archive at:
 dnl http://www.gnu.org/software/ac-archive/ax_check_gl.html
 dnl ---------------------------------------------------------------------------
 
-dnl @synopsis AX_CHECK_GL
+dnl SYNOPSIS
 dnl
-dnl Check for an OpenGL implementation. If GL is found, the required
-dnl compiler and linker flags are included in the output variables
-dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the
-dnl configure option "--with-apple-opengl-framework", which users can
-dnl use to indicate that Apple's OpenGL framework should be used on Mac
-dnl OS X. If Apple's OpenGL framework is used, the symbol
-dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation
-dnl is found, "no_gl" is set to "yes".
+dnl   AX_CHECK_GL
 dnl
-dnl @category InstalledPackages
-dnl @author Braden McDaniel <braden@endoframe.com>
-dnl @version 2004-11-15
-dnl @license AllPermissive
+dnl DESCRIPTION
+dnl
+dnl   Check for an OpenGL implementation. If GL is found, the required
+dnl   compiler and linker flags are included in the output variables
+dnl   "GL_CFLAGS" and "GL_LIBS", respectively. If no usable GL implementation
+dnl   is found, "no_gl" is set to "yes".
+dnl
+dnl   If the header "GL/gl.h" is found, "HAVE_GL_GL_H" is defined. If the
+dnl   header "OpenGL/gl.h" is found, HAVE_OPENGL_GL_H is defined. These
+dnl   preprocessor definitions may not be mutually exclusive.
+dnl
+dnl LICENSE
+dnl
+dnl   Copyright (c) 2009 Braden McDaniel <braden@endoframe.com>
+dnl
+dnl   This program is free software; you can redistribute it and/or modify it
+dnl   under the terms of the GNU General Public License as published by the
+dnl   Free Software Foundation; either version 2 of the License, or (at your
+dnl   option) any later version.
+dnl
+dnl   This program is distributed in the hope that it will be useful, but
+dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+dnl   Public License for more details.
+dnl
+dnl   You should have received a copy of the GNU General Public License along
+dnl   with this program. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl   As a special exception, the respective Autoconf Macro's copyright owner
+dnl   gives unlimited permission to copy, distribute and modify the configure
+dnl   scripts that are the output of Autoconf when processing the Macro. You
+dnl   need not follow the terms of the GNU General Public License when using
+dnl   or distributing such scripts, even though portions of the text of the
+dnl   Macro appear in them. The GNU General Public License (GPL) does govern
+dnl   all other use of the material that constitutes the Autoconf Macro.
+dnl
+dnl   This special exception to the GPL applies to versions of the Autoconf
+dnl   Macro released by the Autoconf Archive. When you make and distribute a
+dnl   modified version of the Autoconf Macro, you may extend this special
+dnl   exception to the GPL to apply to your modified version as well.
 
 AC_DEFUN([AX_CHECK_GL],
-[AC_REQUIRE([AC_PATH_X])dnl
-AC_REQUIRE([ACX_PTHREAD])dnl
-
-#
-# There isn't a reliable way to know we should use the Apple OpenGL framework
-# without a configure option.  A Mac OS X user may have installed an
-# alternative GL implementation (e.g., Mesa), which may or may not depend on X.
-#
-AC_ARG_WITH([apple-opengl-framework],
-            [AC_HELP_STRING([--with-apple-opengl-framework],
-                            [use Apple OpenGL framework (Mac OS X only)])])
-if test "X$with_apple_opengl_framework" = "Xyes"; then
-  AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1],
-            [Use the Apple OpenGL framework.])
-  GL_LIBS="-framework OpenGL"
-else
-  AC_LANG_PUSH(C)
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PATH_X])dnl
+AC_REQUIRE([AX_PTHREAD])dnl
 
-  AX_LANG_COMPILER_MS
-  if test X$ax_compiler_ms = Xno; then
-    GL_CFLAGS="${PTHREAD_CFLAGS}"
-    GL_LIBS="${PTHREAD_LIBS} -lm"
-  fi
+AC_LANG_PUSH([C])
+AX_LANG_COMPILER_MS
+AS_IF([test X$ax_compiler_ms = Xno],
+      [GL_CFLAGS="${PTHREAD_CFLAGS}"; GL_LIBS="${PTHREAD_LIBS} -lm"])
 
-  #
-  # Use x_includes and x_libraries if they have been set (presumably by
-  # AC_PATH_X).
-  #
-  if test "X$no_x" != "Xyes"; then
-    if test -n "$x_includes"; then
-      GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"
-    fi
-    if test -n "$x_libraries"; then
-      GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"
-    fi
-  fi
-
-  AC_CHECK_HEADERS([windows.h])
-
-  AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
-  [ax_cv_check_gl_libgl="no"
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lopengl32 -lGL"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
-    AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([[
-# if HAVE_WINDOWS_H && defined(_WIN32)
+dnl
+dnl Use x_includes and x_libraries if they have been set (presumably by
+dnl AC_PATH_X).
+dnl
+AS_IF([test "X$no_x" != "Xyes"],
+      [AS_IF([test -n "$x_includes"],
+             [GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"])]
+       AS_IF([test -n "$x_libraries"],
+             [GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"]))
+
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h])
+CPPFLAGS="${ax_save_CPPFLAGS}"
+
+AC_CHECK_HEADERS([windows.h])
+
+m4_define([AX_CHECK_GL_PROGRAM],
+          [AC_LANG_PROGRAM([[
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
 #   include <windows.h>
 # endif
-# include <GL/gl.h>]],
-                     [[glBegin(0)]])],
-    [ax_cv_check_gl_libgl="${ax_try_lib}"; break])
-  done
-  LIBS=${ax_save_LIBS}
-  CPPFLAGS=${ax_save_CPPFLAGS}])
-
-  if test "X${ax_cv_check_gl_libgl}" = "Xno"; then
-    no_gl="yes"
-    GL_CFLAGS=""
-    GL_LIBS=""
-  else
-    GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"
-  fi
-  AC_LANG_POP(C)
-fi
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif]],
+                           [[glBegin(0)]])])
+
+AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
+[ax_cv_check_gl_libgl="no"
+case $host_cpu in
+  x86_64) ax_check_gl_libdir=lib64 ;;
+  *)      ax_check_gl_libdir=lib ;;
+esac
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+LIBS=""
+ax_check_libs="-lopengl32 -lGL"
+for ax_lib in ${ax_check_libs}; do
+  AS_IF([test X$ax_compiler_ms = Xyes],
+        [ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`],
+        [ax_try_lib="${ax_lib}"])
+  LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
+AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+               [ax_cv_check_gl_libgl="${ax_try_lib}"; break],
+               [ax_check_gl_nvidia_flags="-L/usr/${ax_check_gl_libdir}/nvidia" LIBS="${ax_try_lib} ${ax_check_gl_nvidia_flags} ${GL_LIBS} ${ax_save_LIBS}"
+AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+               [ax_cv_check_gl_libgl="${ax_try_lib} ${ax_check_gl_nvidia_flags}"; break],
+               [ax_check_gl_dylib_flag='-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib' LIBS="${ax_try_lib} ${ax_check_gl_dylib_flag} ${GL_LIBS} ${ax_save_LIBS}"
+AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+               [ax_cv_check_gl_libgl="${ax_try_lib} ${ax_check_gl_dylib_flag}"; break])])])
+done
+
+AS_IF([test "X$ax_cv_check_gl_libgl" = Xno -a "X$no_x" = Xyes],
+[LIBS='-framework OpenGL'
+AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+               [ax_cv_check_gl_libgl="$LIBS"])])
+
+LIBS=${ax_save_LIBS}
+CPPFLAGS=${ax_save_CPPFLAGS}])
+
+AS_IF([test "X$ax_cv_check_gl_libgl" = Xno],
+      [no_gl=yes; GL_CFLAGS=""; GL_LIBS=""],
+      [GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"])
+AC_LANG_POP([C])
 
 AC_SUBST([GL_CFLAGS])
 AC_SUBST([GL_LIBS])
@@ -271,76 +304,151 @@ dnl Available from the GNU Autoconf Macro Archive at:
 dnl http://www.gnu.org/software/ac-archive/ax_check_glu.html
 dnl ---------------------------------------------------------------------------
 
-dnl @synopsis AX_CHECK_GLU
+dnl SYNOPSIS
 dnl
-dnl Check for GLU. If GLU is found, the required preprocessor and
-dnl linker flags are included in the output variables "GLU_CFLAGS" and
-dnl "GLU_LIBS", respectively. This macro adds the configure option
-dnl "--with-apple-opengl-framework", which users can use to indicate
-dnl that Apple's OpenGL framework should be used on Mac OS X. If
-dnl Apple's OpenGL framework is used, the symbol
-dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GLU implementation
-dnl is found, "no_glu" is set to "yes".
+dnl   AX_CHECK_GLU
 dnl
-dnl @category InstalledPackages
-dnl @author Braden McDaniel <braden@endoframe.com>
-dnl @version 2004-11-15
-dnl @license AllPermissive
+dnl DESCRIPTION
+dnl
+dnl   Check for GLU. If GLU is found, the required preprocessor and linker
+dnl   flags are included in the output variables "GLU_CFLAGS" and "GLU_LIBS",
+dnl   respectively. If no GLU implementation is found, "no_glu" is set to
+dnl   "yes".
+dnl
+dnl   If the header "GL/glu.h" is found, "HAVE_GL_GLU_H" is defined. If the
+dnl   header "OpenGL/glu.h" is found, HAVE_OPENGL_GLU_H is defined. These
+dnl   preprocessor definitions may not be mutually exclusive.
+dnl
+dnl   Some implementations (in particular, some versions of Mac OS X) are
+dnl   known to treat the GLU tesselator callback function type as "GLvoid
+dnl   (*)(...)" rather than the standard "GLvoid (*)()". If the former
+dnl   condition is detected, this macro defines "HAVE_VARARGS_GLU_TESSCB".
+dnl
+dnl LICENSE
+dnl
+dnl   Copyright (c) 2009 Braden McDaniel <braden@endoframe.com>
+dnl
+dnl   This program is free software; you can redistribute it and/or modify it
+dnl   under the terms of the GNU General Public License as published by the
+dnl   Free Software Foundation; either version 2 of the License, or (at your
+dnl   option) any later version.
+dnl
+dnl   This program is distributed in the hope that it will be useful, but
+dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+dnl   Public License for more details.
+dnl
+dnl   You should have received a copy of the GNU General Public License along
+dnl   with this program. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl   As a special exception, the respective Autoconf Macro's copyright owner
+dnl   gives unlimited permission to copy, distribute and modify the configure
+dnl   scripts that are the output of Autoconf when processing the Macro. You
+dnl   need not follow the terms of the GNU General Public License when using
+dnl   or distributing such scripts, even though portions of the text of the
+dnl   Macro appear in them. The GNU General Public License (GPL) does govern
+dnl   all other use of the material that constitutes the Autoconf Macro.
+dnl
+dnl   This special exception to the GPL applies to versions of the Autoconf
+dnl   Macro released by the Autoconf Archive. When you make and distribute a
+dnl   modified version of the Autoconf Macro, you may extend this special
+dnl   exception to the GPL to apply to your modified version as well.
 
 AC_DEFUN([AX_CHECK_GLU],
 [AC_REQUIRE([AX_CHECK_GL])dnl
 AC_REQUIRE([AC_PROG_CXX])dnl
 GLU_CFLAGS="${GL_CFLAGS}"
-if test "X${with_apple_opengl_framework}" != "Xyes"; then
-  AC_CACHE_CHECK([for OpenGL Utility library], [ax_cv_check_glu_libglu],
-  [ax_cv_check_glu_libglu="no"
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lglu32 -lGLU"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
-    #
-    # libGLU typically links with libstdc++ on POSIX platforms. However,
-    # setting the language to C++ means that test program source is named
-    # "conftest.cc"; and Microsoft cl doesn't know what to do with such a
-    # file.
-    #
-    AC_LANG_PUSH([C++])
-    if test X$ax_compiler_ms = Xyes; then
-      AC_LANG_PUSH([C])
-    fi
-    AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([[
-# if HAVE_WINDOWS_H && defined(_WIN32)
+
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h])
+CPPFLAGS="${ax_save_CPPFLAGS}"
+
+m4_define([AX_CHECK_GLU_PROGRAM],
+          [AC_LANG_PROGRAM([[
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
 #   include <windows.h>
 # endif
-# include <GL/glu.h>]],
-                     [[gluBeginCurve(0)]])],
-    [ax_cv_check_glu_libglu="${ax_try_lib}"; break])
-    if test X$ax_compiler_ms = Xyes; then
-      AC_LANG_POP([C])
-    fi
-    AC_LANG_POP([C++])
-  done
-  LIBS=${ax_save_LIBS}
-  CPPFLAGS=${ax_save_CPPFLAGS}])
-  if test "X${ax_cv_check_glu_libglu}" = "Xno"; then
-    no_glu="yes"
-    GLU_CFLAGS=""
-    GLU_LIBS=""
-  else
-    GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"
-  fi
-fi
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# elif defined(HAVE_OPENGL_GLU_H)
+#   include <OpenGL/glu.h>
+# else
+#   error no glu.h
+# endif]],
+                           [[gluBeginCurve(0)]])])
+
+AC_CACHE_CHECK([for OpenGL Utility library], [ax_cv_check_glu_libglu],
+[ax_cv_check_glu_libglu="no"
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+
+dnl
+dnl First, check for the possibility that everything we need is already in
+dnl GL_LIBS.
+dnl
+LIBS="${GL_LIBS} ${ax_save_LIBS}"
+dnl
+dnl libGLU typically links with libstdc++ on POSIX platforms.
+dnl However, setting the language to C++ means that test program
+dnl source is named "conftest.cc"; and Microsoft cl doesn't know what
+dnl to do with such a file.
+dnl
+AC_LANG_PUSH([C++])
+AS_IF([test X$ax_compiler_ms = Xyes],
+      [AC_LANG_PUSH([C])])
+AC_LINK_IFELSE(
+[AX_CHECK_GLU_PROGRAM],
+[ax_cv_check_glu_libglu=yes],
+[LIBS=""
+ax_check_libs="-lglu32 -lGLU"
+for ax_lib in ${ax_check_libs}; do
+  AS_IF([test X$ax_compiler_ms = Xyes],
+        [ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`],
+        [ax_try_lib="${ax_lib}"])
+  LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
+  AC_LINK_IFELSE([AX_CHECK_GLU_PROGRAM],
+                 [ax_cv_check_glu_libglu="${ax_try_lib}"; break])
+done
+])
+AS_IF([test X$ax_compiler_ms = Xyes],
+      [AC_LANG_POP([C])])
+AC_LANG_POP([C++])
+
+LIBS=${ax_save_LIBS}
+CPPFLAGS=${ax_save_CPPFLAGS}])
+AS_IF([test "X$ax_cv_check_glu_libglu" = Xno],
+      [no_glu=yes; GLU_CFLAGS=""; GLU_LIBS=""],
+      [AS_IF([test "X$ax_cv_check_glu_libglu" = Xyes],
+             [GLU_LIBS="$GL_LIBS"],
+             [GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"])])
 AC_SUBST([GLU_CFLAGS])
 AC_SUBST([GLU_LIBS])
+
+dnl
+dnl Some versions of Mac OS X include a broken interpretation of the GLU
+dnl tesselation callback function signature.
+dnl
+AS_IF([test "X$ax_cv_check_glu_libglu" != Xno],
+[AC_CACHE_CHECK([for varargs GLU tesselator callback function type],
+                [ax_cv_varargs_glu_tesscb],
+[ax_cv_varargs_glu_tesscb=no
+ax_save_CFLAGS="$CFLAGS"
+CFLAGS="$GL_CFLAGS $CFLAGS"
+AC_COMPILE_IFELSE(
+[AC_LANG_PROGRAM([[
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# else
+#   include <OpenGL/glu.h>
+# endif]],
+                 [[GLvoid (*func)(...); gluTessCallback(0, 0, func)]])],
+[ax_cv_varargs_glu_tesscb=yes])
+CFLAGS="$ax_save_CFLAGS"])
+AS_IF([test X$ax_cv_varargs_glu_tesscb = Xyes],
+      [AC_DEFINE([HAVE_VARARGS_GLU_TESSCB], [1],
+                 [Use nonstandard varargs form for the GLU tesselator callback])])])
 ])
 
 dnl ---------------------------------------------------------------------------
@@ -348,80 +456,112 @@ dnl Available from the GNU Autoconf Macro Archive at:
 dnl http://www.gnu.org/software/ac-archive/ax_check_glut.html
 dnl ---------------------------------------------------------------------------
 
-dnl @synopsis AX_CHECK_GLUT
 dnl
-dnl Check for GLUT. If GLUT is found, the required compiler and linker
-dnl flags are included in the output variables "GLUT_CFLAGS" and
-dnl "GLUT_LIBS", respectively. This macro adds the configure option
-dnl "--with-apple-opengl-framework", which users can use to indicate
-dnl that Apple's OpenGL framework should be used on Mac OS X. If
-dnl Apple's OpenGL framework is used, the symbol
-dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If GLUT is not found,
-dnl "no_glut" is set to "yes".
+dnl SYNOPSIS
 dnl
-dnl @category InstalledPackages
-dnl @author Braden McDaniel <braden@endoframe.com>
-dnl @version 2004-11-15
-dnl @license AllPermissive
+dnl   AX_CHECK_GLUT
+dnl
+dnl DESCRIPTION
+dnl
+dnl   Check for GLUT. If GLUT is found, the required compiler and linker flags
+dnl   are included in the output variables "GLUT_CFLAGS" and "GLUT_LIBS",
+dnl   respectively. If GLUT is not found, "no_glut" is set to "yes".
+dnl
+dnl   If the header "GL/glut.h" is found, "HAVE_GL_GLUT_H" is defined. If the
+dnl   header "GLUT/glut.h" is found, HAVE_GLUT_GLUT_H is defined. These
+dnl   preprocessor definitions may not be mutually exclusive.
+dnl
+dnl LICENSE
+dnl
+dnl   Copyright (c) 2009 Braden McDaniel <braden@endoframe.com>
+dnl
+dnl   This program is free software; you can redistribute it and/or modify it
+dnl   under the terms of the GNU General Public License as published by the
+dnl   Free Software Foundation; either version 2 of the License, or (at your
+dnl   option) any later version.
+dnl
+dnl   This program is distributed in the hope that it will be useful, but
+dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+dnl   Public License for more details.
+dnl
+dnl   You should have received a copy of the GNU General Public License along
+dnl   with this program. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl   As a special exception, the respective Autoconf Macro's copyright owner
+dnl   gives unlimited permission to copy, distribute and modify the configure
+dnl   scripts that are the output of Autoconf when processing the Macro. You
+dnl   need not follow the terms of the GNU General Public License when using
+dnl   or distributing such scripts, even though portions of the text of the
+dnl   Macro appear in them. The GNU General Public License (GPL) does govern
+dnl   all other use of the material that constitutes the Autoconf Macro.
+dnl
+dnl   This special exception to the GPL applies to versions of the Autoconf
+dnl   Macro released by the Autoconf Archive. When you make and distribute a
+dnl   modified version of the Autoconf Macro, you may extend this special
+dnl   exception to the GPL to apply to your modified version as well.
 
 AC_DEFUN([AX_CHECK_GLUT],
 [AC_REQUIRE([AX_CHECK_GLU])dnl
 AC_REQUIRE([AC_PATH_XTRA])dnl
 
-if test "X$with_apple_opengl_framework" = "Xyes"; then
-  GLUT_CFLAGS="${GLU_CFLAGS}"
-  GLUT_LIBS="-framework GLUT -lobjc ${GL_LIBS}"
-else
-  GLUT_CFLAGS=${GLU_CFLAGS}
-  GLUT_LIBS=${GLU_LIBS}
-
-  #
-  # If X is present, assume GLUT depends on it.
-  #
-  if test "X${no_x}" != "Xyes"; then
-    GLUT_LIBS="${X_PRE_LIBS} -lXmu -lXi ${X_EXTRA_LIBS} ${GLUT_LIBS}"
-  fi
-
-  AC_LANG_PUSH(C)
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GLU_CFLAGS} ${CPPFLAGS}"
+AC_CHECK_HEADERS([GL/glut.h GLUT/glut.h])
+CPPFLAGS="${ax_save_CPPFLAGS}"
 
-  ax_save_CPPFLAGS="${CPPFLAGS}"
-  CPPFLAGS="${GLUT_CFLAGS} ${CPPFLAGS}"
+GLUT_CFLAGS=${GLU_CFLAGS}
+GLUT_LIBS=${GLU_LIBS}
 
-  AC_CACHE_CHECK([for GLUT library], [ax_cv_check_glut_libglut],
-  [ax_cv_check_glut_libglut="no"
-  ax_save_LIBS="${LIBS}"
-  LIBS=""
-  ax_check_libs="-lglut32 -lglut"
-  for ax_lib in ${ax_check_libs}; do
-    if test X$ax_compiler_ms = Xyes; then
-      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
-    else
-      ax_try_lib="${ax_lib}"
-    fi
-    LIBS="${ax_try_lib} ${GLUT_LIBS} ${ax_save_LIBS}"
-    AC_LINK_IFELSE(
-    [AC_LANG_PROGRAM([[
+m4_define([AX_CHECK_GLUT_PROGRAM],
+          [AC_LANG_PROGRAM([[
 # if HAVE_WINDOWS_H && defined(_WIN32)
 #   include <windows.h>
 # endif
-# include <GL/glut.h>]],
-                     [[glutMainLoop()]])],
-    [ax_cv_check_glut_libglut="${ax_try_lib}"; break])
+# ifdef HAVE_GL_GLUT_H
+#   include <GL/glut.h>
+# elif defined(HAVE_GLUT_GLUT_H)
+#   include <GLUT/glut.h>
+# else
+#   error no glut.h
+# endif]],
+                           [[glutMainLoop()]])])
 
-  done
-  LIBS=${ax_save_LIBS}
-  ])
-  CPPFLAGS="${ax_save_CPPFLAGS}"
-  AC_LANG_POP(C)
+dnl
+dnl If X is present, assume GLUT depends on it.
+dnl
+AS_IF([test X$no_x != Xyes],
+      [GLUT_LIBS="${X_PRE_LIBS} -lXi ${X_EXTRA_LIBS} ${GLUT_LIBS}"])
+
+AC_CACHE_CHECK([for GLUT library], [ax_cv_check_glut_libglut],
+[ax_cv_check_glut_libglut="no"
+AC_LANG_PUSH(C)
+ax_save_CPPFLAGS="${CPPFLAGS}"
+CPPFLAGS="${GLUT_CFLAGS} ${CPPFLAGS}"
+ax_save_LIBS="${LIBS}"
+LIBS=""
+ax_check_libs="-lglut32 -lglut"
+for ax_lib in ${ax_check_libs}; do
+  AS_IF([test X$ax_compiler_ms = Xyes],
+        [ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`],
+        [ax_try_lib="${ax_lib}"])
+  LIBS="${ax_try_lib} ${GLUT_LIBS} ${ax_save_LIBS}"
+  AC_LINK_IFELSE([AX_CHECK_GLUT_PROGRAM],
+                 [ax_cv_check_glut_libglut="${ax_try_lib}"; break])
+done
 
-  if test "X${ax_cv_check_glut_libglut}" = "Xno"; then
-    no_glut="yes"
-    GLUT_CFLAGS=""
-    GLUT_LIBS=""
-  else
-    GLUT_LIBS="${ax_cv_check_glut_libglut} ${GLUT_LIBS}"
-  fi
-fi
+AS_IF([test "X$ax_cv_check_glut_libglut" = Xno -a "X$no_x" = Xyes],
+[LIBS='-framework GLUT'
+AC_LINK_IFELSE([AX_CHECK_GLUT_PROGRAM],
+               [ax_cv_check_glut_libglut="$LIBS"])])
+
+CPPFLAGS="${ax_save_CPPFLAGS}"
+LIBS="${ax_save_LIBS}"
+AC_LANG_POP(C)])
+
+AS_IF([test "X$ax_cv_check_glut_libglut" = Xno],
+      [no_glut="yes"; GLUT_CFLAGS=""; GLUT_LIBS=""],
+      [GLUT_LIBS="${ax_cv_check_glut_libglut} ${GLUT_LIBS}"])
 
 AC_SUBST([GLUT_CFLAGS])
 AC_SUBST([GLUT_LIBS])
@@ -429,77 +569,105 @@ AC_SUBST([GLUT_LIBS])
 
 dnl ---------------------------------------------------------------------------
 dnl Available from the GNU Autoconf Macro Archive at:
-dnl http://www.gnu.org/software/ac-archive/acx_pthread.html
+dnl http://www.gnu.org/software/autoconf-archive/ax_pthread.html
 dnl ---------------------------------------------------------------------------
 
-dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+dnl SYNOPSIS
 dnl
-dnl This macro figures out how to build C programs using POSIX threads.
-dnl It sets the PTHREAD_LIBS output variable to the threads library and
-dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
-dnl C compiler flags that are needed. (The user can also force certain
-dnl compiler flags/libs to be tested by setting these environment
-dnl variables.)
+dnl   AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
 dnl
-dnl Also sets PTHREAD_CC to any special C compiler that is needed for
-dnl multi-threaded programs (defaults to the value of CC otherwise).
-dnl (This is necessary on AIX to use the special cc_r compiler alias.)
+dnl DESCRIPTION
 dnl
-dnl NOTE: You are assumed to not only compile your program with these
-dnl flags, but also link it with them as well. e.g. you should link
-dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
-dnl $LIBS
+dnl   This macro figures out how to build C programs using POSIX threads. It
+dnl   sets the PTHREAD_LIBS output variable to the threads library and linker
+dnl   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+dnl   flags that are needed. (The user can also force certain compiler
+dnl   flags/libs to be tested by setting these environment variables.)
 dnl
-dnl If you are only building threads programs, you may wish to use
-dnl these variables in your default LIBS, CFLAGS, and CC:
+dnl   Also sets PTHREAD_CC to any special C compiler that is needed for
+dnl   multi-threaded programs (defaults to the value of CC otherwise). (This
+dnl   is necessary on AIX to use the special cc_r compiler alias.)
 dnl
-dnl        LIBS="$PTHREAD_LIBS $LIBS"
-dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
-dnl        CC="$PTHREAD_CC"
+dnl   NOTE: You are assumed to not only compile your program with these flags,
+dnl   but also link it with them as well. e.g. you should link with
+dnl   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
 dnl
-dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
-dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
-dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+dnl   If you are only building threads programs, you may wish to use these
+dnl   variables in your default LIBS, CFLAGS, and CC:
 dnl
-dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
-dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
-dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
-dnl default action will define HAVE_PTHREAD.
+dnl     LIBS="$PTHREAD_LIBS $LIBS"
+dnl     CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+dnl     CC="$PTHREAD_CC"
 dnl
-dnl Please let the authors know if this macro fails on any platform, or
-dnl if you have any other suggestions or comments. This macro was based
-dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
-dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
-dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
-dnl We are also grateful for the helpful feedback of numerous users.
+dnl   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+dnl   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+dnl   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
 dnl
-dnl @category InstalledPackages
-dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
-dnl @version 2005-01-14
-dnl @license GPLWithACException
+dnl   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+dnl   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+dnl   is not found. If ACTION-IF-FOUND is not specified, the default action
+dnl   will define HAVE_PTHREAD.
+dnl
+dnl   Please let the authors know if this macro fails on any platform, or if
+dnl   you have any other suggestions or comments. This macro was based on work
+dnl   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+dnl   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+dnl   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+dnl   grateful for the helpful feedback of numerous users.
+dnl
+dnl LICENSE
+dnl
+dnl   Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
+dnl
+dnl   This program is free software: you can redistribute it and/or modify it
+dnl   under the terms of the GNU General Public License as published by the
+dnl   Free Software Foundation, either version 3 of the License, or (at your
+dnl   option) any later version.
+dnl
+dnl   This program is distributed in the hope that it will be useful, but
+dnl   WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+dnl   Public License for more details.
+dnl
+dnl   You should have received a copy of the GNU General Public License along
+dnl   with this program. If not, see <http://www.gnu.org/licenses/>.
+dnl
+dnl   As a special exception, the respective Autoconf Macro's copyright owner
+dnl   gives unlimited permission to copy, distribute and modify the configure
+dnl   scripts that are the output of Autoconf when processing the Macro. You
+dnl   need not follow the terms of the GNU General Public License when using
+dnl   or distributing such scripts, even though portions of the text of the
+dnl   Macro appear in them. The GNU General Public License (GPL) does govern
+dnl   all other use of the material that constitutes the Autoconf Macro.
+dnl
+dnl   This special exception to the GPL applies to versions of the Autoconf
+dnl   Macro released by the Autoconf Archive. When you make and distribute a
+dnl   modified version of the Autoconf Macro, you may extend this special
+dnl   exception to the GPL to apply to your modified version as well.
 
-AC_DEFUN([ACX_PTHREAD], [
+AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
+AC_DEFUN([AX_PTHREAD], [
 AC_REQUIRE([AC_CANONICAL_HOST])
 AC_LANG_SAVE
 AC_LANG_C
-acx_pthread_ok=no
+ax_pthread_ok=no
 
-# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
-# It gets checked for in the link test anyway.
+dnl We used to check for pthread.h first, but this fails if pthread.h
+dnl requires special compiler flags (e.g. on True64 or Sequent).
+dnl It gets checked for in the link test anyway.
 
-# First of all, check if the user has set any of the PTHREAD_LIBS,
-# etcetera environment variables, and if threads linking works using
-# them:
+dnl First of all, check if the user has set any of the PTHREAD_LIBS,
+dnl etcetera environment variables, and if threads linking works using
+dnl them:
 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
         save_CFLAGS="$CFLAGS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
         save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
         AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
-        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
-        AC_MSG_RESULT($acx_pthread_ok)
-        if test x"$acx_pthread_ok" = xno; then
+        AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test x"$ax_pthread_ok" = xno; then
                 PTHREAD_LIBS=""
                 PTHREAD_CFLAGS=""
         fi
@@ -507,54 +675,59 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
         CFLAGS="$save_CFLAGS"
 fi
 
-# We must check for the threads library under a number of different
-# names; the ordering is very important because some systems
-# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
-# libraries is broken (non-POSIX).
-
-# Create a list of thread flags to try.  Items starting with a "-" are
-# C compiler flags, and other items are library names, except for "none"
-# which indicates that we try without any flags at all, and "pthread-config"
-# which is a program returning the flags for the Pth emulation library.
-
-acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
-
-# The ordering *is* (sometimes) important.  Some notes on the
-# individual items follow:
-
-# pthreads: AIX (must check this before -lpthread)
-# none: in case threads are in libc; should be tried before -Kthread and
-#       other compiler flags to prevent continual compiler warnings
-# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
-# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-#      doesn't hurt to check since this sometimes defines pthreads too;
-#      also defines -D_REENTRANT)
-# pthread: Linux, etcetera
-# --thread-safe: KAI C++
-# pthread-config: use pthread-config program (for GNU Pth library)
+dnl We must check for the threads library under a number of different
+dnl names; the ordering is very important because some systems
+dnl (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+dnl libraries is broken (non-POSIX).
+
+dnl Create a list of thread flags to try.  Items starting with a "-" are
+dnl C compiler flags, and other items are library names, except for "none"
+dnl which indicates that we try without any flags at all, and "pthread-config"
+dnl which is a program returning the flags for the Pth emulation library.
+
+ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+dnl The ordering *is* (sometimes) important.  Some notes on the
+dnl individual items follow:
+
+dnl pthreads: AIX (must check this before -lpthread)
+dnl none: in case threads are in libc; should be tried before -Kthread and
+dnl       other compiler flags to prevent continual compiler warnings
+dnl -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+dnl -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+dnl lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+dnl -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+dnl -pthreads: Solaris/gcc
+dnl -mthreads: Mingw32/gcc, Lynx/gcc
+dnl -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+dnl      doesn't hurt to check since this sometimes defines pthreads too;
+dnl      also defines -D_REENTRANT)
+dnl      ... -mt is also the pthreads flag for HP/aCC
+dnl pthread: Linux, etcetera
+dnl --thread-safe: KAI C++
+dnl pthread-config: use pthread-config program (for GNU Pth library)
 
 case "${host_cpu}-${host_os}" in
         *solaris*)
 
-        # On Solaris (at least, for some versions), libc contains stubbed
-        # (non-functional) versions of the pthreads routines, so link-based
-        # tests will erroneously succeed.  (We need to link with -pthread or
-        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
-        # a function called by this macro, so we could check for that, but
-        # who knows whether they'll stub that too in a future libc.)  So,
-        # we'll just look for -pthreads and -lpthread first:
+        dnl On Solaris (at least, for some versions), libc contains stubbed
+        dnl (non-functional) versions of the pthreads routines, so link-based
+        dnl tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        dnl -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        dnl a function called by this macro, so we could check for that, but
+        dnl who knows whether they'll stub that too in a future libc.)  So,
+        dnl we'll just look for -pthreads and -lpthread first:
 
-        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
+        ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
         ;;
+
+       *-darwin*)
+       ax_pthread_flags="-pthread $ax_pthread_flags"
+       ;;
 esac
 
-if test x"$acx_pthread_ok" = xno; then
-for flag in $acx_pthread_flags; do
+if test x"$ax_pthread_ok" = xno; then
+for flag in $ax_pthread_flags; do
 
         case $flag in
                 none)
@@ -567,8 +740,8 @@ for flag in $acx_pthread_flags; do
                 ;;
 
                pthread-config)
-               AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
-               if test x"$acx_pthread_config" = xno; then continue; fi
+               AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
+               if test x"$ax_pthread_config" = xno; then continue; fi
                PTHREAD_CFLAGS="`pthread-config --cflags`"
                PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
                ;;
@@ -584,26 +757,31 @@ for flag in $acx_pthread_flags; do
         LIBS="$PTHREAD_LIBS $LIBS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
-        # Check for various functions.  We must include pthread.h,
-        # since some functions may be macros.  (On the Sequent, we
-        # need a special flag -Kthread to make this header compile.)
-        # We check for pthread_join because it is in -lpthread on IRIX
-        # while pthread_create is in libc.  We check for pthread_attr_init
-        # due to DEC craziness with -lpthreads.  We check for
-        # pthread_cleanup_push because it is one of the few pthread
-        # functions on Solaris that doesn't have a non-functional libc stub.
-        # We try pthread_create on general principles.
-        AC_TRY_LINK([#include <pthread.h>],
-                    [pthread_t th; pthread_join(th, 0);
-                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
-                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
-                    [acx_pthread_ok=yes])
+        dnl Check for various functions.  We must include pthread.h,
+        dnl since some functions may be macros.  (On the Sequent, we
+        dnl need a special flag -Kthread to make this header compile.)
+        dnl We check for pthread_join because it is in -lpthread on IRIX
+        dnl while pthread_create is in libc.  We check for pthread_attr_init
+        dnl due to DEC craziness with -lpthreads.  We check for
+        dnl pthread_cleanup_push because it is one of the few pthread
+        dnl functions on Solaris that doesn't have a non-functional libc stub.
+        dnl We try pthread_create on general principles.
+        AC_TRY_LINK([#include <pthread.h>
+                    static void routine(void* a) {a=0;}
+                    static void* start_routine(void* a) {return a;}],
+                    [pthread_t th; pthread_attr_t attr;
+                     pthread_create(&th,0,start_routine,0);
+                     pthread_join(th, 0);
+                     pthread_attr_init(&attr);
+                     pthread_cleanup_push(routine, 0);
+                     pthread_cleanup_pop(0); ],
+                    [ax_pthread_ok=yes])
 
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        AC_MSG_RESULT($acx_pthread_ok)
-        if test "x$acx_pthread_ok" = xyes; then
+        AC_MSG_RESULT($ax_pthread_ok)
+        if test "x$ax_pthread_ok" = xyes; then
                 break;
         fi
 
@@ -612,18 +790,18 @@ for flag in $acx_pthread_flags; do
 done
 fi
 
-# Various other checks:
-if test "x$acx_pthread_ok" = xyes; then
+dnl Various other checks:
+if test "x$ax_pthread_ok" = xyes; then
         save_LIBS="$LIBS"
         LIBS="$PTHREAD_LIBS $LIBS"
         save_CFLAGS="$CFLAGS"
         CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
 
-        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+        dnl Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
        AC_MSG_CHECKING([for joinable pthread attribute])
        attr_name=unknown
        for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
-           AC_TRY_LINK([#include <pthread.h>], [int attr=$attr;],
+           AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
                         [attr_name=$attr; break])
        done
         AC_MSG_RESULT($attr_name)
@@ -647,8 +825,12 @@ if test "x$acx_pthread_ok" = xyes; then
         LIBS="$save_LIBS"
         CFLAGS="$save_CFLAGS"
 
-        # More AIX lossage: must compile with cc_r
-        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
+        dnl More AIX lossage: must compile with xlc_r or cc_r
+       if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+       fi
 else
         PTHREAD_CC="$CC"
 fi
@@ -657,13 +839,13 @@ AC_SUBST(PTHREAD_LIBS)
 AC_SUBST(PTHREAD_CFLAGS)
 AC_SUBST(PTHREAD_CC)
 
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$acx_pthread_ok" = xyes; then
+dnl Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$ax_pthread_ok" = xyes; then
         ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
         :
 else
-        acx_pthread_ok=no
+        ax_pthread_ok=no
         $2
 fi
 AC_LANG_RESTORE
-])dnl ACX_PTHREAD
+])dnl AX_PTHREAD
index 0fdd554ab4e0f5dd52f064907e4fdd816ccc5fc4..49216cbc884235a6b699fe473b54c07fc623b140 100644 (file)
@@ -1,43 +1,45 @@
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
-#
-# This file is part of GNU Libtool:
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
 m4_define([_LT_COPYING], [dnl
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006 Free Software Foundation, Inc.
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
+#                 Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
 #
-# This file is part of GNU Libtool:
-# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#   This file is part of GNU Libtool.
 #
-# 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.
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
 #
-# 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.
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
 #
-# 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.
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
 #
-# 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.
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 ])
 
-# serial 51 LT_INIT
+# serial 57 LT_INIT
 
 
 # LT_PREREQ(VERSION)
@@ -51,12 +53,26 @@ m4_defun([LT_PREREQ],
        [$2])])
 
 
+# _LT_CHECK_BUILDDIR
+# ------------------
+# Complain if the absolute build directory name contains unusual characters
+m4_defun([_LT_CHECK_BUILDDIR],
+[case `pwd` in
+  *\ * | *\    *)
+    AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;;
+esac
+])
+
+
 # LT_INIT([OPTIONS])
 # ------------------
 AC_DEFUN([LT_INIT],
 [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT
+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
 AC_BEFORE([$0], [LT_LANG])dnl
 AC_BEFORE([$0], [LT_OUTPUT])dnl
+AC_BEFORE([$0], [LTDL_INIT])dnl
+m4_require([_LT_CHECK_BUILDDIR])dnl
 
 dnl Autoconf doesn't catch unexpanded LT_ macros by default:
 m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl
@@ -66,8 +82,13 @@ dnl unless we require an AC_DEFUNed macro:
 AC_REQUIRE([LTOPTIONS_VERSION])dnl
 AC_REQUIRE([LTSUGAR_VERSION])dnl
 AC_REQUIRE([LTVERSION_VERSION])dnl
+AC_REQUIRE([LTOBSOLETE_VERSION])dnl
 m4_require([_LT_PROG_LTMAIN])dnl
-m4_require([_LT_SET_OPTIONS], [_LT_SET_OPTIONS([$1])])dnl
+
+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}])
+
+dnl Parse OPTIONS
+_LT_SET_OPTIONS([$0], [$1])
 
 # This can be used to rebuild libtool when needed
 LIBTOOL_DEPS="$ltmain"
@@ -80,7 +101,7 @@ _LT_SETUP
 
 # Only expand once:
 m4_define([LT_INIT])
-])# _LT_INIT
+])# LT_INIT
 
 # Old names:
 AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT])
@@ -102,7 +123,7 @@ m4_defun([_LT_CC_BASENAME],
     *) break;;
   esac
 done
-cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
 ])
 
 
@@ -122,6 +143,11 @@ m4_defun([_LT_FILEUTILS_DEFAULTS],
 m4_defun([_LT_SETUP],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl
+
+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl
+dnl
 _LT_DECL([], [host_alias], [0], [The host system])dnl
 _LT_DECL([], [host], [0])dnl
 _LT_DECL([], [host_os], [0])dnl
@@ -139,17 +165,18 @@ test -z "$LN_S" && LN_S="ln -s"
 _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl
 dnl
 AC_REQUIRE([LT_CMD_MAX_LEN])dnl
-AC_REQUIRE([AC_OBJEXT])dnl
 _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl
-AC_REQUIRE([AC_EXEEXT])dnl
 _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl
 dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
-m4_require([_LT_CHECK_XSI_SHELL])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl
 m4_require([_LT_CMD_RELOAD])dnl
 m4_require([_LT_CHECK_MAGIC_METHOD])dnl
+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl
 m4_require([_LT_CMD_OLD_ARCHIVE])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
+m4_require([_LT_WITH_SYSROOT])dnl
 
 _LT_CONFIG_LIBTOOL_INIT([
 # See if we are running on zsh, and set the options which allow our
@@ -165,7 +192,6 @@ fi
 _LT_CHECK_OBJDIR
 
 m4_require([_LT_TAG_COMPILER])dnl
-_LT_PROG_ECHO_BACKSLASH
 
 case $host_os in
 aix3*)
@@ -179,24 +205,6 @@ aix3*)
   ;;
 esac
 
-# Sed substitution that helps us do robust quoting.  It backslashifies
-# metacharacters that are still active within double-quoted strings.
-Xsed='sed -e 1s/^X//'
-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
-
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\([["`\\]]\)/\\\1/g'
-
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
-
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
-
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
-
 # Global variables:
 ofile=libtool
 can_build_shared=yes
@@ -237,6 +245,28 @@ _LT_CONFIG_COMMANDS
 ])# _LT_SETUP
 
 
+# _LT_PREPARE_SED_QUOTE_VARS
+# --------------------------
+# Define a few sed substitution that help us do robust quoting.
+m4_defun([_LT_PREPARE_SED_QUOTE_VARS],
+[# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([["`\\]]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+])
+
 # _LT_PROG_LTMAIN
 # ---------------
 # Note that this code is called both from `configure', and `config.status'
@@ -318,7 +348,7 @@ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])],
 # VALUE may be 0, 1 or 2 for a computed quote escaped value based on
 # VARNAME.  Any other value will be used directly.
 m4_define([_LT_DECL],
-[lt_if_append_uniq([lt_decl_varnames], [$2], [[, ]],
+[lt_if_append_uniq([lt_decl_varnames], [$2], [],
     [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name],
        [m4_ifval([$1], [$1], [$2])])
     lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3])
@@ -367,12 +397,12 @@ m4_define([lt_decl_dquote_varnames],
 # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...])
 # ---------------------------------------------------
 m4_define([lt_decl_varnames_tagged],
-[_$0(m4_quote(m4_default([$1], [[, ]])),
-     m4_quote(m4_if([$2], [],
-                    m4_quote(lt_decl_tag_varnames),
-                 m4_quote(m4_shift($@)))),
-     m4_split(m4_normalize(m4_quote(_LT_TAGS))))])
-m4_define([_lt_decl_varnames_tagged], [lt_combine([$1], [$2], [_], $3)])
+[m4_assert([$# <= 2])dnl
+_$0(m4_quote(m4_default([$1], [[, ]])),
+    m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]),
+    m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))])
+m4_define([_lt_decl_varnames_tagged],
+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])])
 
 
 # lt_decl_all_varnames([SEPARATOR], [VARNAME1...])
@@ -395,7 +425,7 @@ m4_define([_lt_decl_all_varnames],
 # declaration there will have the same value as in `configure'.  VARNAME
 # must have a single quote delimited value for this to work.
 m4_define([_LT_CONFIG_STATUS_DECLARE],
-[$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`'])
+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`'])
 
 
 # _LT_CONFIG_STATUS_DECLARATIONS
@@ -405,7 +435,7 @@ m4_define([_LT_CONFIG_STATUS_DECLARE],
 # embedded single quotes properly.  In configure, this macro expands
 # each variable declared with _LT_DECL (and _LT_TAGDECL) into:
 #
-#    <var>='`$ECHO "X$<var>" | $Xsed -e "$delay_single_quote_subst"`'
+#    <var>='`$ECHO "$<var>" | $SED "$delay_single_quote_subst"`'
 m4_defun([_LT_CONFIG_STATUS_DECLARATIONS],
 [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames),
     [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])])
@@ -504,12 +534,20 @@ LTCC='$LTCC'
 LTCFLAGS='$LTCFLAGS'
 compiler='$compiler_DEFAULT'
 
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$[]1
+_LTECHO_EOF'
+}
+
 # Quote evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_quote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -520,9 +558,9 @@ done
 # Double-quote double-evaled strings.
 for var in lt_decl_all_varnames([[ \
 ]], lt_decl_dquote_varnames); do
-    case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
     *[[\\\\\\\`\\"\\\$]]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
       ;;
     *)
       eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
@@ -530,16 +568,38 @@ for var in lt_decl_all_varnames([[ \
     esac
 done
 
-# Fix-up fallback echo if it was mangled by the above quoting rules.
-case \$lt_ECHO in
-*'\\\[$]0 --fallback-echo"')dnl "
-  lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\`
-  ;;
-esac
-
 _LT_OUTPUT_LIBTOOL_INIT
 ])
 
+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT])
+# ------------------------------------
+# Generate a child script FILE with all initialization necessary to
+# reuse the environment learned by the parent script, and make the
+# file executable.  If COMMENT is supplied, it is inserted after the
+# `#!' sequence but before initialization text begins.  After this
+# macro, additional text can be appended to FILE to form the body of
+# the child script.  The macro ends with non-zero status if the
+# file could not be fully written (such as if the disk is full).
+m4_ifdef([AS_INIT_GENERATED],
+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])],
+[m4_defun([_LT_GENERATED_FILE_INIT],
+[m4_require([AS_PREPARE])]dnl
+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl
+[lt_write_fail=0
+cat >$1 <<_ASEOF || lt_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+$2
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$1 <<\_ASEOF || lt_write_fail=1
+AS_SHELL_SANITIZE
+_AS_PREPARE
+exec AS_MESSAGE_FD>&1
+_ASEOF
+test $lt_write_fail = 0 && chmod +x $1[]dnl
+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT
 
 # LT_OUTPUT
 # ---------
@@ -549,20 +609,11 @@ _LT_OUTPUT_LIBTOOL_INIT
 AC_DEFUN([LT_OUTPUT],
 [: ${CONFIG_LT=./config.lt}
 AC_MSG_NOTICE([creating $CONFIG_LT])
-cat >"$CONFIG_LT" <<_LTEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-
-lt_cl_silent=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_LTEOF
+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"],
+[# Run this file to recreate a libtool stub with the current configuration.])
 
 cat >>"$CONFIG_LT" <<\_LTEOF
-AS_SHELL_SANITIZE
-_AS_PREPARE
-
-exec AS_MESSAGE_FD>&1
+lt_cl_silent=false
 exec AS_MESSAGE_LOG_FD>>config.log
 {
   echo
@@ -588,7 +639,7 @@ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl
 m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION])
 configured by $[0], generated by m4_PACKAGE_STRING.
 
-Copyright (C) 2006 Free Software Foundation, Inc.
+Copyright (C) 2011 Free Software Foundation, Inc.
 This config.lt script is free software; the Free Software Foundation
 gives unlimited permision to copy, distribute and modify it."
 
@@ -605,10 +656,10 @@ do
       lt_cl_silent=: ;;
 
     -*) AC_MSG_ERROR([unrecognized option: $[1]
-Try `$[0] --help' for more information.]) ;;
+Try \`$[0] --help' for more information.]) ;;
 
-    *) AC_MSG_ERROR([unrecognised argument: $[1]
-Try `$[0] --help for more information.]) ;;
+    *) AC_MSG_ERROR([unrecognized argument: $[1]
+Try \`$[0] --help' for more information.]) ;;
   esac
   shift
 done
@@ -633,15 +684,13 @@ chmod +x "$CONFIG_LT"
 # appending to config.log, which fails on DOS, as config.log is still kept
 # open by configure.  Here we exec the FD to /dev/null, effectively closing
 # config.log, so it can be properly (re)opened and appended to by config.lt.
-if test "$no_create" != yes; then
-  lt_cl_success=:
-  test "$silent" = yes &&
-    lt_config_lt_args="$lt_config_lt_args --quiet"
-  exec AS_MESSAGE_LOG_FD>/dev/null
-  $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-  exec AS_MESSAGE_LOG_FD>>config.log
-  $lt_cl_success || AS_EXIT(1)
-fi
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec AS_MESSAGE_LOG_FD>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec AS_MESSAGE_LOG_FD>>config.log
+$lt_cl_success || AS_EXIT(1)
 ])# LT_OUTPUT
 
 
@@ -670,12 +719,11 @@ _LT_CONFIG_SAVE_COMMANDS([
 #! $SHELL
 
 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
 _LT_COPYING
-# TEST SUITE MARKER ## BEGIN SOURCABLE
 _LT_LIBTOOL_TAGS
 
 # ### BEGIN LIBTOOL CONFIG
@@ -683,10 +731,6 @@ _LT_LIBTOOL_CONFIG_VARS
 _LT_LIBTOOL_TAG_VARS
 # ### END LIBTOOL CONFIG
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
 _LT_EOF
 
   case $host_os in
@@ -709,15 +753,12 @@ _LT_EOF
   # 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
-
-  _LT_PROG_XSI_SHELLFNS
+  sed '$q' "$ltmain" >> "$cfgfile" \
+     || (rm -f "$cfgfile"; exit 1)
 
-  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
-    || (rm -f "$cfgfile"; exit 1)
+  _LT_PROG_REPLACE_SHELLFNS
 
-  mv -f "$cfgfile" "$ofile" ||
+   mv -f "$cfgfile" "$ofile" ||
     (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
   chmod +x "$ofile"
 ],
@@ -762,6 +803,7 @@ AC_DEFUN([LT_LANG],
 m4_case([$1],
   [C],                 [_LT_LANG(C)],
   [C++],               [_LT_LANG(CXX)],
+  [Go],                        [_LT_LANG(GO)],
   [Java],              [_LT_LANG(GCJ)],
   [Fortran 77],                [_LT_LANG(F77)],
   [Fortran],           [_LT_LANG(FC)],
@@ -783,6 +825,31 @@ m4_defun([_LT_LANG],
 ])# _LT_LANG
 
 
+m4_ifndef([AC_PROG_GO], [
+############################################################
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_GO.  When it is available in    #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+############################################################
+m4_defun([AC_PROG_GO],
+[AC_LANG_PUSH(Go)dnl
+AC_ARG_VAR([GOC],     [Go compiler command])dnl
+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl
+_AC_ARG_VAR_LDFLAGS()dnl
+AC_CHECK_TOOL(GOC, gccgo)
+if test -z "$GOC"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo])
+  fi
+fi
+if test -z "$GOC"; then
+  AC_CHECK_PROG(GOC, gccgo, gccgo, false)
+fi
+])#m4_defun
+])#m4_ifndef
+
+
 # _LT_LANG_DEFAULT_CONFIG
 # -----------------------
 m4_defun([_LT_LANG_DEFAULT_CONFIG],
@@ -813,6 +880,10 @@ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
        m4_ifdef([LT_PROG_GCJ],
        [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])])
 
+AC_PROVIDE_IFELSE([AC_PROG_GO],
+  [LT_LANG(GO)],
+  [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])])
+
 AC_PROVIDE_IFELSE([LT_PROG_RC],
   [LT_LANG(RC)],
   [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])])
@@ -823,11 +894,13 @@ AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)])
 AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)])
 AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)])
 AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)])
+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)])
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_LIBTOOL_CXX], [])
 dnl AC_DEFUN([AC_LIBTOOL_F77], [])
 dnl AC_DEFUN([AC_LIBTOOL_FC], [])
 dnl AC_DEFUN([AC_LIBTOOL_GCJ], [])
+dnl AC_DEFUN([AC_LIBTOOL_RC], [])
 
 
 # _LT_TAG_COMPILER
@@ -856,8 +929,9 @@ compiler=$CC
 # Check for compiler boilerplate output or warnings with
 # the simple compiler test code.
 m4_defun([_LT_COMPILER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $RM conftest*
@@ -869,215 +943,320 @@ $RM conftest*
 # Check for linker boilerplate output or warnings with
 # the simple link test code.
 m4_defun([_LT_LINKER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+[m4_require([_LT_DECL_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$RM conftest*
+$RM -r conftest*
 ])# _LT_LINKER_BOILERPLATE
 
+# _LT_REQUIRED_DARWIN_CHECKS
+# -------------------------
+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+    AC_CHECK_TOOL([LIPO], [lipo], [:])
+    AC_CHECK_TOOL([OTOOL], [otool], [:])
+    AC_CHECK_TOOL([OTOOL64], [otool64], [:])
+    _LT_DECL([], [DSYMUTIL], [1],
+      [Tool to manipulate archived DWARF debug symbol files on Mac OS X])
+    _LT_DECL([], [NMEDIT], [1],
+      [Tool to change global to local symbols on Mac OS X])
+    _LT_DECL([], [LIPO], [1],
+      [Tool to manipulate fat objects and archives on Mac OS X])
+    _LT_DECL([], [OTOOL], [1],
+      [ldd/readelf like tool for Mach-O binaries on Mac OS X])
+    _LT_DECL([], [OTOOL64], [1],
+      [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+       # By default we will add the -single_module flag. You can override
+       # by either setting the environment variable LT_MULTI_MODULE
+       # non-empty at configure time, or by adding -multi_module to the
+       # link flags.
+       rm -rf libconftest.dylib*
+       echo "int foo(void){return 1;}" > conftest.c
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD
+       $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+         -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+       # If there is a non-empty error log, and "single_module"
+       # appears in it, assume the flag caused a linker warning
+        if test -s conftest.err && $GREP single_module conftest.err; then
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       # Otherwise, if the output was created with a 0 exit code from
+       # the compiler, it worked.
+       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+         lt_cv_apple_cc_single_mod=yes
+       else
+         cat conftest.err >&AS_MESSAGE_LOG_FD
+       fi
+       rm -rf libconftest.dylib*
+       rm -f conftest.*
+      fi])
+
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+       [lt_cv_ld_exported_symbols_list=yes],
+       [lt_cv_ld_exported_symbols_list=no])
+       LDFLAGS="$save_LDFLAGS"
+    ])
 
-# _LT_SYS_MODULE_PATH_AIX
-# -----------------------
+    AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load],
+      [lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
+      echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+      $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+      echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
+      $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -s conftest.err && $GREP force_load conftest.err; then
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+       lt_cv_ld_force_load=yes
+      else
+       cat conftest.err >&AS_MESSAGE_LOG_FD
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[012]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*) # darwin 5.x on
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+       10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+       10.[[012]]*)
+         _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+       10.*)
+         _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
+
+
+# _LT_DARWIN_LINKER_FEATURES([TAG])
+# ---------------------------------
+# Checks for linker and compiler features on darwin
+m4_defun([_LT_DARWIN_LINKER_FEATURES],
+[
+  m4_require([_LT_REQUIRED_DARWIN_CHECKS])
+  _LT_TAGVAR(archive_cmds_need_lc, $1)=no
+  _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_automatic, $1)=yes
+  _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+    m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes],
+                  [FC],  [_LT_TAGVAR(compiler_needs_object, $1)=yes])
+  else
+    _LT_TAGVAR(whole_archive_flag_spec, $1)=''
+  fi
+  _LT_TAGVAR(link_all_deplibs, $1)=yes
+  _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+    m4_if([$1], [CXX],
+[   if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+],[])
+  else
+  _LT_TAGVAR(ld_shlibs, $1)=no
+  fi
+])
+
+# _LT_SYS_MODULE_PATH_AIX([TAGNAME])
+# ----------------------------------
 # Links a minimal program and checks the executable
 # for the system default hardcoded library path. In most cases,
 # this is /usr/lib:/lib, but when the MPI compilers are used
 # the location of the communication and MPI libs are included too.
 # If we don't find anything, use the default library path according
 # to the aix ld manual.
+# Store the results from the different compilers for each TAGNAME.
+# Allow to override them for all tags through lt_cv_aix_libpath.
 m4_defun([_LT_SYS_MODULE_PATH_AIX],
-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-lt_aix_libpath_sed='
-    /Import File Strings/,/^$/ {
-       /^0/ {
-           s/^0  *\(.*\)$/\1/
-           p
-       }
-    }'
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then
-  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
-fi],[])
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+[m4_require([_LT_DECL_SED])dnl
+if test "${lt_cv_aix_libpath+set}" = set; then
+  aix_libpath=$lt_cv_aix_libpath
+else
+  AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])],
+  [AC_LINK_IFELSE([AC_LANG_PROGRAM],[
+  lt_aix_libpath_sed='[
+      /Import File Strings/,/^$/ {
+         /^0/ {
+             s/^0  *\([^ ]*\) *$/\1/
+             p
+         }
+      }]'
+  _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  # Check for a 64-bit object if we didn't find anything.
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+  fi],[])
+  if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then
+    _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib"
+  fi
+  ])
+  aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])
+fi
 ])# _LT_SYS_MODULE_PATH_AIX
 
 
 # _LT_SHELL_INIT(ARG)
 # -------------------
 m4_define([_LT_SHELL_INIT],
-[ifdef([AC_DIVERSION_NOTICE],
-            [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
-        [AC_DIVERT_PUSH(NOTICE)])
-$1
-AC_DIVERT_POP
-])# _LT_SHELL_INIT
+[m4_divert_text([M4SH-INIT], [$1
+])])# _LT_SHELL_INIT
+
 
 
 # _LT_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.
+# Find how we can fake an echo command that does not interpret backslash.
+# In particular, with Autoconf 2.60 or later we add some code to the start
+# of the generated configure script which will find a shell with a builtin
+# printf (which we can use as an echo command).
 m4_defun([_LT_PROG_ECHO_BACKSLASH],
-[_LT_SHELL_INIT([
-# Check that we are running under the correct shell.
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-case X$lt_ECHO in
-X*--fallback-echo)
-  # Remove one level of quotation (which was required for Make).
-  ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
-  ;;
-esac
-
-ECHO=${lt_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!
-  :
+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+AC_MSG_CHECKING([how to print strings])
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
 else
-  # 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 <<_LT_EOF
-[$]*
-_LT_EOF
-  exit 0
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$[]1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
 fi
 
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-if test -z "$lt_ECHO"; then
-  if test "X${echo_test_string+set}" != Xset; then
-    # find a string as large as possible, as long as the shell can cope with it
-    for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
-      # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-      if { echo_test_string=`eval $cmd`; } 2>/dev/null &&
-        { 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
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO "$*" 
+}
 
-         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
+case "$ECHO" in
+  printf*) AC_MSG_RESULT([printf]) ;;
+  print*) AC_MSG_RESULT([print -r]) ;;
+  *) AC_MSG_RESULT([cat]) ;;
+esac
 
-# Copy echo and quote the copy suitably for passing to libtool from
-# the Makefile, instead of quoting the original, which is used later.
-lt_ECHO=$ECHO
-if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
-   lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
-fi
+m4_ifdef([_AS_DETECT_SUGGESTED],
+[_AS_DETECT_SUGGESTED([
+  test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+    ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test "X`printf %s $ECHO`" = "X$ECHO" \
+      || test "X`print -r -- $ECHO`" = "X$ECHO" )])])
 
-AC_SUBST(lt_ECHO)
-])
 _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts])
-_LT_DECL([], [ECHO], [1],
-    [An echo program that does not interpret backslashes])
+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes])
 ])# _LT_PROG_ECHO_BACKSLASH
 
 
+# _LT_WITH_SYSROOT
+# ----------------
+AC_DEFUN([_LT_WITH_SYSROOT],
+[AC_MSG_CHECKING([for sysroot])
+AC_ARG_WITH([sysroot],
+[  --with-sysroot[=DIR] Search for dependent libraries within DIR
+                        (or the compiler's sysroot if not specified).],
+[], [with_sysroot=no])
+
+dnl lt_sysroot will always be passed unquoted.  We quote it here
+dnl in case the user passed a directory name.
+lt_sysroot=
+case ${with_sysroot} in #(
+ yes)
+   if test "$GCC" = yes; then
+     lt_sysroot=`$CC --print-sysroot 2>/dev/null`
+   fi
+   ;; #(
+ /*)
+   lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"`
+   ;; #(
+ no|'')
+   ;; #(
+ *)
+   AC_MSG_RESULT([${with_sysroot}])
+   AC_MSG_ERROR([The sysroot must be an absolute path.])
+   ;;
+esac
+
+ AC_MSG_RESULT([${lt_sysroot:-no}])
+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl
+[dependent libraries, and in which our libraries should be installed.])])
+
 # _LT_ENABLE_LOCK
 # ---------------
 m4_defun([_LT_ENABLE_LOCK],
-[AC_REQUIRE([AC_OBJEXT])dnl
-AC_ARG_ENABLE([libtool-lock],
+[AC_ARG_ENABLE([libtool-lock],
   [AS_HELP_STRING([--disable-libtool-lock],
     [avoid locking (might break parallel builds)])])
 test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
@@ -1102,7 +1281,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  echo '[#]line '$LINENO' "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
@@ -1133,13 +1312,17 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
       *32-bit*)
        case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_i386_fbsd"
+           ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_i386"
            ;;
@@ -1156,6 +1339,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*l
        ;;
       *64-bit*)
        case $host in
+         x86_64-*kfreebsd*-gnu)
+           LD="${LD-ld} -m elf_x86_64_fbsd"
+           ;;
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
@@ -1188,15 +1374,32 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|s390*-*tpf*|sparc*-*l
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
-sparc*-*solaris*)
+*-*solaris*)
   # 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
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)    LD="${LD-ld} -64" ;;
+      yes*)
+        case $host in
+        i?86-*-solaris*|x86_64-*-solaris*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        sparc*-*-solaris*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+        esac
+        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
+        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
+          LD="${LD-ld}_sol2"
+        fi
+        ;;
+      *)
+       if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
       esac
       ;;
     esac
@@ -1209,14 +1412,47 @@ need_locks="$enable_libtool_lock"
 ])# _LT_ENABLE_LOCK
 
 
+# _LT_PROG_AR
+# -----------
+m4_defun([_LT_PROG_AR],
+[AC_CHECK_TOOLS(AR, [ar], false)
+: ${AR=ar}
+: ${AR_FLAGS=cru}
+_LT_DECL([], [AR], [1], [The archiver])
+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
+
+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file],
+  [lt_cv_ar_at_file=no
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM],
+     [echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD'
+      AC_TRY_EVAL([lt_ar_try])
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       AC_TRY_EVAL([lt_ar_try])
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
+     ])
+  ])
+
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
+_LT_DECL([], [archiver_list_spec], [1],
+  [How to feed a file listing to the archiver])
+])# _LT_PROG_AR
+
+
 # _LT_CMD_OLD_ARCHIVE
 # -------------------
 m4_defun([_LT_CMD_OLD_ARCHIVE],
-[AC_CHECK_TOOL(AR, ar, false)
-test -z "$AR" && AR=ar
-test -z "$AR_FLAGS" && AR_FLAGS=cru
-_LT_DECL([], [AR], [1], [The archiver])
-_LT_DECL([], [AR_FLAGS], [1])
+[_LT_PROG_AR
 
 AC_CHECK_TOOL(STRIP, strip, :)
 test -z "$STRIP" && STRIP=:
@@ -1228,25 +1464,34 @@ _LT_DECL([], [RANLIB], [1],
     [Commands used to install an old-style archive])
 
 # Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
 old_postinstall_cmds='chmod 644 $oldlib'
 old_postuninstall_cmds=
 
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
     ;;
   *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
     ;;
   esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
 fi
+
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 _LT_DECL([], [old_postinstall_cmds], [2])
 _LT_DECL([], [old_postuninstall_cmds], [2])
 _LT_TAGDECL([], [old_archive_cmds], [2],
     [Commands used to build an old-style archive])
+_LT_DECL([], [lock_old_archive_extraction], [0],
+    [Whether to use a lock for old archive extraction])
 ])# _LT_CMD_OLD_ARCHIVE
 
 
@@ -1255,13 +1500,12 @@ _LT_TAGDECL([], [old_archive_cmds], [2],
 # ----------------------------------------------------------------
 # Check whether the given compiler option works
 AC_DEFUN([_LT_COMPILER_OPTION],
-[AC_REQUIRE([AC_OBJEXT])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_SED])dnl
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
    m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$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.
@@ -1272,15 +1516,15 @@ AC_CACHE_CHECK([$1], [$2],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        $2=yes
@@ -1308,18 +1552,19 @@ dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [])
 # Check whether the given linker option works
 AC_DEFUN([_LT_LINKER_OPTION],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_SED])dnl
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $3"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          $2=yes
@@ -1328,7 +1573,7 @@ AC_CACHE_CHECK([$1], [$2],
        $2=yes
      fi
    fi
-   $RM conftest*
+   $RM -r conftest*
    LDFLAGS="$save_LDFLAGS"
 ])
 
@@ -1371,7 +1616,7 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=-1;
     ;;
 
-  cygwin* | mingw*)
+  cygwin* | mingw* | cegcc*)
     # On Win9x/ME, this test blows up -- it succeeds, but takes
     # about 5 minutes as the teststring grows exponentially.
     # Worse, since 9x/ME are not pre-emptively multitasking,
@@ -1382,6 +1627,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=8192;
     ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
   amigaos*)
     # On AmigaOS with pdksh, this test takes hours, literally.
     # So we just punt and use a minimum line length of 8192.
@@ -1407,6 +1657,11 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     lt_cv_sys_max_cmd_len=196608
     ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -1426,35 +1681,41 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
   sysv5* | sco5v6* | sysv4.2uw2*)
     kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
     if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[       ]]//'`
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[        ]]//'`
     else
       lt_cv_sys_max_cmd_len=32768
     fi
     ;;
   *)
-    # Make teststring a little bigger before we do anything with it.
-    # a 1K string should be a reasonable start.
-    for i in 1 2 3 4 5 6 7 8 ; do
-      teststring=$teststring$teststring
-    done
-    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-    # If test is not a shell built-in, we'll probably end up computing a
-    # maximum length that is only half of the actual maximum length, but
-    # we can't tell.
-    while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \
-              = "XX$teststring$teststring"; } >/dev/null 2>&1 &&
-           test $i != 17 # 1/2 MB should be enough
-    do
-      i=`expr $i + 1`
-      teststring=$teststring$teststring
-    done
-    # Only check the string length outside the loop.
-    lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-    teststring=
-    # Add a significant safety factor because C++ compilers can tack on massive
-    # amounts of additional arguments before passing them to the linker.
-    # It appears as though 1/2 is a usable value.
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
     ;;
   esac
 ])
@@ -1492,7 +1753,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-[#line __oline__ "configure"
+[#line $LINENO "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -1533,11 +1794,13 @@ else
 #  endif
 #endif
 
-#ifdef __cplusplus
-extern "C" void exit (int);
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
 #endif
 
-void fnord() { int i=42;}
+int fnord () { return 42; }
 int main ()
 {
   void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
@@ -1546,13 +1809,17 @@ int main ()
   if (self)
     {
       if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
       /* dlclose (self); */
     }
   else
     puts (dlerror ());
 
-    exit (status);
+  return status;
 }]
 _LT_EOF
   if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
@@ -1591,7 +1858,7 @@ else
     lt_cv_dlopen_self=yes
     ;;
 
-  mingw* | pw32*)
+  mingw* | pw32* | cegcc*)
     lt_cv_dlopen="LoadLibrary"
     lt_cv_dlopen_libs=
     ;;
@@ -1615,7 +1882,7 @@ else
     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"],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
        [AC_CHECK_FUNC([dlopen],
              [lt_cv_dlopen="dlopen"],
          [AC_CHECK_LIB([dl], [dlopen],
@@ -1623,7 +1890,7 @@ else
            [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"])
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
              ])
            ])
          ])
@@ -1659,7 +1926,7 @@ else
     if test "x$lt_cv_dlopen_self" = xyes; then
       wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
-         lt_cv_dlopen_self_static, [dnl
+         lt_cv_dlopen_self_static, [dnl
          _LT_TRY_DLOPEN_SELF(
            lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
            lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
@@ -1701,7 +1968,7 @@ dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [])
 # Check to see if options -c and -o are simultaneously supported by compiler.
 # This macro does not hard code the compiler like AC_PROG_CC_C_O.
 m4_defun([_LT_COMPILER_C_O],
-[AC_REQUIRE([AC_OBJEXT])dnl
+[m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_TAG_COMPILER])dnl
 AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
@@ -1711,7 +1978,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -1722,16 +1989,16 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&AS_MESSAGE_LOG_FD
-   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
      $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
      if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
@@ -1888,14 +2155,76 @@ m4_defun([_LT_SYS_DYNAMIC_LINKER],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+m4_require([_LT_DECL_OBJDUMP])dnl
 m4_require([_LT_DECL_SED])dnl
+m4_require([_LT_CHECK_SHELL_FEATURES])dnl
 AC_MSG_CHECKING([dynamic linker characteristics])
-m4_case([$1],
-       [C], [withGCC=$GCC],
-       [CXX], [withGCC=$GXX],
-       [F77], [withGCC=$G77],
-       [FC], [withGCC=$ac_cv_fc_compiler_gnu],
-       [withGCC=$GCC])
+m4_if([$1],
+       [], [
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([[A-Za-z]]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi])
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
@@ -1909,20 +2238,6 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$withGCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if $ECHO "$sys_lib_search_path_spec" | $GREP ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -1932,7 +2247,7 @@ need_version=unknown
 
 case $host_os in
 aix3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
   shlibpath_var=LIBPATH
 
@@ -1940,8 +2255,8 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
-  version_type=linux
+aix[[4-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   hardcode_into_libs=yes
@@ -1985,13 +2300,18 @@ aix4* | aix5*)
   ;;
 
 amigaos*)
-  if test "$host_cpu" = m68k; then
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
     library_names_spec='$libname.ixlibrary $libname.a'
     # Create ${libname}_ixlibrary.a entries in /sys/libs.
-    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$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'
-  else
-    dynamic_linker=no
-  fi
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''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'
+    ;;
+  esac
   ;;
 
 beos*)
@@ -2001,7 +2321,7 @@ beos*)
   ;;
 
 bsdi[[45]]*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2014,14 +2334,15 @@ bsdi[[45]]*)
   # libtool to hard-code these into programs
   ;;
 
-cygwin* | mingw* | pw32*)
+cygwin* | mingw* | pw32* | cegcc*)
   version_type=windows
   shrext_cmds=".dll"
   need_version=no
   need_lib_prefix=no
 
-  case $withGCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
+  case $GCC,$cc_basename in
+  yes,*)
+    # gcc
     library_names_spec='$libname.dll.a'
     # DLL is installed to $(libdir)/../bin by postinstall_cmds
     postinstall_cmds='base_file=`basename \${file}`~
@@ -2042,36 +2363,83 @@ cygwin* | mingw* | pw32*)
     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"
+m4_if([$1], [],[
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"])
       ;;
-    mingw*)
+    mingw* | cegcc*)
       # 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
+    dynamic_linker='Win32 ld.exe'
+    ;;
+
+  *,cl*)
+    # Native MSVC
+    libname_spec='$name'
+    soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+    library_names_spec='${libname}.dll.lib'
+
+    case $build_os in
+    mingw*)
+      sys_lib_search_path_spec=
+      lt_save_ifs=$IFS
+      IFS=';'
+      for lt_path in $LIB
+      do
+        IFS=$lt_save_ifs
+        # Let DOS variable expansion print the short 8.3 style file name.
+        lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"`
+        sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path"
+      done
+      IFS=$lt_save_ifs
+      # Convert to MSYS style.
+      sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'`
+      ;;
+    cygwin*)
+      # Convert to unix form, then to dos form, then back to unix form
+      # but this time dos style (no spaces!) so that the unix form looks
+      # like /cygdrive/c/PROGRA~1:/cygdr...
+      sys_lib_search_path_spec=`cygpath --path --unix "$LIB"`
+      sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null`
+      sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      ;;
+    *)
+      sys_lib_search_path_spec="$LIB"
+      if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH.
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      # FIXME: find the short name or the path components, as spaces are
+      # common. (e.g. "Program Files" -> "PROGRA~1")
+      ;;
+    esac
+
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+    dynamic_linker='Win32 link.exe'
     ;;
 
   *)
+    # Assume MSVC wrapper
     library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    dynamic_linker='Win32 ld.exe'
     ;;
   esac
-  dynamic_linker='Win32 ld.exe'
   # FIXME: first we should search . and the directory the executable is in
   shlibpath_var=PATH
   ;;
@@ -2086,17 +2454,13 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$withGCC" = 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
+m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
@@ -2104,22 +2468,6 @@ dgux*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-kfreebsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
-
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
@@ -2127,7 +2475,7 @@ freebsd* | dragonfly*)
     objformat=`/usr/bin/objformat`
   else
     case $host_os in
-    freebsd[[123]]*) objformat=aout ;;
+    freebsd[[23]].*) objformat=aout ;;
     *) objformat=elf ;;
     esac
   fi
@@ -2145,7 +2493,7 @@ freebsd* | dragonfly*)
   esac
   shlibpath_var=LD_LIBRARY_PATH
   case $host_os in
-  freebsd2*)
+  freebsd2.*)
     shlibpath_overrides_runpath=yes
     ;;
   freebsd3.[[01]]* | freebsdelf3.[[01]]*)
@@ -2157,7 +2505,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -2165,12 +2513,26 @@ freebsd* | dragonfly*)
   ;;
 
 gnu*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+haiku*)
+  version_type=linux # correct to gnu/linux during the next big refactor
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -2216,12 +2578,14 @@ hpux9* | hpux10* | hpux11*)
     soname_spec='${libname}${release}${shared_ext}$major'
     ;;
   esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
   postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
   ;;
 
-interix3*)
-  version_type=linux
+interix[[3-9]]*)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
@@ -2237,7 +2601,7 @@ irix5* | irix6* | nonstopux*)
     nonstopux*) version_type=nonstopux ;;
     *)
        if test "$lt_cv_prog_gnu_ld" = yes; then
-               version_type=linux
+               version_type=linux # correct to gnu/linux during the next big refactor
        else
                version_type=irix
        fi ;;
@@ -2274,9 +2638,9 @@ linux*oldld* | linux*aout* | linux*coff*)
   dynamic_linker=no
   ;;
 
-# This must be Linux ELF.
-linux*)
-  version_type=linux
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2284,6 +2648,22 @@ linux*)
   finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath],
+    [lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \
+        LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\""
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+      [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null],
+        [lt_cv_shlibpath_overrides_runpath=yes])])
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+    ])
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
   # This implies no fast_install, which is unacceptable.
   # Some rework will be needed to allow for fast_install
   # before this can be enabled.
@@ -2291,7 +2671,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[  ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -2304,18 +2684,6 @@ linux*)
   dynamic_linker='GNU/Linux ld.so'
   ;;
 
-knetbsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
-
 netbsd*)
   version_type=sunos
   need_lib_prefix=no
@@ -2335,7 +2703,7 @@ netbsd*)
   ;;
 
 newsos6)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=yes
@@ -2404,7 +2772,7 @@ rdos*)
   ;;
 
 solaris*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2429,7 +2797,7 @@ sunos4*)
   ;;
 
 sysv4 | sysv4.3*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2453,7 +2821,7 @@ sysv4 | sysv4.3*)
 
 sysv4*MP*)
   if test -d /usr/nec ;then
-    version_type=linux
+    version_type=linux # correct to gnu/linux during the next big refactor
     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
     soname_spec='$libname${shared_ext}.$major'
     shlibpath_var=LD_LIBRARY_PATH
@@ -2484,17 +2852,17 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
 
 tpf*)
   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
-  library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   shlibpath_var=LD_LIBRARY_PATH
   shlibpath_overrides_runpath=no
   hardcode_into_libs=yes
   ;;
 
 uts4*)
-  version_type=linux
+  version_type=linux # correct to gnu/linux during the next big refactor
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LD_LIBRARY_PATH
@@ -2512,6 +2880,13 @@ if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
 _LT_DECL([], [variables_saved_for_relink], [1],
     [Variables whose values should be saved in libtool wrapper scripts and
     restored at link time])
@@ -2529,6 +2904,8 @@ _LT_DECL([], [library_names_spec], [1],
     The last name is the one that the linker finds with -lNAME]])
 _LT_DECL([], [soname_spec], [1],
     [[The coded name of the library, if different from the real name]])
+_LT_DECL([], [install_override_mode], [1],
+    [Permission mode override for installation of shared libraries])
 _LT_DECL([], [postinstall_cmds], [2],
     [Command to use after installation of a shared archive])
 _LT_DECL([], [postuninstall_cmds], [2],
@@ -2549,7 +2926,7 @@ _LT_DECL([], [sys_lib_dlsearch_path_spec], [2],
 
 # _LT_PATH_TOOL_PREFIX(TOOL)
 # --------------------------
-# find a file program which can recognise shared library
+# find a file program which can recognize shared library
 AC_DEFUN([_LT_PATH_TOOL_PREFIX],
 [m4_require([_LT_DECL_EGREP])dnl
 AC_MSG_CHECKING([for $1])
@@ -2619,7 +2996,7 @@ dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], [])
 
 # _LT_PATH_MAGIC
 # --------------
-# find a file program which can recognise a shared library
+# find a file program which can recognize a shared library
 m4_defun([_LT_PATH_MAGIC],
 [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
 if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -2641,6 +3018,7 @@ AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_CANONICAL_BUILD])dnl
 m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl
 
 AC_ARG_WITH([gnu-ld],
     [AS_HELP_STRING([--with-gnu-ld],
@@ -2762,6 +3140,11 @@ case $reload_flag in
 esac
 reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
   darwin*)
     if test "$GCC" = yes; then
       reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
@@ -2770,8 +3153,8 @@ case $host_os in
     fi
     ;;
 esac
-_LT_DECL([], [reload_flag], [1], [How to create reloadable object files])dnl
-_LT_DECL([], [reload_cmds], [2])dnl
+_LT_TAGDECL([], [reload_flag], [1], [How to create reloadable object files])dnl
+_LT_TAGDECL([], [reload_cmds], [2])dnl
 ])# _LT_CMD_RELOAD
 
 
@@ -2781,7 +3164,8 @@ _LT_DECL([], [reload_cmds], [2])dnl
 #  -- PORTME fill in with the dynamic library characteristics
 m4_defun([_LT_CHECK_MAGIC_METHOD],
 [m4_require([_LT_DECL_EGREP])
-AC_CACHE_CHECK([how to recognise dependent libraries],
+m4_require([_LT_DECL_OBJDUMP])
+AC_CACHE_CHECK([how to recognize dependent libraries],
 lt_cv_deplibs_check_method,
 [lt_cv_file_magic_cmd='$MAGIC_CMD'
 lt_cv_file_magic_test_file=
@@ -2798,7 +3182,7 @@ lt_cv_deplibs_check_method='unknown'
 # whether `pass_all' will *always* work, you probably want this one.
 
 case $host_os in
-aix4* | aix5*)
+aix[[4-9]]*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -2818,10 +3202,24 @@ cygwin*)
   lt_cv_file_magic_cmd='func_win32_libid'
   ;;
 
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
 mingw* | pw32*)
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
+
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
   lt_cv_file_magic_cmd='$OBJDUMP -f'
   ;;
 
@@ -2829,7 +3227,7 @@ darwin* | rhapsody*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-freebsd* | kfreebsd*-gnu | dragonfly*)
+freebsd* | dragonfly*)
   if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
     case $host_cpu in
     i*86 )
@@ -2849,6 +3247,10 @@ gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 hpux10.20* | hpux11*)
   lt_cv_file_magic_cmd=/usr/bin/file
   case $host_cpu in
@@ -2857,17 +3259,17 @@ hpux10.20* | hpux11*)
     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_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]']
     lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_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
   ;;
 
-interix3*)
+interix[[3-9]]*)
   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
   lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
   ;;
@@ -2882,12 +3284,12 @@ irix5* | irix6* | nonstopux*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-# This must be Linux ELF.
-linux*)
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-netbsd* | knetbsd*-gnu)
+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
@@ -2961,6 +3363,21 @@ tpf*)
   ;;
 esac
 ])
+
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
+
 file_magic_cmd=$lt_cv_file_magic_cmd
 deplibs_check_method=$lt_cv_deplibs_check_method
 test -z "$deplibs_check_method" && deplibs_check_method=unknown
@@ -2968,7 +3385,11 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 _LT_DECL([], [deplibs_check_method], [1],
     [Method to check whether dependent libraries are shared objects])
 _LT_DECL([], [file_magic_cmd], [1],
-    [Command to use when deplibs_check_method == "file_magic"])
+    [Command to use when deplibs_check_method = "file_magic"])
+_LT_DECL([], [file_magic_glob], [1],
+    [How to find potential files when deplibs_check_method = "file_magic"])
+_LT_DECL([], [want_nocaseglob], [1],
+    [Find potential files using nocaseglob when deplibs_check_method = "file_magic"])
 ])# _LT_CHECK_MAGIC_METHOD
 
 
@@ -2977,7 +3398,6 @@ _LT_DECL([], [file_magic_cmd], [1],
 # find the pathname to a BSD- or MS-compatible name lister
 AC_DEFUN([LT_PATH_NM],
 [AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_OBJEXT])dnl
 AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM,
 [if test -n "$NM"; then
   # Let the user override the test.
@@ -3026,7 +3446,19 @@ if test "$lt_cv_path_NM" != "no"; then
   NM="$lt_cv_path_NM"
 else
   # Didn't find any BSD compatible name lister, look for dumpbin.
-  AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :)
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :)
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
   AC_SUBST([DUMPBIN])
   if test "$DUMPBIN" != ":"; then
     NM="$DUMPBIN"
@@ -3039,13 +3471,13 @@ _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl
 AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface],
   [lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&AS_MESSAGE_LOG_FD
-  (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD)
+  (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD)
   cat conftest.out >&AS_MESSAGE_LOG_FD
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -3060,6 +3492,67 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AM_PROG_NM], [])
 dnl AC_DEFUN([AC_PROG_NM], [])
 
+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+# --------------------------------
+# how to determine the name of the shared library
+# associated with a specific link library.
+#  -- PORTME fill in with the dynamic library characteristics
+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB],
+[m4_require([_LT_DECL_EGREP])
+m4_require([_LT_DECL_OBJDUMP])
+m4_require([_LT_DECL_DLLTOOL])
+AC_CACHE_CHECK([how to associate runtime and link libraries],
+lt_cv_sharedlib_from_linklib_cmd,
+[lt_cv_sharedlib_from_linklib_cmd='unknown'
+
+case $host_os in
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
+    ;;
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
+    ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
+esac
+])
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
+
+_LT_DECL([], [sharedlib_from_linklib_cmd], [1],
+    [Command to associate shared and link libraries])
+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB
+
+
+# _LT_PATH_MANIFEST_TOOL
+# ----------------------
+# locate the manifest tool
+m4_defun([_LT_PATH_MANIFEST_TOOL],
+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :)
+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool],
+  [lt_cv_path_mainfest_tool=no
+  echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD
+  $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
+  cat conftest.err >&AS_MESSAGE_LOG_FD
+  if $GREP 'Manifest Tool' conftest.out > /dev/null; then
+    lt_cv_path_mainfest_tool=yes
+  fi
+  rm -f conftest*])
+if test "x$lt_cv_path_mainfest_tool" != xyes; then
+  MANIFEST_TOOL=:
+fi
+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl
+])# _LT_PATH_MANIFEST_TOOL
+
 
 # LT_LIB_M
 # --------
@@ -3068,7 +3561,7 @@ AC_DEFUN([LT_LIB_M],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
 case $host in
-*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*)
   # These system don't have libm, or don't need it
   ;;
 *-ncr-sysv4.3*)
@@ -3096,7 +3589,12 @@ m4_defun([_LT_COMPILER_NO_RTTI],
 _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
 
 if test "$GCC" = yes; then
-  _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+  case $cc_basename in
+  nvcc*)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;;
+  *)
+    _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;;
+  esac
 
   _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
     lt_cv_prog_compiler_rtti_exceptions,
@@ -3113,9 +3611,10 @@ _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1],
 m4_defun([_LT_CMD_GLOBAL_SYMBOLS],
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
 AC_REQUIRE([LT_PATH_LD])dnl
+m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_DECL_EGREP])dnl
 m4_require([_LT_TAG_COMPILER])dnl
 
@@ -3137,7 +3636,7 @@ case $host_os in
 aix*)
   symcode='[[BCDT]]'
   ;;
-cygwin* | mingw* | pw32*)
+cygwin* | mingw* | pw32* | cegcc*)
   symcode='[[ABCDGISTW]]'
   ;;
 hpux*)
@@ -3180,7 +3679,8 @@ esac
 lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
 
 # Transform an extracted symbol line into symbol name and symbol address
-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
 
 # Handle CRLF in mingw tool chain
 opt_cr=
@@ -3204,6 +3704,7 @@ for ac_symprfx in "" "_"; do
     # which start with @ or ?.
     lt_cv_sys_global_symbol_pipe="$AWK ['"\
 "     {last_section=section; section=\$ 3};"\
+"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
 "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
 "     \$ 0!~/External *\|/{next};"\
 "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
@@ -3214,8 +3715,9 @@ for ac_symprfx in "" "_"; do
 "     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
 "     ' prfx=^$ac_symprfx]"
   else
-    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[   ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[    ]]\($symcode$symcode*\)[[       ]][[    ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
   fi
+  lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'"
 
   # Check to see that the pipe works correctly.
   pipe_works=no
@@ -3226,7 +3728,8 @@ for ac_symprfx in "" "_"; do
 extern "C" {
 #endif
 char nm_test_var;
-void nm_test_func(){}
+void nm_test_func(void);
+void nm_test_func(void){}
 #ifdef __cplusplus
 }
 #endif
@@ -3236,7 +3739,7 @@ _LT_EOF
   if AC_TRY_EVAL(ac_compile); then
     # Now try to grab the symbols.
     nlist=conftest.nm
-    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then
       # Try sorting and uniquifying the output.
       if sort "$nlist" | uniq > "$nlist"T; then
        mv -f "$nlist"T "$nlist"
@@ -3248,6 +3751,18 @@ _LT_EOF
       if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
        if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
          cat <<_LT_EOF > conftest.$ac_ext
+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
+/* DATA imports from DLLs on WIN32 con't be const, because runtime
+   relocations are performed -- see ld's documentation on pseudo-relocs.  */
+# define LT@&t@_DLSYM_CONST
+#elif defined(__osf__)
+/* This system does not cope well with relocations in const data.  */
+# define LT@&t@_DLSYM_CONST
+#else
+# define LT@&t@_DLSYM_CONST const
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -3259,7 +3774,7 @@ _LT_EOF
          cat <<_LT_EOF >> conftest.$ac_ext
 
 /* The mapping between symbol names and symbols.  */
-const struct {
+LT@&t@_DLSYM_CONST struct {
   const char *name;
   void       *address;
 }
@@ -3285,15 +3800,15 @@ static const void *lt_preloaded_setup() {
 _LT_EOF
          # Now try linking the two files.
          mv conftest.$ac_objext conftstm.$ac_objext
-         lt_save_LIBS="$LIBS"
-         lt_save_CFLAGS="$CFLAGS"
+         lt_globsym_save_LIBS=$LIBS
+         lt_globsym_save_CFLAGS=$CFLAGS
          LIBS="conftstm.$ac_objext"
          CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
          if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
            pipe_works=yes
          fi
-         LIBS="$lt_save_LIBS"
-         CFLAGS="$lt_save_CFLAGS"
+         LIBS=$lt_globsym_save_LIBS
+         CFLAGS=$lt_globsym_save_CFLAGS
        else
          echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
        fi
@@ -3307,7 +3822,7 @@ _LT_EOF
     echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
     cat conftest.$ac_ext >&5
   fi
-  rm -f conftest* conftst*
+  rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
   if test "$pipe_works" = yes; then
@@ -3326,6 +3841,13 @@ else
   AC_MSG_RESULT(ok)
 fi
 
+# Response file support.
+if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+  nm_file_list_spec='@'
+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then
+  nm_file_list_spec='@'
+fi
+
 _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1],
     [Take the output of nm and produce a listing of raw symbols and C names])
 _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
@@ -3333,6 +3855,11 @@ _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1],
 _LT_DECL([global_symbol_to_c_name_address],
     [lt_cv_sys_global_symbol_to_c_name_address], [1],
     [Transform the output of nm in a C name address pair])
+_LT_DECL([global_symbol_to_c_name_address_lib_prefix],
+    [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1],
+    [Transform the output of nm in a C name address pair when lib prefix is needed])
+_LT_DECL([], [nm_file_list_spec], [1],
+    [Specify filename containing input files for $NM])
 ]) # _LT_CMD_GLOBAL_SYMBOLS
 
 
@@ -3344,7 +3871,6 @@ _LT_TAGVAR(lt_prog_compiler_wl, $1)=
 _LT_TAGVAR(lt_prog_compiler_pic, $1)=
 _LT_TAGVAR(lt_prog_compiler_static, $1)=
 
-AC_MSG_CHECKING([for $compiler option to produce PIC])
 m4_if([$1], [CXX], [
   # C++ specific cases for pic, static, wl, etc.
   if test "$GXX" = yes; then
@@ -3359,21 +3885,32 @@ m4_if([$1], [CXX], [
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       fi
       ;;
+
     amigaos*)
-      if test "$host_cpu" = m68k; then
-        # FIXME: we need at least 68020 code to build shared libraries, but
-        # adding the `-m68020' flag to GCC prevents building anything better,
-        # like `-m68040'.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-      fi
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
       ;;
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
-    mingw* | os2* | pw32*)
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -3384,7 +3921,12 @@ m4_if([$1], [CXX], [
       # DJGPP does not support shared libraries at all
       _LT_TAGVAR(lt_prog_compiler_pic, $1)=
       ;;
-    interix3*)
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+    interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -3394,10 +3936,11 @@ m4_if([$1], [CXX], [
       fi
       ;;
     hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
       case $host_cpu in
-      hppa*64*|ia64*)
+      hppa*64*)
        ;;
       *)
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
@@ -3415,7 +3958,7 @@ m4_if([$1], [CXX], [
     esac
   else
     case $host_os in
-      aix4* | aix5*)
+      aix[[4-9]]*)
        # All AIX code is PIC.
        if test "$host_cpu" = ia64; then
          # AIX 5 now supports IA64 processor
@@ -3432,16 +3975,12 @@ m4_if([$1], [CXX], [
          ;;
        esac
        ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-        case $cc_basename in
-          xlc*)
-          _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-          _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-          ;;
-        esac
-        ;;
+      mingw* | cygwin* | os2* | pw32* | cegcc*)
+       # This hack is so that the source file can tell whether it is being
+       # built for inclusion in a dll (and should export symbols for example).
+       m4_if([$1], [GCJ], [],
+         [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
+       ;;
       dgux*)
        case $cc_basename in
          ec++*)
@@ -3455,7 +3994,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      freebsd* | kfreebsd*-gnu | dragonfly*)
+      freebsd* | dragonfly*)
        # FreeBSD uses GNU C++
        ;;
       hpux9* | hpux10* | hpux11*)
@@ -3498,20 +4037,27 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      linux*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
        case $cc_basename in
          KCC*)
            # KAI C++ Compiler
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
            ;;
-         icpc* | ecpc* )
-           # Intel C++
+         ecpc* )
+           # old Intel C++ for x86_64 which still supported -KPIC.
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
            ;;
-         pgCC*)
+         icpc* )
+           # Intel C++, used to be incompatible with GCC.
+           # ICC 10 doesn't accept -KPIC any more.
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+           ;;
+         pgCC* | pgcpp*)
            # Portland Group C++ compiler
            _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
@@ -3524,7 +4070,21 @@ m4_if([$1], [CXX], [
            _LT_TAGVAR(lt_prog_compiler_pic, $1)=
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
            ;;
+         xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*)
+           # IBM XL 8.0, 9.0 on PPC and BlueGene
+           _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+           _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+           ;;
          *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
            ;;
        esac
        ;;
@@ -3573,7 +4133,7 @@ m4_if([$1], [CXX], [
        ;;
       solaris*)
        case $cc_basename in
-         CC*)
+         CC* | sunCC*)
            # Sun C++ 4.2, 5.x and Centerline C++
            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -3644,22 +4204,31 @@ m4_if([$1], [CXX], [
       ;;
 
     amigaos*)
-      if test "$host_cpu" = m68k; then
-        # FIXME: we need at least 68020 code to build shared libraries, but
-        # adding the `-m68020' flag to GCC prevents building anything better,
-        # like `-m68040'.
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
-      fi
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
       ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
 
     darwin* | rhapsody*)
@@ -3668,11 +4237,18 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       ;;
 
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      _LT_TAGVAR(lt_prog_compiler_static, $1)=
+      ;;
+
     hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
       case $host_cpu in
-      hppa*64*|ia64*)
+      hppa*64*)
        # +Z the default
        ;;
       *)
@@ -3681,7 +4257,7 @@ m4_if([$1], [CXX], [
       esac
       ;;
 
-    interix3*)
+    interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -3709,6 +4285,15 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
       ;;
     esac
+
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker '
+      if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
+        _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)"
+      fi
+      ;;
+    esac
   else
     # PORTME Check for flag to pass linker flags through the system compiler.
     case $host_os in
@@ -3721,21 +4306,12 @@ m4_if([$1], [CXX], [
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
       fi
       ;;
-    darwin*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      case $cc_basename in
-      xlc*)
-        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
-        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-        ;;
-      esac
-      ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      m4_if([$1], [GCJ], [],
+       [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -3760,14 +4336,34 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux*)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
       case $cc_basename in
-      icc* | ecc*)
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
        _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
        _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
         ;;
-      pgcc* | pgf77* | pgf90* | pgf95*)
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='--static'
+       ;;
+      nagfor*)
+       # NAG Fortran compiler
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+       ;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
        # which looks to be a dead project)
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -3779,6 +4375,43 @@ m4_if([$1], [CXX], [
         # All Alpha code is PIC.
         _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         ;;
+      xl* | bgxl* | bgf* | mpixl*)
+       # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+       _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic'
+       _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink'
+       ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       *Sun\ F* | *Sun*Fortran*)
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+         ;;
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+        *Intel*\ [[CF]]*Compiler*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-static'
+         ;;
+       *Portland\ Group*)
+         _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+         _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         ;;
+       esac
+       ;;
       esac
       ;;
 
@@ -3807,7 +4440,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       case $cc_basename in
-      f77* | f90* | f95*)
+      f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
       *)
        _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
@@ -3864,16 +4497,18 @@ case $host_os in
     _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])"
     ;;
 esac
-AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
-       [How to pass a linker flag through the compiler])
+
+AC_CACHE_CHECK([for $compiler option to produce PIC],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)],
+  [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)])
+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)
 
 #
 # Check to make sure the PIC flag actually works.
 #
 if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then
   _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works],
-    [_LT_TAGVAR(lt_prog_compiler_pic_works, $1)],
+    [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)],
     [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [],
     [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in
      "" | " "*) ;;
@@ -3885,12 +4520,14 @@ fi
 _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1],
        [Additional compiler flags for building library objects])
 
+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1],
+       [How to pass a linker flag through the compiler])
 #
 # Check to make sure the static flag actually works.
 #
 wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\"
 _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_TAGVAR(lt_prog_compiler_static_works, $1),
+  _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1),
   $lt_tmp_static_flag,
   [],
   [_LT_TAGVAR(lt_prog_compiler_static, $1)=])
@@ -3905,32 +4542,45 @@ _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1],
 m4_defun([_LT_LINKER_SHLIBS],
 [AC_REQUIRE([LT_PATH_LD])dnl
 AC_REQUIRE([LT_PATH_NM])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
 m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_DECL_SED])dnl
 m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl
 m4_require([_LT_TAG_COMPILER])dnl
 AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
 m4_if([$1], [CXX], [
   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   case $host_os in
-  aix4* | aix5*)
+  aix[[4-9]]*)
     # 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
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
     if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
     else
       _LT_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_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
-  ;;
-  cygwin* | mingw*)
-    _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    ;;
+  cygwin* | mingw* | cegcc*)
+    case $cc_basename in
+    cl*)
+      _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+      ;;
+    *)
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
+      ;;
+    esac
+    ;;
   *)
     _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  ;;
+    ;;
   esac
 ], [
   runpath_var=
@@ -3938,13 +4588,14 @@ m4_if([$1], [CXX], [
   _LT_TAGVAR(always_export_symbols, $1)=no
   _LT_TAGVAR(archive_cmds, $1)=
   _LT_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_TAGVAR(compiler_needs_object, $1)=no
   _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
   _LT_TAGVAR(export_dynamic_flag_spec, $1)=
   _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   _LT_TAGVAR(hardcode_automatic, $1)=no
   _LT_TAGVAR(hardcode_direct, $1)=no
+  _LT_TAGVAR(hardcode_direct_absolute, $1)=no
   _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-  _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
   _LT_TAGVAR(hardcode_libdir_separator, $1)=
   _LT_TAGVAR(hardcode_minus_L, $1)=no
   _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -3963,16 +4614,18 @@ m4_if([$1], [CXX], [
   # it will be wrapped by ` (' and `)$', so one must not match beginning or
   # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
   # as well as any symbol that contains `d'.
-  _LT_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
   # the symbol is explicitly referenced.  Since portable code cannot
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
   extract_expsyms_cmds=
 
   case $host_os in
-  cygwin* | mingw* | pw32*)
+  cygwin* | mingw* | pw32* | cegcc*)
     # FIXME: the MSVC++ port hasn't been tested in a loooong time
     # When not using gcc, we currently assume that we are using
     # Microsoft Visual C++.
@@ -3990,7 +4643,33 @@ m4_if([$1], [CXX], [
   esac
 
   _LT_TAGVAR(ld_shlibs, $1)=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
   if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+       # The AIX port of GNU ld has always aspired to compatibility
+       # with the native linker.  However, as the warning in the GNU ld
+       # block says, versions before 2.19.5* couldn't really create working
+       # shared libraries, regardless of the interface used.
+       case `$LD -v 2>&1` in
+         *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+         *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;;
+         *\ \(GNU\ Binutils\)\ [[3-9]]*) ;;
+         *)
+           lt_use_gnu_ld_interface=yes
+           ;;
+       esac
+       ;;
+      *)
+       lt_use_gnu_ld_interface=yes
+       ;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
 
@@ -4008,6 +4687,7 @@ m4_if([$1], [CXX], [
     fi
     supports_anon_versioning=no
     case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
       *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
       *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
       *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
@@ -4017,36 +4697,36 @@ m4_if([$1], [CXX], [
 
     # See if GNU ld supports shared libraries.
     case $host_os in
-    aix3* | aix4* | aix5*)
+    aix[[3-9]]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
        _LT_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** Warning: the GNU linker, at least up to release 2.19, is reported
 *** to be unable to reliably create shared libraries on AIX.
 *** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
 
 _LT_EOF
       fi
       ;;
 
     amigaos*)
-      if test "$host_cpu" = m68k; then
-        _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> 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_TAGVAR(ld_shlibs, $1)=no
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
       ;;
 
     beos*)
@@ -4060,14 +4740,16 @@ _LT_EOF
       fi
       ;;
 
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
       # as there is no search path for DLLs.
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_TAGVAR(always_export_symbols, $1)=no
       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname']
 
       if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -4085,7 +4767,12 @@ _LT_EOF
       fi
       ;;
 
-    interix3*)
+    haiku*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      _LT_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    interix[[3-9]]*)
       _LT_TAGVAR(hardcode_direct, $1)=no
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -4100,7 +4787,7 @@ _LT_EOF
       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux*|tpf*)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
        case $cc_basename in
@@ -4110,14 +4797,16 @@ _LT_EOF
       if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
         && test "$tmp_diet" = no
       then
-       tmp_addflag=
+       tmp_addflag=' $pic_flag'
+       tmp_sharedflag='-shared'
        case $cc_basename,$host_cpu in
         pgcc*)                         # Portland Group C compiler
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          tmp_addflag=' $pic_flag'
          ;;
-       pgf77* | pgf90* | pgf95*)       # Portland Group f77 and f90 compilers
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+       pgf77* | pgf90* | pgf95* | pgfortran*)
+                                       # Portland Group f77 and f90 compilers
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
          tmp_addflag=' $pic_flag -Mnomain' ;;
        ecc*,ia64* | icc*,ia64*)        # Intel C compiler on ia64
          tmp_addflag=' -i_dynamic' ;;
@@ -4125,13 +4814,48 @@ _LT_EOF
          tmp_addflag=' -i_dynamic -nofor_main' ;;
        ifc* | ifort*)                  # Intel Fortran compiler
          tmp_addflag=' -nofor_main' ;;
+       lf95*)                          # Lahey Fortran 8.1
+         _LT_TAGVAR(whole_archive_flag_spec, $1)=
+         tmp_sharedflag='--shared' ;;
+       xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+         tmp_sharedflag='-qmkshrobj'
+         tmp_addflag= ;;
+       nvcc*)  # Cuda Compiler Driver 2.2
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         ;;
        esac
-
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+         _LT_TAGVAR(compiler_needs_object, $1)=yes
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       esac
+       _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
         if test "x$supports_anon_versioning" = xyes; then
-          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~echo "local: *; };" >> $output_objdir/$libname.ver~$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+          _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+           cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+           echo "local: *; };" >> $output_objdir/$libname.ver~
+           $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
         fi
+
+       case $cc_basename in
+       xlf* | bgf* | bgxlf* | mpixlf*)
+         # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+         _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+         if test "x$supports_anon_versioning" = xyes; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+             cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+             echo "local: *; };" >> $output_objdir/$libname.ver~
+             $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+         fi
+         ;;
+       esac
       else
         _LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4142,8 +4866,8 @@ _LT_EOF
        _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
        wlarc=
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       fi
       ;;
 
@@ -4161,8 +4885,8 @@ _LT_EOF
 
 _LT_EOF
       elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4170,7 +4894,7 @@ _LT_EOF
 
     sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
       case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) 
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
        _LT_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
@@ -4208,8 +4932,8 @@ _LT_EOF
 
     *)
       if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
       else
        _LT_TAGVAR(ld_shlibs, $1)=no
       fi
@@ -4239,7 +4963,7 @@ _LT_EOF
       fi
       ;;
 
-    aix4* | aix5*)
+    aix[[4-9]]*)
       if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
@@ -4249,8 +4973,10 @@ _LT_EOF
       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
+       # Also, AIX nm treats weak defined symbols like other global
+       # defined symbols, whereas GNU nm marks them as "W".
        if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
-         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+         _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
        else
          _LT_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
@@ -4259,12 +4985,12 @@ _LT_EOF
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
        # need to do runtime linking.
-       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
          for ld_flag in $LDFLAGS; do
-         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-           aix_use_runtimelinking=yes
-           break
-         fi
+         if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+           aix_use_runtimelinking=yes
+           break
+         fi
          done
          ;;
        esac
@@ -4281,6 +5007,7 @@ _LT_EOF
 
       _LT_TAGVAR(archive_cmds, $1)=''
       _LT_TAGVAR(hardcode_direct, $1)=yes
+      _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
       _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
@@ -4291,19 +5018,19 @@ _LT_EOF
        # 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
+          strings "$collect2name" | $GREP resolve_lib_name >/dev/null
          then
-         # We have reworked collect2
-         _LT_TAGVAR(hardcode_direct, $1)=yes
+         # We have reworked collect2
+         :
          else
-         # We have old collect2
-         _LT_TAGVAR(hardcode_direct, $1)=unsupported
-         # It fails to find uninstalled libraries when the uninstalled
-         # path is not listed in the libpath.  Setting hardcode_minus_L
-         # to unsupported forces relinking
-         _LT_TAGVAR(hardcode_minus_L, $1)=yes
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         # We have old collect2
+         _LT_TAGVAR(hardcode_direct, $1)=unsupported
+         # It fails to find uninstalled libraries when the uninstalled
+         # path is not listed in the libpath.  Setting hardcode_minus_L
+         # to unsupported forces relinking
+         _LT_TAGVAR(hardcode_minus_L, $1)=yes
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=
          fi
          ;;
        esac
@@ -4314,8 +5041,8 @@ _LT_EOF
       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:
+       # 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
@@ -4326,6 +5053,7 @@ _LT_EOF
        fi
       fi
 
+      _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
       # It seems that -bexpall does not export symbols beginning with
       # underscore (_), so it is better to generate a list of symbols to export.
       _LT_TAGVAR(always_export_symbols, $1)=yes
@@ -4335,9 +5063,9 @@ _LT_EOF
        _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
+        _LT_SYS_MODULE_PATH_AIX([$1])
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
       else
        if test "$host_cpu" = ia64; then
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
@@ -4346,14 +5074,19 @@ _LT_EOF
        else
         # Determine the default libpath from the value encoded in an
         # empty executable.
-        _LT_SYS_MODULE_PATH_AIX
+        _LT_SYS_MODULE_PATH_AIX([$1])
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
          # Warning - without using the other run time loading flags,
          # -berok will link without error, but may produce a broken library.
          _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
          _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-         # Exported symbols can be pulled into shared objects from archives
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         if test "$with_gnu_ld" = yes; then
+           # We only use this code for GNU lds that support --whole-archive.
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+         else
+           # Exported symbols can be pulled into shared objects from archives
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+         fi
          _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
          # This is similar to how AIX traditionally builds its shared libraries.
          _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
@@ -4362,104 +5095,91 @@ _LT_EOF
       ;;
 
     amigaos*)
-      if test "$host_cpu" = m68k; then
-        _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(hardcode_minus_L, $1)=yes
-      fi
-      # see comment about different semantics on the GNU ld section
-      _LT_TAGVAR(ld_shlibs, $1)=no
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            _LT_TAGVAR(archive_expsym_cmds, $1)=''
+        ;;
+      m68k)
+            _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+            _LT_TAGVAR(hardcode_minus_L, $1)=yes
+        ;;
+      esac
       ;;
 
     bsdi[[45]]*)
       _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
       ;;
 
-    cygwin* | mingw* | pw32*)
+    cygwin* | mingw* | pw32* | cegcc*)
       # When not using gcc, we currently assume that we are using
       # Microsoft Visual C++.
       # hardcode_libdir_flag_spec is actually meaningless, as there is
       # no search path for DLLs.
-      _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
-      _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
-      # FIXME: Should let the user specify the lib program.
-      _LT_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
-      _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
-      _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      ;;
-
-    darwin* | rhapsody*)
-      case $host_os in
-      rhapsody* | darwin1.[[012]])
-       _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+      case $cc_basename in
+      cl*)
+       # Native MSVC
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       _LT_TAGVAR(always_export_symbols, $1)=yes
+       _LT_TAGVAR(file_list_spec, $1)='@'
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+       _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+           sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+         else
+           sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+         fi~
+         $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+         linknames='
+       # The linker will not automatically build a static lib if we build a DLL.
+       # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+       _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+       _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
+       # Don't use ranlib
+       _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+       _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+         lt_tool_outputfile="@TOOL_OUTPUT@"~
+         case $lt_outputfile in
+           *.exe|*.EXE) ;;
+           *)
+             lt_outputfile="$lt_outputfile.exe"
+             lt_tool_outputfile="$lt_tool_outputfile.exe"
+             ;;
+         esac~
+         if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+           $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+           $RM "$lt_outputfile.manifest";
+         fi'
        ;;
-      *) # Darwin 1.3 on
-       case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-       10.[[012]])
-         _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         ;;
-       10.*)
-         _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-         ;;
-       esac
+      *)
+       # Assume MSVC wrapper
+       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+       # Tell ltmain to make .lib files, not .a files.
+       libext=lib
+       # Tell ltmain to make .dll files, not .so files.
+       shrext_cmds=".dll"
+       # FIXME: Setting linknames here is a bad hack.
+       _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+       # The linker will automatically build a .lib file if we build a DLL.
+       _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+       # FIXME: Should let the user specify the lib program.
+       _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
+       _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
        ;;
       esac
-      _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-      _LT_TAGVAR(hardcode_direct, $1)=no
-      _LT_TAGVAR(hardcode_automatic, $1)=yes
-      _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-      _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-      _LT_TAGVAR(link_all_deplibs, $1)=yes
-      if test "$GCC" = yes ; then
-       AC_CACHE_VAL([lt_cv_apple_cc_single_mod],
-       [lt_cv_apple_cc_single_mod=no
-       if test -z "${LT_MULTI_MODULE}"; then
-         # By default we will add the -single_module flag. You can override
-         # by either setting the environment variable LT_MULTI_MODULE
-         # non-empty at configure time, or by adding -multi-module to the
-         # link flags.
-         echo "int foo(void){return 1;}" > conftest.c
-         $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-             -dynamiclib ${wl}-single_module conftest.c
-         if test -f libconftest.dylib; then
-             lt_cv_apple_cc_single_mod=yes
-             rm libconftest.dylib
-         fi
-         rm conftest.$ac_ext
-       fi])
-       output_verbose_link_cmd=echo
-       if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then
-         _LT_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       else
-         _LT_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-         _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       fi
-       _LT_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-       _LT_TAGVAR(module_expsym_cmds, $1)='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      else
-       case $cc_basename in
-       xlc*)
-         output_verbose_link_cmd=echo
-         _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring'
-         _LT_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-         # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         _LT_TAGVAR(module_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-         ;;
-       *)
-         _LT_TAGVAR(ld_shlibs, $1)=no
-         ;;
-       esac
-      fi
+      ;;
+
+    darwin* | rhapsody*)
+      _LT_DARWIN_LINKER_FEATURES($1)
       ;;
 
     dgux*)
@@ -4468,10 +5188,6 @@ _LT_EOF
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    freebsd1*)
-      _LT_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
@@ -4484,7 +5200,7 @@ _LT_EOF
       ;;
 
     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
+    freebsd2.*)
       _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
@@ -4492,8 +5208,8 @@ _LT_EOF
       ;;
 
     # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | kfreebsd*-gnu | dragonfly*)
-      _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+    freebsd* | dragonfly*)
+      _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
       _LT_TAGVAR(hardcode_direct, $1)=yes
       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -4501,7 +5217,7 @@ _LT_EOF
 
     hpux9*)
       if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       else
        _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       fi
@@ -4516,16 +5232,16 @@ _LT_EOF
       ;;
 
     hpux10*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
       else
        _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
       fi
       if test "$with_gnu_ld" = no; then
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-       _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
        _LT_TAGVAR(hardcode_libdir_separator, $1)=:
        _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
        # hardcode_minus_L: Not really in the search PATH,
        # but as the default location of the library.
@@ -4534,16 +5250,16 @@ _LT_EOF
       ;;
 
     hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
        case $host_cpu in
        hppa*64*)
          _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        ia64*)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        esac
       else
@@ -4555,7 +5271,14 @@ _LT_EOF
          _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
          ;;
        *)
-         _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+       m4_if($1, [], [
+         # Older versions of the 11.00 compiler do not understand -b yet
+         # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+         _LT_LINKER_OPTION([if $CC understands -b],
+           _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b],
+           [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'],
+           [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])],
+         [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'])
          ;;
        esac
       fi
@@ -4570,6 +5293,7 @@ _LT_EOF
          ;;
        *)
          _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
          _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
 
          # hardcode_minus_L: Not really in the search PATH,
@@ -4582,19 +5306,34 @@ _LT_EOF
 
     irix5* | irix6* | nonstopux*)
       if test "$GCC" = yes; then
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
        # Try to use the -exported_symbol ld option, if it does not
        # work, assume that -exports_file does not work either and
        # implicitly export all symbols.
-        save_LDFLAGS="$LDFLAGS"
-        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
-        AC_LINK_IFELSE(int foo(void) {},
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
-        )
-        LDFLAGS="$save_LDFLAGS"
+       # This should be the same for all languages, so no per-tag cache variable.
+       AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol],
+         [lt_cv_irix_exported_symbol],
+         [save_LDFLAGS="$LDFLAGS"
+          LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+          AC_LINK_IFELSE(
+            [AC_LANG_SOURCE(
+               [AC_LANG_CASE([C], [[int foo (void) { return 0; }]],
+                             [C++], [[int foo (void) { return 0; }]],
+                             [Fortran 77], [[
+      subroutine foo
+      end]],
+                             [Fortran], [[
+      subroutine foo
+      end]])])],
+             [lt_cv_irix_exported_symbol=yes],
+             [lt_cv_irix_exported_symbol=no])
+           LDFLAGS="$save_LDFLAGS"])
+       if test "$lt_cv_irix_exported_symbol" = yes; then
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+       fi
       else
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
@@ -4626,24 +5365,29 @@ _LT_EOF
       ;;
 
     openbsd*)
-      _LT_TAGVAR(hardcode_direct, $1)=yes
-      _LT_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_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      else
-        case $host_os in
-       openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-         _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-         ;;
-       *)
+      if test -f /usr/libexec/ld.so; then
+       _LT_TAGVAR(hardcode_direct, $1)=yes
+       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+       _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+       if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
          _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
          _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-         ;;
-        esac
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+       fi
+      else
+       _LT_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
@@ -4651,17 +5395,17 @@ _LT_EOF
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
       _LT_TAGVAR(hardcode_minus_L, $1)=yes
       _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
       _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
       ;;
 
     osf3*)
       if test "$GCC" = yes; then
        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
       else
        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
       fi
       _LT_TAGVAR(archive_cmds_need_lc, $1)='no'
       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
@@ -4671,13 +5415,13 @@ _LT_EOF
     osf4* | osf5*)     # as osf3* with the addition of -msym flag
       if test "$GCC" = yes; then
        _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
       else
        _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
        _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
-       $CC -shared${allow_undefined_flag} -input $lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+       $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
 
        # Both c and cxx compiler support -rpath directly
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
@@ -4690,9 +5434,9 @@ _LT_EOF
       _LT_TAGVAR(no_undefined_flag, $1)=' -z defs'
       if test "$GCC" = yes; then
        wlarc='${wl}'
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
        _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-         $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+         $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
       else
        case `$CC -V 2>&1` in
        *"Compilers 5.0"*)
@@ -4714,17 +5458,16 @@ _LT_EOF
       case $host_os in
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convenience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
-       *)
-         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
+       if test "$GCC" = yes; then
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
       esac
       _LT_TAGVAR(link_all_deplibs, $1)=yes
       ;;
@@ -4869,36 +5612,38 @@ x|xyes)
       # 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_TAGVAR(lt_prog_compiler_wl, $1)
-       pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
-        _LT_TAGVAR(allow_undefined_flag, $1)=
-        if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
-        then
-         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-        else
-         _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-        fi
-        _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $RM conftest*
-      AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)])
+      AC_CACHE_CHECK([whether -lc should be explicitly linked in],
+       [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1),
+       [$RM conftest*
+       echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+         soname=conftest
+         lib=conftest
+         libobjs=conftest.$ac_objext
+         deplibs=
+         wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1)
+         pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1)
+         compiler_flags=-v
+         linker_flags=-v
+         verstring=
+         output_objdir=.
+         libname=conftest
+         lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1)
+         _LT_TAGVAR(allow_undefined_flag, $1)=
+         if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1)
+         then
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+         else
+           lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+         fi
+         _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+       else
+         cat conftest.err 1>&5
+       fi
+       $RM conftest*
+       ])
+      _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)
       ;;
     esac
   fi
@@ -4914,6 +5659,8 @@ _LT_TAGDECL([], [export_dynamic_flag_spec], [1],
     [Compiler flag to allow reflexive dlopens])
 _LT_TAGDECL([], [whole_archive_flag_spec], [1],
     [Compiler flag to generate shared objects directly from archives])
+_LT_TAGDECL([], [compiler_needs_object], [1],
+    [Whether the compiler copes with passing no objects directly])
 _LT_TAGDECL([], [old_archive_from_new_cmds], [2],
     [Create an old-style archive from a shared archive])
 _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2],
@@ -4933,14 +5680,16 @@ _LT_TAGDECL([], [no_undefined_flag], [1],
 _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1],
     [Flag to hardcode $libdir into a binary during linking.
     This must work even if $libdir does not exist])
-_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [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]])
 _LT_TAGDECL([], [hardcode_libdir_separator], [1],
     [Whether we need a single "-rpath" flag with a separated argument])
 _LT_TAGDECL([], [hardcode_direct], [0],
     [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
     DIR into the resulting binary])
+_LT_TAGDECL([], [hardcode_direct_absolute], [0],
+    [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes
+    DIR into the resulting binary and the resulting library dependency is
+    "absolute", i.e impossible to change by setting ${shlibpath_var} if the
+    library is relocated])
 _LT_TAGDECL([], [hardcode_minus_L], [0],
     [Set to "yes" if using the -LDIR flag during linking hardcodes DIR
     into the resulting binary])
@@ -4956,8 +5705,6 @@ _LT_TAGDECL([], [inherit_rpath], [0],
     to runtime path list])
 _LT_TAGDECL([], [link_all_deplibs], [0],
     [Whether libtool must link a program against all its dependency libraries])
-_LT_TAGDECL([], [fix_srcfile_path], [1],
-    [Fix the shell variable $srcfile for the compiler])
 _LT_TAGDECL([], [always_export_symbols], [0],
     [Set to "yes" if exported symbols are required])
 _LT_TAGDECL([], [export_symbols_cmds], [2],
@@ -4968,6 +5715,8 @@ _LT_TAGDECL([], [include_expsyms], [1],
     [Symbols that must always be exported])
 _LT_TAGDECL([], [prelink_cmds], [2],
     [Commands necessary for linking programs (against libraries) with templates])
+_LT_TAGDECL([], [postlink_cmds], [2],
+    [Commands necessary for finishing linking programs])
 _LT_TAGDECL([], [file_list_spec], [1],
     [Specify filename containing input files])
 dnl FIXME: Not yet implemented
@@ -4994,10 +5743,10 @@ objext=o
 _LT_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
 
 _LT_TAG_COMPILER
 # Save the default compiler, since it gets overwritten when the other
@@ -5041,7 +5790,7 @@ if test -n "$compiler"; then
     fi
     ;;
 
-  aix4* | aix5*)
+  aix[[4-9]]*)
     if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
       test "$enable_shared" = yes && enable_static=no
     fi
@@ -5061,47 +5810,33 @@ CC="$lt_save_CC"
 ])# _LT_LANG_C_CONFIG
 
 
-# _LT_PROG_CXX
-# ------------
-# Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++
-# compiler, we have our own version here.
-m4_defun([_LT_PROG_CXX],
-[
-pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes])
-AC_PROG_CXX
-if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
-    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
-    (test "X$CXX" != "Xg++"))) ; then
-  AC_PROG_CXXCPP
-else
-  _lt_caught_CXX_error=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_CXX
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_CXX], [])
-
-
 # _LT_LANG_CXX_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a C++ compiler are suitably
 # defined.  These variables are subsequently used by _LT_CONFIG to write
 # the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_CXX_CONFIG],
-[AC_REQUIRE([_LT_PROG_CXX])dnl
-m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl
 m4_require([_LT_DECL_EGREP])dnl
+m4_require([_LT_PATH_MANIFEST_TOOL])dnl
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+else
+  _lt_caught_CXX_error=yes
+fi
 
 AC_LANG_PUSH(C++)
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
 _LT_TAGVAR(always_export_symbols, $1)=no
 _LT_TAGVAR(archive_expsym_cmds, $1)=
+_LT_TAGVAR(compiler_needs_object, $1)=no
 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
@@ -5111,6 +5846,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -5128,10 +5865,10 @@ _LT_TAGVAR(objext, $1)=$objext
 # and will be corrupted by setting them based on a non-working compiler.
 if test "$_lt_caught_CXX_error" != yes; then
   # Code to be used in simple compile tests
-  lt_simple_compile_test_code="int some_variable = 0;\n"
+  lt_simple_compile_test_code="int some_variable = 0;"
 
   # Code to be used in simple link tests
-  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+  lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
   _LT_TAG_COMPILER
@@ -5142,6 +5879,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 
   # Allow CC to be a program name with arguments.
   lt_save_CC=$CC
+  lt_save_CFLAGS=$CFLAGS
   lt_save_LD=$LD
   lt_save_GCC=$GCC
   GCC=$GXX
@@ -5159,6 +5897,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   fi
   test -z "${LDCXX+set}" || LD=$LDCXX
   CC=${CXX-"c++"}
+  CFLAGS=$CXXFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
@@ -5180,8 +5919,8 @@ if test "$_lt_caught_CXX_error" != yes; then
       # 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_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
-        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+        _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
 
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -5193,7 +5932,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 
         # 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
+         $GREP 'no-whole-archive' > /dev/null; then
           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
         else
           _LT_TAGVAR(whole_archive_flag_spec, $1)=
@@ -5213,7 +5952,7 @@ if test "$_lt_caught_CXX_error" != yes; then
       # Commands to make compiler produce verbose output that lists
       # what "hidden" libraries, object files and flags are used when
       # linking a shared library.
-      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
     else
       GXX=no
@@ -5229,7 +5968,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         # FIXME: insert proper C++ library support
         _LT_TAGVAR(ld_shlibs, $1)=no
         ;;
-      aix4* | aix5*)
+      aix[[4-9]]*)
         if test "$host_cpu" = ia64; then
           # On IA64, the linker does run time linking by default, so we don't
           # have to do anything special.
@@ -5242,15 +5981,15 @@ if test "$_lt_caught_CXX_error" != yes; then
           # Test if we are trying to use run time linking or normal
           # AIX style linking. If -brtl is somewhere in LDFLAGS, we
           # need to do runtime linking.
-          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
-           for ld_flag in $LDFLAGS; do
-             case $ld_flag in
-             *-brtl*)
-               aix_use_runtimelinking=yes
-               break
-               ;;
-             esac
-           done
+          case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
+           for ld_flag in $LDFLAGS; do
+             case $ld_flag in
+             *-brtl*)
+               aix_use_runtimelinking=yes
+               break
+               ;;
+             esac
+           done
            ;;
           esac
 
@@ -5266,6 +6005,7 @@ if test "$_lt_caught_CXX_error" != yes; then
 
         _LT_TAGVAR(archive_cmds, $1)=''
         _LT_TAGVAR(hardcode_direct, $1)=yes
+        _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
         _LT_TAGVAR(hardcode_libdir_separator, $1)=':'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
         _LT_TAGVAR(file_list_spec, $1)='${wl}-f,'
@@ -5274,22 +6014,22 @@ if test "$_lt_caught_CXX_error" != 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_TAGVAR(hardcode_direct, $1)=yes
-         else
-           # We have old collect2
-           _LT_TAGVAR(hardcode_direct, $1)=unsupported
-           # It fails to find uninstalled libraries when the uninstalled
-           # path is not listed in the libpath.  Setting hardcode_minus_L
-           # to unsupported forces relinking
-           _LT_TAGVAR(hardcode_minus_L, $1)=yes
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-           _LT_TAGVAR(hardcode_libdir_separator, $1)=
-         fi
+         collect2name=`${CC} -print-prog-name=collect2`
+         if test -f "$collect2name" &&
+            strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+         then
+           # We have reworked collect2
+           :
+         else
+           # We have old collect2
+           _LT_TAGVAR(hardcode_direct, $1)=unsupported
+           # It fails to find uninstalled libraries when the uninstalled
+           # path is not listed in the libpath.  Setting hardcode_minus_L
+           # to unsupported forces relinking
+           _LT_TAGVAR(hardcode_minus_L, $1)=yes
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+           _LT_TAGVAR(hardcode_libdir_separator, $1)=
+         fi
           esac
           shared_flag='-shared'
          if test "$aix_use_runtimelinking" = yes; then
@@ -5298,18 +6038,19 @@ if test "$_lt_caught_CXX_error" != yes; then
         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'
+         # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+         # chokes on -Wl,-G. The following line is correct:
+         shared_flag='-G'
           else
-           if test "$aix_use_runtimelinking" = yes; then
-             shared_flag='${wl}-G'
-           else
-             shared_flag='${wl}-bM:SRE'
-           fi
+           if test "$aix_use_runtimelinking" = yes; then
+             shared_flag='${wl}-G'
+           else
+             shared_flag='${wl}-bM:SRE'
+           fi
           fi
         fi
 
+        _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall'
         # It seems that -bexpall does not export symbols beginning with
         # underscore (_), so it is better to generate a list of symbols to
        # export.
@@ -5320,30 +6061,35 @@ if test "$_lt_caught_CXX_error" != yes; then
           _LT_TAGVAR(allow_undefined_flag, $1)='-berok'
           # Determine the default libpath from the value encoded in an empty
           # executable.
-          _LT_SYS_MODULE_PATH_AIX
+          _LT_SYS_MODULE_PATH_AIX([$1])
           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+          _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
         else
           if test "$host_cpu" = ia64; then
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
-           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+           _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
           else
-           # Determine the default libpath from the value encoded in an
-           # empty executable.
-           _LT_SYS_MODULE_PATH_AIX
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-           # Warning - without using the other run time loading flags,
-           # -berok will link without error, but may produce a broken library.
-           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
-           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-           # Exported symbols can be pulled into shared objects from archives
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
-           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
-           # This is similar to how AIX traditionally builds its shared
+           # Determine the default libpath from the value encoded in an
+           # empty executable.
+           _LT_SYS_MODULE_PATH_AIX([$1])
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+           # Warning - without using the other run time loading flags,
+           # -berok will link without error, but may produce a broken library.
+           _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+           _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+           if test "$with_gnu_ld" = yes; then
+             # We only use this code for GNU lds that support --whole-archive.
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+           else
+             # Exported symbols can be pulled into shared objects from archives
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+           fi
+           _LT_TAGVAR(archive_cmds_need_lc, $1)=yes
+           # This is similar to how AIX traditionally builds its shared
            # libraries.
-           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+           _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
           fi
         fi
         ;;
@@ -5362,122 +6108,105 @@ if test "$_lt_caught_CXX_error" != yes; then
       chorus*)
         case $cc_basename in
           *)
-         # FIXME: insert proper C++ library support
-         _LT_TAGVAR(ld_shlibs, $1)=no
-         ;;
+         # FIXME: insert proper C++ library support
+         _LT_TAGVAR(ld_shlibs, $1)=no
+         ;;
         esac
         ;;
 
-      cygwin* | mingw* | pw32*)
-        # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
-        # as there is no search path for DLLs.
-        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
-        _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
-        _LT_TAGVAR(always_export_symbols, $1)=no
-        _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-
-        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-          # If the export-symbols file already is a .def file (1st line
-          # is EXPORTS), use it as is; otherwise, prepend...
-          _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-           cp $export_symbols $output_objdir/$soname.def;
-          else
-           echo EXPORTS > $output_objdir/$soname.def;
-           cat $export_symbols >> $output_objdir/$soname.def;
-          fi~
-          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
-        else
-          _LT_TAGVAR(ld_shlibs, $1)=no
-        fi
-        ;;
-      darwin* | rhapsody*)
-       case $host_os in
-         rhapsody* | darwin1.[[012]])
-           _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-           ;;
-         *) # Darwin 1.3 on
-           case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
-             10.[[012]])
-               _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+      cygwin* | mingw* | pw32* | cegcc*)
+       case $GXX,$cc_basename in
+       ,cl* | no,cl*)
+         # Native MSVC
+         # hardcode_libdir_flag_spec is actually meaningless, as there is
+         # no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=yes
+         _LT_TAGVAR(file_list_spec, $1)='@'
+         # Tell ltmain to make .lib files, not .a files.
+         libext=lib
+         # Tell ltmain to make .dll files, not .so files.
+         shrext_cmds=".dll"
+         # FIXME: Setting linknames here is a bad hack.
+         _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames='
+         _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp;
+           else
+             $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp;
+           fi~
+           $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~
+           linknames='
+         # The linker will not automatically build a static lib if we build a DLL.
+         # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true'
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+         # Don't use ranlib
+         _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib'
+         _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~
+           lt_tool_outputfile="@TOOL_OUTPUT@"~
+           case $lt_outputfile in
+             *.exe|*.EXE) ;;
+             *)
+               lt_outputfile="$lt_outputfile.exe"
+               lt_tool_outputfile="$lt_tool_outputfile.exe"
                ;;
-           esac
-           ;;
-       esac
-       _LT_TAGVAR(archive_cmds_need_lc, $1)=no
-       _LT_TAGVAR(hardcode_direct, $1)=no
-       _LT_TAGVAR(hardcode_automatic, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
-       _LT_TAGVAR(whole_archive_flag_spec, $1)=''
-       _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-       if test "$GXX" = yes ; then
-         AC_CACHE_VAL([lt_cv_apple_cc_single_mod],
-         [lt_cv_apple_cc_single_mod=no
-         if test -z "${LT_MULTI_MODULE}"; then
-           # By default we will add the -single_module flag. You can override
-           # by either setting the environment variable LT_MULTI_MODULE
-           # non-empty at configure time, or by adding -multi-module to the
-           # link flags.
-           echo "int foo(void){return 1;}" > conftest.c
-           $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
-               -dynamiclib ${wl}-single_module conftest.c
-           if test -f libconftest.dylib; then
-               lt_cv_apple_cc_single_mod=yes
-               rm libconftest.dylib
-           fi
-           rm conftest.$ac_ext
-         fi])
-         output_verbose_link_cmd=echo
-         if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then
-          _LT_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+           esac~
+           func_to_tool_file "$lt_outputfile"~
+           if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then
+             $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1;
+             $RM "$lt_outputfile.manifest";
+           fi'
+         ;;
+       *)
+         # g++
+         # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+         # as there is no search path for DLLs.
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols'
+         _LT_TAGVAR(allow_undefined_flag, $1)=unsupported
+         _LT_TAGVAR(always_export_symbols, $1)=no
+         _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+         if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+           # If the export-symbols file already is a .def file (1st line
+           # is EXPORTS), use it as is; otherwise, prepend...
+           _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+             cp $export_symbols $output_objdir/$soname.def;
+           else
+             echo EXPORTS > $output_objdir/$soname.def;
+             cat $export_symbols >> $output_objdir/$soname.def;
+           fi~
+           $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
          else
-           _LT_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+           _LT_TAGVAR(ld_shlibs, $1)=no
          fi
-         _LT_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-         _LT_TAGVAR(module_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-       else
-         case $cc_basename in
-           xlc*)
-             output_verbose_link_cmd=echo
-             _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO "$rpath/$soname"` $verstring'
-             _LT_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-             # Don't fix this by using the ld -exported_symbols_list flag,
-             # it doesn't exist in older darwin lds
-             _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-             _LT_TAGVAR(module_expsym_cmds, $1)='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-             ;;
-           *)
-             _LT_TAGVAR(ld_shlibs, $1)=no
-             ;;
-         esac
-       fi
+         ;;
+       esac
+       ;;
+      darwin* | rhapsody*)
+        _LT_DARWIN_LINKER_FEATURES($1)
        ;;
 
       dgux*)
         case $cc_basename in
           ec++*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           ghcx*)
-           # Green Hills C++ Compiler
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # Green Hills C++ Compiler
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
         esac
         ;;
 
-      freebsd[[12]]*)
+      freebsd2.*)
         # C++ shared libraries reported to be fairly broken before
        # switch to ELF
         _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5487,7 +6216,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(archive_cmds_need_lc, $1)=no
         ;;
 
-      freebsd* | kfreebsd*-gnu | dragonfly*)
+      freebsd* | dragonfly*)
         # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
         # conventions
         _LT_TAGVAR(ld_shlibs, $1)=yes
@@ -5496,14 +6225,19 @@ if test "$_lt_caught_CXX_error" != yes; then
       gnu*)
         ;;
 
+      haiku*)
+        _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        _LT_TAGVAR(link_all_deplibs, $1)=yes
+        ;;
+
       hpux9*)
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         _LT_TAGVAR(hardcode_direct, $1)=yes
         _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                            # but as the default
-                                            # location of the library.
+                                            # but as the default
+                                            # location of the library.
 
         case $cc_basename in
           CC*)
@@ -5520,11 +6254,11 @@ if test "$_lt_caught_CXX_error" != yes; then
             # explicitly linking system object files so we need to strip them
             # from the output so that they don't get included in the library
             # dependencies.
-            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
             ;;
           *)
             if test "$GXX" = yes; then
-              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+              _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
             else
               # FIXME: insert proper C++ library support
               _LT_TAGVAR(ld_shlibs, $1)=no
@@ -5535,14 +6269,14 @@ if test "$_lt_caught_CXX_error" != yes; then
 
       hpux10*|hpux11*)
         if test $with_gnu_ld = no; then
-         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
 
           case $host_cpu in
             hppa*64*|ia64*)
               ;;
             *)
-             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+             _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
               ;;
           esac
         fi
@@ -5553,63 +6287,64 @@ if test "$_lt_caught_CXX_error" != yes; then
             ;;
           *)
             _LT_TAGVAR(hardcode_direct, $1)=yes
+            _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
             _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-                                                # but as the default
-                                                # location of the library.
+                                                # but as the default
+                                                # location of the library.
             ;;
         esac
 
         case $cc_basename in
           CC*)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           aCC*)
-           case $host_cpu in
-             hppa*64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             ia64*)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-             *)
-               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-               ;;
-           esac
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
-           # linking a shared library.
-           #
-           # There doesn't appear to be a way to prevent this compiler from
-           # explicitly linking system object files so we need to strip them
-           # from the output so that they don't get included in the library
-           # dependencies.
-           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
-           ;;
+           case $host_cpu in
+             hppa*64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             ia64*)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+             *)
+               _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+               ;;
+           esac
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
+           # linking a shared library.
+           #
+           # There doesn't appear to be a way to prevent this compiler from
+           # explicitly linking system object files so we need to strip them
+           # from the output so that they don't get included in the library
+           # dependencies.
+           output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+           ;;
           *)
-           if test "$GXX" = yes; then
-             if test $with_gnu_ld = no; then
-               case $host_cpu in
-                 hppa*64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 ia64*)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-                 *)
-                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-                   ;;
-               esac
-             fi
-           else
-             # FIXME: insert proper C++ library support
-             _LT_TAGVAR(ld_shlibs, $1)=no
+           if test "$GXX" = yes; then
+             if test $with_gnu_ld = no; then
+               case $host_cpu in
+                 hppa*64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 ia64*)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+                 *)
+                   _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+                   ;;
+               esac
+             fi
+           else
+             # FIXME: insert proper C++ library support
+             _LT_TAGVAR(ld_shlibs, $1)=no
            fi
-           ;;
+           ;;
         esac
         ;;
 
-      interix3*)
+      interix[[3-9]]*)
        _LT_TAGVAR(hardcode_direct, $1)=no
        _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
        _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -5626,50 +6361,50 @@ if test "$_lt_caught_CXX_error" != yes; then
       irix5* | irix6*)
         case $cc_basename in
           CC*)
-           # SGI C++
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
-
-           # Archives containing C++ object files must be created using
-           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
-           ;;
+           # SGI C++
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+           # Archives containing C++ object files must be created using
+           # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+           ;;
           *)
-           if test "$GXX" = yes; then
-             if test "$with_gnu_ld" = no; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-             else
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib'
-             fi
-           fi
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-           ;;
+           if test "$GXX" = yes; then
+             if test "$with_gnu_ld" = no; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+             else
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+             fi
+           fi
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+           ;;
         esac
         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
         _LT_TAGVAR(hardcode_libdir_separator, $1)=:
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux*)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
         case $cc_basename in
           KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
-
-           # KCC will only create a shared library if the output file
-           # ends with ".so" (or ".sl" for HP-UX), so rename the library
-           # to its proper name (with version) after linking.
-           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
-           # Commands to make compiler produce verbose output that lists
-           # what "hidden" libraries, object files and flags are used when
+           # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+           # KCC will only create a shared library if the output file
+           # ends with ".so" (or ".sl" for HP-UX), so rename the library
+           # to its proper name (with version) after linking.
+           _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+           # Commands to make compiler produce verbose output that lists
+           # what "hidden" libraries, object files and flags are used when
            # linking a shared library.
            #
            # There doesn't appear to be a way to prevent this compiler from
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed'
+           output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
 
            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
            _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
@@ -5703,37 +6438,37 @@ if test "$_lt_caught_CXX_error" != yes; then
            _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
            _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
            ;;
-          pgCC*)
+          pgCC* | pgcpp*)
             # Portland Group C++ compiler
-           case `$CC -V` in
-           *pgCC\ [[1-5]]*)
-             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
-               compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"'
-             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
-               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~
-               $RANLIB $oldlib'
-             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
-               rm -rf $tpldir~
-               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
-               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           *) # Version 6 will use weak symbols
-             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
-             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
-             ;;
-           esac
+           case `$CC -V` in
+           *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*)
+             _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+               compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+             _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+               $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+               $RANLIB $oldlib'
+             _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~
+               rm -rf $tpldir~
+               $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+               $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           *) # Version 6 and above use weak symbols
+             _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+             ;;
+           esac
 
            _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
            _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
             ;;
          cxx*)
            # Compaq C++
@@ -5752,7 +6487,43 @@ if test "$_lt_caught_CXX_error" != yes; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+           ;;
+         xl* | mpixl* | bgxl*)
+           # IBM XL 8.0 on PPC, with GNU ld
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+           if test "x$supports_anon_versioning" = xyes; then
+             _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~
+               cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+               echo "local: *; };" >> $output_objdir/$libname.ver~
+               $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+           fi
+           ;;
+         *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+             _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+             _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+             _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+             _LT_TAGVAR(compiler_needs_object, $1)=yes
+
+             # Not sure whether something based on
+             # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+             # would be better.
+             output_verbose_link_cmd='func_echo_all'
+
+             # Archives containing C++ object files must be created using
+             # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+             # necessary to make sure instantiated templates are included
+             # in the archive.
+             _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+             ;;
+           esac
            ;;
        esac
        ;;
@@ -5770,11 +6541,11 @@ if test "$_lt_caught_CXX_error" != yes; then
       mvs*)
         case $cc_basename in
           cxx*)
-           # FIXME: insert proper C++ library support
+           # FIXME: insert proper C++ library support
            _LT_TAGVAR(ld_shlibs, $1)=no
            ;;
          *)
-           # FIXME: insert proper C++ library support
+           # FIXME: insert proper C++ library support
            _LT_TAGVAR(ld_shlibs, $1)=no
            ;;
        esac
@@ -5802,22 +6573,27 @@ if test "$_lt_caught_CXX_error" != yes; then
        ;;
 
       openbsd*)
-       _LT_TAGVAR(hardcode_direct, $1)=yes
-       _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-       _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-       _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-         _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-         _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-         _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+       if test -f /usr/libexec/ld.so; then
+         _LT_TAGVAR(hardcode_direct, $1)=yes
+         _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+         _LT_TAGVAR(hardcode_direct_absolute, $1)=yes
+         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+         _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+           _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+           _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+           _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+         fi
+         output_verbose_link_cmd=func_echo_all
+       else
+         _LT_TAGVAR(ld_shlibs, $1)=no
        fi
-       output_verbose_link_cmd=echo
        ;;
 
       osf3* | osf4* | osf5*)
         case $cc_basename in
           KCC*)
-           # Kuck and Associates, Inc. (KAI) C++ Compiler
+           # 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
@@ -5835,7 +6611,7 @@ if test "$_lt_caught_CXX_error" != yes; then
            esac
            ;;
           RCC*)
-           # Rational C++ 2.4.1
+           # Rational C++ 2.4.1
            # FIXME: insert proper C++ library support
            _LT_TAGVAR(ld_shlibs, $1)=no
            ;;
@@ -5843,15 +6619,15 @@ if test "$_lt_caught_CXX_error" != yes; then
            case $host in
              osf3*)
                _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
                _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
                ;;
              *)
-               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib'
+               _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
                _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
                  echo "-hidden">> $lib.exp~
-                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~
+                 $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
                  $RM $lib.exp'
                _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
                ;;
@@ -5867,17 +6643,17 @@ if test "$_lt_caught_CXX_error" != yes; then
            # explicitly linking system object files so we need to strip them
            # from the output so that they don't get included in the library
            # dependencies.
-           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "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 "X$list" | $Xsed'
+           output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
            ;;
          *)
            if test "$GXX" = yes && test "$with_gnu_ld" = no; then
              _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
              case $host in
                osf3*)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
                  ;;
                *)
-                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+                 _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
                  ;;
              esac
 
@@ -5887,7 +6663,7 @@ if test "$_lt_caught_CXX_error" != yes; then
              # Commands to make compiler produce verbose output that lists
              # what "hidden" libraries, object files and flags are used when
              # linking a shared library.
-             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
+             output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
 
            else
              # FIXME: insert proper C++ library support
@@ -5905,94 +6681,95 @@ if test "$_lt_caught_CXX_error" != yes; then
       sunos4*)
         case $cc_basename in
           CC*)
-           # Sun C++ 4.x
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # Sun C++ 4.x
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           lcc*)
-           # Lucid
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # Lucid
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
         esac
         ;;
 
       solaris*)
         case $cc_basename in
-          CC*)
-           # Sun C++ 4.2, 5.x and Centerline C++
+          CC* | sunCC*)
+           # Sun C++ 4.2, 5.x and Centerline C++
             _LT_TAGVAR(archive_cmds_need_lc,$1)=yes
-           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
-           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
-           case $host_os in
-             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
-             *)
-               # The C++ compiler is used as linker so we must use $wl
-               # flag to pass the commands to the underlying system
-               # linker. We must also pass each convenience library through
-               # to the system linker between allextract/defaultextract.
-               # The C++ compiler will combine linker options so we
-               # cannot just pass the convenience library names through
-               # without $wl.
-               # Supported since Solaris 2.6 (maybe 2.5.1?)
-               _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
-               ;;
-           esac
-           _LT_TAGVAR(link_all_deplibs, $1)=yes
-
-           output_verbose_link_cmd='echo'
-
-           # Archives containing C++ object files must be created using
-           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
-           # necessary to make sure instantiated templates are included
-           # in the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
-           ;;
+           _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+           _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+           _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+             $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+           _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+           _LT_TAGVAR(hardcode_shlibpath_var, $1)=no
+           case $host_os in
+             solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+             *)
+               # The compiler driver will combine and reorder linker options,
+               # but understands `-z linker_flag'.
+               # Supported since Solaris 2.6 (maybe 2.5.1?)
+               _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+               ;;
+           esac
+           _LT_TAGVAR(link_all_deplibs, $1)=yes
+
+           output_verbose_link_cmd='func_echo_all'
+
+           # Archives containing C++ object files must be created using
+           # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+           # necessary to make sure instantiated templates are included
+           # in the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+           ;;
           gcx*)
-           # Green Hills C++ Compiler
-           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+           # Green Hills C++ Compiler
+           _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
 
-           # The C++ compiler must be used to create the archive.
-           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
-           ;;
+           # The C++ compiler must be used to create the archive.
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+           ;;
           *)
-           # GNU C++ compiler with Solaris linker
-           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
-             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
-             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
-               _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-             else
-               # g++ 2.7 appears to require `-G' NOT `-shared' on this
-               # platform.
-               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
-               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
-                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
-
-               # Commands to make compiler produce verbose output that lists
-               # what "hidden" libraries, object files and flags are used when
-               # linking a shared library.
-               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"'
-             fi
-
-             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
-           fi
-           ;;
+           # GNU C++ compiler with Solaris linker
+           if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+             _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+             if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+               _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             else
+               # g++ 2.7 appears to require `-G' NOT `-shared' on this
+               # platform.
+               _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+               _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+                 $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+               # Commands to make compiler produce verbose output that lists
+               # what "hidden" libraries, object files and flags are used when
+               # linking a shared library.
+               output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+             fi
+
+             _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+             case $host_os in
+               solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+               *)
+                 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+                 ;;
+             esac
+           fi
+           ;;
         esac
         ;;
 
@@ -6035,6 +6812,10 @@ if test "$_lt_caught_CXX_error" != yes; then
           CC*)
            _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
            _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+           _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~
+             '"$_LT_TAGVAR(old_archive_cmds, $1)"
+           _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~
+             '"$_LT_TAGVAR(reload_cmds, $1)"
            ;;
          *)
            _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
@@ -6046,14 +6827,14 @@ if test "$_lt_caught_CXX_error" != yes; then
       tandem*)
         case $cc_basename in
           NCC*)
-           # NonStop-UX NCC 3.20
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # NonStop-UX NCC 3.20
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
           *)
-           # FIXME: insert proper C++ library support
-           _LT_TAGVAR(ld_shlibs, $1)=no
-           ;;
+           # FIXME: insert proper C++ library support
+           _LT_TAGVAR(ld_shlibs, $1)=no
+           ;;
         esac
         ;;
 
@@ -6090,6 +6871,7 @@ if test "$_lt_caught_CXX_error" != yes; then
   fi # test -n "$compiler"
 
   CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
   LDCXX=$LD
   LD=$lt_save_LD
   GCC=$lt_save_GCC
@@ -6104,6 +6886,29 @@ AC_LANG_POP
 ])# _LT_LANG_CXX_CONFIG
 
 
+# _LT_FUNC_STRIPNAME_CNF
+# ----------------------
+# func_stripname_cnf prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+#
+# This function is identical to the (non-XSI) version of func_stripname,
+# except this one can be used by m4 code that may be executed by configure,
+# rather than the libtool script.
+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl
+AC_REQUIRE([_LT_DECL_SED])
+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])
+func_stripname_cnf ()
+{
+  case ${2} in
+  .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+  *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+} # func_stripname_cnf
+])# _LT_FUNC_STRIPNAME_CNF
+
 # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME])
 # ---------------------------------
 # Figure out "hidden" library dependencies from verbose
@@ -6112,6 +6917,7 @@ AC_LANG_POP
 # objects, libraries and library flags.
 m4_defun([_LT_SYS_HIDDEN_LIBDEPS],
 [m4_require([_LT_FILEUTILS_DEFAULTS])dnl
+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl
 # Dependencies to place before and after the object being linked:
 _LT_TAGVAR(predep_objects, $1)=
 _LT_TAGVAR(postdep_objects, $1)=
@@ -6161,7 +6967,20 @@ public class foo {
   }
 };
 _LT_EOF
+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF
+package foo
+func foo() {
+}
+_LT_EOF
 ])
+
+_lt_libdeps_save_CFLAGS=$CFLAGS
+case "$CC $CFLAGS " in #(
+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;;
+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;;
+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;;
+esac
+
 dnl Parse the compiler output and extract the necessary
 dnl objects, libraries and library flags.
 if AC_TRY_EVAL(ac_compile); then
@@ -6172,13 +6991,8 @@ if AC_TRY_EVAL(ac_compile); then
   # the conftest object file.
   pre_test_object_deps_done=no
 
-  # The `*' in the case matches for architectures that use `case' in
-  # $output_verbose_cmd can trigger glob expansion during the loop
-  # eval without this substitution.
-  output_verbose_link_cmd=`$ECHO "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
-
-  for p in `eval $output_verbose_link_cmd`; do
-    case $p in
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case ${prev}${p} in
 
     -L* | -R* | -l*)
        # Some compilers place space between "-{L,R}" and the path.
@@ -6187,13 +7001,22 @@ if AC_TRY_EVAL(ac_compile); then
           test $p = "-R"; then
         prev=$p
         continue
-       else
-        prev=
        fi
 
+       # Expand the sysroot to ease extracting the directories later.
+       if test -z "$prev"; then
+         case $p in
+         -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;;
+         -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;;
+         -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;;
+         esac
+       fi
+       case $p in
+       =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;;
+       esac
        if test "$pre_test_object_deps_done" = no; then
-        case $p in
-        -L* | -R*)
+        case ${prev} in
+        -L | -R)
           # Internal compiler library paths should come after those
           # provided the user.  The postdeps already come after the
           # user supplied libs so there is no need to process them.
@@ -6213,8 +7036,10 @@ if AC_TRY_EVAL(ac_compile); then
           _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}"
         fi
        fi
+       prev=
        ;;
 
+    *.lto.$objext) ;; # Ignore GCC LTO objects
     *.$objext)
        # This assumes that the test object file only shows up
        # once in the compiler output.
@@ -6250,11 +7075,12 @@ else
 fi
 
 $RM -f confest.$objext
+CFLAGS=$_lt_libdeps_save_CFLAGS
 
 # PORTME: override above test on systems where it is broken
 m4_if([$1], [CXX],
 [case $host_os in
-interix3*)
+interix[[3-9]]*)
   # Interix 3.5 installs completely hosed .la files for C++, so rather than
   # hack all around it, let's just trust "g++" to DTRT.
   _LT_TAGVAR(predep_objects,$1)=
@@ -6262,13 +7088,47 @@ interix3*)
   _LT_TAGVAR(postdeps,$1)=
   ;;
 
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
 solaris*)
   case $cc_basename in
-  CC*)
+  CC* | sunCC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
     # Adding this requires a known-good setup of shared libraries for
     # Sun compiler versions before 5.6, else PIC objects from an old
     # archive will be linked into the output, leading to subtle bugs.
-    _LT_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
     ;;
   esac
   ;;
@@ -6278,6 +7138,12 @@ esac
 case " $_LT_TAGVAR(postdeps, $1) " in
 *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;;
 esac
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then
+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+_LT_TAGDECL([], [compiler_lib_search_dirs], [1],
+    [The directories searched by this compiler when creating a shared library])
 _LT_TAGDECL([], [predep_objects], [1],
     [Dependencies to place before and after the objects being linked to
     create a shared library])
@@ -6290,32 +7156,16 @@ _LT_TAGDECL([], [compiler_lib_search_path], [1],
 ])# _LT_SYS_HIDDEN_LIBDEPS
 
 
-# _LT_PROG_F77
-# ------------
-# Since AC_PROG_F77 is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_F77],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes])
-AC_PROG_F77
-if test -z "$F77" || test "X$F77" = "Xno"; then
-  _lt_disable_F77=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_F77
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_F77], [])
-
-
 # _LT_LANG_F77_CONFIG([TAG])
 # --------------------------
 # Ensure that the configuration variables for a Fortran 77 compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_F77_CONFIG],
-[AC_REQUIRE([_LT_PROG_F77])dnl
-AC_LANG_PUSH(Fortran 77)
+[AC_LANG_PUSH(Fortran 77)
+if test -z "$F77" || test "X$F77" = "Xno"; then
+  _lt_disable_F77=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6323,8 +7173,8 @@ _LT_TAGVAR(always_export_symbols, $1)=no
 _LT_TAGVAR(archive_expsym_cmds, $1)=
 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -6333,6 +7183,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6350,10 +7202,17 @@ _LT_TAGVAR(objext, $1)=$objext
 # and will be corrupted by setting them based on a non-working compiler.
 if test "$_lt_disable_F77" != yes; then
   # Code to be used in simple compile tests
-  lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
 
   # Code to be used in simple link tests
-  lt_simple_link_test_code="      program t\n      end\n"
+  lt_simple_link_test_code="\
+      program t
+      end
+"
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
   _LT_TAG_COMPILER
@@ -6364,11 +7223,14 @@ if test "$_lt_disable_F77" != yes; then
 
   # Allow CC to be a program name with arguments.
   lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${F77-"f77"}
+  CFLAGS=$FFLAGS
   compiler=$CC
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
-
+  GCC=$G77
   if test -n "$compiler"; then
     AC_MSG_CHECKING([if libtool supports shared libraries])
     AC_MSG_RESULT([$can_build_shared])
@@ -6386,7 +7248,7 @@ if test "$_lt_disable_F77" != yes; then
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
-      aix4* | aix5*)
+      aix[[4-9]]*)
        if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
          test "$enable_shared" = yes && enable_static=no
        fi
@@ -6416,39 +7278,26 @@ if test "$_lt_disable_F77" != yes; then
     _LT_CONFIG($1)
   fi # test -n "$compiler"
 
+  GCC=$lt_save_GCC
   CC="$lt_save_CC"
+  CFLAGS="$lt_save_CFLAGS"
 fi # test "$_lt_disable_F77" != yes
 
 AC_LANG_POP
 ])# _LT_LANG_F77_CONFIG
 
 
-# _LT_PROG_FC
-# -----------
-# Since AC_PROG_FC is broken, in that it returns the empty string
-# if there is no fortran compiler, we have our own version here.
-m4_defun([_LT_PROG_FC],
-[
-pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes])
-AC_PROG_FC
-if test -z "$FC" || test "X$FC" = "Xno"; then
-  _lt_disable_FC=yes
-fi
-popdef([AC_MSG_ERROR])
-])# _LT_PROG_FC
-
-dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([_LT_PROG_FC], [])
-
-
 # _LT_LANG_FC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for a Fortran compiler are
 # suitably defined.  These variables are subsequently used by _LT_CONFIG
 # to write the compiler configuration to `libtool'.
 m4_defun([_LT_LANG_FC_CONFIG],
-[AC_REQUIRE([_LT_PROG_FC])dnl
-AC_LANG_PUSH(Fortran)
+[AC_LANG_PUSH(Fortran)
+
+if test -z "$FC" || test "X$FC" = "Xno"; then
+  _lt_disable_FC=yes
+fi
 
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 _LT_TAGVAR(allow_undefined_flag, $1)=
@@ -6456,8 +7305,8 @@ _LT_TAGVAR(always_export_symbols, $1)=no
 _LT_TAGVAR(archive_expsym_cmds, $1)=
 _LT_TAGVAR(export_dynamic_flag_spec, $1)=
 _LT_TAGVAR(hardcode_direct, $1)=no
+_LT_TAGVAR(hardcode_direct_absolute, $1)=no
 _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=
-_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_TAGVAR(hardcode_minus_L, $1)=no
 _LT_TAGVAR(hardcode_automatic, $1)=no
@@ -6466,6 +7315,8 @@ _LT_TAGVAR(module_cmds, $1)=
 _LT_TAGVAR(module_expsym_cmds, $1)=
 _LT_TAGVAR(link_all_deplibs, $1)=unknown
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 _LT_TAGVAR(no_undefined_flag, $1)=
 _LT_TAGVAR(whole_archive_flag_spec, $1)=
 _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no
@@ -6483,10 +7334,17 @@ _LT_TAGVAR(objext, $1)=$objext
 # and will be corrupted by setting them based on a non-working compiler.
 if test "$_lt_disable_FC" != yes; then
   # Code to be used in simple compile tests
-  lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+  lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
 
   # Code to be used in simple link tests
-  lt_simple_link_test_code="      program t\n      end\n"
+  lt_simple_link_test_code="\
+      program t
+      end
+"
 
   # ltmain only uses $CC for tagged configurations so make sure $CC is set.
   _LT_TAG_COMPILER
@@ -6497,8 +7355,13 @@ if test "$_lt_disable_FC" != yes; then
 
   # Allow CC to be a program name with arguments.
   lt_save_CC="$CC"
+  lt_save_GCC=$GCC
+  lt_save_CFLAGS=$CFLAGS
   CC=${FC-"f95"}
+  CFLAGS=$FCFLAGS
   compiler=$CC
+  GCC=$ac_cv_fc_compiler_gnu
+
   _LT_TAGVAR(compiler, $1)=$CC
   _LT_CC_BASENAME([$compiler])
 
@@ -6519,7 +7382,7 @@ if test "$_lt_disable_FC" != yes; then
           postinstall_cmds='$RANLIB $lib'
         fi
         ;;
-      aix4* | aix5*)
+      aix[[4-9]]*)
        if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
          test "$enable_shared" = yes && enable_static=no
        fi
@@ -6550,7 +7413,9 @@ if test "$_lt_disable_FC" != yes; then
     _LT_CONFIG($1)
   fi # test -n "$compiler"
 
-  CC="$lt_save_CC"
+  GCC=$lt_save_GCC
+  CC=$lt_save_CC
+  CFLAGS=$lt_save_CFLAGS
 fi # test "$_lt_disable_FC" != yes
 
 AC_LANG_POP
@@ -6574,10 +7439,10 @@ objext=o
 _LT_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
+lt_simple_compile_test_code="class foo {}"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_TAG_COMPILER
@@ -6587,16 +7452,23 @@ _LT_COMPILER_BOILERPLATE
 _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
 CC=${GCJ-"gcj"}
+CFLAGS=$GCJFLAGS
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
 _LT_CC_BASENAME([$compiler])
 
 # GCJ did not exist at the time GCC didn't implicitly link libc in.
 _LT_TAGVAR(archive_cmds_need_lc, $1)=no
 
 _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
 
 ## CAVEAT EMPTOR:
 ## There is no encapsulation within the following macros, do not change
@@ -6608,17 +7480,90 @@ if test -n "$compiler"; then
   _LT_COMPILER_C_O($1)
   _LT_COMPILER_FILE_LOCKS($1)
   _LT_LINKER_SHLIBS($1)
-  _LT_SYS_DYNAMIC_LINKER($1)
   _LT_LINKER_HARDCODE_LIBPATH($1)
 
   _LT_CONFIG($1)
 fi
 
 AC_LANG_RESTORE
-CC="$lt_save_CC"
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_GCJ_CONFIG
 
 
+# _LT_LANG_GO_CONFIG([TAG])
+# --------------------------
+# Ensure that the configuration variables for the GNU Go compiler
+# are suitably defined.  These variables are subsequently used by _LT_CONFIG
+# to write the compiler configuration to `libtool'.
+m4_defun([_LT_LANG_GO_CONFIG],
+[AC_REQUIRE([LT_PROG_GO])dnl
+AC_LANG_SAVE
+
+# Source file extension for Go test sources.
+ac_ext=go
+
+# Object file extension for compiled Go test sources.
+objext=o
+_LT_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="package main; func main() { }"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='package main; func main() { }'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_TAG_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=yes
+CC=${GOC-"gccgo"}
+CFLAGS=$GOFLAGS
+compiler=$CC
+_LT_TAGVAR(compiler, $1)=$CC
+_LT_TAGVAR(LD, $1)="$LD"
+_LT_CC_BASENAME([$compiler])
+
+# Go did not exist at the time GCC didn't implicitly link libc in.
+_LT_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_TAGVAR(reload_flag, $1)=$reload_flag
+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+  _LT_COMPILER_NO_RTTI($1)
+  _LT_COMPILER_PIC($1)
+  _LT_COMPILER_C_O($1)
+  _LT_COMPILER_FILE_LOCKS($1)
+  _LT_LINKER_SHLIBS($1)
+  _LT_LINKER_HARDCODE_LIBPATH($1)
+
+  _LT_CONFIG($1)
+fi
+
+AC_LANG_RESTORE
+
+GCC=$lt_save_GCC
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
+])# _LT_LANG_GO_CONFIG
+
+
 # _LT_LANG_RC_CONFIG([TAG])
 # -------------------------
 # Ensure that the configuration variables for the Windows resource compiler
@@ -6636,7 +7581,7 @@ objext=o
 _LT_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
 lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -6650,7 +7595,11 @@ _LT_LINKER_BOILERPLATE
 
 # Allow CC to be a program name with arguments.
 lt_save_CC="$CC"
+lt_save_CFLAGS=$CFLAGS
+lt_save_GCC=$GCC
+GCC=
 CC=${RC-"windres"}
+CFLAGS=
 compiler=$CC
 _LT_TAGVAR(compiler, $1)=$CC
 _LT_CC_BASENAME([$compiler])
@@ -6661,8 +7610,10 @@ if test -n "$compiler"; then
   _LT_CONFIG($1)
 fi
 
+GCC=$lt_save_GCC
 AC_LANG_RESTORE
-CC="$lt_save_CC"
+CC=$lt_save_CC
+CFLAGS=$lt_save_CFLAGS
 ])# _LT_LANG_RC_CONFIG
 
 
@@ -6673,7 +7624,7 @@ AC_DEFUN([LT_PROG_GCJ],
   [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ],
     [AC_CHECK_TOOL(GCJ, gcj,)
       test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
-      AC_SUBST(GCJFLAGS)])])dnl
+      AC_SUBST(GCJFLAGS)])])[]dnl
 ])
 
 # Old name:
@@ -6682,6 +7633,13 @@ dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([LT_AC_PROG_GCJ], [])
 
 
+# LT_PROG_GO
+# ----------
+AC_DEFUN([LT_PROG_GO],
+[AC_CHECK_TOOL(GOC, gccgo,)
+])
+
+
 # LT_PROG_RC
 # ----------
 AC_DEFUN([LT_PROG_RC],
@@ -6710,6 +7668,27 @@ AC_SUBST([GREP])
 ])
 
 
+# _LT_DECL_OBJDUMP
+# --------------
+# If we don't have a new enough Autoconf to choose the best objdump
+# available, choose the one first in the user's PATH.
+m4_defun([_LT_DECL_OBJDUMP],
+[AC_CHECK_TOOL(OBJDUMP, objdump, false)
+test -z "$OBJDUMP" && OBJDUMP=objdump
+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper])
+AC_SUBST([OBJDUMP])
+])
+
+# _LT_DECL_DLLTOOL
+# ----------------
+# Ensure DLLTOOL variable is set.
+m4_defun([_LT_DECL_DLLTOOL],
+[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])
+AC_SUBST([DLLTOOL])
+])
+
 # _LT_DECL_SED
 # ------------
 # Check for a fully-functional sed program, that truncates
@@ -6717,6 +7696,7 @@ AC_SUBST([GREP])
 m4_defun([_LT_DECL_SED],
 [AC_PROG_SED
 test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
 _LT_DECL([], [SED], [1], [A sed program that does not truncate output])
 _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"],
     [Sed that helps us avoid accidentally triggering echo(1) options like -n])
@@ -6730,7 +7710,7 @@ m4_ifndef([AC_PROG_SED], [
 #  macro and use it instead.                               #
 ############################################################
 
-AC_DEFUN([AC_PROG_SED],
+m4_defun([AC_PROG_SED],
 [AC_MSG_CHECKING([for a sed that does not truncate output])
 AC_CACHE_VAL(lt_cv_path_SED,
 [# Loop through the user's path and test for sed and gsed.
@@ -6748,6 +7728,7 @@ do
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -6785,99 +7766,217 @@ AC_MSG_RESULT([$SED])
 ])#AC_PROG_SED
 ])#m4_ifndef
 
+# Old name:
+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED])
+dnl aclocal-1.4 backwards compatibility:
+dnl AC_DEFUN([LT_AC_PROG_SED], [])
 
-# _LT_CHECK_XSI_SHELL
-# -------------------
-# define func_basename as either Bourne or XSI compatible
-m4_defun([_LT_CHECK_XSI_SHELL],
+
+# _LT_CHECK_SHELL_FEATURES
+# ------------------------
+# Find out whether the shell is Bourne or XSI compatible,
+# or has some other useful features.
+m4_defun([_LT_CHECK_SHELL_FEATURES],
 [AC_MSG_CHECKING([whether the shell understands some XSI constructs])
 # Try some XSI features
 xsi_shell=no
 ( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,, ) >/dev/null 2>&1 \
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
   && xsi_shell=yes
 AC_MSG_RESULT([$xsi_shell])
 _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell'])
-])# _LT_CHECK_XSI_SHELL
 
+AC_MSG_CHECKING([whether the shell understands "+="])
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+AC_MSG_RESULT([$lt_shell_append])
+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append'])
 
-# _LT_PROG_XSI_SHELLFNS
-# ---------------------
-# Bourne and XSI compatible variants of some useful shell functions.
-m4_defun([_LT_PROG_XSI_SHELLFNS],
-[case $xsi_shell in
-  yes)
-    cat << \_LT_EOF >> "$cfgfile"
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  case ${1} in
-    */*) func_dirname_result="${1%/*}${2}" ;;
-    *  ) func_dirname_result="${3}" ;;
-  esac
-}
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl
+
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl
+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl
+])# _LT_CHECK_SHELL_FEATURES
+
+
+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY)
+# ------------------------------------------------------
+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and
+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY.
+m4_defun([_LT_PROG_FUNCTION_REPLACE],
+[dnl {
+sed -e '/^$1 ()$/,/^} # $1 /c\
+$1 ()\
+{\
+m4_bpatsubsts([$2], [$], [\\], [^\([    ]\)], [\\\1])
+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \
+  && mv -f "$cfgfile.tmp" "$cfgfile" \
+    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+test 0 -eq $? || _lt_function_replace_fail=:
+])
 
-# func_basename file
-func_basename ()
-{
-  func_basename_result="${1##*/}"
-}
 
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-func_stripname ()
-{
-  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
-  # positional parameters, so assign one to ordinary parameter first.
-  func_stripname_result=${3}
-  func_stripname_result=${func_stripname_result#"${1}"}
-  func_stripname_result=${func_stripname_result%"${2}"}
-}
-_LT_EOF
-    ;;
-  *) # Bourne compatible functions.
-    cat << \_LT_EOF >> "$cfgfile"
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-  # Extract subdirectory from the argument.
-  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
-  if test "X$func_dirname_result" = "X${1}"; then
-    func_dirname_result="${3}"
-  else
-    func_dirname_result="$func_dirname_result${2}"
-  fi
-}
+# _LT_PROG_REPLACE_SHELLFNS
+# -------------------------
+# Replace existing portable implementations of several shell functions with
+# equivalent extended shell implementations where those features are available..
+m4_defun([_LT_PROG_REPLACE_SHELLFNS],
+[if test x"$xsi_shell" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl
+    func_basename_result="${1##*/}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl
+    case ${1} in
+      */*) func_dirname_result="${1%/*}${2}" ;;
+      *  ) func_dirname_result="${3}" ;;
+    esac
+    func_basename_result="${1##*/}"])
 
-# func_basename file
-func_basename ()
-{
-  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
-}
+  _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl
+    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+    # positional parameters, so assign one to ordinary parameter first.
+    func_stripname_result=${3}
+    func_stripname_result=${func_stripname_result#"${1}"}
+    func_stripname_result=${func_stripname_result%"${2}"}])
 
-# func_stripname prefix suffix name
-# strip PREFIX and SUFFIX off of NAME.
-# PREFIX and SUFFIX must not contain globbing or regex special
-# characters, hashes, percent signs, but SUFFIX may contain a leading
-# dot (in which case that matches only a dot).
-# func_strip_suffix prefix name
-func_stripname ()
-{
-  case ${2} in
-    .*) func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;;
-    *)  func_stripname_result=`$ECHO "X${3}" \
-           | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;;
-  esac
-}
-_LT_EOF
+  _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl
+    func_split_long_opt_name=${1%%=*}
+    func_split_long_opt_arg=${1#*=}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl
+    func_split_short_opt_arg=${1#??}
+    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}])
+
+  _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl
+    case ${1} in
+      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+      *)    func_lo2o_result=${1} ;;
+    esac])
+
+  _LT_PROG_FUNCTION_REPLACE([func_xform], [    func_xform_result=${1%.*}.lo])
+
+  _LT_PROG_FUNCTION_REPLACE([func_arith], [    func_arith_result=$(( $[*] ))])
+
+  _LT_PROG_FUNCTION_REPLACE([func_len], [    func_len_result=${#1}])
+fi
+
+if test x"$lt_shell_append" = xyes; then
+  _LT_PROG_FUNCTION_REPLACE([func_append], [    eval "${1}+=\\${2}"])
+
+  _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl
+    func_quote_for_eval "${2}"
+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \
+    eval "${1}+=\\\\ \\$func_quote_for_eval_result"])
+
+  # Save a `func_append' function call where possible by direct use of '+='
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+else
+  # Save a `func_append' function call even when '+=' is not available
+  sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
+    && mv -f "$cfgfile.tmp" "$cfgfile" \
+      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
+  test 0 -eq $? || _lt_function_replace_fail=:
+fi
+
+if test x"$_lt_function_replace_fail" = x":"; then
+  AC_MSG_WARN([Unable to substitute extended shell functions in $ofile])
+fi
+])
+
+# _LT_PATH_CONVERSION_FUNCTIONS
+# -----------------------------
+# Determine which file name conversion functions should be used by
+# func_to_host_file (and, implicitly, by func_to_host_path).  These are needed
+# for certain cross-compile configurations and native mingw.
+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_MSG_CHECKING([how to convert $build file names to $host format])
+AC_CACHE_VAL(lt_cv_to_host_file_cmd,
+[case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
+    ;;
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
+    ;;
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+])
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+AC_MSG_RESULT([$lt_cv_to_host_file_cmd])
+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd],
+         [0], [convert $build file names to $host format])dnl
+
+AC_MSG_CHECKING([how to convert $build file names to toolchain format])
+AC_CACHE_VAL(lt_cv_to_tool_file_cmd,
+[#assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
 esac
 ])
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd])
+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd],
+         [0], [convert $build files to toolchain format])dnl
+])# _LT_PATH_CONVERSION_FUNCTIONS
index da035ab9418f4ae18a8a8f8aec202ef82af8ef38..5d9acd8e23bcfd20d353804aff13666ecbed54f4 100644 (file)
@@ -1,82 +1,88 @@
 # Helper functions for option handling.                    -*- Autoconf -*-
-
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan <gary@gnu.org>
+#
+#   Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation,
+#   Inc.
+#   Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 3 ltoptions.m4
+# serial 7 ltoptions.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])])
 
 
-# _LT_MANGLE_OPTION(NAME)
-# -----------------------
+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME)
+# ------------------------------------------
 m4_define([_LT_MANGLE_OPTION],
-[[_LT_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])])
 
 
-# _LT_SET_OPTION(NAME)
-# --------------------
-# Set option NAME, and if there is a matching handler defined,
-# dispatch to it.  Other NAMEs are saved as a flag.
+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME)
+# ---------------------------------------
+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a
+# matching handler defined, dispatch to it.  Other OPTION-NAMEs are
+# saved as a flag.
 m4_define([_LT_SET_OPTION],
-[m4_define(_LT_MANGLE_OPTION([$1]))dnl
-m4_ifdef(_LT_MANGLE_DEFUN([$1]),
-        _LT_MANGLE_DEFUN([$1]),
-    [m4_warning([Unknown Libtool option `$1'])])[]dnl
+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl
+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]),
+        _LT_MANGLE_DEFUN([$1], [$2]),
+    [m4_warning([Unknown $1 option `$2'])])[]dnl
 ])
 
 
-# _LT_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
-# -------------------------------------------
+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET])
+# ------------------------------------------------------------
 # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
 m4_define([_LT_IF_OPTION],
-[m4_ifdef(_LT_MANGLE_OPTION([$1]), [$2], [$3])])
+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])])
 
 
-# _LT_UNLESS_OPTIONS(OPTIONS, IF-NOT-SET)
-# ---------------------------------------
-# Execute IF-NOT-SET if all OPTIONS are not set.
+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET)
+# -------------------------------------------------------
+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME
+# are set.
 m4_define([_LT_UNLESS_OPTIONS],
-[m4_foreach([_LT_Option], m4_split(m4_normalize([$1])),
-           [m4_ifdef(_LT_MANGLE_OPTION(_LT_Option),
+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+           [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option),
                      [m4_define([$0_found])])])[]dnl
-m4_ifdef([$0_found], [m4_undefine([$0_found])], [$2
+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3
 ])[]dnl
 ])
 
 
-# _LT_SET_OPTIONS(OPTIONS)
-# ------------------------
-# OPTIONS is a space-separated list of Libtool options.
-# If any OPTION has a handler macro declared with LT_OPTION_DEFINE,
-# dispatch to that macro; otherwise complain about the unknown option
-# and exit.
+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST)
+# ----------------------------------------
+# OPTION-LIST is a space-separated list of Libtool options associated
+# with MACRO-NAME.  If any OPTION has a matching handler declared with
+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about
+# the unknown option and exit.
 m4_defun([_LT_SET_OPTIONS],
 [# Set options
-m4_foreach([_LT_Option], m4_split(m4_normalize([$1])),
-    [_LT_SET_OPTION(_LT_Option)])
-dnl
-dnl Simply set some default values (i.e off) if boolean options were not
-dnl specified:
-_LT_UNLESS_OPTIONS([dlopen], [enable_dlopen=no
-])
-_LT_UNLESS_OPTIONS([win32-dll], [enable_win32_dll=no
-])
-dnl
-dnl If no reference was made to various pairs of opposing options, then
-dnl we run the default mode handler for the pair.  For example, if neither
-dnl `shared' nor `disable-shared' was passed, we enable building of shared
-dnl archives by default:
-_LT_UNLESS_OPTIONS([shared disable-shared], [_LT_ENABLE_SHARED])
-_LT_UNLESS_OPTIONS([static disable-static], [_LT_ENABLE_STATIC])
-_LT_UNLESS_OPTIONS([pic-only no-pic], [_LT_WITH_PIC])
-_LT_UNLESS_OPTIONS([fast-install disable-fast-install],
-                  [_LT_ENABLE_FAST_INSTALL])
+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])),
+    [_LT_SET_OPTION([$1], _LT_Option)])
+
+m4_if([$1],[LT_INIT],[
+  dnl
+  dnl Simply set some default values (i.e off) if boolean options were not
+  dnl specified:
+  _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no
+  ])
+  _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no
+  ])
+  dnl
+  dnl If no reference was made to various pairs of opposing options, then
+  dnl we run the default mode handler for the pair.  For example, if neither
+  dnl `shared' nor `disable-shared' was passed, we enable building of shared
+  dnl archives by default:
+  _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED])
+  _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC])
+  _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install],
+                  [_LT_ENABLE_FAST_INSTALL])
+  ])
 ])# _LT_SET_OPTIONS
 
 
@@ -84,24 +90,26 @@ _LT_UNLESS_OPTIONS([fast-install disable-fast-install],
 ## Macros to handle LT_INIT options. ##
 ## --------------------------------- ##
 
+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME)
+# -----------------------------------------
 m4_define([_LT_MANGLE_DEFUN],
-[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1]), [[^A-Z0-9_]], [_])])
+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])])
 
 
-# LT_OPTION_DEFINE(NAME, CODE)
-# ----------------------------
+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE)
+# -----------------------------------------------
 m4_define([LT_OPTION_DEFINE],
-[m4_define(_LT_MANGLE_DEFUN([$1]), [$2])[]dnl
+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl
 ])# LT_OPTION_DEFINE
 
 
 # dlopen
 # ------
-LT_OPTION_DEFINE([dlopen], [enable_dlopen=yes
+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes
 ])
 
 AU_DEFUN([AC_LIBTOOL_DLOPEN],
-[_LT_SET_OPTION([dlopen])
+[_LT_SET_OPTION([LT_INIT], [dlopen])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
 put the `dlopen' option into LT_INIT's first parameter.])
@@ -114,11 +122,11 @@ dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], [])
 # win32-dll
 # ---------
 # Declare package support for building win32 dll's.
-LT_OPTION_DEFINE([win32-dll],
+LT_OPTION_DEFINE([LT_INIT], [win32-dll],
 [enable_win32_dll=yes
 
 case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
   AC_CHECK_TOOL(AS, as, false)
   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
   AC_CHECK_TOOL(OBJDUMP, objdump, false)
@@ -126,17 +134,18 @@ case $host in
 esac
 
 test -z "$AS" && AS=as
-_LT_DECL([], [AS],      [0], [Assembler program])dnl
+_LT_DECL([], [AS],      [1], [Assembler program])dnl
 
 test -z "$DLLTOOL" && DLLTOOL=dlltool
-_LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl
+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl
 
 test -z "$OBJDUMP" && OBJDUMP=objdump
-_LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl
+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl
 ])# win32-dll
 
 AU_DEFUN([AC_LIBTOOL_WIN32_DLL],
-[_LT_SET_OPTION([win32-dll])
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+_LT_SET_OPTION([LT_INIT], [win32-dll])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
 put the `win32-dll' option into LT_INIT's first parameter.])
@@ -179,42 +188,23 @@ AC_ARG_ENABLE([shared],
        [Whether or not to build shared libraries])
 ])# _LT_ENABLE_SHARED
 
-LT_OPTION_DEFINE([shared], [_LT_ENABLE_SHARED([yes])])
-LT_OPTION_DEFINE([disable-shared], [_LT_ENABLE_SHARED([no])])
+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])])
 
 # Old names:
-AU_DEFUN([AC_ENABLE_SHARED],
-[_LT_SET_OPTION([shared])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `shared' option into LT_INIT's first parameter.])
+AC_DEFUN([AC_ENABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared])
 ])
 
-AU_DEFUN([AM_ENABLE_SHARED],
-[_LT_SET_OPTION([shared])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `shared' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AC_DISABLE_SHARED],
-[_LT_SET_OPTION([disable-shared])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-shared' option into LT_INIT's first parameter.])
+AC_DEFUN([AC_DISABLE_SHARED],
+[_LT_SET_OPTION([LT_INIT], [disable-shared])
 ])
 
-AU_DEFUN([AM_DISABLE_SHARED],
-[_LT_SET_OPTION([disable-shared])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-shared' option into LT_INIT's first parameter.])
-])
+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
 
 dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_SHARED], [])
 dnl AC_DEFUN([AM_ENABLE_SHARED], [])
-dnl AC_DEFUN([AC_DISABLE_SHARED], [])
 dnl AC_DEFUN([AM_DISABLE_SHARED], [])
 
 
@@ -252,42 +242,23 @@ AC_ARG_ENABLE([static],
        [Whether or not to build static libraries])
 ])# _LT_ENABLE_STATIC
 
-LT_OPTION_DEFINE([static], [_LT_ENABLE_STATIC([yes])])
-LT_OPTION_DEFINE([disable-static], [_LT_ENABLE_STATIC([no])])
+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])])
 
 # Old names:
-AU_DEFUN([AC_ENABLE_STATIC],
-[_LT_SET_OPTION([static])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `static' option into LT_INIT's first parameter.])
-])
-
-AU_DEFUN([AM_ENABLE_STATIC],
-[_LT_SET_OPTION([static])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you
-put the `static' option into LT_INIT's first parameter.])
+AC_DEFUN([AC_ENABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static])
 ])
 
-AU_DEFUN([AC_DISABLE_STATIC],
-[_LT_SET_OPTION([disable-static])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-static' option into LT_INIT's first parameter.])
+AC_DEFUN([AC_DISABLE_STATIC],
+[_LT_SET_OPTION([LT_INIT], [disable-static])
 ])
 
-AU_DEFUN([AM_DISABLE_STATIC],
-[_LT_SET_OPTION([disable-static])
-AC_DIAGNOSE([obsolete],
-[$0: Remove this warning and the call to _LT_SET_OPTION when you put
-the `disable-static' option into LT_INIT's first parameter.])
-])
+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
 
 dnl aclocal-1.4 backwards compatibility:
-dnl AC_DEFUN([AC_ENABLE_STATIC], [])
 dnl AC_DEFUN([AM_ENABLE_STATIC], [])
-dnl AC_DEFUN([AC_DISABLE_STATIC], [])
 dnl AC_DEFUN([AM_DISABLE_STATIC], [])
 
 
@@ -325,19 +296,19 @@ _LT_DECL([fast_install], [enable_fast_install], [0],
         [Whether or not to optimize for fast installation])dnl
 ])# _LT_ENABLE_FAST_INSTALL
 
-LT_OPTION_DEFINE([fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
-LT_OPTION_DEFINE([disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])])
+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])])
 
 # Old names:
 AU_DEFUN([AC_ENABLE_FAST_INSTALL],
-[_LT_SET_OPTION([fast-install])
+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
 the `fast-install' option into LT_INIT's first parameter.])
 ])
 
 AU_DEFUN([AC_DISABLE_FAST_INSTALL],
-[_LT_SET_OPTION([disable-fast-install])
+[_LT_SET_OPTION([LT_INIT], [disable-fast-install])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you put
 the `disable-fast-install' option into LT_INIT's first parameter.])
@@ -355,9 +326,24 @@ dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], [])
 # MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
 m4_define([_LT_WITH_PIC],
 [AC_ARG_WITH([pic],
-    [AS_HELP_STRING([--with-pic],
+    [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@],
        [try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
-    [pic_mode="$withval"],
+    [lt_p=${PACKAGE-default}
+    case $withval in
+    yes|no) pic_mode=$withval ;;
+    *)
+      pic_mode=default
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for lt_pkg in $withval; do
+       IFS="$lt_save_ifs"
+       if test "X$lt_pkg" = "X$lt_p"; then
+         pic_mode=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
     [pic_mode=default])
 
 test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
@@ -365,12 +351,12 @@ test -z "$pic_mode" && pic_mode=m4_default([$1], [default])
 _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl
 ])# _LT_WITH_PIC
 
-LT_OPTION_DEFINE([pic-only], [_LT_WITH_PIC([yes])])
-LT_OPTION_DEFINE([no-pic], [_LT_WITH_PIC([no])])
+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])])
+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])])
 
 # Old name:
 AU_DEFUN([AC_LIBTOOL_PICMODE],
-[_LT_SET_OPTION([pic-only])
+[_LT_SET_OPTION([LT_INIT], [pic-only])
 AC_DIAGNOSE([obsolete],
 [$0: Remove this warning and the call to _LT_SET_OPTION when you
 put the `pic-only' option into LT_INIT's first parameter.])
@@ -378,3 +364,21 @@ put the `pic-only' option into LT_INIT's first parameter.])
 
 dnl aclocal-1.4 backwards compatibility:
 dnl AC_DEFUN([AC_LIBTOOL_PICMODE], [])
+
+## ----------------- ##
+## LTDL_INIT Options ##
+## ----------------- ##
+
+m4_define([_LTDL_MODE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive],
+                [m4_define([_LTDL_MODE], [nonrecursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [recursive],
+                [m4_define([_LTDL_MODE], [recursive])])
+LT_OPTION_DEFINE([LTDL_INIT], [subproject],
+                [m4_define([_LTDL_MODE], [subproject])])
+
+m4_define([_LTDL_TYPE], [])
+LT_OPTION_DEFINE([LTDL_INIT], [installable],
+                [m4_define([_LTDL_TYPE], [installable])])
+LT_OPTION_DEFINE([LTDL_INIT], [convenience],
+                [m4_define([_LTDL_TYPE], [convenience])])
index fc51dc7e89640f16848f34bde1bff16fdf42fd0b..9000a057d31ddf75cb85ccda8757de4493bcdbe7 100644 (file)
@@ -1,13 +1,13 @@
 # ltsugar.m4 -- libtool m4 base layer.                         -*-Autoconf-*-
 #
-# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
-# Written by Gary V. Vaughan.
+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+# Written by Gary V. Vaughan, 2004
 #
 # This file is free software; the Free Software Foundation gives
 # unlimited permission to copy and/or distribute it, with or without
 # modifications, as long as this notice is preserved.
 
-# serial 3 ltsugar.m4
+# serial 6 ltsugar.m4
 
 # This is to help aclocal find these macros, as it can't see m4_define.
 AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
@@ -17,19 +17,15 @@ AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])])
 # -----------------------------
 # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their
 # associated separator.
+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier
+# versions in m4sugar had bugs.
 m4_define([lt_join],
-[m4_case([$#],
-        [0], [m4_fatal([$0: too few arguments: $#])],
-        [1], [],
-        [2], [[$2]],
-        [m4_ifval([$2],
-                  [[$2][]m4_foreach(_lt_Arg, lt_car([m4_shiftn(2, $@)]),
-                          [_$0([$1], _lt_Arg)])],
-                  [$0([$1], m4_shiftn(2, $@))])])[]dnl
-])
+[m4_if([$#], [1], [],
+       [$#], [2], [[$2]],
+       [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])])
 m4_define([_lt_join],
-[m4_ifval([$2],[$1][$2])[]dnl
-])
+[m4_if([$#$2], [2], [],
+       [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])])
 
 
 # lt_car(LIST)
@@ -46,19 +42,35 @@ m4_define([lt_cdr],
 m4_define([lt_unquote], $1)
 
 
+# lt_append(MACRO-NAME, STRING, [SEPARATOR])
+# ------------------------------------------
+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'.
+# Note that neither SEPARATOR nor STRING are expanded; they are appended
+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked).
+# No SEPARATOR is output if MACRO-NAME was previously undefined (different
+# than defined and empty).
+#
+# This macro is needed until we can rely on Autoconf 2.62, since earlier
+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING.
+m4_define([lt_append],
+[m4_define([$1],
+          m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])])
+
+
+
 # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...])
 # ----------------------------------------------------------
 # Produce a SEP delimited list of all paired combinations of elements of
 # PREFIX-LIST with SUFFIX1 through SUFFIXn.  Each element of the list
 # has the form PREFIXmINFIXSUFFIXn.
+# Needed until we can rely on m4_combine added in Autoconf 2.62.
 m4_define([lt_combine],
-[m4_if([$2], [], [],
-  [m4_if([$4], [], [],
-    [lt_join(m4_quote(m4_default([$1], [[, ]])),
-      lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_prefix, [$2],
-                          [m4_foreach(_Lt_suffix, lt_car([m4_shiftn(3, $@)]),
-                              [_Lt_prefix[]$3[]_Lt_suffix ])])))))])])dnl
-])
+[m4_if(m4_eval([$# > 3]), [1],
+       [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl
+[[m4_foreach([_Lt_prefix], [$2],
+            [m4_foreach([_Lt_suffix],
+               ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[,
+       [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])])
 
 
 # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ])
@@ -67,16 +79,16 @@ m4_define([lt_combine],
 # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ.
 m4_define([lt_if_append_uniq],
 [m4_ifdef([$1],
-       [m4_bmatch($3[]m4_defn([$1])$3, $3[]m4_re_escape([$2])$3,
-               [$5],
-           [m4_append([$1], [$2], [$3])$4])],
-    [m4_append([$1], [$2], [$3])$4])])
+         [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1],
+                [lt_append([$1], [$2], [$3])$4],
+                [$5])],
+         [lt_append([$1], [$2], [$3])$4])])
 
 
 # lt_dict_add(DICT, KEY, VALUE)
 # -----------------------------
 m4_define([lt_dict_add],
-[m4_define([$1($2)], [$4])])
+[m4_define([$1($2)], [$3])])
 
 
 # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE)
index 1a1ce48e01018465af996bba40a96e0a1a803161..07a8602d48d615a65800b14446d8c8c8694f2818 100644 (file)
@@ -1,23 +1,23 @@
 # ltversion.m4 -- version numbers                      -*- Autoconf -*-
 #
-# Copyright (C) 2004 Free Software Foundation, Inc.
-# Written by Scott James Remnant.
+#   Copyright (C) 2004 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004
 #
-## This file is free software; the Free Software Foundation gives
+# 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.
 
-# Generated from ltversion.in; do not edit by hand
+# @configure_input@
 
-# serial 2248 ltversion.m4
+# serial 3337 ltversion.m4
 # This file is part of GNU Libtool
 
-m4_define([LT_PACKAGE_VERSION], [2.1a])
-m4_define([LT_PACKAGE_REVISION], [1.2248])
+m4_define([LT_PACKAGE_VERSION], [2.4.2])
+m4_define([LT_PACKAGE_REVISION], [1.3337])
 
 AC_DEFUN([LTVERSION_VERSION],
-[macro_version='2.1a'
-macro_revision='1.2248'
+[macro_version='2.4.2'
+macro_revision='1.3337'
 _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?])
 _LT_DECL(, macro_revision, 0)
 ])
diff --git a/src/tiff/m4/lt~obsolete.m4 b/src/tiff/m4/lt~obsolete.m4
new file mode 100644 (file)
index 0000000..c573da9
--- /dev/null
@@ -0,0 +1,98 @@
+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions.    -*-Autoconf-*-
+#
+#   Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+#   Written by Scott James Remnant, 2004.
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+
+# serial 5 lt~obsolete.m4
+
+# These exist entirely to fool aclocal when bootstrapping libtool.
+#
+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN)
+# which have later been changed to m4_define as they aren't part of the
+# exported API, or moved to Autoconf or Automake where they belong.
+#
+# The trouble is, aclocal is a bit thick.  It'll see the old AC_DEFUN
+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us
+# using a macro with the same name in our local m4/libtool.m4 it'll
+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define
+# and doesn't know about Autoconf macros at all.)
+#
+# So we provide this file, which has a silly filename so it's always
+# included after everything else.  This provides aclocal with the
+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything
+# because those macros already exist, or will be overwritten later.
+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. 
+#
+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here.
+# Yes, that means every name once taken will need to remain here until
+# we give up compatibility with versions before 1.7, at which point
+# we need to keep only those names which we still refer to.
+
+# This is to help aclocal find these macros, as it can't see m4_define.
+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])])
+
+m4_ifndef([AC_LIBTOOL_LINKER_OPTION],  [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])])
+m4_ifndef([AC_PROG_EGREP],             [AC_DEFUN([AC_PROG_EGREP])])
+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH],        [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_AC_SHELL_INIT],         [AC_DEFUN([_LT_AC_SHELL_INIT])])
+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX],    [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])])
+m4_ifndef([_LT_PROG_LTMAIN],           [AC_DEFUN([_LT_PROG_LTMAIN])])
+m4_ifndef([_LT_AC_TAGVAR],             [AC_DEFUN([_LT_AC_TAGVAR])])
+m4_ifndef([AC_LTDL_ENABLE_INSTALL],    [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])])
+m4_ifndef([AC_LTDL_PREOPEN],           [AC_DEFUN([AC_LTDL_PREOPEN])])
+m4_ifndef([_LT_AC_SYS_COMPILER],       [AC_DEFUN([_LT_AC_SYS_COMPILER])])
+m4_ifndef([_LT_AC_LOCK],               [AC_DEFUN([_LT_AC_LOCK])])
+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE],        [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])])
+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF],    [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])])
+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O],    [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])])
+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])])
+m4_ifndef([AC_LIBTOOL_OBJDIR],         [AC_DEFUN([AC_LIBTOOL_OBJDIR])])
+m4_ifndef([AC_LTDL_OBJDIR],            [AC_DEFUN([AC_LTDL_OBJDIR])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])])
+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP],  [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])])
+m4_ifndef([AC_PATH_MAGIC],             [AC_DEFUN([AC_PATH_MAGIC])])
+m4_ifndef([AC_PROG_LD_GNU],            [AC_DEFUN([AC_PROG_LD_GNU])])
+m4_ifndef([AC_PROG_LD_RELOAD_FLAG],    [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])])
+m4_ifndef([AC_DEPLIBS_CHECK_METHOD],   [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])])
+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])])
+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])])
+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])])
+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])])
+m4_ifndef([LT_AC_PROG_EGREP],          [AC_DEFUN([LT_AC_PROG_EGREP])])
+m4_ifndef([LT_AC_PROG_SED],            [AC_DEFUN([LT_AC_PROG_SED])])
+m4_ifndef([_LT_CC_BASENAME],           [AC_DEFUN([_LT_CC_BASENAME])])
+m4_ifndef([_LT_COMPILER_BOILERPLATE],  [AC_DEFUN([_LT_COMPILER_BOILERPLATE])])
+m4_ifndef([_LT_LINKER_BOILERPLATE],    [AC_DEFUN([_LT_LINKER_BOILERPLATE])])
+m4_ifndef([_AC_PROG_LIBTOOL],          [AC_DEFUN([_AC_PROG_LIBTOOL])])
+m4_ifndef([AC_LIBTOOL_SETUP],          [AC_DEFUN([AC_LIBTOOL_SETUP])])
+m4_ifndef([_LT_AC_CHECK_DLFCN],                [AC_DEFUN([_LT_AC_CHECK_DLFCN])])
+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER],     [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])])
+m4_ifndef([_LT_AC_TAGCONFIG],          [AC_DEFUN([_LT_AC_TAGCONFIG])])
+m4_ifndef([AC_DISABLE_FAST_INSTALL],   [AC_DEFUN([AC_DISABLE_FAST_INSTALL])])
+m4_ifndef([_LT_AC_LANG_CXX],           [AC_DEFUN([_LT_AC_LANG_CXX])])
+m4_ifndef([_LT_AC_LANG_F77],           [AC_DEFUN([_LT_AC_LANG_F77])])
+m4_ifndef([_LT_AC_LANG_GCJ],           [AC_DEFUN([_LT_AC_LANG_GCJ])])
+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG],  [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])])
+m4_ifndef([_LT_AC_LANG_C_CONFIG],      [AC_DEFUN([_LT_AC_LANG_C_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])])
+m4_ifndef([_LT_AC_LANG_CXX_CONFIG],    [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])])
+m4_ifndef([_LT_AC_LANG_F77_CONFIG],    [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG],        [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])])
+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG],    [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])])
+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])])
+m4_ifndef([_LT_AC_LANG_RC_CONFIG],     [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])])
+m4_ifndef([AC_LIBTOOL_CONFIG],         [AC_DEFUN([AC_LIBTOOL_CONFIG])])
+m4_ifndef([_LT_AC_FILE_LTDLL_C],       [AC_DEFUN([_LT_AC_FILE_LTDLL_C])])
+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS],        [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])])
+m4_ifndef([_LT_AC_PROG_CXXCPP],                [AC_DEFUN([_LT_AC_PROG_CXXCPP])])
+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS],        [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])])
+m4_ifndef([_LT_PROG_ECHO_BACKSLASH],   [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])])
+m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
+m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
+m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
index 657fe0ab34efda2de878e038f7955cd60422cdfa..bcad9ba70596e3cc510255b43007f650655a05dd 100644 (file)
@@ -41,6 +41,7 @@ dist_man1_MANS = \
        tiff2rgba.1 \
        tiffcmp.1 \
        tiffcp.1 \
+       tiffcrop.1 \
        tiffdither.1 \
        tiffdump.1 \
        tiffgt.1 \
@@ -58,6 +59,12 @@ dist_man3_MANS = \
        TIFFcolor.3tiff \
        TIFFDataWidth.3tiff \
        TIFFError.3tiff \
+       TIFFFieldDataType.3tiff \
+       TIFFFieldName.3tiff \
+       TIFFFieldPassCount.3tiff \
+       TIFFFieldReadCount.3tiff \
+       TIFFFieldTag.3tiff \
+       TIFFFieldWriteCount.3tiff \
        TIFFFlush.3tiff \
        TIFFGetField.3tiff \
        TIFFmemory.3tiff \
index b7fb6d50023f2333b02e262bc048cd45c07b8632..ff60f6f39dd351773333c67e98f38899ac07ad58 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,23 +74,68 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = man
 DIST_COMMON = $(dist_man1_MANS) $(dist_man3_MANS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
 man1dir = $(mandir)/man1
 am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"
 man3dir = $(mandir)/man3
@@ -84,9 +143,8 @@ NROFF = nroff
 MANS = $(dist_man1_MANS) $(dist_man3_MANS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -106,6 +164,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -120,12 +179,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -144,20 +198,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -169,62 +228,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 dist_man1_MANS = \
        bmp2tiff.1 \
        fax2ps.1 \
@@ -243,6 +306,7 @@ dist_man1_MANS = \
        tiff2rgba.1 \
        tiffcmp.1 \
        tiffcp.1 \
+       tiffcrop.1 \
        tiffdither.1 \
        tiffdump.1 \
        tiffgt.1 \
@@ -260,6 +324,12 @@ dist_man3_MANS = \
        TIFFcolor.3tiff \
        TIFFDataWidth.3tiff \
        TIFFError.3tiff \
+       TIFFFieldDataType.3tiff \
+       TIFFFieldName.3tiff \
+       TIFFFieldPassCount.3tiff \
+       TIFFFieldReadCount.3tiff \
+       TIFFFieldTag.3tiff \
+       TIFFFieldWriteCount.3tiff \
        TIFFFlush.3tiff \
        TIFFGetField.3tiff \
        TIFFmemory.3tiff \
@@ -299,14 +369,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  man/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  man/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign man/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -324,137 +394,144 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 mostlyclean-libtool:
        -rm -f *.lo
 
 clean-libtool:
        -rm -rf .libs _libs
-
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-install-man1: $(man1_MANS) $(man_MANS)
+install-man1: $(dist_man1_MANS)
        @$(NORMAL_INSTALL)
-       test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)"
-       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
+       @list1='$(dist_man1_MANS)'; \
+       list2=''; \
+       test -n "$(man1dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.1[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
+         fi; \
        done; \
-       for i in $$list; do \
-         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-         else file=$$i; fi; \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           1*) ;; \
-           *) ext='1' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
-         $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
-       done
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
+       done; }
+
 uninstall-man1:
        @$(NORMAL_UNINSTALL)
-       @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.1*) list="$$list $$i" ;; \
-         esac; \
-       done; \
-       for i in $$list; do \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           1*) ;; \
-           *) ext='1' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
-         rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
-       done
-install-man3: $(man3_MANS) $(man_MANS)
+       @list='$(dist_man1_MANS)'; test -n "$(man1dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
+install-man3: $(dist_man3_MANS)
        @$(NORMAL_INSTALL)
-       test -z "$(man3dir)" || $(mkdir_p) "$(DESTDIR)$(man3dir)"
-       @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.3*) list="$$list $$i" ;; \
-         esac; \
+       @list1='$(dist_man3_MANS)'; \
+       list2=''; \
+       test -n "$(man3dir)" \
+         && test -n "`echo $$list1$$list2`" \
+         || exit 0; \
+       echo " $(MKDIR_P) '$(DESTDIR)$(man3dir)'"; \
+       $(MKDIR_P) "$(DESTDIR)$(man3dir)" || exit 1; \
+       { for i in $$list1; do echo "$$i"; done;  \
+       if test -n "$$list2"; then \
+         for i in $$list2; do echo "$$i"; done \
+           | sed -n '/\.3[a-z]*$$/p'; \
+       fi; \
+       } | while read p; do \
+         if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+         echo "$$d$$p"; echo "$$p"; \
+       done | \
+       sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
+       sed 'N;N;s,\n, ,g' | { \
+       list=; while read file base inst; do \
+         if test "$$base" = "$$inst"; then list="$$list $$file"; else \
+           echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
+           $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst" || exit $$?; \
+         fi; \
        done; \
-       for i in $$list; do \
-         if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
-         else file=$$i; fi; \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           3*) ;; \
-           *) ext='3' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man3dir)/$$inst'"; \
-         $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man3dir)/$$inst"; \
-       done
+       for i in $$list; do echo "$$i"; done | $(am__base_list) | \
+       while read files; do \
+         test -z "$$files" || { \
+           echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man3dir)'"; \
+           $(INSTALL_DATA) $$files "$(DESTDIR)$(man3dir)" || exit $$?; }; \
+       done; }
+
 uninstall-man3:
        @$(NORMAL_UNINSTALL)
-       @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \
-       l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
-       for i in $$l2; do \
-         case "$$i" in \
-           *.3*) list="$$list $$i" ;; \
-         esac; \
-       done; \
-       for i in $$list; do \
-         ext=`echo $$i | sed -e 's/^.*\\.//'`; \
-         case "$$ext" in \
-           3*) ;; \
-           *) ext='3' ;; \
-         esac; \
-         inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
-         inst=`echo $$inst | sed -e 's/^.*\///'`; \
-         inst=`echo $$inst | sed '$(transform)'`.$$ext; \
-         echo " rm -f '$(DESTDIR)$(man3dir)/$$inst'"; \
-         rm -f "$(DESTDIR)$(man3dir)/$$inst"; \
-       done
+       @list='$(dist_man3_MANS)'; test -n "$(man3dir)" || exit 0; \
+       files=`{ for i in $$list; do echo "$$i"; done; \
+       } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^3][0-9a-z]*$$,3,;x' \
+             -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
+       dir='$(DESTDIR)$(man3dir)'; $(am__uninstall_files_from_dir)
 tags: TAGS
 TAGS:
 
 ctags: CTAGS
 CTAGS:
 
+cscope cscopelist:
+
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @list='$(MANS)'; if test -n "$$list"; then \
+         list=`for p in $$list; do \
+           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
+           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
+         if test -n "$$list" && \
+           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
+           echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
+           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
+           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
+           echo "       typically 'make maintainer-clean' will remove them" >&2; \
+           exit 1; \
+         else :; fi; \
+       else :; fi
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -463,7 +540,7 @@ check: check-am
 all-am: Makefile $(MANS)
 installdirs:
        for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(man3dir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -475,16 +552,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -495,7 +578,7 @@ clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
        -rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool
+distclean-am: clean-am distclean-generic
 
 dvi: dvi-am
 
@@ -503,18 +586,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am: install-man
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man: install-man1 install-man3
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -533,20 +636,25 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am uninstall-man
+uninstall-am: uninstall-man
 
 uninstall-man: uninstall-man1 uninstall-man3
 
+.MAKE: install-am install-strip
+
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
        distclean distclean-generic distclean-libtool distdir dvi \
        dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-exec install-exec-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
        install-info install-info-am install-man install-man1 \
-       install-man3 install-strip installcheck installcheck-am \
+       install-man3 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
        installdirs maintainer-clean maintainer-clean-generic \
        mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-       ps ps-am uninstall uninstall-am uninstall-info-am \
-       uninstall-man uninstall-man1 uninstall-man3
+       ps ps-am uninstall uninstall-am uninstall-man uninstall-man1 \
+       uninstall-man3
+
 
 # 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.
index 6dce01fe66237985a2c1a61d4ff2f539dacfddfa..bcb760443ed4f5fc566a30b6d9dc795e4aff2813 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFClose.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFClose.3tiff,v 1.3 2009-08-24 19:13:40 bfriesen Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -40,7 +40,7 @@ Any buffered data are flushed to the file, including the contents of the
 current directory (if modified); and all resources are reclaimed.
 .SH DIAGNOSTICS
 All error messages are directed to the
-.bR TIFFError (3TIFF)
+.BR TIFFError (3TIFF)
 routine.
 Likewise, warning messages are directed to the
 .BR TIFFWarning (3TIFF)
index 614e69be21684c0205162f2b73c7ff4af2292470..cb274d891d41fdc8e4ffc653855614f61714c239 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFDataWidth.3tiff,v 1.3 2006/03/23 14:54:02 dron Exp $
+.\" $Id: TIFFDataWidth.3tiff,v 1.3 2006-03-23 14:54:02 dron Exp $
 .\"
 .\" Copyright (c) 2002, Andrey Kiselev <dron@ak4719.spb.edu>
 .\"
index 677a1df7b3c7abdf3e1e4c2f444f4891f4f6dba8..761ff08c4732c58b38e7fbaedfc83fcbd32ae768 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFError.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFError.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
diff --git a/src/tiff/man/TIFFFieldDataType.3tiff b/src/tiff/man/TIFFFieldDataType.3tiff
new file mode 100644 (file)
index 0000000..3efe697
--- /dev/null
@@ -0,0 +1,53 @@
+.\" $Id: TIFFFieldDataType.3tiff,v 1.1 2012-07-29 15:45:29 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldDataType 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldDataType \- Get TIFF data type from field information
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "TIFFDataType TIFFFieldDataType(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldDataType
+returns the data type stored in a TIFF field.
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldDataType
+returns a member of the enum type
+.BR TIFFDataType .
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
diff --git a/src/tiff/man/TIFFFieldName.3tiff b/src/tiff/man/TIFFFieldName.3tiff
new file mode 100644 (file)
index 0000000..2755d18
--- /dev/null
@@ -0,0 +1,52 @@
+.\" $Id: TIFFFieldName.3tiff,v 1.1 2012-07-29 15:45:29 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldName 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldName \- Get TIFF field name from field information
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "const char* TIFFFieldName(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldName
+returns the textual name for a TIFF field.
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldName
+returns a constant C string.
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
diff --git a/src/tiff/man/TIFFFieldPassCount.3tiff b/src/tiff/man/TIFFFieldPassCount.3tiff
new file mode 100644 (file)
index 0000000..8f3c5d0
--- /dev/null
@@ -0,0 +1,73 @@
+.\" $Id: TIFFFieldPassCount.3tiff,v 1.1 2012-07-29 15:45:29 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldPassCount 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldPassCount \- Get whether to pass a count to TIFFGet/SetField
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "int TIFFFieldPassCount(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldPassCount
+returns true (nonzero) if
+.BR TIFFGetField
+and
+.BR TIFFSetField
+expect a
+.I count
+value to be passed before the actual data pointer.
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.P
+When a
+.I count
+is required, it will be of type
+.BR uint32
+when
+.BR TIFFFieldReadCount
+reports
+.BR TIFF_VARIABLE2 ,
+and of type
+.BR uint16
+otherwise.  (This distinction is critical for use of
+.BR TIFFGetField ,
+but normally not so for use of
+.BR TIFFSetField .)
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldPassCount
+returns an integer that is always 1 (true) or 0 (false).
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
diff --git a/src/tiff/man/TIFFFieldReadCount.3tiff b/src/tiff/man/TIFFFieldReadCount.3tiff
new file mode 100644 (file)
index 0000000..cdb5858
--- /dev/null
@@ -0,0 +1,77 @@
+.\" $Id: TIFFFieldReadCount.3tiff,v 1.1 2012-07-29 15:45:30 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldReadCount 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldReadCount \- Get number of values to be read from field
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "int TIFFFieldReadCount(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldReadCount
+returns the number of values available to be read from the specified
+TIFF field; that is, the number of arguments that should be supplied to
+.BR TIFFGetField .
+For most field types this is a small positive integer, typically 1 or 2,
+but there are some special values:
+.br
+.BR TIFF_VARIABLE
+indicates that a variable number of values is possible; then, a
+.BR uint16
+.I count
+argument and a pointer
+.I data
+argument must be supplied to
+.BR TIFFGetField .
+.br
+.BR TIFF_VARIABLE2
+is the same as
+.BR TIFF_VARIABLE
+except that the
+.I count
+argument must have type
+.BR uint32 .
+.br
+.BR TIFF_SPP
+indicates that the number of arguments is equal to the image's
+number of samples per pixel.
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldReadCount
+returns an integer.
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
diff --git a/src/tiff/man/TIFFFieldTag.3tiff b/src/tiff/man/TIFFFieldTag.3tiff
new file mode 100644 (file)
index 0000000..bf8174e
--- /dev/null
@@ -0,0 +1,56 @@
+.\" $Id: TIFFFieldTag.3tiff,v 1.1 2012-07-29 15:45:30 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldTag 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldTag \- Get TIFF field tag value from field information
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "uint32 TIFFFieldTag(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldTag
+returns the numeric tag value for a TIFF field.
+This can be compared to various constants exported by the
+.BR libtiff
+header files, such as
+.BR TIFFTAG_IMAGEWIDTH .
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldTag
+returns an integer tag value.
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
diff --git a/src/tiff/man/TIFFFieldWriteCount.3tiff b/src/tiff/man/TIFFFieldWriteCount.3tiff
new file mode 100644 (file)
index 0000000..6330532
--- /dev/null
@@ -0,0 +1,88 @@
+.\" $Id: TIFFFieldWriteCount.3tiff,v 1.1 2012-07-29 15:45:30 tgl Exp $
+.\"
+.\" Copyright (c) 2012, Tom Lane <tgl@sss.pgh.pa.us>
+.\"
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\"
+.if n .po 0
+.TH TIFFFieldWriteCount 3TIFF "July 26, 2012" "libtiff"
+.SH NAME
+TIFFFieldWriteCount \- Get number of values to be written to field
+.SH SYNOPSIS
+.B "#include <tiffio.h>"
+.sp
+.BI "int TIFFFieldWriteCount(const TIFFField* " fip ")"
+.SH DESCRIPTION
+.BR TIFFFieldWriteCount
+returns the number of values to be written into the specified
+TIFF field; that is, the number of arguments that should be supplied to
+.BR TIFFSetField .
+For most field types this is a small positive integer, typically 1 or 2,
+but there are some special values:
+.br
+.BR TIFF_VARIABLE
+indicates that a variable number of values is possible; then, a
+.BR uint16
+.I count
+argument and a pointer
+.I data
+argument must be supplied to
+.BR TIFFSetField .
+.br
+.BR TIFF_VARIABLE2
+is the same as
+.BR TIFF_VARIABLE
+except that the
+.I count
+argument must have type
+.BR uint32 .
+(On most modern machines, this makes no practical difference, and the
+.I count
+argument can simply be an
+.BR int
+in either case.)
+.br
+.BR TIFF_SPP
+indicates that the number of arguments must be equal to the image's
+number of samples per pixel.
+.P
+.I fip
+is a field information pointer previously returned by
+.BR TIFFFindField ,
+.BR TIFFFieldWithTag ,
+or
+.BR TIFFFieldWithName .
+.P
+For most field types,
+.BR TIFFFieldWriteCount
+returns the same value as
+.BR TIFFFieldReadCount ,
+but there are some exceptions.
+.br
+.SH "RETURN VALUES"
+.br
+.BR TIFFFieldWriteCount
+returns an integer.
+.br
+.SH "SEE ALSO"
+.BR libtiff (3TIFF),
+.PP
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
index 9d8f2a060750987d2262b4b5b87b054990609093..af3235036a4b63d85e96ebd00357fab81887f906 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFFlush.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFFlush.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 907cc4b4916d8c54a1cfc89c2a36637cc82cc679..0624ee9bff1339f3dc26c4bc460e7dba1c6a15c4 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFGetField.3tiff,v 1.4 2006/01/02 23:50:44 bfriesen Exp $
+.\" $Id: TIFFGetField.3tiff,v 1.6 2012-05-19 23:15:22 bfriesen Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -147,7 +147,7 @@ TIFFTAG_PHOTOSHOP   2       uint32*,void**  count, data
 TIFFTAG_PLANARCONFIG   1       uint16*
 TIFFTAG_PREDICTOR      1       uint16*
 TIFFTAG_PRIMARYCHROMATICITIES  1       float** 6-entry array
-TIFFTAG_REFERENCEBLACKWHITE    1       float** 2*SamplesPerPixel array
+TIFFTAG_REFERENCEBLACKWHITE    1       float** 6-entry array
 TIFFTAG_RESOLUTIONUNIT 1       uint16*
 TIFFTAG_RICHTIFFIPTC   2       uint32*,void**  count, data
 TIFFTAG_ROWSPERSTRIP   1       uint32*
@@ -188,14 +188,16 @@ is one, then a single array is returned; otherwise three arrays are returned.
 Annex B.3 "Embedding ICC Profiles in TIFF Files" (available at
 http://www.color.org) for an explanation.
 .SH AUTOREGISTERED TAGS
-If you can't find the tag in the table above that means this is unsupported
-tag. But you still be able to read it's value if you know the data type of
+If you can't find the tag in the table above that means this is an unsupported
+tag and is not directly supported by
+.BR libtiff(3TIFF)
+library. You will still be able to read it's value if you know the data type of
 that tag. For example, if you want to read the LONG value from the tag 33424
 and ASCII string from the tag 36867 you can use the following code:
 .PP
 .RS
 .nf
-uint16  count;
+uint32  count;
 void    *data;
 
 TIFFGetField(tiff, 33424, &count, &data);
@@ -205,11 +207,6 @@ printf("Tag %d: %s, count %d\n", 36867, (char *)data, count);
 .fi
 .RE
 .PP
-
-
-is not supported by
-.BR libtiff(3TIFF),
-library
 .SH RETURN VALUES
 1 is returned if the tag is defined in the current directory; otherwise a 0 is
 returned.
index dfb4c454d75c589e5636877389358106f95bde7d..f42093138676969ff569083b5edeef69561a8100 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFOpen.3tiff,v 1.2 2005/07/01 12:36:22 dron Exp $
+.\" $Id: TIFFOpen.3tiff,v 1.2 2005-07-01 12:36:22 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 73cc73482350402a6b9931de378e034c957632f6..437b09e2c6edfae4218cd62d1374a21ed2518871 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFPrintDirectory.3tiff,v 1.1 2004/11/11 14:39:16 dron Exp $
+.\" $Id: TIFFPrintDirectory.3tiff,v 1.1 2004-11-11 14:39:16 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 5a9f83b9247880936caae9175edd7a119a180b8e..ef1a85cb4a8becb1082cdc6e49100c17672a101a 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFRGBAImage.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFRGBAImage.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index a86bd829d3f25d4b5194ff6a1aac68f07cf3f621..000bf0ae09ebef2351007b3576c644d2b45e3481 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadDirectory.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadDirectory.3tiff,v 1.3 2010-12-12 01:45:35 faxguy Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -119,20 +119,20 @@ This error is not fatal.
 An unknown tag was encountered in the directory;
 the library ignores all such tags.
 .PP
-\fBTIFF directory is missing requred "ImageLength" field\fP.
+\fBTIFF directory is missing required "ImageLength" field\fP.
 The image violates the specification by not having a necessary field.
 There is no way for the library to recover from this error.
 .PP
-\fBTIFF directory is missing requred "PlanarConfig" field\fP.
+\fBTIFF directory is missing required "PlanarConfig" field\fP.
 The image violates the specification by not having a necessary field.
 There is no way for the library to recover from this error.
 .PP
-\fBTIFF directory is missing requred "StripOffsets" field\fP.
+\fBTIFF directory is missing required "StripOffsets" field\fP.
 The image has multiple strips, but is missing the tag that
 specifies the file offset to each strip of data.
 There is no way for the library to recover from this error.
 .PP
-\fBTIFF directory is missing requred "TileOffsets" field\fP.
+\fBTIFF directory is missing required "TileOffsets" field\fP.
 The image has multiple tiles, but is missing the tag that
 specifies the file offset to each tile of data.
 There is no way for the library to recover from this error.
index 83a2644af6a17a04f0aff9c0926d668880126fb6..d2d7b67461df021d1bf9792327c780c292ad7685 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadEncodedStrip.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadEncodedStrip.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index ed6b59ccec99dcf73f775f5c19ffa5c847a85f87..5f6d900897766c3a3cbc84c95133008af1bcf570 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadEncodedTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadEncodedTile.3tiff,v 1.3 2006-10-13 07:22:01 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -23,7 +23,7 @@
 .\" OF THIS SOFTWARE.
 .\"
 .if n .po 0
-.TH TIFFReadEncodedTile 3TIFF "October 15, 1995" "libtiff"
+.TH TIFFReadEncodedTile 3TIFF "October 13, 2006" "libtiff"
 .SH NAME
 TIFFReadEncodedTile \- read and decode a tile of data from an open
 .SM TIFF
@@ -31,7 +31,7 @@ file
 .SH SYNOPSIS
 .B "#include <tiffio.h>"
 .sp
-.BI "int TIFFReadEncodedTile(TIFF *" tif ", u_long " tile ", u_char *" buf ", u_long " size ")"
+.BI "int TIFFReadEncodedTile(TIFF *" tif ", ttile_t " tile ", tdata_t " buf ", tsize_t " size ")"
 .SH DESCRIPTION
 Read the specified tile of data and place up to
 .I size
index 5af8295d52fafbc64021d36862d29c7c188d803a..5d43ce39627b4c2c337d6056dfb94840cf161694 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadRGBAImage.3tiff,v 1.3 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadRGBAImage.3tiff,v 1.4 2006-10-13 07:22:01 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -23,7 +23,7 @@
 .\" OF THIS SOFTWARE.
 .\"
 .if n .po 0
-.TH TIFFReadRGBAImage 3TIFF "October 29, 2004" "libtiff"
+.TH TIFFReadRGBAImage 3TIFF "October 13, 2006" "libtiff"
 .SH NAME
 TIFFReadRGBAImage, TIFFReadRGBAImageOriented \- read and decode an image
 into a fixed-format raster
@@ -38,9 +38,9 @@ into a fixed-format raster
 .br
 .B "#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)"
 .sp
-.BI "int TIFFReadRGBAImage(TIFF *" tif ", u_long " width ", u_long " height ", u_long *" raster ", int " stopOnError ")"
+.BI "int TIFFReadRGBAImage(TIFF *" tif ", uint32 " width ", uint32 " height ", uint32 *" raster ", int " stopOnError ")"
 .br
-.BI "int TIFFReadRGBAImageOriented(TIFF *" tif ", u_long " width ", u_long " height ", u_long *" raster ", int " orientation ", int " stopOnError ")"
+.BI "int TIFFReadRGBAImageOriented(TIFF *" tif ", uint32 " width ", uint32 " height ", uint32 *" raster ", int " orientation ", int " stopOnError ")"
 .br
 .SH DESCRIPTION
 .IR TIFFReadRGBAImage
index 2d8b067a58d700a0d97c47fa57b74ab57505d369..a8bb189955bd35d3762af47a4c5e6f98c127d6bb 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadRGBAStrip.3tiff,v 1.3 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadRGBAStrip.3tiff,v 1.3 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 9b52f3d8a627f63fc5ae48aeff6b1ef54bc621c2..dfae1a9a223d203b2008ed09528e7335f41dc018 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadRGBATile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadRGBATile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 1d4cac895f0bfde65dab732bd0be9e6a81c7f7a8..1f2d1d1eb0d0f414a16101aa9876148064eaa69f 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadRawStrip.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadRawStrip.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 5d4a56eab4e192c99bb050d82d0a7d7f284b47d5..3945dd904f2a9c037fd6cfa3d5b720328d7bcfa1 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadRawTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadRawTile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 0a46d584ed9520a209eeddc09a8b46fcefd85499..7baf651998ad178bd54f57dfd39e32e157fb135d 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadScanline.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadScanline.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 512092d20c6b08733318a37762f2fd6db2a77833..4a9b20d586eeee672606b9acbb105ab32877b1b1 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFReadTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFReadTile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index cdd8e4628ddca4c1be82da0f4d07a82a12c4ea10..162d3107d15631823832f00c26d26c6a28d2db8d 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFSetDirectory.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFSetDirectory.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index cd70005fd6fc8e4542dbb3070b85adef06ead477..33e94717f27f9ddaf3a0478fe9a7e2d7b96edb21 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFSetField.3tiff,v 1.4 2006/01/02 23:50:44 bfriesen Exp $
+.\" $Id: TIFFSetField.3tiff,v 1.5 2010-05-06 02:54:46 olivier Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -146,7 +146,7 @@ TIFFTAG_PHOTOSHOP   ?       uint32,void*    count, data
 TIFFTAG_PLANARCONFIG   1       uint16  \(dg
 TIFFTAG_PREDICTOR      1       uint16  \(dg
 TIFFTAG_PRIMARYCHROMATICITIES  1       float*  6-entry array
-TIFFTAG_REFERENCEBLACKWHITE    1       float*  \(dg 2*SamplesPerPixel array
+TIFFTAG_REFERENCEBLACKWHITE    1       float*  \(dg 6-entry array
 TIFFTAG_RESOLUTIONUNIT 1       uint16
 TIFFTAG_RICHTIFFIPTC   2       uint32,void*    count, data
 TIFFTAG_ROWSPERSTRIP   1       uint32  \(dg must be > 0
index 0a7142910f8e59b6303c0864c2dcfc214c30ee0d..32339aa13156e5106fc6bafb94954ab9076cb7f3 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWarning.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWarning.3tiff,v 1.3 2012-06-01 22:02:44 fwarmerdam Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -31,7 +31,7 @@ TIFFWarning, TIFFSetWarningHandler \- library warning interface
 .sp
 .BI "void TIFFWarning(const char *" module ", const char *" fmt ", " ... ")"
 .sp
-.B "#include <stdargh.h>"
+.B "#include <stdarg.h>"
 .sp
 .BI "typedef void (*TIFFWarningHandler)(const char *" module ", const char *" fmt ", va_list " ap ");"
 .sp
index 85b267b6e14983c944cfc784af803e921180af5c..b8de6bf58ed4fe806eef5d50d39a2db6ad54953d 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteDirectory.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteDirectory.3tiff,v 1.3 2010-12-12 01:45:35 faxguy Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -61,7 +61,7 @@ have an established location in the file.  It will rewrite the directory,
 but instead of place it at it's old location (as 
 .IR TIFFWriteDirectory
 would) it will place them at the end of the file, correcting the pointer from
-the preceeding directory or file header to point to it's new location.  This
+the preceding directory or file header to point to it's new location.  This
 is particularly important in cases where the size of the directory and
 pointed to data has grown, so it won't fit in the space available at the
 old location.
index 0427fa27e5dceaf2485136eb0e1e0227c4398faf..41306343cc575191ea6a58d74062a2b7082db2f7 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteEncodedStrip.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteEncodedStrip.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 20cd1aa2b2cbe95ad1c73058034e6dc43f134650..4bb471f8ce351e511cd1c1a8b8ac92fbea88a931 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteEncodedTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteEncodedTile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 43b4a17bdc5cd4aa5dcc318ce8045e3c7f032fc9..0fed3aa3718eb26ca7a9c2dc52474d431866212f 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteRawStrip.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteRawStrip.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index c6dbd87a182c74fc8e769503ed16cad7e57b7421..d422e588c900d4616d8819331c7b2d85f308204c 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteRawTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteRawTile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index c8042f968cb61850a4c81e6aa953b177d937b181..0dd35f51bc86cdb26dcc56f80d14374892d82fa5 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteScanline.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteScanline.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index c6516af804500db0a5f41f25644640b73f71def9..08250f7ce3b3acaf55818e9dc42b92a0c219020f 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFWriteTile.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFWriteTile.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 5b4595305c4aab5206e0239a64403b9334678e17..a4446cd96070437ede609ec90e5bd3f0d2cc8270 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFbuffer.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFbuffer.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1995 Sam Leffler
 .\" Copyright (c) 1995 Silicon Graphics, Inc.
index 55d0d38310fb3ccbdd8aebcdfc1c27503d8ec73a..78a0f02e97b1df84631c5bc02271926c2c2b31a0 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFcodec.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFcodec.3tiff,v 1.3 2011-08-02 14:09:43 bfriesen Exp $
 .\"
 .\" Copyright (c) 1995 Sam Leffler
 .\" Copyright (c) 1995 Silicon Graphics, Inc.
@@ -61,7 +61,7 @@ If the specified
 already has a registered codec then it is
 .I overridden
 and any images with data encoded with this
-compression scheme will be decoded using the supplied coded.
+compression scheme will be decoded using the supplied codec.
 .PP
 .I TIFFIsCODECConfigured
 returns 1 if the codec is configured and working. Otherwise 0 will be returned.
index a3faf79fcb11b856c63fb620ebf70d69380b1b18..e5d27270eac60d039a918a7587d3218742a436b9 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFcolor.3tiff,v 1.3 2006/03/23 14:54:02 dron Exp $
+.\" $Id: TIFFcolor.3tiff,v 1.4 2009-11-30 12:22:26 fwarmerdam Exp $
 .\"
 .\" Copyright (c) 2003, Andrey Kiselev <dron@ak4719.spb.edu>
 .\"
@@ -33,7 +33,7 @@ TIFFXYZToRGB \- color conversion routines.
 .br
 .BI "void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *" ycbcr ", uint32 " Y ", int32 " Cb ", int32 " Cr ", uint32 *" R ", uint32 *" G ", uint32 *" B " );"
 .sp
-.BI "int TIFFCIELabToRGBInit(TIFFCIELabToRGB *" cielab ", TIFFDisplay *" display ", float *" refWhite ");"
+.BI "int TIFFCIELabToRGBInit(TIFFCIELabToRGB *" cielab ", const TIFFDisplay *" display ", float *" refWhite ");"
 .br
 .BI "void TIFFCIELabToXYZ(TIFFCIELabToRGB *" cielab ", uint32 " L ", int32 " a ", int32 " b ", float *" X ", float *" Y ", float *" Z ");"
 .br
index eaca15f08dc28aca8d4426d6361dc82450b9688e..55f446b44c6a57a058667517106d4e32e9230ae5 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFmemory.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFmemory.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1995 Sam Leffler
 .\" Copyright (c) 1995 Silicon Graphics, Inc.
index 7e840973859c91312e3e6bba8c5719297050e570..8bddc889fc8df5f7243c588be4be27c008241364 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFquery.3tiff,v 1.1 2004/11/11 14:39:16 dron Exp $
+.\" $Id: TIFFquery.3tiff,v 1.1 2004-11-11 14:39:16 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index ae6346c5a675da068d4c8663b7f2b86816d299c5..6de9084ad7518ce64bcd497e9dd009bc7dc04146 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFsize.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFsize.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 7c383c1c6dc8b6c6a298695d7dc476effe4c5b0d..bb9658e50b4d2f4261efe40d3077238aa71ef24f 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFstrip.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFstrip.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1992-1997 Sam Leffler
 .\" Copyright (c) 1992-1997 Silicon Graphics, Inc.
index a72ea1bdf35efadab267da4ce282533597e99a07..d6432fa527530cc16029c18bcfbb59d6e92cb8a1 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFswab.3tiff,v 1.2 2005/11/02 11:07:18 dron Exp $
+.\" $Id: TIFFswab.3tiff,v 1.2 2005-11-02 11:07:18 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 94bab6c041c9a85084d5d23aa587f605510ddcdb..5431f31a80ecef570dd94ef459f593cf7f4f3c6b 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: TIFFtile.3tiff,v 1.2 2005/11/02 11:07:19 dron Exp $
+.\" $Id: TIFFtile.3tiff,v 1.2 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index f63ed867e260ec575a1e4b9dbb064aaba06c4cc9..f5d68ce011876295b84c4fc51394770ec97b1bb3 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: bmp2tiff.1,v 1.6 2006/03/23 14:54:02 dron Exp $
+.\" $Id: bmp2tiff.1,v 1.7 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 2004, Andrey Kiselev <dron@ak4719.spb.edu> 
 .\"
@@ -32,7 +32,10 @@ file from a Microsoft Windows Device Independent Bitmap image file
 [
 .I options
 ]
-.I input.bmp [input2.bmp ...]
+.I input.bmp
+[
+.I input2.bmp ...\&
+]
 .I output.tiff
 .SH DESCRIPTION
 .I bmp2tiff
@@ -45,7 +48,7 @@ output file will be created. By default, the
 image is created with data samples packed (\c
 .IR PlanarConfiguration =1),
 compressed with the PackBits algorithm (\c
-.IR Compression = 32773),
+.IR Compression =32773),
 and with each strip no more than 8 kilobytes.
 These characteristics can overridden, or explicitly specified
 with the options described below.
@@ -55,17 +58,17 @@ with the options described below.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm (the default),
-.B "-c jpeg"
+.B "\-c jpeg"
 for the baseline JPEG compression algorithm,
-.B "-c zip
+.B "\-c zip"
 for the Deflate compression algorithm,
 and
 .B "\-c lzw"
 for Lempel-Ziv & Welch.
 .TP
-.B \-r <number>
+.BI \-r " number"
 Write data with a specified number of rows per strip;
 by default the number of rows/strip is selected so that each strip
 is approximately 8 kilobytes.
index 9482d8cf05bda5d5850ce9688c7d6387815cc794..9525f20b0cef553999f83bb39aa6e84facfc41bc 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $Id: fax2ps.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\"    $Id: fax2ps.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -22,6 +22,7 @@
 .\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
 .\" OF THIS SOFTWARE.
 .\"
+.ds Ps PostScript
 .if n .po 0
 .TH FAX2PS 1 "November 2, 2005" "libtiff"
 .SH NAME
@@ -33,7 +34,7 @@ facsimile to compressed \*(Ps\(tm
 [
 .I options
 ] [
-.IR file ...
+.I file ...\&
 ]
 .SH DESCRIPTION
 .I fax2ps
@@ -88,7 +89,7 @@ This algorithm can, however, be ineffective
 for continuous-tone and white-on-black images.
 For these images, it sometimes is more efficient to send
 the raster bitmap image directly; see
-.IR tiff2ps (1).
+.BR tiff2ps (1).
 .SH OPTIONS
 .TP 10
 .BI \-p " number"
index 060fa2bc9675b9d1f2e163e105ac2a1138273415..873cab176a189947c17b37f10182915683e401b7 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: fax2tiff.1,v 1.6 2005/11/02 11:07:19 dron Exp $
+.\" $Id: fax2tiff.1,v 1.7 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -223,7 +223,7 @@ is specified),
 attempts to set the rows/strip
 that no more than 8 kilobytes of data appear in a strip (with except of G3/G4
 compression schemes). If you specify special value
-.B -1
+.B \-1
 it will results in infinite number of the rows per strip. The entire image
 will be the one strip in that case. This is default in case of G3/G4 output
 compression schemes.
index d52b2750813c2be7cdd5db64c3751267ad660b08..5f01d8dcdff69e634fa690ce6ef87a4bace74fe4 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: gif2tiff.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: gif2tiff.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -52,9 +52,9 @@ with the options described below.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm,
-.B "-c zip"
+.B "\-c zip"
 for the Deflate compression algorithm,
 and
 .B "\-c lzw"
index 0d8885f04a758a8a0f6641e5ebd6ed72d67752b8..59895d6209b0d6f21d512f2d9b73d3974ff84f16 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: libtiff.3tiff,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: libtiff.3tiff,v 1.4 2012-07-29 15:45:30 tgl Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -163,9 +163,18 @@ TIFFCurrentTile            return index of current tile
 TIFFDataWidth          return the size of TIFF data types
 TIFFError              library error handler
 TIFFFdOpen             open a file for reading or writing
+TIFFFieldDataType      get data type from field information
+TIFFFieldName          get field name from field information
+TIFFFieldPassCount     get whether to pass a value count to Get/SetField
+TIFFFieldReadCount     get number of values to be read from field
+TIFFFieldTag           get tag value from field information
+TIFFFieldWithName      get field information given field name
+TIFFFieldWithTag       get field information given tag
+TIFFFieldWriteCount    get number of values to be written to field
 TIFFFileName           return name of open file
 TIFFFileno             return open file descriptor
 TIFFFindCODEC          find standard codec for the specific scheme
+TIFFFindField          get field information given tag and data type
 TIFFFlush              flush all pending writes
 TIFFFlushData          flush pending data writes
 TIFFGetBitRevTable     return bit reversal table
index 8dd87ace64166ce6c4889a73f0fe7aaf00dee675..0ac2e5af41d4b46dae9ccddb9f949705efb3bb83 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: pal2rgb.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: pal2rgb.1,v 1.3 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index b951444ed3f40a0e95a6c08d03082fa27bef933d..882fd0451d6a0b0b63aa83c15956cf0c60da0696 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: ppm2tiff.1,v 1.5 2006/03/01 11:20:33 dron Exp $
+.\" $Id: ppm2tiff.1,v 1.5 2006-03-01 11:20:33 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 57dd034ea9b6efa7fc0d2c74e0898945844ba81b..0c78ddb6219834979057bf1c91f9ad909cf37b67 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: ras2tiff.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: ras2tiff.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -65,11 +65,11 @@ is 24 or 1 (min-is-black) if the depth is not 24.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm,
-.B "-c jpeg"
+.B "\-c jpeg"
 for the baseline JPEG compression algorithm,
-.B "-c zip
+.B "\-c zip
 for the Deflate compression algorithm,
 and
 .B "\-c lzw"
index dd68447c702a02ed3405fecc30a168359a65ce5e..3e832df28e54d866934fd55dff128cb7610bd4fe 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: raw2tiff.1,v 1.5 2005/11/02 11:07:19 dron Exp $
+.\" $Id: raw2tiff.1,v 1.7 2009-08-24 19:13:40 bfriesen Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -44,99 +44,102 @@ By default, the
 image is created with data samples packed (\c
 .IR PlanarConfiguration =1),
 compressed with the PackBits algorithm (\c
-.IR Compression = 32773),
+.IR Compression =32773),
 and with each strip no more than 8 kilobytes.
 These characteristics can overridden, or explicitly specified
 with the options described below.
 .SH OPTIONS
 .TP
-.B \-H <number>
+.BI \-H " number"
 size of input image file header in bytes (0 by default). This amount of data
 just will be skipped from the start of file while reading.
 .TP
-.B \-w <number>
+.BI \-w " number"
 width of input image in pixels (can be guessed, see
 .SM
 .B "GUESSING THE IMAGE GEOMETRY"
 below).
 .TP
-.B \-l <number>
-length of input image in lines(can be guessed, see
+.BI \-l " number"
+length of input image in lines (can be guessed, see
 .SM
 .B "GUESSING THE IMAGE GEOMETRY"
 below).
 .TP
-.B \-b <number>
+.BI \-b " number"
 number of bands in input image (1 by default).
 .TP
-.B \-d data_type
+.BI \-d " data_type"
 type of samples in input image, where
-.B data_type
+.I data_type
 may be:
+.ta \w'\fBdouble  \fR'u
 .br
-.I byte\t\t
+.B byte\t
 8-bit unsigned integer (default),
 .br
-.I short\t
+.B short\t
 16-bit unsigned integer,
 .br
-.I long\t\t
+.B long\t
 32-bit unsigned integer,
 .br
-.I sbyte\t
+.B sbyte\t
 8-bit signed integer,
 .br
-.I sshort\t
+.B sshort\t
 16-bit signed integer,
 .br
-.I slong\t
+.B slong\t
 32-bit signed integer,
 .br
-.I float\t
+.B float\t
 32-bit IEEE floating point,
 .br
-.I double\t
-64-bit IEEE floating point,
+.B double\t
+64-bit IEEE floating point.
 .TP
-.B \-i config
+.BI \-i " config"
 type of samples interleaving in input image, where
-.B config
+.I config
 may be:
+.ta \w'\fBpixel  \fR'u
 .br
-.I pixel\t
+.B pixel\t
 pixel interleaved data (default),
 .br
-.I band\t\t
+.B band\t
 band interleaved data.
 .TP
-.B \-p photo
+.BI \-p " photo"
 photometric interpretation (color space) of the input image, where
-.B photo
+.I photo
 may be:
+.ta \w'\fBminiswhite  \fR'u
 .br
-.I miniswhite
+.B miniswhite\t
 white color represented with 0 value,
 .br
-.I minisblack
+.B minisblack\t
 black color represented with 0 value (default),
 .br
-.I rgb\t\t
+.B rgb\t
 image has RGB color model,
 .br
-.I cmyk\t\t
+.B cmyk\t
 image has CMYK (separated) color model,
 .br
-.I ycbcr\t\t
+.B ycbcr\t
 image has YCbCr color model,
 .br
-.I cielab\t
+.B cielab\t
 image has CIE L*a*b color model,
 .br
-.I icclab\t
+.B icclab\t
 image has ICC L*a*b color model,
 .br
-.I itulab\t
-image has ITU L*a*b color model,
+.B itulab\t
+image has ITU L*a*b color model.
 .TP
 .B \-s
 swap bytes fetched from the input file.
@@ -151,17 +154,17 @@ input data has MSB2LSB bit order.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm (the default),
-.B "-c jpeg"
+.B "\-c jpeg"
 for the baseline JPEG compression algorithm,
-.B "-c zip
+.B "\-c zip"
 for the Deflate compression algorithm,
 and
 .B "\-c lzw"
 for Lempel-Ziv & Welch.
 .TP
-.B \-r <number>
+.BI \-r " number"
 Write data with a specified number of rows per strip;
 by default the number of rows/strip is selected so that each strip
 is approximately 8 kilobytes.
@@ -184,7 +187,7 @@ There is no magic, it is just a mathematical statistics, so it can be wrong
 in some cases. But for most ordinary images guessing method will work fine.
 .SH "SEE ALSO"
 .BR pal2rgb (1),
-.bR tiffinfo (1),
+.BR tiffinfo (1),
 .BR tiffcp (1),
 .BR tiffmedian (1),
 .BR libtiff (3)
index 487e5b68357917f4e6a2eea478d2eb81f3757d37..01a332ca07ae5addf890c0f92512b0be11650bea 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $Header: /cvs/maptools/cvsroot/libtiff/man/rgb2ycbcr.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\"    $Header: /cvs/maptools/cvsroot/libtiff/man/rgb2ycbcr.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -70,11 +70,11 @@ rows per strip.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm (the default),
-.B "-c jpeg"
+.B "\-c jpeg"
 for the JPEG compression algorithm,
-.B "-c zip"
+.B "\-c zip"
 for the deflate compression algorithm,
 and
 .B "\-c lzw"
index 6494d27acf80df31aa08dd0cb015a38dd9eab2f2..650adb3cca49ba9a85f040db2657ad930ebfed89 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: sgi2tiff.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: sgi2tiff.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1991-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -58,11 +58,11 @@ with the options described below.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm),
-.B "-c jpeg"
+.B "\-c jpeg"
 for the baseline JPEG compression algorithm,
-.B "-c zip
+.B "\-c zip
 for the Deflate compression algorithm,
 and
 .B "\-c lzw"
index e9d6213d0bb0a6a66d56c88a0a38094c33567d00..f4172bb6f5c853418f0d0257e4d5ee711ad8fe31 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $Id: thumbnail.1,v 1.2 2005/11/02 11:07:19 dron Exp $
+.\"    $Id: thumbnail.1,v 1.2 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1994-1997 Sam Leffler
 .\" Copyright (c) 1994-1997 Silicon Graphics, Inc.
index 01135bee1d114579e5d7c5e5528237070e3be9a5..ccbe7e8fa03e5221c41a762c4d2bf8a438689d8f 100644 (file)
@@ -1,4 +1,4 @@
-.\"    $Id: tiff2bw.1,v 1.2 2005/11/02 11:07:19 dron Exp $
+.\"    $Id: tiff2bw.1,v 1.3 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -31,7 +31,7 @@ image to greyscale
 .SH SYNOPSIS
 .B tiff2bw
 [
-options
+.I options
 ]
 .I input.tif
 .I output.tif
@@ -58,13 +58,13 @@ options may be used.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression,
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm,
-.B "-c zip
+.B "\-c zip
 for the Deflate compression algorithm,
-.B "-c g3
+.B "\-c g3
 for the CCITT Group 3 compression algorithm,
-.B "-c g4
+.B "\-c g4
 for the CCITT Group 4 compression algorithm,
 and
 .B "\-c lzw"
index a52c56b57154fbd32fdfbe378a1d45614023f17e..ba670cfba0ff78397e194cbfca17bdf9c522234b 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiff2pdf.1,v 1.4 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiff2pdf.1,v 1.7 2010-12-11 22:47:49 faxguy Exp $
 .\" 
 .\"  Copyright (c) 2003 Ross Finlayson
 .\" 
 .\" Process this file with
 .\" groff -man -Tascii tiff2pdf.1
 .\"
-.TH TIFF2PDF 1 "November 2, 2005" "libtiff"
+.TH TIFF2PDF 1 "April 20, 2006" "libtiff"
 .SH NAME
-tiff2pdf - convert a TIFF image to a PDF document
+tiff2pdf \- convert a TIFF image to a PDF document
 .SH SYNOPSIS
-.B tiff2pdf [
+.B tiff2pdf
+[
 .I options 
-.B 
+] 
 .I input.tiff
 .SH DESCRIPTION
-.B tiff2pdf
+.I tiff2pdf
 opens a TIFF image and writes a PDF document to standard output.
 .PP
 The program converts one TIFF file to one PDF file, including multiple page 
@@ -50,7 +51,7 @@ If the input TIFF file is of huge dimensions (greater than 10000 pixels height
 or width) convert the input image to a tiled TIFF if it is not already.
 .PP
 The standard output is standard output.  Set the output file name with the 
-.BI -o output.pdf
+.BI \-o " output.pdf"
 option.
 .PP
 All black and white files are compressed into a single strip CCITT G4 Fax
@@ -107,11 +108,11 @@ length can be set by the
 option, the default unit is inch.
 .PP
 Various items of the output document information can be set with the
-.B \-e,
-.B \-c
-.B \-a,
-.B \-t,
-.B \-s,
+.BR \-e ,
+.BR \-c 
+.BR \-a ,
+.BR \-t ,
+.BR \-s ,
 and
 .B \-k
 options.  Setting the argument of the option to "" for these 
@@ -123,17 +124,23 @@ The Portable Document Format (PDF) specification is copyrighted by Adobe
 Systems, Incorporated.
 .SH OPTIONS
 .TP
-.BI \-o output-file
-Set the output to go to file 
+.BI \-o " output-file"
+Set the output to go to file.
 .I output-file
 .TP
 .B \-j  
-Compress with JPEG (requires libjpeg configured with libtiff).
+Compress with JPEG (requires
+.I libjpeg
+configured with
+.IR libtiff ).
 .TP
 .B \-z  
-Compress with Zip/Deflate (requires zlib configured with libtiff).
+Compress with Zip/Deflate (requires
+.I zlib
+configured with
+.IR libtiff ).
 .TP
-.BI \-q quality
+.BI \-q " quality"
 Set the compression quality, 1-100 for JPEG.
 .TP
 .B \-n
@@ -141,7 +148,7 @@ Do not allow data to be converted without uncompressing, no compressed
 data passthrough.
 .TP
 .BI \-b
-Set PDF "Interpolate" user preference.
+Set PDF ``Interpolate'' user preference.
 .TP
 .B \-d  
 Do not compress (decompress).
@@ -149,95 +156,98 @@ Do not compress (decompress).
 .B \-i  
 Invert colors.
 .TP
-.BI \-p paper-size
-Set paper size, eg "letter", "legal", "A4".
+.BI \-p " paper-size"
+Set paper size, e.g.,
+.BR letter ,
+.BR legal ,
+.BR A4 .
 .TP
-.BI \-u [i|m]
+.B \-F
+Cause the tiff to fill the PDF page.
+.TP
+.BR \-u " [" i | m ]
 Set distance unit,
-.I i
+.B i
 for inch, 
-.I m
+.B m
 for centimeter.
 .TP
-.BI \-w width
+.BI \-w " width"
 Set width in units.
 .TP
-.BI \-l length
+.BI \-l " length"
 Set length in units.
 .TP
-.BI \-x xres
+.BI \-x " xres"
 Set x/width resolution default.
 .TP
-.BI \-y yres
+.BI \-y " yres"
 Set y/length resolution default.
 .TP
-.BI \-r [d|o]
+.BR \-r " [" d | o ]
 Set
-.I d
+.B d
 for resolution default for images without resolution, 
-.I o for resolution override for all images.
+.B o
+for resolution override for all images.
 .TP
 .BI \-f
-Set PDF "Fit Window" user preference.
+Set PDF ``Fit Window'' user preference.
 .TP
-.BI \-e YYYYMMDDHHMMSS
+.BI \-e " YYYYMMDDHHMMSS"
 Set document information date, overrides image or current date/time default,
 .I YYYYMMDDHHMMSS.
 .TP
-.BI \-c creator
+.BI \-c " creator"
 Set document information creator, overrides image software default.
 .TP
-.BI \-a author
-Set document information author, overrides image artist default
+.BI \-a " author"
+Set document information author, overrides image artist default.
 .TP
-.BI \-t title
-Set document information title, overrides image document name default
+.BI \-t " title"
+Set document information title, overrides image document name default.
 .TP
-.BI \-s subject
-Set document information subject, overrides image image description default
+.BI \-s " subject"
+Set document information subject, overrides image image description default.
 .TP
-.BI \-k keywords
+.BI \-k " keywords"
 Set document information keywords.
 .TP
 .B \-h  
 List usage reminder to stderr and exit.
-.TP
 .SH EXAMPLES
 .TP
 The following example would generate the file output.pdf from input.tiff.
-.PP
 .RS
-.NF
-tiff2pdf -o output.pdf input.tiff
-.FI
+.nf
+tiff2pdf \-o output.pdf input.tiff
+.fi
 .RE
 .PP
 The following example would generate PDF output from input.tiff and write it 
 to standard output.
-.PP
 .RS
-.NF
+.nf
 tiff2pdf input.tiff
-.FI
+.fi
 .RE
 .PP
 The following example would generate the file output.pdf from input.tiff, 
 putting the image pages on a letter sized page, compressing the output 
-with JPEG, with JPEG quality 75, setting the title to "Document", and setting 
-the "Fit Window" option.
-.PP
+with JPEG, with JPEG quality 75, setting the title to ``Document'', and setting 
+the ``Fit Window'' option.
 .RS
-.NF
-tiff2pdf -p letter -j -q 75 -t "Document" -f -o output.pdf input.tiff
-.FI
+.nf
+tiff2pdf \-p letter \-j \-q 75 \-t "Document" \-f \-o output.pdf input.tiff
+.fi
 .RE
 .SH BUGS
 Please report bugs via the web interface at 
 .IP
 \%http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff
 .SH "SEE ALSO"
-.BR libtiff (3) ,
-.BR tiffcp (1) 
+.BR libtiff (3),
+.BR tiffcp (1), 
 .BR tiff2ps (1)
 .PP
 Libtiff library home page:
index 87548e4278b7bd99dc218f1cb45983d034fbca5d..c3a9bacf6b688b8de55d28017c2bd59804dee147 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiff2ps.1,v 1.8 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiff2ps.1,v 1.10 2009-01-12 02:05:19 bfriesen Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
 .\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
 .\" OF THIS SOFTWARE.
 .\"
+.ds Ps PostScript
 .if n .po 0
 .TH TIFF2PS 1 "November 2, 2005" "libtiff"
 .SH NAME
 tiff2ps \- convert a
 .SM TIFF
-image to \*(Ps\(tm
+image to \*(Ps\*(Tm
 .SH SYNOPSIS
 .B tiff2ps
 [
@@ -108,18 +109,23 @@ the height of the printed image.
 .TP
 .B \-c
 Center the image in the output. This option only shows an effect if both
-the -w and the -h option are given.
+the
+.B \-w
+and the
+.B \-h
+option are given.
 .TP
 .B \-d
 Set the initial
 .SM TIFF
 directory to the specified directory number.
-(NB: directories are numbered starting at zero.)
+(NB: Directories are numbered starting at zero.)
 This option is useful for selecting individual pages in a
 multi-page (e.g. facsimile) file.
 .TP
 .B \-e
-Force the generation of Encapsulated \*(Ps (implies -z).
+Force the generation of Encapsulated \*(Ps (implies
+.BR \-z ).
 .TP
 .B \-h
 Specify the vertical size of the printed area (in inches).
@@ -130,6 +136,13 @@ be split in several pages. Option
 .B \-L
 may be used for specifying size of split images overlapping.
 .TP
+.B \-W
+Specify the maximum width of image (in inches). Images with larger sizes will
+be split in several pages. Options
+.B \-L
+and 
+.B \-W
+are mutually exclusive.
 .B \-i
 Enable/disable pixel interpolation.  This option requires a
 single numeric value: zero to disable pixel interpolation and
@@ -139,6 +152,8 @@ non-zero to enable.  The default is enabled.
 Specify the size of overlapping for split images (in inches). Used in
 conjunction with
 .B \-H
+option and
+.B \-W
 option.
 .TP
 .B \-l
@@ -147,14 +162,17 @@ the width of the printed image.
 .TP
 .B \-m
 Where possible render using the
-.B imagemask
-\*(Ps operator instead of the image operator.  When this option is specified
+.I imagemask
+\*(Ps operator instead of the
+.I image
+operator.  When this option is specified
 .I tiff2ps
 will use
-.B imagemask
+.I imagemask
 for rendering 1 bit deep images.  If this option is not specified
-or if the image depth is greater than 1 then the image operator
-is used.
+or if the image depth is greater than 1 then the
+.I image
+operator is used.
 .TP
 .B \-o
 Set the initial
@@ -163,13 +181,18 @@ directory to the
 .SM IFD
 at the specified file offset.
 This option is useful for selecting thumbnail images and the
-like which are hidden using the SubIFD tag.
+like which are hidden using the
+.I SubIFD
+tag.
 .TP
 .B \-p
 Force the generation of (non-Encapsulated) \*(Ps.
 .TP
-.B \-r
-Rotate image by 180 degrees.
+.B \-r 90|180|270|auto
+Rotate image by 90, 180, 270 degrees or auto.  Auto picks the best
+fit for the image on the specified paper size (eg portrait
+or landscape) if -h or -w is specified. Rotation is in degrees 
+counterclockwise. Auto rotates 90 degrees ccw to produce landscape.
 .TP
 .B \-s
 Generate output for a single IFD (page) in the input file.
@@ -195,7 +218,7 @@ page and this option has no affect.
 The following generates \*(Ps Level 2 for all pages of a facsimile:
 .RS
 .nf
-tiff2ps -a2 fax.tif | lpr
+tiff2ps \-a2 fax.tif | lpr
 .fi
 .RE
 Note also that if you have version 2.6.1 or newer of Ghostscript then you
@@ -205,15 +228,15 @@ To generate Encapsulated \*(Ps for a the image at directory 2
 of an image use:
 .RS
 .nf
-tiff2ps -d 1 foo.tif
+tiff2ps \-d 1 foo.tif
 .fi
 .RE
-(notice that directories are numbered starting at zero.)
+(Notice that directories are numbered starting at zero.)
 .PP
 If you have a long image, it may be split in several pages:
 .RS
 .nf
-tiff2ps -h11 -w8.5 -H14 -L.5 foo.tif > foo.ps
+tiff2ps \-h11 \-w8.5 \-H14 \-L.5 foo.tif > foo.ps
 .fi
 .RE
 The page size is set to 8.5x11 by
@@ -234,8 +257,8 @@ This conversion results in output that is six times
 bigger than the original image and which takes a long time
 to send to a printer over a serial line.
 Matters are even worse for 4-, 2-, and 1-bit palette images.
-.SH BUGS
-Does not handle tiled images when generating PS Level I output.
+.PP
+Does not handle tiled images when generating \*(Ps Level I output.
 .SH "SEE ALSO"
 .BR pal2rgb (1),
 .BR tiffinfo (1),
index a71d2d659c7d8370dae46b9b4d85f8f56bbc125f..c551656387f85864c41d717dba95b09a2b28afc2 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiff2rgba.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiff2rgba.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -31,7 +31,7 @@ image to RGBA color space
 .SH SYNOPSIS
 .B tiff2rgba
 [
-options
+.I options
 ]
 .I input.tif
 .I output.tif
@@ -50,7 +50,9 @@ esoteric combinations of BitsPerSample, photometric interpretation,
 block organization and planar configuration.  
 .P
 The generated images are stripped images with four samples per pixel 
-(red, green, blue and alpha) or if the -n flag is used, three samples
+(red, green, blue and alpha) or if the
+.B \-n
+flag is used, three samples
 per pixel (red, green, and blue).  The resulting images are always planar
 configuration contiguous.  For this reason, this program is a useful utility
 for transform exotic TIFF files into a form ingestible by almost any TIFF
@@ -61,11 +63,11 @@ supporting software.
 Specify a compression scheme to use when writing image data:
 .B "\-c none"
 for no compression (the default),
-.B "-c packbits"
+.B "\-c packbits"
 for the PackBits compression algorithm,
-.B "-c zip
+.B "\-c zip"
 for the Deflate compression algorithm,
-.B "-c jpeg
+.B "\-c jpeg"
 for the JPEG compression algorithm,
 and
 .B "\-c lzw"
@@ -83,7 +85,9 @@ images on systems with limited RAM.
 .TP
 .B \-n
 Drop the alpha component from the output file, producing a pure RGB file.
-Currently this does not work if the -b flag is also in effect.
+Currently this does not work if the
+.B \-b
+flag is also in effect.
 .SH "SEE ALSO"
 .BR tiff2bw (1),
 .BR TIFFReadRGBAImage (3t),
index 185a0e62ce814d48911228480b483e24fa3434a6..961d81223bb032236c20d353817a01de1d1ae06f 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffcmp.1,v 1.4 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffcmp.1,v 1.6 2009-08-24 19:13:40 bfriesen Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -61,7 +61,7 @@ will terminate if it encounters any difference.
 .B \-l
 List each byte of image data that differs between the files.
 .TP
-.B \-z number
+.BI \-z " number"
 List specified number of image data bytes that differs between the files.
 .TP
 .B \-t
@@ -70,14 +70,15 @@ Ignore any differences in directory tags.
 Tags that are not recognized by the library are not
 compared; they may also generate spurious diagnostics.
 .PP
-The image data of tiled files is not compared, since the TIFFReadScanline()
-function is used.  A error will be reported for tiled files.
+The image data of tiled files is not compared, since the
+.I TIFFReadScanline()
+function is used.  An error will be reported for tiled files.
 .PP
 The pixel and/or sample number reported in differences may be off
 in some exotic cases. 
 .SH "SEE ALSO"
 .BR pal2rgb (1),
-.bR tiffinfo (1),
+.BR tiffinfo (1),
 .BR tiffcp (1),
 .BR tiffmedian (1),
 .BR libtiff (3TIFF)
index ffad8ea339b6a416fc3682e505972e9052b3b86b..5fdcc474d5b57772d4c0fab57e4df096f11f96c8 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffcp.1,v 1.6 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffcp.1,v 1.12 2010-12-23 13:38:47 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -23,7 +23,7 @@
 .\" OF THIS SOFTWARE.
 .\"
 .if n .po 0
-.TH TIFFCP 1 "September 20, 2005" "libtiff"
+.TH TIFFCP 1 "February 24, 2007" "libtiff"
 .SH NAME
 tiffcp \- copy (and possibly convert) a
 .SM TIFF
@@ -60,7 +60,7 @@ in a file, but it is explicitly intended to not alter or convert
 the image data content in any way.
 .SH OPTIONS
 .TP
-.B \-b image
+.BI \-b " image"
 subtract the following monochrome image from all others
 processed.  This can be used to remove a noise bias
 from a set of images.  This bias image is typically an
@@ -83,10 +83,12 @@ for no compression,
 for PackBits compression,
 .B lzw
 for Lempel-Ziv & Welch compression,
-.B jpeg
-for baseline JPEG compression,
 .B zip
 for Deflate compression,
+.B lzma
+for LZMA2 compression,
+.B jpeg
+for baseline JPEG compression,
 .B g3
 for CCITT Group 3 (T.4) compression,
 and
@@ -118,20 +120,33 @@ list to the ``g3'' option; e.g.
 .B "\-c g3:2d:fill"
 to get 2D-encoded data with byte-aligned EOL codes.
 .IP
-.SM LZW
+.SM LZW, Deflate
+and
+.SM LZMA2
 compression can be specified together with a 
 .I predictor
-value.
-A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value
-of 1 forces each scanline to be encoded without differencing.
-LZW-specific options are specified by appending a ``:''-separated
-list to the ``lzw'' option; e.g.
+value. A predictor value of 2 causes each scanline of the output image to
+undergo horizontal differencing before it is encoded; a value of 1 forces each
+scanline to be encoded without differencing. A value 3 is for floating point
+predictor which you can use if the encoded data are in floating point format.
+LZW-specific options are specified by appending a ``:''-separated list to the
+``lzw'' option; e.g.
 .B "\-c lzw:2"
 for
 .SM LZW
 compression with horizontal differencing.
+.IP
+.SM Deflate
+and
+.SM LZMA2
+encoders support various compression levels (or encoder presets) set as
+character ``p'' and a preset number. ``p1'' is the fastest one with the worst
+compression ratio and ``p9'' is the slowest but with the best possible ratio;
+e.g.
+.B "\-c zip:3:p9"
+for
+.SM Deflate
+encoding with maximum compression level and floating point predictor.
 .TP
 .B \-f
 Specify the bit fill order to use in writing output data.
@@ -147,6 +162,9 @@ while
 will force data to be written with the FillOrder tag set to
 .SM MSB2LSB.
 .TP
+.B \-i
+Ignore non-fatal read errors and continue processing of the input file.
+.TP
 .B \-l
 Specify the length of a tile (in pixels).
 .I tiffcp
@@ -185,7 +203,7 @@ is specified),
 attempts to set the rows/strip
 that no more than 8 kilobytes of data appear in a strip. If you specify
 special value
-.B -1
+.B \-1
 it will results in infinite number of the rows per strip. The entire image
 will be the one strip in that case.
 .TP
@@ -194,32 +212,38 @@ Force the output file to be written with data organized in strips
 (rather than tiles).
 .TP
 .B \-t
-Force the output file to be written with data organized in tiles
-(rather than strips).
-options can be used to force the resultant image to be written
-as strips or tiles of data, respectively.
+Force the output file to be written with data organized in tiles (rather than
+strips). options can be used to force the resultant image to be written as
+strips or tiles of data, respectively.
 .TP
 .B \-w
 Specify the width of a tile (in pixels).
 .I tiffcp
-attempts to set the tile dimensions so
-that no more than 8 kilobytes of data appear in a tile.
+attempts to set the tile dimensions so that no more than 8 kilobytes of data
+appear in a tile.
 .I tiffcp
-attempts to set the tile dimensions so
-that no more than 8 kilobytes of data appear in a tile.
+attempts to set the tile dimensions so that no more than 8 kilobytes of data
+appear in a tile.
+.TP
+.B \-x
+Force the output file to be written with PAGENUMBER value in sequence.
 .TP
-.B \-,={character}
-substitute {character} for ',' in parsing image directory indices
+.BI \-,= character
+substitute
+.I character
+for `,' in parsing image directory indices
 in files.  This is necessary if filenames contain commas.
-Note that ',=' with whitespace immediately following will disable
-the special meaning of the ',' entirely.  See examples.
+Note that
+.B \-,=
+with whitespace immediately following will disable
+the special meaning of the `,' entirely.  See examples.
 .SH EXAMPLES
 The following concatenates two files and writes the result using 
 .SM LZW
 encoding:
 .RS
 .nf
-tiffcp -c lzw a.tif b.tif result.tif
+tiffcp \-c lzw a.tif b.tif result.tif
 .fi
 .RE
 .PP
@@ -228,39 +252,48 @@ To convert a G3 1d-encoded
 to a single strip of G4-encoded data the following might be used:
 .RS
 .nf
-tiffcp -c g4 -r 10000 g3.tif g4.tif
+tiffcp \-c g4 \-r 10000 g3.tif g4.tif
 .fi
 .RE
 (1000 is just a number that is larger than the number of rows in
 the source file.)
 
-To extract a selected set of images from a multi-image
-TIFF file, the file name may be immediately followed by a ',' 
-separated list of image directory indices.  The first image
-is always in directory 0.  Thus, to copy the 1st and 3rd
-images of image file "album.tif" to "result.tif":
+To extract a selected set of images from a multi-image TIFF file, the file
+name may be immediately followed by a `,' separated list of image directory
+indices.  The first image is always in directory 0.  Thus, to copy the 1st and
+3rd images of image file ``album.tif'' to ``result.tif'':
 .RS
 .nf
 tiffcp album.tif,0,2 result.tif
 .fi
 .RE
 
-Given file "CCD.tif" whose first image is a noise bias
+A trailing comma denotes remaining images in sequence.  The following command
+will copy all image with except the first one:
+.RS
+.nf
+tiffcp album.tif,1, result.tif
+.fi
+.RE
+
+Given file ``CCD.tif'' whose first image is a noise bias
 followed by images which include that bias,
 subtract the noise from all those images following it
 (while decompressing) with the command:
 .RS
 .nf
-tiffcp -c none -b CCD.tif CCD.tif,1, result.tif
+tiffcp \-c none \-b CCD.tif CCD.tif,1, result.tif
 .fi
 .RE
 
-If the file above were named "CCD,X.tif", the "-,=" option would
+If the file above were named ``CCD,X.tif'', the
+.B \-,=
+option would
 be required to correctly parse this filename with image numbers,
 as follows:
 .RS
 .nf
-tiffcp -c none -,=% -b CCD,X.tif CCD,X%1%.tif result.tif
+tiffcp \-c none \-,=% \-b CCD,X.tif CCD,X%1%.tif result.tif
 .SH "SEE ALSO"
 .BR pal2rgb (1),
 .BR tiffinfo (1),
diff --git a/src/tiff/man/tiffcrop.1 b/src/tiff/man/tiffcrop.1
new file mode 100644 (file)
index 0000000..0423fb2
--- /dev/null
@@ -0,0 +1,571 @@
+.\" $Id: tiffcrop.1,v 1.7 2010-12-12 01:45:35 faxguy Exp $
+.\" tiffcrop -- a port of tiffcp.c extended to include extended processing of images
+.\" 
+.\" Original code:
+.\" 
+.\" Copyright (c) 1988-1997 Sam Leffler
+.\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
+.\" 
+.\" Permission to use, copy, modify, distribute, and sell this software and 
+.\" its documentation for any purpose is hereby granted without fee, provided
+.\" that (i) the above copyright notices and this permission notice appear in
+.\" all copies of the software and related documentation, and (ii) the names of
+.\" Sam Leffler and Silicon Graphics may not be used in any advertising or
+.\" publicity relating to the software without the specific, prior written
+.\" permission of Sam Leffler and Silicon Graphics.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+.\" EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+.\" WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+.\" 
+.\" IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+.\" ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+.\" OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+.\" WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+.\" LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+.\" OF THIS SOFTWARE.
+.\" 
+.\" Additional code Copyright (c) 2006-2009 Richard Nolde 
+.\" Lasted Updated 9/2009
+.\" .if n .po 0
+.TH "TIFFCROP" "1" "December, 2008" "libtiff" ""
+.SH "NAME"
+tiffcrop \- select, copy, crop, convert, extract, and/or process one or more
+.SM TIFF
+files.
+.SH "SYNOPSIS"
+.B tiffcrop
+[
+.I options
+]
+.I "src1.tif ... srcN.tif dst.tif"
+.SH "DESCRIPTION"
+.I Tiffcrop
+processes one or more files created according
+to the Tag Image File Format, Revision 6.0, specification
+into one or more
+.SM TIFF
+file(s).
+.I Tiffcrop
+is most often used to extract portions of an image for processing 
+with bar code recognizer or OCR software when that software cannot 
+restrict the region of interest to a specific portion of the image 
+or to improve efficiency when the regions of interest must be rotated.
+It can also be used to subdivide all or part of a processed image into 
+smaller sections and export individual images or sections of images
+as separate files or separate images within one or more files derived
+from the original input image or images.
+.PP 
+The available functions can be grouped broadly into three classes:
+.IP 
+Those that select individual images or sections of images from the input files.
+The options \-N for sequences or lists of individual images in the input files,
+\-Z for zones, \-z for regions, \-X and \-Y for fixed sized selections,
+\-m for margins, \-U for units, and \-E for edge reference provide a variety of 
+ways to specify portions of the input image.
+.IP 
+Those that allow the individual images or selections to be exported to one or
+more output files in different groupings and control the organization of the 
+data in the output images. The options \-P for page size grouping, \-S for 
+subdivision into columns and rows and \-e for export mode options that produce
+one or more files from each input image. The options \-r, \-s, \-t, \-w  control 
+strip and tile format and sizes while \-B \-L \-c \-f modify the endian addressing
+scheme, the compression options, and the bit fill sequence of images as they
+are written.
+.IP 
+Those that perform some action on each image that is selected from the input file.
+The options include \-R for rotate, \-I for inversion of the photometric 
+interpretation and/or data values, and \-F to flip (mirror) the image horizontally
+or vertically.
+.PP 
+
+Functions are applied to the input image(s) in the following order:
+cropping, fixed area extraction, zone and region extraction, 
+inversion, mirroring, rotation.
+.PP 
+Functions are applied to the output image(s) in the following order:
+export mode options for grouping zones, regions, or images into
+one or more files,
+.I or
+row and column divisions with output margins,
+.I or
+page size divisions with page orientation options.
+.PP 
+Finally, strip, tile, byte order, output resolution, and compression options are 
+applied to all output images.
+.PP 
+The output file(s) may be organized and compressed using a different
+algorithm from the input files.
+By default, 
+.I tiffcrop
+will copy all the understood tags in a
+.SM TIFF
+directory of an input file to the associated directory in the output file.
+Options can be used to force the resultant image to be written as strips 
+or tiles of data, respectively.
+.PP 
+.I Tiffcrop
+can be used to reorganize the storage characteristics of data
+in a file, and to reorganize, extract, rotate, and otherwise
+process the image data as specified at the same time whereas 
+tiffcp does not alter the image data within the file. 
+.PP 
+Using the options for selecting individual input images and the 
+options for exporting images and/or segments defined as zones or
+regions of each input image,
+.I tiffcrop
+can perform the functions of tiffcp and tiffsplit in a single pass
+while applying multiple operations to individual selections or images.
+.PP 
+.SH "OPTIONS"
+.TP 
+.B \-h
+Display the syntax summary for tiffcrop.
+.TP 
+.B \-v
+Report the current version and last modification date for tiffcrop.
+.TP 
+.B \-N odd|even|#,#\-#,#|last
+Specify one or more series or range(s) of images within each file to process.
+The words
+.B odd
+or
+.B even
+may be used to specify all odd or even numbered images counting from one.
+Note that internally, TIFF images are numbered from zero rather than one
+but since this convention is not obvious to most users, tiffcrop used 1
+to specifiy the first image in a multipage file.  The word
+.B last 
+may be used in place of a number in the sequence to indicate the 
+final image in the file without knowing how many images there are.
+Ranges of images may be specified with a dash and multiple sets
+can be indicated by joining them in a comma\-separated list. eg. use
+.B \-N 1,5\-7,last 
+to process the 1st, 5th through 7th, and final image in the file.
+.TP 
+.B \-E top|bottom|left|right
+Specify the top, bottom, left, or right edge as the reference from
+which to calcuate the width and length of crop regions or sequence
+of postions for zones. When used with the \-e option for exporting
+zones or regions, the reference edge determines how composite images
+are arranged. Using \-E left or right causes successive zones or 
+regions to be merged horizontally whereas using \-E top or bottom
+causes successive zones or regions to be arranged vertically. This 
+option has no effect on export layout when multiple zones or regions
+are not being exported to composite images. Edges may be abbreviated
+to the first letter.
+.TP 
+.B \-e combined|divided|image|multiple|separate
+Specify the export mode for images and selections from input images.
+The final filename on the command line is considered to be the 
+destination file or filename stem for automatically generated 
+sequences of files. Modes may be abbreviated to the first letter.
+.IP 
+combined   All images and selections are written to a single file with
+multiple selections from one image combined into a single image (default)
+.IP 
+divided    All images and selections are written to a single file
+with each selection from one image written to a new image
+.IP 
+image      Each input image is written to a new file (numeric filename sequence)
+with multiple selections from the image combined into one image
+.IP 
+multiple   Each input image is written to a new file (numeric filename sequence)
+with each selection from the image written to a new image
+.IP 
+separate   Individual selections from each image are written to separate files
+.TP 
+.B \-U in|cm|px
+Specify the type of units to apply to dimensions for margins and 
+crop regions for input and output images. Inches or centimeters 
+are converted to pixels using the resolution unit specified in the 
+TIFF file (which defaults to inches if not specified in the IFD).
+.TP 
+.B \-m #,#,#,#
+Specify margins to be removed from the input image. The order must 
+be top, left, bottom, right with only commas separating the elements 
+of the list. Margins are scaled according to the current units and 
+removed before any other extractions are computed..
+.TP 
+.B \-X #
+Set the horizontal (X\-axis) dimension of a region to extract relative to 
+the specified origin reference. If the origin is the top or bottom
+edge, the X axis value will be assumed to start at the left edge.
+.TP 
+.B \-Y #
+Set the vertical (Y\-axis) dimension of a region to extract relative to
+the specified origin reference. If the origin is the left or right
+edge, the Y axis value will be assumed to start at the top.
+.TP 
+.B \-Z  #:#,#:#  
+Specify zones of the image designated as position X of Y equal sized portions
+measured from the reference edge,  eg 1:3 would be first third of the
+image starting from the reference edge minus any margins specified
+for the confining edges. Multiple zones can be specified as a comma
+separated list but they must reference the same edge. To extract the
+top quarter and the bottom third of an image you would use 
+.B \-Z 1:4,3:3.
+.TP 
+.B \-z x1,y1,x2,y2: ... :xN,yN,xN+1,yN+1 
+Specify a series of coordinates to define regions for processing and exporting.
+The coordinates represent the top left and lower right corners of each region 
+in the current units, eg inch, cm, or pixels. Pixels are counted from one to 
+width or height and inches or cm are calculated from image resolution data.
+
+Each colon delimited series of four values represents the horizontal and vertical 
+offsets from the top and left edges of the image, regardless of the edge specified
+with the \-E option. The first and third values represent the horizontal offsets of 
+the corner points from the left edge while the second and fourth values represent 
+the vertical offsets from the top edge.
+.TP 
+.B \-F horiz|vert
+Flip, ie mirror, the image or extracted region horizontally or vertically.
+.TP 
+.B \-R 90|180|270
+Rotate the image or extracted region 90, 180, or 270 degrees clockwise.
+.TP 
+.B \\-I [black|white|data|both]
+Invert color space, eg dark to light for bilevel and grayscale images.
+This can be used to modify negative images to positive or to correct
+images that have the PHOTOMETRIC_INTERPRETATIN tag set incorrectly.
+If the value is black or white, the PHOTOMETRIC_INTERPRETATION tag is set to 
+MinIsBlack or MinIsWhite, without altering the image data. If the argument 
+is data or both, the data values of the image are modified. Specifying both 
+inverts the data and the PHOTOMETRIC_INTERPRETATION tag, whereas using data
+inverts the data but not the PHOTOMETRIC_INTERPRETATION tag.
+No support for modifying the color space of color images in this release.
+.TP 
+.B \-H #
+Set the horizontal resolution of output images to #
+expressed in the current units.
+.TP 
+.B \-V #
+Set the vertical resolution of the output images to #
+expressed in the current units.
+.TP 
+.B \-J #
+Set the horizontal margin of an output page size to #
+expressed in the current units when sectioning image into columns x rows
+subimages using the \-S cols:rows option.
+.TP 
+.B \-K #
+Set the vertical margin of an output page size to # 
+expressed in the current units when sectioning image into columns x rows
+submiages using the \-S cols:rows option.
+.TP
+.B \-O portrait|landscape|auto
+Set the output orientation of the pages or sections.
+Auto will use the arrangement that requires the fewest pages.
+This option is only meaningful in conjunction with the -P
+option to format an image to fit on a specific paper size.
+.TP 
+.B \-P page
+Format the output images to fit on page size paper. Use
+\-P list to show the supported page sizes and dimensions.
+You can define a custom page size by entering the width and length of the
+page in the current units with the following format #.#x#.#.
+.TP 
+.B \-S cols:rows
+Divide each image into cols across and rows down equal sections.
+.TP 
+.B \-B
+Force output to be written with Big\-Endian byte order.
+This option only has an effect when the output file is created or
+overwritten and not when it is appended to.
+.TP 
+.B \-C
+Suppress the use of ``strip chopping'' when reading images
+that have a single strip/tile of uncompressed data.
+.TP 
+.B \-c
+Specify the compression to use for data written to the output file:
+.B none 
+for no compression,
+.B packbits
+for PackBits compression,
+.B lzw
+for Lempel\-Ziv & Welch compression,
+.B jpeg 
+for baseline JPEG compression.
+.B zip
+for Deflate compression,
+.B g3
+for CCITT Group 3 (T.4) compression,
+and
+.B g4
+for CCITT Group 4 (T.6) compression.
+By default
+.I tiffcrop
+will compress data according to the value of the
+.I Compression
+tag found in the source file.
+.IP 
+The
+.SM CCITT
+Group 3 and Group 4 compression algorithms can only
+be used with bilevel data.
+.IP 
+Group 3 compression can be specified together with several
+T.4\-specific options:
+.B 1d
+for 1\-dimensional encoding,
+.B 2d
+for 2\-dimensional encoding,
+and
+.B fill
+to force each encoded scanline to be zero\-filled so that the
+terminating EOL code lies on a byte boundary.
+Group 3\-specific options are specified by appending a ``:''\-separated
+list to the ``g3'' option; e.g.
+.B "\-c g3:2d:fill"
+to get 2D\-encoded data with byte\-aligned EOL codes.
+.IP 
+.SM LZW
+compression can be specified together with a 
+.I predictor
+value.
+A predictor value of 2 causes
+each scanline of the output image to undergo horizontal
+differencing before it is encoded; a value
+of 1 forces each scanline to be encoded without differencing.
+LZW\-specific options are specified by appending a ``:''\-separated
+list to the ``lzw'' option; e.g.
+.B "\-c lzw:2"
+for
+.SM LZW
+compression with horizontal differencing.
+.TP 
+.B \-f
+Specify the bit fill order to use in writing output data.
+By default,
+.I tiffcrop
+will create a new file with the same fill order as the original.
+Specifying
+.B "\-f lsb2msb"
+will force data to be written with the FillOrder tag set to
+.SM LSB2MSB,
+while
+.B "\-f msb2lsb"
+will force data to be written with the FillOrder tag set to
+.SM MSB2LSB.
+.TP 
+.B \-i
+Ignore non\-fatal read errors and continue processing of the input file.
+.TP 
+.B \-l
+Specify the length of a tile (in pixels).
+.I Tiffcrop
+attempts to set the tile dimensions so
+that no more than 8 kilobytes of data appear in a tile.
+.TP 
+.B \-L
+Force output to be written with Little\-Endian byte order.
+This option only has an effect when the output file is created or
+overwritten and not when it is appended to.
+.TP 
+.B \-M
+Suppress the use of memory\-mapped files when reading images.
+.TP 
+.B \-p
+Specify the planar configuration to use in writing image data
+that has more than one sample per pixel.
+By default,
+.I tiffcrop
+will create a new file with the same planar configuration as
+the original.
+Specifying
+.B "\-p contig"
+will force data to be written with multi\-sample data packed
+together, while
+.B "\-p separate"
+will force samples to be written in separate planes.
+.TP 
+.B \-r
+Specify the number of rows (scanlines) in each strip of data
+written to the output file.
+By default (or when value
+.B 0
+is specified),
+.I tiffcrop
+attempts to set the rows/strip that no more than 8 kilobytes of 
+data appear in a strip. If you specify the special value
+.B \-1
+it will results in infinite number of the rows per strip. The entire image
+will be the one strip in that case.
+.TP 
+.B \-s
+Force the output file to be written with data organized in strips
+(rather than tiles).
+.TP 
+.B \-t
+Force the output file to be written with data organized in tiles
+(rather than strips).
+.TP 
+.B \-w
+Specify the width of a tile (in pixels).
+.I tiffcrop
+attempts to set the tile dimensions so
+that no more than 8 kilobytes of data appear in a tile.
+.I tiffcrop
+attempts to set the tile dimensions so
+that no more than 8 kilobytes of data appear in a tile.
+.TP
+Debug and dump facility
+.B \-D opt1:value1,opt2:value2,opt3:value3:opt4:value4
+Display program progress and/or dump raw data to non\-TIFF files.
+Options include the following and must be joined as a comma
+separated list. The use of this option is generally limited to
+program debugging and development of future options. An equal sign
+may be substituted for the colon in option:value pairs.
+.IP
+debug:N         Display limited program progress indicators where larger N
+increase the level of detail.
+.IP
+format:txt|raw  Format any logged data as ASCII text or raw binary 
+values. ASCII text dumps include strings of ones and zeroes representing
+the binary values in the image data plus identifying headers.
+.IP
+level:N         Specify the level of detail presented in the dump files.
+This can vary from dumps of the entire input or output image data to dumps
+of data processed by specific functions. Current range of levels is 1 to 3.
+.IP
+input:full\-path\-to\-directory/input\-dumpname
+.IP
+output:full\-path\-to\-directory/output\-dumpname
+.IP
+When dump files are being written, each image will be written to a separate
+file with the name built by adding a numeric sequence value to the dumpname
+and an extension of .txt for ASCII dumps or .bin for binary dumps.
+
+The four debug/dump options are independent, though it makes little sense to
+specify a dump file without specifying a detail level.
+.IP
+Note: Tiffcrop may be compiled with -DDEVELMODE to enable additional very
+ low level debug reporting.
+.SH "EXAMPLES"
+The following concatenates two files and writes the result using 
+.SM LZW
+encoding:
+.RS
+.nf 
+tiffcrop \-c lzw a.tif b.tif result.tif
+.fi 
+.RE
+.PP 
+To convert a G3 1d\-encoded 
+.SM TIFF
+to a single strip of G4\-encoded data the following might be used:
+.RS
+.nf 
+tiffcrop \-c g4 \-r 10000 g3.tif g4.tif
+.fi 
+.RE
+(1000 is just a number that is larger than the number of rows in
+the source file.)
+
+To extract a selected set of images from a multi\-image TIFF file 
+use the \-N option described above. Thus, to copy the 1st and 3rd
+images of image file "album.tif" to "result.tif":
+.RS
+.nf 
+tiffcrop \-N 1,3 album.tif result.tif
+.fi 
+.RE
+.PP 
+Invert a bilevel image scan of a microfilmed document and crop off margins of
+0.25 inches on the left and right, 0.5 inch on the top, and 0.75 inch on the
+bottom. From the remaining portion of the image, select the second and third
+quarters, ie, one half of the area left from the center to each margin. 
+.RS
+tiffcrop \-U in \-m 0.5,0.25,0.75,0.25 \-E left \-Z 2:4,3:4 \-I both MicrofilmNegative.tif MicrofilmPostiveCenter.tif
+.fi 
+.RE
+.PP 
+Extract only the final image of a large Architectural E sized 
+multipage TIFF file and rotate it 90 degrees clockwise while 
+reformatting the output to fit on tabloid sized sheets with one 
+quarter of an inch on each side:
+.RS
+tiffcrop \-N last \-R 90 \-O auto \-P tabloid \-U in \-J 0.25 \-K 0.25 \-H 300 \-V 300 Big\-PlatMap.tif BigPlatMap\-Tabloid.tif 
+.fi 
+.RE
+The output images will have a specified resolution of 300 dpi in both
+directions. The orientation of each page will be determined by whichever
+choice requires the fewest pages. To specify a specific orientation, use
+the portrait or landscape option. The paper size option does not resample
+the image. It breaks each original image into a series of smaller images
+that will fit on the target paper size at the specified resolution.
+.fi 
+.RE
+.PP 
+Extract two regions 2048 pixels wide by 2048 pixels high from each page of
+a multi\-page input file and write each region to a separate output file.
+.RS
+tiffcrop \-U px \-z 1,1,2048,2048:1,2049,2048,4097 \-e separate  CheckScans.tiff Check
+.fi 
+.RE
+The output file names will use the stem Check with a numeric suffix which is
+incremented for each region of each image, eg Check\-001.tiff, Check\-002.tiff ...
+Check\-NNN.tiff. To produce a unique file for each page of the input image
+with one new image for each region of the input image on that page, change
+the export option to \-e multiple.
+
+.SH "NOTES"
+.PP 
+In general, bilevel, grayscale, palette and RGB(A) data with bit depths
+from 1 to 32 bits should work in both interleaved and separate plane
+formats. Unlike tiffcp, tiffcrop can read and write tiled images with
+bits per sample that are not a multiple of 8 in both interleaved and
+separate planar format. Floating point data types are supported at 
+bit depts of 16, 24, 32 and 64 bits per sample. 
+.PP
+Not all images can be converted from one compression scheme to another.
+Data with some photometric interpretations and/or bit depths are tied to 
+specific compression schemes and vice-versa, e.g. Group 3/4 compression
+is only usable for bilevel data. JPEG compression is only usable on 8
+bit per sample data (or 12 bit if 
+.I LibTIFF
+was compiled with 12 bit JPEG support). Support for OJPEG compressed 
+images is problematic at best. Since OJPEG compression is no longer 
+supported for writing images with LibTIFF, these images will be updated
+to the newer JPEG compression when they are copied or processed. This
+may cause the image to appear color shifted or distorted after conversion.
+In some cases, it is possible to remove the original compression from 
+image data using the option -cnone.
+.PP
+Tiffcrop does not currently provide options to up or downsample data to 
+different bit depths or convert data from one photometric interpretation 
+to another, e.g. 16 bits per sample to 8 bits per sample or RGB to grayscale. 
+.PP
+Tiffcrop is very loosely derived from code in
+.I tiffcp
+with extensive modifications and additions to support the selection of input 
+images and regions and the exporting of them to one or more output files in 
+various groupings. The image manipulation routines are entirely new and 
+additional ones may be added in the future. It will handle tiled images with 
+bit depths that are not a multiple of eight that tiffcp may refuse to read.
+.PP 
+.I Tiffcrop
+was designed to handle large files containing many moderate sized images 
+with memory usage that is independent of the number of images in the file. 
+In order to support compression modes that are not based on individual 
+scanlines, e.g. JPEG, it now reads images by strip or tile rather than by 
+indvidual scanlines. In addition to the memory required by the input and 
+output buffers associated with
+.I LibTIFF
+one or more buffers at least as large as the largest image to be read are
+required. The design favors large volume document processing uses over 
+scientific or graphical manipulation of large datasets as might be found 
+in research or remote sensing scenarios.
+.SH "SEE ALSO"
+.BR pal2rgb (1),
+.BR tiffinfo (1),
+.BR tiffcmp (1),
+.BR tiffcp (1),
+.BR tiffmedian (1),
+.BR tiffsplit (1),
+.BR libtiff (3TIFF)
+.PP 
+Libtiff library home page:
+.BR http://www.remotesensing.org/libtiff/
+
index 248d53c8b18fdd0fdcf9080bc8ed9a2d188d3376..ab0d32a789b48ede1e6d98e95244a60bf32ee3a8 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffdither.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffdither.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -102,11 +102,15 @@ By default,
 will create a new file with the same fill order as the original.
 Specifying
 .B "\-f lsb2msb"
-will force data to be written with the FillOrder tag set to
+will force data to be written with the
+.I Fill\%Order
+tag set to
 .SM LSB2MSB ,
 while
 .B "\-f msb2lsb"
-will force data to be written with the FillOrder tag set to
+will force data to be written with the
+.I Fill\%Order
+tag set to
 .SM MSB2LSB .
 .TP
 .B \-t
index 0002a681054445bab1026c466e593ff58e12da33..076f9ffeed83ec30057f4c9b7943e59092cb8c0c 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffdump.1,v 1.4 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffdump.1,v 1.5 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -63,11 +63,11 @@ does not understand.
 Force numeric data to be printed in hexadecimal rather than the
 default decimal.
 .TP
-.B \-m " items"
+.BI \-m " items"
 Change the number of indirect data items that are printed. By default, this
 will be 24.
 .TP
-.B \-o " offset"
+.BI \-o " offset"
 Dump the contents of the 
 .SM IFD
 at the a particular file offset.
index 0c14503a25b690a5cfc86b408b68abc4adeb608b..680a49a0427bd8541e1bdf2bbd7c2a640a78adb1 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffgt.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffgt.1,v 1.4 2006-04-20 12:17:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -56,11 +56,11 @@ correctly handles files with any of the following characteristics:
 .in +0.5i
 .ta \w'\fIPhotometricInterpretation\fP  'u
 .nf
-BitsPerSample  1, 2, 4, 8, 16
-SamplesPerPixel        1, 3, 4 (the 4th sample is ignored)
-PhotometricInterpretation      0 (min-is-white), 1 (min-is-black), 2 (RGB), 3 (palette), 6 (YCbCr)
-PlanarConfiguration    1 (contiguous), 2 (separate)
-Orientation    1 (top-left), 4 (bottom-left)
+\fIBitsPerSample\fP    1, 2, 4, 8, 16
+\fISamplesPerPixel\fP  1, 3, 4 (the 4th sample is ignored)
+\fIPhotometricInterpretation\fP        0 (min-is-white), 1 (min-is-black), 2 (RGB), 3 (palette), 6 (YCbCr)
+\fIPlanarConfiguration\fP      1 (contiguous), 2 (separate)
+\fIOrientation\fP      1 (top-left), 4 (bottom-left)
 .fi
 .in -0.5i
 .sp .5
@@ -199,15 +199,15 @@ i.e. a leading ``0x'' for hexadecimal and a leading ``0'' for octal.
 Override the value of the
 .I PhotometricInterpretation
 tag; the parameter may be one of:
-.IR miniswhite ,
-.IR minisblack ,
-.IR rgb ,
-.IR palette ,
-.IR mask ,
-.IR separated ,
-.IR ycbcr ,
+.BR miniswhite ,
+.BR minisblack ,
+.BR rgb ,
+.BR palette ,
+.BR mask ,
+.BR separated ,
+.BR ycbcr ,
 and
-.IR cielab .
+.BR cielab .
 .TP
 .B \-r
 Force image display in a full color window.
index 764e47368221ab78312eec448357137d575da1ab..2d57375206658e02092d86ff81ddbbc48f53b5f3 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffinfo.1,v 1.2 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffinfo.1,v 1.2 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index ffa6d04ab20814ab25ed5b510bb0f2a78b489694..c584b97fe2ef3bb509c3963be5558d707df2cb50 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffmedian.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffmedian.1,v 1.3 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1990-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index 1245152b012bf3e42e637725bfed36c4edba3f2e..ed0d12fb0105fdac1d734e921cd7b35e5705c067 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffset.1,v 1.2 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffset.1,v 1.5 2011-03-26 12:07:20 fwarmerdam Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
@@ -31,7 +31,7 @@ header
 .SH SYNOPSIS
 .B tiffset
 [
-options
+.I options
 ]
 .I filename.tif
 .SH DESCRIPTION
@@ -41,10 +41,16 @@ sets the value of a
 header to a specified value.
 .SH OPTIONS
 .TP
-.B \-s tagnumber [count] value ...
+.BI \-d " dirnumber"
+change the current directory (starting at 0).
+.TP
+.BI \-s " tagnumber" "\fR [\fP" " count" "\fR ]\fP" " value ..."
 Set the value of the named tag to the value or values specified.
 .TP
-.B \-sf tagnumber filename
+.BI \-sd " diroffset"
+change the current directory by offset.
+.TP
+.BI \-sf " tagnumber filename"
 Set the value of the tag to the contents of filename.  This option is
 supported for ASCII tags only.
 .SH EXAMPLES
@@ -52,24 +58,32 @@ The following example sets the image description tag (270) of a.tif to
 the contents of the file descrip:
 .RS
 .nf
-tiffset -sf 270 descrip a.tif
+tiffset \-sf 270 descrip a.tif
 .fi
 .RE
 .PP
 The following example sets the artist tag (315) of a.tif to the string
-"Anonymous":
+``Anonymous'':
 .RS
 .nf
-tiffset -s 305 Anonymous a.tif
+tiffset \-s 315 Anonymous a.tif
 .fi
 .RE
 .PP
 This example sets the resolution of the file a.tif to 300 dpi:
 .RS
 .nf
-tiffset -s 296 2 a.tif
-tiffset -s 282 300.0 a.tif
-tiffset -s 283 300.0 a.tif
+tiffset \-s 296 2 a.tif
+tiffset \-s 282 300.0 a.tif
+tiffset \-s 283 300.0 a.tif
+.fi
+.RE
+.PP
+Set the photometric interpretation of the third page of a.tif to
+min-is-black (ie. inverts it):
+.RS
+.nf
+tiffset -d 2 -s 262 1 a.tif
 .fi
 .RE
 .SH "SEE ALSO"
index 6495d463fa22756d275303bad9982e42de63d503..411ebf488c0a4a8236a6585a64581f46772418a6 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffsplit.1,v 1.5 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffsplit.1,v 1.6 2009-08-24 19:13:40 bfriesen Exp $
 .\"
 .\" Copyright (c) 1992-1997 Sam Leffler
 .\" Copyright (c) 1992-1997 Silicon Graphics, Inc.
@@ -50,7 +50,7 @@ suffix in the range [\fIaaa\fP-\fIzzz\fP], the suffix
 (e.g. 
 .IR xaaa.tif ,
 .IR xaab.tif ,
-\...
+.IR ... ,
 .IR xzzz.tif ).
 If a prefix is not specified on the command line,
 the default prefix of
index 6e0214ed5459f44a90e22b7307589ffe00f9bd1b..206df5676a02b23779d0564a89c9acf43c90f3a9 100644 (file)
@@ -1,4 +1,4 @@
-.\" $Id: tiffsv.1,v 1.3 2005/11/02 11:07:19 dron Exp $
+.\" $Id: tiffsv.1,v 1.3 2005-11-02 11:07:19 dron Exp $
 .\"
 .\" Copyright (c) 1988-1997 Sam Leffler
 .\" Copyright (c) 1991-1997 Silicon Graphics, Inc.
index f5ad2d93c346531aaa491ec60bfd4b6ade881220..7e882d2d4a09e82e817cf921d38bee36e9e36278 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: nmake.opt,v 1.16 2006/03/23 14:54:01 dron Exp $\r
+# $Id: nmake.opt,v 1.18 2006/06/07 16:33:45 dron Exp $\r
 #\r
 # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\r
 #\r
@@ -59,12 +59,6 @@ LOGLUV_SUPPORT       = 1
 #JPEG_INCLUDE  = -I$(JPEGDIR)\r
 #JPEG_LIB      = $(JPEGDIR)/Release/jpeg.lib\r
 \r
-#\r
-# Uncomment following lines to enable Old JPEG support\r
-# (modified IJG JPEG library required, read the contrib\ojpeg\README first).\r
-#\r
-#OJPEG_SUPPORT = 1\r
-\r
 #\r
 # Uncomment and edit following lines to enable ZIP support\r
 # (required for Deflate compression and Pixar log-format)\r
@@ -74,6 +68,14 @@ LOGLUV_SUPPORT       = 1
 #ZLIB_INCLUDE  = -I$(ZLIBDIR)\r
 #ZLIB_LIB      = $(ZLIBDIR)/zlib.lib\r
 \r
+#\r
+# Uncomment and edit following lines to enable ISO JBIG support\r
+#\r
+#JBIG_SUPPORT  = 1\r
+#JBIGDIR       = d:/projects/jbigkit\r
+#JBIG_INCLUDE  = -I$(JBIGDIR)/libjbig\r
+#JBIG_LIB      = $(JBIGDIR)/libjbig/jbig.lib\r
+\r
 #\r
 # Uncomment following line to enable Pixar log-format algorithm\r
 # (Zlib required).\r
@@ -110,9 +112,9 @@ CHECK_JPEG_YCBCR_SUBSAMPLING = 1
 #\r
 # Pick debug or optimized build flags.  We default to an optimized build\r
 # with no debugging information.\r
-# NOTE: /GX option required if you want to build the C++ stream API\r
+# NOTE: /EHsc option required if you want to build the C++ stream API\r
 #\r
-OPTFLAGS =     /Ox /MD /GX /W3\r
+OPTFLAGS =     /Ox /MD /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATE\r
 #OPTFLAGS =    /Zi \r
 \r
 #\r
@@ -181,10 +183,7 @@ EXTRAFLAGS = -DLOGLUV_SUPPORT $(EXTRAFLAGS)
 \r
 !IFDEF JPEG_SUPPORT\r
 LIBS           = $(LIBS) $(JPEG_LIB)\r
-EXTRAFLAGS     = -DJPEG_SUPPORT $(EXTRAFLAGS)\r
-!IFDEF OJPEG_SUPPORT\r
-EXTRAFLAGS     = -DOJPEG_SUPPORT $(EXTRAFLAGS)\r
-!ENDIF\r
+EXTRAFLAGS     = -DJPEG_SUPPORT -DOJPEG_SUPPORT $(EXTRAFLAGS)\r
 !ENDIF\r
 \r
 !IFDEF ZIP_SUPPORT\r
@@ -195,6 +194,11 @@ EXTRAFLAGS = -DPIXARLOG_SUPPORT $(EXTRAFLAGS)
 !ENDIF\r
 !ENDIF\r
 \r
+!IFDEF JBIG_SUPPORT\r
+LIBS           = $(LIBS) $(JBIG_LIB)\r
+EXTRAFLAGS     = -DJBIG_SUPPORT $(EXTRAFLAGS)\r
+!ENDIF\r
+\r
 !IFDEF STRIPCHOP_SUPPORT\r
 EXTRAFLAGS     = -DSTRIPCHOP_DEFAULT=TIFF_STRIPCHOP -DSTRIP_SIZE_DEFAULT=$(STRIP_SIZE_DEFAULT) $(EXTRAFLAGS)\r
 !ENDIF\r
index 110dd85d660d86e9aca468694b056674f083e200..94504fd809ac2d5eecc6502cec051b1e8082d0b0 100644 (file)
@@ -23,9 +23,9 @@
 
 # Process this file with automake to produce Makefile.in.
 
-EXTRA_DIST = Makefile.vc
+EXTRA_DIST = Makefile.vc libport.h
 
 noinst_LTLIBRARIES     = libport.la
-libport_la_SOURCES     = dummy.c
+libport_la_SOURCES     = dummy.c libport.h
 libport_la_LIBADD      = @LTLIBOBJS@
 
index 4ab51cccc2868a7345799281a5a82edf9be103b4..f268a9c4e17d7bde1514584e7b6ae4608d1d7ec7 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,45 +75,78 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 subdir = port
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in getopt.c \
-       lfind.c strcasecmp.c strtoul.c
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs getopt.c lfind.c \
+       strcasecmp.c strtoul.c strtoull.c
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 LTLIBRARIES = $(noinst_LTLIBRARIES)
 libport_la_DEPENDENCIES = @LTLIBOBJS@
 am_libport_la_OBJECTS = dummy.lo
 libport_la_OBJECTS = $(am_libport_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libport_la_SOURCES)
 DIST_SOURCES = $(libport_la_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -119,6 +166,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -133,12 +181,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -157,20 +200,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -182,65 +230,69 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
-EXTRA_DIST = Makefile.vc
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+EXTRA_DIST = Makefile.vc libport.h
 noinst_LTLIBRARIES = libport.la
-libport_la_SOURCES = dummy.c
+libport_la_SOURCES = dummy.c libport.h
 libport_la_LIBADD = @LTLIBOBJS@
 all: all-am
 
@@ -250,14 +302,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  port/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  port/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign port/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign port/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -275,17 +327,20 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-noinstLTLIBRARIES:
        -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
-libport.la: $(libport_la_OBJECTS) $(libport_la_DEPENDENCIES) 
-       $(LINK)  $(libport_la_LDFLAGS) $(libport_la_OBJECTS) $(libport_la_LIBADD) $(LIBS)
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
+libport.la: $(libport_la_OBJECTS) $(libport_la_DEPENDENCIES) $(EXTRA_libport_la_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK)  $(libport_la_OBJECTS) $(libport_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -297,28 +352,29 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lfind.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strcasecmp.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoul.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtoull.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dummy.Plo@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -326,82 +382,99 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -419,16 +492,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -442,7 +521,7 @@ distclean: distclean-am
        -rm -rf $(DEPDIR) ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-am
 
@@ -450,18 +529,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -482,19 +581,24 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-       clean-libtool clean-noinstLTLIBRARIES ctags distclean \
-       distclean-compile distclean-generic distclean-libtool \
-       distclean-tags distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-exec \
-       install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-info-am
+       clean-libtool clean-noinstLTLIBRARIES cscopelist ctags \
+       distclean distclean-compile distclean-generic \
+       distclean-libtool distclean-tags distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am
+
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index 94c6bce09afdcc15cc856dd09342bc2c334cfec5..2387a2d2237844a87a968fee255364a0f76f6978 100644 (file)
@@ -4,7 +4,7 @@
  * Dummy function, just to be ensure that the library always will be created.
  */
 
-static void
+void
 libport_dummy_function()
 {
         return;
index b7ffe9d8bab8424891ebf22981fb91f4ba93308a..479e38926ee973b310881021e2d7c952164640a9 100644 (file)
@@ -36,6 +36,7 @@ __RCSID("$NetBSD: getopt.c,v 1.26 2003/08/07 16:43:40 agc Exp $");
 
 #include <stdio.h>
 #include <string.h>
+#include "libport.h"
 
 int    opterr = 1,             /* if error message should be printed */
        optind = 1,             /* index into parent argv vector */
index 6ed5fc3433d65ebf80e83abd10208942596d4e06..98b5c2eb6d32935ca26152118840b7435520dd3d 100644 (file)
@@ -37,7 +37,11 @@ static char sccsid[] = "@(#)lsearch.c        8.1 (Berkeley) 6/4/93";
 __RCSID("$NetBSD: lsearch.c,v 1.2 2005/07/06 15:47:15 drochner Exp $");
 #endif
 
-#include <sys/types.h>
+#ifdef _WIN32_WCE
+# include <wce_types.h>
+#else
+# include <sys/types.h>
+#endif
 
 #ifndef NULL
 # define NULL 0
diff --git a/src/tiff/port/libport.h b/src/tiff/port/libport.h
new file mode 100644 (file)
index 0000000..a1cbbf3
--- /dev/null
@@ -0,0 +1,51 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2009 Frank Warmerdam
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _LIBPORT_
+#define        _LIBPORT_
+
+int getopt(int argc, char * const argv[], const char *optstring);
+extern   char *optarg;
+extern   int opterr;
+extern   int optind;
+extern   int optopt;
+
+int strcasecmp(const char *s1, const char *s2);
+
+#ifndef HAVE_GETOPT
+#  define HAVE_GETOPT 1
+#endif
+
+#if 0
+unsigned long strtoul(const char *nptr, char **endptr, int base);
+#endif
+
+#if 0
+void *
+lfind(const void *key, const void *base, size_t *nmemb, size_t size,
+      int(*compar)(const void *, const void *));
+#endif
+
+#endif /* ndef _LIBPORT_ */
index 784c6a574e23cfa8b3f5ddb4d3ae53b7250173cc..5e0fe0e99734aa4ed15a03b6862d6ef9b6530a3b 100644 (file)
@@ -36,6 +36,7 @@ __RCSID("$NetBSD: strcasecmp.c,v 1.16 2003/08/07 16:43:49 agc Exp $");
 
 #include <ctype.h>
 #include <string.h>
+#include "libport.h"
 
 int
 strcasecmp(const char *s1, const char *s2)
diff --git a/src/tiff/port/strtoull.c b/src/tiff/port/strtoull.c
new file mode 100644 (file)
index 0000000..fb7739c
--- /dev/null
@@ -0,0 +1,116 @@
+/*-
+ * Copyright (c) 1992, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
+ */
+
+#include <limits.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdlib.h>
+
+/*
+ * Convert a string to an unsigned long long integer.
+ *
+ * Assumes that the upper and lower case
+ * alphabets and digits are each contiguous.
+ */
+unsigned long long
+strtoull(const char *nptr, char **endptr, int base)
+{
+       const char *s;
+       unsigned long long acc;
+       char c;
+       unsigned long long cutoff;
+       int neg, any, cutlim;
+
+       /*
+        * See strtoq for comments as to the logic used.
+        */
+       s = nptr;
+       do {
+               c = *s++;
+       } while (isspace((unsigned char)c));
+       if (c == '-') {
+               neg = 1;
+               c = *s++;
+       } else {
+               neg = 0;
+               if (c == '+')
+                       c = *s++;
+       }
+       if ((base == 0 || base == 16) &&
+           c == '0' && (*s == 'x' || *s == 'X') &&
+           ((s[1] >= '0' && s[1] <= '9') ||
+           (s[1] >= 'A' && s[1] <= 'F') ||
+           (s[1] >= 'a' && s[1] <= 'f'))) {
+               c = s[1];
+               s += 2;
+               base = 16;
+       }
+       if (base == 0)
+               base = c == '0' ? 8 : 10;
+       acc = any = 0;
+       if (base < 2 || base > 36)
+               goto noconv;
+
+       cutoff = ULLONG_MAX / base;
+       cutlim = ULLONG_MAX % base;
+       for ( ; ; c = *s++) {
+               if (c >= '0' && c <= '9')
+                       c -= '0';
+               else if (c >= 'A' && c <= 'Z')
+                       c -= 'A' - 10;
+               else if (c >= 'a' && c <= 'z')
+                       c -= 'a' - 10;
+               else
+                       break;
+               if (c >= base)
+                       break;
+               if (any < 0 || acc > cutoff || (acc == cutoff && c > cutlim))
+                       any = -1;
+               else {
+                       any = 1;
+                       acc *= base;
+                       acc += c;
+               }
+       }
+       if (any < 0) {
+               acc = ULLONG_MAX;
+               errno = ERANGE;
+       } else if (!any) {
+noconv:
+               errno = EINVAL;
+       } else if (neg)
+               acc = -acc;
+       if (endptr != NULL)
+               *endptr = (char *)(any ? s - 1 : nptr);
+       return (acc);
+}
index 0658e53fe9b94de9972dbaf9a8144ccde85fd008..4e115c95e1044e333b09cf1c223e6e174b5e0262 100644 (file)
 
 # Process this file with automake to produce Makefile.in.
 
+AUTOMAKE_OPTIONS = 1.12 color-tests parallel-tests foreign
+
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 
-#EXTRA_DIST = Makefile.vc
+# Environment parameters to be used during tests
+TESTS_ENVIRONMENT = \
+       MAKE="$(MAKE)" \
+       MAKEFLAGS="$(MAKEFLAGS)" \
+       MEMCHECK="$(MEMCHECK)"
+
+EXTRA_DIST = \
+       $(TESTSCRIPTS) \
+       $(IMAGES_EXTRA_DIST) \
+       common.sh
+
+# All of the tests to execute via 'make check'
+TESTS = $(check_PROGRAMS) $(TESTSCRIPTS)
+
+# Tests which are expected to fail
+XFAIL_TESTS =
+
+# Extra files which should be cleaned by 'make clean'
+CLEANFILES = test_packbits.tif o-*
+
+# Executable programs which need to be built in order to support tests
+check_PROGRAMS = ascii_tag long_tag short_tag strip_rw rewrite raw_decode custom_dir
+
+# Test scripts to execute
+TESTSCRIPTS = \
+       bmp2tiff_palette.sh \
+       bmp2tiff_rgb.sh \
+       gif2tiff.sh \
+       ppm2tiff_pbm.sh \
+       ppm2tiff_pgm.sh \
+       ppm2tiff_ppm.sh \
+       tiffcp-g3.sh \
+       tiffcp-g3-1d.sh \
+       tiffcp-g3-1d-fill.sh \
+       tiffcp-g3-2d.sh \
+       tiffcp-g3-2d-fill.sh \
+       tiffcp-g4.sh \
+       tiffcp-logluv.sh \
+       tiffcp-thumbnail.sh \
+       tiffdump.sh \
+       tiffinfo.sh \
+       tiffcp-split.sh \
+       tiffcp-split-join.sh \
+       tiff2ps-PS1.sh \
+       tiff2ps-PS2.sh \
+       tiff2ps-PS3.sh \
+       tiff2ps-EPS1.sh \
+       tiff2pdf.sh \
+       tiffcrop-doubleflip-logluv-3c-16b.sh \
+       tiffcrop-doubleflip-minisblack-1c-16b.sh \
+       tiffcrop-doubleflip-minisblack-1c-8b.sh \
+       tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh \
+       tiffcrop-doubleflip-miniswhite-1c-1b.sh \
+       tiffcrop-doubleflip-palette-1c-1b.sh \
+       tiffcrop-doubleflip-palette-1c-4b.sh \
+       tiffcrop-doubleflip-palette-1c-8b.sh \
+       tiffcrop-doubleflip-rgb-3c-16b.sh \
+       tiffcrop-doubleflip-rgb-3c-8b.sh \
+       tiffcrop-extract-logluv-3c-16b.sh \
+       tiffcrop-extract-minisblack-1c-16b.sh \
+       tiffcrop-extract-minisblack-1c-8b.sh \
+       tiffcrop-extract-minisblack-2c-8b-alpha.sh \
+       tiffcrop-extract-miniswhite-1c-1b.sh \
+       tiffcrop-extract-palette-1c-1b.sh \
+       tiffcrop-extract-palette-1c-4b.sh \
+       tiffcrop-extract-palette-1c-8b.sh \
+       tiffcrop-extract-rgb-3c-16b.sh \
+       tiffcrop-extract-rgb-3c-8b.sh \
+       tiffcrop-extractz14-logluv-3c-16b.sh \
+       tiffcrop-extractz14-minisblack-1c-16b.sh \
+       tiffcrop-extractz14-minisblack-1c-8b.sh \
+       tiffcrop-extractz14-minisblack-2c-8b-alpha.sh \
+       tiffcrop-extractz14-miniswhite-1c-1b.sh \
+       tiffcrop-extractz14-palette-1c-1b.sh \
+       tiffcrop-extractz14-palette-1c-4b.sh \
+       tiffcrop-extractz14-palette-1c-8b.sh \
+       tiffcrop-extractz14-rgb-3c-16b.sh \
+       tiffcrop-extractz14-rgb-3c-8b.sh \
+       tiffcrop-R90-logluv-3c-16b.sh \
+       tiffcrop-R90-minisblack-1c-16b.sh \
+       tiffcrop-R90-minisblack-1c-8b.sh \
+       tiffcrop-R90-minisblack-2c-8b-alpha.sh \
+       tiffcrop-R90-miniswhite-1c-1b.sh \
+       tiffcrop-R90-palette-1c-1b.sh \
+       tiffcrop-R90-palette-1c-4b.sh \
+       tiffcrop-R90-palette-1c-8b.sh \
+       tiffcrop-R90-rgb-3c-16b.sh \
+       tiffcrop-R90-rgb-3c-8b.sh \
+       tiff2rgba-logluv-3c-16b.sh \
+       tiff2rgba-minisblack-1c-16b.sh \
+       tiff2rgba-minisblack-1c-8b.sh \
+       tiff2rgba-minisblack-2c-8b-alpha.sh \
+       tiff2rgba-miniswhite-1c-1b.sh \
+       tiff2rgba-palette-1c-1b.sh \
+       tiff2rgba-palette-1c-4b.sh \
+       tiff2rgba-palette-1c-8b.sh \
+       tiff2rgba-rgb-3c-16b.sh \
+       tiff2rgba-rgb-3c-8b.sh \
+       tiff2rgba-quad-tile.jpg.sh
+
+# This list should contain all of the TIFF files in the 'images'
+# subdirectory which are intended to be used as input images for
+# tests.  All of these files should use the extension ".tiff".
+TIFFIMAGES = \
+       images/logluv-3c-16b.tiff \
+       images/minisblack-1c-16b.tiff \
+       images/minisblack-1c-8b.tiff \
+       images/minisblack-2c-8b-alpha.tiff \
+       images/miniswhite-1c-1b.tiff \
+       images/palette-1c-1b.tiff \
+       images/palette-1c-4b.tiff \
+       images/palette-1c-8b.tiff \
+       images/rgb-3c-16b.tiff \
+       images/rgb-3c-8b.tiff \
+       images/quad-tile.jpg.tiff
+
+BMPIMAGES = \
+       images/palette-1c-8b.bmp \
+       images/rgb-3c-8b.bmp
+
+GIFIMAGES = \
+       images/palette-1c-8b.gif
 
-TESTS = $(check_PROGRAMS)
+PNMIMAGES = \
+       images/minisblack-1c-8b.pgm \
+       images/miniswhite-1c-1b.pbm \
+       images/rgb-3c-8b.ppm
 
-check_PROGRAMS = ascii_tag long_tag short_tag strip_rw
+# This list should include all of the files in the 'images'
+# subdirectory which are intended to be distributed.  This may include
+# files which are not currently used by the tests.
+IMAGES_EXTRA_DIST = \
+       images/README.txt \
+       $(BMPIMAGES) \
+       $(GIFIMAGES) \
+       $(PNMIMAGES) \
+       $(TIFFIMAGES)
+
+noinst_HEADERS = tifftest.h
 
 ascii_tag_SOURCES = ascii_tag.c
 ascii_tag_LDADD = $(LIBTIFF)
@@ -39,6 +175,118 @@ short_tag_SOURCES = short_tag.c check_tag.c
 short_tag_LDADD = $(LIBTIFF)
 strip_rw_SOURCES = strip_rw.c strip.c test_arrays.c test_arrays.h
 strip_rw_LDADD = $(LIBTIFF)
+rewrite_SOURCES = rewrite_tag.c
+rewrite_LDADD = $(LIBTIFF)
+raw_decode_SOURCES = raw_decode.c
+raw_decode_LDADD = $(LIBTIFF)
+custom_dir_SOURCES = custom_dir.c
+custom_dir_LDADD = $(LIBTIFF)
+
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
+
+# memcheck: valgrind's memory access checker
+memcheck:
+       $(MAKE) MEMCHECK='valgrind --tool=memcheck --leak-check=full --read-var-info=yes --track-origins=yes --num-callers=12 --quiet $(VALGRIND_EXTRA_OPTS)' check
+
+# ptrcheck: valgrind's experimental pointer checking tool.
+ptrcheck:
+       $(MAKE) MEMCHECK='valgrind --tool=exp-ptrcheck --quiet $(VALGRIND_EXTRA_OPTS)' check
+
+generate-tiff2rgba-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiff2rgba-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiff2rgba-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFF2RGBA\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test rotations
+generate-tiffcrop-R90-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-R90-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-R90-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -R90\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test flip (mirror)
+generate-tiffcrop-doubleflip-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-doubleflip-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-doubleflip-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -F both\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test extracting a section 100 pixels wide and 100 pixels high
+generate-tiffcrop-extract-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-extract-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-extract-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -U px -E top -X 60 -Y 60\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test extracting the first and fourth quarters from the left side.
+generate-tiffcrop-extractz14-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-extractz14-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-extractz14-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -E left -Z1:4,2:4\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
 
-INCLUDES = -I$(top_srcdir)/libtiff
+generate-tiffcrop-tests: \
+       generate-tiffcrop-R90-tests \
+       generate-tiffcrop-doubleflip-tests \
+       generate-tiffcrop-extract-tests \
+       generate-tiffcrop-extractz14-tests
 
+generate-tests: \
+       generate-tiff2rgba-tests \
+       generate-tiffcrop-tests
index 6cedb7fc655127ec72e55910553381a86fa7f198..0e40087cbfd016ce60453008d00338316a23eb52 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 # OF THIS SOFTWARE.
 
 # Process this file with automake to produce Makefile.in.
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
+
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -60,58 +75,309 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
+XFAIL_TESTS =
 check_PROGRAMS = ascii_tag$(EXEEXT) long_tag$(EXEEXT) \
-       short_tag$(EXEEXT) strip_rw$(EXEEXT)
+       short_tag$(EXEEXT) strip_rw$(EXEEXT) rewrite$(EXEEXT) \
+       raw_decode$(EXEEXT) custom_dir$(EXEEXT)
 subdir = test
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs \
+       $(top_srcdir)/config/test-driver
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 am_ascii_tag_OBJECTS = ascii_tag.$(OBJEXT)
 ascii_tag_OBJECTS = $(am_ascii_tag_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/libtiff/libtiff.la
-ascii_tag_DEPENDENCIES = $(am__DEPENDENCIES_1)
+ascii_tag_DEPENDENCIES = $(LIBTIFF)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
+am_custom_dir_OBJECTS = custom_dir.$(OBJEXT)
+custom_dir_OBJECTS = $(am_custom_dir_OBJECTS)
+custom_dir_DEPENDENCIES = $(LIBTIFF)
 am_long_tag_OBJECTS = long_tag.$(OBJEXT) check_tag.$(OBJEXT)
 long_tag_OBJECTS = $(am_long_tag_OBJECTS)
-long_tag_DEPENDENCIES = $(am__DEPENDENCIES_1)
+long_tag_DEPENDENCIES = $(LIBTIFF)
+am_raw_decode_OBJECTS = raw_decode.$(OBJEXT)
+raw_decode_OBJECTS = $(am_raw_decode_OBJECTS)
+raw_decode_DEPENDENCIES = $(LIBTIFF)
+am_rewrite_OBJECTS = rewrite_tag.$(OBJEXT)
+rewrite_OBJECTS = $(am_rewrite_OBJECTS)
+rewrite_DEPENDENCIES = $(LIBTIFF)
 am_short_tag_OBJECTS = short_tag.$(OBJEXT) check_tag.$(OBJEXT)
 short_tag_OBJECTS = $(am_short_tag_OBJECTS)
-short_tag_DEPENDENCIES = $(am__DEPENDENCIES_1)
+short_tag_DEPENDENCIES = $(LIBTIFF)
 am_strip_rw_OBJECTS = strip_rw.$(OBJEXT) strip.$(OBJEXT) \
        test_arrays.$(OBJEXT)
 strip_rw_OBJECTS = $(am_strip_rw_OBJECTS)
-strip_rw_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+strip_rw_DEPENDENCIES = $(LIBTIFF)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
-SOURCES = $(ascii_tag_SOURCES) $(long_tag_SOURCES) \
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
+SOURCES = $(ascii_tag_SOURCES) $(custom_dir_SOURCES) \
+       $(long_tag_SOURCES) $(raw_decode_SOURCES) $(rewrite_SOURCES) \
        $(short_tag_SOURCES) $(strip_rw_SOURCES)
-DIST_SOURCES = $(ascii_tag_SOURCES) $(long_tag_SOURCES) \
+DIST_SOURCES = $(ascii_tag_SOURCES) $(custom_dir_SOURCES) \
+       $(long_tag_SOURCES) $(raw_decode_SOURCES) $(rewrite_SOURCES) \
        $(short_tag_SOURCES) $(strip_rw_SOURCES)
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+HEADERS = $(noinst_HEADERS)
 ETAGS = etags
 CTAGS = ctags
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/config/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -131,6 +397,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -145,12 +412,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -169,20 +431,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -194,66 +461,205 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.12 color-tests parallel-tests foreign
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 
-#EXTRA_DIST = Makefile.vc
-TESTS = $(check_PROGRAMS)
+# Environment parameters to be used during tests
+TESTS_ENVIRONMENT = \
+       MAKE="$(MAKE)" \
+       MAKEFLAGS="$(MAKEFLAGS)" \
+       MEMCHECK="$(MEMCHECK)"
+
+EXTRA_DIST = \
+       $(TESTSCRIPTS) \
+       $(IMAGES_EXTRA_DIST) \
+       common.sh
+
+
+# All of the tests to execute via 'make check'
+TESTS = $(check_PROGRAMS) $(TESTSCRIPTS)
+
+# Extra files which should be cleaned by 'make clean'
+CLEANFILES = test_packbits.tif o-*
+
+# Test scripts to execute
+TESTSCRIPTS = \
+       bmp2tiff_palette.sh \
+       bmp2tiff_rgb.sh \
+       gif2tiff.sh \
+       ppm2tiff_pbm.sh \
+       ppm2tiff_pgm.sh \
+       ppm2tiff_ppm.sh \
+       tiffcp-g3.sh \
+       tiffcp-g3-1d.sh \
+       tiffcp-g3-1d-fill.sh \
+       tiffcp-g3-2d.sh \
+       tiffcp-g3-2d-fill.sh \
+       tiffcp-g4.sh \
+       tiffcp-logluv.sh \
+       tiffcp-thumbnail.sh \
+       tiffdump.sh \
+       tiffinfo.sh \
+       tiffcp-split.sh \
+       tiffcp-split-join.sh \
+       tiff2ps-PS1.sh \
+       tiff2ps-PS2.sh \
+       tiff2ps-PS3.sh \
+       tiff2ps-EPS1.sh \
+       tiff2pdf.sh \
+       tiffcrop-doubleflip-logluv-3c-16b.sh \
+       tiffcrop-doubleflip-minisblack-1c-16b.sh \
+       tiffcrop-doubleflip-minisblack-1c-8b.sh \
+       tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh \
+       tiffcrop-doubleflip-miniswhite-1c-1b.sh \
+       tiffcrop-doubleflip-palette-1c-1b.sh \
+       tiffcrop-doubleflip-palette-1c-4b.sh \
+       tiffcrop-doubleflip-palette-1c-8b.sh \
+       tiffcrop-doubleflip-rgb-3c-16b.sh \
+       tiffcrop-doubleflip-rgb-3c-8b.sh \
+       tiffcrop-extract-logluv-3c-16b.sh \
+       tiffcrop-extract-minisblack-1c-16b.sh \
+       tiffcrop-extract-minisblack-1c-8b.sh \
+       tiffcrop-extract-minisblack-2c-8b-alpha.sh \
+       tiffcrop-extract-miniswhite-1c-1b.sh \
+       tiffcrop-extract-palette-1c-1b.sh \
+       tiffcrop-extract-palette-1c-4b.sh \
+       tiffcrop-extract-palette-1c-8b.sh \
+       tiffcrop-extract-rgb-3c-16b.sh \
+       tiffcrop-extract-rgb-3c-8b.sh \
+       tiffcrop-extractz14-logluv-3c-16b.sh \
+       tiffcrop-extractz14-minisblack-1c-16b.sh \
+       tiffcrop-extractz14-minisblack-1c-8b.sh \
+       tiffcrop-extractz14-minisblack-2c-8b-alpha.sh \
+       tiffcrop-extractz14-miniswhite-1c-1b.sh \
+       tiffcrop-extractz14-palette-1c-1b.sh \
+       tiffcrop-extractz14-palette-1c-4b.sh \
+       tiffcrop-extractz14-palette-1c-8b.sh \
+       tiffcrop-extractz14-rgb-3c-16b.sh \
+       tiffcrop-extractz14-rgb-3c-8b.sh \
+       tiffcrop-R90-logluv-3c-16b.sh \
+       tiffcrop-R90-minisblack-1c-16b.sh \
+       tiffcrop-R90-minisblack-1c-8b.sh \
+       tiffcrop-R90-minisblack-2c-8b-alpha.sh \
+       tiffcrop-R90-miniswhite-1c-1b.sh \
+       tiffcrop-R90-palette-1c-1b.sh \
+       tiffcrop-R90-palette-1c-4b.sh \
+       tiffcrop-R90-palette-1c-8b.sh \
+       tiffcrop-R90-rgb-3c-16b.sh \
+       tiffcrop-R90-rgb-3c-8b.sh \
+       tiff2rgba-logluv-3c-16b.sh \
+       tiff2rgba-minisblack-1c-16b.sh \
+       tiff2rgba-minisblack-1c-8b.sh \
+       tiff2rgba-minisblack-2c-8b-alpha.sh \
+       tiff2rgba-miniswhite-1c-1b.sh \
+       tiff2rgba-palette-1c-1b.sh \
+       tiff2rgba-palette-1c-4b.sh \
+       tiff2rgba-palette-1c-8b.sh \
+       tiff2rgba-rgb-3c-16b.sh \
+       tiff2rgba-rgb-3c-8b.sh \
+       tiff2rgba-quad-tile.jpg.sh
+
+
+# This list should contain all of the TIFF files in the 'images'
+# subdirectory which are intended to be used as input images for
+# tests.  All of these files should use the extension ".tiff".
+TIFFIMAGES = \
+       images/logluv-3c-16b.tiff \
+       images/minisblack-1c-16b.tiff \
+       images/minisblack-1c-8b.tiff \
+       images/minisblack-2c-8b-alpha.tiff \
+       images/miniswhite-1c-1b.tiff \
+       images/palette-1c-1b.tiff \
+       images/palette-1c-4b.tiff \
+       images/palette-1c-8b.tiff \
+       images/rgb-3c-16b.tiff \
+       images/rgb-3c-8b.tiff \
+       images/quad-tile.jpg.tiff
+
+BMPIMAGES = \
+       images/palette-1c-8b.bmp \
+       images/rgb-3c-8b.bmp
+
+GIFIMAGES = \
+       images/palette-1c-8b.gif
+
+PNMIMAGES = \
+       images/minisblack-1c-8b.pgm \
+       images/miniswhite-1c-1b.pbm \
+       images/rgb-3c-8b.ppm
+
+
+# This list should include all of the files in the 'images'
+# subdirectory which are intended to be distributed.  This may include
+# files which are not currently used by the tests.
+IMAGES_EXTRA_DIST = \
+       images/README.txt \
+       $(BMPIMAGES) \
+       $(GIFIMAGES) \
+       $(PNMIMAGES) \
+       $(TIFFIMAGES)
+
+noinst_HEADERS = tifftest.h
 ascii_tag_SOURCES = ascii_tag.c
 ascii_tag_LDADD = $(LIBTIFF)
 long_tag_SOURCES = long_tag.c check_tag.c
@@ -262,23 +668,29 @@ short_tag_SOURCES = short_tag.c check_tag.c
 short_tag_LDADD = $(LIBTIFF)
 strip_rw_SOURCES = strip_rw.c strip.c test_arrays.c test_arrays.h
 strip_rw_LDADD = $(LIBTIFF)
-INCLUDES = -I$(top_srcdir)/libtiff
+rewrite_SOURCES = rewrite_tag.c
+rewrite_LDADD = $(LIBTIFF)
+raw_decode_SOURCES = raw_decode.c
+raw_decode_LDADD = $(LIBTIFF)
+custom_dir_SOURCES = custom_dir.c
+custom_dir_LDADD = $(LIBTIFF)
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  test/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  test/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign test/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -296,25 +708,37 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 
 clean-checkPROGRAMS:
-       @list='$(check_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-ascii_tag$(EXEEXT): $(ascii_tag_OBJECTS) $(ascii_tag_DEPENDENCIES) 
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+ascii_tag$(EXEEXT): $(ascii_tag_OBJECTS) $(ascii_tag_DEPENDENCIES) $(EXTRA_ascii_tag_DEPENDENCIES) 
        @rm -f ascii_tag$(EXEEXT)
-       $(LINK) $(ascii_tag_LDFLAGS) $(ascii_tag_OBJECTS) $(ascii_tag_LDADD) $(LIBS)
-long_tag$(EXEEXT): $(long_tag_OBJECTS) $(long_tag_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(ascii_tag_OBJECTS) $(ascii_tag_LDADD) $(LIBS)
+custom_dir$(EXEEXT): $(custom_dir_OBJECTS) $(custom_dir_DEPENDENCIES) $(EXTRA_custom_dir_DEPENDENCIES) 
+       @rm -f custom_dir$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(custom_dir_OBJECTS) $(custom_dir_LDADD) $(LIBS)
+long_tag$(EXEEXT): $(long_tag_OBJECTS) $(long_tag_DEPENDENCIES) $(EXTRA_long_tag_DEPENDENCIES) 
        @rm -f long_tag$(EXEEXT)
-       $(LINK) $(long_tag_LDFLAGS) $(long_tag_OBJECTS) $(long_tag_LDADD) $(LIBS)
-short_tag$(EXEEXT): $(short_tag_OBJECTS) $(short_tag_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(long_tag_OBJECTS) $(long_tag_LDADD) $(LIBS)
+raw_decode$(EXEEXT): $(raw_decode_OBJECTS) $(raw_decode_DEPENDENCIES) $(EXTRA_raw_decode_DEPENDENCIES) 
+       @rm -f raw_decode$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(raw_decode_OBJECTS) $(raw_decode_LDADD) $(LIBS)
+rewrite$(EXEEXT): $(rewrite_OBJECTS) $(rewrite_DEPENDENCIES) $(EXTRA_rewrite_DEPENDENCIES) 
+       @rm -f rewrite$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(rewrite_OBJECTS) $(rewrite_LDADD) $(LIBS)
+short_tag$(EXEEXT): $(short_tag_OBJECTS) $(short_tag_DEPENDENCIES) $(EXTRA_short_tag_DEPENDENCIES) 
        @rm -f short_tag$(EXEEXT)
-       $(LINK) $(short_tag_LDFLAGS) $(short_tag_OBJECTS) $(short_tag_LDADD) $(LIBS)
-strip_rw$(EXEEXT): $(strip_rw_OBJECTS) $(strip_rw_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(short_tag_OBJECTS) $(short_tag_LDADD) $(LIBS)
+strip_rw$(EXEEXT): $(strip_rw_OBJECTS) $(strip_rw_DEPENDENCIES) $(EXTRA_strip_rw_DEPENDENCIES) 
        @rm -f strip_rw$(EXEEXT)
-       $(LINK) $(strip_rw_LDFLAGS) $(strip_rw_OBJECTS) $(strip_rw_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(strip_rw_OBJECTS) $(strip_rw_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -324,32 +748,35 @@ distclean-compile:
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ascii_tag.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/custom_dir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long_tag.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raw_decode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rewrite_tag.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/short_tag.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strip_rw.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_arrays.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -357,155 +784,822 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
-       srcdir=$(srcdir); export srcdir; \
-       list='$(TESTS)'; \
-       if test -n "$$list"; then \
-         for tst in $$list; do \
-           if test -f ./$$tst; then dir=./; \
-           elif test -f $$tst; then dir=; \
-           else dir="$(srcdir)/"; fi; \
-           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *" $$tst "*) \
-               xpass=`expr $$xpass + 1`; \
-               failed=`expr $$failed + 1`; \
-               echo "XPASS: $$tst"; \
-             ;; \
-             *) \
-               echo "PASS: $$tst"; \
-             ;; \
-             esac; \
-           elif test $$? -ne 77; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *" $$tst "*) \
-               xfail=`expr $$xfail + 1`; \
-               echo "XFAIL: $$tst"; \
-             ;; \
-             *) \
-               failed=`expr $$failed + 1`; \
-               echo "FAIL: $$tst"; \
-             ;; \
-             esac; \
-           else \
-             skip=`expr $$skip + 1`; \
-             echo "SKIP: $$tst"; \
-           fi; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# exand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
+         fi; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
          done; \
-         if test "$$failed" -eq 0; then \
-           if test "$$xfail" -eq 0; then \
-             banner="All $$all tests passed"; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
            else \
-             banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
            fi; \
-         else \
-           if test "$$xpass" -eq 0; then \
-             banner="$$failed of $$all tests failed"; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
            else \
-             banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+             color_start= color_end=; \
            fi; \
-         fi; \
-         dashes="$$banner"; \
-         skipped=""; \
-         if test "$$skip" -ne 0; then \
-           skipped="($$skip tests were not run)"; \
-           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$skipped"; \
-         fi; \
-         report=""; \
-         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-           report="Please report to $(PACKAGE_BUGREPORT)"; \
-           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$report"; \
-         fi; \
-         dashes=`echo "$$dashes" | sed s/./=/g`; \
-         echo "$$dashes"; \
-         echo "$$banner"; \
-         test -z "$$skipped" || echo "$$skipped"; \
-         test -z "$$report" || echo "$$report"; \
-         echo "$$dashes"; \
-         test "$$failed" -eq 0; \
-       else :; fi
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all $(check_PROGRAMS)
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+ascii_tag.log: ascii_tag$(EXEEXT)
+       @p='ascii_tag$(EXEEXT)'; \
+       b='ascii_tag'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+long_tag.log: long_tag$(EXEEXT)
+       @p='long_tag$(EXEEXT)'; \
+       b='long_tag'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+short_tag.log: short_tag$(EXEEXT)
+       @p='short_tag$(EXEEXT)'; \
+       b='short_tag'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+strip_rw.log: strip_rw$(EXEEXT)
+       @p='strip_rw$(EXEEXT)'; \
+       b='strip_rw'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+rewrite.log: rewrite$(EXEEXT)
+       @p='rewrite$(EXEEXT)'; \
+       b='rewrite'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+raw_decode.log: raw_decode$(EXEEXT)
+       @p='raw_decode$(EXEEXT)'; \
+       b='raw_decode'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+custom_dir.log: custom_dir$(EXEEXT)
+       @p='custom_dir$(EXEEXT)'; \
+       b='custom_dir'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+bmp2tiff_palette.sh.log: bmp2tiff_palette.sh
+       @p='bmp2tiff_palette.sh'; \
+       b='bmp2tiff_palette.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+bmp2tiff_rgb.sh.log: bmp2tiff_rgb.sh
+       @p='bmp2tiff_rgb.sh'; \
+       b='bmp2tiff_rgb.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+gif2tiff.sh.log: gif2tiff.sh
+       @p='gif2tiff.sh'; \
+       b='gif2tiff.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+ppm2tiff_pbm.sh.log: ppm2tiff_pbm.sh
+       @p='ppm2tiff_pbm.sh'; \
+       b='ppm2tiff_pbm.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+ppm2tiff_pgm.sh.log: ppm2tiff_pgm.sh
+       @p='ppm2tiff_pgm.sh'; \
+       b='ppm2tiff_pgm.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+ppm2tiff_ppm.sh.log: ppm2tiff_ppm.sh
+       @p='ppm2tiff_ppm.sh'; \
+       b='ppm2tiff_ppm.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g3.sh.log: tiffcp-g3.sh
+       @p='tiffcp-g3.sh'; \
+       b='tiffcp-g3.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g3-1d.sh.log: tiffcp-g3-1d.sh
+       @p='tiffcp-g3-1d.sh'; \
+       b='tiffcp-g3-1d.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g3-1d-fill.sh.log: tiffcp-g3-1d-fill.sh
+       @p='tiffcp-g3-1d-fill.sh'; \
+       b='tiffcp-g3-1d-fill.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g3-2d.sh.log: tiffcp-g3-2d.sh
+       @p='tiffcp-g3-2d.sh'; \
+       b='tiffcp-g3-2d.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g3-2d-fill.sh.log: tiffcp-g3-2d-fill.sh
+       @p='tiffcp-g3-2d-fill.sh'; \
+       b='tiffcp-g3-2d-fill.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-g4.sh.log: tiffcp-g4.sh
+       @p='tiffcp-g4.sh'; \
+       b='tiffcp-g4.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-logluv.sh.log: tiffcp-logluv.sh
+       @p='tiffcp-logluv.sh'; \
+       b='tiffcp-logluv.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-thumbnail.sh.log: tiffcp-thumbnail.sh
+       @p='tiffcp-thumbnail.sh'; \
+       b='tiffcp-thumbnail.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffdump.sh.log: tiffdump.sh
+       @p='tiffdump.sh'; \
+       b='tiffdump.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffinfo.sh.log: tiffinfo.sh
+       @p='tiffinfo.sh'; \
+       b='tiffinfo.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-split.sh.log: tiffcp-split.sh
+       @p='tiffcp-split.sh'; \
+       b='tiffcp-split.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcp-split-join.sh.log: tiffcp-split-join.sh
+       @p='tiffcp-split-join.sh'; \
+       b='tiffcp-split-join.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2ps-PS1.sh.log: tiff2ps-PS1.sh
+       @p='tiff2ps-PS1.sh'; \
+       b='tiff2ps-PS1.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2ps-PS2.sh.log: tiff2ps-PS2.sh
+       @p='tiff2ps-PS2.sh'; \
+       b='tiff2ps-PS2.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2ps-PS3.sh.log: tiff2ps-PS3.sh
+       @p='tiff2ps-PS3.sh'; \
+       b='tiff2ps-PS3.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2ps-EPS1.sh.log: tiff2ps-EPS1.sh
+       @p='tiff2ps-EPS1.sh'; \
+       b='tiff2ps-EPS1.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2pdf.sh.log: tiff2pdf.sh
+       @p='tiff2pdf.sh'; \
+       b='tiff2pdf.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-logluv-3c-16b.sh.log: tiffcrop-doubleflip-logluv-3c-16b.sh
+       @p='tiffcrop-doubleflip-logluv-3c-16b.sh'; \
+       b='tiffcrop-doubleflip-logluv-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-minisblack-1c-16b.sh.log: tiffcrop-doubleflip-minisblack-1c-16b.sh
+       @p='tiffcrop-doubleflip-minisblack-1c-16b.sh'; \
+       b='tiffcrop-doubleflip-minisblack-1c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-minisblack-1c-8b.sh.log: tiffcrop-doubleflip-minisblack-1c-8b.sh
+       @p='tiffcrop-doubleflip-minisblack-1c-8b.sh'; \
+       b='tiffcrop-doubleflip-minisblack-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh.log: tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh
+       @p='tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh'; \
+       b='tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-miniswhite-1c-1b.sh.log: tiffcrop-doubleflip-miniswhite-1c-1b.sh
+       @p='tiffcrop-doubleflip-miniswhite-1c-1b.sh'; \
+       b='tiffcrop-doubleflip-miniswhite-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-palette-1c-1b.sh.log: tiffcrop-doubleflip-palette-1c-1b.sh
+       @p='tiffcrop-doubleflip-palette-1c-1b.sh'; \
+       b='tiffcrop-doubleflip-palette-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-palette-1c-4b.sh.log: tiffcrop-doubleflip-palette-1c-4b.sh
+       @p='tiffcrop-doubleflip-palette-1c-4b.sh'; \
+       b='tiffcrop-doubleflip-palette-1c-4b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-palette-1c-8b.sh.log: tiffcrop-doubleflip-palette-1c-8b.sh
+       @p='tiffcrop-doubleflip-palette-1c-8b.sh'; \
+       b='tiffcrop-doubleflip-palette-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-rgb-3c-16b.sh.log: tiffcrop-doubleflip-rgb-3c-16b.sh
+       @p='tiffcrop-doubleflip-rgb-3c-16b.sh'; \
+       b='tiffcrop-doubleflip-rgb-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-doubleflip-rgb-3c-8b.sh.log: tiffcrop-doubleflip-rgb-3c-8b.sh
+       @p='tiffcrop-doubleflip-rgb-3c-8b.sh'; \
+       b='tiffcrop-doubleflip-rgb-3c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-logluv-3c-16b.sh.log: tiffcrop-extract-logluv-3c-16b.sh
+       @p='tiffcrop-extract-logluv-3c-16b.sh'; \
+       b='tiffcrop-extract-logluv-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-minisblack-1c-16b.sh.log: tiffcrop-extract-minisblack-1c-16b.sh
+       @p='tiffcrop-extract-minisblack-1c-16b.sh'; \
+       b='tiffcrop-extract-minisblack-1c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-minisblack-1c-8b.sh.log: tiffcrop-extract-minisblack-1c-8b.sh
+       @p='tiffcrop-extract-minisblack-1c-8b.sh'; \
+       b='tiffcrop-extract-minisblack-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-minisblack-2c-8b-alpha.sh.log: tiffcrop-extract-minisblack-2c-8b-alpha.sh
+       @p='tiffcrop-extract-minisblack-2c-8b-alpha.sh'; \
+       b='tiffcrop-extract-minisblack-2c-8b-alpha.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-miniswhite-1c-1b.sh.log: tiffcrop-extract-miniswhite-1c-1b.sh
+       @p='tiffcrop-extract-miniswhite-1c-1b.sh'; \
+       b='tiffcrop-extract-miniswhite-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-palette-1c-1b.sh.log: tiffcrop-extract-palette-1c-1b.sh
+       @p='tiffcrop-extract-palette-1c-1b.sh'; \
+       b='tiffcrop-extract-palette-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-palette-1c-4b.sh.log: tiffcrop-extract-palette-1c-4b.sh
+       @p='tiffcrop-extract-palette-1c-4b.sh'; \
+       b='tiffcrop-extract-palette-1c-4b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-palette-1c-8b.sh.log: tiffcrop-extract-palette-1c-8b.sh
+       @p='tiffcrop-extract-palette-1c-8b.sh'; \
+       b='tiffcrop-extract-palette-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-rgb-3c-16b.sh.log: tiffcrop-extract-rgb-3c-16b.sh
+       @p='tiffcrop-extract-rgb-3c-16b.sh'; \
+       b='tiffcrop-extract-rgb-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extract-rgb-3c-8b.sh.log: tiffcrop-extract-rgb-3c-8b.sh
+       @p='tiffcrop-extract-rgb-3c-8b.sh'; \
+       b='tiffcrop-extract-rgb-3c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-logluv-3c-16b.sh.log: tiffcrop-extractz14-logluv-3c-16b.sh
+       @p='tiffcrop-extractz14-logluv-3c-16b.sh'; \
+       b='tiffcrop-extractz14-logluv-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-minisblack-1c-16b.sh.log: tiffcrop-extractz14-minisblack-1c-16b.sh
+       @p='tiffcrop-extractz14-minisblack-1c-16b.sh'; \
+       b='tiffcrop-extractz14-minisblack-1c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-minisblack-1c-8b.sh.log: tiffcrop-extractz14-minisblack-1c-8b.sh
+       @p='tiffcrop-extractz14-minisblack-1c-8b.sh'; \
+       b='tiffcrop-extractz14-minisblack-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-minisblack-2c-8b-alpha.sh.log: tiffcrop-extractz14-minisblack-2c-8b-alpha.sh
+       @p='tiffcrop-extractz14-minisblack-2c-8b-alpha.sh'; \
+       b='tiffcrop-extractz14-minisblack-2c-8b-alpha.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-miniswhite-1c-1b.sh.log: tiffcrop-extractz14-miniswhite-1c-1b.sh
+       @p='tiffcrop-extractz14-miniswhite-1c-1b.sh'; \
+       b='tiffcrop-extractz14-miniswhite-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-palette-1c-1b.sh.log: tiffcrop-extractz14-palette-1c-1b.sh
+       @p='tiffcrop-extractz14-palette-1c-1b.sh'; \
+       b='tiffcrop-extractz14-palette-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-palette-1c-4b.sh.log: tiffcrop-extractz14-palette-1c-4b.sh
+       @p='tiffcrop-extractz14-palette-1c-4b.sh'; \
+       b='tiffcrop-extractz14-palette-1c-4b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-palette-1c-8b.sh.log: tiffcrop-extractz14-palette-1c-8b.sh
+       @p='tiffcrop-extractz14-palette-1c-8b.sh'; \
+       b='tiffcrop-extractz14-palette-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-rgb-3c-16b.sh.log: tiffcrop-extractz14-rgb-3c-16b.sh
+       @p='tiffcrop-extractz14-rgb-3c-16b.sh'; \
+       b='tiffcrop-extractz14-rgb-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-extractz14-rgb-3c-8b.sh.log: tiffcrop-extractz14-rgb-3c-8b.sh
+       @p='tiffcrop-extractz14-rgb-3c-8b.sh'; \
+       b='tiffcrop-extractz14-rgb-3c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-logluv-3c-16b.sh.log: tiffcrop-R90-logluv-3c-16b.sh
+       @p='tiffcrop-R90-logluv-3c-16b.sh'; \
+       b='tiffcrop-R90-logluv-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-minisblack-1c-16b.sh.log: tiffcrop-R90-minisblack-1c-16b.sh
+       @p='tiffcrop-R90-minisblack-1c-16b.sh'; \
+       b='tiffcrop-R90-minisblack-1c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-minisblack-1c-8b.sh.log: tiffcrop-R90-minisblack-1c-8b.sh
+       @p='tiffcrop-R90-minisblack-1c-8b.sh'; \
+       b='tiffcrop-R90-minisblack-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-minisblack-2c-8b-alpha.sh.log: tiffcrop-R90-minisblack-2c-8b-alpha.sh
+       @p='tiffcrop-R90-minisblack-2c-8b-alpha.sh'; \
+       b='tiffcrop-R90-minisblack-2c-8b-alpha.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-miniswhite-1c-1b.sh.log: tiffcrop-R90-miniswhite-1c-1b.sh
+       @p='tiffcrop-R90-miniswhite-1c-1b.sh'; \
+       b='tiffcrop-R90-miniswhite-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-palette-1c-1b.sh.log: tiffcrop-R90-palette-1c-1b.sh
+       @p='tiffcrop-R90-palette-1c-1b.sh'; \
+       b='tiffcrop-R90-palette-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-palette-1c-4b.sh.log: tiffcrop-R90-palette-1c-4b.sh
+       @p='tiffcrop-R90-palette-1c-4b.sh'; \
+       b='tiffcrop-R90-palette-1c-4b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-palette-1c-8b.sh.log: tiffcrop-R90-palette-1c-8b.sh
+       @p='tiffcrop-R90-palette-1c-8b.sh'; \
+       b='tiffcrop-R90-palette-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-rgb-3c-16b.sh.log: tiffcrop-R90-rgb-3c-16b.sh
+       @p='tiffcrop-R90-rgb-3c-16b.sh'; \
+       b='tiffcrop-R90-rgb-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiffcrop-R90-rgb-3c-8b.sh.log: tiffcrop-R90-rgb-3c-8b.sh
+       @p='tiffcrop-R90-rgb-3c-8b.sh'; \
+       b='tiffcrop-R90-rgb-3c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-logluv-3c-16b.sh.log: tiff2rgba-logluv-3c-16b.sh
+       @p='tiff2rgba-logluv-3c-16b.sh'; \
+       b='tiff2rgba-logluv-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-minisblack-1c-16b.sh.log: tiff2rgba-minisblack-1c-16b.sh
+       @p='tiff2rgba-minisblack-1c-16b.sh'; \
+       b='tiff2rgba-minisblack-1c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-minisblack-1c-8b.sh.log: tiff2rgba-minisblack-1c-8b.sh
+       @p='tiff2rgba-minisblack-1c-8b.sh'; \
+       b='tiff2rgba-minisblack-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-minisblack-2c-8b-alpha.sh.log: tiff2rgba-minisblack-2c-8b-alpha.sh
+       @p='tiff2rgba-minisblack-2c-8b-alpha.sh'; \
+       b='tiff2rgba-minisblack-2c-8b-alpha.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-miniswhite-1c-1b.sh.log: tiff2rgba-miniswhite-1c-1b.sh
+       @p='tiff2rgba-miniswhite-1c-1b.sh'; \
+       b='tiff2rgba-miniswhite-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-palette-1c-1b.sh.log: tiff2rgba-palette-1c-1b.sh
+       @p='tiff2rgba-palette-1c-1b.sh'; \
+       b='tiff2rgba-palette-1c-1b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-palette-1c-4b.sh.log: tiff2rgba-palette-1c-4b.sh
+       @p='tiff2rgba-palette-1c-4b.sh'; \
+       b='tiff2rgba-palette-1c-4b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-palette-1c-8b.sh.log: tiff2rgba-palette-1c-8b.sh
+       @p='tiff2rgba-palette-1c-8b.sh'; \
+       b='tiff2rgba-palette-1c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-rgb-3c-16b.sh.log: tiff2rgba-rgb-3c-16b.sh
+       @p='tiff2rgba-rgb-3c-16b.sh'; \
+       b='tiff2rgba-rgb-3c-16b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-rgb-3c-8b.sh.log: tiff2rgba-rgb-3c-8b.sh
+       @p='tiff2rgba-rgb-3c-8b.sh'; \
+       b='tiff2rgba-rgb-3c-8b.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+tiff2rgba-quad-tile.jpg.sh.log: tiff2rgba-quad-tile.jpg.sh
+       @p='tiff2rgba-quad-tile.jpg.sh'; \
+       b='tiff2rgba-quad-tile.jpg.sh'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -513,7 +1607,7 @@ check-am: all-am
        $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
        $(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: check-am
-all-am: Makefile
+all-am: Makefile $(HEADERS)
 installdirs:
 install: install-am
 install-exec: install-exec-am
@@ -525,16 +1619,26 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -548,7 +1652,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-am
 
@@ -556,18 +1660,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am:
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -588,19 +1712,131 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-info-am
+uninstall-am:
+
+.MAKE: check-am install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
-       clean-checkPROGRAMS clean-generic clean-libtool ctags \
-       distclean distclean-compile distclean-generic \
+       clean-checkPROGRAMS clean-generic clean-libtool cscopelist \
+       ctags distclean distclean-compile distclean-generic \
        distclean-libtool distclean-tags distdir dvi dvi-am html \
        html-am info info-am install install-am install-data \
-       install-data-am install-exec install-exec-am install-info \
-       install-info-am install-man install-strip installcheck \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-info-am
+       recheck tags uninstall uninstall-am
+
+
+# memcheck: valgrind's memory access checker
+memcheck:
+       $(MAKE) MEMCHECK='valgrind --tool=memcheck --leak-check=full --read-var-info=yes --track-origins=yes --num-callers=12 --quiet $(VALGRIND_EXTRA_OPTS)' check
+
+# ptrcheck: valgrind's experimental pointer checking tool.
+ptrcheck:
+       $(MAKE) MEMCHECK='valgrind --tool=exp-ptrcheck --quiet $(VALGRIND_EXTRA_OPTS)' check
+
+generate-tiff2rgba-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiff2rgba-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiff2rgba-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFF2RGBA\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test rotations
+generate-tiffcrop-R90-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-R90-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-R90-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -R90\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test flip (mirror)
+generate-tiffcrop-doubleflip-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-doubleflip-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-doubleflip-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -F both\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test extracting a section 100 pixels wide and 100 pixels high
+generate-tiffcrop-extract-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-extract-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-extract-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -U px -E top -X 60 -Y 60\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+# Test extracting the first and fourth quarters from the left side.
+generate-tiffcrop-extractz14-tests:
+       for file in $(TIFFIMAGES) ; \
+       do \
+       base=`basename $$file .tiff` ; \
+       testscript=$(srcdir)/tiffcrop-extractz14-$$base.sh ; \
+       ( \
+         echo "#!/bin/sh" ; \
+         echo "# Generated file, master is Makefile.am" ; \
+         echo ". \$${srcdir:-.}/common.sh" ; \
+         echo "infile=\"\$$srcdir/$$file\"" ; \
+         echo "outfile=\"o-tiffcrop-extractz14-$$base.tiff\"" ; \
+         echo "f_test_convert \"\$$TIFFCROP -E left -Z1:4,2:4\" \$$infile \$$outfile" ; \
+         echo "f_tiffinfo_validate \$$outfile" ; \
+       ) > $$testscript ; \
+       chmod +x $$testscript ; \
+       done
+
+generate-tiffcrop-tests: \
+       generate-tiffcrop-R90-tests \
+       generate-tiffcrop-doubleflip-tests \
+       generate-tiffcrop-extract-tests \
+       generate-tiffcrop-extractz14-tests
+
+generate-tests: \
+       generate-tiff2rgba-tests \
+       generate-tiffcrop-tests
 
 # 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.
index 83a382284877e3f7bd2b4be06da419cfd425d6aa..c9bb3b20877adafa1b40ca2fcc14583cf4309073 100644 (file)
@@ -40,9 +40,9 @@
 
 #include "tiffio.h"
 
-const char     *filename = "ascii_test.tiff";
+static const char filename[] = "ascii_test.tiff";
 
-static struct Tags {
+static const struct {
        ttag_t          tag;
        const char      *value;
 } ascii_tags[] = {
@@ -56,21 +56,23 @@ static struct Tags {
        { TIFFTAG_ARTIST, "Andrey V. Kiselev" },
        { TIFFTAG_HOSTCOMPUTER, "Debian GNU/Linux (Sarge)" },
        { TIFFTAG_TARGETPRINTER, "No printer" },
-       { TIFFTAG_PIXAR_TEXTUREFORMAT, "No texture" },
-       { TIFFTAG_PIXAR_WRAPMODES, "No wrap" },
-       { TIFFTAG_COPYRIGHT, "Copyright (c) 2004, Andrey Kiselev" }
+       { TIFFTAG_COPYRIGHT, "Copyright (c) 2004, Andrey Kiselev" },
+       { TIFFTAG_FAXSUBADDRESS, "Fax subaddress" },
+       /* DGN tags */
+       { TIFFTAG_UNIQUECAMERAMODEL, "No camera" },
+       { TIFFTAG_CAMERASERIALNUMBER, "1234567890" }
 };
 #define NTAGS   (sizeof (ascii_tags) / sizeof (ascii_tags[0]))
 
-const char *ink_names = "Red\0Green\0Blue";
+static const char ink_names[] = "Red\0Green\0Blue";
 const int ink_names_size = 15;
 
 int
-main(int argc, char **argv)
+main()
 {
        TIFF            *tif;
-       int             i;
-       unsigned char   buf[3] = { 0, 127, 255 };
+       size_t          i;
+       unsigned char   buf[] = { 0, 127, 255 };
        char            *value;
 
        /* Test whether we can write tags. */
@@ -92,7 +94,7 @@ main(int argc, char **argv)
                fprintf (stderr, "Can't set BitsPerSample tag.\n");
                goto failure;
        }
-       if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 3)) {
+       if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, sizeof(buf))) {
                fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
                goto failure;
        }
@@ -108,19 +110,21 @@ main(int argc, char **argv)
        for (i = 0; i < NTAGS; i++) {
                if (!TIFFSetField(tif, ascii_tags[i].tag,
                                  ascii_tags[i].value)) {
-                       fprintf(stderr, "Can't set tag %d.\n",
-                               (int)ascii_tags[i].tag);
+                       fprintf(stderr, "Can't set tag %lu.\n",
+                               (unsigned long)ascii_tags[i].tag);
                        goto failure;
                }
        }
 
        /* InkNames tag has special form, so we handle it separately. */
        if (!TIFFSetField(tif, TIFFTAG_NUMBEROFINKS, 3)) {
-               fprintf (stderr, "Can't set tag %d.\n", TIFFTAG_NUMBEROFINKS);
+               fprintf (stderr, "Can't set tag %d (NUMBEROFINKS).\n",
+                         TIFFTAG_NUMBEROFINKS);
                goto failure;
        }
        if (!TIFFSetField(tif, TIFFTAG_INKNAMES, ink_names_size, ink_names)) {
-               fprintf (stderr, "Can't set tag %d.\n", TIFFTAG_INKNAMES);
+               fprintf (stderr, "Can't set tag %d (INKNAMES).\n",
+                        TIFFTAG_INKNAMES);
                goto failure;
        }
 
@@ -142,15 +146,16 @@ main(int argc, char **argv)
        for (i = 0; i < NTAGS; i++) {
                if (!TIFFGetField(tif, ascii_tags[i].tag, &value)
                    || strcmp(value, ascii_tags[i].value)) {
-                       fprintf(stderr, "Can't get tag %d.\n",
-                               (int)ascii_tags[i].tag);
+                       fprintf(stderr, "Can't get tag %lu.\n",
+                               (unsigned long)ascii_tags[i].tag);
                        goto failure;
                }
        }
 
        if (!TIFFGetField(tif, TIFFTAG_INKNAMES, &value)
            || memcmp(value, ink_names, ink_names_size)) {
-               fprintf (stderr, "Can't get tag %d.\n", TIFFTAG_INKNAMES);
+               fprintf (stderr, "Can't get tag %d (INKNAMES).\n",
+                        TIFFTAG_INKNAMES);
                goto failure;
        }
 
@@ -161,9 +166,11 @@ main(int argc, char **argv)
        return 0;
 
 failure:
-       /* Something goes wrong; close file and return unsuccessful status. */
+       /* 
+        * Something goes wrong; close file and return unsuccessful status.
+        * Do not remove the file for further manual investigation.
+        */
        TIFFClose(tif);
-       unlink(filename);
        return 1;
 }
 
diff --git a/src/tiff/test/bmp2tiff_palette.sh b/src/tiff/test/bmp2tiff_palette.sh
new file mode 100755 (executable)
index 0000000..1992623
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_PALETTE_1C_8B_BMP"
+outfile="o-bmp2tiff_palette.tiff"
+f_test_convert "$BMP2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/bmp2tiff_rgb.sh b/src/tiff/test/bmp2tiff_rgb.sh
new file mode 100755 (executable)
index 0000000..2e940ce
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_RGB_3C_8B_BMP"
+outfile="o-bmp2tiff_rgb.tiff"
+f_test_convert "$BMP2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
index f8eb3763f5c4707f7f49c2d94d2ad69af5d15a23..462990707312fb5537b7ea93cef711caff65a20f 100644 (file)
 /*
  * TIFF Library
  *
- * Module to test LONG tags read/write functions.
+ * Helper testing routines.
  */
 
 #include "tiffio.h"
 
 int
-CheckShortField(TIFF *tif, ttag_t field, uint16 value)
+CheckShortField(TIFF *tif, const ttag_t field, const uint16 value)
 {
-       uint16 tmp = 0;
+       uint16 tmp = 123;
 
        if (!TIFFGetField(tif, field, &tmp)) {
                fprintf (stderr, "Problem fetching tag %lu.\n",
@@ -51,9 +51,28 @@ CheckShortField(TIFF *tif, ttag_t field, uint16 value)
 }
 
 int
-CheckLongField(TIFF *tif, ttag_t field, uint32 value)
+CheckShortPairedField(TIFF *tif, const ttag_t field, const uint16 *values)
 {
-       uint32 tmp = 0;
+       uint16 tmp[2] = { 123, 456 };
+
+       if (!TIFFGetField(tif, field, tmp, tmp + 1)) {
+               fprintf (stderr, "Problem fetching tag %lu.\n",
+                        (unsigned long) field);
+               return -1;
+       }
+       if (tmp[0] != values[0] || tmp[1] != values[1]) {
+               fprintf (stderr, "Wrong SHORT PAIR fetched for tag %lu.\n",
+                        (unsigned long) field);
+               return -1;
+       }
+
+       return 0;
+}
+
+int
+CheckLongField(TIFF *tif, const ttag_t field, const uint32 value)
+{
+       uint32 tmp = 123;
 
        if (!TIFFGetField(tif, field, &tmp)) {
                fprintf (stderr, "Problem fetching tag %lu.\n",
diff --git a/src/tiff/test/common.sh b/src/tiff/test/common.sh
new file mode 100755 (executable)
index 0000000..643104b
--- /dev/null
@@ -0,0 +1,129 @@
+# Common code fragment for tests
+#
+srcdir=${srcdir:-.}
+BUILDDIR=`pwd`
+SRCDIR=`dirname $0`
+SRCDIR=`cd $SRCDIR && pwd`
+TOPSRCDIR=`cd $srcdir/.. && pwd`
+TOOLS=`cd ../tools && pwd`
+IMAGES="${SRCDIR}/images"
+
+# Aliases for built tools
+BMP2TIFF=${TOOLS}/bmp2tiff
+FAX2PS=${TOOLS}/fax2ps
+FAX2TIFF=${TOOLS}/fax2tiff
+GIF2TIFF=${TOOLS}/gif2tiff
+PAL2RGB=${TOOLS}/pal2rgb
+PPM2TIFF=${TOOLS}/ppm2tiff
+RAS2TIFF=${TOOLS}/ras2tiff
+RAW2TIFF=${TOOLS}/raw2tiff
+RGB2YCBCR=${TOOLS}/rgb2ycbcr
+THUMBNAIL=${TOOLS}/thumbnail
+TIFF2BW=${TOOLS}/tiff2bw
+TIFF2PDF=${TOOLS}/tiff2pdf
+TIFF2PS=${TOOLS}/tiff2ps
+TIFF2RGBA=${TOOLS}/tiff2rgba
+TIFFCMP=${TOOLS}/tiffcmp
+TIFFCP=${TOOLS}/tiffcp
+TIFFCROP=${TOOLS}/tiffcrop
+TIFFDITHER=${TOOLS}/tiffdither
+TIFFDUMP=${TOOLS}/tiffdump
+TIFFINFO=${TOOLS}/tiffinfo
+TIFFMEDIAN=${TOOLS}/tiffmedian
+TIFFSET=${TOOLS}/tiffset
+TIFFSPLIT=${TOOLS}/tiffsplit
+
+# Aliases for input test files
+IMG_MINISBLACK_1C_16B=${IMAGES}/minisblack-1c-16b.tiff
+IMG_MINISBLACK_1C_8B=${IMAGES}/minisblack-1c-8b.tiff
+IMG_MINISWHITE_1C_1B=${IMAGES}/miniswhite-1c-1b.tiff
+IMG_PALETTE_1C_1B=${IMAGES}/palette-1c-1b.tiff
+IMG_PALETTE_1C_4B=${IMAGES}/palette-1c-4b.tiff
+IMG_PALETTE_1C_8B=${IMAGES}/palette-1c-8b.tiff
+IMG_RGB_3C_16B=${IMAGES}/rgb-3c-16b.tiff
+IMG_RGB_3C_8B=${IMAGES}/rgb-3c-8b.tiff
+IMG_MINISBLACK_2C_8B_ALPHA=${IMAGES}/minisblack-2c-8b-alpha.tiff
+
+IMG_PALETTE_1C_8B_BMP=${IMAGES}/palette-1c-8b.bmp
+IMG_RGB_3C_8B_BMP=${IMAGES}/rgb-3c-8b.bmp
+
+IMG_PALETTE_1C_8B_GIF=${IMAGES}/palette-1c-8b.gif
+
+IMG_MINISWHITE_1C_1B_PBM=${IMAGES}/miniswhite-1c-1b.pbm
+IMG_MINISBLACK_1C_8B_PGM=${IMAGES}/minisblack-1c-8b.pgm
+IMG_RGB_3C_8B_PPM=${IMAGES}/rgb-3c-8b.ppm
+
+# All uncompressed image files
+IMG_UNCOMPRESSED="${IMG_MINISBLACK_1C_16B} ${IMG_MINISBLACK_1C_8B} ${IMG_MINISWHITE_1C_1B} ${IMG_PALETTE_1C_1B} ${IMG_PALETTE_1C_4B} ${IMG_PALETTE_1C_4B} ${IMG_PALETTE_1C_8B} ${IMG_RGB_3C_8B}"
+
+#
+# Test a simple convert-like command.
+#
+# f_test_convert command infile outfile
+f_test_convert ()
+{ 
+  command=$1
+  infile=$2
+  outfile=$3
+  rm -f $outfile
+  echo "$MEMCHECK $command $infile $outfile"
+  eval $MEMCHECK $command $infile $outfile
+  status=$?
+  if [ $status != 0 ] ; then
+    echo "Returned failed status $status!"
+    echo "Output (if any) is in \"${outfile}\"."
+    exit $status
+  fi
+}
+
+#
+# Test a simple command which sends output to stdout
+#
+# f_test_stdout command infile outfile
+f_test_stdout ()
+{ 
+  command=$1
+  infile=$2
+  outfile=$3
+  rm -f $outfile
+  echo "$MEMCHECK $command $infile > $outfile"
+  eval $MEMCHECK $command $infile > $outfile
+  status=$?
+  if [ $status != 0 ] ; then
+    echo "Returned failed status $status!"
+    echo "Output (if any) is in \"${outfile}\"."
+    exit $status
+  fi
+}
+
+#
+# Execute a simple command (e.g. tiffinfo) with one input file
+#
+# f_test_exec command infile
+f_test_reader ()
+{ 
+  command=$1
+  infile=$2
+  echo "$MEMCHECK $command $infile"
+  eval $MEMCHECK $command $infile
+  status=$?
+  if [ $status != 0 ] ; then
+    echo "Returned failed status $status!"
+    exit $status
+  fi
+}
+
+#
+# Execute tiffinfo on a specified file to validate it
+#
+# f_tiffinfo_validate infile
+f_tiffinfo_validate ()
+{
+    f_test_reader "$TIFFINFO -D" $1
+}
+
+if test "$VERBOSE" = TRUE
+then
+  set -x
+fi
+
diff --git a/src/tiff/test/custom_dir.c b/src/tiff/test/custom_dir.c
new file mode 100644 (file)
index 0000000..5e6e60c
--- /dev/null
@@ -0,0 +1,247 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2012, Frank Warmerdam <warmerdam@pobox.com>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * OF THIS SOFTWARE.
+ */
+
+/*
+ * TIFF Library
+ *
+ * Module to handling of custom directories like EXIF.
+ */
+
+#include "tif_config.h"
+#include <stdio.h>
+#include <string.h>
+
+#ifdef HAVE_UNISTD_H 
+# include <unistd.h> 
+#endif 
+
+#include "tiffio.h"
+#include "tif_dir.h"
+#include "tifftest.h"
+
+static const char filename[] = "custom_dir.tif";
+
+#define        SPP     3               /* Samples per pixel */
+const uint16   width = 1;
+const uint16   length = 1;
+const uint16   bps = 8;
+const uint16   photometric = PHOTOMETRIC_RGB;
+const uint16   rows_per_strip = 1;
+const uint16   planarconfig = PLANARCONFIG_CONTIG;
+
+static TIFFField
+customFields[] = {
+       { TIFFTAG_IMAGEWIDTH, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Custom1", NULL },
+       { TIFFTAG_DOTRANGE, -1, -1, TIFF_ASCII, 0, TIFF_SETGET_ASCII, TIFF_SETGET_UNDEFINED, FIELD_CUSTOM, 1, 0, "Custom2", NULL },
+};
+
+static TIFFFieldArray customFieldArray = { tfiatOther, 0, 2, customFields };
+
+int
+main()
+{
+       TIFF            *tif;
+       unsigned char   buf[SPP] = { 0, 127, 255 };
+       uint64          dir_offset = 0, dir_offset2 = 0;
+       uint64          read_dir_offset = 0, read_dir_offset2 = 0;
+       uint64          *dir_offset2_ptr = NULL;
+       char           *ascii_value;
+       uint16          count16 = 0;
+       
+
+       /* We write the main directory as a simple image. */
+       tif = TIFFOpen(filename, "w+");
+       if (!tif) {
+               fprintf (stderr, "Can't create test TIFF file %s.\n", filename);
+               return 1;
+       }
+
+       if (!TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, width)) {
+               fprintf (stderr, "Can't set ImageWidth tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_IMAGELENGTH, length)) {
+               fprintf (stderr, "Can't set ImageLength tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, bps)) {
+               fprintf (stderr, "Can't set BitsPerSample tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, SPP)) {
+               fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rows_per_strip)) {
+               fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_PLANARCONFIG, planarconfig)) {
+               fprintf (stderr, "Can't set PlanarConfiguration tag.\n");
+               goto failure;
+       }
+       if (!TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, photometric)) {
+               fprintf (stderr, "Can't set PhotometricInterpretation tag.\n");
+               goto failure;
+       }
+
+       /* Write dummy pixel data. */
+       if (!TIFFWriteScanline(tif, buf, 0, 0) < 0) {
+               fprintf (stderr, "Can't write image data.\n");
+               goto failure;
+       }
+
+        if (!TIFFWriteDirectory( tif )) {
+               fprintf (stderr, "TIFFWriteDirectory() failed.\n");
+               goto failure;
+       }
+
+       /* 
+        * Now create an EXIF directory. 
+        */
+       if (TIFFCreateEXIFDirectory(tif) != 0) {
+               fprintf (stderr, "TIFFCreateEXIFDirectory() failed.\n" );
+               goto failure;
+       }
+
+       if (!TIFFSetField( tif, EXIFTAG_SPECTRALSENSITIVITY, "EXIF Spectral Sensitivity")) {
+               fprintf (stderr, "Can't write SPECTRALSENSITIVITY\n" );
+               goto failure;
+       }               
+       
+        if (!TIFFWriteCustomDirectory( tif, &dir_offset )) {
+               fprintf (stderr, "TIFFWriteCustomDirectory() with EXIF failed.\n");
+               goto failure;
+       }
+
+       /*
+        * Now create a custom directory with tags that conflict with mainline 
+        * TIFF tags.
+        */
+       
+       TIFFFreeDirectory( tif );
+       if (TIFFCreateCustomDirectory(tif, &customFieldArray) != 0) {
+               fprintf (stderr, "TIFFCreateEXIFDirectory() failed.\n" );
+               goto failure;
+       }
+
+       if (!TIFFSetField( tif, TIFFTAG_IMAGEWIDTH, "*Custom1")) { /* not really IMAGEWIDTH */
+               fprintf (stderr, "Can't write pseudo-IMAGEWIDTH.\n" );
+               goto failure;
+       }               
+       
+       if (!TIFFSetField( tif, TIFFTAG_DOTRANGE, "*Custom2")) { /* not really DOTWIDTH */
+               fprintf (stderr, "Can't write pseudo-DOTWIDTH.\n" );
+               goto failure;
+       }               
+       
+        if (!TIFFWriteCustomDirectory( tif, &dir_offset2 )) {
+               fprintf (stderr, "TIFFWriteCustomDirectory() with EXIF failed.\n");
+               goto failure;
+       }
+
+       /*
+        * Go back to the first directory, and add the EXIFIFD pointer. 
+        */
+       TIFFSetDirectory(tif, 0);
+       TIFFSetField(tif, TIFFTAG_EXIFIFD, dir_offset );
+       TIFFSetField(tif, TIFFTAG_SUBIFD, 1, &dir_offset2 );
+
+       TIFFClose(tif);
+       
+       /* Ok, now test whether we can read written values in the EXIF directory. */
+       tif = TIFFOpen(filename, "r");
+       
+       TIFFGetField(tif, TIFFTAG_EXIFIFD, &read_dir_offset );
+       if( read_dir_offset != dir_offset ) {
+               fprintf (stderr, "Did not get expected EXIFIFD.\n" );
+               goto failure;
+       }
+
+       TIFFGetField(tif, TIFFTAG_SUBIFD, &count16, &dir_offset2_ptr );
+       read_dir_offset2 = dir_offset2_ptr[0];
+       if( read_dir_offset2 != dir_offset2 || count16 != 1) {
+               fprintf (stderr, "Did not get expected SUBIFD.\n" );
+               goto failure;
+       }
+
+       if( !TIFFReadEXIFDirectory(tif, read_dir_offset) ) {
+               fprintf (stderr, "TIFFReadEXIFDirectory() failed.\n" );
+               goto failure;
+       }
+       
+       if (!TIFFGetField( tif, EXIFTAG_SPECTRALSENSITIVITY, &ascii_value) ) {
+               fprintf (stderr, "reading SPECTRALSENSITIVITY failed.\n" );
+               goto failure;
+       }
+
+       if( strcmp(ascii_value,"EXIF Spectral Sensitivity") != 0) {
+               fprintf (stderr, "got wrong SPECTRALSENSITIVITY value.\n" );
+               goto failure;
+       }
+
+       /* Try reading the Custom directory */
+       
+       if( !TIFFReadCustomDirectory(tif, read_dir_offset2, &customFieldArray) ) {
+               fprintf (stderr, "TIFFReadCustomDirectory() failed.\n" );
+               goto failure;
+       }
+       
+       if (!TIFFGetField( tif, TIFFTAG_IMAGEWIDTH, &ascii_value) ) {
+               fprintf (stderr, "reading pseudo-IMAGEWIDTH failed.\n" );
+               goto failure;
+       }
+
+       if( strcmp(ascii_value,"*Custom1") != 0) {
+               fprintf (stderr, "got wrong pseudo-IMAGEWIDTH value.\n" );
+               goto failure;
+       }
+
+       if (!TIFFGetField( tif, TIFFTAG_DOTRANGE, &ascii_value) ) {
+               fprintf (stderr, "reading pseudo-DOTRANGE failed.\n" );
+               goto failure;
+       }
+
+       if( strcmp(ascii_value,"*Custom2") != 0) {
+               fprintf (stderr, "got wrong pseudo-DOTRANGE value.\n" );
+               goto failure;
+       }
+
+       TIFFClose(tif);
+       
+       /* All tests passed; delete file and exit with success status. */
+       unlink(filename);
+       return 0;
+
+failure:
+       /* 
+        * Something goes wrong; close file and return unsuccessful status.
+        * Do not remove the file for further manual investigation.
+        */
+       TIFFClose(tif);
+       return 1;
+}
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/tiff/test/gif2tiff.sh b/src/tiff/test/gif2tiff.sh
new file mode 100755 (executable)
index 0000000..6bf9a12
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_PALETTE_1C_8B_GIF"
+outfile="o-gif2tiff.tiff"
+f_test_convert "$GIF2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/images/README.txt b/src/tiff/test/images/README.txt
new file mode 100644 (file)
index 0000000..17f6292
--- /dev/null
@@ -0,0 +1,29 @@
+The test files in this directory mostly have dimension 157x151.
+The naming convention is
+
+   photometric-channels-bits.tiff
+
+minisblack-1c-16b.tiff
+minisblack-1c-8b.tiff
+miniswhite-1c-1b.tiff
+palette-1c-1b.tiff
+palette-1c-4b.tiff
+palette-1c-8b.tiff
+rgb-3c-16b.tiff
+rgb-3c-8b.tiff
+
+logluv-3c-16b.tiff: logluv compression/photometric interp
+minisblack-2c-8b-alpha.tiff: grey+alpha
+
+BMP files (anchient BMPv2 since v3 does not work):
+
+  palette-1c-8b.bmp
+  rgb-3c-8b.bmp
+
+GIF files (anchient GIF '87 since modern GIF does not work):
+  palette-1c-8b.gif
+
+PNM files:
+  minisblack-1c-8b.pgm
+  miniswhite-1c-1b.pbm
+  rgb-3c-8b.ppm
diff --git a/src/tiff/test/images/logluv-3c-16b.tiff b/src/tiff/test/images/logluv-3c-16b.tiff
new file mode 100644 (file)
index 0000000..d43680f
Binary files /dev/null and b/src/tiff/test/images/logluv-3c-16b.tiff differ
diff --git a/src/tiff/test/images/minisblack-1c-16b.tiff b/src/tiff/test/images/minisblack-1c-16b.tiff
new file mode 100644 (file)
index 0000000..a8dbae7
Binary files /dev/null and b/src/tiff/test/images/minisblack-1c-16b.tiff differ
diff --git a/src/tiff/test/images/minisblack-1c-8b.pgm b/src/tiff/test/images/minisblack-1c-8b.pgm
new file mode 100644 (file)
index 0000000..0faca40
Binary files /dev/null and b/src/tiff/test/images/minisblack-1c-8b.pgm differ
diff --git a/src/tiff/test/images/minisblack-1c-8b.tiff b/src/tiff/test/images/minisblack-1c-8b.tiff
new file mode 100644 (file)
index 0000000..ea0f9ac
Binary files /dev/null and b/src/tiff/test/images/minisblack-1c-8b.tiff differ
diff --git a/src/tiff/test/images/minisblack-2c-8b-alpha.tiff b/src/tiff/test/images/minisblack-2c-8b-alpha.tiff
new file mode 100644 (file)
index 0000000..5fe8f58
Binary files /dev/null and b/src/tiff/test/images/minisblack-2c-8b-alpha.tiff differ
diff --git a/src/tiff/test/images/miniswhite-1c-1b.pbm b/src/tiff/test/images/miniswhite-1c-1b.pbm
new file mode 100644 (file)
index 0000000..6cff929
Binary files /dev/null and b/src/tiff/test/images/miniswhite-1c-1b.pbm differ
diff --git a/src/tiff/test/images/miniswhite-1c-1b.tiff b/src/tiff/test/images/miniswhite-1c-1b.tiff
new file mode 100644 (file)
index 0000000..bfc0838
Binary files /dev/null and b/src/tiff/test/images/miniswhite-1c-1b.tiff differ
diff --git a/src/tiff/test/images/palette-1c-1b.tiff b/src/tiff/test/images/palette-1c-1b.tiff
new file mode 100644 (file)
index 0000000..25a1a32
Binary files /dev/null and b/src/tiff/test/images/palette-1c-1b.tiff differ
diff --git a/src/tiff/test/images/palette-1c-4b.tiff b/src/tiff/test/images/palette-1c-4b.tiff
new file mode 100644 (file)
index 0000000..38ba325
Binary files /dev/null and b/src/tiff/test/images/palette-1c-4b.tiff differ
diff --git a/src/tiff/test/images/palette-1c-8b.bmp b/src/tiff/test/images/palette-1c-8b.bmp
new file mode 100644 (file)
index 0000000..215f4c5
Binary files /dev/null and b/src/tiff/test/images/palette-1c-8b.bmp differ
diff --git a/src/tiff/test/images/palette-1c-8b.gif b/src/tiff/test/images/palette-1c-8b.gif
new file mode 100644 (file)
index 0000000..f83dfa3
Binary files /dev/null and b/src/tiff/test/images/palette-1c-8b.gif differ
diff --git a/src/tiff/test/images/palette-1c-8b.tiff b/src/tiff/test/images/palette-1c-8b.tiff
new file mode 100644 (file)
index 0000000..b87685a
Binary files /dev/null and b/src/tiff/test/images/palette-1c-8b.tiff differ
diff --git a/src/tiff/test/images/quad-tile.jpg.tiff b/src/tiff/test/images/quad-tile.jpg.tiff
new file mode 100644 (file)
index 0000000..99b0bc2
Binary files /dev/null and b/src/tiff/test/images/quad-tile.jpg.tiff differ
diff --git a/src/tiff/test/images/rgb-3c-16b.tiff b/src/tiff/test/images/rgb-3c-16b.tiff
new file mode 100644 (file)
index 0000000..f1a0279
Binary files /dev/null and b/src/tiff/test/images/rgb-3c-16b.tiff differ
diff --git a/src/tiff/test/images/rgb-3c-8b.bmp b/src/tiff/test/images/rgb-3c-8b.bmp
new file mode 100644 (file)
index 0000000..e6a86dc
Binary files /dev/null and b/src/tiff/test/images/rgb-3c-8b.bmp differ
diff --git a/src/tiff/test/images/rgb-3c-8b.ppm b/src/tiff/test/images/rgb-3c-8b.ppm
new file mode 100644 (file)
index 0000000..6eca035
Binary files /dev/null and b/src/tiff/test/images/rgb-3c-8b.ppm differ
diff --git a/src/tiff/test/images/rgb-3c-8b.tiff b/src/tiff/test/images/rgb-3c-8b.tiff
new file mode 100644 (file)
index 0000000..f64d404
Binary files /dev/null and b/src/tiff/test/images/rgb-3c-8b.tiff differ
index d6d37464b5d45ccc544168f4c2819d277de95744..5efcb824198198ef2039afb3eb2c08bf9740e1a0 100644 (file)
@@ -60,8 +60,10 @@ int
 main(int argc, char **argv)
 {
        TIFF            *tif;
-       int             i;
+       unsigned int    i;
        unsigned char   buf[3] = { 0, 127, 255 };
+        (void) argc;
+        (void) argv;
 
        /* Test whether we can write tags. */
        tif = TIFFOpen(filename, "w");
diff --git a/src/tiff/test/ppm2tiff_pbm.sh b/src/tiff/test/ppm2tiff_pbm.sh
new file mode 100755 (executable)
index 0000000..68d9e45
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_MINISWHITE_1C_1B_PBM"
+outfile="o-ppm2tiff_pbm.tiff"
+f_test_convert "$PPM2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/ppm2tiff_pgm.sh b/src/tiff/test/ppm2tiff_pgm.sh
new file mode 100755 (executable)
index 0000000..001ec70
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_MINISBLACK_1C_8B_PGM"
+outfile="o-ppm2tiff_pgm.tiff"
+f_test_convert "$PPM2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/ppm2tiff_ppm.sh b/src/tiff/test/ppm2tiff_ppm.sh
new file mode 100755 (executable)
index 0000000..8a81527
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$IMG_RGB_3C_8B_PPM"
+outfile="o-ppm2tiff_ppm.tiff"
+f_test_convert "$PPM2TIFF" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/raw_decode.c b/src/tiff/test/raw_decode.c
new file mode 100644 (file)
index 0000000..ce9e8f2
--- /dev/null
@@ -0,0 +1,254 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2012, Frank Warmerdam <warmerdam@pobox.com>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * OF THIS SOFTWARE.
+ */
+
+/*
+ * TIFF Library
+ *
+ * The objective of this test suite is to test the JPEGRawDecode() 
+ * interface via TIFReadEncodedTile().  This function with YCbCr subsampling
+ * is a frequent source of bugs. 
+ */
+
+#include "tif_config.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H 
+# include <unistd.h> 
+#endif 
+
+#include "tiffio.h"
+
+#include "jpeglib.h" /* Needed for JPEG_LIB_VERSION */
+
+static unsigned char cluster_0[] = { 0, 0, 2, 0, 138, 139 };
+static unsigned char cluster_64[] = { 0, 0, 9, 6, 134, 119 };
+static unsigned char cluster_128[] = { 44, 40, 63, 59, 230, 95 };
+
+static int check_cluster( int cluster, unsigned char *buffer, unsigned char *expected_cluster ) {
+       unsigned char *target = buffer + cluster*6;
+
+       if (memcmp(target, expected_cluster, 6) == 0) {
+               return 0;
+       }
+
+       fprintf( stderr, "Cluster %d did not match expected results.\n", cluster );
+       fprintf( stderr, 
+                "Expect: %3d %3d   %3d   %3d\n"
+                "        %3d %3d\n", 
+                expected_cluster[0], expected_cluster[1],
+                expected_cluster[4], expected_cluster[5],
+                expected_cluster[2], expected_cluster[3] );
+       fprintf( stderr, 
+                "   Got: %3d %3d   %3d   %3d\n"
+                "        %3d %3d\n", 
+                target[0], target[1], 
+                target[4], target[5],
+                target[2], target[3] );
+       return 1;
+}
+
+static int check_rgb_pixel( int pixel, int red, int green, int blue, unsigned char *buffer ) {
+       unsigned char *rgb = buffer + 3 * pixel;
+       
+       if( rgb[0] == red && rgb[1] == green && rgb[2] == blue ) {
+               return 0;
+       }
+
+       fprintf( stderr, "Pixel %d did not match expected results.\n", pixel );
+       fprintf( stderr, "Expect: %3d %3d %3d\n", red, green, blue );
+       fprintf( stderr, "   Got: %3d %3d %3d\n", rgb[0], rgb[1], rgb[2] );
+       return 1;
+}
+
+static int check_rgba_pixel( int pixel, int red, int green, int blue, int alpha, uint32 *buffer ) {
+       /* RGBA images are upside down - adjust for normal ordering */
+       int adjusted_pixel = pixel % 128 + (127 - (pixel/128)) * 128;
+       uint32 rgba = buffer[adjusted_pixel];
+
+       if( TIFFGetR(rgba) == (uint32) red && TIFFGetG(rgba) == (uint32) green &&
+           TIFFGetB(rgba) == (uint32) blue && TIFFGetA(rgba) == (uint32) alpha ) {
+               return 0;
+       }
+
+       fprintf( stderr, "Pixel %d did not match expected results.\n", pixel );
+       fprintf( stderr, "Expect: %3d %3d %3d %3d\n", red, green, blue, alpha );
+       fprintf( stderr, "   Got: %3d %3d %3d %3d\n",
+                TIFFGetR(rgba), TIFFGetG(rgba), TIFFGetB(rgba), TIFFGetA(rgba) );
+       return 1;
+}
+
+int
+main(int argc, char **argv)
+{
+       TIFF            *tif;
+       static const char *srcfilerel = "images/quad-tile.jpg.tiff";
+       char *srcdir = NULL;
+       char srcfile[1024];
+       unsigned short h, v;
+       int status;
+       unsigned char *buffer;
+       uint32 *rgba_buffer;
+       tsize_t sz, szout;
+       unsigned int pixel_status = 0;
+
+        (void) argc;
+        (void) argv;
+
+       if ((srcdir = getenv("srcdir")) == NULL) {
+               srcdir = ".";
+       }
+       if ((strlen(srcdir) + 1 + strlen(srcfilerel)) >= sizeof(srcfile)) {
+               fprintf( stderr, "srcdir too long %s\n", srcdir);
+               exit( 1 );
+       }
+       strcpy(srcfile,srcdir);
+       strcat(srcfile,"/");
+       strcat(srcfile,srcfilerel);
+
+       tif = TIFFOpen(srcfile,"r");
+       if ( tif == NULL ) {
+               fprintf( stderr, "Could not open %s\n", srcfile);
+               exit( 1 );
+       }
+
+       status = TIFFGetField(tif,TIFFTAG_YCBCRSUBSAMPLING, &h, &v);
+       if ( status == 0 || h != 2 || v != 2) {
+               fprintf( stderr, "Could not retrieve subsampling tag.\n" );
+               exit(1);
+       }
+
+       /*
+        * What is the appropriate size of a YCbCr encoded tile?
+        */
+       sz = TIFFTileSize(tif);
+       if( sz != 24576) {
+               fprintf(stderr, "tiles are %d bytes\n", (int)sz);
+               exit(1);
+       }
+
+       buffer = (unsigned char *) malloc(sz);
+
+       /*
+        * Read a tile in decompressed form, but still YCbCr subsampled.
+        */
+       szout = TIFFReadEncodedTile(tif,9,buffer,sz);
+       if (szout != sz) {
+               fprintf( stderr, 
+                        "Did not get expected result code from TIFFReadEncodedTile()(%d instead of %d)\n", 
+                        (int) szout, (int) sz );
+               return 1;
+       }
+
+       if( check_cluster( 0, buffer, cluster_0 )
+           || check_cluster( 64, buffer, cluster_64 )
+           || check_cluster( 128, buffer, cluster_128 ) ) {
+               exit(1);
+       }
+       free(buffer);
+
+       /*
+        * Read a tile using the built-in conversion to RGB format provided by the JPEG library.
+        */
+       TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+
+       sz = TIFFTileSize(tif);
+       if( sz != 128*128*3) {
+               fprintf(stderr, "tiles are %d bytes\n", (int)sz);
+               exit(1);
+       }
+
+       buffer = (unsigned char *) malloc(sz);
+
+       szout = TIFFReadEncodedTile(tif,9,buffer,sz);
+       if (szout != sz) {
+               fprintf( stderr, 
+                        "Did not get expected result code from TIFFReadEncodedTile()(%d instead of %d)\n", 
+                        (int) szout, (int) sz );
+               return 1;
+       }
+
+#if JPEG_LIB_VERSION >= 70
+       pixel_status |= check_rgb_pixel( 0, 18, 0, 41, buffer );
+       pixel_status |= check_rgb_pixel( 64, 0, 0, 0, buffer );
+       pixel_status |= check_rgb_pixel( 512, 5, 34, 196, buffer );
+#else
+       pixel_status |= check_rgb_pixel( 0, 15, 0, 18, buffer );
+       pixel_status |= check_rgb_pixel( 64, 0, 0, 2, buffer );
+       pixel_status |= check_rgb_pixel( 512, 6, 36, 182, buffer );
+#endif
+
+       free( buffer );
+
+       TIFFClose(tif);
+
+       /*
+        * Reopen and test reading using the RGBA interface.
+        */
+       tif = TIFFOpen(srcfile,"r");
+       
+       sz = 128 * 128 * sizeof(uint32);
+       rgba_buffer = (uint32 *) malloc(sz);
+       
+       if (!TIFFReadRGBATile( tif, 1*128, 2*128, rgba_buffer )) {
+               fprintf( stderr, "TIFFReadRGBATile() returned failure code.\n" );
+               return 1;
+       }
+
+       /*
+        * Currently TIFFReadRGBATile() just uses JPEGCOLORMODE_RGB so this
+        * trivally matches the last results.  Eventually we should actually
+        * accomplish it from the YCbCr subsampled buffer ourselves in which
+        * case the results may be subtly different but similar.
+        */
+#if JPEG_LIB_VERSION >= 70
+       pixel_status |= check_rgba_pixel( 0, 18, 0, 41, 255, rgba_buffer );
+       pixel_status |= check_rgba_pixel( 64, 0, 0, 0, 255, rgba_buffer );
+       pixel_status |= check_rgba_pixel( 512, 5, 34, 196, 255, rgba_buffer );
+#else
+       pixel_status |= check_rgba_pixel( 0, 15, 0, 18, 255, rgba_buffer );
+       pixel_status |= check_rgba_pixel( 64, 0, 0, 2, 255, rgba_buffer );
+       pixel_status |= check_rgba_pixel( 512, 6, 36, 182, 255, rgba_buffer );
+#endif
+
+       free( rgba_buffer );
+       TIFFClose(tif);
+
+       if (pixel_status) {
+               exit(1);
+       }
+       
+       exit( 0 );
+}
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/test/rewrite_tag.c b/src/tiff/test/rewrite_tag.c
new file mode 100644 (file)
index 0000000..187ae11
--- /dev/null
@@ -0,0 +1,346 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2007, Frank Warmerdam <warmerdam@pobox.com>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * OF THIS SOFTWARE.
+ */
+
+/*
+ * TIFF Library
+ *
+ * Module to test _TIFFRewriteField().
+ */
+
+#include "tif_config.h"
+
+#include <stdio.h>
+
+#ifdef HAVE_UNISTD_H 
+# include <unistd.h> 
+#endif 
+
+#include "tiffio.h"
+#include "tiffiop.h"
+
+const uint32   width = 10;
+const uint32   length = 40;
+const uint32   rows_per_strip = 1;
+
+int test_packbits()
+
+{
+    TIFF           *tif;
+    int             i;
+    unsigned char   buf[10] = {0,0,0,0,0,0,0,0,0,0};
+
+    int  length = 20;
+    const char *filename = "test_packbits.tif";
+
+    /* Test whether we can write tags. */
+    tif = TIFFOpen(filename, "w");
+
+    if (!tif) {
+        fprintf (stderr, "Can't create test TIFF file %s.\n", filename);
+        return 1;
+    }
+
+    if (!TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_PACKBITS)) {
+        fprintf (stderr, "Can't set Compression tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, width)) {
+        fprintf (stderr, "Can't set ImageWidth tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_IMAGELENGTH, length)) {
+        fprintf (stderr, "Can't set ImageLength tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8)) {
+        fprintf (stderr, "Can't set BitsPerSample tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1)) {
+        fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rows_per_strip)) {
+        fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG)) {
+        fprintf (stderr, "Can't set PlanarConfiguration tag.\n");
+        goto failure;
+    }
+
+    for (i = 0; i < length; i++ )
+    {
+        if( !TIFFWriteEncodedStrip( tif, i, buf, 10 ) )
+        {
+            fprintf (stderr, "Can't write image data.\n");
+            goto failure;
+        }
+    }
+
+    TIFFClose(tif);
+
+    /* Test whether we can write tags. */
+
+    tif = TIFFOpen(filename, "r+");
+
+    if (!tif) {
+        fprintf (stderr, "Can't create test TIFF file %s.\n", filename);
+        return 1;
+    }
+
+    buf[3] = 17;
+    buf[6] = 12;
+
+    if( !TIFFWriteEncodedStrip( tif, 6, buf, 10 ) )
+    {
+        fprintf (stderr, "Can't write image data.\n");
+        goto failure;
+    }
+
+    TIFFClose(tif);
+
+    unlink(filename);
+
+    return 0;
+
+  failure:
+    /* Something goes wrong; close file and return unsuccessful status. */
+    TIFFClose(tif);
+    /*  unlink(filename); */
+
+    return 1;
+    
+}
+
+/************************************************************************/
+/*                            rewrite_test()                            */
+/************************************************************************/
+int rewrite_test( const char *filename, int length, int bigtiff, 
+                  uint64 base_value )
+
+{
+    TIFF               *tif;
+    int                        i;
+    unsigned char      buf[10] = {5,6,7,8,9,10,11,12,13,14};
+    uint64             *rowoffset, *rowbytes;
+    uint64             *upd_rowoffset;
+    uint64             *upd_bytecount;
+
+    /* Test whether we can write tags. */
+    if( bigtiff )
+        tif = TIFFOpen(filename, "w8");
+    else
+        tif = TIFFOpen(filename, "w4");
+
+    if (!tif) {
+        fprintf (stderr, "Can't create test TIFF file %s.\n", filename);
+        return 1;
+    }
+
+    if (!TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_PACKBITS)) {
+        fprintf (stderr, "Can't set Compression tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, width)) {
+        fprintf (stderr, "Can't set ImageWidth tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_IMAGELENGTH, length)) {
+        fprintf (stderr, "Can't set ImageLength tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8)) {
+        fprintf (stderr, "Can't set BitsPerSample tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1)) {
+        fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rows_per_strip)) {
+        fprintf (stderr, "Can't set SamplesPerPixel tag.\n");
+        goto failure;
+    }
+    if (!TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG)) {
+        fprintf (stderr, "Can't set PlanarConfiguration tag.\n");
+        goto failure;
+    }
+
+    for (i = 0; i < length; i++ )
+    {
+        if( !TIFFWriteScanline( tif, buf, i, 0 ) )
+        {
+            fprintf (stderr, "Can't write image data.\n");
+            goto failure;
+        }
+    }
+
+    TIFFClose(tif);
+       
+    /* Ok, now test whether we can read written values. */
+    tif = TIFFOpen(filename, "r+");
+    if (!tif) {
+        fprintf (stderr, "Can't open test TIFF file %s.\n", filename);
+        return 1;
+    }
+        
+    if( !TIFFGetField( tif, TIFFTAG_STRIPOFFSETS, &rowoffset ) )
+    {
+        fprintf (stderr, "Can't fetch STRIPOFFSETS.\n");
+        goto failure;
+    }
+        
+    if( !TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &rowbytes ) )
+    {
+        fprintf (stderr, "Can't fetch STRIPBYTECOUNTS.\n");
+        goto failure;
+    }
+
+    upd_rowoffset = (uint64 *) _TIFFmalloc(sizeof(uint64) * length);
+    for( i = 0; i < length; i++ )
+        upd_rowoffset[i] = base_value + i*10;
+
+    if( !_TIFFRewriteField( tif, TIFFTAG_STRIPOFFSETS, TIFF_LONG8, 
+                            length, upd_rowoffset ) )
+    {
+        fprintf (stderr, "Can't rewrite STRIPOFFSETS.\n");
+        goto failure;
+    }
+
+    _TIFFfree( upd_rowoffset );
+
+    upd_bytecount = (uint64 *) _TIFFmalloc(sizeof(uint64) * length);
+    for( i = 0; i < length; i++ )
+        upd_bytecount[i] = 100 + i*10;
+
+    if( !_TIFFRewriteField( tif, TIFFTAG_STRIPBYTECOUNTS, TIFF_LONG8, 
+                            length, upd_bytecount ) )
+    {
+        fprintf (stderr, "Can't rewrite STRIPBYTECOUNTS.\n");
+        goto failure;
+    }
+
+    _TIFFfree( upd_bytecount );
+
+    TIFFClose(tif);
+
+    /* Reopen file and read back to verify contents */
+
+    tif = TIFFOpen(filename, "r");
+    if (!tif) {
+        fprintf (stderr, "Can't open test TIFF file %s.\n", filename);
+        return 1;
+    }
+        
+    if( !TIFFGetField( tif, TIFFTAG_STRIPOFFSETS, &rowoffset ) )
+    {
+        fprintf (stderr, "Can't fetch STRIPOFFSETS.\n");
+        goto failure;
+    }
+        
+    for( i = 0; i < length; i++ )
+    {
+        uint64 expect = base_value + i*10;
+
+        if( rowoffset[i] != expect )
+        {
+            fprintf( stderr, 
+                     "%s:STRIPOFFSETS[%d]: Got %X:%08X instead of %X:%08X.\n",
+                     filename, i, 
+                     (int) (rowoffset[i] >> 32), 
+                     (int) (rowoffset[i]&0xFFFFFFFF), 
+                     (int) (expect >> 32), 
+                     (int) (expect & 0xFFFFFFFF) );
+            goto failure;
+        }
+    }
+
+    if( !TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &rowbytes ) )
+    {
+        fprintf (stderr, "Can't fetch STRIPBYTECOUNTS.\n");
+        goto failure;
+    }
+        
+    for( i = 0; i < length; i++ )
+    {
+        uint64 expect = 100 + i*10;
+
+        if( rowbytes[i] != expect )
+        {
+            fprintf( stderr, 
+                     "%s:STRIPBYTECOUNTS[%d]: Got %X:%08X instead of %X:%08X.\n",
+                     filename, i, 
+                     (int) (rowbytes[i] >> 32), 
+                     (int) (rowbytes[i] & 0xFFFFFFFF), 
+                     (int) (expect >> 32), 
+                     (int) (expect & 0xFFFFFFFF) );
+            goto failure;
+        }
+    }
+
+    TIFFClose( tif );
+
+    /* All tests passed; delete file and exit with success status. */
+    unlink(filename);
+    return 0;
+
+  failure:
+    /* Something goes wrong; close file and return unsuccessful status. */
+    TIFFClose(tif);
+    /*  unlink(filename); */
+
+    return 1;
+    
+}
+
+/************************************************************************/
+/*                                main()                                */
+/************************************************************************/
+int
+main(int argc, char **argv)
+{
+    (void) argc;
+    (void) argv;
+    int failure = 0;
+
+    failure |= test_packbits();
+
+    /* test fairly normal use */
+    failure |= rewrite_test( "rewrite1.tif", 10, 0, 100 );
+    failure |= rewrite_test( "rewrite2.tif", 10, 1, 100 );
+
+    /* test case of fitting all in directory entry */
+    failure |= rewrite_test( "rewrite3.tif", 1, 0, 100 );
+    failure |= rewrite_test( "rewrite4.tif", 1, 1, 100 );
+
+    /* test with very large values that don't fit in 4bytes (bigtiff only) */
+    failure |= rewrite_test( "rewrite5.tif", 1000, 1, 0x6000000000ULL );
+    failure |= rewrite_test( "rewrite6.tif", 1, 1, 0x6000000000ULL );
+
+    return failure;
+}
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
index c8daeca68cf55e4adc46bea013c4f904db6d1cb3..1159bf228bbdf99d98283b8e51e8b0b09acc879d 100644 (file)
 #endif 
 
 #include "tiffio.h"
+#include "tifftest.h"
 
-extern int CheckShortField(TIFF *, ttag_t, uint16);
-
-const char     *filename = "short_test.tiff";
+static const char filename[] = "short_test.tiff";
 
 #define        SPP     3               /* Samples per pixel */
 const uint16   width = 1;
@@ -51,30 +50,39 @@ const uint16        photometric = PHOTOMETRIC_RGB;
 const uint16   rows_per_strip = 1;
 const uint16   planarconfig = PLANARCONFIG_CONTIG;
 
-static struct SingleTags {
-       ttag_t          tag;
-       uint16          value;
+static const struct {
+       const ttag_t    tag;
+       const uint16    value;
 } short_single_tags[] = {
        { TIFFTAG_COMPRESSION, COMPRESSION_NONE },
        { TIFFTAG_FILLORDER, FILLORDER_MSB2LSB },
        { TIFFTAG_ORIENTATION, ORIENTATION_BOTRIGHT },
        { TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH },
-       { TIFFTAG_INKSET, INKSET_MULTIINK },
        { TIFFTAG_MINSAMPLEVALUE, 23 },
        { TIFFTAG_MAXSAMPLEVALUE, 241 },
+       { TIFFTAG_INKSET, INKSET_MULTIINK },
        { TIFFTAG_NUMBEROFINKS, SPP },
        { TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT }
-       /*{ TIFFTAG_IMAGEDEPTH, 1 },
-       { TIFFTAG_TILEDEPTH, 1 }*/
 };
 #define NSINGLETAGS   (sizeof(short_single_tags) / sizeof(short_single_tags[0]))
 
+static const struct {
+       const ttag_t    tag;
+       const uint16    values[2];
+} short_paired_tags[] = {
+       { TIFFTAG_PAGENUMBER, {1, 1} },
+       { TIFFTAG_HALFTONEHINTS, {0, 255} },
+       { TIFFTAG_DOTRANGE, {8, 16} },
+       { TIFFTAG_YCBCRSUBSAMPLING, {2, 1} }
+};
+#define NPAIREDTAGS   (sizeof(short_paired_tags) / sizeof(short_paired_tags[0]))
+
 int
-main(int argc, char **argv)
+main()
 {
        TIFF            *tif;
-       int             i;
-       unsigned char   buf[3] = { 0, 127, 255 };
+       size_t          i;
+       unsigned char   buf[SPP] = { 0, 127, 255 };
 
        /* Test whether we can write tags. */
        tif = TIFFOpen(filename, "w");
@@ -115,8 +123,18 @@ main(int argc, char **argv)
        for (i = 0; i < NSINGLETAGS; i++) {
                if (!TIFFSetField(tif, short_single_tags[i].tag,
                                  short_single_tags[i].value)) {
-                       fprintf(stderr, "Can't set tag %d.\n",
-                               (int)short_single_tags[i].tag);
+                       fprintf(stderr, "Can't set tag %lu.\n",
+                               (unsigned long)short_single_tags[i].tag);
+                       goto failure;
+               }
+       }
+
+       for (i = 0; i < NPAIREDTAGS; i++) {
+               if (!TIFFSetField(tif, short_paired_tags[i].tag,
+                                 short_paired_tags[i].values[0],
+                                 short_paired_tags[i].values[1])) {
+                       fprintf(stderr, "Can't set tag %lu.\n",
+                               (unsigned long)short_paired_tags[i].tag);
                        goto failure;
                }
        }
@@ -163,6 +181,12 @@ main(int argc, char **argv)
                        goto failure;
        }
 
+       for (i = 0; i < NPAIREDTAGS; i++) {
+               if (CheckShortPairedField(tif, short_paired_tags[i].tag,
+                                         short_paired_tags[i].values) < 0)
+                       goto failure;
+       }
+
        TIFFClose(tif);
        
        /* All tests passed; delete file and exit with success status. */
@@ -170,9 +194,11 @@ main(int argc, char **argv)
        return 0;
 
 failure:
-       /* Something goes wrong; close file and return unsuccessful status. */
+       /* 
+        * Something goes wrong; close file and return unsuccessful status.
+        * Do not remove the file for further manual investigation.
+        */
        TIFFClose(tif);
-       unlink(filename);
        return 1;
 }
 
index 1dc1aa76a49820d3e1e3c9ebe3dc9f8dd8385afd..e31960bfdafb946be67a53c7b4ff9596edf24dfa 100644 (file)
@@ -174,8 +174,8 @@ openfailure:
 "    ImageWidth=%ld, ImageLength=%ld, RowsPerStrip=%ld, Compression=%d,\n"
 "    BitsPerSample=%d, SamplesPerPixel=%d, SampleFormat=%d,\n"
 "    PlanarConfiguration=%d, PhotometricInterpretation=%d.\n",
-                name, width, length, rowsperstrip, compression,
-                bps, spp, sampleformat, planarconfig,
+                name, (long) width, (long) length, (long) rowsperstrip,
+                 compression, bps, spp, sampleformat, planarconfig,
                 photometric);
        return -1;
 }
@@ -252,8 +252,8 @@ openfailure:
 "    ImageWidth=%ld, ImageLength=%ld, RowsPerStrip=%ld, Compression=%d,\n"
 "    BitsPerSample=%d, SamplesPerPixel=%d, SampleFormat=%d,\n"
 "    PlanarConfiguration=%d, PhotometricInterpretation=%d.\n",
-                name, width, length, rowsperstrip, compression,
-                bps, spp, sampleformat, planarconfig,
+                name, (long) width, (long) length, (long) rowsperstrip,
+                 compression, bps, spp, sampleformat, planarconfig,
                 photometric);
        return -1;
 }
@@ -263,6 +263,7 @@ write_scanlines(TIFF *tif, const tdata_t array, const tsize_t size)
 {
        uint32          length, row;
        tsize_t         scanlinesize, offset;
+        (void) size;
 
        if (!TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &length)) {
                fprintf (stderr, "Can't get tag %d.\n", TIFFTAG_IMAGELENGTH);
@@ -278,7 +279,7 @@ write_scanlines(TIFF *tif, const tdata_t array, const tsize_t size)
        for (offset = 0, row = 0; row < length; offset+=scanlinesize, row++) {
                if (TIFFWriteScanline(tif, (char *)array + offset, row, 0) < 0) {
                        fprintf (stderr,
-                                "Can't write image data at row %lu.\n", row);
+                                "Can't write image data at row %lu.\n", (long) row);
                        return -1;
                }
         }
index 8f2c6008bd1e5c64cde74be9e0b05dbec29334e0..486d234f72d6669a3051f1b1d083c76816077185 100644 (file)
@@ -57,6 +57,8 @@ main(int argc, char **argv)
        uint32          rowsperstrip;
        uint16          compression;
        uint16          spp, bps, photometric, sampleformat, planarconfig;
+        (void) argc;
+        (void) argv;
 
        /* 
         * Test two special cases: image consisting from single line and image
diff --git a/src/tiff/test/tiff2pdf.sh b/src/tiff/test/tiff2pdf.sh
new file mode 100755 (executable)
index 0000000..7669989
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiff2pdf
+#
+. ${srcdir:-.}/common.sh
+f_test_stdout "${TIFF2PDF}" "${IMG_MINISWHITE_1C_1B}" "o-tiff2pdf.pdf"
\ No newline at end of file
diff --git a/src/tiff/test/tiff2ps-EPS1.sh b/src/tiff/test/tiff2ps-EPS1.sh
new file mode 100755 (executable)
index 0000000..ebe6f04
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffps with PostScript Level 1 encapsulated output
+#
+. ${srcdir:-.}/common.sh
+f_test_stdout "${TIFF2PS} -e -1" "${IMG_MINISWHITE_1C_1B}" "o-tiff2ps-EPS1.ps"
\ No newline at end of file
diff --git a/src/tiff/test/tiff2ps-PS1.sh b/src/tiff/test/tiff2ps-PS1.sh
new file mode 100755 (executable)
index 0000000..6592159
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffps with PostScript Level 1 output
+#
+. ${srcdir:-.}/common.sh
+f_test_stdout "${TIFF2PS} -a -p -1" "${IMG_MINISWHITE_1C_1B}" "o-tiff2ps-PS1.ps"
\ No newline at end of file
diff --git a/src/tiff/test/tiff2ps-PS2.sh b/src/tiff/test/tiff2ps-PS2.sh
new file mode 100755 (executable)
index 0000000..2a21606
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffps with PostScript Level 2 output
+#
+. ${srcdir:-.}/common.sh
+f_test_stdout "${TIFF2PS} -a -p -2" "${IMG_MINISWHITE_1C_1B}" "o-tiff2ps-PS2.ps"
\ No newline at end of file
diff --git a/src/tiff/test/tiff2ps-PS3.sh b/src/tiff/test/tiff2ps-PS3.sh
new file mode 100755 (executable)
index 0000000..f9f34b6
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffps with PostScript Level 3 output
+#
+. ${srcdir:-.}/common.sh
+f_test_stdout "${TIFF2PS} -a -p -3" "${IMG_MINISWHITE_1C_1B}" "o-tiff2ps-PS3.ps"
\ No newline at end of file
diff --git a/src/tiff/test/tiff2rgba-logluv-3c-16b.sh b/src/tiff/test/tiff2rgba-logluv-3c-16b.sh
new file mode 100755 (executable)
index 0000000..bc9b311
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/logluv-3c-16b.tiff"
+outfile="o-tiff2rgba-logluv-3c-16b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-minisblack-1c-16b.sh b/src/tiff/test/tiff2rgba-minisblack-1c-16b.sh
new file mode 100755 (executable)
index 0000000..5be7e65
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-16b.tiff"
+outfile="o-tiff2rgba-minisblack-1c-16b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-minisblack-1c-8b.sh b/src/tiff/test/tiff2rgba-minisblack-1c-8b.sh
new file mode 100755 (executable)
index 0000000..ce0507b
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-8b.tiff"
+outfile="o-tiff2rgba-minisblack-1c-8b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-minisblack-2c-8b-alpha.sh b/src/tiff/test/tiff2rgba-minisblack-2c-8b-alpha.sh
new file mode 100755 (executable)
index 0000000..2cbe81d
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-2c-8b-alpha.tiff"
+outfile="o-tiff2rgba-minisblack-2c-8b-alpha.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-miniswhite-1c-1b.sh b/src/tiff/test/tiff2rgba-miniswhite-1c-1b.sh
new file mode 100755 (executable)
index 0000000..3601502
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/miniswhite-1c-1b.tiff"
+outfile="o-tiff2rgba-miniswhite-1c-1b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-palette-1c-1b.sh b/src/tiff/test/tiff2rgba-palette-1c-1b.sh
new file mode 100755 (executable)
index 0000000..091d798
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-1b.tiff"
+outfile="o-tiff2rgba-palette-1c-1b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-palette-1c-4b.sh b/src/tiff/test/tiff2rgba-palette-1c-4b.sh
new file mode 100755 (executable)
index 0000000..ee3898e
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-4b.tiff"
+outfile="o-tiff2rgba-palette-1c-4b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-palette-1c-8b.sh b/src/tiff/test/tiff2rgba-palette-1c-8b.sh
new file mode 100755 (executable)
index 0000000..b1db606
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-8b.tiff"
+outfile="o-tiff2rgba-palette-1c-8b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-quad-tile.jpg.sh b/src/tiff/test/tiff2rgba-quad-tile.jpg.sh
new file mode 100755 (executable)
index 0000000..e921b97
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/quad-tile.jpg.tiff"
+outfile="o-tiff2rgba-quad-tile.jpg.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-rgb-3c-16b.sh b/src/tiff/test/tiff2rgba-rgb-3c-16b.sh
new file mode 100755 (executable)
index 0000000..954eb4f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-16b.tiff"
+outfile="o-tiff2rgba-rgb-3c-16b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiff2rgba-rgb-3c-8b.sh b/src/tiff/test/tiff2rgba-rgb-3c-8b.sh
new file mode 100755 (executable)
index 0000000..24f5cb0
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-8b.tiff"
+outfile="o-tiff2rgba-rgb-3c-8b.tiff"
+f_test_convert "$TIFF2RGBA" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcp-g3-1d-fill.sh b/src/tiff/test/tiffcp-g3-1d-fill.sh
new file mode 100755 (executable)
index 0000000..ee12498
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G3 compression, 1 dimensional
+# encoding, and zero-filled boundaries.
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g3:1d:fill" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g3-1d-fill.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-g3-1d.sh b/src/tiff/test/tiffcp-g3-1d.sh
new file mode 100755 (executable)
index 0000000..c11ef97
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G3 compression and 1 dimensional encoding.
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g3:1d" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g3-1d.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-g3-2d-fill.sh b/src/tiff/test/tiffcp-g3-2d-fill.sh
new file mode 100755 (executable)
index 0000000..c25825d
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G3 compression, 2 dimensional
+# encoding, and zero-filled boundaries.
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g3:2d:fill" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g3-2d-fill.tiff"
diff --git a/src/tiff/test/tiffcp-g3-2d.sh b/src/tiff/test/tiffcp-g3-2d.sh
new file mode 100755 (executable)
index 0000000..5a59dd2
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G3 compression and 2 dimensional encoding.
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g3:2d" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g3-2d.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-g3.sh b/src/tiff/test/tiffcp-g3.sh
new file mode 100755 (executable)
index 0000000..d7a0107
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G3 compression
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g3" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g3.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-g4.sh b/src/tiff/test/tiffcp-g4.sh
new file mode 100755 (executable)
index 0000000..fb8967a
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with G4 compression
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c g4" "${IMG_MINISWHITE_1C_1B}" "o-tiffcp-g4.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-logluv.sh b/src/tiff/test/tiffcp-logluv.sh
new file mode 100755 (executable)
index 0000000..3f62f57
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp with logluv compression
+#
+. ${srcdir:-.}/common.sh
+f_test_convert "${TIFFCP} -c none" "${srcdir}/images/logluv-3c-16b.tiff" "o-tiffcp-logluv-raw.tiff"
+f_test_convert "${TIFFCP} -c sgilog" "o-tiffcp-logluv-raw.tiff" "o-tiffcp-logluv-sgilog.tiff"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-split-join.sh b/src/tiff/test/tiffcp-split-join.sh
new file mode 100755 (executable)
index 0000000..d1e407c
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp + tiffsplit + tiffcp
+#
+# First we use tiffcp to join our test files into a multi-frame TIFF
+# then we use tiffsplit to split them out again, and then we use
+# tiffcp to recombine again.
+
+. ${srcdir:-.}/common.sh
+conjoined=o-tiffcp-split-join-conjoined.tif
+reconjoined=o-tiffcp-split-join-reconjoined.tif
+splitfile=o-tiffcp-split-join-split-
+
+f_test_convert "${TIFFCP}" "${IMG_UNCOMPRESSED}" "${conjoined}"
+f_test_convert "${TIFFSPLIT}" "${conjoined}" "${splitfile}"
+f_test_convert "${TIFFCP}" "${splitfile}*" "${reconjoined}"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-split.sh b/src/tiff/test/tiffcp-split.sh
new file mode 100755 (executable)
index 0000000..a2f98e3
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffcp + tiffsplit
+#
+# First we use tiffcp to join our test files into a multi-frame TIFF
+# and then we use tiffsplit to split them out again.
+#
+. ${srcdir:-.}/common.sh
+conjoined=o-tiffcp-split-conjoined.tif
+splitfile=o-tiffcp-split-split-
+
+f_test_convert "${TIFFCP}" "${IMG_UNCOMPRESSED}" "${conjoined}"
+f_test_convert "${TIFFSPLIT}" "${conjoined}" "${splitfile}"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcp-thumbnail.sh b/src/tiff/test/tiffcp-thumbnail.sh
new file mode 100755 (executable)
index 0000000..789cd80
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# Basic sanity check for thumbnail
+#
+. ${srcdir:-.}/common.sh
+
+outfile1=o-tiffcp-thumbnail-in.tif
+outfile2=o-tiffcp-thumbnail-out.tif
+f_test_convert "${TIFFCP} -c g3:1d" "${IMG_MINISWHITE_1C_1B}" "${outfile1}"
+f_test_convert "${THUMBNAIL}" "${outfile1}" "${outfile2}"
\ No newline at end of file
diff --git a/src/tiff/test/tiffcrop-R90-logluv-3c-16b.sh b/src/tiff/test/tiffcrop-R90-logluv-3c-16b.sh
new file mode 100755 (executable)
index 0000000..9ed219e
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/logluv-3c-16b.tiff"
+outfile="o-tiffcrop-R90-logluv-3c-16b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-minisblack-1c-16b.sh b/src/tiff/test/tiffcrop-R90-minisblack-1c-16b.sh
new file mode 100755 (executable)
index 0000000..faee731
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-16b.tiff"
+outfile="o-tiffcrop-R90-minisblack-1c-16b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-minisblack-1c-8b.sh b/src/tiff/test/tiffcrop-R90-minisblack-1c-8b.sh
new file mode 100755 (executable)
index 0000000..7acd5e7
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-8b.tiff"
+outfile="o-tiffcrop-R90-minisblack-1c-8b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-minisblack-2c-8b-alpha.sh b/src/tiff/test/tiffcrop-R90-minisblack-2c-8b-alpha.sh
new file mode 100755 (executable)
index 0000000..2ef9039
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-2c-8b-alpha.tiff"
+outfile="o-tiffcrop-R90-minisblack-2c-8b-alpha.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-miniswhite-1c-1b.sh b/src/tiff/test/tiffcrop-R90-miniswhite-1c-1b.sh
new file mode 100755 (executable)
index 0000000..cae85f2
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/miniswhite-1c-1b.tiff"
+outfile="o-tiffcrop-R90-miniswhite-1c-1b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-palette-1c-1b.sh b/src/tiff/test/tiffcrop-R90-palette-1c-1b.sh
new file mode 100755 (executable)
index 0000000..ca68b88
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-1b.tiff"
+outfile="o-tiffcrop-R90-palette-1c-1b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-palette-1c-4b.sh b/src/tiff/test/tiffcrop-R90-palette-1c-4b.sh
new file mode 100755 (executable)
index 0000000..3cd96eb
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-4b.tiff"
+outfile="o-tiffcrop-R90-palette-1c-4b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-palette-1c-8b.sh b/src/tiff/test/tiffcrop-R90-palette-1c-8b.sh
new file mode 100755 (executable)
index 0000000..daccfd3
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-8b.tiff"
+outfile="o-tiffcrop-R90-palette-1c-8b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-rgb-3c-16b.sh b/src/tiff/test/tiffcrop-R90-rgb-3c-16b.sh
new file mode 100755 (executable)
index 0000000..b1dddc3
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-16b.tiff"
+outfile="o-tiffcrop-R90-rgb-3c-16b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-R90-rgb-3c-8b.sh b/src/tiff/test/tiffcrop-R90-rgb-3c-8b.sh
new file mode 100755 (executable)
index 0000000..0a502c8
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-8b.tiff"
+outfile="o-tiffcrop-R90-rgb-3c-8b.tiff"
+f_test_convert "$TIFFCROP -R90" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-logluv-3c-16b.sh b/src/tiff/test/tiffcrop-doubleflip-logluv-3c-16b.sh
new file mode 100755 (executable)
index 0000000..c1b19b9
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/logluv-3c-16b.tiff"
+outfile="o-tiffcrop-doubleflip-logluv-3c-16b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-minisblack-1c-16b.sh b/src/tiff/test/tiffcrop-doubleflip-minisblack-1c-16b.sh
new file mode 100755 (executable)
index 0000000..1e2c4c9
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-16b.tiff"
+outfile="o-tiffcrop-doubleflip-minisblack-1c-16b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-minisblack-1c-8b.sh b/src/tiff/test/tiffcrop-doubleflip-minisblack-1c-8b.sh
new file mode 100755 (executable)
index 0000000..77798d9
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-8b.tiff"
+outfile="o-tiffcrop-doubleflip-minisblack-1c-8b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh b/src/tiff/test/tiffcrop-doubleflip-minisblack-2c-8b-alpha.sh
new file mode 100755 (executable)
index 0000000..b5b9db6
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-2c-8b-alpha.tiff"
+outfile="o-tiffcrop-doubleflip-minisblack-2c-8b-alpha.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-miniswhite-1c-1b.sh b/src/tiff/test/tiffcrop-doubleflip-miniswhite-1c-1b.sh
new file mode 100755 (executable)
index 0000000..07aab91
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/miniswhite-1c-1b.tiff"
+outfile="o-tiffcrop-doubleflip-miniswhite-1c-1b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-palette-1c-1b.sh b/src/tiff/test/tiffcrop-doubleflip-palette-1c-1b.sh
new file mode 100755 (executable)
index 0000000..581f7eb
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-1b.tiff"
+outfile="o-tiffcrop-doubleflip-palette-1c-1b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-palette-1c-4b.sh b/src/tiff/test/tiffcrop-doubleflip-palette-1c-4b.sh
new file mode 100755 (executable)
index 0000000..d09b2aa
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-4b.tiff"
+outfile="o-tiffcrop-doubleflip-palette-1c-4b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-palette-1c-8b.sh b/src/tiff/test/tiffcrop-doubleflip-palette-1c-8b.sh
new file mode 100755 (executable)
index 0000000..53a08ae
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-8b.tiff"
+outfile="o-tiffcrop-doubleflip-palette-1c-8b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-rgb-3c-16b.sh b/src/tiff/test/tiffcrop-doubleflip-rgb-3c-16b.sh
new file mode 100755 (executable)
index 0000000..7165ad5
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-16b.tiff"
+outfile="o-tiffcrop-doubleflip-rgb-3c-16b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-doubleflip-rgb-3c-8b.sh b/src/tiff/test/tiffcrop-doubleflip-rgb-3c-8b.sh
new file mode 100755 (executable)
index 0000000..6bfa067
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-8b.tiff"
+outfile="o-tiffcrop-doubleflip-rgb-3c-8b.tiff"
+f_test_convert "$TIFFCROP -F both" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-logluv-3c-16b.sh b/src/tiff/test/tiffcrop-extract-logluv-3c-16b.sh
new file mode 100755 (executable)
index 0000000..821694b
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/logluv-3c-16b.tiff"
+outfile="o-tiffcrop-extract-logluv-3c-16b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-minisblack-1c-16b.sh b/src/tiff/test/tiffcrop-extract-minisblack-1c-16b.sh
new file mode 100755 (executable)
index 0000000..603fc1c
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-16b.tiff"
+outfile="o-tiffcrop-extract-minisblack-1c-16b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-minisblack-1c-8b.sh b/src/tiff/test/tiffcrop-extract-minisblack-1c-8b.sh
new file mode 100755 (executable)
index 0000000..6e473c5
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-8b.tiff"
+outfile="o-tiffcrop-extract-minisblack-1c-8b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-minisblack-2c-8b-alpha.sh b/src/tiff/test/tiffcrop-extract-minisblack-2c-8b-alpha.sh
new file mode 100755 (executable)
index 0000000..976e888
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-2c-8b-alpha.tiff"
+outfile="o-tiffcrop-extract-minisblack-2c-8b-alpha.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-miniswhite-1c-1b.sh b/src/tiff/test/tiffcrop-extract-miniswhite-1c-1b.sh
new file mode 100755 (executable)
index 0000000..ca2b63c
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/miniswhite-1c-1b.tiff"
+outfile="o-tiffcrop-extract-miniswhite-1c-1b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-palette-1c-1b.sh b/src/tiff/test/tiffcrop-extract-palette-1c-1b.sh
new file mode 100755 (executable)
index 0000000..e4aca8e
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-1b.tiff"
+outfile="o-tiffcrop-extract-palette-1c-1b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-palette-1c-4b.sh b/src/tiff/test/tiffcrop-extract-palette-1c-4b.sh
new file mode 100755 (executable)
index 0000000..18884e4
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-4b.tiff"
+outfile="o-tiffcrop-extract-palette-1c-4b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-palette-1c-8b.sh b/src/tiff/test/tiffcrop-extract-palette-1c-8b.sh
new file mode 100755 (executable)
index 0000000..cd418e0
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-8b.tiff"
+outfile="o-tiffcrop-extract-palette-1c-8b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-rgb-3c-16b.sh b/src/tiff/test/tiffcrop-extract-rgb-3c-16b.sh
new file mode 100755 (executable)
index 0000000..a3899d3
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-16b.tiff"
+outfile="o-tiffcrop-extract-rgb-3c-16b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extract-rgb-3c-8b.sh b/src/tiff/test/tiffcrop-extract-rgb-3c-8b.sh
new file mode 100755 (executable)
index 0000000..c03b037
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-8b.tiff"
+outfile="o-tiffcrop-extract-rgb-3c-8b.tiff"
+f_test_convert "$TIFFCROP -U px -E top -X 60 -Y 60" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-logluv-3c-16b.sh b/src/tiff/test/tiffcrop-extractz14-logluv-3c-16b.sh
new file mode 100755 (executable)
index 0000000..a617ad9
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/logluv-3c-16b.tiff"
+outfile="o-tiffcrop-extractz14-logluv-3c-16b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-minisblack-1c-16b.sh b/src/tiff/test/tiffcrop-extractz14-minisblack-1c-16b.sh
new file mode 100755 (executable)
index 0000000..320fd5a
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-16b.tiff"
+outfile="o-tiffcrop-extractz14-minisblack-1c-16b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-minisblack-1c-8b.sh b/src/tiff/test/tiffcrop-extractz14-minisblack-1c-8b.sh
new file mode 100755 (executable)
index 0000000..8df8578
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-1c-8b.tiff"
+outfile="o-tiffcrop-extractz14-minisblack-1c-8b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-minisblack-2c-8b-alpha.sh b/src/tiff/test/tiffcrop-extractz14-minisblack-2c-8b-alpha.sh
new file mode 100755 (executable)
index 0000000..3e8ee15
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/minisblack-2c-8b-alpha.tiff"
+outfile="o-tiffcrop-extractz14-minisblack-2c-8b-alpha.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-miniswhite-1c-1b.sh b/src/tiff/test/tiffcrop-extractz14-miniswhite-1c-1b.sh
new file mode 100755 (executable)
index 0000000..2cbffaa
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/miniswhite-1c-1b.tiff"
+outfile="o-tiffcrop-extractz14-miniswhite-1c-1b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-palette-1c-1b.sh b/src/tiff/test/tiffcrop-extractz14-palette-1c-1b.sh
new file mode 100755 (executable)
index 0000000..e0b305f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-1b.tiff"
+outfile="o-tiffcrop-extractz14-palette-1c-1b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-palette-1c-4b.sh b/src/tiff/test/tiffcrop-extractz14-palette-1c-4b.sh
new file mode 100755 (executable)
index 0000000..980b2bb
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-4b.tiff"
+outfile="o-tiffcrop-extractz14-palette-1c-4b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-palette-1c-8b.sh b/src/tiff/test/tiffcrop-extractz14-palette-1c-8b.sh
new file mode 100755 (executable)
index 0000000..af2e04c
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/palette-1c-8b.tiff"
+outfile="o-tiffcrop-extractz14-palette-1c-8b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-rgb-3c-16b.sh b/src/tiff/test/tiffcrop-extractz14-rgb-3c-16b.sh
new file mode 100755 (executable)
index 0000000..9bc76e3
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-16b.tiff"
+outfile="o-tiffcrop-extractz14-rgb-3c-16b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffcrop-extractz14-rgb-3c-8b.sh b/src/tiff/test/tiffcrop-extractz14-rgb-3c-8b.sh
new file mode 100755 (executable)
index 0000000..21f76b8
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Generated file, master is Makefile.am
+. ${srcdir:-.}/common.sh
+infile="$srcdir/images/rgb-3c-8b.tiff"
+outfile="o-tiffcrop-extractz14-rgb-3c-8b.tiff"
+f_test_convert "$TIFFCROP -E left -Z1:4,2:4" $infile $outfile
+f_tiffinfo_validate $outfile
diff --git a/src/tiff/test/tiffdump.sh b/src/tiff/test/tiffdump.sh
new file mode 100755 (executable)
index 0000000..3cd7c10
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffdump
+#
+. ${srcdir:-.}/common.sh
+f_test_reader "${TIFFDUMP}" "${IMG_MINISWHITE_1C_1B}"
\ No newline at end of file
diff --git a/src/tiff/test/tiffinfo.sh b/src/tiff/test/tiffinfo.sh
new file mode 100755 (executable)
index 0000000..cb57248
--- /dev/null
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# Basic sanity check for tiffinfo.
+#
+. ${srcdir:-.}/common.sh
+f_test_reader "${TIFFINFO} -c -D -d -j -s " "${IMG_MINISBLACK_1C_16B}"
diff --git a/src/tiff/test/tifftest.h b/src/tiff/test/tifftest.h
new file mode 100644 (file)
index 0000000..c99fc42
--- /dev/null
@@ -0,0 +1,42 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 2008, Andrey Kiselev  <dron@ak4719.spb.edu>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
+ * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
+ * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * OF THIS SOFTWARE.
+ */
+
+#ifndef _TIFFTEST_
+#define _TIFFTEST_
+
+/*
+ * TIFF Library
+ *
+ * Header file for helper testing routines.
+ */
+
+#include "tiffio.h"
+
+int CheckShortField(TIFF *, const ttag_t, const uint16);
+int CheckShortPairedField(TIFF *, const ttag_t, const uint16*);
+int CheckLongField(TIFF *, const ttag_t, const uint32);
+
+#endif /* _TIFFTEST_ */
+
index 544110aaeb33e94473daa3645d463a3e026b3d0d..6497f2dca1d5d04f6d1205933acf4e5ebca2fbb2 100644 (file)
@@ -45,6 +45,7 @@ bin_PROGRAMS = \
        tiff2rgba \
        tiffcmp \
        tiffcp \
+       tiffcrop \
        tiffdither \
        tiffdump \
        tiffinfo \
@@ -109,6 +110,9 @@ tiffcmp_LDADD = $(LIBTIFF) $(LIBPORT)
 tiffcp_SOURCES = tiffcp.c
 tiffcp_LDADD = $(LIBTIFF) $(LIBPORT)
 
+tiffcrop_SOURCES = tiffcrop.c
+tiffcrop_LDADD = $(LIBTIFF) $(LIBPORT)
+
 tiffdither_SOURCES = tiffdither.c
 tiffdither_LDADD = $(LIBTIFF) $(LIBPORT)
 
@@ -131,7 +135,7 @@ tiffgt_SOURCES = tiffgt.c
 tiffgt_CFLAGS = $(CFLAGS) $(GLUT_CFLAGS) $(AM_CFLAGS)
 tiffgt_LDADD = $(LIBTIFF) $(LIBPORT) $(X_LIBS) $(GLUT_LIBS)
 
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 
 echo:
        (echo $(CFLAGS))
index a3906b65bee93ae6609c425d23c189e5dd91e170..b49b1f15a9b93faac2b3c2497e013f6b73eb64d1 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.12.4 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005  Free Software Foundation, Inc.
+# Copyright (C) 1994-2012 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.
 
 # Process this file with automake to produce Makefile.in.
 
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
 VPATH = @srcdir@
+am__make_dryrun = \
+  { \
+    am__dry=no; \
+    case $$MAKEFLAGS in \
+      *\\[\ \  ]*) \
+        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
+          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
+      *) \
+        for am__flg in $$MAKEFLAGS; do \
+          case $$am__flg in \
+            *=*|--*) ;; \
+            *n*) am__dry=yes; break;; \
+          esac; \
+        done;; \
+    esac; \
+    test $$am__dry = yes; \
+  }
 pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
 am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
 install_sh_DATA = $(install_sh) -c -m 644
 install_sh_PROGRAM = $(install_sh) -c
 install_sh_SCRIPT = $(install_sh) -c
@@ -61,63 +75,66 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-target_triplet = @target@
 bin_PROGRAMS = bmp2tiff$(EXEEXT) fax2ps$(EXEEXT) fax2tiff$(EXEEXT) \
        gif2tiff$(EXEEXT) pal2rgb$(EXEEXT) ppm2tiff$(EXEEXT) \
        ras2tiff$(EXEEXT) raw2tiff$(EXEEXT) rgb2ycbcr$(EXEEXT) \
        thumbnail$(EXEEXT) tiff2bw$(EXEEXT) tiff2pdf$(EXEEXT) \
        tiff2ps$(EXEEXT) tiff2rgba$(EXEEXT) tiffcmp$(EXEEXT) \
-       tiffcp$(EXEEXT) tiffdither$(EXEEXT) tiffdump$(EXEEXT) \
-       tiffinfo$(EXEEXT) tiffmedian$(EXEEXT) tiffset$(EXEEXT) \
-       tiffsplit$(EXEEXT) $(am__EXEEXT_1)
+       tiffcp$(EXEEXT) tiffcrop$(EXEEXT) tiffdither$(EXEEXT) \
+       tiffdump$(EXEEXT) tiffinfo$(EXEEXT) tiffmedian$(EXEEXT) \
+       tiffset$(EXEEXT) tiffsplit$(EXEEXT) $(am__EXEEXT_1)
 @HAVE_OPENGL_TRUE@am__append_1 = tiffgt
 EXTRA_PROGRAMS = sgi2tiff$(EXEEXT) sgisv$(EXEEXT) ycbcr$(EXEEXT)
 subdir = tools
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+       $(top_srcdir)/config/depcomp \
+       $(top_srcdir)/config/mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \
        $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
        $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
-       $(top_srcdir)/configure.ac
+       $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
 CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \
        $(top_builddir)/libtiff/tiffconf.h
 CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
 @HAVE_OPENGL_TRUE@am__EXEEXT_1 = tiffgt$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
 am_bmp2tiff_OBJECTS = bmp2tiff.$(OBJEXT)
 bmp2tiff_OBJECTS = $(am_bmp2tiff_OBJECTS)
-am__DEPENDENCIES_1 = $(top_builddir)/libtiff/libtiff.la
-am__DEPENDENCIES_2 = $(top_builddir)/port/libport.la
-bmp2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+bmp2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 am_fax2ps_OBJECTS = fax2ps.$(OBJEXT)
 fax2ps_OBJECTS = $(am_fax2ps_OBJECTS)
-fax2ps_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+fax2ps_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_fax2tiff_OBJECTS = fax2tiff.$(OBJEXT)
 fax2tiff_OBJECTS = $(am_fax2tiff_OBJECTS)
-fax2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+fax2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_gif2tiff_OBJECTS = gif2tiff.$(OBJEXT)
 gif2tiff_OBJECTS = $(am_gif2tiff_OBJECTS)
-gif2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+gif2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_pal2rgb_OBJECTS = pal2rgb.$(OBJEXT)
 pal2rgb_OBJECTS = $(am_pal2rgb_OBJECTS)
-pal2rgb_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+pal2rgb_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_ppm2tiff_OBJECTS = ppm2tiff.$(OBJEXT)
 ppm2tiff_OBJECTS = $(am_ppm2tiff_OBJECTS)
-ppm2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+ppm2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_ras2tiff_OBJECTS = ras2tiff.$(OBJEXT)
 ras2tiff_OBJECTS = $(am_ras2tiff_OBJECTS)
-ras2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+ras2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_raw2tiff_OBJECTS = raw2tiff.$(OBJEXT)
 raw2tiff_OBJECTS = $(am_raw2tiff_OBJECTS)
-raw2tiff_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+raw2tiff_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_rgb2ycbcr_OBJECTS = rgb2ycbcr.$(OBJEXT)
 rgb2ycbcr_OBJECTS = $(am_rgb2ycbcr_OBJECTS)
-rgb2ycbcr_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+rgb2ycbcr_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 sgi2tiff_SOURCES = sgi2tiff.c
 sgi2tiff_OBJECTS = sgi2tiff.$(OBJEXT)
 sgi2tiff_LDADD = $(LDADD)
@@ -126,87 +143,120 @@ sgisv_OBJECTS = sgisv.$(OBJEXT)
 sgisv_LDADD = $(LDADD)
 am_thumbnail_OBJECTS = thumbnail.$(OBJEXT)
 thumbnail_OBJECTS = $(am_thumbnail_OBJECTS)
-thumbnail_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+thumbnail_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiff2bw_OBJECTS = tiff2bw.$(OBJEXT)
 tiff2bw_OBJECTS = $(am_tiff2bw_OBJECTS)
-tiff2bw_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiff2bw_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiff2pdf_OBJECTS = tiff2pdf.$(OBJEXT)
 tiff2pdf_OBJECTS = $(am_tiff2pdf_OBJECTS)
-tiff2pdf_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiff2pdf_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiff2ps_OBJECTS = tiff2ps.$(OBJEXT)
 tiff2ps_OBJECTS = $(am_tiff2ps_OBJECTS)
-tiff2ps_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiff2ps_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiff2rgba_OBJECTS = tiff2rgba.$(OBJEXT)
 tiff2rgba_OBJECTS = $(am_tiff2rgba_OBJECTS)
-tiff2rgba_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiff2rgba_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffcmp_OBJECTS = tiffcmp.$(OBJEXT)
 tiffcmp_OBJECTS = $(am_tiffcmp_OBJECTS)
-tiffcmp_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffcmp_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffcp_OBJECTS = tiffcp.$(OBJEXT)
 tiffcp_OBJECTS = $(am_tiffcp_OBJECTS)
-tiffcp_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffcp_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
+am_tiffcrop_OBJECTS = tiffcrop.$(OBJEXT)
+tiffcrop_OBJECTS = $(am_tiffcrop_OBJECTS)
+tiffcrop_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffdither_OBJECTS = tiffdither.$(OBJEXT)
 tiffdither_OBJECTS = $(am_tiffdither_OBJECTS)
-tiffdither_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffdither_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffdump_OBJECTS = tiffdump.$(OBJEXT)
 tiffdump_OBJECTS = $(am_tiffdump_OBJECTS)
-tiffdump_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffdump_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffgt_OBJECTS = tiffgt-tiffgt.$(OBJEXT)
 tiffgt_OBJECTS = $(am_tiffgt_OBJECTS)
-am__DEPENDENCIES_3 =
-tiffgt_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
-       $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_3)
+am__DEPENDENCIES_1 =
+tiffgt_DEPENDENCIES = $(LIBTIFF) $(LIBPORT) $(am__DEPENDENCIES_1) \
+       $(am__DEPENDENCIES_1)
+tiffgt_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(tiffgt_CFLAGS) $(CFLAGS) \
+       $(AM_LDFLAGS) $(LDFLAGS) -o $@
 am_tiffinfo_OBJECTS = tiffinfo.$(OBJEXT)
 tiffinfo_OBJECTS = $(am_tiffinfo_OBJECTS)
-tiffinfo_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffinfo_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffmedian_OBJECTS = tiffmedian.$(OBJEXT)
 tiffmedian_OBJECTS = $(am_tiffmedian_OBJECTS)
-tiffmedian_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffmedian_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffset_OBJECTS = tiffset.$(OBJEXT)
 tiffset_OBJECTS = $(am_tiffset_OBJECTS)
-tiffset_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffset_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 am_tiffsplit_OBJECTS = tiffsplit.$(OBJEXT)
 tiffsplit_OBJECTS = $(am_tiffsplit_OBJECTS)
-tiffsplit_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+tiffsplit_DEPENDENCIES = $(LIBTIFF) $(LIBPORT)
 ycbcr_SOURCES = ycbcr.c
 ycbcr_OBJECTS = ycbcr.$(OBJEXT)
 ycbcr_LDADD = $(LDADD)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)/libtiff -I$(top_builddir)/libtiff
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/libtiff
 depcomp = $(SHELL) $(top_srcdir)/config/depcomp
 am__depfiles_maybe = depfiles
+am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(bmp2tiff_SOURCES) $(fax2ps_SOURCES) $(fax2tiff_SOURCES) \
        $(gif2tiff_SOURCES) $(pal2rgb_SOURCES) $(ppm2tiff_SOURCES) \
        $(ras2tiff_SOURCES) $(raw2tiff_SOURCES) $(rgb2ycbcr_SOURCES) \
        sgi2tiff.c sgisv.c $(thumbnail_SOURCES) $(tiff2bw_SOURCES) \
        $(tiff2pdf_SOURCES) $(tiff2ps_SOURCES) $(tiff2rgba_SOURCES) \
-       $(tiffcmp_SOURCES) $(tiffcp_SOURCES) $(tiffdither_SOURCES) \
-       $(tiffdump_SOURCES) $(tiffgt_SOURCES) $(tiffinfo_SOURCES) \
-       $(tiffmedian_SOURCES) $(tiffset_SOURCES) $(tiffsplit_SOURCES) \
-       ycbcr.c
+       $(tiffcmp_SOURCES) $(tiffcp_SOURCES) $(tiffcrop_SOURCES) \
+       $(tiffdither_SOURCES) $(tiffdump_SOURCES) $(tiffgt_SOURCES) \
+       $(tiffinfo_SOURCES) $(tiffmedian_SOURCES) $(tiffset_SOURCES) \
+       $(tiffsplit_SOURCES) ycbcr.c
 DIST_SOURCES = $(bmp2tiff_SOURCES) $(fax2ps_SOURCES) \
        $(fax2tiff_SOURCES) $(gif2tiff_SOURCES) $(pal2rgb_SOURCES) \
        $(ppm2tiff_SOURCES) $(ras2tiff_SOURCES) $(raw2tiff_SOURCES) \
        $(rgb2ycbcr_SOURCES) sgi2tiff.c sgisv.c $(thumbnail_SOURCES) \
        $(tiff2bw_SOURCES) $(tiff2pdf_SOURCES) $(tiff2ps_SOURCES) \
        $(tiff2rgba_SOURCES) $(tiffcmp_SOURCES) $(tiffcp_SOURCES) \
-       $(tiffdither_SOURCES) $(tiffdump_SOURCES) $(tiffgt_SOURCES) \
-       $(tiffinfo_SOURCES) $(tiffmedian_SOURCES) $(tiffset_SOURCES) \
-       $(tiffsplit_SOURCES) ycbcr.c
+       $(tiffcrop_SOURCES) $(tiffdither_SOURCES) $(tiffdump_SOURCES) \
+       $(tiffgt_SOURCES) $(tiffinfo_SOURCES) $(tiffmedian_SOURCES) \
+       $(tiffset_SOURCES) $(tiffsplit_SOURCES) ycbcr.c
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
 AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
 AR = @AR@
 AS = @AS@
 AUTOCONF = @AUTOCONF@
@@ -226,6 +276,7 @@ CYGPATH_W = @CYGPATH_W@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
 DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
 DUMPBIN = @DUMPBIN@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -240,12 +291,7 @@ GLU_LIBS = @GLU_LIBS@
 GL_CFLAGS = @GL_CFLAGS@
 GL_LIBS = @GL_LIBS@
 GREP = @GREP@
-HAVE_CXX_FALSE = @HAVE_CXX_FALSE@
-HAVE_CXX_TRUE = @HAVE_CXX_TRUE@
-HAVE_OPENGL_FALSE = @HAVE_OPENGL_FALSE@
-HAVE_OPENGL_TRUE = @HAVE_OPENGL_TRUE@
-HAVE_RPATH_FALSE = @HAVE_RPATH_FALSE@
-HAVE_RPATH_TRUE = @HAVE_RPATH_TRUE@
+INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -264,20 +310,25 @@ LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@
 LIBTIFF_VERSION = @LIBTIFF_VERSION@
 LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@
 LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
 MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
 NM = @NM@
+NMEDIT = @NMEDIT@
 OBJDUMP = @OBJDUMP@
 OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
 PACKAGE_NAME = @PACKAGE_NAME@
 PACKAGE_STRING = @PACKAGE_STRING@
 PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PTHREAD_CC = @PTHREAD_CC@
@@ -289,62 +340,66 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
+XMKMF = @XMKMF@
 X_CFLAGS = @X_CFLAGS@
 X_EXTRA_LIBS = @X_EXTRA_LIBS@
 X_LIBS = @X_LIBS@
 X_PRE_LIBS = @X_PRE_LIBS@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
 ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
 ac_ct_CC = @ac_ct_CC@
 ac_ct_CXX = @ac_ct_CXX@
-ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
 ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-acx_pthread_config = @acx_pthread_config@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
 am__include = @am__include@
 am__leading_dot = @am__leading_dot@
 am__quote = @am__quote@
 am__tar = @am__tar@
 am__untar = @am__untar@
+ax_pthread_config = @ax_pthread_config@
 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@
-lt_ECHO = @lt_ECHO@
 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@
+tiff_libs_private = @tiff_libs_private@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
 LIBPORT = $(top_builddir)/port/libport.la
 LIBTIFF = $(top_builddir)/libtiff/libtiff.la
 EXTRA_DIST = Makefile.vc
@@ -381,6 +436,8 @@ tiffcmp_SOURCES = tiffcmp.c
 tiffcmp_LDADD = $(LIBTIFF) $(LIBPORT)
 tiffcp_SOURCES = tiffcp.c
 tiffcp_LDADD = $(LIBTIFF) $(LIBPORT)
+tiffcrop_SOURCES = tiffcrop.c
+tiffcrop_LDADD = $(LIBTIFF) $(LIBPORT)
 tiffdither_SOURCES = tiffdither.c
 tiffdither_LDADD = $(LIBTIFF) $(LIBPORT)
 tiffdump_SOURCES = tiffdump.c
@@ -396,7 +453,7 @@ tiffsplit_LDADD = $(LIBTIFF) $(LIBPORT)
 tiffgt_SOURCES = tiffgt.c
 tiffgt_CFLAGS = $(CFLAGS) $(GLUT_CFLAGS) $(AM_CFLAGS)
 tiffgt_LDADD = $(LIBTIFF) $(LIBPORT) $(X_LIBS) $(GLUT_LIBS)
-INCLUDES = -I$(top_srcdir)/libtiff
+AM_CPPFLAGS = -I$(top_srcdir)/libtiff
 all: all-am
 
 .SUFFIXES:
@@ -405,14 +462,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__confi
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
-               && exit 0; \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  tools/Makefile'; \
-       cd $(top_srcdir) && \
-         $(AUTOMAKE) --foreign  tools/Makefile
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign tools/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -430,112 +487,134 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
 install-binPROGRAMS: $(bin_PROGRAMS)
        @$(NORMAL_INSTALL)
-       test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         if test -f $$p \
-            || test -f $$p1 \
-         ; then \
-           f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
-          echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
-          $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
-         else :; fi; \
-       done
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p || test -f $$p1; \
+         then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
 
 uninstall-binPROGRAMS:
        @$(NORMAL_UNINSTALL)
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-         echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
-         rm -f "$(DESTDIR)$(bindir)/$$f"; \
-       done
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
-       @list='$(bin_PROGRAMS)'; for p in $$list; do \
-         f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
-         echo " rm -f $$p $$f"; \
-         rm -f $$p $$f ; \
-       done
-bmp2tiff$(EXEEXT): $(bmp2tiff_OBJECTS) $(bmp2tiff_DEPENDENCIES) 
+       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+bmp2tiff$(EXEEXT): $(bmp2tiff_OBJECTS) $(bmp2tiff_DEPENDENCIES) $(EXTRA_bmp2tiff_DEPENDENCIES) 
        @rm -f bmp2tiff$(EXEEXT)
-       $(LINK) $(bmp2tiff_LDFLAGS) $(bmp2tiff_OBJECTS) $(bmp2tiff_LDADD) $(LIBS)
-fax2ps$(EXEEXT): $(fax2ps_OBJECTS) $(fax2ps_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(bmp2tiff_OBJECTS) $(bmp2tiff_LDADD) $(LIBS)
+fax2ps$(EXEEXT): $(fax2ps_OBJECTS) $(fax2ps_DEPENDENCIES) $(EXTRA_fax2ps_DEPENDENCIES) 
        @rm -f fax2ps$(EXEEXT)
-       $(LINK) $(fax2ps_LDFLAGS) $(fax2ps_OBJECTS) $(fax2ps_LDADD) $(LIBS)
-fax2tiff$(EXEEXT): $(fax2tiff_OBJECTS) $(fax2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(fax2ps_OBJECTS) $(fax2ps_LDADD) $(LIBS)
+fax2tiff$(EXEEXT): $(fax2tiff_OBJECTS) $(fax2tiff_DEPENDENCIES) $(EXTRA_fax2tiff_DEPENDENCIES) 
        @rm -f fax2tiff$(EXEEXT)
-       $(LINK) $(fax2tiff_LDFLAGS) $(fax2tiff_OBJECTS) $(fax2tiff_LDADD) $(LIBS)
-gif2tiff$(EXEEXT): $(gif2tiff_OBJECTS) $(gif2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(fax2tiff_OBJECTS) $(fax2tiff_LDADD) $(LIBS)
+gif2tiff$(EXEEXT): $(gif2tiff_OBJECTS) $(gif2tiff_DEPENDENCIES) $(EXTRA_gif2tiff_DEPENDENCIES) 
        @rm -f gif2tiff$(EXEEXT)
-       $(LINK) $(gif2tiff_LDFLAGS) $(gif2tiff_OBJECTS) $(gif2tiff_LDADD) $(LIBS)
-pal2rgb$(EXEEXT): $(pal2rgb_OBJECTS) $(pal2rgb_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(gif2tiff_OBJECTS) $(gif2tiff_LDADD) $(LIBS)
+pal2rgb$(EXEEXT): $(pal2rgb_OBJECTS) $(pal2rgb_DEPENDENCIES) $(EXTRA_pal2rgb_DEPENDENCIES) 
        @rm -f pal2rgb$(EXEEXT)
-       $(LINK) $(pal2rgb_LDFLAGS) $(pal2rgb_OBJECTS) $(pal2rgb_LDADD) $(LIBS)
-ppm2tiff$(EXEEXT): $(ppm2tiff_OBJECTS) $(ppm2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(pal2rgb_OBJECTS) $(pal2rgb_LDADD) $(LIBS)
+ppm2tiff$(EXEEXT): $(ppm2tiff_OBJECTS) $(ppm2tiff_DEPENDENCIES) $(EXTRA_ppm2tiff_DEPENDENCIES) 
        @rm -f ppm2tiff$(EXEEXT)
-       $(LINK) $(ppm2tiff_LDFLAGS) $(ppm2tiff_OBJECTS) $(ppm2tiff_LDADD) $(LIBS)
-ras2tiff$(EXEEXT): $(ras2tiff_OBJECTS) $(ras2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(ppm2tiff_OBJECTS) $(ppm2tiff_LDADD) $(LIBS)
+ras2tiff$(EXEEXT): $(ras2tiff_OBJECTS) $(ras2tiff_DEPENDENCIES) $(EXTRA_ras2tiff_DEPENDENCIES) 
        @rm -f ras2tiff$(EXEEXT)
-       $(LINK) $(ras2tiff_LDFLAGS) $(ras2tiff_OBJECTS) $(ras2tiff_LDADD) $(LIBS)
-raw2tiff$(EXEEXT): $(raw2tiff_OBJECTS) $(raw2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(ras2tiff_OBJECTS) $(ras2tiff_LDADD) $(LIBS)
+raw2tiff$(EXEEXT): $(raw2tiff_OBJECTS) $(raw2tiff_DEPENDENCIES) $(EXTRA_raw2tiff_DEPENDENCIES) 
        @rm -f raw2tiff$(EXEEXT)
-       $(LINK) $(raw2tiff_LDFLAGS) $(raw2tiff_OBJECTS) $(raw2tiff_LDADD) $(LIBS)
-rgb2ycbcr$(EXEEXT): $(rgb2ycbcr_OBJECTS) $(rgb2ycbcr_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(raw2tiff_OBJECTS) $(raw2tiff_LDADD) $(LIBS)
+rgb2ycbcr$(EXEEXT): $(rgb2ycbcr_OBJECTS) $(rgb2ycbcr_DEPENDENCIES) $(EXTRA_rgb2ycbcr_DEPENDENCIES) 
        @rm -f rgb2ycbcr$(EXEEXT)
-       $(LINK) $(rgb2ycbcr_LDFLAGS) $(rgb2ycbcr_OBJECTS) $(rgb2ycbcr_LDADD) $(LIBS)
-sgi2tiff$(EXEEXT): $(sgi2tiff_OBJECTS) $(sgi2tiff_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(rgb2ycbcr_OBJECTS) $(rgb2ycbcr_LDADD) $(LIBS)
+sgi2tiff$(EXEEXT): $(sgi2tiff_OBJECTS) $(sgi2tiff_DEPENDENCIES) $(EXTRA_sgi2tiff_DEPENDENCIES) 
        @rm -f sgi2tiff$(EXEEXT)
-       $(LINK) $(sgi2tiff_LDFLAGS) $(sgi2tiff_OBJECTS) $(sgi2tiff_LDADD) $(LIBS)
-sgisv$(EXEEXT): $(sgisv_OBJECTS) $(sgisv_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(sgi2tiff_OBJECTS) $(sgi2tiff_LDADD) $(LIBS)
+sgisv$(EXEEXT): $(sgisv_OBJECTS) $(sgisv_DEPENDENCIES) $(EXTRA_sgisv_DEPENDENCIES) 
        @rm -f sgisv$(EXEEXT)
-       $(LINK) $(sgisv_LDFLAGS) $(sgisv_OBJECTS) $(sgisv_LDADD) $(LIBS)
-thumbnail$(EXEEXT): $(thumbnail_OBJECTS) $(thumbnail_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(sgisv_OBJECTS) $(sgisv_LDADD) $(LIBS)
+thumbnail$(EXEEXT): $(thumbnail_OBJECTS) $(thumbnail_DEPENDENCIES) $(EXTRA_thumbnail_DEPENDENCIES) 
        @rm -f thumbnail$(EXEEXT)
-       $(LINK) $(thumbnail_LDFLAGS) $(thumbnail_OBJECTS) $(thumbnail_LDADD) $(LIBS)
-tiff2bw$(EXEEXT): $(tiff2bw_OBJECTS) $(tiff2bw_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(thumbnail_OBJECTS) $(thumbnail_LDADD) $(LIBS)
+tiff2bw$(EXEEXT): $(tiff2bw_OBJECTS) $(tiff2bw_DEPENDENCIES) $(EXTRA_tiff2bw_DEPENDENCIES) 
        @rm -f tiff2bw$(EXEEXT)
-       $(LINK) $(tiff2bw_LDFLAGS) $(tiff2bw_OBJECTS) $(tiff2bw_LDADD) $(LIBS)
-tiff2pdf$(EXEEXT): $(tiff2pdf_OBJECTS) $(tiff2pdf_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff2bw_OBJECTS) $(tiff2bw_LDADD) $(LIBS)
+tiff2pdf$(EXEEXT): $(tiff2pdf_OBJECTS) $(tiff2pdf_DEPENDENCIES) $(EXTRA_tiff2pdf_DEPENDENCIES) 
        @rm -f tiff2pdf$(EXEEXT)
-       $(LINK) $(tiff2pdf_LDFLAGS) $(tiff2pdf_OBJECTS) $(tiff2pdf_LDADD) $(LIBS)
-tiff2ps$(EXEEXT): $(tiff2ps_OBJECTS) $(tiff2ps_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff2pdf_OBJECTS) $(tiff2pdf_LDADD) $(LIBS)
+tiff2ps$(EXEEXT): $(tiff2ps_OBJECTS) $(tiff2ps_DEPENDENCIES) $(EXTRA_tiff2ps_DEPENDENCIES) 
        @rm -f tiff2ps$(EXEEXT)
-       $(LINK) $(tiff2ps_LDFLAGS) $(tiff2ps_OBJECTS) $(tiff2ps_LDADD) $(LIBS)
-tiff2rgba$(EXEEXT): $(tiff2rgba_OBJECTS) $(tiff2rgba_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff2ps_OBJECTS) $(tiff2ps_LDADD) $(LIBS)
+tiff2rgba$(EXEEXT): $(tiff2rgba_OBJECTS) $(tiff2rgba_DEPENDENCIES) $(EXTRA_tiff2rgba_DEPENDENCIES) 
        @rm -f tiff2rgba$(EXEEXT)
-       $(LINK) $(tiff2rgba_LDFLAGS) $(tiff2rgba_OBJECTS) $(tiff2rgba_LDADD) $(LIBS)
-tiffcmp$(EXEEXT): $(tiffcmp_OBJECTS) $(tiffcmp_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiff2rgba_OBJECTS) $(tiff2rgba_LDADD) $(LIBS)
+tiffcmp$(EXEEXT): $(tiffcmp_OBJECTS) $(tiffcmp_DEPENDENCIES) $(EXTRA_tiffcmp_DEPENDENCIES) 
        @rm -f tiffcmp$(EXEEXT)
-       $(LINK) $(tiffcmp_LDFLAGS) $(tiffcmp_OBJECTS) $(tiffcmp_LDADD) $(LIBS)
-tiffcp$(EXEEXT): $(tiffcp_OBJECTS) $(tiffcp_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffcmp_OBJECTS) $(tiffcmp_LDADD) $(LIBS)
+tiffcp$(EXEEXT): $(tiffcp_OBJECTS) $(tiffcp_DEPENDENCIES) $(EXTRA_tiffcp_DEPENDENCIES) 
        @rm -f tiffcp$(EXEEXT)
-       $(LINK) $(tiffcp_LDFLAGS) $(tiffcp_OBJECTS) $(tiffcp_LDADD) $(LIBS)
-tiffdither$(EXEEXT): $(tiffdither_OBJECTS) $(tiffdither_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffcp_OBJECTS) $(tiffcp_LDADD) $(LIBS)
+tiffcrop$(EXEEXT): $(tiffcrop_OBJECTS) $(tiffcrop_DEPENDENCIES) $(EXTRA_tiffcrop_DEPENDENCIES) 
+       @rm -f tiffcrop$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(tiffcrop_OBJECTS) $(tiffcrop_LDADD) $(LIBS)
+tiffdither$(EXEEXT): $(tiffdither_OBJECTS) $(tiffdither_DEPENDENCIES) $(EXTRA_tiffdither_DEPENDENCIES) 
        @rm -f tiffdither$(EXEEXT)
-       $(LINK) $(tiffdither_LDFLAGS) $(tiffdither_OBJECTS) $(tiffdither_LDADD) $(LIBS)
-tiffdump$(EXEEXT): $(tiffdump_OBJECTS) $(tiffdump_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffdither_OBJECTS) $(tiffdither_LDADD) $(LIBS)
+tiffdump$(EXEEXT): $(tiffdump_OBJECTS) $(tiffdump_DEPENDENCIES) $(EXTRA_tiffdump_DEPENDENCIES) 
        @rm -f tiffdump$(EXEEXT)
-       $(LINK) $(tiffdump_LDFLAGS) $(tiffdump_OBJECTS) $(tiffdump_LDADD) $(LIBS)
-tiffgt$(EXEEXT): $(tiffgt_OBJECTS) $(tiffgt_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffdump_OBJECTS) $(tiffdump_LDADD) $(LIBS)
+tiffgt$(EXEEXT): $(tiffgt_OBJECTS) $(tiffgt_DEPENDENCIES) $(EXTRA_tiffgt_DEPENDENCIES) 
        @rm -f tiffgt$(EXEEXT)
-       $(LINK) $(tiffgt_LDFLAGS) $(tiffgt_OBJECTS) $(tiffgt_LDADD) $(LIBS)
-tiffinfo$(EXEEXT): $(tiffinfo_OBJECTS) $(tiffinfo_DEPENDENCIES) 
+       $(AM_V_CCLD)$(tiffgt_LINK) $(tiffgt_OBJECTS) $(tiffgt_LDADD) $(LIBS)
+tiffinfo$(EXEEXT): $(tiffinfo_OBJECTS) $(tiffinfo_DEPENDENCIES) $(EXTRA_tiffinfo_DEPENDENCIES) 
        @rm -f tiffinfo$(EXEEXT)
-       $(LINK) $(tiffinfo_LDFLAGS) $(tiffinfo_OBJECTS) $(tiffinfo_LDADD) $(LIBS)
-tiffmedian$(EXEEXT): $(tiffmedian_OBJECTS) $(tiffmedian_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffinfo_OBJECTS) $(tiffinfo_LDADD) $(LIBS)
+tiffmedian$(EXEEXT): $(tiffmedian_OBJECTS) $(tiffmedian_DEPENDENCIES) $(EXTRA_tiffmedian_DEPENDENCIES) 
        @rm -f tiffmedian$(EXEEXT)
-       $(LINK) $(tiffmedian_LDFLAGS) $(tiffmedian_OBJECTS) $(tiffmedian_LDADD) $(LIBS)
-tiffset$(EXEEXT): $(tiffset_OBJECTS) $(tiffset_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffmedian_OBJECTS) $(tiffmedian_LDADD) $(LIBS)
+tiffset$(EXEEXT): $(tiffset_OBJECTS) $(tiffset_DEPENDENCIES) $(EXTRA_tiffset_DEPENDENCIES) 
        @rm -f tiffset$(EXEEXT)
-       $(LINK) $(tiffset_LDFLAGS) $(tiffset_OBJECTS) $(tiffset_LDADD) $(LIBS)
-tiffsplit$(EXEEXT): $(tiffsplit_OBJECTS) $(tiffsplit_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffset_OBJECTS) $(tiffset_LDADD) $(LIBS)
+tiffsplit$(EXEEXT): $(tiffsplit_OBJECTS) $(tiffsplit_DEPENDENCIES) $(EXTRA_tiffsplit_DEPENDENCIES) 
        @rm -f tiffsplit$(EXEEXT)
-       $(LINK) $(tiffsplit_LDFLAGS) $(tiffsplit_OBJECTS) $(tiffsplit_LDADD) $(LIBS)
-ycbcr$(EXEEXT): $(ycbcr_OBJECTS) $(ycbcr_DEPENDENCIES) 
+       $(AM_V_CCLD)$(LINK) $(tiffsplit_OBJECTS) $(tiffsplit_LDADD) $(LIBS)
+ycbcr$(EXEEXT): $(ycbcr_OBJECTS) $(ycbcr_DEPENDENCIES) $(EXTRA_ycbcr_DEPENDENCIES) 
        @rm -f ycbcr$(EXEEXT)
-       $(LINK) $(ycbcr_LDFLAGS) $(ycbcr_OBJECTS) $(ycbcr_LDADD) $(LIBS)
+       $(AM_V_CCLD)$(LINK) $(ycbcr_OBJECTS) $(ycbcr_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -561,6 +640,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiff2rgba.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffcmp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffcp.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffcrop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffdither.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffdump.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tiffgt-tiffgt.Po@am__quote@
@@ -571,39 +651,39 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ycbcr.Po@am__quote@
 
 .c.o:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
 
 .c.obj:
-@am__fastdepCC_TRUE@   if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(COMPILE) -c `$(CYGPATH_W) '$<'`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
 
 .c.lo:
-@am__fastdepCC_TRUE@   if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LTCOMPILE) -c -o $@ $<
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
 
 tiffgt-tiffgt.o: tiffgt.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -MT tiffgt-tiffgt.o -MD -MP -MF "$(DEPDIR)/tiffgt-tiffgt.Tpo" -c -o tiffgt-tiffgt.o `test -f 'tiffgt.c' || echo '$(srcdir)/'`tiffgt.c; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/tiffgt-tiffgt.Tpo" "$(DEPDIR)/tiffgt-tiffgt.Po"; else rm -f "$(DEPDIR)/tiffgt-tiffgt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='tiffgt.c' object='tiffgt-tiffgt.o' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -MT tiffgt-tiffgt.o -MD -MP -MF $(DEPDIR)/tiffgt-tiffgt.Tpo -c -o tiffgt-tiffgt.o `test -f 'tiffgt.c' || echo '$(srcdir)/'`tiffgt.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tiffgt-tiffgt.Tpo $(DEPDIR)/tiffgt-tiffgt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tiffgt.c' object='tiffgt-tiffgt.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -c -o tiffgt-tiffgt.o `test -f 'tiffgt.c' || echo '$(srcdir)/'`tiffgt.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -c -o tiffgt-tiffgt.o `test -f 'tiffgt.c' || echo '$(srcdir)/'`tiffgt.c
 
 tiffgt-tiffgt.obj: tiffgt.c
-@am__fastdepCC_TRUE@   if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -MT tiffgt-tiffgt.obj -MD -MP -MF "$(DEPDIR)/tiffgt-tiffgt.Tpo" -c -o tiffgt-tiffgt.obj `if test -f 'tiffgt.c'; then $(CYGPATH_W) 'tiffgt.c'; else $(CYGPATH_W) '$(srcdir)/tiffgt.c'; fi`; \
-@am__fastdepCC_TRUE@   then mv -f "$(DEPDIR)/tiffgt-tiffgt.Tpo" "$(DEPDIR)/tiffgt-tiffgt.Po"; else rm -f "$(DEPDIR)/tiffgt-tiffgt.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='tiffgt.c' object='tiffgt-tiffgt.obj' libtool=no @AMDEPBACKSLASH@
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -MT tiffgt-tiffgt.obj -MD -MP -MF $(DEPDIR)/tiffgt-tiffgt.Tpo -c -o tiffgt-tiffgt.obj `if test -f 'tiffgt.c'; then $(CYGPATH_W) 'tiffgt.c'; else $(CYGPATH_W) '$(srcdir)/tiffgt.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/tiffgt-tiffgt.Tpo $(DEPDIR)/tiffgt-tiffgt.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tiffgt.c' object='tiffgt-tiffgt.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -c -o tiffgt-tiffgt.obj `if test -f 'tiffgt.c'; then $(CYGPATH_W) 'tiffgt.c'; else $(CYGPATH_W) '$(srcdir)/tiffgt.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tiffgt_CFLAGS) $(CFLAGS) -c -o tiffgt-tiffgt.obj `if test -f 'tiffgt.c'; then $(CYGPATH_W) 'tiffgt.c'; else $(CYGPATH_W) '$(srcdir)/tiffgt.c'; fi`
 
 mostlyclean-libtool:
        -rm -f *.lo
@@ -611,82 +691,99 @@ mostlyclean-libtool:
 clean-libtool:
        -rm -rf .libs _libs
 
-distclean-libtool:
-       -rm -f libtool
-uninstall-info-am:
-
 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; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
 TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
+       set x; \
        here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       shift; \
+       if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
-         $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-           $$tags $$unique; \
+         if test $$# -gt 0; then \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             "$$@" $$unique; \
+         else \
+           $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+             $$unique; \
+         fi; \
        fi
 ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
-       tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
-       test -z "$(CTAGS_ARGS)$$tags$$unique" \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-            $$tags $$unique
+            $$unique
 
 GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
-         && cd $(top_srcdir) \
-         && gtags -i $(GTAGS_ARGS) $$here
+         && $(am__cd) $(top_srcdir) \
+         && gtags -i $(GTAGS_ARGS) "$$here"
+
+cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
+       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
-       @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-       list='$(DISTFILES)'; for file in $$list; do \
-         case $$file in \
-           $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-         esac; \
+       @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; \
-         dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-         if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-           dir="/$$dir"; \
-           $(mkdir_p) "$(distdir)$$dir"; \
-         else \
-           dir=''; \
-         fi; \
          if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d "$(distdir)/$$file"; then \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+           fi; \
            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+             cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+             find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
            fi; \
-           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+           cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
          else \
-           test -f $(distdir)/$$file \
-           || cp -p $$d/$$file $(distdir)/$$file \
+           test -f "$(distdir)/$$file" \
+           || cp -p $$d/$$file "$(distdir)/$$file" \
            || exit 1; \
          fi; \
        done
@@ -695,7 +792,7 @@ check: check-am
 all-am: Makefile $(PROGRAMS)
 installdirs:
        for dir in "$(DESTDIR)$(bindir)"; do \
-         test -z "$$dir" || $(mkdir_p) "$$dir"; \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: install-am
 install-exec: install-exec-am
@@ -707,16 +804,22 @@ install-am: all-am
 
 installcheck: installcheck-am
 install-strip:
-       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-         `test -z '$(STRIP)' || \
-           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+       if test -z '$(STRIP)'; then \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+             install; \
+       else \
+         $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+           install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+           "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+       fi
 mostlyclean-generic:
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+       -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
@@ -729,7 +832,7 @@ distclean: distclean-am
        -rm -rf ./$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
-       distclean-libtool distclean-tags
+       distclean-tags
 
 dvi: dvi-am
 
@@ -737,18 +840,38 @@ dvi-am:
 
 html: html-am
 
+html-am:
+
 info: info-am
 
 info-am:
 
 install-data-am:
 
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
 install-exec-am: install-binPROGRAMS
 
+install-html: install-html-am
+
+install-html-am:
+
 install-info: install-info-am
 
+install-info-am:
+
 install-man:
 
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
@@ -769,19 +892,23 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
 
 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-       clean-generic clean-libtool ctags distclean distclean-compile \
-       distclean-generic distclean-libtool distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-binPROGRAMS install-data install-data-am install-exec \
-       install-exec-am install-info install-info-am install-man \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
-       pdf pdf-am ps ps-am tags uninstall uninstall-am \
-       uninstall-binPROGRAMS uninstall-info-am
+       clean-generic clean-libtool cscopelist ctags distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-binPROGRAMS install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       tags uninstall uninstall-am uninstall-binPROGRAMS
 
 
 echo:
@@ -790,6 +917,7 @@ echo:
        (echo $(GL_CFLAGS))
        (echo $(GLU_CFLAGS))
        (echo $(GLUT_CFLAGS))
+
 # 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:
index 632afa48669178feb195f4137e08596d6ffde9c8..cddf9cf0b8d7ea59818b25646840e4ef5cc8f664 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Makefile.vc,v 1.11 2006/03/23 14:54:02 dron Exp $\r
+# $Id: Makefile.vc,v 1.15 2009-01-22 20:53:07 fwarmerdam Exp $\r
 #\r
 # Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\r
 #\r
 \r
 !INCLUDE ..\nmake.opt\r
 \r
-TARGETS        =       bmp2tiff.exe tiffcp.exe tiffinfo.exe tiffdump.exe \\r
-               fax2tiff.exe fax2ps.exe gif2tiff.exe pal2rgb.exe ppm2tiff.exe \\r
+TARGETS        =       bmp2tiff.exe tiffinfo.exe tiffdump.exe fax2tiff.exe \\r
+               fax2ps.exe gif2tiff.exe pal2rgb.exe ppm2tiff.exe \\r
                rgb2ycbcr.exe thumbnail.exe ras2tiff.exe raw2tiff.exe \\r
                tiff2bw.exe tiff2rgba.exe tiff2pdf.exe tiff2ps.exe \\r
-               tiffcmp.exe tiffdither.exe tiffmedian.exe tiffsplit.exe \r
+               tiffcmp.exe tiffcp.exe tiffcrop.exe tiffdither.exe \\r
+               tiffmedian.exe tiffset.exe tiffsplit.exe \r
 \r
-INCL           =       -I..\libtiff\r
+INCL           =       -I..\libtiff -I..\port -DNEED_LIBPORT\r
 LIBS           =       $(LIBS) ..\port\libport.lib ..\libtiff\libtiff.lib\r
 \r
 default:       $(TARGETS)\r
@@ -47,4 +48,5 @@ tiffgt.exe:
 \r
 clean:\r
        -del *.exe\r
+       -del *.exe.manifest\r
        -del *.obj\r
index 08d991754811723bb515d6ec196e0e5ffc4c8e34..2e1e430ae96ae858627eaf520eb05d7f98f580a3 100644 (file)
 # include <io.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #ifndef O_BINARY
@@ -428,7 +432,7 @@ main(int argc, char* argv[])
                                read(fd, clr_tbl, n_clr_elems * clr_tbl_size);
 
                                red_tbl = (unsigned short*)
-                                       _TIFFmalloc(1<<depth * sizeof(unsigned short));
+                                       _TIFFmalloc(((tmsize_t)1)<<depth * sizeof(unsigned short));
                                if (!red_tbl) {
                                        TIFFError(infilename,
                                "Can't allocate space for red component table");
@@ -436,7 +440,7 @@ main(int argc, char* argv[])
                                        goto bad1;
                                }
                                green_tbl = (unsigned short*)
-                                       _TIFFmalloc(1<<depth * sizeof(unsigned short));
+                                       _TIFFmalloc(((tmsize_t)1)<<depth * sizeof(unsigned short));
                                if (!green_tbl) {
                                        TIFFError(infilename,
                                "Can't allocate space for green component table");
@@ -444,7 +448,7 @@ main(int argc, char* argv[])
                                        goto bad2;
                                }
                                blue_tbl = (unsigned short*)
-                                       _TIFFmalloc(1<<depth * sizeof(unsigned short));
+                                       _TIFFmalloc(((tmsize_t)1)<<depth * sizeof(unsigned short));
                                if (!blue_tbl) {
                                        TIFFError(infilename,
                                "Can't allocate space for blue component table");
@@ -841,3 +845,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 1c9f72e6a1e5d7c664f9e50fd2b2859b13365861..36deb7fd3b2700ff26d2849ec60842e8cef4465b 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
 #ifdef HAVE_IO_H
 # include <io.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 float  defxres = 204.;         /* default x resolution (pixels/inch) */
@@ -269,9 +277,9 @@ findPage(TIFF* tif, uint16 pageNumber)
     uint16 pn = (uint16) -1;
     uint16 ptotal = (uint16) -1;
     if (GetPageNumber(tif)) {
-       while (pn != pageNumber && TIFFReadDirectory(tif) && GetPageNumber(tif))
+       while (pn != (pageNumber-1) && TIFFReadDirectory(tif) && GetPageNumber(tif))
            ;
-       return (pn == pageNumber);
+       return (pn == (pageNumber-1));
     } else
        return (TIFFSetDirectory(tif, (tdir_t)(pageNumber-1)));
 }
@@ -376,10 +384,12 @@ main(int argc, char** argv)
 
        fd = tmpfile();
        if (fd == NULL) {
-           fprintf(stderr, "Could not create temporary file, exiting.\n");
-           fclose(fd);
+           fprintf(stderr, "Could not obtain temporary file.\n");
            exit(-2);
        }
+#if defined(HAVE_SETMODE) && defined(O_BINARY)
+       setmode(fileno(stdin), O_BINARY);
+#endif
        while ((n = read(fileno(stdin), buf, sizeof (buf))) > 0)
            write(fileno(fd), buf, n);
        lseek(fileno(fd), 0, SEEK_SET);
@@ -430,3 +440,10 @@ usage(int code)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index f724180c6ce3e06f236aad729cc5523fbc41be6a..f31203656f369656aa39300496b17c7a860f4800 100644 (file)
 # include <io.h>
 #endif
 
-#include "tiffiop.h"
-
-#ifndef BINMODE
-# define       BINMODE
+#ifdef NEED_LIBPORT
+# include "libport.h"
 #endif
 
+#include "tiffiop.h"
+
 #ifndef EXIT_SUCCESS
 # define EXIT_SUCCESS  0
 #endif
@@ -258,7 +258,7 @@ main(int argc, char* argv[])
        else if (compression_in == COMPRESSION_CCITTFAX4)
                TIFFSetField(faxTIFF, TIFFTAG_GROUP4OPTIONS, group4options_in);
        for (pn = 0; optind < argc; pn++, optind++) {
-               in = fopen(argv[optind], "r" BINMODE);
+               in = fopen(argv[optind], "rb");
                if (in == NULL) {
                        fprintf(stderr,
                            "%s: %s: Can not open\n", argv[0], argv[optind]);
@@ -351,7 +351,7 @@ copyFaxFile(TIFF* tifin, TIFF* tifout)
        uint16 badrun;
        int ok;
 
-       tifin->tif_rawdatasize = TIFFGetFileSize(tifin);
+       tifin->tif_rawdatasize = (tmsize_t)TIFFGetFileSize(tifin);
        tifin->tif_rawdata = _TIFFmalloc(tifin->tif_rawdatasize);
        if (tifin->tif_rawdata == NULL) {
                TIFFError(tifin->tif_name, "Not enough memory");
@@ -460,3 +460,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index ae42ba859942772219fc024cff194b066e9a50a2..6b7b2023d8ba82271cc033ffda32d2af2bada353 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #define        GIFGAMMA        (1.5)           /* smaller makes output img brighter */
@@ -250,7 +254,7 @@ readscreen(void)
     global = buf[4] & 0x80;
     if (global) {
         globalbits = (buf[4] & 0x07) + 1;
-        fread(globalmap,3,1<<globalbits,infile);
+        fread(globalmap,3,((size_t)1)<<globalbits,infile);
     }
 }
 
@@ -285,7 +289,7 @@ readgifimage(char* mode)
 
         fprintf(stderr, "   local colors: %d\n", 1<<localbits);
 
-        fread(localmap, 3, 1<<localbits, infile);
+        fread(localmap, 3, ((size_t)1)<<localbits, infile);
         initcolors(localmap, 1<<localbits);
     } else if (global) {
         initcolors(globalmap, 1<<globalbits);
@@ -503,6 +507,10 @@ rasterize(int interleaved, char* mode)
     strip = 0;
     stripsize = TIFFStripSize(tif);
     for (row=0; row<height; row += rowsperstrip) {
+       if (rowsperstrip > height-row) {
+           rowsperstrip = height-row;
+           stripsize = TIFFVStripSize(tif, rowsperstrip);
+       }
        if (TIFFWriteEncodedStrip(tif, strip, newras+row*width, stripsize) < 0)
            break;
        strip++;
@@ -513,3 +521,10 @@ rasterize(int interleaved, char* mode)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 28150126754bcac7170db4f7ba4f3184eb8afce8..bfe7899d8be9bbed61adef9b8cd72a8bacded9b3 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
@@ -361,7 +365,7 @@ static struct cpTag {
     { TIFFTAG_DATETIME,                        1, TIFF_ASCII },
     { TIFFTAG_ARTIST,                  1, TIFF_ASCII },
     { TIFFTAG_HOSTCOMPUTER,            1, TIFF_ASCII },
-    { TIFFTAG_WHITEPOINT,              1, TIFF_RATIONAL },
+    { TIFFTAG_WHITEPOINT,              2, TIFF_RATIONAL },
     { TIFFTAG_PRIMARYCHROMATICITIES,   (uint16) -1,TIFF_RATIONAL },
     { TIFFTAG_HALFTONEHINTS,           2, TIFF_SHORT },
     { TIFFTAG_BADFAXLINES,             1, TIFF_LONG },
@@ -422,3 +426,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 3ca6ef76314ca099ddcac75ca10520e7a4ef0a2a..8910e768f6dc6a0fe74f615c784caf969dd50623 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #ifndef HAVE_GETOPT
 extern int getopt(int, char**, char*);
 #endif
 
-#if defined(_WINDOWS) || defined(MSDOS)
-#define BINMODE "b"
-#else
-#define        BINMODE
-#endif
-
 #define        streq(a,b)      (strcmp(a,b) == 0)
 #define        strneq(a,b,n)   (strncmp(a,b,n) == 0)
 
@@ -116,7 +122,7 @@ main(int argc, char* argv[])
         */
        if (argc - optind > 1) {
                infile = argv[optind++];
-               in = fopen(infile, "r" BINMODE);
+               in = fopen(infile, "rb");
                if (in == NULL) {
                        fprintf(stderr, "%s: Can not open.\n", infile);
                        return (-1);
@@ -124,6 +130,9 @@ main(int argc, char* argv[])
        } else {
                infile = "<stdin>";
                in = stdin;
+#if defined(HAVE_SETMODE) && defined(O_BINARY)
+               setmode(fileno(stdin), O_BINARY);
+#endif
        }
 
        if (fgetc(in) != 'P')
@@ -164,7 +173,7 @@ main(int argc, char* argv[])
                if (c == '#') {
                        do {
                            c = fgetc(in);
-                       } while(!strchr("\r\n", c) || feof(in));
+                       } while(!(strchr("\r\n", c) || feof(in)));
                        continue;
                }
 
@@ -348,3 +357,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 91b60f0500c877560e2cf51355a706b7f7158630..c1265ea0e0280c2b4ef8f5338b3bfa3f3c15a947 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "rasterfile.h"
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
 #define        strneq(a,b,n)   (strncmp(a,b,n) == 0)
 
-#ifndef BINMODE
-#define        BINMODE
-#endif
-
 static uint16 compression = (uint16) -1;
 static int jpegcolormode = JPEGCOLORMODE_RGB;
 static int quality = 75;               /* JPEG quality */
@@ -87,13 +87,14 @@ main(int argc, char* argv[])
                }
        if (argc - optind != 2)
                usage();
-       in = fopen(argv[optind], "r" BINMODE);
+       in = fopen(argv[optind], "rb");
        if (in == NULL) {
                fprintf(stderr, "%s: Can not open.\n", argv[optind]);
                return (-1);
        }
        if (fread(&h, sizeof (h), 1, in) != 1) {
                fprintf(stderr, "%s: Can not read header.\n", argv[optind]);
+               fclose(in);
                return (-2);
        }
        if (strcmp(h.ras_magic, RAS_MAGIC) == 0) {
@@ -118,11 +119,15 @@ main(int argc, char* argv[])
 #endif
        } else {
                fprintf(stderr, "%s: Not a rasterfile.\n", argv[optind]);
+               fclose(in);
                return (-3);
        }
        out = TIFFOpen(argv[optind+1], "w");
        if (out == NULL)
+       {
+               fclose(in);
                return (-4);
+       }
        TIFFSetField(out, TIFFTAG_IMAGEWIDTH, (uint32) h.ras_width);
        TIFFSetField(out, TIFFTAG_IMAGELENGTH, (uint32) h.ras_height);
        TIFFSetField(out, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
@@ -224,6 +229,7 @@ main(int argc, char* argv[])
                        break;
        }
        (void) TIFFClose(out);
+       fclose(in);
        return (0);
 }
 
@@ -301,3 +307,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index c194e4993e3f0470d2fc8684d109fdf9fd08b052..833e095c718238a220694a52d85399f31715ee36 100644 (file)
@@ -1,4 +1,4 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/tools/rasterfile.h,v 1.3 2003/11/12 19:14:33 dron Exp $ */
+/* $Header: /cvs/libtiff/tools/rasterfile.h,v 1.3 2003/11/12 19:14:33 dron Exp $ */
 
 /*
  * Description of header for files containing raster images
index 79fcb7efb88e7dd6643e0892cc9b983c62114066..c9dd4fd9136adc7948b0517a9627c1b529c6605a 100644 (file)
 # include <io.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #ifndef HAVE_GETOPT
@@ -638,3 +642,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 0c41c3e997cf448e142aa64496771f537db519b8..06aa881ba2494debb2791d2d1e6090a3a157a65c 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
+#include "tiffiop.h"
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
@@ -254,6 +259,7 @@ cvtRaster(TIFF* tif, uint32* raster, uint32 width, uint32 height)
        cc = rnrows*rwidth +
            2*((rnrows*rwidth) / (horizSubSampling*vertSubSampling));
        buf = (unsigned char*)_TIFFmalloc(cc);
+       // FIXME unchecked malloc
        for (y = height; (int32) y > 0; y -= nrows) {
                uint32 nr = (y > nrows ? nrows : y);
                cvtStrip(buf, raster + (y-1)*width, nr, width);
@@ -278,14 +284,32 @@ tiffcvt(TIFF* in, TIFF* out)
        float floatv;
        char *stringv;
        uint32 longv;
+       int result;
+       size_t pixel_count;
 
        TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &width);
        TIFFGetField(in, TIFFTAG_IMAGELENGTH, &height);
-       raster = (uint32*)_TIFFmalloc(width * height * sizeof (uint32));
-       if (raster == 0) {
-               TIFFError(TIFFFileName(in), "No space for raster buffer");
-               return (0);
-       }
+       pixel_count = width * height;
+
+       /* XXX: Check the integer overflow. */
+       if (!width || !height || pixel_count / width != height) {
+               TIFFError(TIFFFileName(in),
+                         "Malformed input file; "
+                         "can't allocate buffer for raster of %lux%lu size",
+                         (unsigned long)width, (unsigned long)height);
+               return 0;
+       }
+       raster = (uint32*)_TIFFCheckMalloc(in, pixel_count, sizeof(uint32),
+                                          "raster buffer");
+       if (raster == 0) {
+               TIFFError(TIFFFileName(in),
+                         "Failed to allocate buffer (%lu elements of %lu each)",
+                         (unsigned long)pixel_count,
+                         (unsigned long)sizeof(uint32));
+               return (0);
+       }
+
        if (!TIFFReadRGBAImage(in, width, height, raster, 0)) {
                _TIFFfree(raster);
                return (0);
@@ -322,7 +346,9 @@ tiffcvt(TIFF* in, TIFF* out)
        rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
        TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
 
-       return (cvtRaster(out, raster, width, height));
+       result = cvtRaster(out, raster, width, height);
+        _TIFFfree(raster);
+        return result;
 }
 
 char* stuff[] = {
@@ -355,3 +381,10 @@ usage(int code)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index d807e0541d0d91b8c8636c469f054c372ac3405c..171c138c6639ab7d0c14c51110504c8cb466fc65 100644 (file)
@@ -326,3 +326,10 @@ usage(void)
                fprintf(stderr, "%s\n", stuff[i]);
        exit(-1);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 13ad5a6e68d5b9ea2a860805f8f9e2bfcb74b633..9f0e7941133e457764ae231f27805bdb0e6dd0a2 100644 (file)
@@ -33,8 +33,8 @@
 
 #include "tiffio.h"
 
-typedef unsigned char u_char;
-typedef unsigned long u_long;
+typedef unsigned char unsigned char;
+typedef unsigned long uint32;
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
 #define        strneq(a,b,n)   (strncmp(a,b,n) == 0)
@@ -151,16 +151,16 @@ usage(void)
 }
 
 static void
-svRGBSeparate(TIFF* tif, u_long* ss, int xsize, int ysize)
+svRGBSeparate(TIFF* tif, uint32* ss, int xsize, int ysize)
 {
        tsize_t stripsize = TIFFStripSize(tif);
-       u_char *rbuf = (u_char *)_TIFFmalloc(3*stripsize);
-       u_char *gbuf = rbuf + stripsize;
-       u_char *bbuf = gbuf + stripsize;
+       unsigned char *rbuf = (unsigned char *)_TIFFmalloc(3*stripsize);
+       unsigned char *gbuf = rbuf + stripsize;
+       unsigned char *bbuf = gbuf + stripsize;
        register int y;
 
        for (y = 0; y <= ysize; y += rowsperstrip) {
-               u_char *rp, *gp, *bp;
+               unsigned char *rp, *gp, *bp;
                register int x;
                register uint32 n;
 
@@ -170,7 +170,7 @@ svRGBSeparate(TIFF* tif, u_long* ss, int xsize, int ysize)
                rp = rbuf; gp = gbuf; bp = bbuf;
                do {
                        for (x = 0; x <= xsize; x++) {
-                               u_long v = ss[x];
+                               uint32 v = ss[x];
                                rp[x] = v;
                                gp[x] = v >> 8;
                                bp[x] = v >> 16;
@@ -192,14 +192,14 @@ svRGBSeparate(TIFF* tif, u_long* ss, int xsize, int ysize)
 }
 
 static void
-svRGBContig(TIFF* tif, u_long* ss, int xsize, int ysize)
+svRGBContig(TIFF* tif, uint32* ss, int xsize, int ysize)
 {
        register int x, y;
        tsize_t stripsize = TIFFStripSize(tif);
-       u_char *strip = (u_char *)_TIFFmalloc(stripsize);
+       unsigned char *strip = (unsigned char *)_TIFFmalloc(stripsize);
 
        for (y = 0; y <= ysize; y += rowsperstrip) {
-               register u_char *pp = strip;
+               register unsigned char *pp = strip;
                register uint32 n;
 
                n = rowsperstrip;
@@ -207,7 +207,7 @@ svRGBContig(TIFF* tif, u_long* ss, int xsize, int ysize)
                        n = ysize-y+1;
                do {
                        for (x = 0; x <= xsize; x++) {
-                               u_long v = ss[x];
+                               uint32 v = ss[x];
                                pp[0] = v;
                                pp[1] = v >> 8;
                                pp[2] = v >> 16;
@@ -231,14 +231,14 @@ svRGBContig(TIFF* tif, u_long* ss, int xsize, int ysize)
 #define        BLUE    CVT(11)         /* 11% */
 
 static void
-svGrey(TIFF* tif, u_long* ss, int xsize, int ysize)
+svGrey(TIFF* tif, uint32* ss, int xsize, int ysize)
 {
        register int x, y;
-       u_char *buf = (u_char *)_TIFFmalloc(TIFFScanlineSize(tif));
+       unsigned char *buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(tif));
 
        for (y = 0; y <= ysize; y++) {
                for (x = 0; x <= xsize; x++) {
-                       u_char *cp = (u_char *)&ss[x];
+                       unsigned char *cp = (unsigned char *)&ss[x];
                        buf[x] = (RED*cp[3] + GREEN*cp[2] + BLUE*cp[1]) >> 8;
                }
                if (TIFFWriteScanline(tif, buf, (uint32) y, 0) < 0)
@@ -257,7 +257,7 @@ tiffsv(char* name, int x1, int x2, int y1, int y2)
        TIFF *tif;
        int xsize, ysize;
        int xorg, yorg;
-       u_long *scrbuf;
+       uint32 *scrbuf;
 
        xorg = MIN(x1,x2);
        yorg = MIN(y1,y2);
@@ -295,7 +295,7 @@ tiffsv(char* name, int x1, int x2, int y1, int y2)
        TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_BOTLEFT);
        rowsperstrip = TIFFDefaultStripSize(tif, rowsperstrip);
        TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
-       scrbuf = (u_long *)_TIFFmalloc((xsize+1)*(ysize+1)*sizeof (u_long));
+       scrbuf = (uint32 *)_TIFFmalloc((xsize+1)*(ysize+1)*sizeof (uint32));
        readdisplay(xorg, yorg, xorg+xsize, yorg+ysize, scrbuf, RD_FREEZE);
        if (photometric == PHOTOMETRIC_RGB) {
                if (config == PLANARCONFIG_SEPARATE)
@@ -307,3 +307,10 @@ tiffsv(char* name, int x1, int x2, int y1, int y2)
        (void) TIFFClose(tif);
        _TIFFfree((char *)scrbuf);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 6022514c1116e2e2404c533d12e625806374ec0f..b0a66a7b7b79326a478bb457e503cc191042d072 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #ifndef HAVE_GETOPT
@@ -100,6 +104,8 @@ main(int argc, char* argv[])
     if (out == NULL)
        return 2;
     in = TIFFOpen(argv[optind], "r");
+    if( in == NULL )
+        return 2;
 
     thumbnail = (uint8*) _TIFFmalloc(tnw * tnh);
     if (!thumbnail) {
@@ -159,6 +165,16 @@ cpTag(TIFF* in, TIFF* out, uint16 tag, uint16 count, TIFFDataType type)
                  CopyField(tag, longv);
                }
                break;
+       case TIFF_LONG8:
+               { uint64 longv8;
+                 CopyField(tag, longv8);
+               }
+               break;
+       case TIFF_SLONG8:
+               { int64 longv8;
+                 CopyField(tag, longv8);
+               }
+               break;
        case TIFF_RATIONAL:
                if (count == 1) {
                        float floatv;
@@ -182,7 +198,11 @@ cpTag(TIFF* in, TIFF* out, uint16 tag, uint16 count, TIFFDataType type)
                        CopyField(tag, doubleav);
                }
                break;
-          default:
+       case TIFF_IFD8:
+               { toff_t ifd8;
+                 CopyField(tag, ifd8);
+               }
+               break;          default:
                 TIFFError(TIFFFileName(in),
                           "Data type %d is not supported, tag %d skipped.",
                           tag, type);
@@ -230,7 +250,7 @@ static struct cpTag {
     { TIFFTAG_DATETIME,                        1, TIFF_ASCII },
     { TIFFTAG_ARTIST,                  1, TIFF_ASCII },
     { TIFFTAG_HOSTCOMPUTER,            1, TIFF_ASCII },
-    { TIFFTAG_WHITEPOINT,              1, TIFF_RATIONAL },
+    { TIFFTAG_WHITEPOINT,              2, TIFF_RATIONAL },
     { TIFFTAG_PRIMARYCHROMATICITIES,   (uint16) -1,TIFF_RATIONAL },
     { TIFFTAG_HALFTONEHINTS,           2, TIFF_SHORT },
     { TIFFTAG_BADFAXLINES,             1, TIFF_LONG },
@@ -266,18 +286,18 @@ cpStrips(TIFF* in, TIFF* out)
 
     if (buf) {
        tstrip_t s, ns = TIFFNumberOfStrips(in);
-       tsize_t *bytecounts;
+       uint64 *bytecounts;
 
        TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts);
        for (s = 0; s < ns; s++) {
-           if (bytecounts[s] > bufsize) {
-               buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[s]);
+         if (bytecounts[s] > (uint64) bufsize) {
+               buf = (unsigned char *)_TIFFrealloc(buf, (tmsize_t)bytecounts[s]);
                if (!buf)
                    goto bad;
-               bufsize = bytecounts[s];
+               bufsize = (tmsize_t)bytecounts[s];
            }
-           if (TIFFReadRawStrip(in, s, buf, bytecounts[s]) < 0 ||
-               TIFFWriteRawStrip(out, s, buf, bytecounts[s]) < 0) {
+           if (TIFFReadRawStrip(in, s, buf, (tmsize_t)bytecounts[s]) < 0 ||
+               TIFFWriteRawStrip(out, s, buf, (tmsize_t)bytecounts[s]) < 0) {
                _TIFFfree(buf);
                return 0;
            }
@@ -300,18 +320,18 @@ cpTiles(TIFF* in, TIFF* out)
 
     if (buf) {
        ttile_t t, nt = TIFFNumberOfTiles(in);
-       tsize_t *bytecounts;
+       uint64 *bytecounts;
 
        TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts);
        for (t = 0; t < nt; t++) {
-           if (bytecounts[t] > bufsize) {
-               buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[t]);
+           if (bytecounts[t] > (uint64) bufsize) {
+               buf = (unsigned char *)_TIFFrealloc(buf, (tmsize_t)bytecounts[t]);
                if (!buf)
                    goto bad;
-               bufsize = bytecounts[t];
+               bufsize = (tmsize_t)bytecounts[t];
            }
-           if (TIFFReadRawTile(in, t, buf, bytecounts[t]) < 0 ||
-               TIFFWriteRawTile(out, t, buf, bytecounts[t]) < 0) {
+           if (TIFFReadRawTile(in, t, buf, (tmsize_t)bytecounts[t]) < 0 ||
+               TIFFWriteRawTile(out, t, buf, (tmsize_t)bytecounts[t]) < 0) {
                _TIFFfree(buf);
                return 0;
            }
@@ -553,7 +573,7 @@ generateThumbnail(TIFF* in, TIFF* out)
     uint16 bps, spp;
     tsize_t rowsize, rastersize;
     tstrip_t s, ns = TIFFNumberOfStrips(in);
-    uint32 diroff[1];
+    toff_t diroff[1];
 
     TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &sw);
     TIFFGetField(in, TIFFTAG_IMAGELENGTH, &sh);
@@ -594,7 +614,7 @@ generateThumbnail(TIFF* in, TIFF* out)
     cpTag(in, out, TIFFTAG_IMAGEDESCRIPTION,   (uint16) -1, TIFF_ASCII);
     cpTag(in, out, TIFFTAG_DATETIME,           (uint16) -1, TIFF_ASCII);
     cpTag(in, out, TIFFTAG_HOSTCOMPUTER,       (uint16) -1, TIFF_ASCII);
-    diroff[0] = 0;
+    diroff[0] = 0UL;
     TIFFSetField(out, TIFFTAG_SUBIFD, 1, diroff);
     return (TIFFWriteEncodedStrip(out, 0, thumbnail, tnw*tnh) != -1 &&
             TIFFWriteDirectory(out) != -1);
@@ -630,3 +650,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index b357fa4650054b6bd9e967b8466bb0503668eb54..8d16b295c1966167815ec5b5f186dcf6b6fa86af 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp((a),(b)) == 0)
@@ -395,7 +399,7 @@ static struct cpTag {
        { TIFFTAG_DATETIME,             1, TIFF_ASCII },
        { TIFFTAG_ARTIST,               1, TIFF_ASCII },
        { TIFFTAG_HOSTCOMPUTER,         1, TIFF_ASCII },
-       { TIFFTAG_WHITEPOINT,           1, TIFF_RATIONAL },
+       { TIFFTAG_WHITEPOINT,           2, TIFF_RATIONAL },
        { TIFFTAG_PRIMARYCHROMATICITIES,(uint16) -1,TIFF_RATIONAL },
        { TIFFTAG_HALFTONEHINTS,        2, TIFF_SHORT },
        { TIFFTAG_INKSET,               1, TIFF_SHORT },
@@ -458,3 +462,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 0b1795b5da8f9bda577f7a59dfdf17c423832002..b9a6075afe62888385ca8d39bd79a7486789d10a 100644 (file)
 #include <string.h>
 #include <ctype.h>
 #include <time.h>
-
-#include "tiffiop.h"
+#include <errno.h>
 
 #if HAVE_UNISTD_H
 # include <unistd.h>
 #endif
 
-#ifndef NULL
-#define NULL ((void*)0)
+#ifdef HAVE_FCNTL_H
+# include <fcntl.h>
+#endif
+
+#ifdef HAVE_IO_H
+# include <io.h>
+#endif
+
+#ifdef NEED_LIBPORT
+# include "libport.h"
 #endif
 
-#if defined(VMS)
-#define unlink remove
+#include "tiffiop.h"
+#include "tiffio.h"
+
+#ifndef HAVE_GETOPT
+extern int getopt(int, char**, char*);
+#endif
+
+#ifndef EXIT_SUCCESS
+# define EXIT_SUCCESS  0
 #endif
-#if defined(_WIN32) && defined(USE_WIN32_FILEIO)
-#include <windows.h>
-#include <tchar.h>
-#define unlink DeleteFileA
+#ifndef EXIT_FAILURE
+# define EXIT_FAILURE  1
 #endif
 
 #define TIFF2PDF_MODULE "tiff2pdf"
-#define T2P_VERSION "d"
+
+#define PS_UNIT_SIZE   72.0F
 
 /* This type is of PDF color spaces. */
-typedef enum{
-       T2P_CS_BILEVEL=0x01, /* Bilevel, black and white */
-       T2P_CS_GRAY=0x02, /* Single channel */
-       T2P_CS_RGB=0x04, /* Three channel tristimulus RGB */
-       T2P_CS_CMYK=0x08, /* Four channel CMYK print inkset */
-       T2P_CS_LAB=0x10, /* Three channel L*a*b* color space */
-       T2P_CS_PALETTE=0x1000 /* One of the above with a color map */
-       , T2P_CS_CALGRAY=0x20 /* Calibrated single channel */
-       , T2P_CS_CALRGB=0x40 /* Calibrated three channel tristimulus RGB */
-       , T2P_CS_ICCBASED=0x80 /* ICC profile color specification */
+typedef enum {
+       T2P_CS_BILEVEL = 0x01,  /* Bilevel, black and white */
+       T2P_CS_GRAY = 0x02,     /* Single channel */
+       T2P_CS_RGB = 0x04,      /* Three channel tristimulus RGB */
+       T2P_CS_CMYK = 0x08,     /* Four channel CMYK print inkset */
+       T2P_CS_LAB = 0x10,      /* Three channel L*a*b* color space */
+       T2P_CS_PALETTE = 0x1000,/* One of the above with a color map */
+       T2P_CS_CALGRAY = 0x20,  /* Calibrated single channel */
+       T2P_CS_CALRGB = 0x40,   /* Calibrated three channel tristimulus RGB */
+       T2P_CS_ICCBASED = 0x80  /* ICC profile color specification */
 } t2p_cs_t;
 
 /* This type is of PDF compression types.  */
@@ -160,9 +173,6 @@ typedef struct {
        uint16 tiff_orientation;
        toff_t tiff_dataoffset;
        tsize_t tiff_datasize;
-       TIFFReadWriteProc tiff_readproc;
-       TIFFReadWriteProc tiff_writeproc;
-       TIFFSeekProc tiff_seekproc;
        uint16 tiff_resunit;
        uint16 pdf_centimeters;
        uint16 pdf_overrideres;
@@ -177,6 +187,7 @@ typedef struct {
        float pdf_pagelength;
        float pdf_imagewidth;
        float pdf_imagelength;
+       int pdf_image_fillpage; /* 0 (default: no scaling, 1:scale imagesize to pagesize */
        T2P_BOX pdf_mediabox;
        T2P_BOX pdf_imagebox;
        uint16 pdf_majorversion;
@@ -187,13 +198,20 @@ typedef struct {
        uint32 pdf_palettecs;
        uint16 pdf_fitwindow;
        uint32 pdf_startxref;
-       char* pdf_fileid;
-       char* pdf_datetime;
-       char* pdf_creator;
-       char* pdf_author;
-       char* pdf_title;
-       char* pdf_subject;
-       char* pdf_keywords;
+#define TIFF2PDF_FILEID_SIZE 33
+       char pdf_fileid[TIFF2PDF_FILEID_SIZE];
+#define TIFF2PDF_DATETIME_SIZE 17
+       char pdf_datetime[TIFF2PDF_DATETIME_SIZE];
+#define TIFF2PDF_CREATOR_SIZE 512
+       char pdf_creator[TIFF2PDF_CREATOR_SIZE];
+#define TIFF2PDF_AUTHOR_SIZE 512
+       char pdf_author[TIFF2PDF_AUTHOR_SIZE];
+#define TIFF2PDF_TITLE_SIZE 512
+       char pdf_title[TIFF2PDF_TITLE_SIZE];
+#define TIFF2PDF_SUBJECT_SIZE 512
+       char pdf_subject[TIFF2PDF_SUBJECT_SIZE];
+#define TIFF2PDF_KEYWORDS_SIZE 512
+       char pdf_keywords[TIFF2PDF_KEYWORDS_SIZE];
        t2p_cs_t pdf_colorspace;
        uint16 pdf_colorspace_invert;
        uint16 pdf_switchdecode;
@@ -225,6 +243,11 @@ typedef struct {
        uint32 pdf_icccs;
        uint32 tiff_iccprofilelength;
        tdata_t tiff_iccprofile;
+
+       /* fields for custom read/write procedures */
+       FILE *outputfile;
+       int outputdisable;
+       tsize_t outputwritten;
 } T2P;
 
 /* These functions are called by main. */
@@ -247,10 +270,6 @@ void t2p_free(T2P*);
 }
 #endif
 
-tsize_t t2p_empty_readproc(thandle_t, tdata_t, tsize_t);
-tsize_t t2p_empty_writeproc(thandle_t, tdata_t, tsize_t);
-toff_t t2p_empty_seekproc(thandle_t, toff_t, int);
-int t2p_empty_closeproc(thandle_t);
 void t2p_read_tiff_init(T2P*, TIFF*);
 int t2p_cmp_t2p_page(const void*, const void*);
 void t2p_read_tiff_data(T2P*, TIFF*);
@@ -279,7 +298,7 @@ tsize_t t2p_sample_lab_signed_to_unsigned(tdata_t, uint32);
 tsize_t t2p_write_pdf_header(T2P*, TIFF*);
 tsize_t t2p_write_pdf_obj_start(uint32, TIFF*);
 tsize_t t2p_write_pdf_obj_end(TIFF*);
-tsize_t t2p_write_pdf_name(char*, TIFF*);
+tsize_t t2p_write_pdf_name(unsigned char*, TIFF*);
 tsize_t t2p_write_pdf_string(char*, TIFF*);
 tsize_t t2p_write_pdf_stream(tdata_t, tsize_t, TIFF*);
 tsize_t t2p_write_pdf_stream_start(TIFF*);
@@ -313,6 +332,137 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t, T2P*, TIFF*);
 tsize_t t2p_write_pdf_xreftable(T2P*, TIFF*);
 tsize_t t2p_write_pdf_trailer(T2P*, TIFF*);
 
+static void
+t2p_disable(TIFF *tif)
+{
+       T2P *t2p = (T2P*) TIFFClientdata(tif);
+       t2p->outputdisable = 1;
+}
+
+static void
+t2p_enable(TIFF *tif)
+{
+       T2P *t2p = (T2P*) TIFFClientdata(tif);
+       t2p->outputdisable = 0;
+}
+
+/*
+ * Procs for TIFFClientOpen
+ */
+
+static tmsize_t 
+t2pReadFile(TIFF *tif, tdata_t data, tmsize_t size)
+{
+       thandle_t client = TIFFClientdata(tif);
+       TIFFReadWriteProc proc = TIFFGetReadProc(tif);
+       if (proc)
+               return proc(client, data, size);
+       return -1;
+}
+
+static tmsize_t 
+t2pWriteFile(TIFF *tif, tdata_t data, tmsize_t size)
+{
+       thandle_t client = TIFFClientdata(tif);
+       TIFFReadWriteProc proc = TIFFGetWriteProc(tif);
+       if (proc)
+               return proc(client, data, size);
+       return -1;
+}
+
+static uint64
+t2pSeekFile(TIFF *tif, toff_t offset, int whence)
+{
+       thandle_t client = TIFFClientdata(tif);
+       TIFFSeekProc proc = TIFFGetSeekProc(tif);
+       if (proc)
+               return proc(client, offset, whence);
+       return -1;
+}
+
+static tmsize_t 
+t2p_readproc(thandle_t handle, tdata_t data, tmsize_t size) 
+{
+       (void) handle, (void) data, (void) size;
+       return -1;
+}
+
+static tmsize_t 
+t2p_writeproc(thandle_t handle, tdata_t data, tmsize_t size) 
+{
+       T2P *t2p = (T2P*) handle;
+       if (t2p->outputdisable <= 0 && t2p->outputfile) {
+               tsize_t written = fwrite(data, 1, size, t2p->outputfile);
+               t2p->outputwritten += written;
+               return written;
+       }
+       return size; 
+}
+
+static uint64 
+t2p_seekproc(thandle_t handle, uint64 offset, int whence) 
+{ 
+       T2P *t2p = (T2P*) handle;
+       if (t2p->outputdisable <= 0 && t2p->outputfile)
+               return fseek(t2p->outputfile, (long) offset, whence);
+       return offset;
+}
+
+static int 
+t2p_closeproc(thandle_t handle)
+{ 
+       (void) handle;
+       return 0; 
+}
+
+static uint64 
+t2p_sizeproc(thandle_t handle) 
+{
+       (void) handle;
+       return -1;
+}
+
+static int 
+t2p_mapproc(thandle_t handle, void **data, toff_t *offset) 
+{ 
+       (void) handle, (void) data, (void) offset;
+       return -1; 
+}
+
+static void 
+t2p_unmapproc(thandle_t handle, void *data, toff_t offset)
+{ 
+       (void) handle, (void) data, (void) offset;
+}
+
+static uint64
+checkAdd64(uint64 summand1, uint64 summand2, T2P* t2p)
+{
+       uint64 bytes = summand1 + summand2;
+
+       if (bytes - summand1 != summand2) {
+               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+               t2p->t2p_error = T2P_ERR_ERROR;
+               bytes = 0;
+       }
+
+       return bytes;
+}
+
+static uint64
+checkMultiply64(uint64 first, uint64 second, T2P* t2p)
+{
+       uint64 bytes = first * second;
+
+       if (second && bytes / second != first) {
+               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+               t2p->t2p_error = T2P_ERR_ERROR;
+               bytes = 0;
+       }
+
+       return bytes;
+}
+
 /*
 
   This is the main function.
@@ -385,23 +535,22 @@ tsize_t t2p_write_pdf_trailer(T2P*, TIFF*);
     options:
     -o: output to file name
 
-    -j  compress with JPEG (requires libjpeg configured with libtiff)
-    -z  compress with Zip/Deflate (requires zlib configured with libtiff)
+    -j: compress with JPEG (requires libjpeg configured with libtiff)
+    -z: compress with Zip/Deflate (requires zlib configured with libtiff)
     -q: compression quality
-    -n  no compressed data passthrough
-    -d  do not compress (decompress)
-
-       -i  invert colors
-       
+    -n: no compressed data passthrough
+    -d: do not compress (decompress)
+    -i: invert colors
     -u: set distance unit, 'i' for inch, 'm' for centimeter
     -x: set x resolution default
     -y: set y resolution default
     -w: width in units
     -l: length in units
     -r: 'd' for resolution default, 'o' for resolution override
-    -p: paper size, eg "letter", "legal", "A4"
-    -f  set PDF "Fit Window" user preference
-    -b set PDF "Interpolate" user preference
+    -p: paper size, eg "letter", "legal", "a4"
+    -F: make the tiff fill the PDF page
+    -f: set pdf "fit window" user preference
+    -b:        set PDF "Interpolate" user preference
     -e: date, overrides image or current date/time default, YYYYMMDDHHMMSS
     -c: creator, overrides image software default
     -a: author, overrides image artist default
@@ -409,7 +558,7 @@ tsize_t t2p_write_pdf_trailer(T2P*, TIFF*);
     -s: subject, overrides image image description default
     -k: keywords
 
-    -h  usage
+    -h: usage
 
     examples:
 
@@ -419,17 +568,17 @@ tsize_t t2p_write_pdf_trailer(T2P*, TIFF*);
 
         tiff2pdf input.tiff
 
-    The above example would generate PDF output from input.tiff and write it 
+    The above example would generate PDF output from input.tiff and write it
     to standard output.
 
         tiff2pdf -j -p letter -o output.pdf input.tiff
 
-    The above example would generate the file output.pdf from input.tiff, 
-    putting the image pages on a letter sized page, compressing the output 
+    The above example would generate the file output.pdf from input.tiff,
+    putting the image pages on a letter sized page, compressing the output
     with JPEG.
 
        Please report bugs through:
-        
+
        http://bugzilla.remotesensing.org/buglist.cgi?product=libtiff
 
     See also libtiff.3t, tiffcp.
@@ -437,24 +586,23 @@ tsize_t t2p_write_pdf_trailer(T2P*, TIFF*);
 
 int main(int argc, char** argv){
 
-       extern int optind;
        extern char *optarg;
+       extern int optind;
+       const char *outfilename = NULL;
        T2P *t2p = NULL;
        TIFF *input = NULL, *output = NULL;
-       const char *outfilename = NULL;
-       tsize_t written=0;
-       int c=0;
-       
+       int c, ret = EXIT_SUCCESS;
+
        t2p = t2p_init();
 
        if (t2p == NULL){
-               TIFFError(
-                       TIFF2PDF_MODULE, 
-                       "Can't initialize context");
-               goto failexit;
+               TIFFError(TIFF2PDF_MODULE, "Can't initialize context");
+               goto fail;
        }
 
-       while ((c = getopt(argc, argv, "o:q:u:x:y:w:l:r:p:e:c:a:t:s:k:jzndifbh")) != -1){
+       while (argv &&
+              (c = getopt(argc, argv,
+                          "o:q:u:x:y:w:l:r:p:e:c:a:t:s:k:jzndifbhF")) != -1){
                switch (c) {
                        case 'o':
                                outfilename = optarg;
@@ -508,12 +656,12 @@ int main(int argc, char** argv){
                        case 'w': 
                                t2p->pdf_overridepagesize=1;
                                t2p->pdf_defaultpagewidth = 
-                                       ((float)atof(optarg) * 72.0F) / (t2p->pdf_centimeters?2.54F:1.0F);
+                                       ((float)atof(optarg) * PS_UNIT_SIZE) / (t2p->pdf_centimeters?2.54F:1.0F);
                                break;
                        case 'l': 
                                t2p->pdf_overridepagesize=1;
                                t2p->pdf_defaultpagelength = 
-                                       ((float)atof(optarg) * 72.0F) / (t2p->pdf_centimeters?2.54F:1.0F);
+                                       ((float)atof(optarg) * PS_UNIT_SIZE) / (t2p->pdf_centimeters?2.54F:1.0F);
                                break;
                        case 'r': 
                                if(optarg[0]=='o'){
@@ -535,210 +683,133 @@ int main(int argc, char** argv){
                        case 'i':
                                t2p->pdf_colorspace_invert=1;
                                break;
+                       case 'F':
+                               t2p->pdf_image_fillpage = 1;
+                               break;
                        case 'f': 
                                t2p->pdf_fitwindow=1;
                                break;
                        case 'e':
-                               t2p->pdf_datetime = (char*)_TIFFmalloc(17);
-                               if(t2p->pdf_datetime==NULL){
-                                       TIFFError(TIFF2PDF_MODULE, 
-                               "Can't allocate %u bytes of memory for main", 
-                                               17); 
-                                       goto failfreet2p;
-                               }
-                               if(strlen(optarg)==0){
-                                       t2p->pdf_datetime[0]=0;
+                               if (strlen(optarg) == 0) {
+                                       t2p->pdf_datetime[0] = '\0';
                                } else {
-                                       if(strlen(optarg)>14){optarg[14]=0;}
-                                       t2p->pdf_datetime[0]='D';
-                                       t2p->pdf_datetime[1]=':';
-                                       strcpy(&(t2p->pdf_datetime[2]), optarg);
+                                       t2p->pdf_datetime[0] = 'D';
+                                       t2p->pdf_datetime[1] = ':';
+                                       strncpy(t2p->pdf_datetime + 2, optarg,
+                                               sizeof(t2p->pdf_datetime) - 3);
+                                       t2p->pdf_datetime[sizeof(t2p->pdf_datetime) - 1] = '\0';
                                }
                                break;
                        case 'c': 
-                               t2p->pdf_creator =
-                                       (char *)_TIFFmalloc(strlen(optarg) + 1);
-                               if(t2p->pdf_creator==NULL){
-                                       TIFFError(TIFF2PDF_MODULE, 
-                               "Can't allocate %u bytes of memory for main", 
-                                                 strlen(optarg)+1); 
-                                       goto failfreet2p;
-                               }
-                               strcpy(t2p->pdf_creator, optarg);
-                               t2p->pdf_creator[strlen(optarg)]=0;
+                               strncpy(t2p->pdf_creator, optarg, sizeof(t2p->pdf_creator) - 1);
+                               t2p->pdf_creator[sizeof(t2p->pdf_creator) - 1] = '\0';
                                break;
                        case 'a': 
-                               t2p->pdf_author =
-                                       (char *)_TIFFmalloc(strlen(optarg) + 1);
-                               if(t2p->pdf_author==NULL){
-                                       TIFFError(
-                                               TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for main", 
-                                               strlen(optarg)+1); 
-                                       goto failfreet2p;
-                               }
-                               strcpy(t2p->pdf_author, optarg);
-                               t2p->pdf_author[strlen(optarg)]=0;
+                               strncpy(t2p->pdf_author, optarg, sizeof(t2p->pdf_author) - 1);
+                               t2p->pdf_author[sizeof(t2p->pdf_author) - 1] = '\0';
                                break;
                        case 't': 
-                               t2p->pdf_title= (char*)_TIFFmalloc(strlen(optarg)+1);
-                               if(t2p->pdf_title==NULL){
-                                       TIFFError(
-                                               TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for main", 
-                                               strlen(optarg)+1); 
-                                       goto failfreet2p;
-                               }
-                               strcpy(t2p->pdf_title, optarg);
-                               t2p->pdf_title[strlen(optarg)]=0;
+                               strncpy(t2p->pdf_title, optarg, sizeof(t2p->pdf_title) - 1);
+                               t2p->pdf_title[sizeof(t2p->pdf_title) - 1] = '\0';
                                break;
                        case 's': 
-                               t2p->pdf_subject= (char*)_TIFFmalloc(strlen(optarg)+1);
-                               if(t2p->pdf_subject==NULL){
-                                       TIFFError(
-                                               TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for main", 
-                                               strlen(optarg)+1); 
-                                       goto failfreet2p;
-                               }
-                               strcpy(t2p->pdf_subject, optarg);
-                               t2p->pdf_subject[strlen(optarg)]=0;
+                               strncpy(t2p->pdf_subject, optarg, sizeof(t2p->pdf_subject) - 1);
+                               t2p->pdf_subject[sizeof(t2p->pdf_subject) - 1] = '\0';
                                break;
                        case 'k': 
-                               t2p->pdf_keywords= (char*)_TIFFmalloc(strlen(optarg)+1);
-                               if(t2p->pdf_keywords==NULL){
-                                       TIFFError(
-                                               TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for main", 
-                                               strlen(optarg)+1); 
-                                       goto failfreet2p;
-                               }
-                               strcpy(t2p->pdf_keywords, optarg);
-                               t2p->pdf_keywords[strlen(optarg)]=0;
-                               break;          
+                               strncpy(t2p->pdf_keywords, optarg, sizeof(t2p->pdf_keywords) - 1);
+                               t2p->pdf_keywords[sizeof(t2p->pdf_keywords) - 1] = '\0';
+                               break;
                        case 'b':
                                t2p->pdf_image_interpolate = 1;
                                break;
                        case 'h': 
                        case '?': 
                                tiff2pdf_usage();
-                               goto failfreet2p;
+                               goto success;
                                break;
                }
        }
 
-       t2p_validate(t2p);
-
-       if(argc>optind){
+       /*
+        * Input
+        */
+       if(argc > optind) {
                input = TIFFOpen(argv[optind++], "r");
-               if(input==NULL){
-                       TIFFError(
-                               TIFF2PDF_MODULE, 
-                               "Can't open input file %s for reading", 
-                               argv[optind-1]);
-                       goto failfreet2p;
+               if (input==NULL) {
+                       TIFFError(TIFF2PDF_MODULE, 
+                                 "Can't open input file %s for reading", 
+                                 argv[optind-1]);
+                       goto fail;
                }
        } else {
-               TIFFError(
-                       TIFF2PDF_MODULE, 
-                       "No input file specified"); 
+               TIFFError(TIFF2PDF_MODULE, "No input file specified"); 
                tiff2pdf_usage();
-               goto failfreet2p;
+               goto fail;
        }
 
-       if(argc>optind){
-               TIFFError(
-                       TIFF2PDF_MODULE, 
-                       "No support for multiple input files"); 
+       if(argc > optind) {
+               TIFFError(TIFF2PDF_MODULE, 
+                         "No support for multiple input files"); 
                tiff2pdf_usage();
-               goto failcloseinput;
+               goto fail;
        }
 
+       /*
+        * Output
+        */
+       t2p->outputdisable = 0;
        if (outfilename) {
-               output = TIFFOpen(outfilename, "w");
-               if(output == NULL) {
-                       TIFFError(TIFF2PDF_MODULE, 
-                                 "Can't open output file %s for writing", 
-                                 optarg);
-                       goto failfreet2p;
-               }
-               if(output->tif_seekproc != NULL) {
-                       TIFFSeekFile(output, (toff_t) 0, SEEK_SET);
+               t2p->outputfile = fopen(outfilename, "wb");
+               if (t2p->outputfile == NULL) {
+                       TIFFError(TIFF2PDF_MODULE,
+                                 "Can't open output file %s for writing",
+                                 outfilename);
+                       goto fail;
                }
        } else {
-#if !defined(_WIN32) || defined(AVOID_WIN32_FILEIO)
-               output = TIFFFdOpen((int)fileno(tmpfile()), "-", "w");
-#else
-               {
-                       TCHAR temppath[MAX_PATH];
-                       TCHAR tempfile[MAX_PATH];
-                       GetTempPath((DWORD)MAX_PATH, (LPTSTR)temppath);
-                       GetTempFileName((LPCTSTR)temppath, (LPTSTR) "t2p", 0, (LPTSTR)tempfile);
-                       output = TIFFFdOpen( (int)CreateFile(
-                               (LPCTSTR)tempfile, 
-                               GENERIC_WRITE, 
-                               0, 
-                               NULL, 
-                               CREATE_ALWAYS, 
-                               FILE_FLAG_DELETE_ON_CLOSE,  
-                               NULL), 
-                               "-", "w");
-               }
-#endif
-               if(output==NULL){
-                       TIFFError(TIFF2PDF_MODULE, 
-                       "Can't open temporary output file for writing to stdout", 
-                                 argv[optind-1]);
-                       goto failcloseinput;
-               }
-               TIFFFlush(output);
-               output->tif_readproc=t2p_empty_readproc;
-               output->tif_seekproc=t2p_empty_seekproc;
-               output->tif_closeproc=t2p_empty_closeproc;
-#if !defined(_WIN32) || defined(AVOID_WIN32_FILEIO)
-               close(output->tif_fd);
-               output->tif_fd=(int)fileno(stdout);
-#else
-               CloseHandle((HANDLE) output->tif_fd);
-               output->tif_fd=(int)GetStdHandle(STD_OUTPUT_HANDLE);
-#endif
-               output->tif_clientdata=(thandle_t)output->tif_fd;
+               outfilename = "-";
+               t2p->outputfile = stdout;
        }
 
-       written = t2p_write_pdf(t2p, input, output);
-
-       if(t2p->t2p_error != 0){
-               TIFFError(
-                       TIFF2PDF_MODULE, 
-                       "An error occurred in converting TIFF %s to PDF %s", 
-                       TIFFFileName(input), 
-                       TIFFFileName(output)
-                       );
-               goto failcloseinput;
+       output = TIFFClientOpen(outfilename, "w", (thandle_t) t2p,
+                               t2p_readproc, t2p_writeproc, t2p_seekproc, 
+                               t2p_closeproc, t2p_sizeproc, 
+                               t2p_mapproc, t2p_unmapproc);
+       if (output == NULL) {
+               TIFFError(TIFF2PDF_MODULE,
+                         "Can't initialize output descriptor");
+               goto fail;
        }
-
-       if(input != NULL){
+       
+       /*
+        * Validate
+        */
+       t2p_validate(t2p);
+       t2pSeekFile(output, (toff_t) 0, SEEK_SET);
+
+       /*
+        * Write
+        */
+       t2p_write_pdf(t2p, input, output);
+       if (t2p->t2p_error != 0) {
+               TIFFError(TIFF2PDF_MODULE,
+                         "An error occurred creating output PDF file");
+               goto fail;
+       }
+
+       goto success;
+fail:
+       ret = EXIT_FAILURE;
+success:
+       if(input != NULL)
                TIFFClose(input);
-       }
-       if(output != NULL){
+       if (output != NULL)
                TIFFClose(output);
-       }
-       if(t2p != NULL){
-               t2p_free(t2p);
-       }
-
-       return(EXIT_SUCCESS);
-
-failcloseinput:
-       if(input != NULL){
-               TIFFClose(input);
-       }
-failfreet2p:
-       if(t2p != NULL){
+       if (t2p != NULL)
                t2p_free(t2p);
-       }
-failexit:
-       return(EXIT_FAILURE);
+       return ret;
+  
 }
 
 void tiff2pdf_usage(){
@@ -747,14 +818,15 @@ void tiff2pdf_usage(){
        "options:",
        " -o: output to file name",
 #ifdef JPEG_SUPPORT
-       " -j  compress with JPEG", 
+       " -j: compress with JPEG", 
 #endif
 #ifdef ZIP_SUPPORT
-       " -z  compress with Zip/Deflate",
+       " -z: compress with Zip/Deflate",
 #endif
        " -q: compression quality",
-       " -n  no compressed data passthrough",
-       " -d  do not compress (decompress)",
+       " -n: no compressed data passthrough",
+       " -d: do not compress (decompress)",
+       " -i: invert colors",
        " -u: set distance unit, 'i' for inch, 'm' for centimeter",
        " -x: set x resolution default in dots per unit",
        " -y: set y resolution default in dots per unit",
@@ -762,15 +834,16 @@ void tiff2pdf_usage(){
        " -l: length in units",
        " -r: 'd' for resolution default, 'o' for resolution override",
        " -p: paper size, eg \"letter\", \"legal\", \"A4\"",
-       " -f  set PDF \"Fit Window\" user preference",
+  " -F: make the tiff fill the PDF page",
+       " -f: set PDF \"Fit Window\" user preference",
        " -e: date, overrides image or current date/time default, YYYYMMDDHHMMSS",
        " -c: sets document creator, overrides image software default",
        " -a: sets document author, overrides image artist default",
        " -t: sets document title, overrides image document name default",
        " -s: sets document subject, overrides image image description default",
        " -k: sets document keywords",
-       " -b set PDF \"Interpolate\" user preference",
-       " -h  usage",
+       " -b: set PDF \"Interpolate\" user preference",
+       " -h: usage",
        NULL
        };
        int i=0;
@@ -785,8 +858,7 @@ void tiff2pdf_usage(){
 
 int tiff2pdf_match_paper_size(float* width, float* length, char* papersize){
 
-       int i=0;
-       int len=0;
+       size_t i, len;
        const char* sizes[]={
                "LETTER", "A4", "LEGAL",
                "EXECUTIVE", "LETTER", "LEGAL", "LEDGER", "TABLOID", 
@@ -845,17 +917,17 @@ int tiff2pdf_match_paper_size(float* width, float* length, char* papersize){
 }
 
 /*
-       This function allocates and initializes a T2P context struct pointer.
-*/
-
-T2P* t2p_init(){
+ * This function allocates and initializes a T2P context struct pointer.
+ */
 
+T2P* t2p_init()
+{
        T2P* t2p = (T2P*) _TIFFmalloc(sizeof(T2P));
        if(t2p==NULL){
                TIFFError(
                        TIFF2PDF_MODULE, 
-                       "Can't allocate %u bytes of memory for t2p_init", 
-                       sizeof(T2P));
+                       "Can't allocate %lu bytes of memory for t2p_init", 
+                       (unsigned long) sizeof(T2P));
                return( (T2P*) NULL );
        }
        _TIFFmemset(t2p, 0x00, sizeof(T2P));
@@ -871,14 +943,14 @@ T2P* t2p_init(){
 }
 
 /*
-       This function frees a T2P context struct pointer and any allocated data fields of it.
-*/
-
-void t2p_free(T2P* t2p){
+ * This function frees a T2P context struct pointer and any allocated data fields of it.
+ */
 
-       int i=0;
+void t2p_free(T2P* t2p)
+{
+       int i = 0;
 
-       if(t2p != NULL){
+       if (t2p != NULL) {
                if(t2p->pdf_xrefoffsets != NULL){
                        _TIFFfree( (tdata_t) t2p->pdf_xrefoffsets);
                }
@@ -896,27 +968,6 @@ void t2p_free(T2P* t2p){
                if(t2p->pdf_palette != NULL){
                        _TIFFfree( (tdata_t) t2p->pdf_palette);
                }
-               if(t2p->pdf_fileid != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_fileid);
-               }
-               if(t2p->pdf_datetime != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_datetime);
-               }
-               if(t2p->pdf_creator != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_creator);
-               }
-               if(t2p->pdf_author != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_author);
-               }
-               if(t2p->pdf_title != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_title);
-               }
-               if(t2p->pdf_subject != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_subject);
-               }
-               if(t2p->pdf_keywords != NULL){
-                       _TIFFfree( (tdata_t) t2p->pdf_keywords);
-               }
 #ifdef OJPEG_SUPPORT
                if(t2p->pdf_ojpegdata != NULL){
                        _TIFFfree( (tdata_t) t2p->pdf_ojpegdata);
@@ -937,7 +988,7 @@ void t2p_validate(T2P* t2p){
 
 #ifdef JPEG_SUPPORT
        if(t2p->pdf_defaultcompression==T2P_COMPRESS_JPEG){
-               if(t2p->pdf_defaultcompressionquality<100 ||
+               if(t2p->pdf_defaultcompressionquality>100 ||
                        t2p->pdf_defaultcompressionquality<1){
                        t2p->pdf_defaultcompressionquality=0;
                }
@@ -945,25 +996,17 @@ void t2p_validate(T2P* t2p){
 #endif
 #ifdef ZIP_SUPPORT
        if(t2p->pdf_defaultcompression==T2P_COMPRESS_ZIP){
-               switch (t2p->pdf_defaultcompressionquality){
-                       case 1: case 10: case 11: case 12: case 13: case 14: case 15:
-                       case 101: case 110: case 111: case 112: case 113: case 114: case 115:
-                       case 201: case 210: case 211: case 212: case 213: case 214: case 215:
-                       case 301: case 310: case 311: case 312: case 313: case 314: case 315:
-                       case 401: case 410: case 411: case 412: case 413: case 414: case 415:
-                       case 501: case 510: case 511: case 512: case 513: case 514: case 515:
-                       case 601: case 610: case 611: case 612: case 613: case 614: case 615:
-                       case 701: case 710: case 711: case 712: case 713: case 714: case 715:
-                       case 801: case 810: case 811: case 812: case 813: case 814: case 815:
-                       case 901: case 910: case 911: case 912: case 913: case 914: case 915:
-                               break;
-                       default:
-                               t2p->pdf_defaultcompressionquality=0;
+               uint16 m=t2p->pdf_defaultcompressionquality%100;
+               if(t2p->pdf_defaultcompressionquality/100 > 9 ||
+                       (m>1 && m<10) || m>15){
+                       t2p->pdf_defaultcompressionquality=0;
                }
                if(t2p->pdf_defaultcompressionquality%100 !=0){
+                       t2p->pdf_defaultcompressionquality/=100;
+                       t2p->pdf_defaultcompressionquality*=100;
                        TIFFError(
                                TIFF2PDF_MODULE, 
-                               "PNG Group predictor differencing not implemented, assuming compresion quality %u", 
+                               "PNG Group predictor differencing not implemented, assuming compression quality %u", 
                                t2p->pdf_defaultcompressionquality);
                }
                t2p->pdf_defaultcompressionquality%=100;
@@ -996,8 +1039,8 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
        if(t2p->tiff_pages==NULL){
                TIFFError(
                        TIFF2PDF_MODULE, 
-                       "Can't allocate %u bytes of memory for tiff_pages array, %s", 
-                       directorycount * sizeof(T2P_PAGE), 
+                       "Can't allocate %lu bytes of memory for tiff_pages array, %s", 
+                       (unsigned long) directorycount * sizeof(T2P_PAGE), 
                        TIFFFileName(input));
                t2p->t2p_error = T2P_ERR_ERROR;
                return;
@@ -1007,8 +1050,8 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
        if(t2p->tiff_tiles==NULL){
                TIFFError(
                        TIFF2PDF_MODULE, 
-                       "Can't allocate %u bytes of memory for tiff_tiles array, %s", 
-                       directorycount * sizeof(T2P_TILES), 
+                       "Can't allocate %lu bytes of memory for tiff_tiles array, %s", 
+                       (unsigned long) directorycount * sizeof(T2P_TILES), 
                        TIFFFileName(input));
                t2p->t2p_error = T2P_ERR_ERROR;
                return;
@@ -1023,6 +1066,7 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
                                "Can't set directory %u of input file %s", 
                                i,
                                TIFFFileName(input));
+                       t2p->t2p_error = T2P_ERR_ERROR;
                        return;
                }
                if(TIFFGetField(input, TIFFTAG_PAGENUMBER, &pagen, &paged)){
@@ -1139,8 +1183,8 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
                        if( t2p->tiff_tiles[i].tiles_tiles == NULL){
                                TIFFError(
                                        TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_read_tiff_init, %s", 
-                                       t2p->tiff_tiles[i].tiles_tilecount * sizeof(T2P_TILE), 
+                                       "Can't allocate %lu bytes of memory for t2p_read_tiff_init, %s", 
+                                       (unsigned long) t2p->tiff_tiles[i].tiles_tilecount * sizeof(T2P_TILE), 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return;
@@ -1152,8 +1196,9 @@ void t2p_read_tiff_init(T2P* t2p, TIFF* input){
 }
 
 /*
-       This function is used by qsort to sort a T2P_PAGE* array of page structures by page number.
-*/
+ * This function is used by qsort to sort a T2P_PAGE* array of page structures
+ * by page number.
+ */
 
 int t2p_cmp_t2p_page(const void* e1, const void* e2){
 
@@ -1379,8 +1424,7 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
                                TIFFError(
                                        TIFF2PDF_MODULE, 
                                        "No support for palettized image %s with not one sample per pixel", 
-                                       TIFFFileName(input), 
-                                       t2p->tiff_samplesperpixel);
+                                       TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return;
                        }
@@ -1449,8 +1493,7 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
                                TIFFError(
                                        TIFF2PDF_MODULE, 
                                        "No support for palettized CMYK image %s with not one sample per pixel", 
-                                       TIFFFileName(input), 
-                                       t2p->tiff_samplesperpixel);
+                                       TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return;
                        }
@@ -1483,7 +1526,7 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
                                t2p->pdf_palette[(i*4)]  = (unsigned char) (r[i]>>8);
                                t2p->pdf_palette[(i*4)+1]= (unsigned char) (g[i]>>8);
                                t2p->pdf_palette[(i*4)+2]= (unsigned char) (b[i]>>8);
-                               t2p->pdf_palette[(i*4)+2]= (unsigned char) (a[i]>>8);
+                               t2p->pdf_palette[(i*4)+3]= (unsigned char) (a[i]>>8);
                        }
                        t2p->pdf_palettesize *= 4;
                        break;
@@ -1529,8 +1572,7 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
                        TIFFError(
                                TIFF2PDF_MODULE, 
                                "No support for %s with photometric interpretation LogL/LogLuv", 
-                               TIFFFileName(input),
-                               t2p->tiff_photometric);
+                               TIFFFileName(input));
                        t2p->t2p_error = T2P_ERR_ERROR;
                        return;
                default:
@@ -1591,13 +1633,15 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
         if(TIFFGetField(input, TIFFTAG_YRESOLUTION, &(t2p->tiff_yres) ) == 0){
                 t2p->tiff_yres=0.0;
         }
-       TIFFGetFieldDefaulted(input, TIFFTAG_RESOLUTIONUNIT, &(t2p->tiff_resunit) );
-       if(t2p->tiff_resunit==RESUNIT_CENTIMETER){
-               t2p->tiff_xres*=2.54F;
-               t2p->tiff_yres*=2.54F;
-       } else if (t2p->tiff_resunit!=RESUNIT_INCH && t2p->pdf_centimeters!=0){
-               t2p->tiff_xres*=2.54F;
-               t2p->tiff_yres*=2.54F;
+       TIFFGetFieldDefaulted(input, TIFFTAG_RESOLUTIONUNIT,
+                             &(t2p->tiff_resunit));
+       if(t2p->tiff_resunit == RESUNIT_CENTIMETER) {
+               t2p->tiff_xres *= 2.54F;
+               t2p->tiff_yres *= 2.54F;
+       } else if (t2p->tiff_resunit != RESUNIT_INCH
+                  && t2p->pdf_centimeters != 0) {
+               t2p->tiff_xres *= 2.54F;
+               t2p->tiff_yres *= 2.54F;
        }
 
        t2p_compose_pdf_page(t2p);
@@ -1755,29 +1799,26 @@ void t2p_read_tiff_data(T2P* t2p, TIFF* input){
 
 void t2p_read_tiff_size(T2P* t2p, TIFF* input){
 
-       uint32* sbc=NULL;
+       uint64* sbc=NULL;
 #if defined(JPEG_SUPPORT) || defined (OJPEG_SUPPORT)
        unsigned char* jpt=NULL;
-       uint16 xuint16=0;
        tstrip_t i=0;
        tstrip_t stripcount=0;
 #endif
-#ifdef OJPEG_SUPPORT
-        tsize_t k = 0;
-#endif
+        uint64 k = 0;
 
        if(t2p->pdf_transcode == T2P_TRANSCODE_RAW){
 #ifdef CCITT_SUPPORT
                if(t2p->pdf_compression == T2P_COMPRESS_G4 ){
                        TIFFGetField(input, TIFFTAG_STRIPBYTECOUNTS, &sbc);
-                       t2p->tiff_datasize=sbc[0];
+                       t2p->tiff_datasize=(tmsize_t)sbc[0];
                        return;
                }
 #endif
 #ifdef ZIP_SUPPORT
                if(t2p->pdf_compression == T2P_COMPRESS_ZIP){
                        TIFFGetField(input, TIFFTAG_STRIPBYTECOUNTS, &sbc);
-                       t2p->tiff_datasize=sbc[0];
+                       t2p->tiff_datasize=(tmsize_t)sbc[0];
                        return;
                }
 #endif
@@ -1792,19 +1833,25 @@ void t2p_read_tiff_size(T2P* t2p, TIFF* input){
                        }
                        stripcount=TIFFNumberOfStrips(input);
                        for(i=0;i<stripcount;i++){
-                               k += sbc[i];
+                               k = checkAdd64(k, sbc[i], t2p);
                        }
                        if(TIFFGetField(input, TIFFTAG_JPEGIFOFFSET, &(t2p->tiff_dataoffset))){
                                if(t2p->tiff_dataoffset != 0){
                                        if(TIFFGetField(input, TIFFTAG_JPEGIFBYTECOUNT, &(t2p->tiff_datasize))!=0){
-                                               if(t2p->tiff_datasize < k) {
-                                                       t2p->pdf_ojpegiflength=t2p->tiff_datasize;
-                                                       t2p->tiff_datasize+=k;
-                                                       t2p->tiff_datasize+=6;
-                                                       t2p->tiff_datasize+=2*stripcount;
+                                               if((uint64)t2p->tiff_datasize < k) {
                                                        TIFFWarning(TIFF2PDF_MODULE, 
                                                                "Input file %s has short JPEG interchange file byte count", 
                                                                TIFFFileName(input));
+                                                       t2p->pdf_ojpegiflength=t2p->tiff_datasize;
+                                                       k = checkAdd64(k, t2p->tiff_datasize, t2p);
+                                                       k = checkAdd64(k, 6, t2p);
+                                                       k = checkAdd64(k, stripcount, t2p);
+                                                       k = checkAdd64(k, stripcount, t2p);
+                                                       t2p->tiff_datasize = (tsize_t) k;
+                                                       if ((uint64) t2p->tiff_datasize != k) {
+                                                               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+                                                               t2p->t2p_error = T2P_ERR_ERROR;
+                                                       }
                                                        return;
                                                }
                                                return;
@@ -1817,21 +1864,27 @@ void t2p_read_tiff_size(T2P* t2p, TIFF* input){
                                        }
                                }
                        }
-                       t2p->tiff_datasize+=k;
-                       t2p->tiff_datasize+=2*stripcount;
-                       t2p->tiff_datasize+=2048;
+                       k = checkAdd64(k, stripcount, t2p);
+                       k = checkAdd64(k, stripcount, t2p);
+                       k = checkAdd64(k, 2048, t2p);
+                       t2p->tiff_datasize = (tsize_t) k;
+                       if ((uint64) t2p->tiff_datasize != k) {
+                               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+                               t2p->t2p_error = T2P_ERR_ERROR;
+                       }
                        return;
                }
 #endif
 #ifdef JPEG_SUPPORT
-               if(t2p->tiff_compression == COMPRESSION_JPEG){
-                       if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &xuint16, &jpt) != 0 ){
-                               if(xuint16>4){
-                                       t2p->tiff_datasize+= xuint16;
-                                       t2p->tiff_datasize -=2; /* don't use EOI of header */
+               if(t2p->tiff_compression == COMPRESSION_JPEG) {
+                       uint32 count = 0;
+                       if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt) != 0 ){
+                               if(count > 4){
+                                       k += count;
+                                       k -= 2; /* don't use EOI of header */
                                }
                        } else {
-                               t2p->tiff_datasize=2; /* SOI for first strip */
+                               k = 2; /* SOI for first strip */
                        }
                        stripcount=TIFFNumberOfStrips(input);
                        if(!TIFFGetField(input, TIFFTAG_STRIPBYTECOUNTS, &sbc)){
@@ -1842,17 +1895,33 @@ void t2p_read_tiff_size(T2P* t2p, TIFF* input){
                                return;
                        }
                        for(i=0;i<stripcount;i++){
-                               t2p->tiff_datasize += sbc[i];
-                               t2p->tiff_datasize -=4; /* don't use SOI or EOI of strip */
+                               k = checkAdd64(k, sbc[i], t2p);
+                               k -=4; /* don't use SOI or EOI of strip */
                        }
-                       t2p->tiff_datasize +=2; /* use EOI of last strip */
+                       k = checkAdd64(k, 2, t2p); /* use EOI of last strip */
+                       t2p->tiff_datasize = (tsize_t) k;
+                       if ((uint64) t2p->tiff_datasize != k) {
+                               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+                               t2p->t2p_error = T2P_ERR_ERROR;
+                       }
+                       return;
                }
 #endif
                (void) 0;
        }
-       t2p->tiff_datasize=TIFFScanlineSize(input) * t2p->tiff_length;
+       k = checkMultiply64(TIFFScanlineSize(input), t2p->tiff_length, t2p);
        if(t2p->tiff_planar==PLANARCONFIG_SEPARATE){
-               t2p->tiff_datasize*= t2p->tiff_samplesperpixel;
+               k = checkMultiply64(k, t2p->tiff_samplesperpixel, t2p);
+       }
+       if (k == 0) {
+               /* Assume we had overflow inside TIFFScanlineSize */
+               t2p->t2p_error = T2P_ERR_ERROR;
+       }
+
+       t2p->tiff_datasize = (tsize_t) k;
+       if ((uint64) t2p->tiff_datasize != k) {
+               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+               t2p->t2p_error = T2P_ERR_ERROR;
        }
 
        return;
@@ -1865,12 +1934,12 @@ void t2p_read_tiff_size(T2P* t2p, TIFF* input){
 
 void t2p_read_tiff_size_tile(T2P* t2p, TIFF* input, ttile_t tile){
 
-       uint32* tbc = NULL;
+       uint64* tbc = NULL;
        uint16 edge=0;
 #ifdef JPEG_SUPPORT
-       uint16 xuint16=0;
        unsigned char* jpt;
 #endif
+        uint64 k;
 
        edge |= t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile);
        edge |= t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile);
@@ -1882,41 +1951,60 @@ void t2p_read_tiff_size_tile(T2P* t2p, TIFF* input, ttile_t tile){
 #endif
                ){
                        t2p->tiff_datasize=TIFFTileSize(input);
+                       if (t2p->tiff_datasize == 0) {
+                               /* Assume we had overflow inside TIFFTileSize */
+                               t2p->t2p_error = T2P_ERR_ERROR;
+                       }
                        return;
                } else {
                        TIFFGetField(input, TIFFTAG_TILEBYTECOUNTS, &tbc);
-                       t2p->tiff_datasize=tbc[tile];
+                       k=tbc[tile];
 #ifdef OJPEG_SUPPORT
                        if(t2p->tiff_compression==COMPRESSION_OJPEG){
-                               t2p->tiff_datasize+=2048;
-                               return;
+                               k = checkAdd64(k, 2048, t2p);
                        }
 #endif
 #ifdef JPEG_SUPPORT
-                       if(t2p->tiff_compression==COMPRESSION_JPEG){
-                               if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &xuint16, &jpt)!=0){
-                                       if(xuint16>4){
-                                               t2p->tiff_datasize+=xuint16;
-                                               t2p->tiff_datasize-=4; /* don't use EOI of header or SOI of tile */
+                       if(t2p->tiff_compression==COMPRESSION_JPEG) {
+                               uint32 count = 0;
+                               if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt)!=0){
+                                       if(count > 4){
+                                               k = checkAdd64(k, count, t2p);
+                                               k -= 2; /* don't use EOI of header or SOI of tile */
                                        }
                                }
                        }
 #endif
+                       t2p->tiff_datasize = (tsize_t) k;
+                       if ((uint64) t2p->tiff_datasize != k) {
+                               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+                               t2p->t2p_error = T2P_ERR_ERROR;
+                       }
                        return;
                }
        }
-       t2p->tiff_datasize=TIFFTileSize(input);
+       k = TIFFTileSize(input);
        if(t2p->tiff_planar==PLANARCONFIG_SEPARATE){
-               t2p->tiff_datasize*= t2p->tiff_samplesperpixel;
+               k = checkMultiply64(k, t2p->tiff_samplesperpixel, t2p);
+       }
+       if (k == 0) {
+               /* Assume we had overflow inside TIFFTileSize */
+               t2p->t2p_error = T2P_ERR_ERROR;
+       }
+
+       t2p->tiff_datasize = (tsize_t) k;
+       if ((uint64) t2p->tiff_datasize != k) {
+               TIFFError(TIFF2PDF_MODULE, "Integer overflow");
+               t2p->t2p_error = T2P_ERR_ERROR;
        }
 
        return;
 }
 
 /*
-       This functions returns a non-zero value when the tile is on the right edge 
      and does not have full imaged tile width.
-*/
+ * This functions returns a non-zero value when the tile is on the right edge
* and does not have full imaged tile width.
+ */
 
 int t2p_tile_is_right_edge(T2P_TILES tiles, ttile_t tile){
 
@@ -1926,15 +2014,12 @@ int t2p_tile_is_right_edge(T2P_TILES tiles, ttile_t tile){
        } else {
                return(0);
        }
-       
-       return(0);
-       
 }
 
 /*
-       This functions returns a non-zero value when the tile is on the bottom edge 
      and does not have full imaged tile length.
-*/
+ * This functions returns a non-zero value when the tile is on the bottom edge
* and does not have full imaged tile length.
+ */
 
 int t2p_tile_is_bottom_edge(T2P_TILES tiles, ttile_t tile){
 
@@ -1944,14 +2029,12 @@ int t2p_tile_is_bottom_edge(T2P_TILES tiles, ttile_t tile){
        } else {
                return(0);
        }
-       
-       return(0);
 }
 
 /*
-       This function returns a non-zero value when the tile is a right edge tile or a bottom 
      edge tile.
-*/
+ * This function returns a non-zero value when the tile is a right edge tile
* or a bottom edge tile.
+ */
 
 int t2p_tile_is_edge(T2P_TILES tiles, ttile_t tile){
 
@@ -1968,52 +2051,6 @@ int t2p_tile_is_corner_edge(T2P_TILES tiles, ttile_t tile){
        return(t2p_tile_is_right_edge(tiles, tile) & t2p_tile_is_bottom_edge(tiles, tile) );
 }
 
-/*
-       This function is an empty (dummy) TIFFReadWriteProc that returns the amount 
-       requested to be read without reading anything.
-*/
-
-tsize_t t2p_empty_readproc(thandle_t fd, tdata_t buf, tsize_t size){
-
-       (void) fd; (void) buf; (void) size;
-
-       return (size);
-}
-
-/*
-       This function is an empty (dummy) TIFFReadWriteProc that returns the amount 
-       requested to be written without writing anything.
-*/
-
-tsize_t t2p_empty_writeproc(thandle_t fd, tdata_t buf, tsize_t size){
-
-       (void) fd; (void) buf; (void) size;
-
-       return (size);
-}
-
-/*
-       This function is an empty (dummy) TIFFSeekProc that returns off.
-*/
-
-toff_t t2p_empty_seekproc(thandle_t fd, toff_t off, int whence){
-       
-       (void) fd; (void) off; (void) whence;
-
-       return( off );
-}
-
-/*
-       This function is an empty (dummy) TIFFCloseProc that returns 0.
-*/
-
-int t2p_empty_closeproc(thandle_t fd){
-       
-       (void) fd;
-       
-       return(0);
-}
-
 
 /*
        This function reads the raster image data from the input TIFF for an image and writes 
@@ -2044,87 +2081,115 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
 #endif
 #ifdef JPEG_SUPPORT
        unsigned char* jpt;
-       uint16 xuint16_1=0;
-       uint16 xuint16_2=0;
        float* xfloatp;
-       uint32* sbc;
+       uint64* sbc;
        unsigned char* stripbuffer;
        tsize_t striplength=0;
        uint32 max_striplength=0;
 #endif
 
+       /* Fail if prior error (in particular, can't trust tiff_datasize) */
+       if (t2p->t2p_error != T2P_ERR_OK)
+               return(0);
+
        if(t2p->pdf_transcode == T2P_TRANSCODE_RAW){
 #ifdef CCITT_SUPPORT
                if(t2p->pdf_compression == T2P_COMPRESS_G4){
-                       buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                       if(buffer==NULL){
+                       buffer = (unsigned char*)
+                               _TIFFmalloc(t2p->tiff_datasize);
+                       if (buffer == NULL) {
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
                        }
-                       TIFFReadRawStrip(input, 0, (tdata_t) buffer, t2p->tiff_datasize);
+                       TIFFReadRawStrip(input, 0, (tdata_t) buffer,
+                                        t2p->tiff_datasize);
                        if (t2p->tiff_fillorder==FILLORDER_LSB2MSB){
-                                       /* make sure is lsb-to-msb bit-endianness fill order */
-                                       TIFFReverseBits(buffer, t2p->tiff_datasize);
+                                       /*
+                                        * make sure is lsb-to-msb
+                                        * bit-endianness fill order
+                                        */
+                                       TIFFReverseBits(buffer,
+                                                       t2p->tiff_datasize);
                        }
-                       TIFFWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
+                       t2pWriteFile(output, (tdata_t) buffer,
+                                     t2p->tiff_datasize);
                        _TIFFfree(buffer);
                        return(t2p->tiff_datasize);
                }
 #endif
 #ifdef ZIP_SUPPORT
-               if(t2p->pdf_compression == T2P_COMPRESS_ZIP){
-                       buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                        memset(buffer, 0, t2p->tiff_datasize);
-                       if(buffer==NULL){
+               if (t2p->pdf_compression == T2P_COMPRESS_ZIP) {
+                       buffer = (unsigned char*)
+                               _TIFFmalloc(t2p->tiff_datasize);
+                       if(buffer == NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
                        }
-                       TIFFReadRawStrip(input, 0, (tdata_t) buffer, t2p->tiff_datasize);
-                       if (t2p->tiff_fillorder==FILLORDER_LSB2MSB){
-                                       TIFFReverseBits(buffer, t2p->tiff_datasize);
+                        memset(buffer, 0, t2p->tiff_datasize);
+                       TIFFReadRawStrip(input, 0, (tdata_t) buffer,
+                                        t2p->tiff_datasize);
+                       if (t2p->tiff_fillorder==FILLORDER_LSB2MSB) {
+                                       TIFFReverseBits(buffer,
+                                                       t2p->tiff_datasize);
                        }
-                       TIFFWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
+                       t2pWriteFile(output, (tdata_t) buffer,
+                                     t2p->tiff_datasize);
                        _TIFFfree(buffer);
                        return(t2p->tiff_datasize);
                }
 #endif
 #ifdef OJPEG_SUPPORT
-               if(t2p->tiff_compression == COMPRESSION_OJPEG){
+               if(t2p->tiff_compression == COMPRESSION_OJPEG) {
 
-                       if(t2p->tiff_dataoffset != 0){
-                               buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                                memset(buffer, 0, t2p->tiff_datasize);
-                               if(buffer==NULL){
+                       if(t2p->tiff_dataoffset != 0) {
+                               buffer = (unsigned char*)
+                                       _TIFFmalloc(t2p->tiff_datasize);
+                               if(buffer == NULL) {
                                        TIFFError(TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                               t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                               (unsigned long) t2p->tiff_datasize, 
                                                TIFFFileName(input));
                                        t2p->t2p_error = T2P_ERR_ERROR;
                                        return(0);
                                }
+                                memset(buffer, 0, t2p->tiff_datasize);
                                if(t2p->pdf_ojpegiflength==0){
-                                       inputoffset=TIFFSeekFile(input, 0, SEEK_CUR);
-                                       TIFFSeekFile(input, t2p->tiff_dataoffset, SEEK_SET);
-                                       TIFFReadFile(input, (tdata_t) buffer, t2p->tiff_datasize);
-                                       TIFFSeekFile(input, inputoffset, SEEK_SET);
-                                       TIFFWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
+                                       inputoffset=t2pSeekFile(input, 0,
+                                                                SEEK_CUR);
+                                       t2pSeekFile(input,
+                                                    t2p->tiff_dataoffset,
+                                                    SEEK_SET);
+                                       t2pReadFile(input, (tdata_t) buffer,
+                                                    t2p->tiff_datasize);
+                                       t2pSeekFile(input, inputoffset,
+                                                    SEEK_SET);
+                                       t2pWriteFile(output, (tdata_t) buffer,
+                                                     t2p->tiff_datasize);
                                        _TIFFfree(buffer);
                                        return(t2p->tiff_datasize);
                                } else {
-                                       inputoffset=TIFFSeekFile(input, 0, SEEK_CUR);
-                                       TIFFSeekFile(input, t2p->tiff_dataoffset, SEEK_SET);
-                                       bufferoffset=TIFFReadFile(input, (tdata_t) buffer, t2p->pdf_ojpegiflength);
-                                       t2p->pdf_ojpegiflength=0;
-                                       TIFFSeekFile(input, inputoffset, SEEK_SET);
-                                       TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &h_samp, &v_samp);
+                                       inputoffset=t2pSeekFile(input, 0,
+                                                                SEEK_CUR);
+                                       t2pSeekFile(input,
+                                                    t2p->tiff_dataoffset,
+                                                    SEEK_SET);
+                                       bufferoffset = t2pReadFile(input,
+                                               (tdata_t) buffer,
+                                               t2p->pdf_ojpegiflength);
+                                       t2p->pdf_ojpegiflength = 0;
+                                       t2pSeekFile(input, inputoffset,
+                                                    SEEK_SET);
+                                       TIFFGetField(input,
+                                                    TIFFTAG_YCBCRSUBSAMPLING,
+                                                    &h_samp, &v_samp);
                                        buffer[bufferoffset++]= 0xff;
                                        buffer[bufferoffset++]= 0xdd;
                                        buffer[bufferoffset++]= 0x00;
@@ -2132,7 +2197,9 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                        h_samp*=8;
                                        v_samp*=8;
                                        ri=(t2p->tiff_width+h_samp-1) / h_samp;
-                                       TIFFGetField(input, TIFFTAG_ROWSPERSTRIP, &rows);
+                                       TIFFGetField(input,
+                                                    TIFFTAG_ROWSPERSTRIP,
+                                                    &rows);
                                        ri*=(rows+v_samp-1)/v_samp;
                                        buffer[bufferoffset++]= (ri>>8) & 0xff;
                                        buffer[bufferoffset++]= ri & 0xff;
@@ -2147,28 +2214,29 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                                        (tdata_t) &(((unsigned char*)buffer)[bufferoffset]), 
                                                        -1);
                                        }
-                                       TIFFWriteFile(output, (tdata_t) buffer, bufferoffset);
+                                       t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
                                        _TIFFfree(buffer);
                                        return(bufferoffset);
                                }
                        } else {
                                if(! t2p->pdf_ojpegdata){
                                        TIFFError(TIFF2PDF_MODULE, 
-                                               "No support for OJPEG image %s with bad tables", 
+                               "No support for OJPEG image %s with bad tables", 
                                                TIFFFileName(input));
                                        t2p->t2p_error = T2P_ERR_ERROR;
                                        return(0);
                                }
-                               buffer=(unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                                memset(buffer, 0, t2p->tiff_datasize);
+                               buffer = (unsigned char*)
+                                       _TIFFmalloc(t2p->tiff_datasize);
                                if(buffer==NULL){
                                        TIFFError(TIFF2PDF_MODULE, 
-                                               "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                               t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                               (unsigned long) t2p->tiff_datasize, 
                                                TIFFFileName(input));
                                        t2p->t2p_error = T2P_ERR_ERROR;
                                        return(0);
                                }
+                                memset(buffer, 0, t2p->tiff_datasize);
                                _TIFFmemcpy(buffer, t2p->pdf_ojpegdata, t2p->pdf_ojpegdatalength);
                                bufferoffset=t2p->pdf_ojpegdatalength;
                                stripcount=TIFFNumberOfStrips(input);
@@ -2186,11 +2254,11 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                                buffer[bufferoffset++]=0xff;
                                                buffer[bufferoffset++]=0xd9;
                                }
-                               TIFFWriteFile(output, (tdata_t) buffer, bufferoffset);
+                               t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
                                _TIFFfree(buffer);
                                return(bufferoffset);
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "No support for OJPEG image %s with no JPEG File Interchange offset", 
+       "No support for OJPEG image %s with no JPEG File Interchange offset", 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2199,21 +2267,23 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                }
 #endif
 #ifdef JPEG_SUPPORT
-               if(t2p->tiff_compression == COMPRESSION_JPEG){
-                       buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                        memset(buffer, 0, t2p->tiff_datasize);
+               if(t2p->tiff_compression == COMPRESSION_JPEG) {
+                       uint32 count = 0;
+                       buffer = (unsigned char*)
+                               _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
                        }
-                       if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &xuint16_1, &jpt) != 0){
-                               if(xuint16_1>4){
-                                       _TIFFmemcpy(buffer, jpt, xuint16_1);
-                                       bufferoffset+=xuint16_1-2;
+                        memset(buffer, 0, t2p->tiff_datasize);
+                       if (TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt) != 0) {
+                               if(count > 4) {
+                                       _TIFFmemcpy(buffer, jpt, count);
+                                       bufferoffset += count - 2;
                                }
                        }
                        stripcount=TIFFNumberOfStrips(input);
@@ -2221,10 +2291,11 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                        for(i=0;i<stripcount;i++){
                                if(sbc[i]>max_striplength) max_striplength=sbc[i];
                        }
-                       stripbuffer=(unsigned char*) _TIFFmalloc(max_striplength);
+                       stripbuffer = (unsigned char*)
+                               _TIFFmalloc(max_striplength);
                        if(stripbuffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
+       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
                                        max_striplength, 
                                        TIFFFileName(input));
                                _TIFFfree(buffer);
@@ -2241,7 +2312,7 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                        i, 
                                        t2p->tiff_length)){
                                                TIFFError(TIFF2PDF_MODULE, 
-                                                       "Can't process JPEG data in input file %s", 
+                               "Can't process JPEG data in input file %s", 
                                                        TIFFFileName(input));
                                                _TIFFfree(samplebuffer);
                                                _TIFFfree(buffer);
@@ -2251,7 +2322,7 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                        }
                        buffer[bufferoffset++]=0xff; 
                        buffer[bufferoffset++]=0xd9;
-                       TIFFWriteFile(output, (tdata_t) buffer, bufferoffset);
+                       t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
                        _TIFFfree(stripbuffer);
                        _TIFFfree(buffer);
                        return(bufferoffset);
@@ -2262,15 +2333,15 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
 
        if(t2p->pdf_sample==T2P_SAMPLE_NOTHING){
                buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                memset(buffer, 0, t2p->tiff_datasize);
                if(buffer==NULL){
                        TIFFError(TIFF2PDF_MODULE, 
-                               "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                               t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                               (unsigned long) t2p->tiff_datasize, 
                                TIFFFileName(input));
                        t2p->t2p_error = T2P_ERR_ERROR;
                        return(0);
                }
+                memset(buffer, 0, t2p->tiff_datasize);
                stripsize=TIFFStripSize(input);
                stripcount=TIFFNumberOfStrips(input);
                for(i=0;i<stripcount;i++){
@@ -2300,20 +2371,20 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                        stripcount=sepstripcount/t2p->tiff_samplesperpixel;
                        
                        buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                        memset(buffer, 0, t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
                        }
+                        memset(buffer, 0, t2p->tiff_datasize);
                        samplebuffer = (unsigned char*) _TIFFmalloc(stripsize);
                        if(samplebuffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2328,7 +2399,7 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                                        sepstripsize);
                                        if(read==-1){
                                                TIFFError(TIFF2PDF_MODULE, 
-                                                       "Error on decoding strip %u of %s", 
+                                       "Error on decoding strip %u of %s", 
                                                        i + j*stripcount, 
                                                        TIFFFileName(input));
                                                        _TIFFfree(buffer);
@@ -2349,15 +2420,15 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                }
 
                buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
-                memset(buffer, 0, t2p->tiff_datasize);
                if(buffer==NULL){
                        TIFFError(TIFF2PDF_MODULE, 
-                               "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                               t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                               (unsigned long) t2p->tiff_datasize, 
                                TIFFFileName(input));
                        t2p->t2p_error = T2P_ERR_ERROR;
                        return(0);
                }
+                memset(buffer, 0, t2p->tiff_datasize);
                stripsize=TIFFStripSize(input);
                stripcount=TIFFNumberOfStrips(input);
                for(i=0;i<stripcount;i++){
@@ -2380,13 +2451,14 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                }
 
                if(t2p->pdf_sample & T2P_SAMPLE_REALIZE_PALETTE){
+                       // FIXME: overflow?
                        samplebuffer=(unsigned char*)_TIFFrealloc( 
                                (tdata_t) buffer, 
                                t2p->tiff_datasize * t2p->tiff_samplesperpixel);
                        if(samplebuffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                          _TIFFfree(buffer);
@@ -2415,8 +2487,8 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                t2p->tiff_width*t2p->tiff_length*4);
                        if(samplebuffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+       "Can't allocate %lu bytes of memory for t2p_readwrite_pdf_image, %s", 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                _TIFFfree(buffer);
@@ -2432,7 +2504,7 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                                ORIENTATION_TOPLEFT,
                                0)){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't use TIFFReadRGBAImageOriented to extract RGB image from %s", 
+       "Can't use TIFFReadRGBAImageOriented to extract RGB image from %s", 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2450,11 +2522,9 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                }
        }
 
-       dataready:
-
-       t2p->tiff_writeproc=output->tif_writeproc;
-       output->tif_writeproc=t2p_empty_writeproc;
+dataready:
 
+       t2p_disable(output);
        TIFFSetField(output, TIFFTAG_PHOTOMETRIC, t2p->tiff_photometric);
        TIFFSetField(output, TIFFTAG_BITSPERSAMPLE, t2p->tiff_bitspersample);
        TIFFSetField(output, TIFFTAG_SAMPLESPERPIXEL, t2p->tiff_samplesperpixel);
@@ -2475,10 +2545,11 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
 #endif
 #ifdef JPEG_SUPPORT
        case T2P_COMPRESS_JPEG:
-               if(t2p->tiff_photometric==PHOTOMETRIC_YCBCR){
-                       if(TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &xuint16_1, &xuint16_2)!=0){
-                               if(xuint16_1 != 0 && xuint16_2 != 0){
-                                       TIFFSetField(output, TIFFTAG_YCBCRSUBSAMPLING, xuint16_1, xuint16_2);
+               if(t2p->tiff_photometric==PHOTOMETRIC_YCBCR) {
+                       uint16 hor = 0, ver = 0;
+                       if (TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &hor, &ver) !=0 ) {
+                               if(hor != 0 && ver != 0){
+                                       TIFFSetField(output, TIFFTAG_YCBCRSUBSAMPLING, hor, ver);
                                }
                        }
                        if(TIFFGetField(input, TIFFTAG_REFERENCEBLACKWHITE, &xfloatp)!=0){
@@ -2487,7 +2558,7 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
                }
                if(TIFFSetField(output, TIFFTAG_COMPRESSION, COMPRESSION_JPEG)==0){
                        TIFFError(TIFF2PDF_MODULE, 
-                               "Unable to use JPEG compression for input %s and output %s", 
+               "Unable to use JPEG compression for input %s and output %s", 
                                TIFFFileName(input),
                                TIFFFileName(output));
                        _TIFFfree(buffer);
@@ -2536,37 +2607,44 @@ tsize_t t2p_readwrite_pdf_image(T2P* t2p, TIFF* input, TIFF* output){
        default:
                break;
        }
-       
-       output->tif_writeproc=t2p->tiff_writeproc;
+
+       t2p_enable(output);
+       t2p->outputwritten = 0;
 #ifdef JPEG_SUPPORT
-       if(t2p->pdf_compression==T2P_COMPRESS_JPEG && t2p->tiff_photometric==PHOTOMETRIC_YCBCR){
-               bufferoffset=TIFFWriteEncodedStrip(output, (tstrip_t)0, buffer,stripsize*stripcount); 
+       if(t2p->pdf_compression == T2P_COMPRESS_JPEG
+          && t2p->tiff_photometric == PHOTOMETRIC_YCBCR){
+               bufferoffset = TIFFWriteEncodedStrip(output, (tstrip_t)0,
+                                                    buffer,
+                                                    stripsize * stripcount); 
        } else
 #endif
-       bufferoffset=TIFFWriteEncodedStrip(output, (tstrip_t)0, buffer, t2p->tiff_datasize); 
-       if(buffer != NULL){
+        {
+               bufferoffset = TIFFWriteEncodedStrip(output, (tstrip_t)0,
+                                                    buffer,
+                                                    t2p->tiff_datasize); 
+       }
+       if (buffer != NULL) {
                _TIFFfree(buffer);
                buffer=NULL;
        }
 
-       if(bufferoffset==(tsize_t)-1){
+       if (bufferoffset == (tsize_t)-1) {
                TIFFError(TIFF2PDF_MODULE, 
-                       "Error writing encoded strip to output PDF %s", 
-                       TIFFFileName(output));
+                         "Error writing encoded strip to output PDF %s", 
+                         TIFFFileName(output));
                t2p->t2p_error = T2P_ERR_ERROR;
                return(0);
        }
        
-       written= output->tif_dir.td_stripbytecount[0];
-       
+       written = t2p->outputwritten;
        return(written);
 }
 
 /*
-       This function reads the raster image data from the input TIFF for an image tile and writes 
-       the data to the output PDF XObject image dictionary stream for the tile.  It returns the 
      amount written or zero on error.
-*/
+ * This function reads the raster image data from the input TIFF for an image
+ * tile and writes the data to the output PDF XObject image dictionary stream
* for the tile.  It returns the amount written or zero on error.
+ */
 
 tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_t tile){
 
@@ -2584,12 +2662,14 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
        tsize_t septilesize=0;
 #ifdef JPEG_SUPPORT
        unsigned char* jpt;
-       uint16 xuint16_1=0;
-       uint16 xuint16_2=0;
        float* xfloatp;
        uint32 xuint32=0;
 #endif
 
+       /* Fail if prior error (in particular, can't trust tiff_datasize) */
+       if (t2p->t2p_error != T2P_ERR_OK)
+               return(0);
+
        edge |= t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile);
        edge |= t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile);
 
@@ -2604,9 +2684,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2615,7 +2695,7 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        if (t2p->tiff_fillorder==FILLORDER_LSB2MSB){
                                        TIFFReverseBits(buffer, t2p->tiff_datasize);
                        }
-                       TIFFWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
+                       t2pWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
                        _TIFFfree(buffer);
                        return(t2p->tiff_datasize);
                }
@@ -2625,9 +2705,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2636,7 +2716,7 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        if (t2p->tiff_fillorder==FILLORDER_LSB2MSB){
                                        TIFFReverseBits(buffer, t2p->tiff_datasize);
                        }
-                       TIFFWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
+                       t2pWriteFile(output, (tdata_t) buffer, t2p->tiff_datasize);
                        _TIFFfree(buffer);
                        return(t2p->tiff_datasize);
                }
@@ -2654,9 +2734,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        buffer=(unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2683,7 +2763,7 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                                        -1);
                        ((unsigned char*)buffer)[bufferoffset++]=0xff;
                        ((unsigned char*)buffer)[bufferoffset++]=0xd9;
-                       TIFFWriteFile(output, (tdata_t) buffer, bufferoffset);
+                       t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
                        _TIFFfree(buffer);
                        return(bufferoffset);
                }
@@ -2691,24 +2771,25 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
 #ifdef JPEG_SUPPORT
                if(t2p->tiff_compression == COMPRESSION_JPEG){
                        unsigned char table_end[2];
+                       uint32 count = 0;
                        buffer= (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
                                        t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
                        }
-                       if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &xuint16_1, &jpt) != 0) {
-                               if(xuint16_1 > 0){
-                                       _TIFFmemcpy(buffer, jpt, xuint16_1);
-                                       bufferoffset += xuint16_1 - 2;
+                       if(TIFFGetField(input, TIFFTAG_JPEGTABLES, &count, &jpt) != 0) {
+                               if (count > 0) {
+                                       _TIFFmemcpy(buffer, jpt, count);
+                                       bufferoffset += count - 2;
                                        table_end[0] = buffer[bufferoffset-2];
                                        table_end[1] = buffer[bufferoffset-1];
                                }
-                               if(xuint16_1 > 0) {
+                               if (count > 0) {
                                        xuint32 = bufferoffset;
                                        bufferoffset += TIFFReadRawTile(
                                                input, 
@@ -2725,7 +2806,7 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                                                -1);
                                }
                        }
-                       TIFFWriteFile(output, (tdata_t) buffer, bufferoffset);
+                       t2pWriteFile(output, (tdata_t) buffer, bufferoffset);
                        _TIFFfree(buffer);
                        return(bufferoffset);
                }
@@ -2737,9 +2818,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                if(buffer==NULL){
                        TIFFError(TIFF2PDF_MODULE, 
-                               "Can't allocate %u bytes of memory for "
+                               "Can't allocate %lu bytes of memory for "
                                 "t2p_readwrite_pdf_image_tile, %s", 
-                               t2p->tiff_datasize, 
+                               (unsigned long) t2p->tiff_datasize, 
                                TIFFFileName(input));
                        t2p->t2p_error = T2P_ERR_ERROR;
                        return(0);
@@ -2770,9 +2851,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2780,9 +2861,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        samplebuffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(samplebuffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2819,9 +2900,9 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        buffer = (unsigned char*) _TIFFmalloc(t2p->tiff_datasize);
                        if(buffer==NULL){
                                TIFFError(TIFF2PDF_MODULE, 
-                                       "Can't allocate %u bytes of memory "
+                                       "Can't allocate %lu bytes of memory "
                                         "for t2p_readwrite_pdf_image_tile, %s", 
-                                       t2p->tiff_datasize, 
+                                       (unsigned long) t2p->tiff_datasize, 
                                        TIFFFileName(input));
                                t2p->t2p_error = T2P_ERR_ERROR;
                                return(0);
@@ -2882,9 +2963,8 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
                        t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
        }
 
-       t2p->tiff_writeproc=output->tif_writeproc;
-       output->tif_writeproc=t2p_empty_writeproc;
 
+       t2p_disable(output);
        TIFFSetField(output, TIFFTAG_PHOTOMETRIC, t2p->tiff_photometric);
        TIFFSetField(output, TIFFTAG_BITSPERSAMPLE, t2p->tiff_bitspersample);
        TIFFSetField(output, TIFFTAG_SAMPLESPERPIXEL, t2p->tiff_samplesperpixel);
@@ -2932,10 +3012,11 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
 #endif
 #ifdef JPEG_SUPPORT
        case T2P_COMPRESS_JPEG:
-               if(t2p->tiff_photometric==PHOTOMETRIC_YCBCR){
-                       if(TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &xuint16_1, &xuint16_2)!=0){
-                               if(xuint16_1 != 0 && xuint16_2 != 0){
-                                       TIFFSetField(output, TIFFTAG_YCBCRSUBSAMPLING, xuint16_1, xuint16_2);
+               if (t2p->tiff_photometric==PHOTOMETRIC_YCBCR) {
+                       uint16 hor = 0, ver = 0;
+                       if (TIFFGetField(input, TIFFTAG_YCBCRSUBSAMPLING, &hor, &ver)!=0) {
+                               if (hor != 0 && ver != 0) {
+                                       TIFFSetField(output, TIFFTAG_YCBCRSUBSAMPLING, hor, ver);
                                }
                        }
                        if(TIFFGetField(input, TIFFTAG_REFERENCEBLACKWHITE, &xfloatp)!=0){
@@ -2983,22 +3064,24 @@ tsize_t t2p_readwrite_pdf_image_tile(T2P* t2p, TIFF* input, TIFF* output, ttile_
        default:
                break;
        }
-       
-       output->tif_writeproc=t2p->tiff_writeproc;
-       bufferoffset=TIFFWriteEncodedStrip(output, (tstrip_t) 0, buffer, TIFFStripSize(output)); 
-       if(buffer != NULL){
+
+       t2p_enable(output);
+       t2p->outputwritten = 0;
+       bufferoffset = TIFFWriteEncodedStrip(output, (tstrip_t) 0, buffer,
+                                            TIFFStripSize(output)); 
+       if (buffer != NULL) {
                _TIFFfree(buffer);
-               buffer=NULL;
+               buffer = NULL;
        }
-       if(bufferoffset==-1){
+       if (bufferoffset == -1) {
                TIFFError(TIFF2PDF_MODULE, 
-                       "Error writing encoded tile to output PDF %s", 
-                       TIFFFileName(output));
+                         "Error writing encoded tile to output PDF %s", 
+                         TIFFFileName(output));
                t2p->t2p_error = T2P_ERR_ERROR;
                return(0);
        }
        
-       written= output->tif_dir.td_stripbytecount[0];
+       written = t2p->outputwritten;
        
        return(written);
 }
@@ -3099,6 +3182,7 @@ int t2p_process_ojpeg_tables(T2P* t2p, TIFF* input){
                        "Can't allocate %u bytes of memory for t2p_process_ojpeg_tables, %s", 
                        2048, 
                        TIFFFileName(input));
+               t2p->t2p_error = T2P_ERR_ERROR;
                return(0);
        }
        _TIFFmemset(t2p->pdf_ojpegdata, 0x00, 2048);
@@ -3267,6 +3351,9 @@ int t2p_process_jpeg_strip(
        while(i<(*striplength)){
                switch( strip[i] ){
                        case 0xd8:
+                               /* SOI - start of image */
+                               _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2);
+                               *bufferoffset+=2;
                                i+=2;
                                break;
                        case 0xc0:
@@ -3348,11 +3435,11 @@ void t2p_tile_collapse_left(
        uint32 edgetilewidth, 
        uint32 tilelength){
        
-       uint32 i=0;
+       uint32 i;
        tsize_t edgescanwidth=0;
        
        edgescanwidth = (scanwidth * edgetilewidth + (tilewidth - 1))/ tilewidth;
-       for(i=i;i<tilelength;i++){
+       for(i=0;i<tilelength;i++){
                _TIFFmemcpy( 
                        &(((char*)buffer)[edgescanwidth*i]), 
                        &(((char*)buffer)[scanwidth*i]), 
@@ -3364,20 +3451,15 @@ void t2p_tile_collapse_left(
 
 
 /*
-       This function calls TIFFWriteDirectory on the output after blanking its output by replacing the 
-       read, write, and seek procedures with empty implementations, then it replaces the original 
-       implementations.
-*/
-
-void t2p_write_advance_directory(T2P* t2p, TIFF* output){
+ * This function calls TIFFWriteDirectory on the output after blanking its
+ * output by replacing the read, write, and seek procedures with empty
+ * implementations, then it replaces the original implementations.
+ */
 
-       t2p->tiff_writeproc=output->tif_writeproc;
-       output->tif_writeproc=t2p_empty_writeproc;
-       t2p->tiff_readproc=output->tif_readproc;
-       output->tif_readproc=t2p_empty_readproc;
-       t2p->tiff_seekproc=output->tif_seekproc;
-       output->tif_seekproc=t2p_empty_seekproc;
-       output->tif_header.tiff_diroff=0;
+void
+t2p_write_advance_directory(T2P* t2p, TIFF* output)
+{
+       t2p_disable(output);
        if(!TIFFWriteDirectory(output)){
                TIFFError(TIFF2PDF_MODULE, 
                        "Error writing virtual directory to output PDF %s", 
@@ -3385,10 +3467,7 @@ void t2p_write_advance_directory(T2P* t2p, TIFF* output){
                t2p->t2p_error = T2P_ERR_ERROR;
                return;
        }
-       output->tif_writeproc=t2p->tiff_writeproc;
-       output->tif_readproc=t2p->tiff_readproc;
-       output->tif_seekproc=t2p->tiff_seekproc;
-       
+       t2p_enable(output);
        return;
 }
 
@@ -3484,11 +3563,10 @@ t2p_sample_rgba_to_rgb(tdata_t data, uint32 samplecount)
        
        for (i = 0; i < samplecount; i++) {
                sample=((uint32*)data)[i];
-               alpha=(uint8)((255 - (sample & 0xff)));
-               ((uint8 *)data)[i * 3] = (uint8) ((sample >> 24) & 0xff) + alpha;
-               ((uint8 *)data)[i * 3 + 1] = (uint8) ((sample >> 16) & 0xff) + alpha;
-               ((uint8 *)data)[i * 3 + 2] = (uint8) ((sample >> 8) & 0xff) + alpha;
-               
+               alpha=(uint8)((255 - ((sample >> 24) & 0xff)));
+               ((uint8 *)data)[i * 3] = (uint8) ((sample >> 16) & 0xff) + alpha;
+               ((uint8 *)data)[i * 3 + 1] = (uint8) ((sample >> 8) & 0xff) + alpha;
+               ((uint8 *)data)[i * 3 + 2] = (uint8) (sample & 0xff) + alpha;
        }
 
        return (i * 3);
@@ -3532,8 +3610,8 @@ tsize_t t2p_write_pdf_header(T2P* t2p, TIFF* output){
        int buflen=0;
        
        buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t)"\r%\342\343\317\323\r\n", 8);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7);
 
        return(written);
 }
@@ -3549,8 +3627,8 @@ tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){
        int buflen=0;
 
        buflen=sprintf(buffer, "%lu", (unsigned long)number);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen );
-       written += TIFFWriteFile(output, (tdata_t) " 0 obj\r", 7);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen );
+       written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7);
 
        return(written);
 }
@@ -3563,7 +3641,7 @@ tsize_t t2p_write_pdf_obj_end(TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "endobj\r", 7);
+       written += t2pWriteFile(output, (tdata_t) "endobj\n", 7);
 
        return(written);
 }
@@ -3572,136 +3650,149 @@ tsize_t t2p_write_pdf_obj_end(TIFF* output){
        This function writes a PDF name object to output.
 */
 
-tsize_t t2p_write_pdf_name(char* name, TIFF* output){
+tsize_t t2p_write_pdf_name(unsigned char* name, TIFF* output){
 
        tsize_t written=0;
        uint32 i=0;
-       char buffer[4];
+       char buffer[64];
        uint16 nextchar=0;
-       uint32 namelen=0;
+       size_t namelen=0;
        
-       namelen=strlen(name);
+       namelen = strlen((char *)name);
        if (namelen>126) {
                namelen=126;
        }
-       written += TIFFWriteFile(output, (tdata_t) "/", 1);
+       written += t2pWriteFile(output, (tdata_t) "/", 1);
        for (i=0;i<namelen;i++){
                if ( ((unsigned char)name[i]) < 0x21){
                        sprintf(buffer, "#%.2X", name[i]);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                       buffer[sizeof(buffer) - 1] = '\0';
+                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                        nextchar=1;
                }
                if ( ((unsigned char)name[i]) > 0x7E){
-                       sprintf(buffer, "#%.2X", name[i]); 
-                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                       sprintf(buffer, "#%.2X", name[i]);
+                       buffer[sizeof(buffer) - 1] = '\0';
+                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                        nextchar=1;
                }
                if (nextchar==0){
                        switch (name[i]){
                                case 0x23:
-                                       sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       sprintf(buffer, "#%.2X", name[i]);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x25:
-                                       sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       sprintf(buffer, "#%.2X", name[i]);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x28:
-                                       sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       sprintf(buffer, "#%.2X", name[i]);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x29:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x2F:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x3C:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x3E:
-                                       sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       sprintf(buffer, "#%.2X", name[i]);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x5B:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x5D:
-                                       sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       sprintf(buffer, "#%.2X", name[i]);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x7B:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                case 0x7D:
                                        sprintf(buffer, "#%.2X", name[i]); 
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, 3);
+                                       buffer[sizeof(buffer) - 1] = '\0';
+                                       written += t2pWriteFile(output, (tdata_t) buffer, 3);
                                        break;
                                default:
-                                       written += TIFFWriteFile(output, (tdata_t) &name[i], 1);
+                                       written += t2pWriteFile(output, (tdata_t) &name[i], 1);
                        }
                }
                nextchar=0;
        }
-       written += TIFFWriteFile(output, (tdata_t) " ", 1);
+       written += t2pWriteFile(output, (tdata_t) " ", 1);
 
        return(written);
 }
 
 /*
      This function writes a PDF string object to output.
-*/
* This function writes a PDF string object to output.
+ */
        
-tsize_t t2p_write_pdf_string(char* pdfstr, TIFF* output){
-
-       tsize_t written=0;
-       uint32 i=0;
-       char buffer[5];
-       uint32 len=0;
+tsize_t t2p_write_pdf_string(char* pdfstr, TIFF* output)
+{
+       tsize_t written = 0;
+       uint32 i = 0;
+       char buffer[64];
+       size_t len = 0;
        
-       len=strlen(pdfstr);
-       written += TIFFWriteFile(output, (tdata_t) "(", 1);
-       for (i=0;i<len;i++){
+       len = strlen(pdfstr);
+       written += t2pWriteFile(output, (tdata_t) "(", 1);
+       for (i=0; i<len; i++) {
                if((pdfstr[i]&0x80) || (pdfstr[i]==127) || (pdfstr[i]<32)){
-                       sprintf(buffer, "\\%.3o", pdfstr[i]);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, 4);
+                       snprintf(buffer, sizeof(buffer), "\\%.3o", ((unsigned char)pdfstr[i]));
+                       written += t2pWriteFile(output, (tdata_t)buffer, 4);
                } else {
                        switch (pdfstr[i]){
                                case 0x08:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\b", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\b", 2);
                                        break;
                                case 0x09:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\t", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\t", 2);
                                        break;
                                case 0x0A:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\n", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\n", 2);
                                        break;
                                case 0x0C:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\f", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\f", 2);
                                        break;
                                case 0x0D:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\r", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\r", 2);
                                        break;
                                case 0x28:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\(", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\(", 2);
                                        break;
                                case 0x29:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\)", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\)", 2);
                                        break;
                                case 0x5C:
-                                       written += TIFFWriteFile(output, (tdata_t) "\\\\", 2);
+                                       written += t2pWriteFile(output, (tdata_t) "\\\\", 2);
                                        break;
                                default:
-                                       written += TIFFWriteFile(output, (tdata_t) &pdfstr[i], 1);
+                                       written += t2pWriteFile(output, (tdata_t) &pdfstr[i], 1);
                        }
                }
        }
-       written += TIFFWriteFile(output, (tdata_t) ") ", 1);
+       written += t2pWriteFile(output, (tdata_t) ") ", 1);
 
        return(written);
 }
@@ -3715,7 +3806,7 @@ tsize_t t2p_write_pdf_stream(tdata_t buffer, tsize_t len, TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) buffer, len);
+       written += t2pWriteFile(output, (tdata_t) buffer, len);
 
        return(written);
 }
@@ -3728,7 +3819,7 @@ tsize_t t2p_write_pdf_stream_start(TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "stream\r\n", 8);
+       written += t2pWriteFile(output, (tdata_t) "stream\n", 7);
 
        return(written);
 }
@@ -3741,7 +3832,7 @@ tsize_t t2p_write_pdf_stream_end(TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "\rendstream\r", 11);
+       written += t2pWriteFile(output, (tdata_t) "\nendstream\n", 11);
 
        return(written);
 }
@@ -3756,13 +3847,13 @@ tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){
        char buffer[16];
        int buflen=0;
        
-       written += TIFFWriteFile(output, (tdata_t) "/Length ", 8);
+       written += t2pWriteFile(output, (tdata_t) "/Length ", 8);
        if(len!=0){
                written += t2p_write_pdf_stream_length(len, output);
        } else {
                buflen=sprintf(buffer, "%lu", (unsigned long)number);
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R \r", 6);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
        }
        
        return(written);
@@ -3776,7 +3867,7 @@ tsize_t t2p_write_pdf_stream_dict_start(TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "<< \r", 4);
+       written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
 
        return(written);
 }
@@ -3789,7 +3880,7 @@ tsize_t t2p_write_pdf_stream_dict_end(TIFF* output){
 
        tsize_t written=0;
 
-       written += TIFFWriteFile(output, (tdata_t) " >>\r", 4);
+       written += t2pWriteFile(output, (tdata_t) " >>\n", 4);
 
        return(written);
 }
@@ -3805,34 +3896,35 @@ tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
        int buflen=0;
 
        buflen=sprintf(buffer, "%lu", (unsigned long)len);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "\n", 1);
 
        return(written);
 }
 
 /*
-       This function writes the PDF Catalog structure to output.
-*/
-
-tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output){
+ * This function writes the PDF Catalog structure to output.
+ */
 
-       tsize_t written=0;
+tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output)
+{
+       tsize_t written = 0;
        char buffer[16];
-       int buflen=0;
+       int buflen = 0;
 
-       written += TIFFWriteFile(output, 
-               (tdata_t)"<< \r/Type /Catalog \r/Pages ", 
+       written += t2pWriteFile(output, 
+               (tdata_t)"<< \n/Type /Catalog \n/Pages ", 
                27);
-       buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen );
-       written += TIFFWriteFile(output, (tdata_t) " 0 R \r", 6);
+       buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages);
+       written += t2pWriteFile(output, (tdata_t) buffer,
+                               TIFFmin((size_t)buflen, sizeof(buffer) - 1));
+       written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
        if(t2p->pdf_fitwindow){
-               written += TIFFWriteFile(output, 
-                       (tdata_t) "/ViewerPreferences <</FitWindow true>>\r", 
+               written += t2pWriteFile(output, 
+                       (tdata_t) "/ViewerPreferences <</FitWindow true>>\n", 
                        39);
        }
-       written += TIFFWriteFile(output, (tdata_t)">>\r", 3);
+       written += t2pWriteFile(output, (tdata_t)">>\n", 3);
 
        return(written);
 }
@@ -3841,148 +3933,130 @@ tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output){
        This function writes the PDF Info structure to output.
 */
 
-tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output){
-
-       tsize_t written=0;
+tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output)
+{
+       tsize_t written = 0;
        char* info;
        char buffer[512];
-       int buflen=0;
-       
-       if(t2p->pdf_datetime==NULL){
+
+       if(t2p->pdf_datetime[0] == '\0')
                t2p_pdf_tifftime(t2p, input);
-       }
-       if(strlen(t2p->pdf_datetime) > 0){
-               written += TIFFWriteFile(output, (tdata_t) "<< \r/CreationDate ", 18);
+       if (strlen(t2p->pdf_datetime) > 0) {
+               written += t2pWriteFile(output, (tdata_t) "<< \n/CreationDate ", 18);
                written += t2p_write_pdf_string(t2p->pdf_datetime, output);
-               written += TIFFWriteFile(output, (tdata_t) "\r/ModDate ", 10);
+               written += t2pWriteFile(output, (tdata_t) "\n/ModDate ", 10);
                written += t2p_write_pdf_string(t2p->pdf_datetime, output);
        }
-       written += TIFFWriteFile(output, (tdata_t) "\r/Producer ", 11);
-       _TIFFmemset((tdata_t)buffer, 0x00, 512);
-       buflen=sprintf(buffer, "libtiff / tiff2pdf - %d / %s", TIFFLIB_VERSION, T2P_VERSION);
+       written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11);
+       _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer));
+       snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION);
        written += t2p_write_pdf_string(buffer, output);
-       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-       if(t2p->pdf_creator != NULL){ 
-               if(strlen(t2p->pdf_creator)>0){
-                       if(strlen(t2p->pdf_creator)>511){t2p->pdf_creator[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Creator ", 9);
-                       written += t2p_write_pdf_string(t2p->pdf_creator, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               }
-       } else{
-               if( TIFFGetField(input, TIFFTAG_SOFTWARE, &info) != 0){
-                       if(strlen(info)>511){info[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Creator ", 9);
+       written += t2pWriteFile(output, (tdata_t) "\n", 1);
+       if (t2p->pdf_creator[0] != '\0') {
+               written += t2pWriteFile(output, (tdata_t) "/Creator ", 9);
+               written += t2p_write_pdf_string(t2p->pdf_creator, output);
+               written += t2pWriteFile(output, (tdata_t) "\n", 1);
+       } else {
+               if (TIFFGetField(input, TIFFTAG_SOFTWARE, &info) != 0 && info) {
+                       if(strlen(info) >= sizeof(t2p->pdf_creator))
+                               info[sizeof(t2p->pdf_creator) - 1] = '\0';
+                       written += t2pWriteFile(output, (tdata_t) "/Creator ", 9);
                        written += t2p_write_pdf_string(info, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                       written += t2pWriteFile(output, (tdata_t) "\n", 1);
                }
        }
-       if(t2p->pdf_author != NULL){ 
-               if(strlen(t2p->pdf_author)>0){
-                       if(strlen(t2p->pdf_author)>511){t2p->pdf_author[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Author ", 8);
-                       written += t2p_write_pdf_string(t2p->pdf_author, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               }
-       } else{
-               if( TIFFGetField(input, TIFFTAG_ARTIST, &info) != 0){
-                       if(strlen(info)>511){info[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Author ", 8);
-                       written += t2p_write_pdf_string(info, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               } else if ( TIFFGetField(input, TIFFTAG_COPYRIGHT, &info) != 0){
-                       if(strlen(info)>511){info[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Author ", 8);
+       if (t2p->pdf_author[0] != '\0') {
+               written += t2pWriteFile(output, (tdata_t) "/Author ", 8);
+               written += t2p_write_pdf_string(t2p->pdf_author, output);
+               written += t2pWriteFile(output, (tdata_t) "\n", 1);
+       } else {
+               if ((TIFFGetField(input, TIFFTAG_ARTIST, &info) != 0
+                    || TIFFGetField(input, TIFFTAG_COPYRIGHT, &info) != 0)
+                   && info) {
+                       if (strlen(info) >= sizeof(t2p->pdf_author))
+                               info[sizeof(t2p->pdf_author) - 1] = '\0';
+                       written += t2pWriteFile(output, (tdata_t) "/Author ", 8);
                        written += t2p_write_pdf_string(info, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               } 
-       }
-       if(t2p->pdf_title != NULL){
-               if(strlen(t2p->pdf_title)>0){
-                       if(strlen(t2p->pdf_title)>511){t2p->pdf_title[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Title ", 7);
-                       written += t2p_write_pdf_string(t2p->pdf_title, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                       written += t2pWriteFile(output, (tdata_t) "\n", 1);
                }
-       } else{
-               if( TIFFGetField(input, TIFFTAG_DOCUMENTNAME, &info) != 0){
-                       if(strlen(info)>511){info[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Title ", 7);
+       }
+       if (t2p->pdf_title[0] != '\0') {
+               written += t2pWriteFile(output, (tdata_t) "/Title ", 7);
+               written += t2p_write_pdf_string(t2p->pdf_title, output);
+               written += t2pWriteFile(output, (tdata_t) "\n", 1);
+       } else {
+               if (TIFFGetField(input, TIFFTAG_DOCUMENTNAME, &info) != 0){
+                       if(strlen(info) > 511) {
+                               info[512] = '\0';
+                       }
+                       written += t2pWriteFile(output, (tdata_t) "/Title ", 7);
                        written += t2p_write_pdf_string(info, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                       written += t2pWriteFile(output, (tdata_t) "\n", 1);
                }
        }
-       if(t2p->pdf_subject != NULL){
-               if(strlen(t2p->pdf_subject)>0){
-                       if(strlen(t2p->pdf_subject)>511){t2p->pdf_subject[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Subject ", 9);
-                       written += t2p_write_pdf_string(t2p->pdf_subject, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               }
-       } else{
-               if( TIFFGetField(input, TIFFTAG_IMAGEDESCRIPTION, &info) != 0){
-                       if(strlen(info)>511){info[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Subject ", 9);
+       if (t2p->pdf_subject[0] != '\0') {
+               written += t2pWriteFile(output, (tdata_t) "/Subject ", 9);
+               written += t2p_write_pdf_string(t2p->pdf_subject, output);
+               written += t2pWriteFile(output, (tdata_t) "\n", 1);
+       } else {
+               if (TIFFGetField(input, TIFFTAG_IMAGEDESCRIPTION, &info) != 0 && info) {
+                       if (strlen(info) >= sizeof(t2p->pdf_subject))
+                               info[sizeof(t2p->pdf_subject) - 1] = '\0';
+                       written += t2pWriteFile(output, (tdata_t) "/Subject ", 9);
                        written += t2p_write_pdf_string(info, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                       written += t2pWriteFile(output, (tdata_t) "\n", 1);
                }
        }
-       if(t2p->pdf_keywords != NULL){ 
-               if(strlen(t2p->pdf_keywords)>0){
-                       if(strlen(t2p->pdf_keywords)>511){t2p->pdf_keywords[512]=(char)0;}
-                       written += TIFFWriteFile(output, (tdata_t) "/Keywords ", 10);
-                       written += t2p_write_pdf_string(t2p->pdf_keywords, output);
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
-               }
+       if (t2p->pdf_keywords[0] != '\0') {
+               written += t2pWriteFile(output, (tdata_t) "/Keywords ", 10);
+               written += t2p_write_pdf_string(t2p->pdf_keywords, output);
+               written += t2pWriteFile(output, (tdata_t) "\n", 1);
        }
-       written += TIFFWriteFile(output, (tdata_t) ">> \r", 4); 
+       written += t2pWriteFile(output, (tdata_t) ">> \n", 4);
 
        return(written);
 }
 
 /*
-       This function fills a string of a T2P struct with the current time as a PDF date string, 
-       it is called by t2p_pdf_tifftime.
-*/
-
-void t2p_pdf_currenttime(T2P* t2p){
+ * This function fills a string of a T2P struct with the current time as a PDF
+ * date string, it is called by t2p_pdf_tifftime.
+ */
 
+void t2p_pdf_currenttime(T2P* t2p)
+{
        struct tm* currenttime;
        time_t timenow;
 
-       timenow=time(0);
-       currenttime=localtime(&timenow);
-       sprintf(t2p->pdf_datetime, "D:%.4d%.2d%.2d%.2d%.2d%.2d",
-               (currenttime->tm_year+1900) % 65536, 
-               (currenttime->tm_mon+1) % 256, 
-               (currenttime->tm_mday) % 256, 
-               (currenttime->tm_hour) % 256, 
-               (currenttime->tm_min) % 256, 
-               (currenttime->tm_sec) % 256);
+       if (time(&timenow) == (time_t) -1) {
+               TIFFError(TIFF2PDF_MODULE,
+                         "Can't get the current time: %s", strerror(errno));
+               timenow = (time_t) 0;
+       }
+
+       currenttime = localtime(&timenow);
+       snprintf(t2p->pdf_datetime, sizeof(t2p->pdf_datetime),
+                "D:%.4d%.2d%.2d%.2d%.2d%.2d",
+                (currenttime->tm_year + 1900) % 65536,
+                (currenttime->tm_mon + 1) % 256,
+                (currenttime->tm_mday) % 256,
+                (currenttime->tm_hour) % 256,
+                (currenttime->tm_min) % 256,
+                (currenttime->tm_sec) % 256);
 
        return;
 }
 
 /*
-       This function fills a string of a T2P struct with the date and time of a TIFF file if it 
-       exists or the current time as a PDF date string.
-*/
-
-void t2p_pdf_tifftime(T2P* t2p, TIFF* input){
+ * This function fills a string of a T2P struct with the date and time of a
+ * TIFF file if it exists or the current time as a PDF date string.
+ */
 
+void t2p_pdf_tifftime(T2P* t2p, TIFF* input)
+{
        char* datetime;
 
-       t2p->pdf_datetime= (char*) _TIFFmalloc(19);
-       if(t2p->pdf_datetime==NULL){
-               TIFFError(TIFF2PDF_MODULE, 
-                       "Can't allocate %u bytes of memory for t2p_pdf_tiff_time", 
-                       17); 
-               t2p->t2p_error = T2P_ERR_ERROR;
-               return;
-       }
-       t2p->pdf_datetime[16]=0;
-       if( TIFFGetField(input, TIFFTAG_DATETIME, &datetime) != 0 
-       && (strlen(datetime) >= 19) ){
+       if (TIFFGetField(input, TIFFTAG_DATETIME, &datetime) != 0
+           && (strlen(datetime) >= 19) ){
                t2p->pdf_datetime[0]='D';
                t2p->pdf_datetime[1]=':';
                t2p->pdf_datetime[2]=datetime[0];
@@ -3999,6 +4073,7 @@ void t2p_pdf_tifftime(T2P* t2p, TIFF* input){
                t2p->pdf_datetime[13]=datetime[15];
                t2p->pdf_datetime[14]=datetime[17];
                t2p->pdf_datetime[15]=datetime[18];
+               t2p->pdf_datetime[16] = '\0';
        } else {
                t2p_pdf_currenttime(t2p);
        }
@@ -4007,28 +4082,26 @@ void t2p_pdf_tifftime(T2P* t2p, TIFF* input){
 }
 
 /*
-       This function writes a PDF Pages Tree structure to output.
-*/
-
-tsize_t t2p_write_pdf_pages(T2P* t2p, 
-                                                       TIFF* output){
+ * This function writes a PDF Pages Tree structure to output.
+ */
 
+tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
+{
        tsize_t written=0;
        tdir_t i=0;
        char buffer[16];
        int buflen=0;
 
        int page=0;
-       written += TIFFWriteFile(output, 
-               (tdata_t) "<< \r/Type /Pages \r/Kids [ ", 
-               26);
+       written += t2pWriteFile(output,
+               (tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26);
        page = t2p->pdf_pages+1;
        for (i=0;i<t2p->tiff_pagecount;i++){
                buflen=sprintf(buffer, "%d", page);
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
                if ( ((i+1)%8)==0 ) {
-                       written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                       written += t2pWriteFile(output, (tdata_t) "\n", 1);
                }
                page +=3;
                page += t2p->tiff_pages[i].page_extra;
@@ -4038,11 +4111,11 @@ tsize_t t2p_write_pdf_pages(T2P* t2p,
                        page +=2;
                }
        }
-       written += TIFFWriteFile(output, (tdata_t) "] \r/Count ", 10);
+       written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10);
        _TIFFmemset(buffer, 0x00, 16);
        buflen=sprintf(buffer, "%d", t2p->tiff_pagecount);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " \r>> \r", 6);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6);
 
        return(written);
 }
@@ -4057,87 +4130,87 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
        tsize_t written=0;
        char buffer[16];
        int buflen=0;
-       
-       written += TIFFWriteFile(output, (tdata_t) "<<\r/Type /Page \r/Parent ", 24);
+
+       written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24);
        buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " 0 R \r", 6);
-       written += TIFFWriteFile(output, (tdata_t) "/MediaBox [", 11); 
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
+       written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11); 
        buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " ", 1); 
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " ", 1); 
        buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " ", 1); 
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " ", 1); 
        buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " ", 1); 
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " ", 1); 
        buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "] \r", 3); 
-       written += TIFFWriteFile(output, (tdata_t) "/Contents ", 10);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "] \n", 3); 
+       written += t2pWriteFile(output, (tdata_t) "/Contents ", 10);
        buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1));
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " 0 R \r", 6);
-       written += TIFFWriteFile(output, (tdata_t) "/Resources << \r", 15);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
+       written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15);
        if( t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount != 0 ){
-               written += TIFFWriteFile(output, (tdata_t) "/XObject <<\r", 12);
+               written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
                for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){
-                       written += TIFFWriteFile(output, (tdata_t) "/Im", 3);
+                       written += t2pWriteFile(output, (tdata_t) "/Im", 3);
                        buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) "_", 1);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) "_", 1);
                        buflen = sprintf(buffer, "%u", i+1);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) " ", 1);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) " ", 1);
                        buflen = sprintf(
                                buffer, 
                                "%lu", 
                                (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra)); 
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
                        if(i%4==3){
-                               written += TIFFWriteFile(output, (tdata_t) "\r", 1);
+                               written += t2pWriteFile(output, (tdata_t) "\n", 1);
                        }
                }
-               written += TIFFWriteFile(output, (tdata_t) ">>\r", 3);
+               written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
        } else {
-                       written += TIFFWriteFile(output, (tdata_t) "/XObject <<\r", 12);
-                       written += TIFFWriteFile(output, (tdata_t) "/Im", 3);
+                       written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
+                       written += t2pWriteFile(output, (tdata_t) "/Im", 3);
                        buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) " ", 1);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) " ", 1);
                        buflen = sprintf(
                                buffer, 
                                "%lu", 
                                (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra)); 
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
-               written += TIFFWriteFile(output, (tdata_t) ">>\r", 3);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
        }
        if(t2p->tiff_transferfunctioncount != 0) {
-               written += TIFFWriteFile(output, (tdata_t) "/ExtGState <<", 13);
-               TIFFWriteFile(output, (tdata_t) "/GS1 ", 5);
+               written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13);
+               t2pWriteFile(output, (tdata_t) "/GS1 ", 5);
                buflen = sprintf(
                        buffer, 
                        "%lu", 
                        (unsigned long)(object + 3)); 
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
-               written += TIFFWriteFile(output, (tdata_t) ">> \r", 4);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) ">> \n", 4);
        }
-       written += TIFFWriteFile(output, (tdata_t) "/ProcSet [ ", 11);
+       written += t2pWriteFile(output, (tdata_t) "/ProcSet [ ", 11);
        if(t2p->pdf_colorspace == T2P_CS_BILEVEL 
                || t2p->pdf_colorspace == T2P_CS_GRAY
                ){
-               written += TIFFWriteFile(output, (tdata_t) "/ImageB ", 8);
+               written += t2pWriteFile(output, (tdata_t) "/ImageB ", 8);
        } else {
-               written += TIFFWriteFile(output, (tdata_t) "/ImageC ", 8);
+               written += t2pWriteFile(output, (tdata_t) "/ImageC ", 8);
                if(t2p->pdf_colorspace & T2P_CS_PALETTE){
-                       written += TIFFWriteFile(output, (tdata_t) "/ImageI ", 8);
+                       written += t2pWriteFile(output, (tdata_t) "/ImageI ", 8);
                }
        }
-       written += TIFFWriteFile(output, (tdata_t) "]\r>>\r>>\r", 8);
+       written += t2pWriteFile(output, (tdata_t) "]\n>>\n>>\n", 8);
 
        return(written);
 }
@@ -4158,22 +4231,40 @@ void t2p_compose_pdf_page(T2P* t2p){
        uint32 tilelength=0;
        int istiled=0;
        float f=0;
+       float width_ratio=0;
+       float length_ratio=0;
        
        t2p->pdf_xres = t2p->tiff_xres;
        t2p->pdf_yres = t2p->tiff_yres;
-       if(t2p->pdf_overrideres){
+       if(t2p->pdf_overrideres) {
                t2p->pdf_xres = t2p->pdf_defaultxres;
                t2p->pdf_yres = t2p->pdf_defaultyres;
        }
-       if(t2p->pdf_xres==0.0){
+       if(t2p->pdf_xres == 0.0)
                t2p->pdf_xres = t2p->pdf_defaultxres;
-       }
-       if(t2p->pdf_yres==0.0){
+       if(t2p->pdf_yres == 0.0)
                t2p->pdf_yres = t2p->pdf_defaultyres;
+       if (t2p->pdf_image_fillpage) {
+               width_ratio = t2p->pdf_defaultpagewidth/t2p->tiff_width;
+               length_ratio = t2p->pdf_defaultpagelength/t2p->tiff_length;
+               if (width_ratio < length_ratio ) {
+                       t2p->pdf_imagewidth = t2p->pdf_defaultpagewidth;
+                       t2p->pdf_imagelength = t2p->tiff_length * width_ratio;
+               } else {
+                       t2p->pdf_imagewidth = t2p->tiff_width * length_ratio;
+                       t2p->pdf_imagelength = t2p->pdf_defaultpagelength;
+               }
+       } else if (t2p->tiff_resunit != RESUNIT_CENTIMETER      /* RESUNIT_NONE and */
+               && t2p->tiff_resunit != RESUNIT_INCH) { /* other cases */
+               t2p->pdf_imagewidth = ((float)(t2p->tiff_width))/t2p->pdf_xres;
+               t2p->pdf_imagelength = ((float)(t2p->tiff_length))/t2p->pdf_yres;
+       } else {
+               t2p->pdf_imagewidth = 
+                       ((float)(t2p->tiff_width))*PS_UNIT_SIZE/t2p->pdf_xres;
+               t2p->pdf_imagelength = 
+                       ((float)(t2p->tiff_length))*PS_UNIT_SIZE/t2p->pdf_yres;
        }
-       t2p->pdf_imagewidth=((float)(t2p->tiff_width)) *72.0F / t2p->pdf_xres;
-       t2p->pdf_imagelength=((float)(t2p->tiff_length)) *72.0F / t2p->pdf_yres;
-       if(t2p->pdf_overridepagesize != 0){
+       if(t2p->pdf_overridepagesize != 0) {
                t2p->pdf_pagewidth = t2p->pdf_defaultpagewidth;
                t2p->pdf_pagelength = t2p->pdf_defaultpagelength;
        } else {
@@ -4476,7 +4567,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
                for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){
                        box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box;
                        buflen=sprintf(buffer, 
-                               "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\r", 
+                               "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n", 
                                t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
                                box.mat[0],
                                box.mat[1],
@@ -4491,7 +4582,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
        } else {
                box=t2p->pdf_imagebox;
                buflen=sprintf(buffer, 
-                       "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\r", 
+                       "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n", 
                        t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
                        box.mat[0],
                        box.mat[1],
@@ -4519,17 +4610,17 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
        int buflen=0;
 
        written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output); 
-       written += TIFFWriteFile(output, 
-               (tdata_t) "/Type /XObject \r/Subtype /Image \r/Name /Im", 
+       written += t2pWriteFile(output, 
+               (tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im", 
                42);
        buflen=sprintf(buffer, "%u", t2p->pdf_page+1);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        if(tile != 0){
-               written += TIFFWriteFile(output, (tdata_t) "_", 1);
+               written += t2pWriteFile(output, (tdata_t) "_", 1);
                buflen=sprintf(buffer, "%lu", (unsigned long)tile);
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        }
-       written += TIFFWriteFile(output, (tdata_t) "\r/Width ", 8);
+       written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8);
        _TIFFmemset((tdata_t)buffer, 0x00, 16);
        if(tile==0){
                buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width);
@@ -4546,8 +4637,8 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
                }
        }
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "\r/Height ", 9);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9);
        _TIFFmemset((tdata_t)buffer, 0x00, 16);
        if(tile==0){
                buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length);
@@ -4564,16 +4655,16 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
                }
        }
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "\r/BitsPerComponent ", 19);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19);
        _TIFFmemset((tdata_t)buffer, 0x00, 16);
        buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "\r/ColorSpace ", 13);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13);
        written += t2p_write_pdf_xobject_cs(t2p, output);
        if (t2p->pdf_image_interpolate)
-               written += TIFFWriteFile(output,
-                                        (tdata_t) "\r/Interpolate true", 18);
+               written += t2pWriteFile(output,
+                                        (tdata_t) "\n/Interpolate true", 18);
        if( (t2p->pdf_switchdecode != 0)
 #ifdef CCITT_SUPPORT
                && ! (t2p->pdf_colorspace == T2P_CS_BILEVEL 
@@ -4607,66 +4698,58 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
                return(written);
        }
        if( (t2p->pdf_colorspace & T2P_CS_PALETTE) != 0){
-               written += TIFFWriteFile(output, (tdata_t) "[ /Indexed ", 11);
+               written += t2pWriteFile(output, (tdata_t) "[ /Indexed ", 11);
                t2p->pdf_colorspace ^= T2P_CS_PALETTE;
                written += t2p_write_pdf_xobject_cs(t2p, output);
                t2p->pdf_colorspace |= T2P_CS_PALETTE;
                buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " ", 1);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " ", 1);
                _TIFFmemset(buffer, 0x00, 16);
                buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs ); 
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ]\r", 7);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7);
                return(written);
        }
        if(t2p->pdf_colorspace & T2P_CS_BILEVEL){
-                       written += TIFFWriteFile(output, (tdata_t) "/DeviceGray \r", 13);
+                       written += t2pWriteFile(output, (tdata_t) "/DeviceGray \n", 13);
        }
        if(t2p->pdf_colorspace & T2P_CS_GRAY){
                        if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
                                written += t2p_write_pdf_xobject_calcs(t2p, output);
                        } else {
-                               written += TIFFWriteFile(output, (tdata_t) "/DeviceGray \r", 13);
+                               written += t2pWriteFile(output, (tdata_t) "/DeviceGray \n", 13);
                        }
        }
        if(t2p->pdf_colorspace & T2P_CS_RGB){
                        if(t2p->pdf_colorspace & T2P_CS_CALRGB){
                                written += t2p_write_pdf_xobject_calcs(t2p, output);
                        } else {
-                               written += TIFFWriteFile(output, (tdata_t) "/DeviceRGB \r", 12);
+                               written += t2pWriteFile(output, (tdata_t) "/DeviceRGB \n", 12);
                        }
        }
        if(t2p->pdf_colorspace & T2P_CS_CMYK){
-                       written += TIFFWriteFile(output, (tdata_t) "/DeviceCMYK \r", 13);
+                       written += t2pWriteFile(output, (tdata_t) "/DeviceCMYK \n", 13);
        }
        if(t2p->pdf_colorspace & T2P_CS_LAB){
-                       written += TIFFWriteFile(output, (tdata_t) "[/Lab << \r", 10);
-                       written += TIFFWriteFile(output, (tdata_t) "/WhitePoint ", 12);
+                       written += t2pWriteFile(output, (tdata_t) "[/Lab << \n", 10);
+                       written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
                        X_W = t2p->tiff_whitechromaticities[0];
                        Y_W = t2p->tiff_whitechromaticities[1];
                        Z_W = 1.0F - (X_W + Y_W);
                        X_W /= Y_W;
                        Z_W /= Y_W;
                        Y_W = 1.0F;
-                       buflen=sprintf(buffer, "[%.4f %.4f %.4f] \r", X_W, Y_W, Z_W);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       X_W = 0.3457F; /* 0.3127F; */ /* D50, commented D65 */
-                       Y_W = 0.3585F; /* 0.3290F; */
-                       Z_W = 1.0F - (X_W + Y_W);
-                       X_W /= Y_W;
-                       Z_W /= Y_W;
-                       Y_W = 1.0F;
-                       buflen=sprintf(buffer, "[%.4f %.4f %.4f] \r", X_W, Y_W, Z_W);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) "/Range ", 7);
-                       buflen=sprintf(buffer, "[%d %d %d %d] \r", 
+                       buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) "/Range ", 7);
+                       buflen=sprintf(buffer, "[%d %d %d %d] \n", 
                                t2p->pdf_labrange[0], 
                                t2p->pdf_labrange[1], 
                                t2p->pdf_labrange[2], 
                                t2p->pdf_labrange[3]);
-                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                       written += TIFFWriteFile(output, (tdata_t) ">>] \r", 5);
+                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                       written += t2pWriteFile(output, (tdata_t) ">>] \n", 5);
                        
        }
        
@@ -4679,30 +4762,30 @@ tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){
        char buffer[16];
        int buflen=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "<< /Type /ExtGState \r/TR ", 25);
+       written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25);
        if(t2p->tiff_transferfunctioncount == 1){
                buflen=sprintf(buffer, "%lu",
                               (unsigned long)(t2p->pdf_xrefcount + 1));
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
        } else {
-               written += TIFFWriteFile(output, (tdata_t) "[ ", 2);
+               written += t2pWriteFile(output, (tdata_t) "[ ", 2);
                buflen=sprintf(buffer, "%lu",
                               (unsigned long)(t2p->pdf_xrefcount + 1));
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
                buflen=sprintf(buffer, "%lu",
                               (unsigned long)(t2p->pdf_xrefcount + 2));
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
                buflen=sprintf(buffer, "%lu",
                               (unsigned long)(t2p->pdf_xrefcount + 3));
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) " 0 R ", 5);
-               written += TIFFWriteFile(output, (tdata_t) "/Identity ] ", 12);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+               written += t2pWriteFile(output, (tdata_t) "/Identity ] ", 12);
        }
 
-       written += TIFFWriteFile(output, (tdata_t) " >> \r", 5);
+       written += t2pWriteFile(output, (tdata_t) " >> \n", 5);
 
        return(written);
 }
@@ -4712,15 +4795,15 @@ tsize_t t2p_write_pdf_transfer_dict(T2P* t2p, TIFF* output, uint16 i){
        tsize_t written=0;
        char buffer[32];
        int buflen=0;
-       (void)i; // XXX
+       (void)i; /* XXX */
 
-       written += TIFFWriteFile(output, (tdata_t) "/FunctionType 0 \r", 17);
-       written += TIFFWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \r", 19);
-       written += TIFFWriteFile(output, (tdata_t) "/Range [0.0 1.0] \r", 18);
-       buflen=sprintf(buffer, "/Size [%u] \r", (1<<t2p->tiff_bitspersample));
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "/BitsPerSample 16 \r", 19);
-       written += t2p_write_pdf_stream_dict(1<<(t2p->tiff_bitspersample+1), 0, output);
+       written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17);
+       written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19);
+       written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18);
+       buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19);
+       written += t2p_write_pdf_stream_dict(((tsize_t)1)<<(t2p->tiff_bitspersample+1), 0, output);
 
        return(written);
 }
@@ -4731,7 +4814,7 @@ tsize_t t2p_write_pdf_transfer_stream(T2P* t2p, TIFF* output, uint16 i){
 
        written += t2p_write_pdf_stream(
                t2p->tiff_transferfunction[i], 
-               (1<<(t2p->tiff_bitspersample+1)), 
+               (((tsize_t)1)<<(t2p->tiff_bitspersample+1)), 
                output);
 
        return(written);
@@ -4772,9 +4855,9 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
        float G=1.0;
        float B=1.0;
        
-       written += TIFFWriteFile(output, (tdata_t) "[", 1);
+       written += t2pWriteFile(output, (tdata_t) "[", 1);
        if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
-               written += TIFFWriteFile(output, (tdata_t) "/CalGray ", 9);
+               written += t2pWriteFile(output, (tdata_t) "/CalGray ", 9);
                X_W = t2p->tiff_whitechromaticities[0];
                Y_W = t2p->tiff_whitechromaticities[1];
                Z_W = 1.0F - (X_W + Y_W);
@@ -4783,7 +4866,7 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
                Y_W = 1.0F;
        }
        if(t2p->pdf_colorspace & T2P_CS_CALRGB){
-               written += TIFFWriteFile(output, (tdata_t) "/CalRGB ", 8);
+               written += t2pWriteFile(output, (tdata_t) "/CalRGB ", 8);
                x_w = t2p->tiff_whitechromaticities[0];
                y_w = t2p->tiff_whitechromaticities[1];
                x_r = t2p->tiff_primarychromaticities[0];
@@ -4809,26 +4892,26 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
                Z_W /= Y_W;
                Y_W = 1.0;
        }
-       written += TIFFWriteFile(output, (tdata_t) "<< \r", 4);
+       written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
        if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
-               written += TIFFWriteFile(output, (tdata_t) "/WhitePoint ", 12);
-               buflen=sprintf(buffer, "[%.4f %.4f %.4f] \r", X_W, Y_W, Z_W);
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) "/Gamma 2.2 \r", 12);
+               written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
+               buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12);
        }
        if(t2p->pdf_colorspace & T2P_CS_CALRGB){
-               written += TIFFWriteFile(output, (tdata_t) "/WhitePoint ", 12);
-               buflen=sprintf(buffer, "[%.4f %.4f %.4f] \r", X_W, Y_W, Z_W);
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) "/Matrix ", 8);
-               buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \r", 
+               written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
+               buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8);
+               buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n", 
                        X_R, Y_R, Z_R, 
                        X_G, Y_G, Z_G, 
                        X_B, Y_B, Z_B); 
-               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-               written += TIFFWriteFile(output, (tdata_t) "/Gamma [2.2 2.2 2.2] \r", 22);
+               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+               written += t2pWriteFile(output, (tdata_t) "/Gamma [2.2 2.2 2.2] \n", 22);
        }
-       written += TIFFWriteFile(output, (tdata_t) ">>] \r", 5);
+       written += t2pWriteFile(output, (tdata_t) ">>] \n", 5);
 
        return(written);
 }
@@ -4843,10 +4926,10 @@ tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
        char buffer[16];
        int buflen=0;
        
-       written += TIFFWriteFile(output, (tdata_t) "[/ICCBased ", 11);
+       written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11);
        buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " 0 R] \r", 7);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7);
 
        return(written);
 }
@@ -4857,10 +4940,10 @@ tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){
        char buffer[16];
        int buflen=0;
        
-       written += TIFFWriteFile(output, (tdata_t) "/N ", 3);
-       buflen=sprintf(buffer, "%u \r", t2p->tiff_samplesperpixel);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) "/Alternate ", 11);
+       written += t2pWriteFile(output, (tdata_t) "/N ", 3);
+       buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11);
        t2p->pdf_colorspace ^= T2P_CS_ICCBASED;
        written += t2p_write_pdf_xobject_cs(t2p, output);
        t2p->pdf_colorspace |= T2P_CS_ICCBASED;
@@ -4906,11 +4989,11 @@ tsize_t t2p_write_pdf_xobject_decode(T2P* t2p, TIFF* output){
        tsize_t written=0;
        int i=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "/Decode [ ", 10);
+       written += t2pWriteFile(output, (tdata_t) "/Decode [ ", 10);
        for (i=0;i<t2p->tiff_samplesperpixel;i++){
-               written += TIFFWriteFile(output, (tdata_t) "1 0 ", 4);
+               written += t2pWriteFile(output, (tdata_t) "1 0 ", 4);
        }
-       written += TIFFWriteFile(output, (tdata_t) "]\r", 2);
+       written += t2pWriteFile(output, (tdata_t) "]\n", 2);
 
        return(written);
 }
@@ -4929,93 +5012,93 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
        if(t2p->pdf_compression==T2P_COMPRESS_NONE){
                return(written);
        }
-       written += TIFFWriteFile(output, (tdata_t) "/Filter ", 8);
+       written += t2pWriteFile(output, (tdata_t) "/Filter ", 8);
        switch(t2p->pdf_compression){
 #ifdef CCITT_SUPPORT
                case T2P_COMPRESS_G4:
-                       written += TIFFWriteFile(output, (tdata_t) "/CCITTFaxDecode ", 16);
-                       written += TIFFWriteFile(output, (tdata_t) "/DecodeParms ", 13);
-                       written += TIFFWriteFile(output, (tdata_t) "<< /K -1 ", 9);
+                       written += t2pWriteFile(output, (tdata_t) "/CCITTFaxDecode ", 16);
+                       written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
+                       written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9);
                        if(tile==0){
-                               written += TIFFWriteFile(output, (tdata_t) "/Columns ", 9);
+                               written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
                                buflen=sprintf(buffer, "%lu",
                                               (unsigned long)t2p->tiff_width);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                               written += TIFFWriteFile(output, (tdata_t) " /Rows ", 7);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
                                buflen=sprintf(buffer, "%lu",
                                               (unsigned long)t2p->tiff_length);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
                        } else {
                                if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
-                                       written += TIFFWriteFile(output, (tdata_t) "/Columns ", 9);
+                                       written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
                                        buflen=sprintf(
                                                buffer, 
                                                "%lu", 
                                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+                                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
                                } else {
-                                       written += TIFFWriteFile(output, (tdata_t) "/Columns ", 9);
+                                       written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
                                        buflen=sprintf(
                                                buffer, 
                                                "%lu", 
                                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+                                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
                                }
                                if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
-                                       written += TIFFWriteFile(output, (tdata_t) " /Rows ", 7);
+                                       written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
                                        buflen=sprintf(
                                                buffer, 
                                                "%lu", 
                                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+                                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
                                } else {
-                                       written += TIFFWriteFile(output, (tdata_t) " /Rows ", 7);
+                                       written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
                                        buflen=sprintf(
                                                buffer, 
                                                "%lu", 
                                                (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
-                                       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+                                       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
                                }
                        }
                        if(t2p->pdf_switchdecode == 0){
-                               written += TIFFWriteFile(output, (tdata_t) " /BlackIs1 true ", 16);
+                               written += t2pWriteFile(output, (tdata_t) " /BlackIs1 true ", 16);
                        }
-                       written += TIFFWriteFile(output, (tdata_t) ">>\r", 3);
+                       written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
                        break;
 #endif
 #ifdef JPEG_SUPPORT
                case T2P_COMPRESS_JPEG:
-                       written += TIFFWriteFile(output, (tdata_t) "/DCTDecode ", 11);
+                       written += t2pWriteFile(output, (tdata_t) "/DCTDecode ", 11);
 
                        if(t2p->tiff_photometric != PHOTOMETRIC_YCBCR) {
-                               written += TIFFWriteFile(output, (tdata_t) "/DecodeParms ", 13);
-                               written += TIFFWriteFile(output, (tdata_t) "<< /ColorTransform 0 >>\r", 24);
+                               written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
+                               written += t2pWriteFile(output, (tdata_t) "<< /ColorTransform 0 >>\n", 24);
                        }
                        break;
 #endif
 #ifdef ZIP_SUPPORT
                case T2P_COMPRESS_ZIP:
-                       written += TIFFWriteFile(output, (tdata_t) "/FlateDecode ", 13);
+                       written += t2pWriteFile(output, (tdata_t) "/FlateDecode ", 13);
                        if(t2p->pdf_compressionquality%100){
-                               written += TIFFWriteFile(output, (tdata_t) "/DecodeParms ", 13);
-                               written += TIFFWriteFile(output, (tdata_t) "<< /Predictor ", 14);
+                               written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
+                               written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14);
                                _TIFFmemset(buffer, 0x00, 16);
                                buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                               written += TIFFWriteFile(output, (tdata_t) " /Columns ", 10);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) " /Columns ", 10);
                                _TIFFmemset(buffer, 0x00, 16);
                                buflen = sprintf(buffer, "%lu",
                                                 (unsigned long)t2p->tiff_width);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                               written += TIFFWriteFile(output, (tdata_t) " /Colors ", 9);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) " /Colors ", 9);
                                _TIFFmemset(buffer, 0x00, 16);
                                buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                               written += TIFFWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
                                _TIFFmemset(buffer, 0x00, 16);
                                buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
-                               written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-                               written += TIFFWriteFile(output, (tdata_t) ">>\r", 3);
+                               written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+                               written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
                        }
                        break;
 #endif
@@ -5037,21 +5120,21 @@ tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){
        int buflen=0;
        uint32 i=0;
 
-       written += TIFFWriteFile(output, (tdata_t) "xref\r0 ", 7);
+       written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7);
        buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
-       written += TIFFWriteFile(output, (tdata_t) " \r0000000000 65535 f\r\n", 22);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22);
        for (i=0;i<t2p->pdf_xrefcount;i++){
-               sprintf(buffer, "%.10lu 00000 n\r\n",
+               sprintf(buffer, "%.10lu 00000 n \n",
                        (unsigned long)t2p->pdf_xrefoffsets[i]);
-               written += TIFFWriteFile(output, (tdata_t) buffer, 20);
+               written += t2pWriteFile(output, (tdata_t) buffer, 20);
        }
 
        return(written);
 }
 
 /*
- *     This function writes a PDF trailer to output.
+ * This function writes a PDF trailer to output.
  */
 
 tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
@@ -5060,46 +5143,34 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
        tsize_t written = 0;
        char buffer[32];
        int buflen = 0;
-       char fileidbuf[16];
-       int i = 0;
+       size_t i = 0;
 
-       ((int*)fileidbuf)[0] = rand();
-       ((int*)fileidbuf)[1] = rand();
-       ((int*)fileidbuf)[2] = rand();
-       ((int*)fileidbuf)[3] = rand();
-       t2p->pdf_fileid = (char*)_TIFFmalloc(33);
-       if(t2p->pdf_fileid == NULL) {
-               TIFFError(
-                       TIFF2PDF_MODULE, 
-               "Can't allocate %u bytes of memory for t2p_write_pdf_trailer", 
-                       33 );
-               t2p->t2p_error = T2P_ERR_ERROR;
-               return(0);
-       }
-       _TIFFmemset(t2p->pdf_fileid, 0x00, 33);
-       for (i=0; i<16; i++)
-               sprintf(&(t2p->pdf_fileid[2*i]), "%.2hhX", fileidbuf[i]);
-       written += TIFFWriteFile(output, (tdata_t) "trailer\r<<\r/Size ", 17);
+       for (i = 0; i < sizeof(t2p->pdf_fileid) - 8; i += 8)
+               snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand());
+
+       written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17);
        buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        _TIFFmemset(buffer, 0x00, 32);  
-       written += TIFFWriteFile(output, (tdata_t) "\r/Root ", 7);
+       written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7);
        buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        _TIFFmemset(buffer, 0x00, 32);  
-       written += TIFFWriteFile(output, (tdata_t) " 0 R \r/Info ", 12);
+       written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12);
        buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        _TIFFmemset(buffer, 0x00, 32);  
-       written += TIFFWriteFile(output, (tdata_t) " 0 R \r/ID[<", 11);
-       written += TIFFWriteFile(output, (tdata_t) t2p->pdf_fileid, 32);
-       written += TIFFWriteFile(output, (tdata_t) "><", 2);
-       written += TIFFWriteFile(output, (tdata_t) t2p->pdf_fileid, 32);
-       written += TIFFWriteFile(output, (tdata_t) ">]\r>>\rstartxref\r", 16);
+       written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11);
+       written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
+                               sizeof(t2p->pdf_fileid) - 1);
+       written += t2pWriteFile(output, (tdata_t) "><", 2);
+       written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
+                               sizeof(t2p->pdf_fileid) - 1);
+       written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16);
        buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref);
-       written += TIFFWriteFile(output, (tdata_t) buffer, buflen);
+       written += t2pWriteFile(output, (tdata_t) buffer, buflen);
        _TIFFmemset(buffer, 0x00, 32);  
-       written += TIFFWriteFile(output, (tdata_t) "\r%%EOF\r", 7);
+       written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7);
 
        return(written);
 }
@@ -5113,7 +5184,7 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
   library, and TIFFWriteEncodedStrip can be used to write compressed data to 
   the output.  The output is not actually a TIFF file, it is a PDF file.  
 
-  This function uses only TIFFWriteFile and TIFFWriteEncodedStrip to write to 
+  This function uses only t2pWriteFile and TIFFWriteEncodedStrip to write to 
   the output TIFF file.  When libtiff would otherwise be writing data to the 
   output file, the write procedure of the TIFF structure is replaced with an 
   empty implementation.
@@ -5134,7 +5205,7 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
        assert(output != NULL);
 
        if(output->tif_seekproc != NULL){
-               TIFFSeekFile(output, (toff_t) 0, SEEK_SET);
+               t2pSeekFile(output, (toff_t) 0, SEEK_SET);
        }
 
   This function returns the file size of the output PDF file.  On error it 
@@ -5157,8 +5228,9 @@ tsize_t t2p_write_pdf(T2P* t2p, TIFF* input, TIFF* output){
        if(t2p->pdf_xrefoffsets==NULL){
                TIFFError(
                        TIFF2PDF_MODULE, 
-                       "Can't allocate %lu bytes of memory for t2p_write_pdf", 
-                       t2p->pdf_xrefcount * sizeof(uint32) );
+                       "Can't allocate %u bytes of memory for t2p_write_pdf", 
+                       (unsigned int) (t2p->pdf_xrefcount * sizeof(uint32)) );
+               t2p->t2p_error = T2P_ERR_ERROR;
                return(written);
        }
        t2p->pdf_xrefcount=0;
@@ -5298,13 +5370,19 @@ tsize_t t2p_write_pdf(T2P* t2p, TIFF* input, TIFF* output){
                        written += t2p_write_pdf_obj_end(output);
                }
        }
-       t2p->pdf_startxref=written;
+       t2p->pdf_startxref = written;
        written += t2p_write_pdf_xreftable(t2p, output);
        written += t2p_write_pdf_trailer(t2p, output);
-       t2p->tiff_writeproc=output->tif_writeproc;
-       output->tif_writeproc=t2p_empty_writeproc;
+       t2p_disable(output);
 
        return(written);
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 4018a33418a5e76ae353709f97f305d2d5213c54..7882d30e39f29b8c6b19ff8b1b37c71935fe53f4 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 /*
  * Revision history
  *
+ * 2010-Sep-17
+ *    Richard Nolde: Reinstate code from Feb 2009 that never got
+ *    accepted into CVS with major modifications to handle -H and -W
+ *    options. Replaced original PlaceImage function with several
+ *    new functions that make support for multiple output pages
+ *    from a single image easier to understand. Added additional
+ *    warning messages for incompatible command line options.
+ *    Add new command line options to specify PageOrientation
+ *    Document Structuring Comment for landscape or portrait
+ *    and code to determine the values from ouput width and height
+ *    if not specified on the command line.
+ *    Add new command line option to specify document creator
+ *    as an alterntive to the string "tiff2ps" following model
+ *    of patch submitted by Thomas Jarosch for specifiying a
+ *    document title which is also supported now.
+ *
+ * 2009-Feb-11
+ *    Richard Nolde: Added support for rotations of 90, 180, 270
+ *    and auto using -r <90|180|270|auto>.  Auto picks the best
+ *    fit for the image on the specified paper size (eg portrait
+ *    or landscape) if -h or -w is specified. Rotation is in
+ *    degrees counterclockwise since that is how Postscript does
+ *    it. The auto opption rotates the image 90 degrees ccw to
+ *    produce landscape if that is a better fit than portait.
+ *
+ *    Cleaned up code in TIFF2PS and broke into smaller functions
+ *    to simplify rotations.
+ *
+ *    Identified incompatible options and returned errors, eg
+ *    -i for imagemask operator is only available for Level2 or
+ *    Level3 Postscript in the current implmentation since there
+ *    is a difference in the way the operands are called for Level1
+ *    and there is no function to provide the Level1 version.
+ *    -H was not handled properly if -h and/or -w were specified.
+ *    It should only clip the masked images if the scaled image
+ *    exceeds the maxPageHeight specified with -H.
+ *  
+ *    New design allows for all of the following combinations:
+ *    Conversion of TIFF to Postscript with optional rotations
+ *    of 90, 180, 270, or auto degrees counterclockwise
+ *    Conversion of TIFF to Postscript with entire image scaled
+ *    to maximum of values spedified with -h or -w while
+ *    maintaining aspect ratio. Same rotations apply.
+ *    Conversion of TIFF to Postscript with clipping of output
+ *    viewport to height specified with -H, producing multiple
+ *    pages at this height and original width as needed.
+ *    Same rotations apply.
+ *    Conversion of TIFF to Postscript with image scaled to 
+ *    maximum specified by -h and -w and the resulting scaled
+ *    image is presented in an output viewport clipped by -H height.
+ *    The same rotations apply.
+ *
+ *    Added maxPageWidth option using -W flag. MaxPageHeight and
+ *    MaxPageWidth are mutually exclusive since the aspect ratio
+ *    cannot be maintained if you set both.
+ *    Rewrote PlaceImage to allow maxPageHeight and maxPageWidth
+ *    options to work with values smaller or larger than the
+ *    physical paper size and still preserve the aspect ratio.
+ *    This is accomplished by creating multiple pages across
+ *    as well as down if need be.
+ *
  * 2001-Mar-21
  *    I (Bruce A. Mallett) added this revision history comment ;)
  *
  *    Added an experimental ASCII85 encoder which can be used
  *    only when there is a single buffer of bytes to be encoded.
  *    This version is much faster at encoding a straight-line
- *    buffer of data because it can avoid alot of the loop
- *    overhead of the byte-by-bye version.  To use this version
+ *    buffer of data because it can avoid a lot of the loop
+ *    overhead of the byte-by-byte version.  To use this version
  *    you need to define EXP_ASCII85ENCODER (experimental ...).
  *
  *    Added bug fix given by Michael Schmidt to PS_Lvl2page()
@@ -115,10 +180,15 @@ int       generateEPSF = TRUE;            /* generate Encapsulated PostScript */
 int    PSduplex = FALSE;               /* enable duplex printing */
 int    PStumble = FALSE;               /* enable top edge binding */
 int    PSavoiddeadzone = TRUE;         /* enable avoiding printer deadzone */
-double maxPageHeight = 0;              /* maximum size to fit on page */
+double maxPageHeight = 0;              /* maximum height to select from image and print per page */
+double maxPageWidth  = 0;              /* maximum width  to select from image and print per page */
 double splitOverlap = 0;               /* amount for split pages to overlag */
-int    rotate = FALSE;                 /* rotate image by 180 degrees */
-char   *filename;                      /* input filename */
+int    rotation = 0;                   /* optional value for rotation angle */
+int     auto_rotate = 0;                /* rotate image for best fit on the page */
+char   *filename = NULL;               /* input filename */
+char    *title = NULL;                  /* optional document title string */
+char    *creator = NULL;                /* optional document creator string */
+char    pageOrientation[12];            /* set optional PageOrientation DSC to Landscape or Portrait */
 int    useImagemask = FALSE;           /* Use imagemask instead of image operator */
 uint16 res_unit = 0;                   /* Resolution units: 2 - inches, 3 - cm */
 
@@ -141,11 +211,22 @@ void      PSRawDataBW(FILE*, TIFF*, uint32, uint32);
 void   Ascii85Init(void);
 void   Ascii85Put(unsigned char code, FILE* fd);
 void   Ascii85Flush(FILE* fd);
-void    PSHead(FILE*, TIFF*, uint32, uint32, double, double, double, double);
+void    PSHead(FILE*, double, double, double, double);
 void   PSTail(FILE*, int);
+int     psStart(FILE *, int, int, int *, double *, double, double, double,
+                double, double, double, double, double, double, double);
+int     psPageSize(FILE *, int, double, double, double, double, double, double);
+int     psRotateImage(FILE *, int, double, double, double, double);
+int     psMaskImage(FILE *, TIFF *, int, int, int *, double, double,
+                   double, double, double, double, double, double, double);
+int     psScaleImage(FILE *, double, int, int, double, double, double, double,
+                     double, double);
+int     get_viewport (double, double, double, double, double *, double *, int);
+int     exportMaskedImage(FILE *, double, double, double, double, int, int,
+                         double, double, double, int, int);
 
 #if    defined( EXP_ASCII85ENCODER)
-int Ascii85EncodeBlock( uint8 * ascii85_p, unsigned f_eod, const uint8 * raw_p, int raw_l );
+tsize_t Ascii85EncodeBlock( uint8 * ascii85_p, unsigned f_eod, const uint8 * raw_p, tsize_t raw_l );
 #endif
 
 static void usage(int);
@@ -164,7 +245,9 @@ main(int argc, char* argv[])
        extern int optind;
        FILE* output = stdout;
 
-       while ((c = getopt(argc, argv, "b:d:h:H:L:i:w:l:o:O:acelmrxyzps1238DT")) != -1)
+        pageOrientation[0] = '\0';
+
+       while ((c = getopt(argc, argv, "b:d:h:H:W:L:i:w:l:o:O:P:C:r:t:acemxyzps1238DT")) != -1)
                switch (c) {
                case 'b':
                        bottommargin = atof(optarg);
@@ -172,7 +255,10 @@ main(int argc, char* argv[])
                case 'c':
                        centered = 1;
                        break;
-               case 'd':
+                case 'C':
+                        creator = optarg;
+                        break;
+               case 'd': /* without -a, this only processes one image at this IFD */
                        dirnum = atoi(optarg);
                        break;
                case 'D':
@@ -185,7 +271,7 @@ main(int argc, char* argv[])
                        PStumble = TRUE;
                        break;
                case 'e':
-                       PSavoiddeadzone = FALSE;
+                        PSavoiddeadzone = FALSE;
                        generateEPSF = TRUE;
                        break;
                case 'h':
@@ -193,7 +279,9 @@ main(int argc, char* argv[])
                        break;
                case 'H':
                        maxPageHeight = atof(optarg);
-                       if (pageHeight==0) pageHeight = maxPageHeight;
+                       break;
+               case 'W':
+                       maxPageWidth = atof(optarg);
                        break;
                case 'L':
                        splitOverlap = atof(optarg);
@@ -202,7 +290,22 @@ main(int argc, char* argv[])
                        useImagemask = TRUE;
                        break;
                case 'o':
-                       diroff = (uint32) strtoul(optarg, NULL, 0);
+                       switch (optarg[0])
+                          {
+                          case '0':
+                          case '1':
+                          case '2':
+                          case '3':
+                          case '4':
+                          case '5':
+                          case '6':
+                          case '7':
+                          case '8':
+                          case '9': diroff = (uint32) strtoul(optarg, NULL, 0);
+                                 break;
+                          default: TIFFError ("-o", "Offset must be a numeric value.");
+                           exit (1);
+                         }
                        break;
                case 'O':               /* XXX too bad -o is already taken */
                        output = fopen(optarg, "w");
@@ -213,21 +316,57 @@ main(int argc, char* argv[])
                                exit(-2);
                        }
                        break;
+               case 'P':
+                        switch (optarg[0])
+                          {
+                          case 'l':
+                          case 'L': strcpy (pageOrientation, "Landscape");
+                                   break; 
+                          case 'p':
+                          case 'P': strcpy (pageOrientation, "Portrait");
+                                   break; 
+                          default: TIFFError ("-P", "Page orientation must be Landscape or Portrait");
+                                  exit (-1);
+                         }
+                       break;
                case 'l':
                        leftmargin = atof(optarg);
                        break;
-               case 'a':
+               case 'a': /* removed fall through to generate warning below, R Nolde 09-01-2010 */
                        printAll = TRUE;
-                       /* fall thru... */
+                       break;
                case 'p':
                        generateEPSF = FALSE;
                        break;
                case 'r':
-                       rotate = TRUE;
+                        if (strcmp (optarg, "auto") == 0)
+                         {
+                          rotation = 0;
+                          auto_rotate = TRUE;
+                          }
+                        else
+                         {
+                         rotation = atoi(optarg);
+                          auto_rotate = FALSE;
+                         }
+                        switch (rotation)
+                          {
+                         case   0:
+                          case  90:
+                          case 180:
+                          case 270:
+                           break;
+                         default:
+                            fprintf (stderr, "Rotation angle must be 90, 180, 270 (degrees ccw) or auto\n");
+                           exit (-1);
+                         }
                        break;
                case 's':
                        printAll = FALSE;
                        break;
+                case 't':
+                        title = optarg;
+                        break;
                case 'w':
                        pageWidth = atof(optarg);
                        break;
@@ -259,6 +398,67 @@ main(int argc, char* argv[])
                case '?':
                        usage(-1);
                }
+
+        if (useImagemask == TRUE)
+          {
+         if ((level2 == FALSE) && (level3 == FALSE))
+            {
+           TIFFError ("-m "," imagemask operator requres Postscript Level2 or Level3");
+           exit (1);
+            }
+          }
+
+        if (pageWidth && (maxPageWidth > pageWidth))
+         {
+         TIFFError ("-W", "Max viewport width cannot exceed page width");
+         exit (1);
+          }
+
+       if (pageHeight && (maxPageHeight > pageHeight))
+         {
+         TIFFError ("-H", "Max viewport height cannot exceed page height");
+         exit (1);
+          }
+
+        /* auto rotate requires a specified page width and height */
+        if (auto_rotate == TRUE)
+          {
+         if ((pageWidth == 0) || (pageHeight == 0))
+           TIFFWarning ("-r auto", " requires page height and width specified with -h and -w");
+
+          if ((maxPageWidth > 0) || (maxPageHeight > 0))
+            {
+           TIFFError ("-r auto", " is incompatible with maximum page width/height specified by -H or -W");
+            exit (1);
+            }
+          }
+        if ((maxPageWidth > 0) && (maxPageHeight > 0))
+            {
+           TIFFError ("-H and -W", " Use only one of -H or -W to define a viewport");
+            exit (1);
+            }
+
+        if ((generateEPSF == TRUE) && (printAll == TRUE))
+          {
+         TIFFError(" -e and -a", "Warning: Cannot generate Encapsulated Postscript for multiple images");
+         generateEPSF = FALSE;
+          }
+
+        if ((generateEPSF == TRUE) && (PSduplex == TRUE))
+          {
+         TIFFError(" -e and -D", "Warning: Encapsulated Postscript does not support Duplex option");
+         PSduplex = FALSE;
+          }
+
+        if ((generateEPSF == TRUE) && (PStumble == TRUE))
+          {
+         TIFFError(" -e and -T", "Warning: Encapsulated Postscript does not support Top Edge Binding option");
+         PStumble = FALSE;
+          }
+
+        if ((generateEPSF == TRUE) && (PSavoiddeadzone == TRUE))
+         PSavoiddeadzone = FALSE;
+
        for (; argc - optind > 0; optind++) {
                TIFF* tif = TIFFOpen(filename = argv[optind], "r");
                if (tif != NULL) {
@@ -269,7 +469,11 @@ main(int argc, char* argv[])
                            !TIFFSetSubDirectory(tif, diroff))
                                return (-1);
                        np = TIFF2PS(output, tif, pageWidth, pageHeight,
-                               leftmargin, bottommargin, centered);
+                                    leftmargin, bottommargin, centered);
+                        if (np < 0)
+                          {
+                         TIFFError("Error", "Unable to process %s", filename);
+                          }
                        TIFFClose(tif);
                }
        }
@@ -350,6 +554,7 @@ checkImage(TIFF* tif)
        switch (bitspersample) {
        case 1: case 2:
        case 4: case 8:
+       case 16:
                break;
        default:
                TIFFError(filename, "Can not handle %d-bit/sample image",
@@ -402,7 +607,8 @@ PhotoshopBanner(FILE* fd, uint32 w, uint32 h, int bs, int nc, char* startline)
        fprintf(fd, "\"\n");
 }
 
-/*
+/*   Convert pixel width and height pw, ph, to points pprw, pprh 
+ *   using image resolution and resolution units from TIFF tags.
  *   pw : image width in pixels
  *   ph : image height in pixels
  * pprw : image width in PS units (72 dpi)
@@ -415,8 +621,9 @@ setupPageState(TIFF* tif, uint32* pw, uint32* ph, double* pprw, double* pprh)
 
        TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, pw);
        TIFFGetField(tif, TIFFTAG_IMAGELENGTH, ph);
-       if (res_unit == 0)
-               TIFFGetFieldDefaulted(tif, TIFFTAG_RESOLUTIONUNIT, &res_unit);
+       if (res_unit == 0)      /* Not specified as command line option */
+               if (!TIFFGetFieldDefaulted(tif, TIFFTAG_RESOLUTIONUNIT, &res_unit))
+                       res_unit = RESUNIT_INCH;
        /*
         * Calculate printable area.
         */
@@ -432,13 +639,28 @@ setupPageState(TIFF* tif, uint32* pw, uint32* ph, double* pprw, double* pprh)
                break;
        case RESUNIT_INCH:
                break;
-       case RESUNIT_NONE:
-       default:
-               xres *= PS_UNIT_SIZE, yres *= PS_UNIT_SIZE;
+       case RESUNIT_NONE:      /* Subsequent code assumes we have converted to inches! */
+               res_unit = RESUNIT_INCH;
+               break;
+       default:        /* Last ditch guess for unspecified RESUNIT case
+                        * check that the resolution is not inches before scaling it.
+                        * Moved to end of function with additional check, RJN, 08-31-2010
+                        * if (xres != PS_UNIT_SIZE || yres != PS_UNIT_SIZE)
+                        * xres *= PS_UNIT_SIZE, yres *= PS_UNIT_SIZE;
+                        */
                break;
        }
-       *pprh = PSUNITS(*ph, yres);
-       *pprw = PSUNITS(*pw, xres);
+       /* This is a hack to deal with images that have no meaningful Resolution Size
+        * but may have x and/or y resolutions of 1 pixel per undefined unit.
+        */
+       if ((xres > 1.0) && (xres != PS_UNIT_SIZE))
+               *pprw = PSUNITS(*pw, xres);
+       else
+               *pprw = PSUNITS(*pw, PS_UNIT_SIZE);
+       if ((yres > 1.0) && (yres != PS_UNIT_SIZE))
+               *pprh = PSUNITS(*ph, yres);
+       else
+               *pprh = PSUNITS(*ph, PS_UNIT_SIZE);
 }
 
 static int
@@ -459,229 +681,922 @@ static  tsize_t tf_numberstrips;
 static char *hex = "0123456789abcdef";
 
 /*
- * imagewidth & imageheight are 1/72 inches
- * pagewidth & pageheight are inches
+ * Pagewidth and pageheight are the output size in points,
+ * may refer to values specified with -h and -w, or to
+ * values read from the image if neither -h nor -w are used.
+ * Imagewidth and imageheight are image size in points.
+ * Ximages and Yimages are number of pages across and down.
+ * Only one of maxPageHeight or maxPageWidth can be used.
+ * These are global variables unfortunately.
  */
-int
-PlaceImage(FILE *fp, double pagewidth, double pageheight,
-          double imagewidth, double imageheight, int splitpage,
-          double lm, double bm, int cnt)
+int get_subimage_count(double pagewidth,  double pageheight,
+                      double imagewidth, double imageheight,
+                      int *ximages, int *yimages,
+                      int rotation, double scale)
 {
-       double xtran = 0;
-       double ytran = 0;
-       double xscale = 1;
-       double yscale = 1;
-       double left_offset = lm * PS_UNIT_SIZE;
-       double bottom_offset = bm * PS_UNIT_SIZE;
-       double subimageheight;
-       double splitheight;
-       double overlap;
-
-       pagewidth *= PS_UNIT_SIZE;
+       int pages = 1;
+       double splitheight = 0;  /* Requested Max Height in points */
+       double splitwidth  = 0;  /* Requested Max Width in points */
+       double overlap     = 0;  /* Repeated edge width in points */
+
+       splitheight = maxPageHeight * PS_UNIT_SIZE;
+       splitwidth  = maxPageWidth  * PS_UNIT_SIZE;
+       overlap     = splitOverlap  * PS_UNIT_SIZE;
+       pagewidth  *= PS_UNIT_SIZE;
        pageheight *= PS_UNIT_SIZE;
 
-       if (maxPageHeight==0)
-               splitheight = 0;
-       else
-               splitheight = maxPageHeight * PS_UNIT_SIZE;
-       overlap = splitOverlap * PS_UNIT_SIZE;
-
-       /*
-        * WIDTH:
-        *      if too wide, scrunch to fit
-        *      else leave it alone
-        */
-       if (imagewidth <= pagewidth) {
-               xscale = imagewidth;
-       } else {
-               xscale = pagewidth;
+       if ((imagewidth < 1.0) || (imageheight < 1.0))
+       {
+               TIFFError("get_subimage_count", "Invalid image width or height");
+               return (0);
        }
 
-       /* HEIGHT:
-        *      if too long, scrunch to fit
-        *      if too short, move to top of page
-        */
-       if (imageheight <= pageheight) {
-               yscale = imageheight;
-               ytran = pageheight - imageheight;
-       } else if (imageheight > pageheight &&
-               (splitheight == 0 || imageheight <= splitheight)) {
-               yscale = pageheight;
-       } else /* imageheight > splitheight */ {
-               subimageheight = imageheight - (pageheight-overlap)*splitpage;
-               if (subimageheight <= pageheight) {
-                       yscale = imageheight;
-                       ytran = pageheight - subimageheight;
-                       splitpage = 0;
-               } else if ( subimageheight > pageheight && subimageheight <= splitheight) {
-                       yscale = imageheight * pageheight / subimageheight;
-                       ytran = 0;
-                       splitpage = 0;
-               } else /* sumimageheight > splitheight */ {
-                       yscale = imageheight;
-                       ytran = pageheight - subimageheight;
-                       splitpage++;
+  switch (rotation)
+    {
+    case 0:
+    case 180: if (splitheight > 0) /* -H maxPageHeight */
+                {
+               if (imageheight > splitheight) /* More than one vertical image segment */
+                 {
+                 if (pagewidth)
+                   *ximages = (int)ceil((scale * imagewidth)  / (pagewidth - overlap));
+                  else
+                   *ximages = 1;
+                 *yimages = (int)ceil((scale * imageheight) / (splitheight - overlap)); /* Max vert pages needed */
+                 }
+                else
+                 {
+                 if (pagewidth)
+                   *ximages = (int)ceil((scale * imagewidth) / (pagewidth - overlap));    /* Max horz pages needed */
+                  else
+                   *ximages = 1;
+                 *yimages = 1;                                                     /* Max vert pages needed */
+                 }
+               }
+              else
+               {
+                if (splitwidth > 0) /* -W maxPageWidth */
+                 {
+                 if (imagewidth >splitwidth)
+                   {
+                   *ximages = (int)ceil((scale * imagewidth)  / (splitwidth - overlap));   /* Max horz pages needed */
+                    if (pageheight)
+                     *yimages = (int)ceil((scale * imageheight) / (pageheight - overlap)); /* Max vert pages needed */
+                    else
+                     *yimages = 1;
+                   }
+                  else
+                   {
+                   *ximages = 1;                                                     /* Max vert pages needed */
+                    if (pageheight)
+                     *yimages = (int)ceil((scale * imageheight) / (pageheight - overlap)); /* Max vert pages needed */
+                    else
+                     *yimages = 1;
+                   }
+                 }
+                else
+                 {
+                 *ximages = 1;
+                 *yimages = 1;
+                 }
+               }
+             break;
+    case 90:
+    case 270: if (splitheight > 0) /* -H maxPageHeight */
+                {
+               if (imagewidth > splitheight) /* More than one vertical image segment */
+                 {
+                 *yimages = (int)ceil((scale * imagewidth) / (splitheight - overlap)); /* Max vert pages needed */
+                  if (pagewidth)
+                   *ximages = (int)ceil((scale * imageheight) / (pagewidth - overlap));   /* Max horz pages needed */
+                  else
+                   *ximages = 1;
+                 }
+                else
+                 {
+                 *yimages = 1;                                                     /* Max vert pages needed */
+                  if (pagewidth)
+                   *ximages = (int)ceil((scale * imageheight) / (pagewidth - overlap));    /* Max horz pages needed */
+                  else
+                   *ximages = 1;
+                 }
+               }
+              else
+               {
+                if (splitwidth > 0) /* -W maxPageWidth */
+                 {
+                 if (imageheight > splitwidth)
+                   {
+                   if (pageheight)
+                     *yimages = (int)ceil((scale * imagewidth) / (pageheight - overlap)); /* Max vert pages needed */
+                    else
+                     *yimages = 1;
+                   *ximages = (int)ceil((scale * imageheight)  / (splitwidth - overlap));   /* Max horz pages needed */
+                   }
+                  else
+                   {
+                   if (pageheight)
+                     *yimages = (int)ceil((scale * imagewidth) / (pageheight - overlap));  /* Max horz pages needed */
+                    else
+                     *yimages = 1;
+                   *ximages = 1;                                                     /* Max vert pages needed */
+                   }
+                 }
+                else
+                 {
+                 *ximages = 1;
+                 *yimages = 1;
+                 }
+               }
+             break;
+    default:  *ximages = 1;
+             *yimages = 1;
+  }
+  pages = (*ximages) * (*yimages);
+  return (pages);
+  }
+
+/* New version of PlaceImage that handles only the translation and rotation
+ * for a single output page.
+ */
+int exportMaskedImage(FILE *fp, double pagewidth, double pageheight,
+                     double imagewidth, double imageheight,
+                      int row, int column,
+                      double left_offset, double bott_offset,
+                     double scale, int center, int rotation)
+  {
+  double xtran = 0.0;
+  double ytran = 0.0;
+
+  double xscale = 1.0;
+  double yscale = 1.0;
+
+  double splitheight    = 0;  /* Requested Max Height in points */
+  double splitwidth     = 0;  /* Requested Max Width in points */
+  double overlap        = 0;  /* Repeated edge width in points */
+  double subimage_height = 0.0;
+
+  splitheight = maxPageHeight * PS_UNIT_SIZE;
+  splitwidth  = maxPageWidth  * PS_UNIT_SIZE;
+  overlap     = splitOverlap  * PS_UNIT_SIZE;
+  xscale = scale * imagewidth;
+  yscale = scale * imageheight;
+
+  if ((xscale < 0.0) || (yscale < 0.0))
+    {
+    TIFFError("exportMaskedImage", "Invalid parameters.");
+    return (-1);
+    }
+
+  /* If images are cropped to a vewport with -H or -W, the output pages are shifted to
+   * the top of each output page rather than the Postscript default lower edge.
+   */
+  switch (rotation)
+    {
+    case 0:
+    case 180: if (splitheight > 0) /* -H maxPageHeight */
+                {
+               if (splitheight < imageheight) /* More than one vertical image segments */
+                 {
+                 xtran = -1.0 * column * (pagewidth - overlap);
+                  subimage_height = imageheight - ((splitheight - overlap) * row);
+                 ytran  = pageheight - subimage_height * (pageheight / splitheight);
+                  }
+                else  /* Only one page in vertical direction */
+                 {
+                 xtran = -1.0 * column * (pagewidth - overlap);
+                  ytran = splitheight - imageheight;
+                 }
+               }
+              else
+               {
+                if (splitwidth > 0) /* maxPageWidth */
+                 {
+                 if (splitwidth < imagewidth)
+                   {
+                   xtran = -1.0  * column * splitwidth;
+                   ytran = -1.0 * row * (pageheight - overlap);
+                    }
+                  else /* Only one page in horizontal direction */
+                   {
+                    ytran = -1.0 * row * (pageheight - overlap);
+                    xtran = 0;
+                   }
+                 }
+                else    /* Simple case, no splitting */
+                 {
+                 ytran = pageheight - imageheight;
+                 xtran = 0;
+                  }
+                }
+              bott_offset += ytran / (center ? 2 : 1);
+              left_offset += xtran / (center ? 2 : 1);
+              break;
+    case  90:
+    case 270:  if (splitheight > 0) /* -H maxPageHeight */
+                {
+               if (splitheight < imagewidth) /* More than one vertical image segments */
+                 {
+                 xtran = -1.0 * column * (pageheight - overlap);
+                 /* Commented code places image at bottom of page instead of top.
+                     ytran = -1.0 * row * splitheight;
+                   */
+                  if (row == 0)
+                    ytran = -1.0 * (imagewidth - splitheight);
+                  else
+                    ytran = -1.0 * (imagewidth - (splitheight - overlap) * (row + 1));
+                  }
+                else  /* Only one page in vertical direction */
+                 {
+                  xtran = -1.0 * column * (pageheight - overlap);
+                  ytran = splitheight - imagewidth;
+                 }
                }
-       }
-       
-       bottom_offset += ytran / (cnt?2:1);
-       if (cnt)
-           left_offset += xtran / 2;
-       fprintf(fp, "%f %f translate\n", left_offset, bottom_offset);
-       fprintf(fp, "%f %f scale\n", xscale, yscale);
-       if (rotate)
-           fputs ("1 1 translate 180 rotate\n", fp);
-
-       return splitpage;
-}
+              else
+               {
+                if (splitwidth > 0) /* maxPageWidth */
+                 {
+                 if (splitwidth < imageheight)
+                   {
+                    xtran = -1.0  * column * splitwidth;
+                    ytran = -1.0 * row * (pagewidth - overlap);
+                    }
+                  else /* Only one page in horizontal direction */
+                   {
+                    ytran = -1.0 * row * (pagewidth - overlap);
+                    xtran = 0;
+                   }
+                 }
+                else    /* Simple case, no splitting */
+                 {
+                 ytran = pageheight - imageheight;
+                 xtran = 0; /* pagewidth  - imagewidth; */
+                  }
+                }
+              bott_offset += ytran / (center ? 2 : 1);
+              left_offset += xtran / (center ? 2 : 1);
+              break;
+    default:  xtran = 0;
+             ytran = 0;
+    }
 
+  switch (rotation)
+    {
+    case   0: fprintf(fp, "%f %f translate\n", left_offset, bott_offset);
+              fprintf(fp, "%f %f scale\n", xscale, yscale);
+             break;
+    case 180: fprintf(fp, "%f %f translate\n", left_offset, bott_offset);
+              fprintf(fp, "%f %f scale\n1 1 translate 180 rotate\n",  xscale, yscale);
+              break;
+    case  90: fprintf(fp, "%f %f translate\n", left_offset, bott_offset);
+              fprintf(fp, "%f %f scale\n1 0 translate 90 rotate\n", yscale, xscale);
+              break;
+    case 270: fprintf(fp, "%f %f translate\n", left_offset, bott_offset);
+              fprintf(fp, "%f %f scale\n0 1 translate 270 rotate\n", yscale, xscale);
+              break;
+    default:  TIFFError ("exportMaskedImage", "Unsupported rotation angle %d. No rotation", rotation);
+             fprintf( fp, "%f %f scale\n", xscale, yscale);
+              break;
+    }
 
-/* returns the sequence number of the page processed */
-int
-TIFF2PS(FILE* fd, TIFF* tif,
-       double pw, double ph, double lm, double bm, int cnt)
-{
-       uint32 w, h;
-       float ox, oy;
-        double prw, prh;
-       double scale = 1.0;
-       uint32 subfiletype;
-       uint16* sampleinfo;
-       static int npages = 0;
-       int split;
-
-       if (!TIFFGetField(tif, TIFFTAG_XPOSITION, &ox))
-               ox = 0;
-       if (!TIFFGetField(tif, TIFFTAG_YPOSITION, &oy))
-               oy = 0;
-       setupPageState(tif, &w, &h, &prw, &prh);
-
-       do {
-               tf_numberstrips = TIFFNumberOfStrips(tif);
-               TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP,
-                   &tf_rowsperstrip);
-               setupPageState(tif, &w, &h, &prw, &prh);
-               if (!npages)
-                       PSHead(fd, tif, w, h, prw, prh, ox, oy);
-               TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE,
-                   &bitspersample);
-               TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL,
-                   &samplesperpixel);
-               TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG,
-                   &planarconfiguration);
-               TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression);
-               TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,
-                   &extrasamples, &sampleinfo);
-               alpha = (extrasamples == 1 &&
-                        sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
-               if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric)) {
-                       switch (samplesperpixel - extrasamples) {
-                       case 1:
-                               if (isCCITTCompression(tif))
-                                       photometric = PHOTOMETRIC_MINISWHITE;
-                               else
-                                       photometric = PHOTOMETRIC_MINISBLACK;
-                               break;
-                       case 3:
-                               photometric = PHOTOMETRIC_RGB;
-                               break;
-                       case 4:
-                               photometric = PHOTOMETRIC_SEPARATED;
-                               break;
-                       }
-               }
-               if (checkImage(tif)) {
-                       tf_bytesperrow = TIFFScanlineSize(tif);
-                       npages++;
-                       fprintf(fd, "%%%%Page: %d %d\n", npages, npages);
-                       if (!generateEPSF && ( level2 || level3 )) {
-                               double psw, psh;
-                               if (pw != 0.0) {
-                                       psw = pw * PS_UNIT_SIZE;
-                                       if (res_unit == RESUNIT_CENTIMETER)
-                                               psw *= 2.54F;
-                               } else
-                                       psw=rotate ? prh:prw;
-                               if (ph != 0.0) {
-                                       psh = ph * PS_UNIT_SIZE;
-                                       if (res_unit == RESUNIT_CENTIMETER)
-                                               psh *= 2.54F;
-                               } else
-                                       psh=rotate ? prw:prh;
-                               fprintf(fd,
-       "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
-                                       psw, psh);
-                               fputs(
-       "<<\n  /Policies <<\n    /PageSize 3\n  >>\n>> setpagedevice\n",
-                                     fd);
-                       }
-                       fprintf(fd, "gsave\n");
-                       fprintf(fd, "100 dict begin\n");
-                       if (pw != 0 || ph != 0) {
-                               double psw = pw, psh = ph;
-                               if (!psw)
-                                       psw = prw;
-                               if (!psh)
-                                       psh = prh;
-                               if (maxPageHeight) { /* used -H option */
-                                       split = PlaceImage(fd,psw,psh,prw,prh,
-                                                          0,lm,bm,cnt);
-                                       while( split ) {
-                                           PSpage(fd, tif, w, h);
-                                           fprintf(fd, "end\n");
-                                           fprintf(fd, "grestore\n");
-                                           fprintf(fd, "showpage\n");
-                                           npages++;
-                                           fprintf(fd, "%%%%Page: %d %d\n",
-                                                   npages, npages);
-                                           fprintf(fd, "gsave\n");
-                                           fprintf(fd, "100 dict begin\n");
-                                           split = PlaceImage(fd,psw,psh,prw,prh,
-                                                              split,lm,bm,cnt);
-                                       }
-                               } else {
-                                       double left_offset = lm * PS_UNIT_SIZE;
-                                       double bottom_offset = bm * PS_UNIT_SIZE;
-                                       psw *= PS_UNIT_SIZE;
-                                       psh *= PS_UNIT_SIZE;
-
-                                       /* NB: maintain image aspect ratio */
-                                       scale = psw/prw < psh/prh ?
-                                               psw/prw : psh/prh;
-                                       if (scale > 1.0)
-                                               scale = 1.0;
-                                       if (cnt) {
-                                               bottom_offset +=
-                                                       (psh - prh * scale) / 2;
-                                               left_offset +=
-                                                       (psw - prw * scale) / 2;
-                                       }
-                                       fprintf(fd, "%f %f translate\n",
-                                               left_offset, bottom_offset);
-                                       fprintf(fd, "%f %f scale\n",
-                                               prw * scale, prh * scale);
-                                       if (rotate)
-                                               fputs ("1 1 translate 180 rotate\n", fd);
-                               }
-                       } else {
-                               fprintf(fd, "%f %f scale\n", prw, prh);
-                               if (rotate)
-                                       fputs ("1 1 translate 180 rotate\n", fd);
-                       }
-                       PSpage(fd, tif, w, h);
-                       fprintf(fd, "end\n");
-                       fprintf(fd, "grestore\n");
-                       fprintf(fd, "showpage\n");
-               }
-               if (generateEPSF)
-                       break;
-               TIFFGetFieldDefaulted(tif, TIFFTAG_SUBFILETYPE, &subfiletype);
-       } while (((subfiletype & FILETYPE_PAGE) || printAll) &&
-           TIFFReadDirectory(tif));
+  return (0);
+  }
 
-       return(npages);
-}
+/* Rotate an image without scaling or clipping */
+int  psRotateImage (FILE * fd, int rotation, double pswidth, double psheight,
+                    double left_offset, double bottom_offset)
+  {
+  if ((left_offset != 0.0) || (bottom_offset != 0))
+    fprintf (fd, "%f %f translate\n", left_offset, bottom_offset);
+
+  /* Exchange width and height for 90/270 rotations */
+  switch (rotation)
+    {
+    case   0: fprintf (fd, "%f %f scale\n", pswidth, psheight);
+              break;
+    case  90: fprintf (fd, "%f %f scale\n1 0 translate 90 rotate\n", psheight, pswidth);
+              break;
+    case 180: fprintf (fd, "%f %f scale\n1 1 translate 180 rotate\n", pswidth, psheight);
+              break;
+    case 270: fprintf (fd, "%f %f scale\n0 1 translate 270 rotate\n", psheight, pswidth);
+              break;
+    default:  TIFFError ("psRotateImage", "Unsupported rotation %d.", rotation);
+             fprintf( fd, "%f %f scale\n", pswidth, psheight);
+              return (1);
+    }
+  return (0);
+  }
+
+/* Scale and rotate an image to a single output page. */
+int psScaleImage(FILE * fd, double scale, int rotation, int center,
+                 double reqwidth, double reqheight, double pswidth, double psheight,
+                 double left_offset, double bottom_offset)
+  {
+  double hcenter = 0.0, vcenter = 0.0;
+
+  /* Adjust offsets for centering */
+  if (center)
+    {
+    switch (rotation)
+      {
+      case   90: vcenter = (reqheight - pswidth * scale) / 2;
+                hcenter = (reqwidth - psheight * scale) / 2;
+                 fprintf (fd, "%f %f translate\n", hcenter, vcenter);
+                 fprintf (fd, "%f %f scale\n1 0 translate 90 rotate\n", psheight * scale, pswidth * scale);
+                 break;
+      case  180: hcenter = (reqwidth - pswidth * scale) / 2;
+                vcenter = (reqheight - psheight * scale) / 2;
+                 fprintf (fd, "%f %f translate\n", hcenter, vcenter);
+                 fprintf (fd, "%f %f scale\n1 1 translate 180 rotate\n", pswidth * scale, psheight * scale);
+                 break;
+      case  270: vcenter = (reqheight - pswidth * scale) / 2;
+                hcenter = (reqwidth - psheight * scale) / 2;
+                 fprintf (fd, "%f %f translate\n", hcenter, vcenter);
+                 fprintf (fd, "%f %f scale\n0 1 translate 270 rotate\n", psheight * scale, pswidth * scale);
+                 break;
+      case    0:
+      default:   hcenter = (reqwidth - pswidth * scale) / 2;
+                vcenter = (reqheight - psheight * scale) / 2;
+                 fprintf (fd, "%f %f translate\n", hcenter, vcenter);
+                 fprintf (fd, "%f %f scale\n", pswidth * scale, psheight * scale);
+                 break;
+      }
+    }
+  else  /* Not centered */
+    {
+    switch (rotation)
+      {
+      case 0:   fprintf (fd, "%f %f translate\n", left_offset ? left_offset : 0.0,
+                         bottom_offset ? bottom_offset : reqheight - (psheight * scale));
+                fprintf (fd, "%f %f scale\n", pswidth * scale, psheight * scale);
+                break;
+      case 90:  fprintf (fd, "%f %f translate\n", left_offset ? left_offset : 0.0,
+                         bottom_offset ? bottom_offset : reqheight - (pswidth * scale));
+                fprintf (fd, "%f %f scale\n1 0 translate 90 rotate\n", psheight * scale, pswidth * scale);
+                break;
+      case 180: fprintf (fd, "%f %f translate\n", left_offset ? left_offset : 0.0,
+                         bottom_offset ? bottom_offset : reqheight - (psheight * scale));
+                fprintf (fd, "%f %f scale\n1 1 translate 180 rotate\n", pswidth * scale, psheight * scale);
+                break;
+      case 270: fprintf (fd, "%f %f translate\n", left_offset ? left_offset : 0.0,
+                         bottom_offset ? bottom_offset : reqheight - (pswidth * scale));
+                fprintf (fd, "%f %f scale\n0 1 translate 270 rotate\n", psheight * scale, pswidth * scale);
+                break;
+      default:  TIFFError ("psScaleImage", "Unsupported rotation  %d", rotation);
+               fprintf (fd, "%f %f scale\n", pswidth * scale, psheight * scale);
+                return (1);
+      }
+    }
+
+  return (0);
+  }
 
+/* This controls the visible portion of the page which is displayed.
+ * N.B. Setting maxPageHeight no longer sets pageheight if not set explicitly
+ */
+int psPageSize (FILE * fd, int rotation, double pgwidth, double pgheight,
+                double reqwidth, double reqheight, double pswidth, double psheight)
+  {
+  double xscale = 1.0, yscale = 1.0, scale = 1.0;
+  double splitheight;
+  double splitwidth;
+  double new_width;
+  double new_height;
+
+  splitheight = maxPageHeight * PS_UNIT_SIZE;
+  splitwidth  = maxPageWidth  * PS_UNIT_SIZE;
+
+  switch (rotation)
+    {
+    case   0:
+    case 180: if ((splitheight > 0) || (splitwidth > 0))
+                {
+               if (pgwidth != 0 || pgheight != 0)
+                  {
+                 xscale = reqwidth / (splitwidth ? splitwidth : pswidth);
+                 yscale = reqheight / (splitheight ? splitheight : psheight);
+                  scale = (xscale < yscale) ? xscale : yscale;
+                  }
+                new_width = splitwidth ? splitwidth : scale * pswidth;
+                new_height = splitheight ? splitheight : scale * psheight;
+                if (strlen(pageOrientation))
+                  fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                else
+                  fprintf (fd, "%%%%PageOrientation: %s\n", (new_width > new_height) ? "Landscape" : "Portrait");
+                fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)new_width, (long)new_height);
+                fprintf (fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                       new_width, new_height);
+                }
+             else /* No viewport defined with -H or -W */
+                {
+                if ((pgwidth == 0) && (pgheight == 0)) /* Image not scaled */
+                  {
+                  if (strlen(pageOrientation))
+                    fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                  else
+                    fprintf (fd, "%%%%PageOrientation: %s\n", (pswidth > psheight) ? "Landscape" : "Portrait");
+                 fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)pswidth, (long)psheight);
+                  fprintf(fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                          pswidth, psheight);
+                  }
+               else /* Image scaled */
+                  {
+                  if (strlen(pageOrientation))
+                    fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                  else
+                    fprintf (fd, "%%%%PageOrientation: %s\n", (reqwidth > reqheight) ? "Landscape" : "Portrait");
+                 fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)reqwidth, (long)reqheight);
+                  fprintf(fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                           reqwidth, reqheight);
+                  }
+                }
+             break;
+    case  90:
+    case 270: if ((splitheight > 0) || (splitwidth > 0))
+               {
+               if (pgwidth != 0 || pgheight != 0)
+                  {
+                 xscale = reqwidth / (splitwidth ? splitwidth : pswidth);
+                 yscale = reqheight / (splitheight ? splitheight : psheight);
+                  scale = (xscale < yscale) ? xscale : yscale;
+                  }
+                new_width = splitwidth ? splitwidth : scale * psheight;
+                new_height = splitheight ? splitheight : scale * pswidth;
+
+                if (strlen(pageOrientation))
+                  fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                else
+                  fprintf (fd, "%%%%PageOrientation: %s\n", (new_width > new_height) ? "Landscape" : "Portrait");
+                fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)new_width, (long)new_height);
+                fprintf (fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                       new_width, new_height);
+                }
+              else
+                {
+                if ((pgwidth == 0) && (pgheight == 0)) /* Image not scaled */
+                  {
+                  if (strlen(pageOrientation))
+                    fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                  else
+                    fprintf (fd, "%%%%PageOrientation: %s\n", (psheight > pswidth) ? "Landscape" : "Portrait");
+                 fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)psheight, (long)pswidth);
+                  fprintf(fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                         psheight, pswidth);
+                  }
+               else /* Image scaled */
+                  {
+                  if (strlen(pageOrientation))
+                    fprintf (fd, "%%%%PageOrientation: %s\n", pageOrientation);
+                  else
+                    fprintf (fd, "%%%%PageOrientation: %s\n", (reqwidth > reqheight) ? "Landscape" : "Portrait");
+                 fprintf (fd, "%%%%PageBoundingBox: 0 0 %ld %ld\n", (long)reqwidth, (long)reqheight);
+                  fprintf(fd, "1 dict begin /PageSize [ %f %f ] def currentdict end setpagedevice\n",
+                          reqwidth, reqheight);
+                  }
+               }
+             break;
+    default:  TIFFError ("psPageSize", "Invalid rotation %d", rotation);
+      return (1);
+    }
+  fputs("<<\n  /Policies <<\n    /PageSize 3\n  >>\n>> setpagedevice\n", fd);
+
+  return (0);
+  } /* end psPageSize */
+
+/* Mask an image as a series of pages, each only showing a section defined
+ * by the maxPageHeight or maxPageWidth options.
+ */
+int psMaskImage(FILE *fd, TIFF *tif, int rotation, int center,
+                int *npages, double pixwidth, double pixheight,
+               double left_margin, double bottom_margin,
+                double pgwidth, double pgheight,
+               double pswidth, double psheight, double scale)
+  {
+  int i, j;
+  int ximages = 1, yimages = 1;
+  int pages = *npages;
+  double view_width = 0;
+  double view_height = 0;
+
+  if (get_viewport (pgwidth, pgheight, pswidth, psheight, &view_width, &view_height, rotation))
+    {
+    TIFFError ("get_viewport", "Unable to set image viewport");
+    return (-1);
+    }
+
+  if (get_subimage_count(pgwidth, pgheight, pswidth, psheight,
+                        &ximages, &yimages, rotation, scale) < 1)
+    {
+    TIFFError("get_subimage_count", "Invalid image count: %d columns, %d rows", ximages, yimages);
+    return (-1);
+    }
+
+  for (i = 0; i < yimages; i++)
+    {
+    for (j = 0; j < ximages; j++)
+       {
+       pages++;
+       *npages = pages;
+       fprintf(fd, "%%%%Page: %d %d\n", pages, pages);
+
+       /* Write out the PageSize info for non EPS files */
+       if (!generateEPSF && ( level2 || level3 ))
+         {
+         if (psPageSize(fd, rotation, pgwidth, pgheight,
+                        view_width, view_height, pswidth, psheight))
+           return (-1);
+        }
+       fprintf(fd, "gsave\n");
+       fprintf(fd, "100 dict begin\n");
+       if (exportMaskedImage(fd, view_width, view_height, pswidth, psheight,
+                            i, j, left_margin, bottom_margin,
+                            scale, center, rotation))
+        {
+        TIFFError("exportMaskedImage", "Invalid image parameters.");
+        return (-1);
+        }
+       PSpage(fd, tif, pixwidth, pixheight);
+       fprintf(fd, "end\n");
+       fprintf(fd, "grestore\n");
+       fprintf(fd, "showpage\n");
+       }
+    }
+
+  return (pages);
+  }
+
+/* Compute scale factor and write out file header */
+int psStart(FILE *fd, int npages, int auto_rotate, int *rotation, double *scale,
+            double ox, double oy, double pgwidth, double pgheight,
+           double reqwidth, double reqheight, double pswidth, double psheight,
+           double left_offset, double bottom_offset)
+  {
+  double maxsource = 0.0;    /* Used for auto rotations */
+  double maxtarget = 0.0;
+  double xscale = 1.0, yscale = 1.0;
+  double splitheight;
+  double splitwidth;
+  double view_width = 0.0, view_height = 0.0;
+  double page_width = 0.0, page_height = 0.0;
+
+  /* Splitheight and splitwidth are in inches */
+  splitheight = maxPageHeight * PS_UNIT_SIZE;
+  splitwidth  = maxPageWidth * PS_UNIT_SIZE;
+
+  page_width = pgwidth * PS_UNIT_SIZE;
+  page_height = pgheight * PS_UNIT_SIZE;
+
+  /* If user has specified a page width and height and requested the
+   * image to be auto-rotated to fit on that media, we match the
+   * longest dimension of the image to the longest dimension of the
+   * target media but we have to ignore auto rotate if user specified
+   * maxPageHeight since this makes life way too complicated. */
+  if (auto_rotate)
+    {
+    if ((splitheight != 0) || (splitwidth != 0))
+      {
+      TIFFError ("psStart", "Auto-rotate is incompatible with page splitting ");
+      return (1);
+      }
+
+    /* Find longest edges in image and output media */
+    maxsource = (pswidth >= psheight) ? pswidth : psheight;
+    maxtarget = (reqwidth >= reqheight) ? reqwidth : reqheight;
+
+    if (((maxsource == pswidth) && (maxtarget != reqwidth)) ||
+        ((maxsource == psheight) && (maxtarget != reqheight)))
+      {  /* optimal orientaion does not match input orientation */
+      *rotation = 90;
+      xscale = (reqwidth - left_offset)/psheight;
+      yscale = (reqheight - bottom_offset)/pswidth;
+      }
+    else /* optimal orientaion matches input orientation */
+      {
+      xscale = (reqwidth - left_offset)/pswidth;
+      yscale = (reqheight - bottom_offset)/psheight;
+      }
+    *scale = (xscale < yscale) ? xscale : yscale;
+
+    /* Do not scale image beyound original size */
+    if (*scale > 1.0)
+      *scale = 1.0;
+
+    /* Set the size of the displayed image to requested page size
+     * and optimal orientation.
+     */
+    if (!npages)
+      PSHead(fd, reqwidth, reqheight, ox, oy);
+
+    return (0);
+    }
+
+  /* N.B. If pgwidth or pgheight are set from maxPageHeight/Width,
+   * we have a problem with the tests below under splitheight.
+   */
+
+  switch (*rotation)  /* Auto rotate has NOT been specified */
+    {
+    case   0:
+    case 180: if ((splitheight != 0)  || (splitwidth != 0))
+                {  /* Viewport clipped to maxPageHeight or maxPageWidth */
+                if ((page_width != 0) || (page_height != 0)) /* Image scaled */
+                  {
+                 xscale = (reqwidth  - left_offset) / (page_width ? page_width : pswidth);
+                 yscale = (reqheight - bottom_offset) / (page_height ? page_height : psheight);
+                  *scale = (xscale < yscale) ? xscale : yscale;
+                  /*
+                  if (*scale > 1.0)
+                    *scale = 1.0;
+                   */
+                 }
+                else       /* Image clipped but not scaled */
+                 *scale = 1.0;
+
+                view_width = splitwidth ? splitwidth : *scale * pswidth;
+                view_height = splitheight ? splitheight: *scale * psheight;
+               }
+              else   /* Viewport not clipped to maxPageHeight or maxPageWidth */
+                {
+                if ((page_width != 0) || (page_height != 0))
+                  {   /* Image scaled  */
+                  xscale = (reqwidth - left_offset) / pswidth;
+                  yscale = (reqheight - bottom_offset) / psheight;
+
+                  view_width = reqwidth;
+                  view_height = reqheight;
+                 }
+                else
+                  {  /* Image not scaled  */
+                  xscale = (pswidth - left_offset)/pswidth;
+                  yscale = (psheight - bottom_offset)/psheight;
+
+                  view_width = pswidth;
+                  view_height = psheight;
+                 }
+               }
+             break;
+    case  90:
+    case 270: if ((splitheight != 0) || (splitwidth != 0))
+                {  /* Viewport clipped to maxPageHeight or maxPageWidth */
+                if ((page_width != 0) || (page_height != 0)) /* Image scaled */
+                  {
+                 xscale = (reqwidth - left_offset)/ psheight;
+                 yscale = (reqheight - bottom_offset)/ pswidth;
+                  *scale = (xscale < yscale) ? xscale : yscale;
+                  /*
+                  if (*scale > 1.0)
+                    *scale = 1.0;
+                 */
+                 }
+                else  /* Image clipped but not scaled */
+                 *scale = 1.0;
+                view_width = splitwidth ? splitwidth : *scale * psheight;
+                view_height = splitheight ? splitheight : *scale * pswidth;
+               }
+              else /* Viewport not clipped to maxPageHeight or maxPageWidth */
+                {
+                if ((page_width != 0) || (page_height != 0)) /* Image scaled */
+                  {
+                  xscale = (reqwidth - left_offset) / psheight;
+                  yscale = (reqheight - bottom_offset) / pswidth;
+
+                 view_width = reqwidth;
+                 view_height = reqheight;
+                 }
+                else
+                  {
+                  xscale = (pswidth  - left_offset)/ psheight;
+                 yscale = (psheight  - bottom_offset)/ pswidth;
+
+                 view_width = psheight;
+                 view_height = pswidth;
+                  }
+                }
+              break;
+    default:  TIFFError ("psPageSize", "Invalid rotation %d", *rotation);
+              return (1);
+    }
+
+  if (!npages)
+    PSHead(fd, (page_width ? page_width : view_width), (page_height ? page_height : view_height), ox, oy);
+
+  *scale = (xscale < yscale) ? xscale : yscale;
+  if (*scale > 1.0)
+    *scale = 1.0;
+
+  return (0);
+  }
+
+int get_viewport (double pgwidth, double pgheight, double pswidth, double psheight,
+                  double *view_width, double *view_height, int rotation)
+  {
+  /* Only one of maxPageHeight or maxPageWidth can be specified */
+  if (maxPageHeight != 0)   /* Clip the viewport to maxPageHeight on each page */
+    {
+    *view_height = maxPageHeight * PS_UNIT_SIZE;
+    /*
+     * if (res_unit == RESUNIT_CENTIMETER)
+     * *view_height /= 2.54F;
+     */
+    }
+  else
+    {
+    if (pgheight != 0) /* User has set PageHeight with -h flag */
+      {
+      *view_height = pgheight * PS_UNIT_SIZE; /* Postscript size for Page Height in inches */
+      /* if (res_unit == RESUNIT_CENTIMETER)
+       *  *view_height /= 2.54F;
+       */
+      }
+    else /* If no width or height are specified, use the original size from image */
+      switch (rotation)
+        {
+        default:
+        case   0:
+        case 180: *view_height = psheight;
+                 break;
+        case  90:
+        case 270: *view_height = pswidth;
+                 break;
+       }
+    }
+
+  if (maxPageWidth != 0)   /* Clip the viewport to maxPageWidth on each page */
+    {
+    *view_width = maxPageWidth * PS_UNIT_SIZE;
+    /* if (res_unit == RESUNIT_CENTIMETER)
+     *  *view_width /= 2.54F;
+     */
+    }
+  else
+    {
+    if (pgwidth != 0)  /* User has set PageWidth with -w flag */
+      {
+      *view_width = pgwidth * PS_UNIT_SIZE; /* Postscript size for Page Width in inches */
+      /* if (res_unit == RESUNIT_CENTIMETER)
+       * *view_width /= 2.54F;
+       */
+      }
+    else  /* If no width or height are specified, use the original size from image */
+      switch (rotation)
+        {
+        default:
+        case   0:
+        case 180: *view_width = pswidth;
+                 break;
+        case  90:
+        case 270: *view_width = psheight; /* (*view_height / psheight) * psheight; */
+                 break;
+       }
+    }
+
+  return (0);
+  }
+
+/* pgwidth and pgheight specify page width and height in inches from -h and -w flags
+ * lm and bm are the LeftMargin and BottomMargin in inches
+ * center causes the image to be centered on the page if the paper size is
+ * larger than the image size
+ * returns the sequence number of the page processed or -1 on error
+ */
+
+int TIFF2PS(FILE* fd, TIFF* tif, double pgwidth, double pgheight, double lm, double bm, int center)
+  {
+  uint32 pixwidth = 0, pixheight = 0;  /* Image width and height in pixels */
+  double ox = 0.0, oy = 0.0;  /* Offset from current Postscript origin */
+  double pswidth, psheight;   /* Original raw image width and height in points */
+  double view_width, view_height; /* Viewport width and height in points */
+  double scale = 1.0;
+  double left_offset = lm * PS_UNIT_SIZE;
+  double bottom_offset = bm * PS_UNIT_SIZE;
+  uint32 subfiletype;
+  uint16* sampleinfo;
+  static int npages = 0;
+
+  if (!TIFFGetField(tif, TIFFTAG_XPOSITION, &ox))
+     ox = 0;
+  if (!TIFFGetField(tif, TIFFTAG_YPOSITION, &oy))
+     oy = 0;
+
+  /* Consolidated all the tag information into one code segment, Richard Nolde */
+  do {
+     tf_numberstrips = TIFFNumberOfStrips(tif);
+     TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &tf_rowsperstrip);
+     TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &bitspersample);
+     TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &samplesperpixel);
+     TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfiguration);
+     TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression);
+     TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES, &extrasamples, &sampleinfo);
+     alpha = (extrasamples == 1 && sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
+     if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric))
+       {
+       switch (samplesperpixel - extrasamples)
+             {
+            case 1: if (isCCITTCompression(tif))
+                      photometric = PHOTOMETRIC_MINISWHITE;
+                    else
+                       photometric = PHOTOMETRIC_MINISBLACK;
+                    break;
+            case 3: photometric = PHOTOMETRIC_RGB;
+                    break;
+            case 4: photometric = PHOTOMETRIC_SEPARATED;
+                    break;
+            }
+       }
+
+     /* Read image tags for width and height in pixels pixwidth, pixheight,
+      * and convert to points pswidth, psheight
+      */
+     setupPageState(tif, &pixwidth, &pixheight, &pswidth, &psheight);
+     view_width = pswidth;
+     view_height = psheight;
+
+     if (get_viewport (pgwidth, pgheight, pswidth, psheight, &view_width, &view_height, rotation))
+       {
+       TIFFError("get_viewport", "Unable to set image viewport");
+       return (1);
+       }
+
+     /* Write the Postscript file header with Bounding Box and Page Size definitions */
+     if (psStart(fd, npages, auto_rotate, &rotation, &scale, ox, oy,
+                pgwidth, pgheight, view_width, view_height, pswidth, psheight,
+                 left_offset, bottom_offset))
+       return (-1);
+
+     if (checkImage(tif))  /* Aborts if unsupported image parameters */
+       {
+       tf_bytesperrow = TIFFScanlineSize(tif);
+
+       /* Set viewport clipping and scaling options */
+       if ((maxPageHeight) || (maxPageWidth)  || (pgwidth != 0) || (pgheight != 0))
+         {
+        if ((maxPageHeight) || (maxPageWidth)) /* used -H or -W  option */
+           {
+          if (psMaskImage(fd, tif, rotation, center, &npages, pixwidth, pixheight,
+                          left_offset, bottom_offset, pgwidth, pgheight,
+                           pswidth, psheight, scale) < 0)
+            return (-1);
+          }
+         else  /* N.B. Setting maxPageHeight no longer sets pgheight */
+           {
+           if (pgwidth != 0 || pgheight != 0)
+             {
+             /* User did not specify a maxium page height or width using -H or -W flag
+              * but did use -h or -w flag to scale to a specific size page.
+              */
+             npages++;
+             fprintf(fd, "%%%%Page: %d %d\n", npages, npages);
+
+             if (!generateEPSF && ( level2 || level3 ))
+               {
+              /* Write out the PageSize info for non EPS files */
+              if (psPageSize(fd, rotation, pgwidth, pgheight,
+                              view_width, view_height, pswidth, psheight))
+                return (-1);
+               }
+             fprintf(fd, "gsave\n");
+             fprintf(fd, "100 dict begin\n");
+             if (psScaleImage(fd, scale, rotation, center, view_width, view_height,
+                              pswidth, psheight, left_offset, bottom_offset))
+              return (-1);
+
+             PSpage(fd, tif, pixwidth, pixheight);
+             fprintf(fd, "end\n");
+             fprintf(fd, "grestore\n");
+             fprintf(fd, "showpage\n");
+            }
+          }
+        }
+       else  /* Simple rotation: user did not use -H, -W, -h or -w */
+         {
+         npages++;
+         fprintf(fd, "%%%%Page: %d %d\n", npages, npages);
+
+         if (!generateEPSF && ( level2 || level3 ))
+           {
+          /* Write out the PageSize info for non EPS files */
+          if (psPageSize(fd, rotation, pgwidth, pgheight,
+                          view_width, view_height, pswidth, psheight))
+           return (-1);
+         }
+         fprintf(fd, "gsave\n");
+         fprintf(fd, "100 dict begin\n");
+        if (psRotateImage(fd, rotation, pswidth, psheight, left_offset, bottom_offset))
+           return (-1);
+
+         PSpage(fd, tif, pixwidth, pixheight);
+         fprintf(fd, "end\n");
+         fprintf(fd, "grestore\n");
+         fprintf(fd, "showpage\n");
+         }
+       }
+  if (generateEPSF)
+    break;
+  TIFFGetFieldDefaulted(tif, TIFFTAG_SUBFILETYPE, &subfiletype);
+  } while (((subfiletype & FILETYPE_PAGE) || printAll) && TIFFReadDirectory(tif));
+
+return(npages);
+}
 
 static char DuplexPreamble[] = "\
 %%BeginFeature: *Duplex True\n\
@@ -716,40 +1631,48 @@ gsave newpath clippath pathbbox grestore\n\
 ";
 
 void
-PSHead(FILE *fd, TIFF *tif, uint32 w, uint32 h,
-       double pw, double ph, double ox, double oy)
+PSHead(FILE *fd, double pagewidth, double pageheight, double xoff, double yoff)
 {
        time_t t;
 
-       (void) tif; (void) w; (void) h;
        t = time(0);
        fprintf(fd, "%%!PS-Adobe-3.0%s\n", generateEPSF ? " EPSF-3.0" : "");
-       fprintf(fd, "%%%%Creator: tiff2ps\n");
-       fprintf(fd, "%%%%Title: %s\n", filename);
+       fprintf(fd, "%%%%Creator: %s\n", creator ? creator : "tiff2ps");
+        fprintf(fd, "%%%%Title: %s\n", title ? title : filename);
        fprintf(fd, "%%%%CreationDate: %s", ctime(&t));
        fprintf(fd, "%%%%DocumentData: Clean7Bit\n");
-       fprintf(fd, "%%%%Origin: %ld %ld\n", (long) ox, (long) oy);
-       /* NB: should use PageBoundingBox */
-       fprintf(fd, "%%%%BoundingBox: 0 0 %ld %ld\n",
-           (long) ceil(pw), (long) ceil(ph));
+       /* NB: should use PageBoundingBox for each page instead of BoundingBox *
+         * PageBoundingBox DSC added in PSPageSize function, R Nolde 09-01-2010
+         */
+       fprintf(fd, "%%%%Origin: %ld %ld\n", (long) xoff, (long) yoff);
+        fprintf(fd, "%%%%BoundingBox: 0 0 %ld %ld\n",
+              (long) ceil(pagewidth), (long) ceil(pageheight));
+
        fprintf(fd, "%%%%LanguageLevel: %d\n", (level3 ? 3 : (level2 ? 2 : 1)));
-       fprintf(fd, "%%%%Pages: (atend)\n");
+        if (generateEPSF == TRUE)
+         fprintf(fd, "%%%%Pages: 1 1\n");
+        else
+         fprintf(fd, "%%%%Pages: (atend)\n");
        fprintf(fd, "%%%%EndComments\n");
-       fprintf(fd, "%%%%BeginSetup\n");
-       if (PSduplex)
+        if (generateEPSF == FALSE)
+          {
+         fprintf(fd, "%%%%BeginSetup\n");
+         if (PSduplex)
                fprintf(fd, "%s", DuplexPreamble);
-       if (PStumble)
+         if (PStumble)
                fprintf(fd, "%s", TumblePreamble);
-       if (PSavoiddeadzone && (level2 || level3))
+         if (PSavoiddeadzone && (level2 || level3))
                fprintf(fd, "%s", AvoidDeadZonePreamble);
-       fprintf(fd, "%%%%EndSetup\n");
+         fprintf(fd, "%%%%EndSetup\n");
+         }
 }
 
 void
 PSTail(FILE *fd, int npages)
 {
        fprintf(fd, "%%%%Trailer\n");
-       fprintf(fd, "%%%%Pages: %d\n", npages);
+        if (generateEPSF == FALSE)
+         fprintf(fd, "%%%%Pages: %d\n", npages);
        fprintf(fd, "%%%%EOF\n");
 }
 
@@ -1173,6 +2096,26 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
        return(use_rawdata);
 }
 
+/* Flip the byte order of buffers with 16 bit samples */
+static void
+PS_FlipBytes(unsigned char* buf, tsize_t count)
+{
+       int i;
+       unsigned char temp;
+
+       if (count <= 0 || bitspersample <= 8) {
+               return;
+       }
+
+       count--;
+
+       for (i = 0; i < count; i += 2) {
+               temp = buf[i];
+               buf[i] = buf[i + 1];
+               buf[i + 1] = temp;
+       }
+}
+
 #define MAXLINE                36
 
 int
@@ -1180,12 +2123,13 @@ PS_Lvl2page(FILE* fd, TIFF* tif, uint32 w, uint32 h)
 {
        uint16 fillorder;
        int use_rawdata, tiled_image, breaklen = MAXLINE;
-       uint32 chunk_no, num_chunks, *bc;
+       uint32 chunk_no, num_chunks;
+        uint64 *bc;
        unsigned char *buf_data, *cp;
        tsize_t chunk_size, byte_count;
 
 #if defined( EXP_ASCII85ENCODER )
-       int                     ascii85_l;      /* Length, in bytes, of ascii85_p[] data */
+       tsize_t                 ascii85_l;      /* Length, in bytes, of ascii85_p[] data */
        uint8           *       ascii85_p = 0;  /* Holds ASCII85 encoded data */
 #endif
 
@@ -1220,8 +2164,8 @@ PS_Lvl2page(FILE* fd, TIFF* tif, uint32 w, uint32 h)
        }
        buf_data = (unsigned char *)_TIFFmalloc(chunk_size);
        if (!buf_data) {
-               TIFFError(filename, "Can't alloc %u bytes for %s.",
-                       chunk_size, tiled_image ? "tiles" : "strips");
+               TIFFError(filename, "Can't alloc %lu bytes for %s.",
+                       (unsigned long) chunk_size, tiled_image ? "tiles" : "strips");
                return(FALSE);
        }
 
@@ -1278,6 +2222,13 @@ PS_Lvl2page(FILE* fd, TIFF* tif, uint32 w, uint32 h)
                        if (ascii85)
                                Ascii85Put('\0', fd);
                }
+               /*
+                * for 16 bits, the two bytes must be most significant
+                * byte first
+                */
+               if (bitspersample == 16 && !TIFFIsBigEndian(tif)) {
+                       PS_FlipBytes(buf_data, byte_count);
+               }
                /*
                 * For images with alpha, matte against a white background;
                 * i.e. Cback * (1 - Aimage) where Cback = 1. We will fill the
@@ -1462,7 +2413,8 @@ void
 PSDataColorContig(FILE* fd, TIFF* tif, uint32 w, uint32 h, int nc)
 {
        uint32 row;
-       int breaklen = MAXLINE, cc, es = samplesperpixel - nc;
+       int breaklen = MAXLINE, es = samplesperpixel - nc;
+       tsize_t cc;
        unsigned char *tf_buf;
        unsigned char *cp, c;
 
@@ -1476,6 +2428,13 @@ PSDataColorContig(FILE* fd, TIFF* tif, uint32 w, uint32 h, int nc)
                if (TIFFReadScanline(tif, tf_buf, row, 0) < 0)
                        break;
                cp = tf_buf;
+               /*
+                * for 16 bits, the two bytes must be most significant
+                * byte first
+                */
+               if (bitspersample == 16 && !HOST_BIGENDIAN) {
+                       PS_FlipBytes(cp, tf_bytesperrow);
+               }
                if (alpha) {
                        int adjust;
                        cc = 0;
@@ -1517,7 +2476,8 @@ void
 PSDataColorSeparate(FILE* fd, TIFF* tif, uint32 w, uint32 h, int nc)
 {
        uint32 row;
-       int breaklen = MAXLINE, cc;
+       int breaklen = MAXLINE;
+       tsize_t cc;
        tsample_t s, maxs;
        unsigned char *tf_buf;
        unsigned char *cp, c;
@@ -1551,7 +2511,8 @@ PSDataPalette(FILE* fd, TIFF* tif, uint32 w, uint32 h)
 {
        uint16 *rmap, *gmap, *bmap;
        uint32 row;
-       int breaklen = MAXLINE, cc, nc;
+       int breaklen = MAXLINE, nc;
+       tsize_t cc;
        unsigned char *tf_buf;
        unsigned char *cp, c;
 
@@ -1628,18 +2589,20 @@ PSDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
        tstrip_t s;
 
 #if defined( EXP_ASCII85ENCODER )
-       int     ascii85_l;              /* Length, in bytes, of ascii85_p[] data */
+       tsize_t ascii85_l;              /* Length, in bytes, of ascii85_p[] data */
        uint8   *ascii85_p = 0;         /* Holds ASCII85 encoded data */
 #endif
 
        (void) w; (void) h;
        tf_buf = (unsigned char *) _TIFFmalloc(stripsize);
-        memset(tf_buf, 0, stripsize);
        if (tf_buf == NULL) {
                TIFFError(filename, "No space for scanline buffer");
                return;
        }
 
+       // FIXME
+       memset(tf_buf, 0, stripsize);
+
 #if defined( EXP_ASCII85ENCODER )
        if ( ascii85 ) {
            /*
@@ -1666,7 +2629,7 @@ PSDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
                Ascii85Init();
 
        for (s = 0; s < TIFFNumberOfStrips(tif); s++) {
-               int cc = TIFFReadEncodedStrip(tif, s, tf_buf, stripsize);
+               tmsize_t cc = TIFFReadEncodedStrip(tif, s, tf_buf, stripsize);
                if (cc < 0) {
                        TIFFError(filename, "Can't read strip");
                        break;
@@ -1677,6 +2640,13 @@ PSDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
                                *cp = ~*cp;
                        cp++;
                }
+               /*
+                * for 16 bits, the two bytes must be most significant
+                * byte first
+                */
+               if (bitspersample == 16 && !HOST_BIGENDIAN) {
+                       PS_FlipBytes(cp, cc);
+               }
                if (ascii85) {
 #if defined( EXP_ASCII85ENCODER )
                        if (alpha) {
@@ -1742,16 +2712,17 @@ PSDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
 void
 PSRawDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
 {
-       uint32 *bc;
+       uint64 *bc;
        uint32 bufsize;
-       int breaklen = MAXLINE, cc;
+       int breaklen = MAXLINE;
+       tmsize_t cc;
        uint16 fillorder;
        unsigned char *tf_buf;
        unsigned char *cp, c;
        tstrip_t s;
 
 #if defined( EXP_ASCII85ENCODER )
-       int                     ascii85_l;              /* Length, in bytes, of ascii85_p[] data */
+       tsize_t                 ascii85_l;              /* Length, in bytes, of ascii85_p[] data */
        uint8           *       ascii85_p = 0;          /* Holds ASCII85 encoded data */
 #endif
 
@@ -1763,11 +2734,11 @@ PSRawDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
         * Find largest strip:
         */
 
-       bufsize = bc[0];
+       bufsize = (uint32) bc[0];
 
        for ( s = 0; ++s < (tstrip_t)tf_numberstrips; ) {
                if ( bc[s] > bufsize )
-                       bufsize = bc[s];
+                       bufsize = (uint32) bc[s];
        }
 
        tf_buf = (unsigned char*) _TIFFmalloc(bufsize);
@@ -1799,7 +2770,7 @@ PSRawDataBW(FILE* fd, TIFF* tif, uint32 w, uint32 h)
 #endif
 
        for (s = 0; s < (tstrip_t) tf_numberstrips; s++) {
-               cc = TIFFReadRawStrip(tif, s, tf_buf, bc[s]);
+               cc = TIFFReadRawStrip(tif, s, tf_buf, (tmsize_t) bc[s]);
                if (cc < 0) {
                        TIFFError(filename, "Can't read strip");
                        break;
@@ -1949,11 +2920,11 @@ Ascii85Flush(FILE* fd)
 *
 *****************************************************************************/
 
-int Ascii85EncodeBlock( uint8 * ascii85_p, unsigned f_eod, const uint8 * raw_p, int raw_l )
+tsize_t Ascii85EncodeBlock( uint8 * ascii85_p, unsigned f_eod, const uint8 * raw_p, tsize_t raw_l )
 
 {
     char                        ascii85[5];     /* Encoded 5 tuple */
-    int                         ascii85_l;      /* Number of bytes written to ascii85_p[] */
+    tsize_t                     ascii85_l;      /* Number of bytes written to ascii85_p[] */
     int                         rc;             /* Return code */
     uint32                      val32;          /* Unencoded 4 tuple */
 
@@ -2010,7 +2981,7 @@ int Ascii85EncodeBlock( uint8 * ascii85_p, unsigned f_eod, const uint8 * raw_p,
     
         if ( raw_l > 0 )
         {
-            int             len;                /* Output this many bytes */
+            tsize_t         len;                /* Output this many bytes */
     
             len = raw_l + 1;
             val32 = *++raw_p << 24;             /* Prime the pump */
@@ -2059,24 +3030,27 @@ char* stuff[] = {
 " -2            generate PostScript Level 2",
 " -3            generate PostScript Level 3",
 " -8            disable use of ASCII85 encoding with PostScript Level 2/3",
-" -a            convert all directories in file (default is first)",
+" -a            convert all directories in file (default is first), Not EPS",
 " -b #          set the bottom margin to # inches",
 " -c            center image (-b and -l still add to this)",
-" -d #          convert directory number #",
+" -d #          set initial directory to # counting from zero",
 " -D            enable duplex printing (two pages per sheet of paper)",
 " -e            generate Encapsulated PostScript (EPS) (implies -z)",
-" -h #          assume printed page height is # inches (default 11)",
-" -w #          assume printed page width is # inches (default 8.5)",
+" -h #          set printed page height to # inches (no default)",
+" -w #          set printed page width to # inches (no default)",
 " -H #          split image if height is more than # inches",
+" -P L or P     set optional PageOrientation DSC comment to Landscape or Portrait",
+" -W #          split image if width is more than # inches",
 " -L #          overLap split images by # inches",
 " -i #          enable/disable (Nz/0) pixel interpolation (default: enable)",
 " -l #          set the left margin to # inches",
 " -m            use \"imagemask\" operator instead of \"image\"",
-" -o #          convert directory at file offset #",
+" -o #          convert directory at file offset # bytes",
 " -O file       write PostScript to file instead of standard output",
 " -p            generate regular PostScript",
-" -r            rotate by 180 degrees",
+" -r # or auto  rotate by 90, 180, 270 degrees or auto",
 " -s            generate PostScript for a single image",
+" -t name       set postscript document title. Otherwise the filename is used",
 " -T            print pages for top edge binding",
 " -x            override resolution units as centimeters",
 " -y            override resolution units as inches",
@@ -2097,4 +3071,3 @@ usage(int code)
        exit(code);
 }
 
-/* vim: set ts=8 sts=8 sw=8 noet: */
index 8413f9fb9cf63b75078907879d06872fc1589a9a..52d72b155070e93299fa64a5d28f0bf49cb22bae 100644 (file)
  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  * publicity relating to the software without the specific, prior written
  * permission of Sam Leffler and Silicon Graphics.
- * 
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
- * 
+ *
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ *
  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
+ * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
+ * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  * OF THIS SOFTWARE.
  */
 
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
+#include "tiffiop.h"
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
 #endif
 #define        roundup(x, y)   (howmany(x,y)*((uint32)(y)))
 
-uint16 compression = COMPRESSION_PACKBITS;
-uint32 rowsperstrip = (uint32) -1;
-int    process_by_block = 0; /* default is whole image at once */
-int     no_alpha = 0;
+uint16 compression = COMPRESSION_PACKBITS;
+uint32 rowsperstrip = (uint32) -1;
+int process_by_block = 0; /* default is whole image at once */
+int no_alpha = 0;
+int bigtiff_output = 0;
 
 
-static int tiffcvt(TIFF* in, TIFF* out);
-static void usage(int code);
+static int tiffcvt(TIFF* in, TIFF* out);
+static void usage(int code);
 
 int
 main(int argc, char* argv[])
 {
-    TIFF *in, *out;
-    int c;
-    extern int optind;
-    extern char *optarg;
-
-    while ((c = getopt(argc, argv, "c:r:t:bn")) != -1)
-        switch (c) {
-          case 'b':
-            process_by_block = 1;
-            break;
-            
-          case 'c':
-            if (streq(optarg, "none"))
-                compression = COMPRESSION_NONE;
-            else if (streq(optarg, "packbits"))
-                compression = COMPRESSION_PACKBITS;
-            else if (streq(optarg, "lzw"))
-                compression = COMPRESSION_LZW;
-            else if (streq(optarg, "jpeg"))
-                compression = COMPRESSION_JPEG;
-            else if (streq(optarg, "zip"))
-                compression = COMPRESSION_DEFLATE;
-            else
-                usage(-1);
-            break;
-
-          case 'r':
-            rowsperstrip = atoi(optarg);
-            break;
-
-          case 't':
-            rowsperstrip = atoi(optarg);
-            break;
-            
-          case 'n':
-            no_alpha = 1;
-            break;
-            
-          case '?':
-            usage(0);
-            /*NOTREACHED*/
-        }
-
-    if (argc - optind < 2)
-        usage(-1);
-
-    out = TIFFOpen(argv[argc-1], "w");
-    if (out == NULL)
-        return (-2);
-
-    for (; optind < argc-1; optind++) {
-        in = TIFFOpen(argv[optind], "r");
-        if (in != NULL) {
-            do {
-                if (!tiffcvt(in, out) ||
-                    !TIFFWriteDirectory(out)) {
-                    (void) TIFFClose(out);
-                    return (1);
-                }
-            } while (TIFFReadDirectory(in));
-            (void) TIFFClose(in);
-        }
-    }
-    (void) TIFFClose(out);
-    return (0);
+       TIFF *in, *out;
+       int c;
+       extern int optind;
+       extern char *optarg;
+
+       while ((c = getopt(argc, argv, "c:r:t:bn8")) != -1)
+               switch (c) {
+                       case 'b':
+                               process_by_block = 1;
+                               break;
+
+                       case 'c':
+                               if (streq(optarg, "none"))
+                                       compression = COMPRESSION_NONE;
+                               else if (streq(optarg, "packbits"))
+                                       compression = COMPRESSION_PACKBITS;
+                               else if (streq(optarg, "lzw"))
+                                       compression = COMPRESSION_LZW;
+                               else if (streq(optarg, "jpeg"))
+                                       compression = COMPRESSION_JPEG;
+                               else if (streq(optarg, "zip"))
+                                       compression = COMPRESSION_DEFLATE;
+                               else
+                                       usage(-1);
+                               break;
+
+                       case 'r':
+                               rowsperstrip = atoi(optarg);
+                               break;
+
+                       case 't':
+                               rowsperstrip = atoi(optarg);
+                               break;
+
+                       case 'n':
+                               no_alpha = 1;
+                               break;
+
+                       case '8':
+                               bigtiff_output = 1;
+                               break;
+
+                       case '?':
+                               usage(0);
+                               /*NOTREACHED*/
+               }
+
+       if (argc - optind < 2)
+               usage(-1);
+
+       out = TIFFOpen(argv[argc-1], bigtiff_output?"w8":"w");
+       if (out == NULL)
+               return (-2);
+
+       for (; optind < argc-1; optind++) {
+               in = TIFFOpen(argv[optind], "r");
+               if (in != NULL) {
+                       do {
+                               if (!tiffcvt(in, out) ||
+                                   !TIFFWriteDirectory(out)) {
+                                       (void) TIFFClose(out);
+                                       (void) TIFFClose(in);
+                                       return (1);
+                               }
+                       } while (TIFFReadDirectory(in));
+                       (void) TIFFClose(in);
+               }
+       }
+       (void) TIFFClose(out);
+       return (0);
 }
 
 static int
@@ -181,6 +192,15 @@ cvt_by_tile( TIFF *in, TIFF *out )
                 break;
             }
 
+
+           /*
+            * XXX: raster array has 4-byte unsigned integer type, that is why
+            * we should rearrange it here.
+            */
+#if HOST_BIGENDIAN
+           TIFFSwabArrayOfLong(raster, tile_width * tile_height);
+#endif
+
             /*
              * For some reason the TIFFReadRGBATile() function chooses the
              * lower left corner as the origin.  Vertically mirror scanlines.
@@ -270,6 +290,14 @@ cvt_by_strip( TIFF *in, TIFF *out )
             break;
         }
 
+       /*
+        * XXX: raster array has 4-byte unsigned integer type, that is why
+        * we should rearrange it here.
+        */
+#if HOST_BIGENDIAN
+       TIFFSwabArrayOfLong(raster, width * rowsperstrip);
+#endif
+
         /*
          * Figure out the number of scanlines actually in this strip.
          */
@@ -328,16 +356,27 @@ cvt_whole_image( TIFF *in, TIFF *out )
     uint32* raster;                    /* retrieve RGBA image */
     uint32  width, height;             /* image width & height */
     uint32  row;
+    size_t pixel_count;
         
     TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &width);
     TIFFGetField(in, TIFFTAG_IMAGELENGTH, &height);
+    pixel_count = width * height;
+
+    /* XXX: Check the integer overflow. */
+    if (!width || !height || pixel_count / width != height) {
+        TIFFError(TIFFFileName(in),
+                 "Malformed input file; can't allocate buffer for raster of %lux%lu size",
+                 (unsigned long)width, (unsigned long)height);
+        return 0;
+    }
 
     rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
     TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
 
-    raster = (uint32*)_TIFFmalloc(width * height * sizeof (uint32));
+    raster = (uint32*)_TIFFCheckMalloc(in, pixel_count, sizeof(uint32), "raster buffer");
     if (raster == 0) {
-        TIFFError(TIFFFileName(in), "No space for raster buffer");
+        TIFFError(TIFFFileName(in), "Failed to allocate buffer (%lu elements of %lu each)",
+                 (unsigned long)pixel_count, (unsigned long)sizeof(uint32));
         return (0);
     }
 
@@ -349,34 +388,42 @@ cvt_whole_image( TIFF *in, TIFF *out )
     }
 
     /*
-    ** Do we want to strip away alpha components?
-    */
-    if( no_alpha )
+     * XXX: raster array has 4-byte unsigned integer type, that is why
+     * we should rearrange it here.
+     */
+#if HOST_BIGENDIAN
+    TIFFSwabArrayOfLong(raster, width * height);
+#endif
+
+    /*
+     * Do we want to strip away alpha components?
+     */
+    if (no_alpha)
     {
-        int    pixel_count = width * height;
+        size_t count = pixel_count;
         unsigned char *src, *dst;
 
-        src = (unsigned char *) raster;
-        dst = (unsigned char *) raster;
-        while( pixel_count > 0 )
+       src = dst = (unsigned char *) raster;
+        while (count > 0)
         {
-            *(dst++) = *(src++);
-            *(dst++) = *(src++);
-            *(dst++) = *(src++);
-            src++;
-            pixel_count--;
+           *(dst++) = *(src++);
+           *(dst++) = *(src++);
+           *(dst++) = *(src++);
+           src++;
+           count--;
         }
     }
 
-    /* Write out the result in strips */
-
-    for( row = 0; row < height; row += rowsperstrip )
+    /*
+     * Write out the result in strips
+     */
+    for (row = 0; row < height; row += rowsperstrip)
     {
         unsigned char * raster_strip;
         int    rows_to_write;
         int    bytes_per_pixel;
 
-        if( no_alpha )
+        if (no_alpha)
         {
             raster_strip = ((unsigned char *) raster) + 3 * row * width;
             bytes_per_pixel = 3;
@@ -456,7 +503,7 @@ tiffcvt(TIFF* in, TIFF* out)
 }
 
 static char* stuff[] = {
-    "usage: tiff2rgba [-c comp] [-r rows] [-b] input... output",
+    "usage: tiff2rgba [-c comp] [-r rows] [-b] [-n] [-8] input... output",
     "where comp is one of the following compression algorithms:",
     " jpeg\t\tJPEG encoding",
     " zip\t\tLempel-Ziv & Welch encoding",
@@ -467,6 +514,7 @@ static char* stuff[] = {
     " -r\trows/strip",
     " -b (progress by block rather than as a whole image)",
     " -n don't emit alpha component.",
+    " -8 write BigTIFF file instead of ClassicTIFF",
     NULL
 };
 
@@ -484,3 +532,10 @@ usage(int code)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 3f13ca023f44fa91fdd75abece8a1dc531b2c917..508a461a8d9ca6c59785efff11abfa53e7cf8e03 100644 (file)
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <math.h>
 
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #ifndef HAVE_GETOPT
@@ -51,7 +56,7 @@ static        uint32 imagelength;
 static void usage(void);
 static int tiffcmp(TIFF*, TIFF*);
 static int cmptags(TIFF*, TIFF*);
-static int ContigCompare(int, uint32, unsigned char*, unsigned char*, int);
+static int ContigCompare(int, uint32, unsigned char*, unsigned char*, tsize_t);
 static int SeparateCompare(int, int, uint32, unsigned char*, unsigned char*);
 static void PrintIntDiff(uint32, int, uint32, uint32, uint32);
 static void PrintFloatDiff(uint32, int, uint32, double, double);
@@ -308,7 +313,7 @@ cmptags(TIFF* tif1, TIFF* tif2)
 
 static int
 ContigCompare(int sample, uint32 row,
-             unsigned char* p1, unsigned char* p2, int size)
+             unsigned char* p1, unsigned char* p2, tsize_t size)
 {
     uint32 pix;
     int ppb = 8 / bitspersample;
@@ -383,7 +388,7 @@ ContigCompare(int sample, uint32 row,
                        int     s;
 
                        for(s = 0; s < samples_to_test; s++) {
-                               if (*pix1 != *pix2) {
+                               if (fabs(*pix1 - *pix2) < 0.000000000001) {
                                        PrintFloatDiff(row, sample, pix,
                                                       *pix1, *pix2);
                                }
@@ -630,3 +635,10 @@ leof(const char* name, uint32 row, int s)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 356a0d3d1b5c54a866780f04624454a05a872811..0d0e6b3ab14d242d739acf279490494046ebd115 100644 (file)
 
 #include "tiffio.h"
 
+#ifndef HAVE_GETOPT
+extern int getopt(int, char**, char*);
+#endif
+
 #if defined(VMS)
-#define unlink delete
+# define unlink delete
 #endif
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
 #define        TRUE    1
 #define        FALSE   0
 
-static  int outtiled = -1;
-static  uint32 tilewidth;
-static  uint32 tilelength;
-
-static uint16 config;
-static uint16 compression;
-static uint16 predictor;
-static uint16 fillorder;
-static uint16 orientation;
-static uint32 rowsperstrip;
-static uint32 g3opts;
-static int ignore = FALSE;             /* if true, ignore read errors */
-static uint32 defg3opts = (uint32) -1;
-static int quality = 75;               /* JPEG quality */
-static int jpegcolormode = JPEGCOLORMODE_RGB;
-static uint16 defcompression = (uint16) -1;
-static uint16 defpredictor = (uint16) -1;
-
-static int tiffcp(TIFF*, TIFF*);
-static int processCompressOptions(char*);
-static void usage(void);
+static int outtiled = -1;
+static uint32 tilewidth;
+static uint32 tilelength;
+
+static uint16 config;
+static uint16 compression;
+static uint16 predictor;
+static int preset;
+static uint16 fillorder;
+static uint16 orientation;
+static uint32 rowsperstrip;
+static uint32 g3opts;
+static int ignore = FALSE;             /* if true, ignore read errors */
+static uint32 defg3opts = (uint32) -1;
+static int quality = 75;               /* JPEG quality */
+static int jpegcolormode = JPEGCOLORMODE_RGB;
+static uint16 defcompression = (uint16) -1;
+static uint16 defpredictor = (uint16) -1;
+static int defpreset =  -1;
+
+static int tiffcp(TIFF*, TIFF*);
+static int processCompressOptions(char*);
+static void usage(void);
 
 static char comma = ',';  /* (default) comma separator character */
 static TIFF* bias = NULL;
 static int pageNum = 0;
+static int pageInSeq = 0;
 
 static int nextSrcImage (TIFF *tif, char **imageSpec)
 /*
@@ -96,27 +103,27 @@ static int nextSrcImage (TIFF *tif, char **imageSpec)
   *imageSpec=NULL if subsequent images should be processed in sequence
 */
 {
-  if (**imageSpec == comma) {  /* if not @comma, we've done all images */
-    char *start = *imageSpec + 1;
-    tdir_t nextImage = (tdir_t)strtol(start, imageSpec, 0);
-    if (start == *imageSpec) nextImage = TIFFCurrentDirectory (tif);
-    if (**imageSpec)
-    {
-      if (**imageSpec == comma) {  
-        /* a trailing comma denotes remaining images in sequence */
-        if ((*imageSpec)[1] == '\0') *imageSpec = NULL;
-      }else{
-        fprintf (stderr, 
-          "Expected a %c separated image # list after %s\n",
-          comma, TIFFFileName (tif));
-        exit (-4);   /* syntax error */
-      }
-    }
-    if (TIFFSetDirectory (tif, nextImage)) return 1;  
-    fprintf (stderr, "%s%c%d not found!\n", 
-             TIFFFileName(tif), comma, (int) nextImage); 
-  }
-  return 0;
+       if (**imageSpec == comma) {  /* if not @comma, we've done all images */
+               char *start = *imageSpec + 1;
+               tdir_t nextImage = (tdir_t)strtol(start, imageSpec, 0);
+               if (start == *imageSpec) nextImage = TIFFCurrentDirectory (tif);
+               if (**imageSpec)
+               {
+                       if (**imageSpec == comma) {
+                               /* a trailing comma denotes remaining images in sequence */
+                               if ((*imageSpec)[1] == '\0') *imageSpec = NULL;
+                       }else{
+                               fprintf (stderr,
+                                   "Expected a %c separated image # list after %s\n",
+                                   comma, TIFFFileName (tif));
+                               exit (-4);   /* syntax error */
+                       }
+               }
+               if (TIFFSetDirectory (tif, nextImage)) return 1;
+               fprintf (stderr, "%s%c%d not found!\n",
+                   TIFFFileName(tif), comma, (int) nextImage);
+       }
+       return 0;
 }
 
   
@@ -127,27 +134,26 @@ static TIFF* openSrcImage (char **imageSpec)
   no images specified, or a pointer to the next image number text
 */
 {
-    TIFF *tif;
-    char *fn = *imageSpec;
-    *imageSpec = strchr (fn, comma);
-    if (*imageSpec) {  /* there is at least one image number specifier */
-        **imageSpec = '\0'; 
-        tif = TIFFOpen (fn, "r");
-        /* but, ignore any single trailing comma */
-        if (!(*imageSpec)[1]) {*imageSpec = NULL; return tif;}
-        if (tif) { 
-            **imageSpec = comma;  /* replace the comma */
-            if (!nextSrcImage(tif, imageSpec)) {
-              TIFFClose (tif);
-              tif = NULL;
-            }
-        }
-    }else
-        tif = TIFFOpen (fn, "r");
-    return tif;
+       TIFF *tif;
+       char *fn = *imageSpec;
+       *imageSpec = strchr (fn, comma);
+       if (*imageSpec) {  /* there is at least one image number specifier */
+               **imageSpec = '\0';
+               tif = TIFFOpen (fn, "r");
+               /* but, ignore any single trailing comma */
+               if (!(*imageSpec)[1]) {*imageSpec = NULL; return tif;}
+               if (tif) {
+                       **imageSpec = comma;  /* replace the comma */
+                       if (!nextSrcImage(tif, imageSpec)) {
+                               TIFFClose (tif);
+                               tif = NULL;
+                       }
+               }
+       }else
+               tif = TIFFOpen (fn, "r");
+       return tif;
 }
 
-
 int
 main(int argc, char* argv[])
 {
@@ -156,7 +162,7 @@ main(int argc, char* argv[])
        uint32 deftilewidth = (uint32) -1;
        uint32 deftilelength = (uint32) -1;
        uint32 defrowsperstrip = (uint32) 0;
-       uint32 diroff = 0;
+       uint64 diroff = 0;
        TIFF* in;
        TIFF* out;
        char mode[10];
@@ -167,41 +173,41 @@ main(int argc, char* argv[])
 
        *mp++ = 'w';
        *mp = '\0';
-       while ((c = getopt(argc, argv, ",:b:c:f:l:o:z:p:r:w:aistBLMC")) != -1)
+       while ((c = getopt(argc, argv, ",:b:c:f:l:o:z:p:r:w:aistBLMC8x")) != -1)
                switch (c) {
-                case ',':
-                        if (optarg[0] != '=') usage();
-                        comma = optarg[1];
-                        break;
-                case 'b':   /* this file is bias image subtracted from others */
-                        if (bias) {
-                          fputs ("Only 1 bias image may be specified\n", stderr);
-                          exit (-2);
-                        }
-                        {
-                          uint16    samples = (uint16) -1;
-                          char **biasFn = &optarg;
-                          bias = openSrcImage (biasFn);
-                          if (!bias) exit (-5);
-                          if (TIFFIsTiled (bias)) {
-                     fputs ("Bias image must be organized in strips\n", stderr);
-                            exit (-7);
-                          }
-                         TIFFGetField(bias, TIFFTAG_SAMPLESPERPIXEL, &samples);
-                          if (samples != 1) {
-                     fputs ("Bias image must be monochrome\n", stderr);
-                            exit (-7);
-                          }
-                        }
-                        break;
-               case 'a':               /* append to output */
+               case ',':
+                       if (optarg[0] != '=') usage();
+                       comma = optarg[1];
+                       break;
+               case 'b':   /* this file is bias image subtracted from others */
+                       if (bias) {
+                               fputs ("Only 1 bias image may be specified\n", stderr);
+                               exit (-2);
+                       }
+                       {
+                               uint16 samples = (uint16) -1;
+                               char **biasFn = &optarg;
+                               bias = openSrcImage (biasFn);
+                               if (!bias) exit (-5);
+                               if (TIFFIsTiled (bias)) {
+                                       fputs ("Bias image must be organized in strips\n", stderr);
+                                       exit (-7);
+                               }
+                               TIFFGetField(bias, TIFFTAG_SAMPLESPERPIXEL, &samples);
+                               if (samples != 1) {
+                                       fputs ("Bias image must be monochrome\n", stderr);
+                                       exit (-7);
+                               }
+                       }
+                       break;
+               case 'a':   /* append to output */
                        mode[0] = 'a';
                        break;
-               case 'c':               /* compression scheme */
+               case 'c':   /* compression scheme */
                        if (!processCompressOptions(optarg))
                                usage();
                        break;
-               case 'f':               /* fill order */
+               case 'f':   /* fill order */
                        if (streq(optarg, "lsb2msb"))
                                deffillorder = FILLORDER_LSB2MSB;
                        else if (streq(optarg, "msb2lsb"))
@@ -209,17 +215,17 @@ main(int argc, char* argv[])
                        else
                                usage();
                        break;
-               case 'i':               /* ignore errors */
+               case 'i':   /* ignore errors */
                        ignore = TRUE;
                        break;
-               case 'l':               /* tile length */
+               case 'l':   /* tile length */
                        outtiled = TRUE;
                        deftilelength = atoi(optarg);
                        break;
-               case 'o':               /* initial directory offset */
+               case 'o':   /* initial directory offset */
                        diroff = strtoul(optarg, NULL, 0);
                        break;
-               case 'p':               /* planar configuration */
+               case 'p':   /* planar configuration */
                        if (streq(optarg, "separate"))
                                defconfig = PLANARCONFIG_SEPARATE;
                        else if (streq(optarg, "contig"))
@@ -227,16 +233,16 @@ main(int argc, char* argv[])
                        else
                                usage();
                        break;
-               case 'r':               /* rows/strip */
+               case 'r':   /* rows/strip */
                        defrowsperstrip = atol(optarg);
                        break;
-               case 's':               /* generate stripped output */
+               case 's':   /* generate stripped output */
                        outtiled = FALSE;
                        break;
-               case 't':               /* generate tiled output */
+               case 't':   /* generate tiled output */
                        outtiled = TRUE;
                        break;
-               case 'w':               /* tile width */
+               case 'w':   /* tile width */
                        outtiled = TRUE;
                        deftilewidth = atoi(optarg);
                        break;
@@ -252,6 +258,12 @@ main(int argc, char* argv[])
                case 'C':
                        *mp++ = 'c'; *mp = '\0';
                        break;
+               case '8':
+                       *mp++ = '8'; *mp = '\0';
+                       break;
+               case 'x':
+                       pageInSeq = 1;
+                       break;
                case '?':
                        usage();
                        /*NOTREACHED*/
@@ -262,43 +274,63 @@ main(int argc, char* argv[])
        if (out == NULL)
                return (-2);
        if ((argc - optind) == 2)
-         pageNum = -1;
+               pageNum = -1;
        for (; optind < argc-1 ; optind++) {
-                char *imageCursor = argv[optind];
+               char *imageCursor = argv[optind];
                in = openSrcImage (&imageCursor);
-               if (in == NULL)
+               if (in == NULL) {
+                       (void) TIFFClose(out);
                        return (-3);
+               }
                if (diroff != 0 && !TIFFSetSubDirectory(in, diroff)) {
                        TIFFError(TIFFFileName(in),
-                           "Error, setting subdirectory at %#x", diroff);
+                           "Error, setting subdirectory at " TIFF_UINT64_FORMAT, diroff);
+                       (void) TIFFClose(in);
                        (void) TIFFClose(out);
                        return (1);
                }
-                for (;;) {
-                   config = defconfig;
-                   compression = defcompression;
-                   predictor = defpredictor;
-                   fillorder = deffillorder;
-                   rowsperstrip = defrowsperstrip;
-                   tilewidth = deftilewidth;
-                   tilelength = deftilelength;
-                   g3opts = defg3opts;
-                   if (!tiffcp(in, out) || !TIFFWriteDirectory(out)) {
-                        TIFFClose(out);
-                        return (1);
-                   }
-                   if (imageCursor) { /* seek next image directory */
-                        if (!nextSrcImage(in, &imageCursor)) break;
-                   }else
-                        if (!TIFFReadDirectory(in)) break;
+               for (;;) {
+                       config = defconfig;
+                       compression = defcompression;
+                       predictor = defpredictor;
+                        preset = defpreset;
+                       fillorder = deffillorder;
+                       rowsperstrip = defrowsperstrip;
+                       tilewidth = deftilewidth;
+                       tilelength = deftilelength;
+                       g3opts = defg3opts;
+                       if (!tiffcp(in, out) || !TIFFWriteDirectory(out)) {
+                               (void) TIFFClose(in);
+                               (void) TIFFClose(out);
+                               return (1);
+                       }
+                       if (imageCursor) { /* seek next image directory */
+                               if (!nextSrcImage(in, &imageCursor)) break;
+                       }else
+                               if (!TIFFReadDirectory(in)) break;
                }
-               TIFFClose(in);
+               (void) TIFFClose(in);
        }
 
-        TIFFClose(out);
-        return (0);
+       (void) TIFFClose(out);
+       return (0);
 }
 
+static void
+processZIPOptions(char* cp)
+{
+       if ( (cp = strchr(cp, ':')) ) {
+               do {
+                       cp++;
+                       if (isdigit((int)*cp))
+                               defpredictor = atoi(cp);
+                       else if (*cp == 'p')
+                               defpreset = atoi(++cp);
+                       else
+                               usage();
+               } while( (cp = strchr(cp, ':')) );
+       }
+}
 
 static void
 processG3Options(char* cp)
@@ -330,18 +362,18 @@ processCompressOptions(char* opt)
        } else if (strneq(opt, "jpeg", 4)) {
                char* cp = strchr(opt, ':');
 
-                defcompression = COMPRESSION_JPEG;
-                while( cp )
-                {
-                    if (isdigit((int)cp[1]))
-                       quality = atoi(cp+1);
-                    else if (cp[1] == 'r' )
-                       jpegcolormode = JPEGCOLORMODE_RAW;
-                    else
-                        usage();
-
-                    cp = strchr(cp+1,':');
-                }
+               defcompression = COMPRESSION_JPEG;
+               while( cp )
+               {
+                       if (isdigit((int)cp[1]))
+                               quality = atoi(cp+1);
+                       else if (cp[1] == 'r' )
+                               jpegcolormode = JPEGCOLORMODE_RAW;
+                       else
+                               usage();
+
+                       cp = strchr(cp+1,':');
+               }
        } else if (strneq(opt, "g3", 2)) {
                processG3Options(opt);
                defcompression = COMPRESSION_CCITTFAX3;
@@ -353,10 +385,15 @@ processCompressOptions(char* opt)
                        defpredictor = atoi(cp+1);
                defcompression = COMPRESSION_LZW;
        } else if (strneq(opt, "zip", 3)) {
-               char* cp = strchr(opt, ':');
-               if (cp)
-                       defpredictor = atoi(cp+1);
+               processZIPOptions(opt);
                defcompression = COMPRESSION_ADOBE_DEFLATE;
+       } else if (strneq(opt, "lzma", 4)) {
+               processZIPOptions(opt);
+               defcompression = COMPRESSION_LZMA;
+       } else if (strneq(opt, "jbig", 4)) {
+               defcompression = COMPRESSION_JBIG;
+       } else if (strneq(opt, "sgilog", 6)) {
+               defcompression = COMPRESSION_SGILOG;
        } else
                return (0);
        return (1);
@@ -365,45 +402,53 @@ processCompressOptions(char* opt)
 char* stuff[] = {
 "usage: tiffcp [options] input... output",
 "where options are:",
-" -a           append to output instead of overwriting",
-" -o offset    set initial directory offset",
-" -p contig    pack samples contiguously (e.g. RGBRGB...)",
-" -p separate  store samples separately (e.g. RRR...GGG...BBB...)",
-" -s           write output in strips",
-" -t           write output in tiles",
-" -i           ignore read errors",
-" -b file[,#]  bias (dark) monochrome image to be subtracted from all others",
-" -,=%         use % rather than , to separate image #'s (per Note below)",           
+" -a              append to output instead of overwriting",
+" -o offset       set initial directory offset",
+" -p contig       pack samples contiguously (e.g. RGBRGB...)",
+" -p separate     store samples separately (e.g. RRR...GGG...BBB...)",
+" -s              write output in strips",
+" -t              write output in tiles",
+" -8              write BigTIFF instead of default ClassicTIFF",
+" -i              ignore read errors",
+" -b file[,#]     bias (dark) monochrome image to be subtracted from all others",
+" -,=%            use % rather than , to separate image #'s (per Note below)",
 "",
-" -r #         make each strip have no more than # rows",
-" -w #         set output tile width (pixels)",
-" -l #         set output tile length (pixels)",
+" -r #            make each strip have no more than # rows",
+" -w #            set output tile width (pixels)",
+" -l #            set output tile length (pixels)",
 "",
-" -f lsb2msb   force lsb-to-msb FillOrder for output",
-" -f msb2lsb   force msb-to-lsb FillOrder for output",
+" -f lsb2msb      force lsb-to-msb FillOrder for output",
+" -f msb2lsb      force msb-to-lsb FillOrder for output",
 "",
-" -c lzw[:opts]        compress output with Lempel-Ziv & Welch encoding",
-" -c zip[:opts]        compress output with deflate encoding",
-" -c jpeg[:opts]       compress output with JPEG encoding",
-" -c packbits  compress output with packbits encoding",
-" -c g3[:opts] compress output with CCITT Group 3 encoding",
-" -c g4                compress output with CCITT Group 4 encoding",
-" -c none      use no compression algorithm on output",
+" -c lzw[:opts]   compress output with Lempel-Ziv & Welch encoding",
+" -c zip[:opts]   compress output with deflate encoding",
+" -c lzma[:opts]  compress output with LZMA2 encoding",
+" -c jpeg[:opts]  compress output with JPEG encoding",
+" -c jbig         compress output with ISO JBIG encoding",
+" -c packbits     compress output with packbits encoding",
+" -c g3[:opts]    compress output with CCITT Group 3 encoding",
+" -c g4           compress output with CCITT Group 4 encoding",
+" -c sgilog       compress output with SGILOG encoding",
+" -c none         use no compression algorithm on output",
+" -x              force the merged tiff pages in sequence",
 "",
 "Group 3 options:",
-" 1d           use default CCITT Group 3 1D-encoding",
-" 2d           use optional CCITT Group 3 2D-encoding",
-" fill         byte-align EOL codes",
+" 1d              use default CCITT Group 3 1D-encoding",
+" 2d              use optional CCITT Group 3 2D-encoding",
+" fill            byte-align EOL codes",
 "For example, -c g3:2d:fill to get G3-2D-encoded data with byte-aligned EOLs",
 "",
 "JPEG options:",
-" #            set compression quality level (0-100, default 75)",
-" r            output color image as RGB rather than YCbCr",
+" #               set compression quality level (0-100, default 75)",
+" r               output color image as RGB rather than YCbCr",
 "For example, -c jpeg:r:50 to get JPEG-encoded RGB data with 50% comp. quality",
 "",
-"LZW and deflate options:",
-" #            set predictor value",
-"For example, -c lzw:2 to get LZW-encoded data with horizontal differencing",
+"LZW, Deflate (ZIP) and LZMA2 options:",
+" #               set predictor value",
+" p#              set compression level (preset)",
+"For example, -c lzw:2 to get LZW-encoded data with horizontal differencing,",
+"-c zip:3:p9 for Deflate encoding with maximum compression level and floating",
+"point predictor.",
 "",
 "Note that input filenames may be of the form filename,x,y,z",
 "where x, y, and z specify image numbers in the filename to copy.",
@@ -419,7 +464,7 @@ usage(void)
        int i;
 
        setbuf(stderr, buf);
-        fprintf(stderr, "%s\n\n", TIFFGetVersion());
+       fprintf(stderr, "%s\n\n", TIFFGetVersion());
        for (i = 0; stuff[i] != NULL; i++)
                fprintf(stderr, "%s\n", stuff[i]);
        exit(-1);
@@ -482,16 +527,16 @@ cpTag(TIFF* in, TIFF* out, uint16 tag, uint16 count, TIFFDataType type)
                        CopyField(tag, doubleav);
                }
                break;
-          default:
-                TIFFError(TIFFFileName(in),
-                          "Data type %d is not supported, tag %d skipped.",
-                          tag, type);
+       default:
+               TIFFError(TIFFFileName(in),
+                   "Data type %d is not supported, tag %d skipped.",
+                   tag, type);
        }
 }
 
 static struct cpTag {
-       uint16  tag;
-       uint16  count;
+       uint16 tag;
+       uint16 count;
        TIFFDataType type;
 } tags[] = {
        { TIFFTAG_SUBFILETYPE,          1, TIFF_LONG },
@@ -536,10 +581,13 @@ typedef int (*copyFunc)
     (TIFF* in, TIFF* out, uint32 l, uint32 w, uint16 samplesperpixel);
 static copyFunc pickCopyFunc(TIFF*, TIFF*, uint16, uint16);
 
+/* PODD */
+
 static int
 tiffcp(TIFF* in, TIFF* out)
 {
        uint16 bitspersample, samplesperpixel;
+       uint16 input_compression, input_photometric;
        copyFunc cf;
        uint32 width, length;
        struct cpTag* p;
@@ -552,31 +600,35 @@ tiffcp(TIFF* in, TIFF* out)
                TIFFSetField(out, TIFFTAG_COMPRESSION, compression);
        else
                CopyField(TIFFTAG_COMPRESSION, compression);
+       TIFFGetFieldDefaulted(in, TIFFTAG_COMPRESSION, &input_compression);
+       TIFFGetFieldDefaulted(in, TIFFTAG_PHOTOMETRIC, &input_photometric);
+       if (input_compression == COMPRESSION_JPEG) {
+               /* Force conversion to RGB */
+               TIFFSetField(in, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+       } else if (input_photometric == PHOTOMETRIC_YCBCR) {
+               /* Otherwise, can't handle subsampled input */
+               uint16 subsamplinghor,subsamplingver;
+
+               TIFFGetFieldDefaulted(in, TIFFTAG_YCBCRSUBSAMPLING,
+                                     &subsamplinghor, &subsamplingver);
+               if (subsamplinghor!=1 || subsamplingver!=1) {
+                       fprintf(stderr, "tiffcp: %s: Can't copy/convert subsampled image.\n",
+                               TIFFFileName(in));
+                       return FALSE;
+               }
+       }
        if (compression == COMPRESSION_JPEG) {
-           uint16 input_compression, input_photometric;
-
-            if (TIFFGetField(in, TIFFTAG_COMPRESSION, &input_compression)
-                 && input_compression == COMPRESSION_JPEG) {
-                TIFFSetField(in, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
-            }
-           if (TIFFGetField(in, TIFFTAG_PHOTOMETRIC, &input_photometric)) {
-               if(input_photometric == PHOTOMETRIC_RGB) {
-                       if (jpegcolormode == JPEGCOLORMODE_RGB)
-                               TIFFSetField(out, TIFFTAG_PHOTOMETRIC,
-                                            PHOTOMETRIC_YCBCR);
-                       else
-                               TIFFSetField(out, TIFFTAG_PHOTOMETRIC,
-                                            PHOTOMETRIC_RGB);
-               } else
-                       TIFFSetField(out, TIFFTAG_PHOTOMETRIC,
-                                    input_photometric);
-           }
-        }
+               if (input_photometric == PHOTOMETRIC_RGB &&
+                   jpegcolormode == JPEGCOLORMODE_RGB)
+                 TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_YCBCR);
+               else
+                 TIFFSetField(out, TIFFTAG_PHOTOMETRIC, input_photometric);
+       }
        else if (compression == COMPRESSION_SGILOG
-                || compression == COMPRESSION_SGILOG24)
+           || compression == COMPRESSION_SGILOG24)
                TIFFSetField(out, TIFFTAG_PHOTOMETRIC,
                    samplesperpixel == 1 ?
-                       PHOTOMETRIC_LOGL : PHOTOMETRIC_LOGLUV);
+                   PHOTOMETRIC_LOGL : PHOTOMETRIC_LOGLUV);
        else
                CopyTag(TIFFTAG_PHOTOMETRIC, 1, TIFF_SHORT);
        if (fillorder != 0)
@@ -636,11 +688,11 @@ tiffcp(TIFF* in, TIFF* out)
                 */
                if (rowsperstrip == (uint32) 0) {
                        if (!TIFFGetField(in, TIFFTAG_ROWSPERSTRIP,
-                                         &rowsperstrip)) {
+                           &rowsperstrip)) {
                                rowsperstrip =
-                                       TIFFDefaultStripSize(out, rowsperstrip);
+                                   TIFFDefaultStripSize(out, rowsperstrip);
                        }
-                       if (rowsperstrip > length)
+                       if (rowsperstrip > length && rowsperstrip != (uint32)-1)
                                rowsperstrip = length;
                }
                else if (rowsperstrip == (uint32) -1)
@@ -656,68 +708,92 @@ tiffcp(TIFF* in, TIFF* out)
        CopyTag(TIFFTAG_COLORMAP, 4, TIFF_SHORT);
 /* SMinSampleValue & SMaxSampleValue */
        switch (compression) {
-       case COMPRESSION_JPEG:
-               TIFFSetField(out, TIFFTAG_JPEGQUALITY, quality);
-               TIFFSetField(out, TIFFTAG_JPEGCOLORMODE, jpegcolormode);
-               break;
-       case COMPRESSION_LZW:
-       case COMPRESSION_ADOBE_DEFLATE:
-       case COMPRESSION_DEFLATE:
-               if (predictor != (uint16)-1)
-                       TIFFSetField(out, TIFFTAG_PREDICTOR, predictor);
-               else
-                       CopyField(TIFFTAG_PREDICTOR, predictor);
-               break;
-       case COMPRESSION_CCITTFAX3:
-       case COMPRESSION_CCITTFAX4:
-               if (compression == COMPRESSION_CCITTFAX3) {
-                       if (g3opts != (uint32) -1)
-                               TIFFSetField(out, TIFFTAG_GROUP3OPTIONS,
-                                   g3opts);
+               case COMPRESSION_JPEG:
+                       TIFFSetField(out, TIFFTAG_JPEGQUALITY, quality);
+                       TIFFSetField(out, TIFFTAG_JPEGCOLORMODE, jpegcolormode);
+                       break;
+               case COMPRESSION_JBIG:
+                       CopyTag(TIFFTAG_FAXRECVPARAMS, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_FAXRECVTIME, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_FAXSUBADDRESS, 1, TIFF_ASCII);
+                       CopyTag(TIFFTAG_FAXDCS, 1, TIFF_ASCII);
+                       break;
+               case COMPRESSION_LZW:
+               case COMPRESSION_ADOBE_DEFLATE:
+               case COMPRESSION_DEFLATE:
+                case COMPRESSION_LZMA:
+                       if (predictor != (uint16)-1)
+                               TIFFSetField(out, TIFFTAG_PREDICTOR, predictor);
                        else
-                               CopyField(TIFFTAG_GROUP3OPTIONS, g3opts);
-               } else
-                       CopyTag(TIFFTAG_GROUP4OPTIONS, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_BADFAXLINES, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_CLEANFAXDATA, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_FAXRECVPARAMS, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_FAXRECVTIME, 1, TIFF_LONG);
-               CopyTag(TIFFTAG_FAXSUBADDRESS, 1, TIFF_ASCII);
-               break;
+                               CopyField(TIFFTAG_PREDICTOR, predictor);
+                       if (preset != -1) {
+                                if (compression == COMPRESSION_ADOBE_DEFLATE
+                                         || compression == COMPRESSION_DEFLATE)
+                                        TIFFSetField(out, TIFFTAG_ZIPQUALITY, preset);
+                               else if (compression == COMPRESSION_LZMA)
+                                       TIFFSetField(out, TIFFTAG_LZMAPRESET, preset);
+                        }
+                       break;
+               case COMPRESSION_CCITTFAX3:
+               case COMPRESSION_CCITTFAX4:
+                       if (compression == COMPRESSION_CCITTFAX3) {
+                               if (g3opts != (uint32) -1)
+                                       TIFFSetField(out, TIFFTAG_GROUP3OPTIONS,
+                                           g3opts);
+                               else
+                                       CopyField(TIFFTAG_GROUP3OPTIONS, g3opts);
+                       } else
+                               CopyTag(TIFFTAG_GROUP4OPTIONS, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_BADFAXLINES, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_CLEANFAXDATA, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_FAXRECVPARAMS, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_FAXRECVTIME, 1, TIFF_LONG);
+                       CopyTag(TIFFTAG_FAXSUBADDRESS, 1, TIFF_ASCII);
+                       break;
        }
-       { uint32 len32;
-         void** data;
-         if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &len32, &data))
-               TIFFSetField(out, TIFFTAG_ICCPROFILE, len32, data);
+       {
+               uint32 len32;
+               void** data;
+               if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &len32, &data))
+                       TIFFSetField(out, TIFFTAG_ICCPROFILE, len32, data);
        }
-       { uint16 ninks;
-         const char* inknames;
-         if (TIFFGetField(in, TIFFTAG_NUMBEROFINKS, &ninks)) {
-               TIFFSetField(out, TIFFTAG_NUMBEROFINKS, ninks);
-               if (TIFFGetField(in, TIFFTAG_INKNAMES, &inknames)) {
-                   int inknameslen = strlen(inknames) + 1;
-                   const char* cp = inknames;
-                   while (ninks > 1) {
-                           cp = strchr(cp, '\0');
-                           if (cp) {
-                                   cp++;
-                                   inknameslen += (strlen(cp) + 1);
-                           }
-                           ninks--;
-                   }
-                   TIFFSetField(out, TIFFTAG_INKNAMES, inknameslen, inknames);
+       {
+               uint16 ninks;
+               const char* inknames;
+               if (TIFFGetField(in, TIFFTAG_NUMBEROFINKS, &ninks)) {
+                       TIFFSetField(out, TIFFTAG_NUMBEROFINKS, ninks);
+                       if (TIFFGetField(in, TIFFTAG_INKNAMES, &inknames)) {
+                               int inknameslen = strlen(inknames) + 1;
+                               const char* cp = inknames;
+                               while (ninks > 1) {
+                                       cp = strchr(cp, '\0');
+                                        cp++;
+                                        inknameslen += (strlen(cp) + 1);
+                                       ninks--;
+                               }
+                               TIFFSetField(out, TIFFTAG_INKNAMES, inknameslen, inknames);
+                       }
                }
-         }
        }
        {
-         unsigned short pg0, pg1;
-         if (TIFFGetField(in, TIFFTAG_PAGENUMBER, &pg0, &pg1)) {
-               if (pageNum < 0) /* only one input file */
-                       TIFFSetField(out, TIFFTAG_PAGENUMBER, pg0, pg1);
-               else 
-                       TIFFSetField(out, TIFFTAG_PAGENUMBER, pageNum++, 0);
-         }
+               unsigned short pg0, pg1;
+
+               if (pageInSeq == 1) {
+                       if (pageNum < 0) /* only one input file */ {
+                               if (TIFFGetField(in, TIFFTAG_PAGENUMBER, &pg0, &pg1))
+                                       TIFFSetField(out, TIFFTAG_PAGENUMBER, pg0, pg1);
+                       } else
+                               TIFFSetField(out, TIFFTAG_PAGENUMBER, pageNum++, 0);
+
+               } else {
+                       if (TIFFGetField(in, TIFFTAG_PAGENUMBER, &pg0, &pg1)) {
+                               if (pageNum < 0) /* only one input file */
+                                       TIFFSetField(out, TIFFTAG_PAGENUMBER, pg0, pg1);
+                               else
+                                       TIFFSetField(out, TIFFTAG_PAGENUMBER, pageNum++, 0);
+                       }
+               }
        }
 
        for (p = tags; p < &tags[NTAGS]; p++)
@@ -749,9 +825,14 @@ typedef int (*writeFunc)(TIFF*, uint8*, uint32, uint32, tsample_t);
  */
 DECLAREcpFunc(cpContig2ContigByRow)
 {
-       tdata_t buf = _TIFFmalloc(TIFFScanlineSize(in));
+       tsize_t scanlinesize = TIFFScanlineSize(in);
+       tdata_t buf;
        uint32 row;
 
+       buf = _TIFFmalloc(scanlinesize);
+       if (!buf)
+               return 0;
+       _TIFFmemset(buf, 0, scanlinesize);
        (void) imagewidth; (void) spp;
        for (row = 0; row < imagelength; row++) {
                if (TIFFReadScanline(in, buf, row, 0) < 0 && !ignore) {
@@ -794,12 +875,12 @@ subtract(32)
 
 static biasFn *lineSubtractFn (unsigned bits)
 {
-    switch (bits) {
-      case  8:  return subtract8;
-      case 16:  return subtract16;
-      case 32:  return subtract32;
-    }
-    return NULL;
+       switch (bits) {
+               case  8:  return subtract8;
+               case 16:  return subtract16;
+               case 32:  return subtract32;
+       }
+       return NULL;
 }
 
 /*
@@ -808,72 +889,72 @@ static biasFn *lineSubtractFn (unsigned bits)
 DECLAREcpFunc(cpBiasedContig2Contig)
 {
        if (spp == 1) {
-         tsize_t biasSize = TIFFScanlineSize(bias);
-         tsize_t bufSize = TIFFScanlineSize(in);
-         tdata_t buf, biasBuf;
-         uint32 biasWidth = 0, biasLength = 0;
-         TIFFGetField(bias, TIFFTAG_IMAGEWIDTH, &biasWidth);
-         TIFFGetField(bias, TIFFTAG_IMAGELENGTH, &biasLength);
-         if (biasSize == bufSize && 
-             imagelength == biasLength && imagewidth == biasWidth) {
-               uint16 sampleBits = 0;
-               biasFn *subtractLine;
-               TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &sampleBits);
-               subtractLine = lineSubtractFn (sampleBits);
-               if (subtractLine) {
-                       uint32 row;
-                       buf = _TIFFmalloc(bufSize);
-                       biasBuf = _TIFFmalloc(bufSize);
-                       for (row = 0; row < imagelength; row++) {
-                               if (TIFFReadScanline(in, buf, row, 0) < 0
-                                   && !ignore) {
-                                       TIFFError(TIFFFileName(in),
-                                       "Error, can't read scanline %lu",
-                                       (unsigned long) row);
-                                       goto bad;
+               tsize_t biasSize = TIFFScanlineSize(bias);
+               tsize_t bufSize = TIFFScanlineSize(in);
+               tdata_t buf, biasBuf;
+               uint32 biasWidth = 0, biasLength = 0;
+               TIFFGetField(bias, TIFFTAG_IMAGEWIDTH, &biasWidth);
+               TIFFGetField(bias, TIFFTAG_IMAGELENGTH, &biasLength);
+               if (biasSize == bufSize &&
+                   imagelength == biasLength && imagewidth == biasWidth) {
+                       uint16 sampleBits = 0;
+                       biasFn *subtractLine;
+                       TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &sampleBits);
+                       subtractLine = lineSubtractFn (sampleBits);
+                       if (subtractLine) {
+                               uint32 row;
+                               buf = _TIFFmalloc(bufSize);
+                               biasBuf = _TIFFmalloc(bufSize);
+                               for (row = 0; row < imagelength; row++) {
+                                       if (TIFFReadScanline(in, buf, row, 0) < 0
+                                           && !ignore) {
+                                               TIFFError(TIFFFileName(in),
+                                                   "Error, can't read scanline %lu",
+                                                   (unsigned long) row);
+                                               goto bad;
+                                       }
+                                       if (TIFFReadScanline(bias, biasBuf, row, 0) < 0
+                                           && !ignore) {
+                                               TIFFError(TIFFFileName(in),
+                                                   "Error, can't read biased scanline %lu",
+                                                   (unsigned long) row);
+                                               goto bad;
+                                       }
+                                       subtractLine (buf, biasBuf, imagewidth);
+                                       if (TIFFWriteScanline(out, buf, row, 0) < 0) {
+                                               TIFFError(TIFFFileName(out),
+                                                   "Error, can't write scanline %lu",
+                                                   (unsigned long) row);
+                                               goto bad;
+                                       }
                                }
-                               if (TIFFReadScanline(bias, biasBuf, row, 0) < 0
-                                   && !ignore) {
-                                       TIFFError(TIFFFileName(in),
-                                       "Error, can't read biased scanline %lu",
-                                       (unsigned long) row);
-                                       goto bad;
-                               }
-                               subtractLine (buf, biasBuf, imagewidth);
-                               if (TIFFWriteScanline(out, buf, row, 0) < 0) {
-                                       TIFFError(TIFFFileName(out),
-                                       "Error, can't write scanline %lu",
-                                       (unsigned long) row);
-                                       goto bad;
-                               }
-                       }
-               
-                       _TIFFfree(buf);
-                       _TIFFfree(biasBuf);
-                       TIFFSetDirectory(bias,
-                               TIFFCurrentDirectory(bias)); /* rewind */
-                       return 1;
+
+                               _TIFFfree(buf);
+                               _TIFFfree(biasBuf);
+                               TIFFSetDirectory(bias,
+                                   TIFFCurrentDirectory(bias)); /* rewind */
+                               return 1;
 bad:
-                       _TIFFfree(buf);
-                       _TIFFfree(biasBuf);
-                       return 0;
-           } else {
-             TIFFError(TIFFFileName(in),
-                       "No support for biasing %d bit pixels\n",
-                       sampleBits);
-             return 0;
-           }
-         }
-         TIFFError(TIFFFileName(in),
+                               _TIFFfree(buf);
+                               _TIFFfree(biasBuf);
+                               return 0;
+                       } else {
+                               TIFFError(TIFFFileName(in),
+                                   "No support for biasing %d bit pixels\n",
+                                   sampleBits);
+                               return 0;
+                       }
+               }
+               TIFFError(TIFFFileName(in),
                    "Bias image %s,%d\nis not the same size as %s,%d\n",
                    TIFFFileName(bias), TIFFCurrentDirectory(bias),
                    TIFFFileName(in), TIFFCurrentDirectory(in));
-         return 0;
+               return 0;
        } else {
-         TIFFError(TIFFFileName(in),
+               TIFFError(TIFFFileName(in),
                    "Can't bias %s,%d as it has >1 Sample/Pixel\n",
                    TIFFFileName(in), TIFFCurrentDirectory(in));
-         return 0;
+               return 0;
        }
 
 }
@@ -891,20 +972,21 @@ DECLAREcpFunc(cpDecodedStrips)
        if (buf) {
                tstrip_t s, ns = TIFFNumberOfStrips(in);
                uint32 row = 0;
+               _TIFFmemset(buf, 0, stripsize);
                for (s = 0; s < ns; s++) {
                        tsize_t cc = (row + rowsperstrip > imagelength) ?
                            TIFFVStripSize(in, imagelength - row) : stripsize;
                        if (TIFFReadEncodedStrip(in, s, buf, cc) < 0
                            && !ignore) {
                                TIFFError(TIFFFileName(in),
-                                         "Error, can't read strip %lu",
-                                         (unsigned long) s);
+                                   "Error, can't read strip %lu",
+                                   (unsigned long) s);
                                goto bad;
                        }
                        if (TIFFWriteEncodedStrip(out, s, buf, cc) < 0) {
                                TIFFError(TIFFFileName(out),
-                                         "Error, can't write strip %lu",
-                                         (unsigned long) s);
+                                   "Error, can't write strip %lu",
+                                   (unsigned long) s);
                                goto bad;
                        }
                        row += rowsperstrip;
@@ -913,8 +995,8 @@ DECLAREcpFunc(cpDecodedStrips)
                return 1;
        } else {
                TIFFError(TIFFFileName(in),
-                         "Error, can't allocate memory buffer of size %lu "
-                         "to read strips", (unsigned long) stripsize);
+                   "Error, can't allocate memory buffer of size %lu "
+                   "to read strips", (unsigned long) stripsize);
                return 0;
        }
 
@@ -928,23 +1010,28 @@ bad:
  */
 DECLAREcpFunc(cpSeparate2SeparateByRow)
 {
-       tdata_t buf = _TIFFmalloc(TIFFScanlineSize(in));
+       tsize_t scanlinesize = TIFFScanlineSize(in);
+       tdata_t buf;
        uint32 row;
        tsample_t s;
 
        (void) imagewidth;
+       buf = _TIFFmalloc(scanlinesize);
+       if (!buf)
+               return 0;
+       _TIFFmemset(buf, 0, scanlinesize);
        for (s = 0; s < spp; s++) {
                for (row = 0; row < imagelength; row++) {
                        if (TIFFReadScanline(in, buf, row, s) < 0 && !ignore) {
                                TIFFError(TIFFFileName(in),
-                                         "Error, can't read scanline %lu",
-                                         (unsigned long) row);
+                                   "Error, can't read scanline %lu",
+                                   (unsigned long) row);
                                goto bad;
                        }
                        if (TIFFWriteScanline(out, buf, row, s) < 0) {
                                TIFFError(TIFFFileName(out),
-                                         "Error, can't write scanline %lu",
-                                         (unsigned long) row);
+                                   "Error, can't write scanline %lu",
+                                   (unsigned long) row);
                                goto bad;
                        }
                }
@@ -961,21 +1048,29 @@ bad:
  */
 DECLAREcpFunc(cpContig2SeparateByRow)
 {
-       tdata_t inbuf = _TIFFmalloc(TIFFScanlineSize(in));
-       tdata_t outbuf = _TIFFmalloc(TIFFScanlineSize(out));
+       tsize_t scanlinesizein = TIFFScanlineSize(in);
+       tsize_t scanlinesizeout = TIFFScanlineSize(out);
+       tdata_t inbuf;
+       tdata_t outbuf;
        register uint8 *inp, *outp;
        register uint32 n;
        uint32 row;
        tsample_t s;
 
+       inbuf = _TIFFmalloc(scanlinesizein);
+       outbuf = _TIFFmalloc(scanlinesizeout);
+       if (!inbuf || !outbuf)
+               return 0;
+       _TIFFmemset(inbuf, 0, scanlinesizein);
+       _TIFFmemset(outbuf, 0, scanlinesizeout);
        /* unpack channels */
        for (s = 0; s < spp; s++) {
                for (row = 0; row < imagelength; row++) {
                        if (TIFFReadScanline(in, inbuf, row, 0) < 0
                            && !ignore) {
                                TIFFError(TIFFFileName(in),
-                                         "Error, can't read scanline %lu",
-                                         (unsigned long) row);
+                                   "Error, can't read scanline %lu",
+                                   (unsigned long) row);
                                goto bad;
                        }
                        inp = ((uint8*)inbuf) + s;
@@ -986,8 +1081,8 @@ DECLAREcpFunc(cpContig2SeparateByRow)
                        }
                        if (TIFFWriteScanline(out, outbuf, row, s) < 0) {
                                TIFFError(TIFFFileName(out),
-                                         "Error, can't write scanline %lu",
-                                         (unsigned long) row);
+                                   "Error, can't write scanline %lu",
+                                   (unsigned long) row);
                                goto bad;
                        }
                }
@@ -1006,21 +1101,29 @@ bad:
  */
 DECLAREcpFunc(cpSeparate2ContigByRow)
 {
-       tdata_t inbuf = _TIFFmalloc(TIFFScanlineSize(in));
-       tdata_t outbuf = _TIFFmalloc(TIFFScanlineSize(out));
+       tsize_t scanlinesizein = TIFFScanlineSize(in);
+       tsize_t scanlinesizeout = TIFFScanlineSize(out);
+       tdata_t inbuf;
+       tdata_t outbuf;
        register uint8 *inp, *outp;
        register uint32 n;
        uint32 row;
        tsample_t s;
 
+       inbuf = _TIFFmalloc(scanlinesizein);
+       outbuf = _TIFFmalloc(scanlinesizeout);
+       if (!inbuf || !outbuf)
+               return 0;
+       _TIFFmemset(inbuf, 0, scanlinesizein);
+       _TIFFmemset(outbuf, 0, scanlinesizeout);
        for (row = 0; row < imagelength; row++) {
                /* merge channels */
                for (s = 0; s < spp; s++) {
                        if (TIFFReadScanline(in, inbuf, row, s) < 0
                            && !ignore) {
                                TIFFError(TIFFFileName(in),
-                                         "Error, can't read scanline %lu",
-                                         (unsigned long) row);
+                                   "Error, can't read scanline %lu",
+                                   (unsigned long) row);
                                goto bad;
                        }
                        inp = (uint8*)inbuf;
@@ -1032,8 +1135,8 @@ DECLAREcpFunc(cpSeparate2ContigByRow)
                }
                if (TIFFWriteScanline(out, outbuf, row, 0) < 0) {
                        TIFFError(TIFFFileName(out),
-                                 "Error, can't write scanline %lu",
-                                 (unsigned long) row);
+                           "Error, can't write scanline %lu",
+                           (unsigned long) row);
                        goto bad;
                }
        }
@@ -1048,7 +1151,7 @@ bad:
 
 static void
 cpStripToTile(uint8* out, uint8* in,
-       uint32 rows, uint32 cols, int outskew, int inskew)
+    uint32 rows, uint32 cols, int outskew, int inskew)
 {
        while (rows-- > 0) {
                uint32 j = cols;
@@ -1061,20 +1164,20 @@ cpStripToTile(uint8* out, uint8* in,
 
 static void
 cpContigBufToSeparateBuf(uint8* out, uint8* in,
-           uint32 rows, uint32 cols, int outskew, int inskew, tsample_t spp,
-           int bytes_per_sample )
+    uint32 rows, uint32 cols, int outskew, int inskew, tsample_t spp,
+    int bytes_per_sample )
 {
        while (rows-- > 0) {
                uint32 j = cols;
                while (j-- > 0)
-                {
-                        int n = bytes_per_sample;
+               {
+                       int n = bytes_per_sample;
 
-                        while( n-- ) {
-                            *out++ = *in++;
-                        }
-                        in += (spp-1) * bytes_per_sample;
-                }
+                       while( n-- ) {
+                               *out++ = *in++;
+                       }
+                       in += (spp-1) * bytes_per_sample;
+               }
                out += outskew;
                in += inskew;
        }
@@ -1082,19 +1185,19 @@ cpContigBufToSeparateBuf(uint8* out, uint8* in,
 
 static void
 cpSeparateBufToContigBuf(uint8* out, uint8* in,
-       uint32 rows, uint32 cols, int outskew, int inskew, tsample_t spp,
-                         int bytes_per_sample)
+    uint32 rows, uint32 cols, int outskew, int inskew, tsample_t spp,
+    int bytes_per_sample)
 {
        while (rows-- > 0) {
                uint32 j = cols;
                while (j-- > 0) {
-                        int n = bytes_per_sample;
+                       int n = bytes_per_sample;
 
-                        while( n-- ) {
-                                *out++ = *in++;
-                        }
-                        out += (spp-1)*bytes_per_sample;
-                }
+                       while( n-- ) {
+                               *out++ = *in++;
+                       }
+                       out += (spp-1)*bytes_per_sample;
+               }
                out += outskew;
                in += inskew;
        }
@@ -1107,24 +1210,24 @@ cpImage(TIFF* in, TIFF* out, readFunc fin, writeFunc fout,
        int status = 0;
        tdata_t buf = NULL;
        tsize_t scanlinesize = TIFFRasterScanlineSize(in);
-        tsize_t bytes = scanlinesize * (tsize_t)imagelength;                                      
-        /*
-         * XXX: Check for integer overflow.
-         */
-        if (scanlinesize
+       tsize_t bytes = scanlinesize * (tsize_t)imagelength;
+       /*
+        * XXX: Check for integer overflow.
+        */
+       if (scanlinesize
            && imagelength
            && bytes / (tsize_t)imagelength == scanlinesize) {
-                buf = _TIFFmalloc(bytes);
+               buf = _TIFFmalloc(bytes);
                if (buf) {
-                       if ((*fin)(in, (uint8*)buf, imagelength, 
-                                  imagewidth, spp)) {
+                       if ((*fin)(in, (uint8*)buf, imagelength,
+                           imagewidth, spp)) {
                                status = (*fout)(out, (uint8*)buf,
-                                                imagelength, imagewidth, spp);
+                                   imagelength, imagewidth, spp);
                        }
                        _TIFFfree(buf);
                } else {
                        TIFFError(TIFFFileName(in),
-                               "Error, can't allocate space for image buffer");
+                           "Error, can't allocate space for image buffer");
                }
        } else {
                TIFFError(TIFFFileName(in), "Error, no space for image buffer");
@@ -1144,8 +1247,8 @@ DECLAREreadFunc(readContigStripsIntoBuffer)
                if (TIFFReadScanline(in, (tdata_t) bufp, row, 0) < 0
                    && !ignore) {
                        TIFFError(TIFFFileName(in),
-                                 "Error, can't read scanline %lu",
-                                 (unsigned long) row);
+                           "Error, can't read scanline %lu",
+                           (unsigned long) row);
                        return 0;
                }
                bufp += scanlinesize;
@@ -1158,10 +1261,14 @@ DECLAREreadFunc(readSeparateStripsIntoBuffer)
 {
        int status = 1;
        tsize_t scanlinesize = TIFFScanlineSize(in);
-       tdata_t scanline = _TIFFmalloc(scanlinesize);
+       tdata_t scanline;
        if (!scanlinesize)
                return 0;
 
+       scanline = _TIFFmalloc(scanlinesize);
+       if (!scanline)
+               return 0;
+       _TIFFmemset(scanline, 0, scanlinesize);
        (void) imagewidth;
        if (scanline) {
                uint8* bufp = (uint8*) buf;
@@ -1172,14 +1279,14 @@ DECLAREreadFunc(readSeparateStripsIntoBuffer)
                        for (s = 0; s < spp; s++) {
                                uint8* bp = bufp + s;
                                tsize_t n = scanlinesize;
-                                uint8* sbuf = scanline;
+                               uint8* sbuf = scanline;
 
                                if (TIFFReadScanline(in, scanline, row, s) < 0
                                    && !ignore) {
                                        TIFFError(TIFFFileName(in),
-                                       "Error, can't read scanline %lu",
-                                       (unsigned long) row);
-                                       status = 0;
+                                           "Error, can't read scanline %lu",
+                                           (unsigned long) row);
+                                           status = 0;
                                        goto done;
                                }
                                while (n-- > 0)
@@ -1197,7 +1304,8 @@ done:
 DECLAREreadFunc(readContigTilesIntoBuffer)
 {
        int status = 1;
-       tdata_t tilebuf = _TIFFmalloc(TIFFTileSize(in));
+       tsize_t tilesize = TIFFTileSize(in);
+       tdata_t tilebuf;
        uint32 imagew = TIFFScanlineSize(in);
        uint32 tilew  = TIFFTileRowSize(in);
        int iskew = imagew - tilew;
@@ -1206,8 +1314,10 @@ DECLAREreadFunc(readContigTilesIntoBuffer)
        uint32 row;
 
        (void) spp;
+       tilebuf = _TIFFmalloc(tilesize);
        if (tilebuf == 0)
                return 0;
+       _TIFFmemset(tilebuf, 0, tilesize);
        (void) TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
        (void) TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
         
@@ -1220,9 +1330,9 @@ DECLAREreadFunc(readContigTilesIntoBuffer)
                        if (TIFFReadTile(in, tilebuf, col, row, 0, 0) < 0
                            && !ignore) {
                                TIFFError(TIFFFileName(in),
-                                         "Error, can't read tile at %lu %lu",
-                                         (unsigned long) col,
-                                         (unsigned long) row);
+                                   "Error, can't read tile at %lu %lu",
+                                   (unsigned long) col,
+                                   (unsigned long) row);
                                status = 0;
                                goto done;
                        }
@@ -1230,12 +1340,12 @@ DECLAREreadFunc(readContigTilesIntoBuffer)
                                uint32 width = imagew - colb;
                                uint32 oskew = tilew - width;
                                cpStripToTile(bufp + colb,
-                                              tilebuf, nrow, width,
-                                              oskew + iskew, oskew );
+                                   tilebuf, nrow, width,
+                                   oskew + iskew, oskew );
                        } else
                                cpStripToTile(bufp + colb,
-                                              tilebuf, nrow, tilew,
-                                              iskew, 0);
+                                   tilebuf, nrow, tilew,
+                                   iskew, 0);
                        colb += tilew;
                }
                bufp += imagew * nrow;
@@ -1251,19 +1361,22 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
        uint32 imagew = TIFFRasterScanlineSize(in);
        uint32 tilew = TIFFTileRowSize(in);
        int iskew  = imagew - tilew*spp;
-       tdata_t tilebuf = _TIFFmalloc(TIFFTileSize(in));
+       tsize_t tilesize = TIFFTileSize(in);
+       tdata_t tilebuf;
        uint8* bufp = (uint8*) buf;
        uint32 tw, tl;
        uint32 row;
-        uint16 bps, bytes_per_sample;
+       uint16 bps, bytes_per_sample;
 
+       tilebuf = _TIFFmalloc(tilesize);
        if (tilebuf == 0)
                return 0;
+       _TIFFmemset(tilebuf, 0, tilesize);
        (void) TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
        (void) TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
        (void) TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
-        assert( bps % 8 == 0 );
-        bytes_per_sample = bps/8;
+       assert( bps % 8 == 0 );
+       bytes_per_sample = bps/8;
 
        for (row = 0; row < imagelength; row += tl) {
                uint32 nrow = (row+tl > imagelength) ? imagelength-row : tl;
@@ -1277,11 +1390,11 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
                                if (TIFFReadTile(in, tilebuf, col, row, 0, s) < 0
                                    && !ignore) {
                                        TIFFError(TIFFFileName(in),
-                                         "Error, can't read tile at %lu %lu, "
-                                         "sample %lu",
-                                         (unsigned long) col,
-                                         (unsigned long) row,
-                                         (unsigned long) s);
+                                           "Error, can't read tile at %lu %lu, "
+                                           "sample %lu",
+                                           (unsigned long) col,
+                                           (unsigned long) row,
+                                           (unsigned long) s);
                                        status = 0;
                                        goto done;
                                }
@@ -1293,18 +1406,18 @@ DECLAREreadFunc(readSeparateTilesIntoBuffer)
                                        uint32 width = imagew - colb;
                                        int oskew = tilew*spp - width;
                                        cpSeparateBufToContigBuf(
-                                            bufp+colb+s*bytes_per_sample,
+                                           bufp+colb+s*bytes_per_sample,
                                            tilebuf, nrow,
-                                            width/(spp*bytes_per_sample),
+                                           width/(spp*bytes_per_sample),
                                            oskew + iskew,
-                                            oskew/spp, spp,
-                                            bytes_per_sample);
+                                           oskew/spp, spp,
+                                           bytes_per_sample);
                                } else
                                        cpSeparateBufToContigBuf(
-                                            bufp+colb+s*bytes_per_sample,
+                                           bufp+colb+s*bytes_per_sample,
                                            tilebuf, nrow, tw,
                                            iskew, 0, spp,
-                                            bytes_per_sample);
+                                           bytes_per_sample);
                        }
                        colb += tilew*spp;
                }
@@ -1328,7 +1441,7 @@ DECLAREwriteFunc(writeBufferToContigStrips)
                tsize_t stripsize = TIFFVStripSize(out, nrows);
                if (TIFFWriteEncodedStrip(out, strip++, buf, stripsize) < 0) {
                        TIFFError(TIFFFileName(out),
-                                 "Error, can't write strip %lu", strip - 1);
+                           "Error, can't write strip %u", strip - 1);
                        return 0;
                }
                buf += stripsize;
@@ -1340,12 +1453,15 @@ DECLAREwriteFunc(writeBufferToSeparateStrips)
 {
        uint32 rowsize = imagewidth * spp;
        uint32 rowsperstrip;
-       tdata_t obuf = _TIFFmalloc(TIFFStripSize(out));
+       tsize_t stripsize = TIFFStripSize(out);
+       tdata_t obuf;
        tstrip_t strip = 0;
        tsample_t s;
 
+       obuf = _TIFFmalloc(stripsize);
        if (obuf == NULL)
                return (0);
+       _TIFFmemset(obuf, 0, stripsize);
        (void) TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
        for (s = 0; s < spp; s++) {
                uint32 row;
@@ -1355,12 +1471,12 @@ DECLAREwriteFunc(writeBufferToSeparateStrips)
                        tsize_t stripsize = TIFFVStripSize(out, nrows);
 
                        cpContigBufToSeparateBuf(
-                           obuf, (uint8*) buf + row*rowsize + s, 
+                           obuf, (uint8*) buf + row*rowsize + s,
                            nrows, imagewidth, 0, 0, spp, 1);
                        if (TIFFWriteEncodedStrip(out, strip++, obuf, stripsize) < 0) {
                                TIFFError(TIFFFileName(out),
-                                         "Error, can't write strip %lu",
-                                         strip - 1);
+                                   "Error, can't write strip %u",
+                                   strip - 1);
                                _TIFFfree(obuf);
                                return 0;
                        }
@@ -1376,14 +1492,18 @@ DECLAREwriteFunc(writeBufferToContigTiles)
        uint32 imagew = TIFFScanlineSize(out);
        uint32 tilew  = TIFFTileRowSize(out);
        int iskew = imagew - tilew;
-       tdata_t obuf = _TIFFmalloc(TIFFTileSize(out));
+       tsize_t tilesize = TIFFTileSize(out);
+       tdata_t obuf;
        uint8* bufp = (uint8*) buf;
        uint32 tl, tw;
        uint32 row;
 
        (void) spp;
+
+       obuf = _TIFFmalloc(TIFFTileSize(out));
        if (obuf == NULL)
                return 0;
+       _TIFFmemset(obuf, 0, tilesize);
        (void) TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
        (void) TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
        for (row = 0; row < imagelength; row += tilelength) {
@@ -1406,9 +1526,9 @@ DECLAREwriteFunc(writeBufferToContigTiles)
                                    0, iskew);
                        if (TIFFWriteTile(out, obuf, col, row, 0, 0) < 0) {
                                TIFFError(TIFFFileName(out),
-                                         "Error, can't write tile at %lu %lu",
-                                         (unsigned long) col,
-                                         (unsigned long) row);
+                                   "Error, can't write tile at %lu %lu",
+                                   (unsigned long) col,
+                                   (unsigned long) row);
                                _TIFFfree(obuf);
                                return 0;
                        }
@@ -1426,20 +1546,23 @@ DECLAREwriteFunc(writeBufferToSeparateTiles)
        tsize_t tilew  = TIFFTileRowSize(out);
        uint32 iimagew = TIFFRasterScanlineSize(out);
        int iskew = iimagew - tilew*spp;
-       tdata_t obuf = _TIFFmalloc(TIFFTileSize(out));
+       tsize_t tilesize = TIFFTileSize(out);
+       tdata_t obuf;
        uint8* bufp = (uint8*) buf;
        uint32 tl, tw;
        uint32 row;
-        uint16 bps, bytes_per_sample;
+       uint16 bps, bytes_per_sample;
 
+       obuf = _TIFFmalloc(TIFFTileSize(out));
        if (obuf == NULL)
                return 0;
+       _TIFFmemset(obuf, 0, tilesize);
        (void) TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
        (void) TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
        (void) TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
-        assert( bps % 8 == 0 );
-        bytes_per_sample = bps/8;
-        
+       assert( bps % 8 == 0 );
+       bytes_per_sample = bps/8;
+
        for (row = 0; row < imagelength; row += tl) {
                uint32 nrow = (row+tl > imagelength) ? imagelength-row : tl;
                uint32 colb = 0;
@@ -1460,20 +1583,20 @@ DECLAREwriteFunc(writeBufferToSeparateTiles)
                                            bufp + (colb*spp) + s,
                                            nrow, width/bytes_per_sample,
                                            oskew, (oskew*spp)+iskew, spp,
-                                            bytes_per_sample);
+                                           bytes_per_sample);
                                } else
                                        cpContigBufToSeparateBuf(obuf,
                                            bufp + (colb*spp) + s,
                                            nrow, tilewidth,
                                            0, iskew, spp,
-                                            bytes_per_sample);
+                                           bytes_per_sample);
                                if (TIFFWriteTile(out, obuf, col, row, 0, s) < 0) {
                                        TIFFError(TIFFFileName(out),
-                                       "Error, can't write tile at %lu %lu "
-                                       "sample %lu",
-                                       (unsigned long) col,
-                                       (unsigned long) row,
-                                       (unsigned long) s);
+                                           "Error, can't write tile at %lu %lu "
+                                           "sample %lu",
+                                           (unsigned long) col,
+                                           (unsigned long) row,
+                                           (unsigned long) s);
                                        _TIFFfree(obuf);
                                        return 0;
                                }
@@ -1631,93 +1754,93 @@ pickCopyFunc(TIFF* in, TIFF* out, uint16 bitspersample, uint16 samplesperpixel)
        (void) TIFFGetField(in, TIFFTAG_PLANARCONFIG, &shortv);
        if (shortv != config && bitspersample != 8 && samplesperpixel > 1) {
                fprintf(stderr,
-"%s: Cannot handle different planar configuration w/ bits/sample != 8\n",
+                   "%s: Cannot handle different planar configuration w/ bits/sample != 8\n",
                    TIFFFileName(in));
                return (NULL);
        }
        TIFFGetField(in, TIFFTAG_IMAGEWIDTH, &w);
        TIFFGetField(in, TIFFTAG_IMAGELENGTH, &l);
-        if (!(TIFFIsTiled(out) || TIFFIsTiled(in))) {
-           uint32 irps = (uint32) -1L;
-           TIFFGetField(in, TIFFTAG_ROWSPERSTRIP, &irps);
-            /* if biased, force decoded copying to allow image subtraction */
-           bychunk = !bias && (rowsperstrip == irps);
+       if (!(TIFFIsTiled(out) || TIFFIsTiled(in))) {
+               uint32 irps = (uint32) -1L;
+               TIFFGetField(in, TIFFTAG_ROWSPERSTRIP, &irps);
+               /* if biased, force decoded copying to allow image subtraction */
+               bychunk = !bias && (rowsperstrip == irps);
        }else{  /* either in or out is tiled */
-            if (bias) {
-                  fprintf(stderr,
-"%s: Cannot handle tiled configuration w/bias image\n",
-                  TIFFFileName(in));
-                  return (NULL);
-            }
-           if (TIFFIsTiled(out)) {
-               if (!TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw))
-                       tw = w;
-               if (!TIFFGetField(in, TIFFTAG_TILELENGTH, &tl))
-                       tl = l;
-               bychunk = (tw == tilewidth && tl == tilelength);
-           } else {  /* out's not, so in must be tiled */
-               TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
-               TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
-               bychunk = (tw == w && tl == rowsperstrip);
-            }
+               if (bias) {
+                       fprintf(stderr,
+                           "%s: Cannot handle tiled configuration w/bias image\n",
+                       TIFFFileName(in));
+                       return (NULL);
+               }
+               if (TIFFIsTiled(out)) {
+                       if (!TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw))
+                               tw = w;
+                       if (!TIFFGetField(in, TIFFTAG_TILELENGTH, &tl))
+                               tl = l;
+                       bychunk = (tw == tilewidth && tl == tilelength);
+               } else {  /* out's not, so in must be tiled */
+                       TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
+                       TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
+                       bychunk = (tw == w && tl == rowsperstrip);
+               }
        }
 #define        T 1
 #define        F 0
 #define pack(a,b,c,d,e)        ((long)(((a)<<11)|((b)<<3)|((c)<<2)|((d)<<1)|(e)))
        switch(pack(shortv,config,TIFFIsTiled(in),TIFFIsTiled(out),bychunk)) {
-/* Strips -> Tiles */
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,T,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,T,T):
-               return cpContigStrips2ContigTiles;
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, F,T,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, F,T,T):
-               return cpContigStrips2SeparateTiles;
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,T,F):
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,T,T):
-               return cpSeparateStrips2ContigTiles;
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,T,F):
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,T,T):
-               return cpSeparateStrips2SeparateTiles;
-/* Tiles -> Tiles */
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,T,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,T,T):
-               return cpContigTiles2ContigTiles;
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,T,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,T,T):
-               return cpContigTiles2SeparateTiles;
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,T,F):
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,T,T):
-               return cpSeparateTiles2ContigTiles;
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,T,F):
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,T,T):
-               return cpSeparateTiles2SeparateTiles;
-/* Tiles -> Strips */
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,F,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,F,T):
-               return cpContigTiles2ContigStrips;
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,F,F):
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,F,T):
-               return cpContigTiles2SeparateStrips;
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,F,F):
-        case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,F,T):
-               return cpSeparateTiles2ContigStrips;
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,F,F):
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,F,T):
-               return cpSeparateTiles2SeparateStrips;
-/* Strips -> Strips */
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,F,F):
-               return bias ? cpBiasedContig2Contig : cpContig2ContigByRow;
-       case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,F,T):
-               return cpDecodedStrips;
-       case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_SEPARATE,   F,F,F):
-       case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_SEPARATE,   F,F,T):
-               return cpContig2SeparateByRow;
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,F,F):
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,F,T):
-               return cpSeparate2ContigByRow;
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,F,F):
-       case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,F,T):
-               return cpSeparate2SeparateByRow;
+               /* Strips -> Tiles */
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,T,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,T,T):
+                       return cpContigStrips2ContigTiles;
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, F,T,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, F,T,T):
+                       return cpContigStrips2SeparateTiles;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,T,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,T,T):
+                       return cpSeparateStrips2ContigTiles;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,T,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,T,T):
+                       return cpSeparateStrips2SeparateTiles;
+               /* Tiles -> Tiles */
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,T,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,T,T):
+                       return cpContigTiles2ContigTiles;
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,T,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,T,T):
+                       return cpContigTiles2SeparateTiles;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,T,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,T,T):
+                       return cpSeparateTiles2ContigTiles;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,T,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,T,T):
+                       return cpSeparateTiles2SeparateTiles;
+               /* Tiles -> Strips */
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,F,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   T,F,T):
+                       return cpContigTiles2ContigStrips;
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,F,F):
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_SEPARATE, T,F,T):
+                       return cpContigTiles2SeparateStrips;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,F,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   T,F,T):
+                       return cpSeparateTiles2ContigStrips;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,F,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, T,F,T):
+                       return cpSeparateTiles2SeparateStrips;
+               /* Strips -> Strips */
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,F,F):
+                       return bias ? cpBiasedContig2Contig : cpContig2ContigByRow;
+               case pack(PLANARCONFIG_CONTIG,   PLANARCONFIG_CONTIG,   F,F,T):
+                       return cpDecodedStrips;
+               case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_SEPARATE,   F,F,F):
+               case pack(PLANARCONFIG_CONTIG, PLANARCONFIG_SEPARATE,   F,F,T):
+                       return cpContig2SeparateByRow;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,F,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_CONTIG,   F,F,T):
+                       return cpSeparate2ContigByRow;
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,F,F):
+               case pack(PLANARCONFIG_SEPARATE, PLANARCONFIG_SEPARATE, F,F,T):
+                       return cpSeparate2SeparateByRow;
        }
 #undef pack
 #undef F
@@ -1728,3 +1851,10 @@ pickCopyFunc(TIFF* in, TIFF* out, uint16 bitspersample, uint16 samplesperpixel)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
diff --git a/src/tiff/tools/tiffcrop.c b/src/tiff/tools/tiffcrop.c
new file mode 100644 (file)
index 0000000..7ab3e53
--- /dev/null
@@ -0,0 +1,9066 @@
+/* $Id$ */
+
+/* tiffcrop.c -- a port of tiffcp.c extended to include manipulations of
+ * the image data through additional options listed below
+ *
+ * Original code:
+ * Copyright (c) 1988-1997 Sam Leffler
+ * Copyright (c) 1991-1997 Silicon Graphics, Inc.
+ * Additions (c) Richard Nolde 2006-2010 
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and 
+ * its documentation for any purpose is hereby granted without fee, provided
+ * that (i) the above copyright notices and this permission notice appear in
+ * all copies of the software and related documentation, and (ii) the names of
+ * Sam Leffler and Silicon Graphics may not be used in any advertising or
+ * publicity relating to the software without the specific, prior written
+ * permission of Sam Leffler and Silicon Graphics.
+ * 
+ * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
+ * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
+ * 
+ * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS OR ANY OTHER COPYRIGHT  
+ * HOLDERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL 
+ * DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, 
+ * DATA OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND 
+ * ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE
+ * OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Some portions of the current code are derived from tiffcp, primarly in 
+ * the areas of lowlevel reading and writing of TAGS, scanlines and tiles though
+ * some of the original functions have been extended to support arbitrary bit
+ * depths. These functions are presented at the top of this file.
+ *
+ * Add support for the options below to extract sections of image(s) 
+ * and to modify the whole image or selected portions of each image by
+ * rotations, mirroring, and colorscale/colormap inversion of selected
+ * types of TIFF images when appropriate. Some color model dependent 
+ * functions are restricted to bilevel or 8 bit per sample data.
+ * See the man page for the full explanations.
+ *
+ * New Options: 
+ * -h             Display the syntax guide.
+ * -v             Report the version and last build date for tiffcrop and libtiff.
+ * -z x1,y1,x2,y2:x3,y3,x4,y4:..xN,yN,xN + 1, yN + 1 
+ *                Specify a series of coordinates to define rectangular
+ *                regions by the top left and lower right corners.
+ * -e c|d|i|m|s   export mode for images and selections from input images
+ *   combined     All images and selections are written to a single file (default)
+ *                with multiple selections from one image combined into a single image
+ *   divided      All images and selections are written to a single file
+ *                with each selection from one image written to a new image
+ *   image        Each input image is written to a new file (numeric filename sequence)
+ *                with multiple selections from the image combined into one image
+ *   multiple     Each input image is written to a new file (numeric filename sequence)
+ *                with each selection from the image written to a new image
+ *   separated    Individual selections from each image are written to separate files
+ * -U units       [in, cm, px ] inches, centimeters or pixels
+ * -H #           Set horizontal resolution of output images to #
+ * -V #           Set vertical resolution of output images to #
+ * -J #           Horizontal margin of output page to # expressed in current
+ *                units when sectioning image into columns x rows 
+ *                using the -S cols:rows option.
+ * -K #           Vertical margin of output page to # expressed in current
+ *                units when sectioning image into columns x rows
+ *                using the -S cols:rows option.
+ * -X #           Horizontal dimension of region to extract expressed in current
+ *                units
+ * -Y #           Vertical dimension of region to extract expressed in current
+ *                units
+ * -O orient      Orientation for output image, portrait, landscape, auto
+ * -P page        Page size for output image segments, eg letter, legal, tabloid,
+ *                etc.
+ * -S cols:rows   Divide the image into equal sized segments using cols across
+ *                and rows down
+ * -E t|l|r|b     Edge to use as origin
+ * -m #,#,#,#     Margins from edges for selection: top, left, bottom, right
+ *                (commas separated)
+ * -Z #:#,#:#     Zones of the image designated as zone X of Y, 
+ *                eg 1:3 would be first of three equal portions measured
+ *                from reference edge
+ * -N odd|even|#,#-#,#|last 
+ *                Select sequences and/or ranges of images within file
+ *                to process. The words odd or even may be used to specify
+ *                all odd or even numbered images the word last may be used
+ *                in place of a number in the sequence to indicate the final
+ *                image in the file without knowing how many images there are.
+ * -R #           Rotate image or crop selection by 90,180,or 270 degrees
+ *                clockwise  
+ * -F h|v         Flip (mirror) image or crop selection horizontally
+ *                or vertically 
+ * -I [black|white|data|both]
+ *                Invert color space, eg dark to light for bilevel and grayscale images
+ *                If argument is white or black, set the PHOTOMETRIC_INTERPRETATION 
+ *                tag to MinIsBlack or MinIsWhite without altering the image data
+ *                If the argument is data or both, the image data are modified:
+ *                both inverts the data and the PHOTOMETRIC_INTERPRETATION tag,
+ *                data inverts the data but not the PHOTOMETRIC_INTERPRETATION tag
+ * -D input:<filename1>,output:<filename2>,format:<raw|txt>,level:N,debug:N
+ *                Dump raw data for input and/or output images to individual files
+ *                in raw (binary) format or text (ASCII) representing binary data
+ *                as strings of 1s and 0s. The filename arguments are used as stems
+ *                from which individual files are created for each image. Text format
+ *                includes annotations for image parameters and scanline info. Level
+ *                selects which functions dump data, with higher numbers selecting
+ *                lower level, scanline level routines. Debug reports a limited set
+ *                of messages to monitor progess without enabling dump logs.
+ */
+
+static   char tiffcrop_version_id[] = "2.4";
+static   char tiffcrop_rev_date[] = "12-13-2010";
+
+#include "tif_config.h"
+#include "tiffiop.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <ctype.h>
+#include <limits.h>
+#include <sys/stat.h>
+#include <assert.h>
+
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+
+#ifndef HAVE_GETOPT
+extern int getopt(int, char**, char*);
+#endif
+
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
+#include "tiffio.h"
+
+#if defined(VMS)
+# define unlink delete
+#endif
+
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#ifndef streq
+#define        streq(a,b)      (strcmp((a),(b)) == 0)
+#endif
+#define        strneq(a,b,n)   (strncmp((a),(b),(n)) == 0)
+
+#define        TRUE    1
+#define        FALSE   0
+
+#ifndef TIFFhowmany
+#define TIFFhowmany(x, y) ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y)))
+#define TIFFhowmany8(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
+#endif
+
+/*
+ * Definitions and data structures required to support cropping and image
+ * manipulations.
+ */
+
+#define EDGE_TOP      1
+#define EDGE_LEFT     2
+#define EDGE_BOTTOM   3
+#define EDGE_RIGHT    4
+#define EDGE_CENTER   5
+
+#define MIRROR_HORIZ  1
+#define MIRROR_VERT   2
+#define MIRROR_BOTH   3
+#define ROTATECW_90   8
+#define ROTATECW_180 16
+#define ROTATECW_270 32
+#define ROTATE_ANY ROTATECW_90 || ROTATECW_180 || ROTATECW_270 
+
+#define CROP_NONE     0
+#define CROP_MARGINS  1
+#define CROP_WIDTH    2
+#define CROP_LENGTH   4
+#define CROP_ZONES    8
+#define CROP_REGIONS 16
+#define CROP_ROTATE  32
+#define CROP_MIRROR  64
+#define CROP_INVERT 128
+
+/* Modes for writing out images and selections */
+#define ONE_FILE_COMPOSITE       0 /* One file, sections combined sections */
+#define ONE_FILE_SEPARATED       1 /* One file, sections to new IFDs */
+#define FILE_PER_IMAGE_COMPOSITE 2 /* One file per image, combined sections */
+#define FILE_PER_IMAGE_SEPARATED 3 /* One file per input image */
+#define FILE_PER_SELECTION       4 /* One file per selection */
+
+#define COMPOSITE_IMAGES         0 /* Selections combined into one image */  
+#define SEPARATED_IMAGES         1 /* Selections saved to separate images */
+
+#define STRIP    1
+#define TILE     2
+
+#define MAX_REGIONS   8  /* number of regions to extract from a single page */
+#define MAX_OUTBUFFS  8  /* must match larger of zones or regions */
+#define MAX_SECTIONS 32  /* number of sections per page to write to output */
+#define MAX_IMAGES 2048  /* number of images in descrete list, not in the file */
+#define MAX_SAMPLES   8  /* maximum number of samples per pixel supported */
+#define MAX_BITS_PER_SAMPLE 64 /* maximum bit depth supported */
+#define MAX_EXPORT_PAGES 999999  /* maximum number of export pages per file */
+
+#define DUMP_NONE   0
+#define DUMP_TEXT   1
+#define DUMP_RAW    2
+
+/* Offsets into buffer for margins and fixed width and length segments */
+struct offset {
+  uint32  tmargin;
+  uint32  lmargin;
+  uint32  bmargin;
+  uint32  rmargin;
+  uint32  crop_width;
+  uint32  crop_length;
+  uint32  startx;
+  uint32  endx;
+  uint32  starty;
+  uint32  endy;
+};
+
+/* Description of a zone within the image. Position 1 of 3 zones would be 
+ * the first third of the image. These are computed after margins and 
+ * width/length requests are applied so that you can extract multiple 
+ * zones from within a larger region for OCR or barcode recognition.
+ */
+
+struct  buffinfo {
+  uint32 size;           /* size of this buffer */
+  unsigned char *buffer; /* address of the allocated buffer */
+};
+
+struct  zone {
+  int   position;  /* ordinal of segment to be extracted */
+  int   total;     /* total equal sized divisions of crop area */
+  };
+
+struct  pageseg {
+  uint32 x1;        /* index of left edge */
+  uint32 x2;        /* index of right edge */
+  uint32 y1;        /* index of top edge */
+  uint32 y2;        /* index of bottom edge */
+  int    position;  /* ordinal of segment to be extracted */
+  int    total;     /* total equal sized divisions of crop area */
+  uint32 buffsize;  /* size of buffer needed to hold the cropped zone */
+};
+
+struct  coordpairs {
+  double X1;        /* index of left edge in current units */
+  double X2;        /* index of right edge in current units */
+  double Y1;        /* index of top edge in current units */
+  double Y2;        /* index of bottom edge in current units */
+};
+
+struct  region {
+  uint32 x1;        /* pixel offset of left edge */
+  uint32 x2;        /* pixel offset of right edge */
+  uint32 y1;        /* pixel offset of top edge */
+  uint32 y2;        /* picel offset of bottom edge */
+  uint32 width;     /* width in pixels */
+  uint32 length;    /* length in pixels */
+  uint32 buffsize;  /* size of buffer needed to hold the cropped region */
+  unsigned char *buffptr; /* address of start of the region */
+};
+
+/* Cropping parameters from command line and image data 
+ * Note: This should be renamed to proc_opts and expanded to include all current globals
+ * if possible, but each function that accesses global variables will have to be redone.
+ */
+struct crop_mask {
+  double width;           /* Selection width for master crop region in requested units */
+  double length;          /* Selection length for master crop region in requesed units */
+  double margins[4];      /* Top, left, bottom, right margins */
+  float  xres;            /* Horizontal resolution read from image*/
+  float  yres;            /* Vertical resolution read from image */
+  uint32 combined_width;  /* Width of combined cropped zones */
+  uint32 combined_length; /* Length of combined cropped zones */
+  uint32 bufftotal;       /* Size of buffer needed to hold all the cropped region */
+  uint16 img_mode;        /* Composite or separate images created from zones or regions */
+  uint16 exp_mode;        /* Export input images or selections to one or more files */
+  uint16 crop_mode;       /* Crop options to be applied */
+  uint16 res_unit;        /* Resolution unit for margins and selections */
+  uint16 edge_ref;        /* Reference edge for sections extraction and combination */
+  uint16 rotation;        /* Clockwise rotation of the extracted region or image */
+  uint16 mirror;          /* Mirror extracted region or image horizontally or vertically */
+  uint16 invert;          /* Invert the color map of image or region */
+  uint16 photometric;     /* Status of photometric interpretation for inverted image */
+  uint16 selections;      /* Number of regions or zones selected */
+  uint16 regions;         /* Number of regions delimited by corner coordinates */
+  struct region regionlist[MAX_REGIONS]; /* Regions within page or master crop region */
+  uint16 zones;           /* Number of zones delimited by Ordinal:Total requested */
+  struct zone zonelist[MAX_REGIONS]; /* Zones indices to define a region */
+  struct coordpairs corners[MAX_REGIONS]; /* Coordinates of upper left and lower right corner */
+};
+
+#define MAX_PAPERNAMES 49
+#define MAX_PAPERNAME_LENGTH 15
+#define DEFAULT_RESUNIT      RESUNIT_INCH
+#define DEFAULT_PAGE_HEIGHT   14.0
+#define DEFAULT_PAGE_WIDTH     8.5
+#define DEFAULT_RESOLUTION   300
+#define DEFAULT_PAPER_SIZE  "legal"
+
+#define ORIENTATION_NONE       0
+#define ORIENTATION_PORTRAIT   1
+#define ORIENTATION_LANDSCAPE  2
+#define ORIENTATION_SEASCAPE   4
+#define ORIENTATION_AUTO      16
+
+#define PAGE_MODE_NONE         0
+#define PAGE_MODE_RESOLUTION   1
+#define PAGE_MODE_PAPERSIZE    2
+#define PAGE_MODE_MARGINS      4
+#define PAGE_MODE_ROWSCOLS     8
+
+#define INVERT_DATA_ONLY      10
+#define INVERT_DATA_AND_TAG   11
+
+struct paperdef {
+  char   name[MAX_PAPERNAME_LENGTH];
+  double width;
+  double length;
+  double asratio;
+  };
+
+/* European page sizes corrected from update sent by 
+ * thomas . jarosch @ intra2net . com on 5/7/2010
+ * Paper Size       Width   Length  Aspect Ratio */
+struct paperdef PaperTable[MAX_PAPERNAMES] = {
+  {"default",         8.500,  14.000,  0.607},
+  {"pa4",             8.264,  11.000,  0.751},
+  {"letter",          8.500,  11.000,  0.773},
+  {"legal",           8.500,  14.000,  0.607},
+  {"half-letter",     8.500,   5.514,  1.542},
+  {"executive",       7.264,  10.528,  0.690},
+  {"tabloid",        11.000,  17.000,  0.647},
+  {"11x17",          11.000,  17.000,  0.647},
+  {"ledger",         17.000,  11.000,  1.545},
+  {"archa",           9.000,  12.000,  0.750},
+  {"archb",          12.000,  18.000,  0.667},
+  {"archc",          18.000,  24.000,  0.750},
+  {"archd",          24.000,  36.000,  0.667},
+  {"arche",          36.000,  48.000,  0.750},
+  {"csheet",         17.000,  22.000,  0.773},
+  {"dsheet",         22.000,  34.000,  0.647},
+  {"esheet",         34.000,  44.000,  0.773},
+  {"superb",         11.708,  17.042,  0.687},
+  {"commercial",      4.139,   9.528,  0.434},
+  {"monarch",         3.889,   7.528,  0.517},
+  {"envelope-dl",     4.333,   8.681,  0.499},
+  {"envelope-c5",     6.389,   9.028,  0.708},
+  {"europostcard",    4.139,   5.833,  0.710},
+  {"a0",             33.110,  46.811,  0.707},
+  {"a1",             23.386,  33.110,  0.706},
+  {"a2",             16.535,  23.386,  0.707},
+  {"a3",             11.693,  16.535,  0.707},
+  {"a4",              8.268,  11.693,  0.707},
+  {"a5",              5.827,   8.268,  0.705},
+  {"a6",              4.134,   5.827,  0.709},
+  {"a7",              2.913,   4.134,  0.705},
+  {"a8",              2.047,   2.913,  0.703},
+  {"a9",              1.457,   2.047,  0.712},
+  {"a10",             1.024,   1.457,  0.703},
+  {"b0",             39.370,  55.669,  0.707},
+  {"b1",             27.835,  39.370,  0.707},
+  {"b2",             19.685,  27.835,  0.707},
+  {"b3",             13.898,  19.685,  0.706},
+  {"b4",              9.843,  13.898,  0.708},
+  {"b5",              6.929,   9.843,  0.704},
+  {"b6",              4.921,   6.929,  0.710},
+  {"c0",             36.102,  51.063,  0.707},
+  {"c1",             25.512,  36.102,  0.707},
+  {"c2",             18.031,  25.512,  0.707},
+  {"c3",             12.756,  18.031,  0.707},
+  {"c4",              9.016,  12.756,  0.707},
+  {"c5",              6.378,   9.016,  0.707},
+  {"c6",              4.488,   6.378,  0.704},
+  {"",                0.000,   0.000,  1.000}
+};
+
+/* Structure to define input image parameters */
+struct image_data {
+  float  xres;
+  float  yres;
+  uint32 width;
+  uint32 length;
+  uint16 res_unit;
+  uint16 bps;
+  uint16 spp;
+  uint16 planar;
+  uint16 photometric;
+  uint16 orientation;
+  uint16 compression;
+  uint16 adjustments;
+};
+
+/* Structure to define the output image modifiers */
+struct pagedef {
+  char          name[16];
+  double        width;    /* width in pixels */
+  double        length;   /* length in pixels */
+  double        hmargin;  /* margins to subtract from width of sections */
+  double        vmargin;  /* margins to subtract from height of sections */
+  double        hres;     /* horizontal resolution for output */
+  double        vres;     /* vertical resolution for output */
+  uint32        mode;     /* bitmask of modifiers to page format */
+  uint16        res_unit; /* resolution unit for output image */
+  unsigned int  rows;     /* number of section rows */
+  unsigned int  cols;     /* number of section cols */
+  unsigned int  orient;   /* portrait, landscape, seascape, auto */
+};
+
+struct dump_opts {
+  int  debug;
+  int  format;
+  int  level;
+  char mode[4];
+  char infilename[PATH_MAX + 1];
+  char outfilename[PATH_MAX + 1];
+  FILE *infile;
+  FILE *outfile;
+  };
+
+/* globals */
+static int    outtiled = -1;
+static uint32 tilewidth = 0;
+static uint32 tilelength = 0;
+
+static uint16 config = 0;
+static uint16 compression = 0;
+static uint16 predictor = 0;
+static uint16 fillorder = 0;
+static uint32 rowsperstrip = 0;
+static uint32 g3opts = 0;
+static int    ignore = FALSE;          /* if true, ignore read errors */
+static uint32 defg3opts = (uint32) -1;
+static int    quality = 100;           /* JPEG quality */
+/* static int    jpegcolormode = -1;        was JPEGCOLORMODE_RGB;  */
+static int    jpegcolormode = JPEGCOLORMODE_RGB;
+static uint16 defcompression = (uint16) -1;
+static uint16 defpredictor = (uint16) -1;
+static int    pageNum = 0;
+static int    little_endian = 1;
+
+/* Functions adapted from tiffcp with additions or significant modifications */
+static int  readContigStripsIntoBuffer   (TIFF*, uint8*);
+static int  readSeparateStripsIntoBuffer (TIFF*, uint8*, uint32, uint32, tsample_t, struct dump_opts *);
+static int  readContigTilesIntoBuffer    (TIFF*, uint8*, uint32, uint32, uint32, uint32, tsample_t, uint16);
+static int  readSeparateTilesIntoBuffer  (TIFF*, uint8*, uint32, uint32, uint32, uint32, tsample_t, uint16);
+static int  writeBufferToContigStrips    (TIFF*, uint8*, uint32);
+static int  writeBufferToContigTiles     (TIFF*, uint8*, uint32, uint32, tsample_t, struct dump_opts *);
+static int  writeBufferToSeparateStrips  (TIFF*, uint8*, uint32, uint32, tsample_t, struct dump_opts *);
+static int  writeBufferToSeparateTiles   (TIFF*, uint8*, uint32, uint32, tsample_t, struct dump_opts *);
+static int  extractContigSamplesToBuffer (uint8 *, uint8 *, uint32, uint32, tsample_t, 
+                                         uint16, uint16, struct dump_opts *);
+static int processCompressOptions(char*);
+static void usage(void);
+
+/* All other functions by Richard Nolde,  not found in tiffcp */
+static void initImageData (struct image_data *);
+static void initCropMasks (struct crop_mask *);
+static void initPageSetup (struct pagedef *, struct pageseg *, struct buffinfo []);
+static void initDumpOptions(struct dump_opts *);
+
+/* Command line and file naming functions */
+void  process_command_opts (int, char *[], char *, char *, uint32 *,
+                           uint16 *, uint16 *, uint32 *, uint32 *, uint32 *,
+                           struct crop_mask *, struct pagedef *, 
+                            struct dump_opts *, 
+                            unsigned int *, unsigned int *);
+static  int update_output_file (TIFF **, char *, int, char *, unsigned int *);
+
+
+/*  * High level functions for whole image manipulation */
+static int  get_page_geometry (char *, struct pagedef*);
+static int  computeInputPixelOffsets(struct crop_mask *, struct image_data *, 
+                                     struct offset *);
+static int  computeOutputPixelOffsets (struct crop_mask *, struct image_data *,
+                                      struct pagedef *, struct pageseg *,
+                                       struct dump_opts *);
+static int  loadImage(TIFF *, struct image_data *, struct dump_opts *, unsigned char **);
+static int  correct_orientation(struct image_data *, unsigned char **);
+static int  getCropOffsets(struct image_data *, struct crop_mask *, struct dump_opts *);
+static int  processCropSelections(struct image_data *, struct crop_mask *, 
+                                  unsigned char **, struct buffinfo []);
+static int  writeSelections(TIFF *, TIFF **, struct crop_mask *, struct image_data *,
+                            struct dump_opts *, struct buffinfo [],
+                            char *, char *, unsigned int*, unsigned int);
+
+/* Section functions */
+static int  createImageSection(uint32, unsigned char **);
+static int  extractImageSection(struct image_data *, struct pageseg *, 
+                                unsigned char *, unsigned char *);
+static int  writeSingleSection(TIFF *, TIFF *, struct image_data *,
+                               struct dump_opts *, uint32, uint32,
+                              double, double, unsigned char *);
+static int  writeImageSections(TIFF *, TIFF *, struct image_data *,
+                               struct pagedef *, struct pageseg *, 
+                               struct dump_opts *, unsigned char *, 
+                               unsigned char **);
+/* Whole image functions */
+static int  createCroppedImage(struct image_data *, struct crop_mask *, 
+                               unsigned char **, unsigned char **);
+static int  writeCroppedImage(TIFF *, TIFF *, struct image_data *image,
+                              struct dump_opts * dump,
+                              uint32, uint32, unsigned char *, int, int);
+
+/* Image manipulation functions */
+static int rotateContigSamples8bits(uint16, uint16, uint16, uint32, 
+                                    uint32,   uint32, uint8 *, uint8 *);
+static int rotateContigSamples16bits(uint16, uint16, uint16, uint32, 
+                                     uint32,   uint32, uint8 *, uint8 *);
+static int rotateContigSamples24bits(uint16, uint16, uint16, uint32, 
+                                     uint32,   uint32, uint8 *, uint8 *);
+static int rotateContigSamples32bits(uint16, uint16, uint16, uint32, 
+                                     uint32,   uint32, uint8 *, uint8 *);
+static int rotateImage(uint16, struct image_data *, uint32 *, uint32 *,
+                      unsigned char **);
+static int mirrorImage(uint16, uint16, uint16, uint32, uint32,
+                      unsigned char *);
+static int invertImage(uint16, uint16, uint16, uint32, uint32,
+                      unsigned char *);
+
+/* Functions to reverse the sequence of samples in a scanline */
+static int reverseSamples8bits  (uint16, uint16, uint32, uint8 *, uint8 *);
+static int reverseSamples16bits (uint16, uint16, uint32, uint8 *, uint8 *);
+static int reverseSamples24bits (uint16, uint16, uint32, uint8 *, uint8 *);
+static int reverseSamples32bits (uint16, uint16, uint32, uint8 *, uint8 *);
+static int reverseSamplesBytes  (uint16, uint16, uint32, uint8 *, uint8 *);
+
+/* Functions for manipulating individual samples in an image */
+static int extractSeparateRegion(struct image_data *, struct crop_mask *,
+                                unsigned char *, unsigned char *, int);
+static int extractCompositeRegions(struct image_data *,  struct crop_mask *,
+                                  unsigned char *, unsigned char *);
+static int extractContigSamples8bits (uint8 *, uint8 *, uint32,
+                                    tsample_t, uint16, uint16, 
+                                     tsample_t, uint32, uint32);
+static int extractContigSamples16bits (uint8 *, uint8 *, uint32,
+                                     tsample_t, uint16, uint16, 
+                                      tsample_t, uint32, uint32);
+static int extractContigSamples24bits (uint8 *, uint8 *, uint32,
+                                     tsample_t, uint16, uint16, 
+                                      tsample_t, uint32, uint32);
+static int extractContigSamples32bits (uint8 *, uint8 *, uint32,
+                                     tsample_t, uint16, uint16, 
+                                      tsample_t, uint32, uint32);
+static int extractContigSamplesBytes (uint8 *, uint8 *, uint32, 
+                                      tsample_t, uint16, uint16, 
+                                     tsample_t, uint32, uint32);
+static int extractContigSamplesShifted8bits (uint8 *, uint8 *, uint32,
+                                            tsample_t, uint16, uint16,
+                                             tsample_t, uint32, uint32,
+                                             int);
+static int extractContigSamplesShifted16bits (uint8 *, uint8 *, uint32,
+                                             tsample_t, uint16, uint16, 
+                                             tsample_t, uint32, uint32,
+                                              int);
+static int extractContigSamplesShifted24bits (uint8 *, uint8 *, uint32,
+                                             tsample_t, uint16, uint16, 
+                                             tsample_t, uint32, uint32,
+                                              int);
+static int extractContigSamplesShifted32bits (uint8 *, uint8 *, uint32,
+                                             tsample_t, uint16, uint16, 
+                                             tsample_t, uint32, uint32,
+                                              int);
+static int extractContigSamplesToTileBuffer(uint8 *, uint8 *, uint32, uint32,
+                                           uint32, uint32, tsample_t, uint16,
+                                           uint16, uint16, struct dump_opts *);
+
+/* Functions to combine separate planes into interleaved planes */
+static int combineSeparateSamples8bits (uint8 *[], uint8 *, uint32, uint32,
+                                        uint16, uint16, FILE *, int, int);
+static int combineSeparateSamples16bits (uint8 *[], uint8 *, uint32, uint32,
+                                         uint16, uint16, FILE *, int, int);
+static int combineSeparateSamples24bits (uint8 *[], uint8 *, uint32, uint32,
+                                         uint16, uint16, FILE *, int, int);
+static int combineSeparateSamples32bits (uint8 *[], uint8 *, uint32, uint32,
+                                         uint16, uint16, FILE *, int, int);
+static int combineSeparateSamplesBytes (unsigned char *[], unsigned char *,
+                                       uint32, uint32, tsample_t, uint16,
+                                        FILE *, int, int);
+
+static int combineSeparateTileSamples8bits (uint8 *[], uint8 *, uint32, uint32,
+                                            uint32, uint32, uint16, uint16, 
+                                            FILE *, int, int);
+static int combineSeparateTileSamples16bits (uint8 *[], uint8 *, uint32, uint32,
+                                             uint32, uint32, uint16, uint16,
+                                             FILE *, int, int);
+static int combineSeparateTileSamples24bits (uint8 *[], uint8 *, uint32, uint32,
+                                             uint32, uint32, uint16, uint16,
+                                             FILE *, int, int);
+static int combineSeparateTileSamples32bits (uint8 *[], uint8 *, uint32, uint32,
+                                             uint32, uint32, uint16, uint16,
+                                             FILE *, int, int);
+static int combineSeparateTileSamplesBytes (unsigned char *[], unsigned char *,
+                                           uint32, uint32, uint32, uint32, 
+                                            tsample_t, uint16, FILE *, int, int);
+
+/* Dump functions for debugging */
+static void dump_info  (FILE *, int, char *, char *, ...);
+static int  dump_data  (FILE *, int, char *, unsigned char *, uint32);
+static int  dump_byte  (FILE *, int, char *, unsigned char);
+static int  dump_short (FILE *, int, char *, uint16);
+static int  dump_long  (FILE *, int, char *, uint32);
+static int  dump_wide  (FILE *, int, char *, uint64);
+static int  dump_buffer (FILE *, int, uint32, uint32, uint32, unsigned char *);
+
+/* End function declarations */
+/* Functions derived in whole or in part from tiffcp */
+/* The following functions are taken largely intact from tiffcp */
+
+static   char* usage_info[] = {
+"usage: tiffcrop [options] source1 ... sourceN  destination",
+"where options are:",
+" -h           Print this syntax listing",
+" -v           Print tiffcrop version identifier and last revision date",
+" ",
+" -a           Append to output instead of overwriting",
+" -d offset    Set initial directory offset, counting first image as one, not zero",
+" -p contig    Pack samples contiguously (e.g. RGBRGB...)",
+" -p separate  Store samples separately (e.g. RRR...GGG...BBB...)",
+" -s           Write output in strips",
+" -t           Write output in tiles",
+" -i           Ignore read errors",
+" ",
+" -r #         Make each strip have no more than # rows",
+" -w #         Set output tile width (pixels)",
+" -l #         Set output tile length (pixels)",
+" ",
+" -f lsb2msb   Force lsb-to-msb FillOrder for output",
+" -f msb2lsb   Force msb-to-lsb FillOrder for output",
+"",
+" -c lzw[:opts]         Compress output with Lempel-Ziv & Welch encoding",
+" -c zip[:opts]         Compress output with deflate encoding",
+" -c jpeg[:opts] Compress output with JPEG encoding",
+" -c packbits   Compress output with packbits encoding",
+" -c g3[:opts]  Compress output with CCITT Group 3 encoding",
+" -c g4                 Compress output with CCITT Group 4 encoding",
+" -c none       Use no compression algorithm on output",
+" ",
+"Group 3 options:",
+" 1d           Use default CCITT Group 3 1D-encoding",
+" 2d           Use optional CCITT Group 3 2D-encoding",
+" fill         Byte-align EOL codes",
+"For example, -c g3:2d:fill to get G3-2D-encoded data with byte-aligned EOLs",
+" ",
+"JPEG options:",
+" #            Set compression quality level (0-100, default 100)",
+" raw          Output color image as raw YCbCr",
+" rgb          Output color image as RGB",
+"For example, -c jpeg:rgb:50 to get JPEG-encoded RGB data with 50% comp. quality",
+" ",
+"LZW and deflate options:",
+" #            Set predictor value",
+"For example, -c lzw:2 to get LZW-encoded data with horizontal differencing",
+" ",
+"Page and selection options:",
+" -N odd|even|#,#-#,#|last         sequences and ranges of images within file to process",
+"             The words odd or even may be used to specify all odd or even numbered images.",
+"             The word last may be used in place of a number in the sequence to indicate.",
+"             The final image in the file without knowing how many images there are.",
+"             Numbers are counted from one even though TIFF IFDs are counted from zero.",
+" ",
+" -E t|l|r|b  edge to use as origin for width and length of crop region",
+" -U units    [in, cm, px ] inches, centimeters or pixels",
+" ",
+" -m #,#,#,#  margins from edges for selection: top, left, bottom, right separated by commas",
+" -X #        horizontal dimension of region to extract expressed in current units",
+" -Y #        vertical dimension of region to extract expressed in current units",
+" -Z #:#,#:#  zones of the image designated as position X of Y,",
+"             eg 1:3 would be first of three equal portions measured from reference edge",
+" -z x1,y1,x2,y2:...:xN,yN,xN+1,yN+1",
+"             regions of the image designated by upper left and lower right coordinates",
+"",
+"Export grouping options:",
+" -e c|d|i|m|s    export mode for images and selections from input images.",
+"                 When exporting a composite image from multiple zones or regions",
+"                 (combined and image modes), the selections must have equal sizes",
+"                 for the axis perpendicular to the edge specified with -E.",
+"    c|combined   All images and selections are written to a single file (default).",
+"                 with multiple selections from one image combined into a single image.",
+"    d|divided    All images and selections are written to a single file",
+"                 with each selection from one image written to a new image.",
+"    i|image      Each input image is written to a new file (numeric filename sequence)",
+"                 with multiple selections from the image combined into one image.",
+"    m|multiple   Each input image is written to a new file (numeric filename sequence)",
+"                 with each selection from the image written to a new image.",
+"    s|separated  Individual selections from each image are written to separate files.",
+"",
+"Output options:",
+" -H #        Set horizontal resolution of output images to #",
+" -V #        Set vertical resolution of output images to #",
+" -J #        Set horizontal margin of output page to # expressed in current units",
+"             when sectioning image into columns x rows using the -S cols:rows option",
+" -K #        Set verticalal margin of output page to # expressed in current units",
+"             when sectioning image into columns x rows using the -S cols:rows option",
+" ",
+" -O orient    orientation for output image, portrait, landscape, auto",
+" -P page      page size for output image segments, eg letter, legal, tabloid, etc",
+"              use #.#x#.# to specify a custom page size in the currently defined units",
+"              where #.# represents the width and length",        
+" -S cols:rows Divide the image into equal sized segments using cols across and rows down.",
+" ",
+" -F hor|vert|both",
+"             flip (mirror) image or region horizontally, vertically, or both",
+" -R #        [90,180,or 270] degrees clockwise rotation of image or extracted region",
+" -I [black|white|data|both]",
+"             invert color space, eg dark to light for bilevel and grayscale images",
+"             If argument is white or black, set the PHOTOMETRIC_INTERPRETATION ",
+"             tag to MinIsBlack or MinIsWhite without altering the image data",
+"             If the argument is data or both, the image data are modified:",
+"             both inverts the data and the PHOTOMETRIC_INTERPRETATION tag,",
+"             data inverts the data but not the PHOTOMETRIC_INTERPRETATION tag",
+" ",
+"-D opt1:value1,opt2:value2,opt3:value3:opt4:value4",
+"             Debug/dump program progress and/or data to non-TIFF files.",
+"             Options include the following and must be joined as a comma",
+"             separate list. The use of this option is generally limited to",
+"             program debugging and development of future options.",
+" ",
+"   debug:N   Display limited program progress indicators where larger N",
+"             increase the level of detail. Note: Tiffcrop may be compiled with",
+"             -DDEVELMODE to enable additional very low level debug reporting.",
+"",
+"   Format:txt|raw  Format any logged data as ASCII text or raw binary ",
+"             values. ASCII text dumps include strings of ones and zeroes",
+"             representing the binary values in the image data plus identifying headers.",
+" ",
+"   level:N   Specify the level of detail presented in the dump files.",
+"             This can vary from dumps of the entire input or output image data to dumps",
+"             of data processed by specific functions. Current range of levels is 1 to 3.",
+" ",
+"   input:full-path-to-directory/input-dumpname",
+" ",
+"   output:full-path-to-directory/output-dumpnaem",
+" ",
+"             When dump files are being written, each image will be written to a separate",
+"             file with the name built by adding a numeric sequence value to the dumpname",
+"             and an extension of .txt for ASCII dumps or .bin for binary dumps.",
+" ",
+"             The four debug/dump options are independent, though it makes little sense to",
+"             specify a dump file without specifying a detail level.",
+" ",
+NULL
+};
+
+/* This function could be modified to pass starting sample offset 
+ * and number of samples as args to select fewer than spp
+ * from input image. These would then be passed to individual 
+ * extractContigSampleXX routines.
+ */
+static int readContigTilesIntoBuffer (TIFF* in, uint8* buf, 
+                                      uint32 imagelength, 
+                                      uint32 imagewidth, 
+                                      uint32 tw, uint32 tl,
+                                      tsample_t spp, uint16 bps)
+  {
+  int status = 1;
+  tsample_t sample = 0;
+  tsample_t count = spp; 
+  uint32 row, col, trow;
+  uint32 nrow, ncol;
+  uint32 dst_rowsize, shift_width;
+  uint32 bytes_per_sample, bytes_per_pixel;
+  uint32 trailing_bits, prev_trailing_bits;
+  uint32 tile_rowsize  = TIFFTileRowSize(in);
+  uint32 src_offset, dst_offset;
+  uint32 row_offset, col_offset;
+  uint8 *bufp = (uint8*) buf;
+  unsigned char *src = NULL;
+  unsigned char *dst = NULL;
+  tsize_t tbytes = 0, tile_buffsize = 0;
+  tsize_t tilesize = TIFFTileSize(in);
+  unsigned char *tilebuf = NULL;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+
+  if ((bps % 8) == 0)
+    shift_width = 0;
+  else
+    {
+    if (bytes_per_pixel < (bytes_per_sample + 1))
+      shift_width = bytes_per_pixel;
+    else
+      shift_width = bytes_per_sample + 1;
+    }
+
+  tile_buffsize = tilesize;
+
+  if (tilesize < (tsize_t)(tl * tile_rowsize))
+    {
+#ifdef DEBUG2
+    TIFFError("readContigTilesIntoBuffer",
+             "Tilesize %lu is too small, using alternate calculation %u",
+              tilesize, tl * tile_rowsize);
+#endif
+    tile_buffsize = tl * tile_rowsize;
+    } 
+
+  tilebuf = _TIFFmalloc(tile_buffsize);
+  if (tilebuf == 0)
+    return 0;
+
+  dst_rowsize = ((imagewidth * bps * spp) + 7) / 8;  
+  for (row = 0; row < imagelength; row += tl)
+    {
+    nrow = (row + tl > imagelength) ? imagelength - row : tl;
+    for (col = 0; col < imagewidth; col += tw)
+      {
+      tbytes = TIFFReadTile(in, tilebuf, col, row, 0, 0);
+      if (tbytes < tilesize  && !ignore)
+        {
+       TIFFError(TIFFFileName(in),
+                 "Error, can't read tile at row %lu col %lu, Read %lu bytes of %lu",
+                 (unsigned long) col, (unsigned long) row, (unsigned long)tbytes,
+                  (unsigned long)tilesize);
+                 status = 0;
+                  _TIFFfree(tilebuf);
+                 return status;
+       }
+      
+      row_offset = row * dst_rowsize;
+      col_offset = ((col * bps * spp) + 7)/ 8;
+      bufp = buf + row_offset + col_offset;
+
+      if (col + tw > imagewidth)
+       ncol = imagewidth - col;
+      else
+        ncol = tw;
+
+      /* Each tile scanline will start on a byte boundary but it
+       * has to be merged into the scanline for the entire
+       * image buffer and the previous segment may not have
+       * ended on a byte boundary
+       */
+      /* Optimization for common bit depths, all samples */
+      if (((bps % 8) == 0) && (count == spp))
+        {
+       for (trow = 0; trow < nrow; trow++)
+          {
+         src_offset = trow * tile_rowsize;
+         _TIFFmemcpy (bufp, tilebuf + src_offset, (ncol * spp * bps) / 8);
+          bufp += (imagewidth * bps * spp) / 8;
+         }
+        }
+      else
+        {
+       /* Bit depths not a multiple of 8 and/or extract fewer than spp samples */
+        prev_trailing_bits = trailing_bits = 0;
+        trailing_bits = (ncol * bps * spp) % 8;
+
+       /*      for (trow = 0; tl < nrow; trow++) */
+       for (trow = 0; trow < nrow; trow++)
+          {
+         src_offset = trow * tile_rowsize;
+          src = tilebuf + src_offset;
+         dst_offset = (row + trow) * dst_rowsize;
+          dst = buf + dst_offset + col_offset;
+          switch (shift_width)
+            {
+            case 0: if (extractContigSamplesBytes (src, dst, ncol, sample,
+                                                   spp, bps, count, 0, ncol))
+                      {
+                     TIFFError("readContigTilesIntoBuffer",
+                                "Unable to extract row %d from tile %lu", 
+                               row, (unsigned long)TIFFCurrentTile(in));
+                     return 1;
+                     }
+                   break;
+            case 1: if (bps == 1)
+                      { 
+                      if (extractContigSamplesShifted8bits (src, dst, ncol,
+                                                            sample, spp,
+                                                            bps, count,
+                                                            0, ncol,
+                                                            prev_trailing_bits))
+                        {
+                       TIFFError("readContigTilesIntoBuffer",
+                                  "Unable to extract row %d from tile %lu", 
+                                 row, (unsigned long)TIFFCurrentTile(in));
+                       return 1;
+                       }
+                     break;
+                     }
+                    else
+                      if (extractContigSamplesShifted16bits (src, dst, ncol,
+                                                             sample, spp,
+                                                             bps, count,
+                                                             0, ncol,
+                                                             prev_trailing_bits))
+                        {
+                       TIFFError("readContigTilesIntoBuffer",
+                                  "Unable to extract row %d from tile %lu", 
+                                 row, (unsigned long)TIFFCurrentTile(in));
+                       return 1;
+                       }
+                   break;
+            case 2: if (extractContigSamplesShifted24bits (src, dst, ncol,
+                                                           sample, spp,
+                                                           bps, count,
+                                                           0, ncol,
+                                                           prev_trailing_bits))
+                      {
+                     TIFFError("readContigTilesIntoBuffer",
+                                "Unable to extract row %d from tile %lu", 
+                               row, (unsigned long)TIFFCurrentTile(in));
+                     return 1;
+                     }
+                   break;
+            case 3:
+            case 4:
+            case 5: if (extractContigSamplesShifted32bits (src, dst, ncol,
+                                                           sample, spp,
+                                                           bps, count,
+                                                           0, ncol,
+                                                           prev_trailing_bits))
+                      {
+                     TIFFError("readContigTilesIntoBuffer",
+                                "Unable to extract row %d from tile %lu", 
+                               row, (unsigned long)TIFFCurrentTile(in));
+                     return 1;
+                     }
+                   break;
+            default: TIFFError("readContigTilesIntoBuffer", "Unsupported bit depth %d", bps);
+                    return 1;
+           }
+          }
+        prev_trailing_bits += trailing_bits;
+        if (prev_trailing_bits > 7)
+         prev_trailing_bits-= 8;
+       }
+      }
+    }
+
+  _TIFFfree(tilebuf);
+  return status;
+  }
+
+static int  readSeparateTilesIntoBuffer (TIFF* in, uint8 *obuf, 
+                                        uint32 imagelength, uint32 imagewidth, 
+                                         uint32 tw, uint32 tl,
+                                         uint16 spp, uint16 bps)
+  {
+  int     i, status = 1, sample;
+  int     shift_width, bytes_per_pixel;
+  uint16  bytes_per_sample;
+  uint32  row, col;     /* Current row and col of image */
+  uint32  nrow, ncol;   /* Number of rows and cols in current tile */
+  uint32  row_offset, col_offset; /* Output buffer offsets */
+  tsize_t tbytes = 0, tilesize = TIFFTileSize(in);
+  tsample_t s;
+  uint8*  bufp = (uint8*)obuf;
+  unsigned char *srcbuffs[MAX_SAMPLES];
+  unsigned char *tbuff = NULL;
+
+  bytes_per_sample = (bps + 7) / 8;
+
+  for (sample = 0; (sample < spp) && (sample < MAX_SAMPLES); sample++)
+    {
+    srcbuffs[sample] = NULL;
+    tbuff = (unsigned char *)_TIFFmalloc(tilesize + 8);
+    if (!tbuff)
+      {
+      TIFFError ("readSeparateTilesIntoBuffer", 
+                 "Unable to allocate tile read buffer for sample %d", sample);
+      for (i = 0; i < sample; i++)
+        _TIFFfree (srcbuffs[i]);
+      return 0;
+      }
+    srcbuffs[sample] = tbuff;
+    } 
+  /* Each tile contains only the data for a single plane
+   * arranged in scanlines of tw * bytes_per_sample bytes.
+   */
+  for (row = 0; row < imagelength; row += tl)
+    {
+    nrow = (row + tl > imagelength) ? imagelength - row : tl;
+    for (col = 0; col < imagewidth; col += tw)
+      {
+      for (s = 0; s < spp; s++)
+        {  /* Read each plane of a tile set into srcbuffs[s] */
+       tbytes = TIFFReadTile(in, srcbuffs[s], col, row, 0, s);
+        if (tbytes < 0  && !ignore)
+          {
+         TIFFError(TIFFFileName(in),
+                 "Error, can't read tile for row %lu col %lu, "
+                "sample %lu",
+                (unsigned long) col, (unsigned long) row,
+                (unsigned long) s);
+                status = 0;
+          for (sample = 0; (sample < spp) && (sample < MAX_SAMPLES); sample++)
+            {
+            tbuff = srcbuffs[sample];
+            if (tbuff != NULL)
+              _TIFFfree(tbuff);
+            }
+          return status;
+         }
+       }
+     /* Tiles on the right edge may be padded out to tw 
+      * which must be a multiple of 16.
+      * Ncol represents the visible (non padding) portion.  
+      */
+      if (col + tw > imagewidth)
+        ncol = imagewidth - col;
+      else
+        ncol = tw;
+
+      row_offset = row * (((imagewidth * spp * bps) + 7) / 8);
+      col_offset = ((col * spp * bps) + 7) / 8;
+      bufp = obuf + row_offset + col_offset;
+
+      if ((bps % 8) == 0)
+        {
+        if (combineSeparateTileSamplesBytes(srcbuffs, bufp, ncol, nrow, imagewidth,
+                                           tw, spp, bps, NULL, 0, 0))
+         {
+          status = 0;
+          break;
+         }
+       }
+      else
+        {
+        bytes_per_pixel  = ((bps * spp) + 7) / 8;
+        if (bytes_per_pixel < (bytes_per_sample + 1))
+          shift_width = bytes_per_pixel;
+        else
+          shift_width = bytes_per_sample + 1;
+
+        switch (shift_width)
+          {
+          case 1: if (combineSeparateTileSamples8bits (srcbuffs, bufp, ncol, nrow,
+                                                       imagewidth, tw, spp, bps, 
+                                                      NULL, 0, 0))
+                   {
+                    status = 0;
+                    break;
+                   }
+                 break;
+          case 2: if (combineSeparateTileSamples16bits (srcbuffs, bufp, ncol, nrow,
+                                                       imagewidth, tw, spp, bps, 
+                                                      NULL, 0, 0))
+                   {
+                    status = 0;
+                    break;
+                   }
+                 break;
+          case 3: if (combineSeparateTileSamples24bits (srcbuffs, bufp, ncol, nrow,
+                                                       imagewidth, tw, spp, bps, 
+                                                      NULL, 0, 0))
+                   {
+                    status = 0;
+                    break;
+                           }
+                  break;
+          case 4: 
+          case 5:
+          case 6:
+          case 7:
+          case 8: if (combineSeparateTileSamples32bits (srcbuffs, bufp, ncol, nrow,
+                                                       imagewidth, tw, spp, bps, 
+                                                      NULL, 0, 0))
+                   {
+                    status = 0;
+                    break;
+                   }
+                 break;
+          default: TIFFError ("readSeparateTilesIntoBuffer", "Unsupported bit depth: %d", bps);
+                  status = 0;
+                  break;
+          }
+        }
+      }
+    }
+
+  for (sample = 0; (sample < spp) && (sample < MAX_SAMPLES); sample++)
+    {
+    tbuff = srcbuffs[sample];
+    if (tbuff != NULL)
+      _TIFFfree(tbuff);
+    }
+  return status;
+  }
+
+static int writeBufferToContigStrips(TIFF* out, uint8* buf, uint32 imagelength)
+  {
+  uint32 row, nrows, rowsperstrip;
+  tstrip_t strip = 0;
+  tsize_t stripsize;
+
+  TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
+  for (row = 0; row < imagelength; row += rowsperstrip)
+    {
+    nrows = (row + rowsperstrip > imagelength) ?
+            imagelength - row : rowsperstrip;
+    stripsize = TIFFVStripSize(out, nrows);
+    if (TIFFWriteEncodedStrip(out, strip++, buf, stripsize) < 0)
+      {
+      TIFFError(TIFFFileName(out), "Error, can't write strip %u", strip - 1);
+      return 1;
+      }
+    buf += stripsize;
+    }
+
+  return 0;
+  }
+
+/* Abandon plans to modify code so that plannar orientation separate images
+ * do not have all samples for each channel written before all samples
+ * for the next channel have been abandoned.
+ * Libtiff internals seem to depend on all data for a given sample
+ * being contiguous within a strip or tile when PLANAR_CONFIG is 
+ * separate. All strips or tiles of a given plane are written
+ * before any strips or tiles of a different plane are stored.
+ */
+static int 
+writeBufferToSeparateStrips (TIFF* out, uint8* buf, 
+                            uint32 length, uint32 width, uint16 spp,
+                            struct dump_opts *dump)
+  {
+  uint8   *src;
+  uint16   bps;
+  uint32   row, nrows, rowsize, rowsperstrip;
+  uint32   bytes_per_sample;
+  tsample_t s;
+  tstrip_t strip = 0;
+  tsize_t  stripsize = TIFFStripSize(out);
+  tsize_t  rowstripsize,  scanlinesize = TIFFScanlineSize(out);
+  tsize_t  total_bytes = 0;
+  tdata_t  obuf;
+
+  (void) TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
+  (void) TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
+  bytes_per_sample = (bps + 7) / 8;
+  rowsize = ((bps * spp * width) + 7) / 8; /* source has interleaved samples */
+  rowstripsize = rowsperstrip * bytes_per_sample * (width + 1); 
+
+  obuf = _TIFFmalloc (rowstripsize);
+  if (obuf == NULL)
+    return 1;
+  
+  for (s = 0; s < spp; s++)
+    {
+    for (row = 0; row < length; row += rowsperstrip)
+      {
+      nrows = (row + rowsperstrip > length) ? length - row : rowsperstrip;
+
+      stripsize = TIFFVStripSize(out, nrows);
+      src = buf + (row * rowsize);
+      total_bytes += stripsize;
+      memset (obuf, '\0', rowstripsize);
+      if (extractContigSamplesToBuffer(obuf, src, nrows, width, s, spp, bps, dump))
+        {
+        _TIFFfree(obuf);
+        return 1;
+       }
+      if ((dump->outfile != NULL) && (dump->level == 1))
+        {
+        dump_info(dump->outfile, dump->format,"", 
+                  "Sample %2d, Strip: %2d, bytes: %4d, Row %4d, bytes: %4d, Input offset: %6d", 
+                  s + 1, strip + 1, stripsize, row + 1, scanlinesize, src - buf);
+        dump_buffer(dump->outfile, dump->format, nrows, scanlinesize, row, obuf);
+       }
+
+      if (TIFFWriteEncodedStrip(out, strip++, obuf, stripsize) < 0)
+        {
+       TIFFError(TIFFFileName(out), "Error, can't write strip %u", strip - 1);
+       _TIFFfree(obuf);
+       return 1;
+       }
+      }
+    }      
+
+  _TIFFfree(obuf);
+  return 0;
+}
+
+/* Extract all planes from contiguous buffer into a single tile buffer 
+ * to be written out as a tile.
+ */
+static int writeBufferToContigTiles (TIFF* out, uint8* buf, uint32 imagelength,
+                                      uint32 imagewidth, tsample_t spp, 
+                                       struct dump_opts* dump)
+  {
+  uint16 bps;
+  uint32 tl, tw;
+  uint32 row, col, nrow, ncol;
+  uint32 src_rowsize, col_offset;
+  uint32 tile_rowsize  = TIFFTileRowSize(out);
+  uint8* bufp = (uint8*) buf;
+  tsize_t tile_buffsize = 0;
+  tsize_t tilesize = TIFFTileSize(out);
+  unsigned char *tilebuf = NULL;
+
+  TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
+  TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
+  TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
+
+  tile_buffsize = tilesize;
+  if (tilesize < (tsize_t)(tl * tile_rowsize))
+    {
+#ifdef DEBUG2
+    TIFFError("writeBufferToContigTiles",
+             "Tilesize %lu is too small, using alternate calculation %u",
+              tilesize, tl * tile_rowsize);
+#endif
+    tile_buffsize = tl * tile_rowsize;
+    }
+
+  tilebuf = _TIFFmalloc(tile_buffsize);
+  if (tilebuf == 0)
+    return 1;
+
+  src_rowsize = ((imagewidth * spp * bps) + 7) / 8;
+  for (row = 0; row < imagelength; row += tl)
+    {
+    nrow = (row + tl > imagelength) ? imagelength - row : tl;
+    for (col = 0; col < imagewidth; col += tw)
+      {
+      /* Calculate visible portion of tile. */
+      if (col + tw > imagewidth)
+       ncol = imagewidth - col;
+      else
+        ncol = tw;
+
+      col_offset = (((col * bps * spp) + 7) / 8);
+      bufp = buf + (row * src_rowsize) + col_offset;
+      if (extractContigSamplesToTileBuffer(tilebuf, bufp, nrow, ncol, imagewidth,
+                                          tw, 0, spp, spp, bps, dump) > 0)
+        {
+       TIFFError("writeBufferToContigTiles", 
+                  "Unable to extract data to tile for row %lu, col %lu",
+                  (unsigned long) row, (unsigned long)col);
+       _TIFFfree(tilebuf);
+       return 1;
+        }
+
+      if (TIFFWriteTile(out, tilebuf, col, row, 0, 0) < 0)
+        {
+       TIFFError("writeBufferToContigTiles",
+                 "Cannot write tile at %lu %lu",
+                 (unsigned long) col, (unsigned long) row);
+        _TIFFfree(tilebuf);
+       return 1;
+       }
+      }
+    }
+  _TIFFfree(tilebuf);
+
+  return 0;
+  } /* end writeBufferToContigTiles */
+
+/* Extract each plane from contiguous buffer into a single tile buffer 
+ * to be written out as a tile.
+ */
+static int writeBufferToSeparateTiles (TIFF* out, uint8* buf, uint32 imagelength,
+                                      uint32 imagewidth, tsample_t spp, 
+                                       struct dump_opts * dump)
+  {
+  tdata_t obuf = _TIFFmalloc(TIFFTileSize(out));
+  uint32 tl, tw;
+  uint32 row, col, nrow, ncol;
+  uint32 src_rowsize, col_offset;
+  uint16 bps;
+  tsample_t s;
+  uint8* bufp = (uint8*) buf;
+
+  if (obuf == NULL)
+    return 1;
+
+  TIFFGetField(out, TIFFTAG_TILELENGTH, &tl);
+  TIFFGetField(out, TIFFTAG_TILEWIDTH, &tw);
+  TIFFGetField(out, TIFFTAG_BITSPERSAMPLE, &bps);
+  src_rowsize = ((imagewidth * spp * bps) + 7) / 8;
+         
+  for (row = 0; row < imagelength; row += tl)
+    {
+    nrow = (row + tl > imagelength) ? imagelength - row : tl;
+    for (col = 0; col < imagewidth; col += tw)
+      {
+      /* Calculate visible portion of tile. */
+      if (col + tw > imagewidth)
+       ncol = imagewidth - col;
+      else
+        ncol = tw;
+
+      col_offset = (((col * bps * spp) + 7) / 8);
+      bufp = buf + (row * src_rowsize) + col_offset;
+
+      for (s = 0; s < spp; s++)
+        {
+       if (extractContigSamplesToTileBuffer(obuf, bufp, nrow, ncol, imagewidth,
+                                            tw, s, 1, spp, bps, dump) > 0)
+          {
+         TIFFError("writeBufferToSeparateTiles", 
+                    "Unable to extract data to tile for row %lu, col %lu sample %d",
+                    (unsigned long) row, (unsigned long)col, (int)s);
+         _TIFFfree(obuf);
+         return 1;
+          }
+
+       if (TIFFWriteTile(out, obuf, col, row, 0, s) < 0)
+          {
+          TIFFError("writeBufferToseparateTiles",
+                    "Cannot write tile at %lu %lu sample %lu",
+                    (unsigned long) col, (unsigned long) row,
+                    (unsigned long) s);
+          _TIFFfree(obuf);
+          return 1;
+         }
+       }
+      }
+    }
+  _TIFFfree(obuf);
+
+  return 0;
+  } /* end writeBufferToSeparateTiles */
+
+static void
+processG3Options(char* cp)
+{
+       if( (cp = strchr(cp, ':')) ) {
+               if (defg3opts == (uint32) -1)
+                       defg3opts = 0;
+               do {
+                       cp++;
+                       if (strneq(cp, "1d", 2))
+                               defg3opts &= ~GROUP3OPT_2DENCODING;
+                       else if (strneq(cp, "2d", 2))
+                               defg3opts |= GROUP3OPT_2DENCODING;
+                       else if (strneq(cp, "fill", 4))
+                               defg3opts |= GROUP3OPT_FILLBITS;
+                       else
+                               usage();
+               } while( (cp = strchr(cp, ':')) );
+       }
+}
+
+static int
+processCompressOptions(char* opt)
+  {
+  char* cp = NULL;
+
+  if (strneq(opt, "none",4))
+    {
+    defcompression = COMPRESSION_NONE;
+    }
+  else if (streq(opt, "packbits"))
+    {
+    defcompression = COMPRESSION_PACKBITS;
+    }
+  else if (strneq(opt, "jpeg", 4))
+    {
+    cp = strchr(opt, ':');
+    defcompression = COMPRESSION_JPEG;
+
+    while (cp)
+      {
+      if (isdigit((int)cp[1]))
+       quality = atoi(cp + 1);
+      else if (strneq(cp + 1, "raw", 3 ))
+       jpegcolormode = JPEGCOLORMODE_RAW;
+      else if (strneq(cp + 1, "rgb", 3 ))
+       jpegcolormode = JPEGCOLORMODE_RGB;
+      else
+       usage();
+      cp = strchr(cp + 1, ':');
+      }
+    }
+  else if (strneq(opt, "g3", 2))
+    {
+    processG3Options(opt);
+    defcompression = COMPRESSION_CCITTFAX3;
+    }
+  else if (streq(opt, "g4"))
+    {
+    defcompression = COMPRESSION_CCITTFAX4;
+    }
+  else if (strneq(opt, "lzw", 3))
+    {
+    cp = strchr(opt, ':');
+    if (cp)
+      defpredictor = atoi(cp+1);
+    defcompression = COMPRESSION_LZW;
+    }
+  else if (strneq(opt, "zip", 3))
+    {
+    cp = strchr(opt, ':');
+    if (cp)
+      defpredictor = atoi(cp+1);
+    defcompression = COMPRESSION_ADOBE_DEFLATE;
+   }
+  else
+    return (0);
+
+  return (1);
+  }
+
+static void
+usage(void)
+  {
+  int i;
+
+  fprintf(stderr, "\n%s\n", TIFFGetVersion());
+  for (i = 0; usage_info[i] != NULL; i++)
+    fprintf(stderr, "%s\n", usage_info[i]);
+  exit(-1);
+  }
+
+#define        CopyField(tag, v) \
+    if (TIFFGetField(in, tag, &v)) TIFFSetField(out, tag, v)
+#define        CopyField2(tag, v1, v2) \
+    if (TIFFGetField(in, tag, &v1, &v2)) TIFFSetField(out, tag, v1, v2)
+#define        CopyField3(tag, v1, v2, v3) \
+    if (TIFFGetField(in, tag, &v1, &v2, &v3)) TIFFSetField(out, tag, v1, v2, v3)
+#define        CopyField4(tag, v1, v2, v3, v4) \
+    if (TIFFGetField(in, tag, &v1, &v2, &v3, &v4)) TIFFSetField(out, tag, v1, v2, v3, v4)
+
+static void
+cpTag(TIFF* in, TIFF* out, uint16 tag, uint16 count, TIFFDataType type)
+{
+       switch (type) {
+       case TIFF_SHORT:
+               if (count == 1) {
+                       uint16 shortv;
+                       CopyField(tag, shortv);
+               } else if (count == 2) {
+                       uint16 shortv1, shortv2;
+                       CopyField2(tag, shortv1, shortv2);
+               } else if (count == 4) {
+                       uint16 *tr, *tg, *tb, *ta;
+                       CopyField4(tag, tr, tg, tb, ta);
+               } else if (count == (uint16) -1) {
+                       uint16 shortv1;
+                       uint16* shortav;
+                       CopyField2(tag, shortv1, shortav);
+               }
+               break;
+       case TIFF_LONG:
+               { uint32 longv;
+                 CopyField(tag, longv);
+               }
+               break;
+       case TIFF_RATIONAL:
+               if (count == 1) {
+                       float floatv;
+                       CopyField(tag, floatv);
+               } else if (count == (uint16) -1) {
+                       float* floatav;
+                       CopyField(tag, floatav);
+               }
+               break;
+       case TIFF_ASCII:
+               { char* stringv;
+                 CopyField(tag, stringv);
+               }
+               break;
+       case TIFF_DOUBLE:
+               if (count == 1) {
+                       double doublev;
+                       CopyField(tag, doublev);
+               } else if (count == (uint16) -1) {
+                       double* doubleav;
+                       CopyField(tag, doubleav);
+               }
+               break;
+          default:
+                TIFFError(TIFFFileName(in),
+                          "Data type %d is not supported, tag %d skipped",
+                          tag, type);
+       }
+}
+
+static struct cpTag {
+       uint16  tag;
+       uint16  count;
+       TIFFDataType type;
+} tags[] = {
+       { TIFFTAG_SUBFILETYPE,          1, TIFF_LONG },
+       { TIFFTAG_THRESHHOLDING,        1, TIFF_SHORT },
+       { TIFFTAG_DOCUMENTNAME,         1, TIFF_ASCII },
+       { TIFFTAG_IMAGEDESCRIPTION,     1, TIFF_ASCII },
+       { TIFFTAG_MAKE,                 1, TIFF_ASCII },
+       { TIFFTAG_MODEL,                1, TIFF_ASCII },
+       { TIFFTAG_MINSAMPLEVALUE,       1, TIFF_SHORT },
+       { TIFFTAG_MAXSAMPLEVALUE,       1, TIFF_SHORT },
+       { TIFFTAG_XRESOLUTION,          1, TIFF_RATIONAL },
+       { TIFFTAG_YRESOLUTION,          1, TIFF_RATIONAL },
+       { TIFFTAG_PAGENAME,             1, TIFF_ASCII },
+       { TIFFTAG_XPOSITION,            1, TIFF_RATIONAL },
+       { TIFFTAG_YPOSITION,            1, TIFF_RATIONAL },
+       { TIFFTAG_RESOLUTIONUNIT,       1, TIFF_SHORT },
+       { TIFFTAG_SOFTWARE,             1, TIFF_ASCII },
+       { TIFFTAG_DATETIME,             1, TIFF_ASCII },
+       { TIFFTAG_ARTIST,               1, TIFF_ASCII },
+       { TIFFTAG_HOSTCOMPUTER,         1, TIFF_ASCII },
+       { TIFFTAG_WHITEPOINT,           (uint16) -1, TIFF_RATIONAL },
+       { TIFFTAG_PRIMARYCHROMATICITIES,(uint16) -1,TIFF_RATIONAL },
+       { TIFFTAG_HALFTONEHINTS,        2, TIFF_SHORT },
+       { TIFFTAG_INKSET,               1, TIFF_SHORT },
+       { TIFFTAG_DOTRANGE,             2, TIFF_SHORT },
+       { TIFFTAG_TARGETPRINTER,        1, TIFF_ASCII },
+       { TIFFTAG_SAMPLEFORMAT,         1, TIFF_SHORT },
+       { TIFFTAG_YCBCRCOEFFICIENTS,    (uint16) -1,TIFF_RATIONAL },
+       { TIFFTAG_YCBCRSUBSAMPLING,     2, TIFF_SHORT },
+       { TIFFTAG_YCBCRPOSITIONING,     1, TIFF_SHORT },
+       { TIFFTAG_REFERENCEBLACKWHITE,  (uint16) -1,TIFF_RATIONAL },
+       { TIFFTAG_EXTRASAMPLES,         (uint16) -1, TIFF_SHORT },
+       { TIFFTAG_SMINSAMPLEVALUE,      1, TIFF_DOUBLE },
+       { TIFFTAG_SMAXSAMPLEVALUE,      1, TIFF_DOUBLE },
+       { TIFFTAG_STONITS,              1, TIFF_DOUBLE },
+};
+#define        NTAGS   (sizeof (tags) / sizeof (tags[0]))
+
+#define        CopyTag(tag, count, type)       cpTag(in, out, tag, count, type)
+
+/* Functions written by Richard Nolde, with exceptions noted. */
+void  process_command_opts (int argc, char *argv[], char *mp, char *mode, uint32 *dirnum,
+                           uint16 *defconfig, uint16 *deffillorder, uint32 *deftilewidth,
+                            uint32 *deftilelength, uint32 *defrowsperstrip,
+                           struct crop_mask *crop_data, struct pagedef *page, 
+                            struct dump_opts *dump,
+                            unsigned int     *imagelist, unsigned int   *image_count )
+    {
+    int   c, good_args = 0;
+    char *opt_offset   = NULL;    /* Position in string of value sought */
+    char *opt_ptr      = NULL;    /* Pointer to next token in option set */
+    char *sep          = NULL;    /* Pointer to a token separator */
+    unsigned int  i, j, start, end;
+    extern int   optind;
+    extern char* optarg;
+
+    *mp++ = 'w';
+    *mp = '\0';
+    while ((c = getopt(argc, argv,
+       "ac:d:e:f:hil:m:p:r:stvw:z:BCD:E:F:H:I:J:K:LMN:O:P:R:S:U:V:X:Y:Z:")) != -1)
+      {
+    good_args++;
+    switch (c) {
+      case 'a': mode[0] = 'a'; /* append to output */
+               break;
+      case 'c':        if (!processCompressOptions(optarg)) /* compression scheme */
+                 {
+                 TIFFError ("Unknown compression option", "%s", optarg);
+                  TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);
+                  }
+               break;
+      case 'd':        start = strtoul(optarg, NULL, 0); /* initial IFD offset */
+               if (start == 0)
+                  {
+                 TIFFError ("","Directory offset must be greater than zero");
+                 TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);
+                 }
+               *dirnum = start - 1;
+               break;
+      case 'e': switch (tolower(optarg[0])) /* image export modes*/
+                  {
+                 case 'c': crop_data->exp_mode = ONE_FILE_COMPOSITE;
+                           crop_data->img_mode = COMPOSITE_IMAGES;
+                           break; /* Composite */
+                 case 'd': crop_data->exp_mode = ONE_FILE_SEPARATED;
+                           crop_data->img_mode = SEPARATED_IMAGES;
+                           break; /* Divided */
+                 case 'i': crop_data->exp_mode = FILE_PER_IMAGE_COMPOSITE;
+                           crop_data->img_mode = COMPOSITE_IMAGES;
+                           break; /* Image */
+                 case 'm': crop_data->exp_mode = FILE_PER_IMAGE_SEPARATED;
+                           crop_data->img_mode = SEPARATED_IMAGES;
+                           break; /* Multiple */
+                 case 's': crop_data->exp_mode = FILE_PER_SELECTION;
+                           crop_data->img_mode = SEPARATED_IMAGES;
+                           break; /* Sections */
+                 default:  TIFFError ("Unknown export mode","%s", optarg);
+                            TIFFError ("For valid options type", "tiffcrop -h");
+                            exit (-1);
+                  }
+               break;
+      case 'f':        if (streq(optarg, "lsb2msb"))      /* fill order */
+                 *deffillorder = FILLORDER_LSB2MSB;
+               else if (streq(optarg, "msb2lsb"))
+                 *deffillorder = FILLORDER_MSB2LSB;
+               else
+                 {
+                 TIFFError ("Unknown fill order", "%s", optarg);
+                  TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);
+                  }
+               break;
+      case 'h':        usage();
+               break;
+      case 'i':        ignore = TRUE;          /* ignore errors */
+               break;
+      case 'l':        outtiled = TRUE;         /* tile length */
+               *deftilelength = atoi(optarg);
+               break;
+      case 'p': /* planar configuration */
+               if (streq(optarg, "separate"))
+                 *defconfig = PLANARCONFIG_SEPARATE;
+               else if (streq(optarg, "contig"))
+                 *defconfig = PLANARCONFIG_CONTIG;
+               else
+                 {
+                 TIFFError ("Unkown planar configuration", "%s", optarg);
+                  TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);
+                  }
+               break;
+      case 'r':        /* rows/strip */
+               *defrowsperstrip = atol(optarg);
+               break;
+      case 's':        /* generate stripped output */
+               outtiled = FALSE;
+               break;
+      case 't':        /* generate tiled output */
+               outtiled = TRUE;
+               break;
+      case 'v': TIFFError("Library Release", "%s", TIFFGetVersion());
+                TIFFError ("Tiffcrop version", "%s, last updated: %s", 
+                          tiffcrop_version_id, tiffcrop_rev_date);
+               TIFFError ("Tiffcp code", "Copyright (c) 1988-1997 Sam Leffler");
+               TIFFError ("           ", "Copyright (c) 1991-1997 Silicon Graphics, Inc");
+                TIFFError ("Tiffcrop additions", "Copyright (c) 2007-2010 Richard Nolde");
+               exit (0);
+               break;
+      case 'w':        /* tile width */
+               outtiled = TRUE;
+               *deftilewidth = atoi(optarg);
+               break;
+      case 'z': /* regions of an image specified as x1,y1,x2,y2:x3,y3,x4,y4 etc */
+               crop_data->crop_mode |= CROP_REGIONS;
+               for (i = 0, opt_ptr = strtok (optarg, ":");
+                   ((opt_ptr != NULL) &&  (i < MAX_REGIONS));
+                    (opt_ptr = strtok (NULL, ":")), i++)
+                    {
+                   crop_data->regions++;
+                    if (sscanf(opt_ptr, "%lf,%lf,%lf,%lf",
+                              &crop_data->corners[i].X1, &crop_data->corners[i].Y1,
+                              &crop_data->corners[i].X2, &crop_data->corners[i].Y2) != 4)
+                      {
+                      TIFFError ("Unable to parse coordinates for region", "%d %s", i, optarg);
+                     TIFFError ("For valid options type", "tiffcrop -h");
+                      exit (-1);
+                     }
+                    }
+                /*  check for remaining elements over MAX_REGIONS */
+                if ((opt_ptr != NULL) && (i >= MAX_REGIONS))
+                  {
+                 TIFFError ("Region list exceeds limit of", "%d regions %s", MAX_REGIONS, optarg);
+                 TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);;
+                  }
+               break;
+      /* options for file open modes */
+      case 'B': *mp++ = 'b'; *mp = '\0';
+               break;
+      case 'L': *mp++ = 'l'; *mp = '\0';
+               break;
+      case 'M': *mp++ = 'm'; *mp = '\0';
+               break;
+      case 'C': *mp++ = 'c'; *mp = '\0';
+               break;
+      /* options for Debugging / data dump */
+      case 'D': for (i = 0, opt_ptr = strtok (optarg, ",");
+                    (opt_ptr != NULL);
+                    (opt_ptr = strtok (NULL, ",")), i++)
+                    {
+                   opt_offset = strpbrk(opt_ptr, ":=");
+                    if (opt_offset == NULL)
+                      {
+                      TIFFError("Invalid dump option", "%s", optarg);
+                      TIFFError ("For valid options type", "tiffcrop -h");
+                      exit (-1);
+                     }
+                      
+                    *opt_offset = '\0';
+                    /* convert option to lowercase */
+                    end = strlen (opt_ptr);
+                    for (i = 0; i < end; i++)
+                      *(opt_ptr + i) = tolower(*(opt_ptr + i));
+                    /* Look for dump format specification */
+                    if (strncmp(opt_ptr, "for", 3) == 0)
+                      {
+                     /* convert value to lowercase */
+                      end = strlen (opt_offset + 1);
+                      for (i = 1; i <= end; i++)
+                        *(opt_offset + i) = tolower(*(opt_offset + i));
+                      /* check dump format value */
+                     if (strncmp (opt_offset + 1, "txt", 3) == 0)
+                        {
+                        dump->format = DUMP_TEXT;
+                        strcpy (dump->mode, "w");
+                        }
+                      else
+                        {
+                       if (strncmp(opt_offset + 1, "raw", 3) == 0)
+                          {
+                          dump->format = DUMP_RAW;
+                          strcpy (dump->mode, "wb");
+                          }
+                        else
+                          {
+                          TIFFError("parse_command_opts", "Unknown dump format %s", opt_offset + 1);
+                          TIFFError ("For valid options type", "tiffcrop -h");
+                          exit (-1);
+                         }
+                       }
+                      }
+                   else
+                      { /* Look for dump level specification */
+                      if (strncmp (opt_ptr, "lev", 3) == 0)
+                        dump->level = atoi(opt_offset + 1);
+                        /* Look for input data dump file name */
+                      if (strncmp (opt_ptr, "in", 2) == 0)
+                       {
+                        strncpy (dump->infilename, opt_offset + 1, PATH_MAX - 20);
+                        dump->infilename[PATH_MAX - 20] = '\0';
+                        }
+                        /* Look for output data dump file name */
+                      if (strncmp (opt_ptr, "out", 3) == 0)
+                       {
+                        strncpy (dump->outfilename, opt_offset + 1, PATH_MAX - 20);
+                        dump->outfilename[PATH_MAX - 20] = '\0';
+                        }
+                      if (strncmp (opt_ptr, "deb", 3) == 0)
+                       dump->debug = atoi(opt_offset + 1);
+                     }
+                    }
+               if ((strlen(dump->infilename)) || (strlen(dump->outfilename)))
+                  {
+                 if (dump->level == 1)
+                    TIFFError("","Defaulting to dump level 1, no data.");
+                 if (dump->format == DUMP_NONE)
+                    {
+                   TIFFError("", "You must specify a dump format for dump files");
+                   TIFFError ("For valid options type", "tiffcrop -h");
+                   exit (-1);
+                   }
+                  }
+               break;
+
+      /* image manipulation routine options */
+      case 'm': /* margins to exclude from selection, uppercase M was already used */
+               /* order of values must be TOP, LEFT, BOTTOM, RIGHT */
+               crop_data->crop_mode |= CROP_MARGINS;
+                for (i = 0, opt_ptr = strtok (optarg, ",:");
+                    ((opt_ptr != NULL) &&  (i < 4));
+                     (opt_ptr = strtok (NULL, ",:")), i++)
+                    {
+                   crop_data->margins[i] = atof(opt_ptr);
+                    }
+               break;
+      case 'E':        /* edge reference */
+               switch (tolower(optarg[0]))
+                  {
+                 case 't': crop_data->edge_ref = EDGE_TOP;
+                            break;
+                  case 'b': crop_data->edge_ref = EDGE_BOTTOM;
+                             break;
+                  case 'l': crop_data->edge_ref = EDGE_LEFT;
+                            break;
+                  case 'r': crop_data->edge_ref = EDGE_RIGHT;
+                            break;
+                 default:  TIFFError ("Edge reference must be top, bottom, left, or right", "%s", optarg);
+                           TIFFError ("For valid options type", "tiffcrop -h");
+                            exit (-1);
+                 }
+               break;
+      case 'F': /* flip eg mirror image or cropped segment, M was already used */
+               crop_data->crop_mode |= CROP_MIRROR;
+               switch (tolower(optarg[0]))
+                  {
+                 case  'h': crop_data->mirror = MIRROR_HORIZ;
+                             break;
+                  case  'v': crop_data->mirror = MIRROR_VERT;
+                             break;
+                  case  'b': crop_data->mirror = MIRROR_BOTH;
+                             break;
+                 default:   TIFFError ("Flip mode must be horiz, vert, or both", "%s", optarg);
+                            TIFFError ("For valid options type", "tiffcrop -h");
+                             exit (-1);
+                 }
+               break;
+      case 'H': /* set horizontal resolution to new value */
+               page->hres = atof (optarg);
+                page->mode |= PAGE_MODE_RESOLUTION;
+               break;
+      case 'I': /* invert the color space, eg black to white */
+               crop_data->crop_mode |= CROP_INVERT;
+                /* The PHOTOMETIC_INTERPRETATION tag may be updated */
+                if (streq(optarg, "black"))
+                  {
+                 crop_data->photometric = PHOTOMETRIC_MINISBLACK;
+                 continue;
+                  }
+                if (streq(optarg, "white"))
+                  {
+                 crop_data->photometric = PHOTOMETRIC_MINISWHITE;
+                  continue;
+                  }
+                if (streq(optarg, "data")) 
+                  {
+                 crop_data->photometric = INVERT_DATA_ONLY;
+                  continue;
+                  }
+                if (streq(optarg, "both"))
+                  {
+                 crop_data->photometric = INVERT_DATA_AND_TAG;
+                  continue;
+                  }
+
+               TIFFError("Missing or unknown option for inverting PHOTOMETRIC_INTERPRETATION", "%s", optarg);
+               TIFFError ("For valid options type", "tiffcrop -h");
+                exit (-1);
+               break;
+      case 'J': /* horizontal margin for sectioned ouput pages */ 
+               page->hmargin = atof(optarg);
+                page->mode |= PAGE_MODE_MARGINS;
+               break;
+      case 'K': /* vertical margin for sectioned ouput pages*/ 
+                page->vmargin = atof(optarg);
+                page->mode |= PAGE_MODE_MARGINS;
+               break;
+      case 'N':        /* list of images to process */
+                for (i = 0, opt_ptr = strtok (optarg, ",");
+                    ((opt_ptr != NULL) &&  (i < MAX_IMAGES));
+                     (opt_ptr = strtok (NULL, ",")))
+                     { /* We do not know how many images are in file yet 
+                       * so we build a list to include the maximum allowed
+                        * and follow it until we hit the end of the file.
+                        * Image count is not accurate for odd, even, last
+                        * so page numbers won't be valid either.
+                        */
+                    if (streq(opt_ptr, "odd"))
+                       {
+                      for (j = 1; j <= MAX_IMAGES; j += 2)
+                        imagelist[i++] = j;
+                       *image_count = (MAX_IMAGES - 1) / 2;
+                       break;
+                      }
+                    else
+                       {
+                      if (streq(opt_ptr, "even"))
+                         {
+                        for (j = 2; j <= MAX_IMAGES; j += 2)
+                          imagelist[i++] = j;
+                         *image_count = MAX_IMAGES / 2;
+                         break;
+                        }
+                      else
+                         {
+                        if (streq(opt_ptr, "last"))
+                          imagelist[i++] = MAX_IMAGES;
+                        else  /* single value between commas */
+                          {
+                          sep = strpbrk(opt_ptr, ":-");
+                          if (!sep)
+                            imagelist[i++] = atoi(opt_ptr);
+                           else
+                             {
+                            *sep = '\0';
+                             start = atoi (opt_ptr);
+                             if (!strcmp((sep + 1), "last"))
+                              end = MAX_IMAGES;
+                             else
+                               end = atoi (sep + 1);
+                             for (j = start; j <= end && j - start + i < MAX_IMAGES; j++)
+                              imagelist[i++] = j;
+                            }
+                          }
+                        }
+                     }
+                   }
+                *image_count = i;
+               break;
+      case 'O': /* page orientation */ 
+               switch (tolower(optarg[0]))
+                  {
+                 case  'a': page->orient = ORIENTATION_AUTO;
+                             break;
+                 case  'p': page->orient = ORIENTATION_PORTRAIT;
+                             break;
+                 case  'l': page->orient = ORIENTATION_LANDSCAPE;
+                             break;
+                 default:  TIFFError ("Orientation must be portrait, landscape, or auto.", "%s", optarg);
+                           TIFFError ("For valid options type", "tiffcrop -h");
+                            exit (-1);
+                 }
+               break;
+      case 'P': /* page size selection */ 
+               if (sscanf(optarg, "%lfx%lf", &page->width, &page->length) == 2)
+                  {
+                  strcpy (page->name, "Custom"); 
+                  page->mode |= PAGE_MODE_PAPERSIZE;
+                  break;
+                  }
+                if (get_page_geometry (optarg, page))
+                  {
+                 if (!strcmp(optarg, "list"))
+                    {
+                   TIFFError("", "Name            Width   Length (in inches)");
+                    for (i = 0; i < MAX_PAPERNAMES - 1; i++)
+                      TIFFError ("", "%-15.15s %5.2f   %5.2f", 
+                              PaperTable[i].name, PaperTable[i].width, 
+                               PaperTable[i].length);
+                   exit (-1);                   
+                    }
+     
+                 TIFFError ("Invalid paper size", "%s", optarg);
+                  TIFFError ("", "Select one of:");
+                 TIFFError("", "Name            Width   Length (in inches)");
+                  for (i = 0; i < MAX_PAPERNAMES - 1; i++)
+                    TIFFError ("", "%-15.15s %5.2f   %5.2f", 
+                              PaperTable[i].name, PaperTable[i].width, 
+                               PaperTable[i].length);
+                 exit (-1);
+                 }
+               else
+                  {
+                  page->mode |= PAGE_MODE_PAPERSIZE;
+                 }
+               break;
+      case 'R': /* rotate image or cropped segment */
+               crop_data->crop_mode |= CROP_ROTATE;
+               switch (strtoul(optarg, NULL, 0))
+                  {
+                 case  90:  crop_data->rotation = (uint16)90;
+                             break;
+                  case  180: crop_data->rotation = (uint16)180;
+                             break;
+                  case  270: crop_data->rotation = (uint16)270;
+                             break;
+                 default:   TIFFError ("Rotation must be 90, 180, or 270 degrees clockwise", "%s", optarg);
+                            TIFFError ("For valid options type", "tiffcrop -h");
+                             exit (-1);
+                 }
+               break;
+      case 'S':        /* subdivide into Cols:Rows sections, eg 3:2 would be 3 across and 2 down */
+               sep = strpbrk(optarg, ",:");
+               if (sep)
+                  {
+                  *sep = '\0';
+                  page->cols = atoi(optarg);
+                  page->rows = atoi(sep +1);
+                 }
+                else
+                  {
+                  page->cols = atoi(optarg);
+                  page->rows = atoi(optarg);
+                 }
+                if ((page->cols * page->rows) > MAX_SECTIONS)
+                  {
+                 TIFFError ("Limit for subdivisions, ie rows x columns, exceeded", "%d", MAX_SECTIONS);
+                 exit (-1);
+                  }
+                page->mode |= PAGE_MODE_ROWSCOLS;
+               break;
+      case 'U':        /* units for measurements and offsets */
+               if (streq(optarg, "in"))
+                  {
+                 crop_data->res_unit = RESUNIT_INCH;
+                 page->res_unit = RESUNIT_INCH;
+                 }
+               else if (streq(optarg, "cm"))
+                 {
+                 crop_data->res_unit = RESUNIT_CENTIMETER;
+                 page->res_unit = RESUNIT_CENTIMETER;
+                 }
+               else if (streq(optarg, "px"))
+                 {
+                 crop_data->res_unit = RESUNIT_NONE;
+                 page->res_unit = RESUNIT_NONE;
+                 }
+               else
+                  {
+                 TIFFError ("Illegal unit of measure","%s", optarg);
+                 TIFFError ("For valid options type", "tiffcrop -h");
+                  exit (-1);
+                 }
+               break;
+      case 'V': /* set vertical resolution to new value */
+               page->vres = atof (optarg);
+                page->mode |= PAGE_MODE_RESOLUTION;
+               break;
+      case 'X':        /* selection width */
+               crop_data->crop_mode |= CROP_WIDTH;
+               crop_data->width = atof(optarg);
+               break;
+      case 'Y':        /* selection length */
+               crop_data->crop_mode |= CROP_LENGTH;
+               crop_data->length = atof(optarg);
+               break;
+      case 'Z': /* zones of an image X:Y read as zone X of Y */
+               crop_data->crop_mode |= CROP_ZONES;
+               for (i = 0, opt_ptr = strtok (optarg, ",");
+                   ((opt_ptr != NULL) &&  (i < MAX_REGIONS));
+                    (opt_ptr = strtok (NULL, ",")), i++)
+                    {
+                   crop_data->zones++;
+                   opt_offset = strchr(opt_ptr, ':');
+                    *opt_offset = '\0';
+                    crop_data->zonelist[i].position = atoi(opt_ptr);
+                    crop_data->zonelist[i].total    = atoi(opt_offset + 1);
+                    }
+                /*  check for remaining elements over MAX_REGIONS */
+                if ((opt_ptr != NULL) && (i >= MAX_REGIONS))
+                  {
+                 TIFFError("Zone list exceeds region limit", "%d",  MAX_REGIONS);
+                 exit (-1);
+                  }
+               break;
+    case '?':  TIFFError ("For valid options type", "tiffcrop -h");
+                exit (-1);
+               /*NOTREACHED*/
+      }
+    }
+  }  /* end process_command_opts */
+
+/* Start a new output file if one has not been previously opened or
+ * autoindex is set to non-zero. Update page and file counters
+ * so TIFFTAG PAGENUM will be correct in image.
+ */
+static int 
+update_output_file (TIFF **tiffout, char *mode, int autoindex,
+                    char *outname, unsigned int *page)
+  {
+  static int findex = 0;    /* file sequence indicator */
+  char  *sep;
+  char   filenum[16];
+  char   export_ext[16];
+  char   exportname[PATH_MAX];
+
+  if (autoindex && (*tiffout != NULL))
+    {   
+    /* Close any export file that was previously opened */
+    TIFFClose (*tiffout);
+    *tiffout = NULL;
+    }
+
+  strcpy (export_ext, ".tiff");
+  memset (exportname, '\0', PATH_MAX);
+
+  /* Leave room for page number portion of the new filename */
+  strncpy (exportname, outname, PATH_MAX - 16);
+  if (*tiffout == NULL)   /* This is a new export file */
+    {
+    if (autoindex)
+      { /* create a new filename for each export */
+      findex++;
+      if ((sep = strstr(exportname, ".tif")) || (sep = strstr(exportname, ".TIF")))
+        {
+        strncpy (export_ext, sep, 5);
+        *sep = '\0';
+        }
+      else
+        strncpy (export_ext, ".tiff", 5);
+      export_ext[5] = '\0';
+
+      /* MAX_EXPORT_PAGES limited to 6 digits to prevent string overflow of pathname */
+      if (findex > MAX_EXPORT_PAGES)
+       {
+       TIFFError("update_output_file", "Maximum of %d pages per file exceeded", MAX_EXPORT_PAGES);
+        return 1;
+        }
+
+      sprintf (filenum, "-%03d%s", findex, export_ext);
+      filenum[14] = '\0';
+      strncat (exportname, filenum, 15);
+      }
+    exportname[PATH_MAX - 1] = '\0';
+
+    *tiffout = TIFFOpen(exportname, mode);
+    if (*tiffout == NULL)
+      {
+      TIFFError("update_output_file", "Unable to open output file %s", exportname);
+      return 1;
+      }
+    *page = 0; 
+
+    return 0;
+    }
+  else 
+    (*page)++;
+
+  return 0;
+  } /* end update_output_file */
+
+
+int
+main(int argc, char* argv[])
+  {
+  extern int optind;
+  uint16 defconfig = (uint16) -1;
+  uint16 deffillorder = 0;
+  uint32 deftilewidth = (uint32) 0;
+  uint32 deftilelength = (uint32) 0;
+  uint32 defrowsperstrip = (uint32) 0;
+  uint32 dirnum = 0;
+
+  TIFF *in = NULL;
+  TIFF *out = NULL;
+  char  mode[10];
+  char *mp = mode;
+
+  /** RJN additions **/
+  struct image_data image;     /* Image parameters for one image */
+  struct crop_mask  crop;      /* Cropping parameters for all images */
+  struct pagedef    page;      /* Page definition for output pages */
+  struct pageseg    sections[MAX_SECTIONS];  /* Sections of one output page */
+  struct buffinfo   seg_buffs[MAX_SECTIONS]; /* Segment buffer sizes and pointers */
+  struct dump_opts  dump;                  /* Data dump options */
+  unsigned char *read_buff    = NULL;      /* Input image data buffer */
+  unsigned char *crop_buff    = NULL;      /* Crop area buffer */
+  unsigned char *sect_buff    = NULL;      /* Image section buffer */
+  unsigned char *sect_src     = NULL;      /* Image section buffer pointer */
+  unsigned int  imagelist[MAX_IMAGES + 1]; /* individually specified images */
+  unsigned int  image_count  = 0;
+  unsigned int  dump_images  = 0;
+  unsigned int  next_image   = 0;
+  unsigned int  next_page    = 0;
+  unsigned int  total_pages  = 0;
+  unsigned int  total_images = 0;
+  unsigned int  end_of_input = FALSE;
+  int    seg, length;
+  char   temp_filename[PATH_MAX + 1];
+
+  little_endian = *((unsigned char *)&little_endian) & '1';
+
+  initImageData(&image);
+  initCropMasks(&crop);
+  initPageSetup(&page, sections, seg_buffs);
+  initDumpOptions(&dump);
+
+  process_command_opts (argc, argv, mp, mode, &dirnum, &defconfig, 
+                        &deffillorder, &deftilewidth, &deftilelength, &defrowsperstrip,
+                       &crop, &page, &dump, imagelist, &image_count);
+
+  if (argc - optind < 2)
+    usage();
+
+  if ((argc - optind) == 2)
+    pageNum = -1;
+  else
+    total_images = 0;
+  /* read multiple input files and write to output file(s) */
+  while (optind < argc - 1)
+    {
+    in = TIFFOpen (argv[optind], "r");
+    if (in == NULL)
+      return (-3);
+
+    /* If only one input file is specified, we can use directory count */
+    total_images = TIFFNumberOfDirectories(in); 
+    if (image_count == 0)
+      {
+      dirnum = 0;
+      total_pages = total_images; /* Only valid with single input file */
+      }
+    else
+      {
+      dirnum = (tdir_t)(imagelist[next_image] - 1);
+      next_image++;
+
+      /* Total pages only valid for enumerated list of pages not derived
+       * using odd, even, or last keywords.
+       */
+      if (image_count >  total_images)
+       image_count = total_images;
+      
+      total_pages = image_count;
+      }
+
+    /* MAX_IMAGES is used for special case "last" in selection list */
+    if (dirnum == (MAX_IMAGES - 1))
+      dirnum = total_images - 1;
+
+    if (dirnum > (total_images))
+      {
+      TIFFError (TIFFFileName(in), 
+      "Invalid image number %d, File contains only %d images", 
+                (int)dirnum + 1, total_images);
+      if (out != NULL)
+        (void) TIFFClose(out);
+      return (1);
+      }
+
+    if (dirnum != 0 && !TIFFSetDirectory(in, (tdir_t)dirnum))
+      {
+      TIFFError(TIFFFileName(in),"Error, setting subdirectory at %d", dirnum);
+      if (out != NULL)
+        (void) TIFFClose(out);
+      return (1);
+      }
+
+    end_of_input = FALSE;
+    while (end_of_input == FALSE)
+      {
+      config = defconfig;
+      compression = defcompression;
+      predictor = defpredictor;
+      fillorder = deffillorder;
+      rowsperstrip = defrowsperstrip;
+      tilewidth = deftilewidth;
+      tilelength = deftilelength;
+      g3opts = defg3opts;
+
+      if (dump.format != DUMP_NONE)
+        {
+        /* manage input and/or output dump files here */
+       dump_images++;
+        length = strlen(dump.infilename);
+        if (length > 0)
+          {
+          if (dump.infile != NULL)
+            fclose (dump.infile);
+
+          /* dump.infilename is guaranteed to be NUL termimated and have 20 bytes 
+             fewer than PATH_MAX */ 
+          memset (temp_filename, '\0', PATH_MAX + 1);              
+          sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images,
+                  (dump.format == DUMP_TEXT) ? "txt" : "raw");
+          if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL)
+            {
+           TIFFError ("Unable to open dump file for writing", "%s", temp_filename);
+           exit (-1);
+            }
+          dump_info(dump.infile, dump.format, "Reading image","%d from %s", 
+                    dump_images, TIFFFileName(in));
+          } 
+        length = strlen(dump.outfilename);
+        if (length > 0)
+          {
+          if (dump.outfile != NULL)
+            fclose (dump.outfile);
+
+          /* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes 
+             fewer than PATH_MAX */ 
+          memset (temp_filename, '\0', PATH_MAX + 1);              
+          sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images,
+                  (dump.format == DUMP_TEXT) ? "txt" : "raw");
+          if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL)
+            {
+             TIFFError ("Unable to open dump file for writing", "%s", temp_filename);
+           exit (-1);
+            }
+          dump_info(dump.outfile, dump.format, "Writing image","%d from %s", 
+                    dump_images, TIFFFileName(in));
+          } 
+        }
+
+      if (dump.debug)
+         TIFFError("main", "Reading image %4d of %4d total pages.", dirnum + 1, total_pages);
+
+      if (loadImage(in, &image, &dump, &read_buff))
+        {
+        TIFFError("main", "Unable to load source image");
+        exit (-1);
+        }
+
+      /* Correct the image orientation if it was not ORIENTATION_TOPLEFT.
+       */
+      if (image.adjustments != 0)
+        {
+       if (correct_orientation(&image, &read_buff))
+           TIFFError("main", "Unable to correct image orientation");
+        }
+
+      if (getCropOffsets(&image, &crop, &dump))
+        {
+        TIFFError("main", "Unable to define crop regions");
+        exit (-1);
+       }
+
+      if (crop.selections > 0)
+        {
+        if (processCropSelections(&image, &crop, &read_buff, seg_buffs))
+          {
+          TIFFError("main", "Unable to process image selections");
+          exit (-1);
+         }
+       }
+      else  /* Single image segment without zones or regions */
+        {
+        if (createCroppedImage(&image, &crop, &read_buff, &crop_buff))
+          {
+          TIFFError("main", "Unable to create output image");
+          exit (-1);
+         }
+       }
+      if (page.mode == PAGE_MODE_NONE)
+        {  /* Whole image or sections not based on output page size */
+        if (crop.selections > 0)
+          {
+         writeSelections(in, &out, &crop, &image, &dump, seg_buffs,
+                          mp, argv[argc - 1], &next_page, total_pages);
+          }
+       else  /* One file all images and sections */
+          {
+         if (update_output_file (&out, mp, crop.exp_mode, argv[argc - 1],
+                                  &next_page))
+             exit (1);
+          if (writeCroppedImage(in, out, &image, &dump,crop.combined_width, 
+                                crop.combined_length, crop_buff, next_page, total_pages))
+            {
+             TIFFError("main", "Unable to write new image");
+             exit (-1);
+           }
+          }
+       }
+      else
+        {
+       /* If we used a crop buffer, our data is there, otherwise it is
+         * in the read_buffer
+         */
+       if (crop_buff != NULL)  
+         sect_src = crop_buff;
+        else
+          sect_src = read_buff;
+        /* Break input image into pages or rows and columns */
+        if (computeOutputPixelOffsets(&crop, &image, &page, sections, &dump))
+          {
+          TIFFError("main", "Unable to compute output section data");
+          exit (-1);
+         }
+        /* If there are multiple files on the command line, the final one is assumed 
+         * to be the output filename into which the images are written.
+         */
+       if (update_output_file (&out, mp, crop.exp_mode, argv[argc - 1], &next_page))
+          exit (1);
+
+       if (writeImageSections(in, out, &image, &page, sections, &dump, sect_src, &sect_buff))
+          {
+          TIFFError("main", "Unable to write image sections");
+          exit (-1);
+         }
+        }
+
+      /* No image list specified, just read the next image */
+      if (image_count == 0)
+        dirnum++;
+      else
+        {
+       dirnum = (tdir_t)(imagelist[next_image] - 1);
+        next_image++;
+        }
+
+      if (dirnum == MAX_IMAGES - 1)
+        dirnum = TIFFNumberOfDirectories(in) - 1;
+
+      if (!TIFFSetDirectory(in, (tdir_t)dirnum))
+        end_of_input = TRUE;
+      }
+    TIFFClose(in);
+    optind++;
+    }
+
+  /* If we did not use the read buffer as the crop buffer */
+  if (read_buff)
+    _TIFFfree(read_buff);
+
+  if (crop_buff)
+    _TIFFfree(crop_buff);
+
+  if (sect_buff)
+    _TIFFfree(sect_buff);
+
+   /* Clean up any segment buffers used for zones or regions */
+  for (seg = 0; seg < crop.selections; seg++)
+    _TIFFfree (seg_buffs[seg].buffer);
+
+  if (dump.format != DUMP_NONE)
+    {
+    if (dump.infile != NULL)
+     fclose (dump.infile);
+
+    if (dump.outfile != NULL)
+      {
+      dump_info (dump.outfile, dump.format, "", "Completed run for %s", TIFFFileName(out));
+      fclose (dump.outfile);
+      }
+    }
+
+  TIFFClose(out);
+
+  return (0);
+  } /* end main */
+
+
+/* Debugging functions */
+static int dump_data (FILE *dumpfile, int format, char *dump_tag, unsigned char *data, uint32 count)
+  {
+  int j, k;
+  uint32 i;
+  char  dump_array[10];
+  unsigned char bitset;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  if (format == DUMP_TEXT)
+    {
+    fprintf (dumpfile," %s  ", dump_tag);
+    for (i = 0; i < count; i++)
+      {
+      for (j = 0, k = 7; j < 8; j++, k--)
+        {
+       bitset = (*(data + i)) & (((unsigned char)1 << k)) ? 1 : 0;
+        sprintf(&dump_array[j], (bitset) ? "1" : "0");
+        }
+      dump_array[8] = '\0';
+      fprintf (dumpfile," %s", dump_array);
+      }
+    fprintf (dumpfile,"\n");
+    }
+  else
+    {
+    if ((fwrite (data, 1, count, dumpfile)) != count)
+      {
+      TIFFError ("", "Unable to write binary data to dump file");
+      return (1);
+      }
+    }
+
+  return (0);
+  }
+
+static int dump_byte (FILE *dumpfile, int format, char *dump_tag, unsigned char data)
+  {
+  int j, k;
+  char  dump_array[10];
+  unsigned char bitset;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  if (format == DUMP_TEXT)
+    {
+    fprintf (dumpfile," %s  ", dump_tag);
+    for (j = 0, k = 7; j < 8; j++, k--)
+      {
+      bitset = data & (((unsigned char)1 << k)) ? 1 : 0;
+      sprintf(&dump_array[j], (bitset) ? "1" : "0");
+      }
+    dump_array[8] = '\0';
+    fprintf (dumpfile," %s\n", dump_array);
+    }
+  else
+    {
+    if ((fwrite (&data, 1, 1, dumpfile)) != 1)
+      {
+      TIFFError ("", "Unable to write binary data to dump file");
+      return (1);
+      }
+    }
+
+  return (0);
+  }
+
+static int dump_short (FILE *dumpfile, int format, char *dump_tag, uint16 data)
+  {
+  int j, k;
+  char  dump_array[20];
+  unsigned char bitset;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  if (format == DUMP_TEXT)
+    {
+    fprintf (dumpfile," %s  ", dump_tag);
+    for (j = 0, k = 15; k >= 0; j++, k--)
+      {
+      bitset = data & (((unsigned char)1 << k)) ? 1 : 0;
+      sprintf(&dump_array[j], (bitset) ? "1" : "0");
+      if ((k % 8) == 0)
+          sprintf(&dump_array[++j], " ");
+      }
+    dump_array[17] = '\0';
+    fprintf (dumpfile," %s\n", dump_array);
+    }
+  else
+    {
+    if ((fwrite (&data, 2, 1, dumpfile)) != 2)
+      {
+      TIFFError ("", "Unable to write binary data to dump file");
+      return (1);
+      }
+    }
+
+  return (0);
+  }
+
+static int dump_long (FILE *dumpfile, int format, char *dump_tag, uint32 data)
+  {
+  int j, k;
+  char  dump_array[40];
+  unsigned char bitset;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  if (format == DUMP_TEXT)
+    {
+    fprintf (dumpfile," %s  ", dump_tag);
+    for (j = 0, k = 31; k >= 0; j++, k--)
+      {
+      bitset = data & (((uint32)1 << k)) ? 1 : 0;
+      sprintf(&dump_array[j], (bitset) ? "1" : "0");
+      if ((k % 8) == 0)
+          sprintf(&dump_array[++j], " ");
+      }
+    dump_array[35] = '\0';
+    fprintf (dumpfile," %s\n", dump_array);
+    }
+  else
+    {
+    if ((fwrite (&data, 4, 1, dumpfile)) != 4)
+      {
+      TIFFError ("", "Unable to write binary data to dump file");
+      return (1);
+      }
+    }
+  return (0);
+  }
+
+static int dump_wide (FILE *dumpfile, int format, char *dump_tag, uint64 data)
+  {
+  int j, k;
+  char  dump_array[80];
+  unsigned char bitset;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  if (format == DUMP_TEXT)
+    {
+    fprintf (dumpfile," %s  ", dump_tag);
+    for (j = 0, k = 63; k >= 0; j++, k--)
+      {
+      bitset = data & (((uint64)1 << k)) ? 1 : 0;
+      sprintf(&dump_array[j], (bitset) ? "1" : "0");
+      if ((k % 8) == 0)
+          sprintf(&dump_array[++j], " ");
+      }
+    dump_array[71] = '\0';
+    fprintf (dumpfile," %s\n", dump_array);
+    }
+  else
+    {
+    if ((fwrite (&data, 8, 1, dumpfile)) != 8)
+      {
+      TIFFError ("", "Unable to write binary data to dump file");
+      return (1);
+      }
+    }
+
+  return (0);
+  }
+
+static void dump_info(FILE *dumpfile, int format, char *prefix, char *msg, ...)
+  {
+  if (format == DUMP_TEXT)
+    {
+    va_list ap;
+    va_start(ap, msg);
+    fprintf(dumpfile, "%s ", prefix);
+    vfprintf(dumpfile, msg, ap);
+    fprintf(dumpfile, "\n");
+    }
+  }
+
+static int dump_buffer (FILE* dumpfile, int format, uint32 rows, uint32 width, 
+                 uint32 row, unsigned char *buff)
+  {
+  int j, k;
+  uint32 i;
+  unsigned char * dump_ptr;
+
+  if (dumpfile == NULL)
+    {
+    TIFFError ("", "Invalid FILE pointer for dump file");
+    return (1);
+    }
+
+  for (i = 0; i < rows; i++)
+    {
+    dump_ptr = buff + (i * width);
+    if (format == DUMP_TEXT)
+      dump_info (dumpfile, format, "", 
+                 "Row %4d, %d bytes at offset %d",
+                row + i + 1, width, row * width);
+     
+    for (j = 0, k = width; k >= 10; j += 10, k -= 10, dump_ptr += 10)
+      dump_data (dumpfile, format, "", dump_ptr, 10);
+    if (k > 0)
+      dump_data (dumpfile, format, "", dump_ptr, k);
+    }
+  return (0);
+  }
+
+/* Extract one or more samples from an interleaved buffer. If count == 1,
+ * only the sample plane indicated by sample will be extracted.  If count > 1, 
+ * count samples beginning at sample will be extracted. Portions of a 
+ * scanline can be extracted by specifying a start and end value.
+ */
+
+static int 
+extractContigSamplesBytes (uint8 *in, uint8 *out, uint32 cols, 
+                           tsample_t sample, uint16 spp, uint16 bps, 
+                           tsample_t count, uint32 start, uint32 end)
+  {
+  int i, bytes_per_sample, sindex;
+  uint32 col, dst_rowsize, bit_offset;
+  uint32 src_byte, src_bit;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("extractContigSamplesBytes","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamplesBytes", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamplesBytes", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  dst_rowsize = (bps * (end - start) * count) / 8;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  /* Optimize case for copying all samples */
+  if (count == spp)
+    {
+    src = in + (start * spp * bytes_per_sample);
+    _TIFFmemcpy (dst, src, dst_rowsize);
+    }
+  else
+    {
+    for (col = start; col < end; col++)
+      {
+      for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+        {
+        bit_offset = col * bps * spp;
+        if (sindex == 0)
+          {
+          src_byte = bit_offset / 8;
+          src_bit  = bit_offset % 8;
+          }
+        else
+          {
+          src_byte = (bit_offset + (sindex * bps)) / 8;
+          src_bit  = (bit_offset + (sindex * bps)) % 8;
+          }
+        src = in + src_byte;
+        for (i = 0; i < bytes_per_sample; i++)
+            *dst++ = *src++;
+        }
+      }
+    }
+
+  return (0);
+  } /* end extractContigSamplesBytes */
+
+static int
+extractContigSamples8bits (uint8 *in, uint8 *out, uint32 cols,
+                           tsample_t sample, uint16 spp, uint16 bps, 
+                           tsample_t count, uint32 start, uint32 end)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint8  maskbits = 0, matchbits = 0;
+  uint8  buff1 = 0, buff2 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("extractContigSamples8bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamples8bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamples8bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+  
+  ready_bits = 0;
+  maskbits =  (uint8)-1 >> ( 8 - bps);
+  buff1 = buff2 = 0;
+  for (col = start; col < end; col++)
+    {    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (8 - src_bit - bps); 
+      buff1 = ((*src) & matchbits) << (src_bit);
+
+      /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 8)
+        {
+        *dst++ = buff2;
+        buff2 = buff1;
+        ready_bits -= 8;
+        }
+      else
+        buff2 = (buff2 | (buff1 >> ready_bits));
+      ready_bits += bps;
+      }
+    }
+
+  while (ready_bits > 0)
+    {
+    buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+    *dst++ = buff1;
+    ready_bits -= 8;
+    }
+
+  return (0);
+  } /* end extractContigSamples8bits */
+
+static int
+extractContigSamples16bits (uint8 *in, uint8 *out, uint32 cols, 
+                            tsample_t sample, uint16 spp, uint16 bps, 
+                            tsample_t count, uint32 start, uint32 end)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint16 maskbits = 0, matchbits = 0;
+  uint16 buff1 = 0, buff2 = 0;
+  uint8  bytebuff = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("extractContigSamples16bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamples16bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamples16bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  ready_bits = 0;
+  maskbits = (uint16)-1 >> (16 - bps);
+
+  for (col = start; col < end; col++)
+    {    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (16 - src_bit - bps); 
+
+      if (little_endian)
+        buff1 = (src[0] << 8) | src[1];
+      else
+        buff1 = (src[1] << 8) | src[0];
+
+      buff1 = (buff1 & matchbits) << (src_bit);
+      if (ready_bits < 8) /* add another bps bits to the buffer */
+        { 
+        bytebuff = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff = (buff2 >> 8);
+        *dst++ = bytebuff;
+        ready_bits -= 8;
+        /* shift in new bits */
+        buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff = (buff2 >> 8);
+    *dst++ = bytebuff;
+    ready_bits -= 8;
+    }
+  
+  return (0);
+  } /* end extractContigSamples16bits */
+
+
+static int
+extractContigSamples24bits (uint8 *in, uint8 *out, uint32 cols,
+                           tsample_t sample, uint16 spp, uint16 bps, 
+                            tsample_t count, uint32 start, uint32 end)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint32 maskbits = 0, matchbits = 0;
+  uint32 buff1 = 0, buff2 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((in == NULL) || (out == NULL))
+    {
+    TIFFError("extractContigSamples24bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamples24bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamples24bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  ready_bits = 0;
+  maskbits =  (uint32)-1 >> ( 32 - bps);
+  for (col = start; col < end; col++)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (32 - src_bit - bps); 
+      if (little_endian)
+       buff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+      else
+       buff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+      buff1 = (buff1 & matchbits) << (src_bit);
+
+      if (ready_bits < 16) /* add another bps bits to the buffer */
+        {
+        bytebuff1 = bytebuff2 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 24);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 16);
+        *dst++ = bytebuff2;
+        ready_bits -= 16;
+
+        /* shift in new bits */
+        buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 24);
+    *dst++ = bytebuff1;
+
+    buff2 = (buff2 << 8);
+    bytebuff2 = bytebuff1;
+    ready_bits -= 8;
+    } 
+  
+  return (0);
+  } /* end extractContigSamples24bits */
+
+static int
+extractContigSamples32bits (uint8 *in, uint8 *out, uint32 cols,
+                            tsample_t sample, uint16 spp, uint16 bps, 
+                           tsample_t count, uint32 start, uint32 end)
+  {
+  int    ready_bits = 0, sindex = 0, shift_width = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 maskbits = 0, matchbits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((in == NULL) || (out == NULL))
+    {
+    TIFFError("extractContigSamples32bits","Invalid input or output buffer");
+    return (1);
+    }
+
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamples32bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamples32bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  shift_width = ((bps + 7) / 8) + 1; 
+  ready_bits = 0;
+  maskbits =  (uint64)-1 >> ( 64 - bps);
+  for (col = start; col < end; col++)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (64 - src_bit - bps); 
+      if (little_endian)
+        {
+       longbuff1 = (src[0] << 24) | (src[1] << 16)  | (src[2] << 8) | src[3];
+       longbuff2 = longbuff1;
+        }
+      else
+        {
+       longbuff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+       longbuff2 = longbuff1;
+       }
+
+      buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+      buff1 = (buff3 & matchbits) << (src_bit);
+
+      /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 32)
+        {
+        bytebuff1 = (buff2 >> 56);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 48);
+        *dst++ = bytebuff2;
+        bytebuff3 = (buff2 >> 40);
+        *dst++ = bytebuff3;
+        bytebuff4 = (buff2 >> 32);
+        *dst++ = bytebuff4;
+        ready_bits -= 32;
+                    
+        /* shift in new bits */
+        buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+        }
+      else
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 56);
+    *dst++ = bytebuff1;
+    buff2 = (buff2 << 8);
+    ready_bits -= 8;
+    }
+  
+  return (0);
+  } /* end extractContigSamples32bits */
+
+static int
+extractContigSamplesShifted8bits (uint8 *in, uint8 *out, uint32 cols,
+                                  tsample_t sample, uint16 spp, uint16 bps, 
+                                 tsample_t count, uint32 start, uint32 end,
+                                 int shift)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint8  maskbits = 0, matchbits = 0;
+  uint8  buff1 = 0, buff2 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("extractContigSamplesShifted8bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamplesShifted8bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamplesShifted8bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  ready_bits = shift;
+  maskbits =  (uint8)-1 >> ( 8 - bps);
+  buff1 = buff2 = 0;
+  for (col = start; col < end; col++)
+    {    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (8 - src_bit - bps); 
+      buff1 = ((*src) & matchbits) << (src_bit);
+      if ((col == start) && (sindex == sample))
+        buff2 = *src & ((uint8)-1) << (shift);
+
+      /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 8)
+        {
+        *dst++ |= buff2;
+        buff2 = buff1;
+        ready_bits -= 8;
+        }
+      else
+       buff2 = buff2 | (buff1 >> ready_bits);
+      ready_bits += bps;
+      }
+    }
+
+  while (ready_bits > 0)
+    {
+    buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+    *dst++ = buff1;
+    ready_bits -= 8;
+    }
+
+  return (0);
+  } /* end extractContigSamplesShifted8bits */
+
+static int
+extractContigSamplesShifted16bits (uint8 *in, uint8 *out, uint32 cols, 
+                                   tsample_t sample, uint16 spp, uint16 bps, 
+                                  tsample_t count, uint32 start, uint32 end,
+                                  int shift)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint16 maskbits = 0, matchbits = 0;
+  uint16 buff1 = 0, buff2 = 0;
+  uint8  bytebuff = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+  
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("extractContigSamplesShifted16bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamplesShifted16bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamplesShifted16bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  ready_bits = shift;
+  maskbits = (uint16)-1 >> (16 - bps);
+  for (col = start; col < end; col++)
+    {    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (16 - src_bit - bps); 
+      if (little_endian)
+        buff1 = (src[0] << 8) | src[1];
+      else
+        buff1 = (src[1] << 8) | src[0];
+
+      if ((col == start) && (sindex == sample))
+        buff2 = buff1 & ((uint16)-1) << (8 - shift);
+
+      buff1 = (buff1 & matchbits) << (src_bit);
+
+      if (ready_bits < 8) /* add another bps bits to the buffer */
+        buff2 = buff2 | (buff1 >> ready_bits);
+      else  /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff = (buff2 >> 8);
+        *dst++ = bytebuff;
+        ready_bits -= 8;
+        /* shift in new bits */
+        buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+        }
+
+      ready_bits += bps;
+      }
+    }
+
+  /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff = (buff2 >> 8);
+    *dst++ = bytebuff;
+    ready_bits -= 8;
+    }
+  
+  return (0);
+  } /* end extractContigSamplesShifted16bits */
+
+
+static int
+extractContigSamplesShifted24bits (uint8 *in, uint8 *out, uint32 cols,
+                                  tsample_t sample, uint16 spp, uint16 bps, 
+                                   tsample_t count, uint32 start, uint32 end,
+                                  int shift)
+  {
+  int    ready_bits = 0, sindex = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint32 maskbits = 0, matchbits = 0;
+  uint32 buff1 = 0, buff2 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((in == NULL) || (out == NULL))
+    {
+    TIFFError("extractContigSamplesShifted24bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamplesShifted24bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamplesShifted24bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  ready_bits = shift;
+  maskbits =  (uint32)-1 >> ( 32 - bps);
+  for (col = start; col < end; col++)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (32 - src_bit - bps); 
+      if (little_endian)
+       buff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+      else
+       buff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+
+      if ((col == start) && (sindex == sample))
+        buff2 = buff1 & ((uint32)-1) << (16 - shift);
+
+      buff1 = (buff1 & matchbits) << (src_bit);
+
+      if (ready_bits < 16)  /* add another bps bits to the buffer */
+        {
+        bytebuff1 = bytebuff2 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 24);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 16);
+        *dst++ = bytebuff2;
+        ready_bits -= 16;
+
+        /* shift in new bits */
+        buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 24);
+    *dst++ = bytebuff1;
+
+    buff2 = (buff2 << 8);
+    bytebuff2 = bytebuff1;
+    ready_bits -= 8;
+    }
+   
+  return (0);
+  } /* end extractContigSamplesShifted24bits */
+
+static int
+extractContigSamplesShifted32bits (uint8 *in, uint8 *out, uint32 cols,
+                                   tsample_t sample, uint16 spp, uint16 bps, 
+                                  tsample_t count, uint32 start, uint32 end,
+                                  int shift)
+  {
+  int    ready_bits = 0, sindex = 0, shift_width = 0;
+  uint32 col, src_byte, src_bit, bit_offset;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 maskbits = 0, matchbits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  uint8 *src = in;
+  uint8 *dst = out;
+
+  if ((in == NULL) || (out == NULL))
+    {
+    TIFFError("extractContigSamplesShifted32bits","Invalid input or output buffer");
+    return (1);
+    }
+
+
+  if ((start > end) || (start > cols))
+    {
+    TIFFError ("extractContigSamplesShifted32bits", 
+               "Invalid start column value %d ignored", start);
+    start = 0;
+    }
+  if ((end == 0) || (end > cols))
+    {
+    TIFFError ("extractContigSamplesShifted32bits", 
+               "Invalid end column value %d ignored", end);
+    end = cols;
+    }
+
+  shift_width = ((bps + 7) / 8) + 1; 
+  ready_bits = shift;
+  maskbits =  (uint64)-1 >> ( 64 - bps);
+  for (col = start; col < end; col++)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = col * bps * spp;
+    for (sindex = sample; (sindex < spp) && (sindex < (sample + count)); sindex++)
+      {
+      if (sindex == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sindex * bps)) / 8;
+        src_bit  = (bit_offset + (sindex * bps)) % 8;
+        }
+
+      src = in + src_byte;
+      matchbits = maskbits << (64 - src_bit - bps); 
+      if (little_endian)
+        {
+       longbuff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+       longbuff2 = longbuff1;
+        }
+      else
+        {
+       longbuff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+       longbuff2 = longbuff1;
+       }
+
+      buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+      if ((col == start) && (sindex == sample))
+        buff2 = buff3 & ((uint64)-1) << (32 - shift);
+
+      buff1 = (buff3 & matchbits) << (src_bit);
+
+      if (ready_bits < 32)
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else  /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 56);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 48);
+        *dst++ = bytebuff2;
+        bytebuff3 = (buff2 >> 40);
+        *dst++ = bytebuff3;
+        bytebuff4 = (buff2 >> 32);
+        *dst++ = bytebuff4;
+        ready_bits -= 32;
+                    
+        /* shift in new bits */
+        buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 56);
+    *dst++ = bytebuff1;
+    buff2 = (buff2 << 8);
+    ready_bits -= 8;
+    }
+  
+  return (0);
+  } /* end extractContigSamplesShifted32bits */
+
+static int
+extractContigSamplesToBuffer(uint8 *out, uint8 *in, uint32 rows, uint32 cols,
+                            tsample_t sample, uint16 spp, uint16 bps, 
+                             struct dump_opts *dump)
+  {
+  int    shift_width, bytes_per_sample, bytes_per_pixel;
+  uint32 src_rowsize, src_offset, row, first_col = 0;
+  uint32 dst_rowsize, dst_offset;
+  tsample_t count = 1;
+  uint8 *src, *dst;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if ((bps % 8) == 0)
+    shift_width = 0;
+  else
+    {
+    if (bytes_per_pixel < (bytes_per_sample + 1))
+      shift_width = bytes_per_pixel;
+    else
+      shift_width = bytes_per_sample + 1;
+    }
+  src_rowsize = ((bps * spp * cols) + 7) / 8;
+  dst_rowsize = ((bps * cols) + 7) / 8;
+
+  if ((dump->outfile != NULL) && (dump->level == 4))
+    {
+    dump_info  (dump->outfile, dump->format, "extractContigSamplesToBuffer", 
+                "Sample %d, %d rows", sample + 1, rows + 1);
+    }
+  for (row = 0; row < rows; row++)
+    {
+    src_offset = row * src_rowsize;
+    dst_offset = row * dst_rowsize;
+    src = in + src_offset;
+    dst = out + dst_offset;
+
+    /* pack the data into the scanline */
+    switch (shift_width)
+      {  
+      case 0: if (extractContigSamplesBytes (src, dst, cols, sample,
+                                             spp, bps,  count, first_col, cols))  
+                return (1);
+             break;
+      case 1: if (bps == 1)
+                {
+                if (extractContigSamples8bits (src, dst, cols, sample,
+                                               spp, bps, count, first_col, cols))
+                 return (1);
+               break;
+               }
+             else
+                 if (extractContigSamples16bits (src, dst, cols, sample,
+                                                 spp, bps, count, first_col, cols))
+                return (1);
+             break;
+      case 2: if (extractContigSamples24bits (src, dst, cols, sample,
+                                              spp, bps,  count, first_col, cols))
+                return (1);
+             break;
+      case 3:
+      case 4: 
+      case 5: if (extractContigSamples32bits (src, dst, cols, sample,
+                                              spp, bps,  count, first_col, cols))
+                return (1);
+             break;
+      default: TIFFError ("extractContigSamplesToBuffer", "Unsupported bit depth: %d", bps);
+              return (1);
+      }
+    if ((dump->outfile != NULL) && (dump->level == 4))
+      dump_buffer(dump->outfile, dump->format, 1, dst_rowsize, row, dst);
+    }
+
+  return (0);
+  } /* end extractContigSamplesToBuffer */
+
+static int
+extractContigSamplesToTileBuffer(uint8 *out, uint8 *in, uint32 rows, uint32 cols,
+                                uint32 imagewidth, uint32 tilewidth, tsample_t sample,
+                                uint16 count, uint16 spp, uint16 bps, struct dump_opts *dump)
+  {
+  int    shift_width, bytes_per_sample, bytes_per_pixel;
+  uint32 src_rowsize, src_offset, row;
+  uint32 dst_rowsize, dst_offset;
+  uint8 *src, *dst;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if ((bps % 8) == 0)
+    shift_width = 0;
+  else
+    {
+    if (bytes_per_pixel < (bytes_per_sample + 1))
+      shift_width = bytes_per_pixel;
+    else
+      shift_width = bytes_per_sample + 1;
+    }
+
+  if ((dump->outfile != NULL) && (dump->level == 4))
+    {
+    dump_info  (dump->outfile, dump->format, "extractContigSamplesToTileBuffer", 
+                "Sample %d, %d rows", sample + 1, rows + 1);
+    }
+
+  src_rowsize = ((bps * spp * imagewidth) + 7) / 8;
+  dst_rowsize = ((bps * tilewidth * count) + 7) / 8;
+
+  for (row = 0; row < rows; row++)
+    {
+    src_offset = row * src_rowsize;
+    dst_offset = row * dst_rowsize;
+    src = in + src_offset;
+    dst = out + dst_offset;
+
+    /* pack the data into the scanline */
+    switch (shift_width)
+      {  
+      case 0: if (extractContigSamplesBytes (src, dst, cols, sample,
+                                             spp, bps,  count, 0, cols))  
+                return (1);
+             break;
+      case 1: if (bps == 1)
+                {
+                if (extractContigSamples8bits (src, dst, cols, sample,
+                                               spp, bps, count, 0, cols))
+                 return (1);
+               break;
+               }
+             else
+                 if (extractContigSamples16bits (src, dst, cols, sample,
+                                                 spp, bps, count, 0, cols))
+                return (1);
+             break;
+      case 2: if (extractContigSamples24bits (src, dst, cols, sample,
+                                              spp, bps,  count, 0, cols))
+                return (1);
+             break;
+      case 3:
+      case 4: 
+      case 5: if (extractContigSamples32bits (src, dst, cols, sample,
+                                              spp, bps,  count, 0, cols))
+                return (1);
+             break;
+      default: TIFFError ("extractContigSamplesToTileBuffer", "Unsupported bit depth: %d", bps);
+              return (1);
+      }
+    if ((dump->outfile != NULL) && (dump->level == 4))
+      dump_buffer(dump->outfile, dump->format, 1, dst_rowsize, row, dst);
+    }
+
+  return (0);
+  } /* end extractContigSamplesToTileBuffer */
+
+static int readContigStripsIntoBuffer (TIFF* in, uint8* buf)
+  {
+  uint8* bufp = buf;
+  int32  bytes_read = 0;
+  uint16 strip, nstrips   = TIFFNumberOfStrips(in);
+  uint32 stripsize = TIFFStripSize(in);
+  uint32 rows = 0;
+  uint32 rps = TIFFGetFieldDefaulted(in, TIFFTAG_ROWSPERSTRIP, &rps);
+  tsize_t scanline_size = TIFFScanlineSize(in);
+
+  for (strip = 0; strip < nstrips; strip++)
+    {
+    bytes_read = TIFFReadEncodedStrip (in, strip, bufp, -1);
+    rows = bytes_read / scanline_size;
+    if ((strip < (nstrips - 1)) && (bytes_read != (int32)stripsize))
+      TIFFError("", "Strip %d: read %lu bytes, strip size %lu",
+               (int)strip + 1, (unsigned long) bytes_read, (unsigned long)stripsize);
+
+    if (bytes_read < 0 && !ignore)
+      {
+      TIFFError("", "Error reading strip %lu after %lu rows",
+               (unsigned long) strip, (unsigned long)rows);
+      return 0;
+      }
+    bufp += bytes_read;
+    }
+
+ return 1;
+  } /* end readContigStripsIntoBuffer */
+
+static int 
+combineSeparateSamplesBytes (unsigned char *srcbuffs[], unsigned char *out,
+                             uint32 cols, uint32 rows, uint16 spp, uint16 bps,
+                             FILE *dumpfile, int format, int level)
+  {
+  int i, bytes_per_sample;
+  uint32 row, col, col_offset, src_rowsize, dst_rowsize, row_offset;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t s;
+
+  src = srcbuffs[0];
+  dst = out;
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateSamplesBytes","Invalid buffer address");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+
+  src_rowsize = ((bps * cols) + 7) / 8;
+  dst_rowsize = ((bps * spp * cols) + 7) / 8;
+  for (row = 0; row < rows; row++)
+    {
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      for (s = 0; s < spp; s++)
+        {
+        dump_info (dumpfile, format, "combineSeparateSamplesBytes","Input data, Sample %d", s);
+        dump_buffer(dumpfile, format, 1, cols, row, srcbuffs[s] + (row * src_rowsize));
+        }
+      }
+    dst = out + (row * dst_rowsize);
+    row_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      col_offset = row_offset + (col * (bps / 8)); 
+      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+        {
+        src = srcbuffs[s] + col_offset; 
+        for (i = 0; i < bytes_per_sample; i++)
+          *(dst + i) = *(src + i);
+        src += bytes_per_sample;
+        dst += bytes_per_sample;
+        }   
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateSamplesBytes","Output data, combined samples");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateSamplesBytes */
+
+static int
+combineSeparateSamples8bits (uint8 *in[], uint8 *out, uint32 cols,
+                            uint32 rows, uint16 spp, uint16 bps, 
+                           FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0;
+  int    bytes_per_sample = 0;
+  uint32 src_rowsize, dst_rowsize, src_offset; 
+  uint32 bit_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint8  maskbits = 0, matchbits = 0;
+  uint8  buff1 = 0, buff2 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[32];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateSamples8bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+  src_rowsize = ((bps * cols) + 7) / 8;
+  dst_rowsize = ((bps * cols * spp) + 7) / 8;
+  maskbits =  (uint8)-1 >> ( 8 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (8 - src_bit - bps); 
+      /* load up next sample from each plane */
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        buff1 = ((*src) & matchbits) << (src_bit);
+
+        /* If we have a full buffer's worth, write it out */
+        if (ready_bits >= 8)
+          {
+          *dst++ = buff2;
+          buff2 = buff1;
+          ready_bits -= 8;
+          strcpy (action, "Flush");
+          }
+        else
+          {
+          buff2 = (buff2 | (buff1 >> ready_bits));
+          strcpy (action, "Update");
+          }
+        ready_bits += bps;
+        if ((dumpfile != NULL) && (level == 3))
+          {
+          dump_info (dumpfile, format, "",
+                   "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                  row + 1, col + 1, s, src_byte, src_bit, dst - out);
+          dump_byte (dumpfile, format, "Match bits", matchbits);
+          dump_byte (dumpfile, format, "Src   bits", *src);
+          dump_byte (dumpfile, format, "Buff1 bits", buff1);
+          dump_byte (dumpfile, format, "Buff2 bits", buff2);
+          dump_info (dumpfile, format, "","%s", action); 
+         }
+        }
+      }
+
+    if (ready_bits > 0)
+      {
+      buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+      *dst++ = buff1;
+      if ((dumpfile != NULL) && (level == 3))
+        {
+        dump_info (dumpfile, format, "",
+                "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                row + 1, col + 1, src_byte, src_bit, dst - out);
+                 dump_byte (dumpfile, format, "Final bits", buff1);
+        }
+      }
+
+    if ((dumpfile != NULL) && (level >= 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateSamples8bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateSamples8bits */
+
+static int
+combineSeparateSamples16bits (uint8 *in[], uint8 *out, uint32 cols,
+                              uint32 rows, uint16 spp, uint16 bps, 
+                             FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0, bytes_per_sample = 0;
+  uint32 src_rowsize, dst_rowsize; 
+  uint32 bit_offset, src_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint16 maskbits = 0, matchbits = 0;
+  uint16 buff1 = 0, buff2 = 0;
+  uint8  bytebuff = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateSamples16bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+  src_rowsize = ((bps * cols) + 7) / 8;
+  dst_rowsize = ((bps * cols * spp) + 7) / 8;
+  maskbits = (uint16)-1 >> (16 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (16 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        if (little_endian)
+          buff1 = (src[0] << 8) | src[1];
+        else
+          buff1 = (src[1] << 8) | src[0];
+
+       buff1 = (buff1 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 8)
+         {
+           bytebuff = (buff2 >> 8);
+           *dst++ = bytebuff;
+           ready_bits -= 8;
+           /* shift in new bits */
+           buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+           strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+           bytebuff = 0;
+           buff2 = (buff2 | (buff1 >> ready_bits));
+           strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         {
+         dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, s, src_byte, src_bit, dst - out);
+
+         dump_short (dumpfile, format, "Match bits", matchbits);
+         dump_data  (dumpfile, format, "Src   bits", src, 2);
+         dump_short (dumpfile, format, "Buff1 bits", buff1);
+         dump_short (dumpfile, format, "Buff2 bits", buff2);
+         dump_byte  (dumpfile, format, "Write byte", bytebuff);
+         dump_info  (dumpfile, format, "","Ready bits:  %d, %s", ready_bits, action); 
+         }
+       }
+      }
+
+    /* catch any trailing bits at the end of the line */
+    if (ready_bits > 0)
+      {
+      bytebuff = (buff2 >> 8);
+      *dst++ = bytebuff;
+      if ((dumpfile != NULL) && (level == 3))
+       {
+       dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, src_byte, src_bit, dst - out);
+       dump_byte (dumpfile, format, "Final bits", bytebuff);
+       }
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateSamples16bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateSamples16bits */
+
+static int
+combineSeparateSamples24bits (uint8 *in[], uint8 *out, uint32 cols,
+                              uint32 rows, uint16 spp, uint16 bps, 
+                             FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0, bytes_per_sample = 0;
+  uint32 src_rowsize, dst_rowsize; 
+  uint32 bit_offset, src_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint32 maskbits = 0, matchbits = 0;
+  uint32 buff1 = 0, buff2 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateSamples24bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+  src_rowsize = ((bps * cols) + 7) / 8;
+  dst_rowsize = ((bps * cols * spp) + 7) / 8;
+  maskbits =  (uint32)-1 >> ( 32 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (32 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        if (little_endian)
+         buff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+        else
+         buff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+       buff1 = (buff1 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 16)
+         {
+           bytebuff1 = (buff2 >> 24);
+           *dst++ = bytebuff1;
+           bytebuff2 = (buff2 >> 16);
+           *dst++ = bytebuff2;
+           ready_bits -= 16;
+
+           /* shift in new bits */
+           buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+           strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+           bytebuff1 = bytebuff2 = 0;
+           buff2 = (buff2 | (buff1 >> ready_bits));
+           strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         {
+         dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, s, src_byte, src_bit, dst - out);
+         dump_long (dumpfile, format, "Match bits ", matchbits);
+         dump_data (dumpfile, format, "Src   bits ", src, 4);
+         dump_long (dumpfile, format, "Buff1 bits ", buff1);
+         dump_long (dumpfile, format, "Buff2 bits ", buff2);
+         dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+         dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+         dump_info (dumpfile, format, "","Ready bits:   %d, %s", ready_bits, action); 
+         }
+       }
+      }
+
+    /* catch any trailing bits at the end of the line */
+    while (ready_bits > 0)
+      {
+       bytebuff1 = (buff2 >> 24);
+       *dst++ = bytebuff1;
+
+       buff2 = (buff2 << 8);
+       bytebuff2 = bytebuff1;
+       ready_bits -= 8;
+      }
+    if ((dumpfile != NULL) && (level == 3))
+      {
+      dump_info (dumpfile, format, "",
+                  "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                  row + 1, col + 1, src_byte, src_bit, dst - out);
+
+      dump_long (dumpfile, format, "Match bits ", matchbits);
+      dump_data (dumpfile, format, "Src   bits ", src, 4);
+      dump_long (dumpfile, format, "Buff1 bits ", buff1);
+      dump_long (dumpfile, format, "Buff2 bits ", buff2);
+      dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+      dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+      dump_info (dumpfile, format, "", "Ready bits:  %2d", ready_bits); 
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateSamples24bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+  
+  return (0);
+  } /* end combineSeparateSamples24bits */
+
+static int
+combineSeparateSamples32bits (uint8 *in[], uint8 *out, uint32 cols,
+                              uint32 rows, uint16 spp, uint16 bps, 
+                             FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0, bytes_per_sample = 0, shift_width = 0;
+  uint32 src_rowsize, dst_rowsize, bit_offset, src_offset;
+  uint32 src_byte = 0, src_bit = 0;
+  uint32 row, col;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 maskbits = 0, matchbits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateSamples32bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+  src_rowsize = ((bps * cols) + 7) / 8;
+  dst_rowsize = ((bps * cols * spp) + 7) / 8;
+  maskbits =  (uint64)-1 >> ( 64 - bps);
+  shift_width = ((bps + 7) / 8) + 1; 
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (64 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+       {
+       src = in[s] + src_offset + src_byte;
+       if (little_endian)
+         {
+         longbuff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+          longbuff2 = longbuff1;
+         }
+       else
+         {
+         longbuff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+          longbuff2 = longbuff1;
+         }
+       buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+       buff1 = (buff3 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 32)
+         {
+         bytebuff1 = (buff2 >> 56);
+         *dst++ = bytebuff1;
+         bytebuff2 = (buff2 >> 48);
+         *dst++ = bytebuff2;
+         bytebuff3 = (buff2 >> 40);
+         *dst++ = bytebuff3;
+         bytebuff4 = (buff2 >> 32);
+         *dst++ = bytebuff4;
+         ready_bits -= 32;
+                    
+         /* shift in new bits */
+         buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+         strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+         bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+         buff2 = (buff2 | (buff1 >> ready_bits));
+         strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         { 
+         dump_info (dumpfile, format, "",
+                    "Row %3d, Col %3d, Sample %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                    row + 1, col + 1, s, src_byte, src_bit, dst - out);
+         dump_wide (dumpfile, format, "Match bits ", matchbits);
+         dump_data (dumpfile, format, "Src   bits ", src, 8);
+         dump_wide (dumpfile, format, "Buff1 bits ", buff1);
+         dump_wide (dumpfile, format, "Buff2 bits ", buff2);
+         dump_info (dumpfile, format, "", "Ready bits:   %d, %s", ready_bits, action); 
+         }
+       }
+      }
+    while (ready_bits > 0)
+      {
+      bytebuff1 = (buff2 >> 56);
+      *dst++ = bytebuff1;
+      buff2 = (buff2 << 8);
+      ready_bits -= 8;
+      }
+
+    if ((dumpfile != NULL) && (level == 3))
+      {
+      dump_info (dumpfile, format, "",
+                "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                row + 1, col + 1, src_byte, src_bit, dst - out);
+
+      dump_long (dumpfile, format, "Match bits ", matchbits);
+      dump_data (dumpfile, format, "Src   bits ", src, 4);
+      dump_long (dumpfile, format, "Buff1 bits ", buff1);
+      dump_long (dumpfile, format, "Buff2 bits ", buff2);
+      dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+      dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+      dump_info (dumpfile, format, "", "Ready bits:  %2d", ready_bits); 
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateSamples32bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out);
+      }
+    }
+  
+  return (0);
+  } /* end combineSeparateSamples32bits */
+
+static int 
+combineSeparateTileSamplesBytes (unsigned char *srcbuffs[], unsigned char *out,
+                                 uint32 cols, uint32 rows, uint32 imagewidth,
+                                 uint32 tw, uint16 spp, uint16 bps,
+                                 FILE *dumpfile, int format, int level)
+  {
+  int i, bytes_per_sample;
+  uint32 row, col, col_offset, src_rowsize, dst_rowsize, src_offset;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t s;
+
+  src = srcbuffs[0];
+  dst = out;
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateTileSamplesBytes","Invalid buffer address");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8; 
+  src_rowsize = ((bps * tw) + 7) / 8;
+  dst_rowsize = imagewidth * bytes_per_sample * spp;
+  for (row = 0; row < rows; row++)
+    {
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      for (s = 0; s < spp; s++)
+        {
+        dump_info (dumpfile, format, "combineSeparateTileSamplesBytes","Input data, Sample %d", s);
+        dump_buffer(dumpfile, format, 1, cols, row, srcbuffs[s] + (row * src_rowsize));
+        }
+      }
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+#ifdef DEVELMODE
+    TIFFError("","Tile row %4d, Src offset %6d   Dst offset %6d", 
+              row, src_offset, dst - out);
+#endif
+    for (col = 0; col < cols; col++)
+      {
+      col_offset = src_offset + (col * (bps / 8)); 
+      for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+        {
+        src = srcbuffs[s] + col_offset; 
+        for (i = 0; i < bytes_per_sample; i++)
+          *(dst + i) = *(src + i);
+        dst += bytes_per_sample;
+        }   
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateTileSamplesBytes","Output data, combined samples");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateTileSamplesBytes */
+
+static int
+combineSeparateTileSamples8bits (uint8 *in[], uint8 *out, uint32 cols,
+                                 uint32 rows, uint32 imagewidth, 
+                                 uint32 tw, uint16 spp, uint16 bps, 
+                                FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0;
+  uint32 src_rowsize, dst_rowsize, src_offset; 
+  uint32 bit_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint8  maskbits = 0, matchbits = 0;
+  uint8  buff1 = 0, buff2 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[32];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateTileSamples8bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  src_rowsize = ((bps * tw) + 7) / 8;
+  dst_rowsize = ((imagewidth * bps * spp) + 7) / 8;
+  maskbits =  (uint8)-1 >> ( 8 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (8 - src_bit - bps); 
+      /* load up next sample from each plane */
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        buff1 = ((*src) & matchbits) << (src_bit);
+
+        /* If we have a full buffer's worth, write it out */
+        if (ready_bits >= 8)
+          {
+          *dst++ = buff2;
+          buff2 = buff1;
+          ready_bits -= 8;
+          strcpy (action, "Flush");
+          }
+        else
+          {
+          buff2 = (buff2 | (buff1 >> ready_bits));
+          strcpy (action, "Update");
+          }
+        ready_bits += bps;
+        if ((dumpfile != NULL) && (level == 3))
+          {
+          dump_info (dumpfile, format, "",
+                   "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                  row + 1, col + 1, s, src_byte, src_bit, dst - out);
+          dump_byte (dumpfile, format, "Match bits", matchbits);
+          dump_byte (dumpfile, format, "Src   bits", *src);
+          dump_byte (dumpfile, format, "Buff1 bits", buff1);
+          dump_byte (dumpfile, format, "Buff2 bits", buff2);
+          dump_info (dumpfile, format, "","%s", action); 
+         }
+        }
+      }
+
+    if (ready_bits > 0)
+      {
+      buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+      *dst++ = buff1;
+      if ((dumpfile != NULL) && (level == 3))
+        {
+        dump_info (dumpfile, format, "",
+                "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                row + 1, col + 1, src_byte, src_bit, dst - out);
+                 dump_byte (dumpfile, format, "Final bits", buff1);
+        }
+      }
+
+    if ((dumpfile != NULL) && (level >= 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateTileSamples8bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateTileSamples8bits */
+
+static int
+combineSeparateTileSamples16bits (uint8 *in[], uint8 *out, uint32 cols,
+                                  uint32 rows, uint32 imagewidth, 
+                                  uint32 tw, uint16 spp, uint16 bps, 
+                                 FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0;
+  uint32 src_rowsize, dst_rowsize; 
+  uint32 bit_offset, src_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint16 maskbits = 0, matchbits = 0;
+  uint16 buff1 = 0, buff2 = 0;
+  uint8  bytebuff = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateTileSamples16bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  src_rowsize = ((bps * tw) + 7) / 8;
+  dst_rowsize = ((imagewidth * bps * spp) + 7) / 8;
+  maskbits = (uint16)-1 >> (16 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (16 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        if (little_endian)
+          buff1 = (src[0] << 8) | src[1];
+        else
+          buff1 = (src[1] << 8) | src[0];
+       buff1 = (buff1 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 8)
+         {
+           bytebuff = (buff2 >> 8);
+           *dst++ = bytebuff;
+           ready_bits -= 8;
+           /* shift in new bits */
+           buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+           strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+           bytebuff = 0;
+           buff2 = (buff2 | (buff1 >> ready_bits));
+           strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         {
+         dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, s, src_byte, src_bit, dst - out);
+
+         dump_short (dumpfile, format, "Match bits", matchbits);
+         dump_data  (dumpfile, format, "Src   bits", src, 2);
+         dump_short (dumpfile, format, "Buff1 bits", buff1);
+         dump_short (dumpfile, format, "Buff2 bits", buff2);
+         dump_byte  (dumpfile, format, "Write byte", bytebuff);
+         dump_info  (dumpfile, format, "","Ready bits:  %d, %s", ready_bits, action); 
+         }
+       }
+      }
+
+    /* catch any trailing bits at the end of the line */
+    if (ready_bits > 0)
+      {
+      bytebuff = (buff2 >> 8);
+      *dst++ = bytebuff;
+      if ((dumpfile != NULL) && (level == 3))
+       {
+       dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, src_byte, src_bit, dst - out);
+       dump_byte (dumpfile, format, "Final bits", bytebuff);
+       }
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateTileSamples16bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+
+  return (0);
+  } /* end combineSeparateTileSamples16bits */
+
+static int
+combineSeparateTileSamples24bits (uint8 *in[], uint8 *out, uint32 cols,
+                                  uint32 rows, uint32 imagewidth, 
+                                  uint32 tw, uint16 spp, uint16 bps, 
+                                 FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0;
+  uint32 src_rowsize, dst_rowsize; 
+  uint32 bit_offset, src_offset;
+  uint32 row, col, src_byte = 0, src_bit = 0;
+  uint32 maskbits = 0, matchbits = 0;
+  uint32 buff1 = 0, buff2 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateTileSamples24bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  src_rowsize = ((bps * tw) + 7) / 8;
+  dst_rowsize = ((imagewidth * bps * spp) + 7) / 8;
+  maskbits =  (uint32)-1 >> ( 32 - bps);
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (32 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+        {
+       src = in[s] + src_offset + src_byte;
+        if (little_endian)
+         buff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+        else
+         buff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+       buff1 = (buff1 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 16)
+         {
+           bytebuff1 = (buff2 >> 24);
+           *dst++ = bytebuff1;
+           bytebuff2 = (buff2 >> 16);
+           *dst++ = bytebuff2;
+           ready_bits -= 16;
+
+           /* shift in new bits */
+           buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+           strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+           bytebuff1 = bytebuff2 = 0;
+           buff2 = (buff2 | (buff1 >> ready_bits));
+           strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         {
+         dump_info (dumpfile, format, "",
+                      "Row %3d, Col %3d, Samples %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                      row + 1, col + 1, s, src_byte, src_bit, dst - out);
+         dump_long (dumpfile, format, "Match bits ", matchbits);
+         dump_data (dumpfile, format, "Src   bits ", src, 4);
+         dump_long (dumpfile, format, "Buff1 bits ", buff1);
+         dump_long (dumpfile, format, "Buff2 bits ", buff2);
+         dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+         dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+         dump_info (dumpfile, format, "","Ready bits:   %d, %s", ready_bits, action); 
+         }
+       }
+      }
+
+    /* catch any trailing bits at the end of the line */
+    while (ready_bits > 0)
+      {
+       bytebuff1 = (buff2 >> 24);
+       *dst++ = bytebuff1;
+
+       buff2 = (buff2 << 8);
+       bytebuff2 = bytebuff1;
+       ready_bits -= 8;
+      }
+    if ((dumpfile != NULL) && (level == 3))
+      {
+      dump_info (dumpfile, format, "",
+                  "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                  row + 1, col + 1, src_byte, src_bit, dst - out);
+
+      dump_long (dumpfile, format, "Match bits ", matchbits);
+      dump_data (dumpfile, format, "Src   bits ", src, 4);
+      dump_long (dumpfile, format, "Buff1 bits ", buff1);
+      dump_long (dumpfile, format, "Buff2 bits ", buff2);
+      dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+      dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+      dump_info (dumpfile, format, "", "Ready bits:  %2d", ready_bits); 
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateTileSamples24bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out + (row * dst_rowsize));
+      }
+    }
+  
+  return (0);
+  } /* end combineSeparateTileSamples24bits */
+
+static int
+combineSeparateTileSamples32bits (uint8 *in[], uint8 *out, uint32 cols,
+                                  uint32 rows, uint32 imagewidth, 
+                                  uint32 tw, uint16 spp, uint16 bps, 
+                                 FILE *dumpfile, int format, int level)
+  {
+  int    ready_bits = 0, shift_width = 0;
+  uint32 src_rowsize, dst_rowsize, bit_offset, src_offset;
+  uint32 src_byte = 0, src_bit = 0;
+  uint32 row, col;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 maskbits = 0, matchbits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  tsample_t s;
+  unsigned char *src = in[0];
+  unsigned char *dst = out;
+  char           action[8];
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("combineSeparateTileSamples32bits","Invalid input or output buffer");
+    return (1);
+    }
+
+  src_rowsize = ((bps * tw) + 7) / 8;
+  dst_rowsize = ((imagewidth * bps * spp) + 7) / 8;
+  maskbits =  (uint64)-1 >> ( 64 - bps);
+  shift_width = ((bps + 7) / 8) + 1; 
+
+  for (row = 0; row < rows; row++)
+    {
+    ready_bits = 0;
+    buff1 = buff2 = 0;
+    dst = out + (row * dst_rowsize);
+    src_offset = row * src_rowsize;
+    for (col = 0; col < cols; col++)
+      {
+      /* Compute src byte(s) and bits within byte(s) */
+      bit_offset = col * bps;
+      src_byte = bit_offset / 8;
+      src_bit  = bit_offset % 8;
+
+      matchbits = maskbits << (64 - src_bit - bps); 
+      for (s = 0; s < spp; s++)
+       {
+       src = in[s] + src_offset + src_byte;
+       if (little_endian)
+         {
+         longbuff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+         longbuff2 = longbuff1;
+         }
+       else
+         {
+         longbuff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+          longbuff2 = longbuff1;
+         }
+
+       buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+       buff1 = (buff3 & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+       if (ready_bits >= 32)
+         {
+         bytebuff1 = (buff2 >> 56);
+         *dst++ = bytebuff1;
+         bytebuff2 = (buff2 >> 48);
+         *dst++ = bytebuff2;
+         bytebuff3 = (buff2 >> 40);
+         *dst++ = bytebuff3;
+         bytebuff4 = (buff2 >> 32);
+         *dst++ = bytebuff4;
+         ready_bits -= 32;
+                    
+         /* shift in new bits */
+         buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+         strcpy (action, "Flush");
+         }
+       else
+         { /* add another bps bits to the buffer */
+         bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+         buff2 = (buff2 | (buff1 >> ready_bits));
+         strcpy (action, "Update");
+         }
+       ready_bits += bps;
+
+       if ((dumpfile != NULL) && (level == 3))
+         { 
+         dump_info (dumpfile, format, "",
+                    "Row %3d, Col %3d, Sample %d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                    row + 1, col + 1, s, src_byte, src_bit, dst - out);
+         dump_wide (dumpfile, format, "Match bits ", matchbits);
+         dump_data (dumpfile, format, "Src   bits ", src, 8);
+         dump_wide (dumpfile, format, "Buff1 bits ", buff1);
+         dump_wide (dumpfile, format, "Buff2 bits ", buff2);
+         dump_info (dumpfile, format, "", "Ready bits:   %d, %s", ready_bits, action); 
+         }
+       }
+      }
+    while (ready_bits > 0)
+      {
+      bytebuff1 = (buff2 >> 56);
+      *dst++ = bytebuff1;
+      buff2 = (buff2 << 8);
+      ready_bits -= 8;
+      }
+
+    if ((dumpfile != NULL) && (level == 3))
+      {
+      dump_info (dumpfile, format, "",
+                "Row %3d, Col %3d, Src byte offset %3d  bit offset %2d  Dst offset %3d",
+                row + 1, col + 1, src_byte, src_bit, dst - out);
+
+      dump_long (dumpfile, format, "Match bits ", matchbits);
+      dump_data (dumpfile, format, "Src   bits ", src, 4);
+      dump_long (dumpfile, format, "Buff1 bits ", buff1);
+      dump_long (dumpfile, format, "Buff2 bits ", buff2);
+      dump_byte (dumpfile, format, "Write bits1", bytebuff1);
+      dump_byte (dumpfile, format, "Write bits2", bytebuff2);
+      dump_info (dumpfile, format, "", "Ready bits:  %2d", ready_bits); 
+      }
+
+    if ((dumpfile != NULL) && (level == 2))
+      {
+      dump_info (dumpfile, format, "combineSeparateTileSamples32bits","Output data");
+      dump_buffer(dumpfile, format, 1, dst_rowsize, row, out);
+      }
+    }
+  
+  return (0);
+  } /* end combineSeparateTileSamples32bits */
+
+
+static int readSeparateStripsIntoBuffer (TIFF *in, uint8 *obuf, uint32 length, 
+                                         uint32 width, uint16 spp,
+                                         struct dump_opts *dump)
+  {
+  int i, j, bytes_per_sample, bytes_per_pixel, shift_width, result = 1;
+  int32  bytes_read = 0;
+  uint16 bps, nstrips, planar, strips_per_sample;
+  uint32 src_rowsize, dst_rowsize, rows_processed, rps;
+  uint32 rows_this_strip = 0;
+  tsample_t s;
+  tstrip_t  strip;
+  tsize_t scanlinesize = TIFFScanlineSize(in);
+  tsize_t stripsize    = TIFFStripSize(in);
+  unsigned char *srcbuffs[MAX_SAMPLES];
+  unsigned char *buff = NULL;
+  unsigned char *dst = NULL;
+
+  if (obuf == NULL)
+    {
+    TIFFError("readSeparateStripsIntoBuffer","Invalid buffer argument");
+    return (0);
+    }
+
+  memset (srcbuffs, '\0', sizeof(srcbuffs));
+  TIFFGetField(in, TIFFTAG_BITSPERSAMPLE, &bps);
+  TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &planar);
+  TIFFGetFieldDefaulted(in, TIFFTAG_ROWSPERSTRIP, &rps);
+  if (rps > length)
+    rps = length;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if (bytes_per_pixel < (bytes_per_sample + 1))
+    shift_width = bytes_per_pixel;
+  else
+    shift_width = bytes_per_sample + 1;
+
+  src_rowsize = ((bps * width) + 7) / 8;
+  dst_rowsize = ((bps * width * spp) + 7) / 8;
+  dst = obuf;
+
+  if ((dump->infile != NULL) && (dump->level == 3))
+    {
+    dump_info  (dump->infile, dump->format, "", 
+                "Image width %d, length %d, Scanline size, %4d bytes",
+                width, length,  scanlinesize);
+    dump_info  (dump->infile, dump->format, "", 
+                "Bits per sample %d, Samples per pixel %d, Shift width %d",
+               bps, spp, shift_width);
+    }
+
+  /* Libtiff seems to assume/require that data for separate planes are 
+   * written one complete plane after another and not interleaved in any way.
+   * Multiple scanlines and possibly strips of the same plane must be 
+   * written before data for any other plane.
+   */
+  nstrips = TIFFNumberOfStrips(in);
+  strips_per_sample = nstrips /spp;
+
+  for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+    {
+    srcbuffs[s] = NULL;
+    buff = _TIFFmalloc(stripsize);
+    if (!buff)
+      {
+      TIFFError ("readSeparateStripsIntoBuffer", 
+                 "Unable to allocate strip read buffer for sample %d", s);
+      for (i = 0; i < s; i++)
+        _TIFFfree (srcbuffs[i]);
+      return 0;
+      }
+    srcbuffs[s] = buff;
+    }
+
+  rows_processed = 0;
+  for (j = 0; (j < strips_per_sample) && (result == 1); j++)
+    {
+    for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+      {
+      buff = srcbuffs[s];
+      strip = (s * strips_per_sample) + j; 
+      bytes_read = TIFFReadEncodedStrip (in, strip, buff, stripsize);
+      rows_this_strip = bytes_read / src_rowsize;
+      if (bytes_read < 0 && !ignore)
+        {
+        TIFFError(TIFFFileName(in),
+                 "Error, can't read strip %lu for sample %d",
+                  (unsigned long) strip, s + 1);
+        result = 0;
+        break;
+        }
+#ifdef DEVELMODE
+      TIFFError("", "Strip %2d, read %5d bytes for %4d scanlines, shift width %d", 
+               strip, bytes_read, rows_this_strip, shift_width);
+#endif
+      }
+
+    if (rps > rows_this_strip)
+      rps = rows_this_strip;
+    dst = obuf + (dst_rowsize * rows_processed);
+    if ((bps % 8) == 0)
+      {
+      if (combineSeparateSamplesBytes (srcbuffs, dst, width, rps,
+                                       spp, bps, dump->infile, 
+                                       dump->format, dump->level))
+        {
+        result = 0;
+        break;
+       }
+      }
+    else
+      {
+      switch (shift_width)
+        {
+        case 1: if (combineSeparateSamples8bits (srcbuffs, dst, width, rps,
+                                                 spp, bps, dump->infile,
+                                                 dump->format, dump->level))
+                 {
+                  result = 0;
+                  break;
+                 }
+               break;
+        case 2: if (combineSeparateSamples16bits (srcbuffs, dst, width, rps,
+                                                  spp, bps, dump->infile,
+                                                  dump->format, dump->level))
+                 {
+                  result = 0;
+                  break;
+                 }
+               break;
+        case 3: if (combineSeparateSamples24bits (srcbuffs, dst, width, rps,
+                                                  spp, bps, dump->infile,
+                                                  dump->format, dump->level))
+                 {
+                  result = 0;
+                  break;
+                         }
+                break;
+        case 4: 
+        case 5:
+        case 6:
+        case 7:
+        case 8: if (combineSeparateSamples32bits (srcbuffs, dst, width, rps,
+                                                  spp, bps, dump->infile,
+                                                  dump->format, dump->level))
+                 {
+                  result = 0;
+                  break;
+                 }
+               break;
+        default: TIFFError ("readSeparateStripsIntoBuffer", "Unsupported bit depth: %d", bps);
+                  result = 0;
+                  break;
+        }
+      }
+    if ((rows_processed + rps) > length)
+      {
+      rows_processed = length;
+      rps = length - rows_processed;
+      }
+    else
+      rows_processed += rps;
+    }
+
+  /* free any buffers allocated for each plane or scanline and 
+   * any temporary buffers 
+   */
+  for (s = 0; (s < spp) && (s < MAX_SAMPLES); s++)
+    {
+    buff = srcbuffs[s];
+    if (buff != NULL)
+      _TIFFfree(buff);
+    }
+
+  return (result);
+  } /* end readSeparateStripsIntoBuffer */
+
+static int
+get_page_geometry (char *name, struct pagedef *page)
+    {
+    char *ptr;
+    int n; 
+
+    for (ptr = name; *ptr; ptr++)
+      *ptr = (char)tolower((int)*ptr);
+
+    for (n = 0; n < MAX_PAPERNAMES; n++)
+      {
+      if (strcmp(name, PaperTable[n].name) == 0)
+        {
+       page->width = PaperTable[n].width;
+       page->length = PaperTable[n].length;
+        strncpy (page->name, PaperTable[n].name, 15);
+        page->name[15] = '\0';
+        return (0);
+        }
+      }
+
+  return (1);
+  }
+
+
+static void
+initPageSetup (struct pagedef *page, struct pageseg *pagelist, 
+               struct buffinfo seg_buffs[])
+   {
+   int i; 
+
+   strcpy (page->name, "");
+   page->mode = PAGE_MODE_NONE;
+   page->res_unit = RESUNIT_NONE;
+   page->hres = 0.0;
+   page->vres = 0.0;
+   page->width = 0.0;
+   page->length = 0.0;
+   page->hmargin = 0.0;
+   page->vmargin = 0.0;
+   page->rows = 0;
+   page->cols = 0;
+   page->orient = ORIENTATION_NONE;
+
+   for (i = 0; i < MAX_SECTIONS; i++)
+     {
+     pagelist[i].x1 = (uint32)0;
+     pagelist[i].x2 = (uint32)0;
+     pagelist[i].y1 = (uint32)0;
+     pagelist[i].y2 = (uint32)0;
+     pagelist[i].buffsize = (uint32)0;
+     pagelist[i].position = 0;
+     pagelist[i].total = 0;
+     }
+
+   for (i = 0; i < MAX_OUTBUFFS; i++)
+     {
+     seg_buffs[i].size = 0;
+     seg_buffs[i].buffer = NULL;
+     }
+   }
+
+static void
+initImageData (struct image_data *image)
+  {
+  image->xres = 0.0;
+  image->yres = 0.0;
+  image->width = 0;
+  image->length = 0;
+  image->res_unit = RESUNIT_NONE;
+  image->bps = 0;
+  image->spp = 0;
+  image->planar = 0;
+  image->photometric = 0;
+  image->orientation = 0;
+  image->compression = COMPRESSION_NONE;
+  image->adjustments = 0;
+  }
+
+static void
+initCropMasks (struct crop_mask *cps)
+   {
+   int i;
+
+   cps->crop_mode = CROP_NONE;
+   cps->res_unit  = RESUNIT_NONE;
+   cps->edge_ref  = EDGE_TOP;
+   cps->width = 0;
+   cps->length = 0;
+   for (i = 0; i < 4; i++)
+     cps->margins[i] = 0.0;
+   cps->bufftotal = (uint32)0;
+   cps->combined_width = (uint32)0;
+   cps->combined_length = (uint32)0;
+   cps->rotation = (uint16)0;
+   cps->photometric = INVERT_DATA_AND_TAG;
+   cps->mirror   = (uint16)0;
+   cps->invert   = (uint16)0;
+   cps->zones    = (uint32)0;
+   cps->regions  = (uint32)0;
+   for (i = 0; i < MAX_REGIONS; i++)
+     {
+     cps->corners[i].X1 = 0.0;
+     cps->corners[i].X2 = 0.0;
+     cps->corners[i].Y1 = 0.0;
+     cps->corners[i].Y2 = 0.0;
+     cps->regionlist[i].x1 = 0;
+     cps->regionlist[i].x2 = 0;
+     cps->regionlist[i].y1 = 0;
+     cps->regionlist[i].y2 = 0;
+     cps->regionlist[i].width = 0;
+     cps->regionlist[i].length = 0;
+     cps->regionlist[i].buffsize = 0;
+     cps->regionlist[i].buffptr = NULL;
+     cps->zonelist[i].position = 0;
+     cps->zonelist[i].total = 0;
+     }
+   cps->exp_mode = ONE_FILE_COMPOSITE;
+   cps->img_mode = COMPOSITE_IMAGES;
+   }
+
+static void initDumpOptions(struct dump_opts *dump)
+  {
+  dump->debug  = 0;
+  dump->format = DUMP_NONE;
+  dump->level  = 1;
+  sprintf (dump->mode, "w");
+  memset (dump->infilename, '\0', PATH_MAX + 1);
+  memset (dump->outfilename, '\0',PATH_MAX + 1);
+  dump->infile = NULL;
+  dump->outfile = NULL;
+  }
+
+/* Compute pixel offsets into the image for margins and fixed regions */
+static int
+computeInputPixelOffsets(struct crop_mask *crop, struct image_data *image,
+                         struct offset *off)
+  {
+  double scale;
+  float xres, yres;
+  /* Values for these offsets are in pixels from start of image, not bytes,
+   * and are indexed from zero to width - 1 or length - 1 */
+  uint32 tmargin, bmargin, lmargin, rmargin;
+  uint32 startx, endx;   /* offsets of first and last columns to extract */
+  uint32 starty, endy;   /* offsets of first and last row to extract */
+  uint32 width, length, crop_width, crop_length; 
+  uint32 i, max_width, max_length, zwidth, zlength, buffsize;
+  uint32 x1, x2, y1, y2;
+
+  if (image->res_unit != RESUNIT_INCH && image->res_unit != RESUNIT_CENTIMETER)
+    {
+    xres = 1.0;
+    yres = 1.0;
+    }
+  else
+    {
+    if (((image->xres == 0) || (image->yres == 0)) && 
+         (crop->res_unit != RESUNIT_NONE) &&
+       ((crop->crop_mode & CROP_REGIONS) || (crop->crop_mode & CROP_MARGINS) ||
+        (crop->crop_mode & CROP_LENGTH)  || (crop->crop_mode & CROP_WIDTH)))
+      {
+      TIFFError("computeInputPixelOffsets", "Cannot compute margins or fixed size sections without image resolution");
+      TIFFError("computeInputPixelOffsets", "Specify units in pixels and try again");
+      return (-1);
+      }
+    xres = image->xres;
+    yres = image->yres;
+    }
+
+  /* Translate user units to image units */
+  scale = 1.0;
+  switch (crop->res_unit) {
+    case RESUNIT_CENTIMETER:
+         if (image->res_unit == RESUNIT_INCH)
+          scale = 1.0/2.54;
+        break;
+    case RESUNIT_INCH:
+        if (image->res_unit == RESUNIT_CENTIMETER)
+            scale = 2.54;
+        break;
+    case RESUNIT_NONE: /* Dimensions in pixels */
+    default:
+    break;
+    }
+
+  if (crop->crop_mode & CROP_REGIONS)
+    {
+    max_width = max_length = 0;
+    for (i = 0; i < crop->regions; i++)
+      {
+      if ((crop->res_unit == RESUNIT_INCH) || (crop->res_unit == RESUNIT_CENTIMETER))
+        {
+       x1 = (uint32) (crop->corners[i].X1 * scale * xres);
+       x2 = (uint32) (crop->corners[i].X2 * scale * xres);
+       y1 = (uint32) (crop->corners[i].Y1 * scale * yres);
+       y2 = (uint32) (crop->corners[i].Y2 * scale * yres);
+        }
+      else
+        {
+       x1 = (uint32) (crop->corners[i].X1);
+       x2 = (uint32) (crop->corners[i].X2);
+       y1 = (uint32) (crop->corners[i].Y1);
+       y2 = (uint32) (crop->corners[i].Y2);       
+       }
+      if (x1 < 1)
+        crop->regionlist[i].x1 = 0;
+      else
+        crop->regionlist[i].x1 = (uint32) (x1 - 1);
+
+      if (x2 > image->width - 1)
+        crop->regionlist[i].x2 = image->width - 1;
+      else
+        crop->regionlist[i].x2 = (uint32) (x2 - 1);
+      zwidth  = crop->regionlist[i].x2 - crop->regionlist[i].x1 + 1; 
+
+      if (y1 < 1)
+        crop->regionlist[i].y1 = 0;
+      else
+        crop->regionlist[i].y1 = (uint32) (y1 - 1);
+
+      if (y2 > image->length - 1)
+        crop->regionlist[i].y2 = image->length - 1;
+      else
+        crop->regionlist[i].y2 = (uint32) (y2 - 1);
+
+      zlength = crop->regionlist[i].y2 - crop->regionlist[i].y1 + 1; 
+
+      if (zwidth > max_width)
+        max_width = zwidth;
+      if (zlength > max_length)
+        max_length = zlength;
+
+      buffsize = (uint32)
+          (((zwidth * image->bps * image->spp + 7 ) / 8) * (zlength + 1));
+
+      crop->regionlist[i].buffsize = buffsize;
+      crop->bufftotal += buffsize;
+      if (crop->img_mode == COMPOSITE_IMAGES)
+        {
+        switch (crop->edge_ref)
+          {
+          case EDGE_LEFT:
+          case EDGE_RIGHT:
+               crop->combined_length = zlength;
+               crop->combined_width += zwidth;
+               break;
+          case EDGE_BOTTOM:
+          case EDGE_TOP:  /* width from left, length from top */
+          default:
+               crop->combined_width = zwidth;
+               crop->combined_length += zlength;
+              break;
+          }
+       }
+      }
+    return (0);
+    }
+  
+  /* Convert crop margins into offsets into image
+   * Margins are expressed as pixel rows and columns, not bytes
+   */
+  if (crop->crop_mode & CROP_MARGINS)
+    {
+    if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER)
+      { /* User has specified pixels as reference unit */
+      tmargin = (uint32)(crop->margins[0]);
+      lmargin = (uint32)(crop->margins[1]);
+      bmargin = (uint32)(crop->margins[2]);
+      rmargin = (uint32)(crop->margins[3]);
+      }
+    else
+      { /* inches or centimeters specified */
+      tmargin = (uint32)(crop->margins[0] * scale * yres);
+      lmargin = (uint32)(crop->margins[1] * scale * xres);
+      bmargin = (uint32)(crop->margins[2] * scale * yres);
+      rmargin = (uint32)(crop->margins[3] * scale * xres);
+      }
+
+    if ((lmargin + rmargin) > image->width)
+      {
+      TIFFError("computeInputPixelOffsets", "Combined left and right margins exceed image width");
+      lmargin = (uint32) 0;
+      rmargin = (uint32) 0;
+      return (-1);
+      }
+    if ((tmargin + bmargin) > image->length)
+      {
+      TIFFError("computeInputPixelOffsets", "Combined top and bottom margins exceed image length"); 
+      tmargin = (uint32) 0; 
+      bmargin = (uint32) 0;
+      return (-1);
+      }
+    }
+  else
+    { /* no margins requested */
+    tmargin = (uint32) 0;
+    lmargin = (uint32) 0;
+    bmargin = (uint32) 0;
+    rmargin = (uint32) 0;
+    }
+
+  /* Width, height, and margins are expressed as pixel offsets into image */
+  if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER)
+    {
+    if (crop->crop_mode & CROP_WIDTH)
+      width = (uint32)crop->width;
+    else
+      width = image->width - lmargin - rmargin;
+
+    if (crop->crop_mode & CROP_LENGTH)
+      length  = (uint32)crop->length;
+    else
+      length = image->length - tmargin - bmargin;
+    }
+  else
+    {
+    if (crop->crop_mode & CROP_WIDTH)
+      width = (uint32)(crop->width * scale * image->xres);
+    else
+      width = image->width - lmargin - rmargin;
+
+    if (crop->crop_mode & CROP_LENGTH)
+      length  = (uint32)(crop->length * scale * image->yres);
+    else
+      length = image->length - tmargin - bmargin;
+    }
+
+  off->tmargin = tmargin;
+  off->bmargin = bmargin;
+  off->lmargin = lmargin;
+  off->rmargin = rmargin;
+
+  /* Calculate regions defined by margins, width, and length. 
+   * Coordinates expressed as 0 to imagewidth - 1, imagelength - 1,
+   * since they are used to compute offsets into buffers */
+  switch (crop->edge_ref) {
+    case EDGE_BOTTOM:
+         startx = lmargin;
+         if ((startx + width) >= (image->width - rmargin))
+           endx = image->width - rmargin - 1;
+         else
+           endx = startx + width - 1;
+
+         endy = image->length - bmargin - 1;
+         if ((endy - length) <= tmargin)
+           starty = tmargin;
+         else
+           starty = endy - length + 1;
+         break;
+    case EDGE_RIGHT:
+         endx = image->width - rmargin - 1;
+         if ((endx - width) <= lmargin)
+           startx = lmargin;
+         else
+           startx = endx - width + 1;
+
+         starty = tmargin;
+         if ((starty + length) >= (image->length - bmargin))
+           endy = image->length - bmargin - 1;
+         else
+           endy = starty + length - 1;
+         break;
+    case EDGE_TOP:  /* width from left, length from top */
+    case EDGE_LEFT:
+    default:
+         startx = lmargin;
+         if ((startx + width) >= (image->width - rmargin))
+           endx = image->width - rmargin - 1;
+         else
+           endx = startx + width - 1;
+
+         starty = tmargin;
+         if ((starty + length) >= (image->length - bmargin))
+           endy = image->length - bmargin - 1;
+         else
+           endy = starty + length - 1;
+         break;
+    }
+  off->startx = startx;
+  off->starty = starty;
+  off->endx   = endx;
+  off->endy   = endy;
+
+  crop_width  = endx - startx + 1;
+  crop_length = endy - starty + 1;
+
+  if (crop_width <= 0)
+    {
+    TIFFError("computeInputPixelOffsets", 
+               "Invalid left/right margins and /or image crop width requested");
+    return (-1);
+    }
+  if (crop_width > image->width)
+    crop_width = image->width;
+
+  if (crop_length <= 0)
+    {
+    TIFFError("computeInputPixelOffsets", 
+              "Invalid top/bottom margins and /or image crop length requested");
+    return (-1);
+    }
+  if (crop_length > image->length)
+    crop_length = image->length;
+
+  off->crop_width = crop_width;
+  off->crop_length = crop_length;
+
+  return (0);
+  } /* end computeInputPixelOffsets */
+
+/* 
+ * Translate crop options into pixel offsets for one or more regions of the image.
+ * Options are applied in this order: margins, specific width and length, zones,
+ * but all are optional. Margins are relative to each edge. Width, length and
+ * zones are relative to the specified reference edge. Zones are expressed as
+ * X:Y where X is the ordinal value in a set of Y equal sized portions. eg.
+ * 2:3 would indicate the middle third of the region qualified by margins and
+ * any explicit width and length specified. Regions are specified by coordinates
+ * of the top left and lower right corners with range 1 to width or height.
+ */
+
+static int
+getCropOffsets(struct image_data *image, struct crop_mask *crop, struct dump_opts *dump)
+  {
+  struct offset offsets;
+  int    i;
+  int32  test;
+  uint32 seg, total, need_buff = 0;
+  uint32 buffsize;
+  uint32 zwidth, zlength;
+
+  memset(&offsets, '\0', sizeof(struct offset));
+  crop->bufftotal = 0;
+  crop->combined_width  = (uint32)0;
+  crop->combined_length = (uint32)0;
+  crop->selections = 0;
+
+  /* Compute pixel offsets if margins or fixed width or length specified */
+  if ((crop->crop_mode & CROP_MARGINS) ||
+      (crop->crop_mode & CROP_REGIONS) ||
+      (crop->crop_mode & CROP_LENGTH)  || 
+      (crop->crop_mode & CROP_WIDTH))
+    {
+    if (computeInputPixelOffsets(crop, image, &offsets))
+      {
+      TIFFError ("getCropOffsets", "Unable to compute crop margins");
+      return (-1);
+      }
+    need_buff = TRUE;
+    crop->selections = crop->regions;
+    /* Regions are only calculated from top and left edges with no margins */
+    if (crop->crop_mode & CROP_REGIONS)
+      return (0);
+    }
+  else
+    { /* cropped area is the full image */
+    offsets.tmargin = 0;
+    offsets.lmargin = 0;
+    offsets.bmargin = 0;
+    offsets.rmargin = 0;
+    offsets.crop_width = image->width;
+    offsets.crop_length = image->length;
+    offsets.startx = 0;
+    offsets.endx = image->width - 1;
+    offsets.starty = 0;
+    offsets.endy = image->length - 1;
+    need_buff = FALSE;
+    }
+
+  if (dump->outfile != NULL)
+    {
+    dump_info (dump->outfile, dump->format, "", "Margins: Top: %d  Left: %d  Bottom: %d  Right: %d", 
+           offsets.tmargin, offsets.lmargin, offsets.bmargin, offsets.rmargin); 
+    dump_info (dump->outfile, dump->format, "", "Crop region within margins: Adjusted Width:  %6d  Length: %6d", 
+           offsets.crop_width, offsets.crop_length);
+    }
+
+  if (!(crop->crop_mode & CROP_ZONES)) /* no crop zones requested */
+    {
+    if (need_buff == FALSE)  /* No margins or fixed width or length areas */
+      {
+      crop->selections = 0;
+      crop->combined_width  = image->width;
+      crop->combined_length = image->length;
+      return (0);
+      }
+    else 
+      {
+      /* Use one region for margins and fixed width or length areas
+       * even though it was not formally declared as a region.
+       */
+      crop->selections = 1;
+      crop->zones = 1;
+      crop->zonelist[0].total = 1;
+      crop->zonelist[0].position = 1;
+      }
+    }     
+  else
+    crop->selections = crop->zones;
+
+  for (i = 0; i < crop->zones; i++)
+    {
+    seg = crop->zonelist[i].position;
+    total = crop->zonelist[i].total;
+
+    switch (crop->edge_ref) 
+      {
+      case EDGE_LEFT: /* zones from left to right, length from top */
+           zlength = offsets.crop_length;
+          crop->regionlist[i].y1 = offsets.starty;
+           crop->regionlist[i].y2 = offsets.endy;
+
+           crop->regionlist[i].x1 = offsets.startx + 
+                                  (uint32)(offsets.crop_width * 1.0 * (seg - 1) / total);
+           test = (int32)offsets.startx + 
+                  (int32)(offsets.crop_width * 1.0 * seg / total);
+           if (test < 1 )
+             crop->regionlist[i].x2 = 0;
+           else
+            {
+            if (test > (int32)(image->width - 1))
+               crop->regionlist[i].x2 = image->width - 1;
+             else
+              crop->regionlist[i].x2 = test - 1;
+             }
+           zwidth = crop->regionlist[i].x2 - crop->regionlist[i].x1  + 1;
+
+          /* This is passed to extractCropZone or extractCompositeZones */
+           crop->combined_length = (uint32)zlength;
+           if (crop->exp_mode == COMPOSITE_IMAGES)
+             crop->combined_width += (uint32)zwidth;
+           else
+             crop->combined_width = (uint32)zwidth;
+           break;
+      case EDGE_BOTTOM: /* width from left, zones from bottom to top */
+           zwidth = offsets.crop_width;
+          crop->regionlist[i].x1 = offsets.startx;
+           crop->regionlist[i].x2 = offsets.endx;
+
+           test = offsets.endy - (uint32)(offsets.crop_length * 1.0 * seg / total);
+           if (test < 1 )
+            crop->regionlist[i].y1 = 0;
+           else
+            crop->regionlist[i].y1 = test + 1;
+
+           test = offsets.endy - (offsets.crop_length * 1.0 * (seg - 1) / total);
+           if (test < 1 )
+             crop->regionlist[i].y2 = 0;
+           else
+            {
+             if (test > (int32)(image->length - 1))
+               crop->regionlist[i].y2 = image->length - 1;
+             else 
+               crop->regionlist[i].y2 = test;
+            }
+           zlength = crop->regionlist[i].y2 - crop->regionlist[i].y1 + 1;
+
+          /* This is passed to extractCropZone or extractCompositeZones */
+           if (crop->exp_mode == COMPOSITE_IMAGES)
+             crop->combined_length += (uint32)zlength;
+           else
+             crop->combined_length = (uint32)zlength;
+           crop->combined_width = (uint32)zwidth;
+           break;
+      case EDGE_RIGHT: /* zones from right to left, length from top */
+           zlength = offsets.crop_length;
+          crop->regionlist[i].y1 = offsets.starty;
+           crop->regionlist[i].y2 = offsets.endy;
+
+           crop->regionlist[i].x1 = offsets.startx +
+                                  (uint32)(offsets.crop_width  * (total - seg) * 1.0 / total);
+           test = offsets.startx + 
+                 (offsets.crop_width * (total - seg + 1) * 1.0 / total);
+           if (test < 1 )
+             crop->regionlist[i].x2 = 0;
+           else
+            {
+            if (test > (int32)(image->width - 1))
+               crop->regionlist[i].x2 = image->width - 1;
+             else
+               crop->regionlist[i].x2 = test - 1;
+             }
+           zwidth = crop->regionlist[i].x2 - crop->regionlist[i].x1  + 1;
+
+          /* This is passed to extractCropZone or extractCompositeZones */
+           crop->combined_length = (uint32)zlength;
+           if (crop->exp_mode == COMPOSITE_IMAGES)
+             crop->combined_width += (uint32)zwidth;
+           else
+             crop->combined_width = (uint32)zwidth;
+           break;
+      case EDGE_TOP: /* width from left, zones from top to bottom */
+      default:
+           zwidth = offsets.crop_width;
+          crop->regionlist[i].x1 = offsets.startx;
+           crop->regionlist[i].x2 = offsets.endx;
+
+           crop->regionlist[i].y1 = offsets.starty + (uint32)(offsets.crop_length * 1.0 * (seg - 1) / total);
+           test = offsets.starty + (uint32)(offsets.crop_length * 1.0 * seg / total);
+           if (test < 1 )
+             crop->regionlist[i].y2 = 0;
+           else
+            {
+            if (test > (int32)(image->length - 1))
+              crop->regionlist[i].y2 = image->length - 1;
+             else
+              crop->regionlist[i].y2 = test - 1;
+            }
+           zlength = crop->regionlist[i].y2 - crop->regionlist[i].y1 + 1;
+
+          /* This is passed to extractCropZone or extractCompositeZones */
+           if (crop->exp_mode == COMPOSITE_IMAGES)
+             crop->combined_length += (uint32)zlength;
+           else
+             crop->combined_length = (uint32)zlength;
+           crop->combined_width = (uint32)zwidth;
+           break;
+      } /* end switch statement */
+
+    buffsize = (uint32)
+          ((((zwidth * image->bps * image->spp) + 7 ) / 8) * (zlength + 1));
+    crop->regionlist[i].width = (uint32) zwidth;
+    crop->regionlist[i].length = (uint32) zlength;
+    crop->regionlist[i].buffsize = buffsize;
+    crop->bufftotal += buffsize;
+
+
+  if (dump->outfile != NULL)
+    dump_info (dump->outfile, dump->format, "",  "Zone %d, width: %4d, length: %4d, x1: %4d  x2: %4d  y1: %4d  y2: %4d",
+                    i + 1, (uint32)zwidth, (uint32)zlength,
+                   crop->regionlist[i].x1, crop->regionlist[i].x2, 
+                    crop->regionlist[i].y1, crop->regionlist[i].y2);
+    }
+
+  return (0);
+  } /* end getCropOffsets */
+
+
+static int
+computeOutputPixelOffsets (struct crop_mask *crop, struct image_data *image,
+                           struct pagedef *page, struct pageseg *sections,
+                           struct dump_opts* dump)
+  {
+  double scale;
+  double pwidth, plength;          /* Output page width and length in user units*/
+  uint32 iwidth, ilength;          /* Input image width and length in pixels*/
+  uint32 owidth, olength;          /* Output image width and length in pixels*/
+  uint32 orows, ocols;             /* rows and cols for output */
+  uint32 hmargin, vmargin;         /* Horizontal and vertical margins */
+  uint32 x1, x2, y1, y2, line_bytes;
+  unsigned int orientation;
+  uint32 i, j, k;
+  scale = 1.0;
+  if (page->res_unit == RESUNIT_NONE)
+    page->res_unit = image->res_unit;
+
+  switch (image->res_unit) {
+    case RESUNIT_CENTIMETER:
+         if (page->res_unit == RESUNIT_INCH)
+          scale = 1.0/2.54;
+        break;
+    case RESUNIT_INCH:
+        if (page->res_unit == RESUNIT_CENTIMETER)
+            scale = 2.54;
+        break;
+    case RESUNIT_NONE: /* Dimensions in pixels */
+    default:
+    break;
+    }
+
+  /* get width, height, resolutions of input image selection */
+  if (crop->combined_width > 0)
+    iwidth = crop->combined_width;
+  else
+    iwidth = image->width;
+  if (crop->combined_length > 0)
+    ilength = crop->combined_length;
+  else
+    ilength = image->length;
+
+  if (page->hres <= 1.0)
+    page->hres = image->xres;
+  if (page->vres <= 1.0)
+    page->vres = image->yres;
+
+  if ((page->hres < 1.0) || (page->vres < 1.0))
+    {
+    TIFFError("computeOutputPixelOffsets",
+    "Invalid horizontal or vertical resolution specified or read from input image");
+    return (1);
+    }
+
+  /* If no page sizes are being specified, we just use the input image size to
+   * calculate maximum margins that can be taken from image.
+   */
+  if (page->width <= 0)
+    pwidth = iwidth;
+  else
+    pwidth = page->width;
+
+  if (page->length <= 0)
+    plength = ilength;
+  else
+    plength = page->length;
+
+  if (dump->debug)
+    {
+    TIFFError("", "Page size: %s, Vres: %3.2f, Hres: %3.2f, "
+                   "Hmargin: %3.2f, Vmargin: %3.2f",
+            page->name, page->vres, page->hres,
+             page->hmargin, page->vmargin);
+    TIFFError("", "Res_unit: %d, Scale: %3.2f, Page width: %3.2f, length: %3.2f", 
+           page->res_unit, scale, pwidth, plength);
+    }
+
+  /* compute margins at specified unit and resolution */
+  if (page->mode & PAGE_MODE_MARGINS)
+    {
+    if (page->res_unit == RESUNIT_INCH || page->res_unit == RESUNIT_CENTIMETER)
+      { /* inches or centimeters specified */
+      hmargin = (uint32)(page->hmargin * scale * page->hres * ((image->bps + 7)/ 8));
+      vmargin = (uint32)(page->vmargin * scale * page->vres * ((image->bps + 7)/ 8));
+      }
+    else
+      { /* Otherwise user has specified pixels as reference unit */
+      hmargin = (uint32)(page->hmargin * scale * ((image->bps + 7)/ 8));
+      vmargin = (uint32)(page->vmargin * scale * ((image->bps + 7)/ 8));
+      }
+
+    if ((hmargin * 2.0) > (pwidth * page->hres))
+      {
+      TIFFError("computeOutputPixelOffsets", 
+                "Combined left and right margins exceed page width");
+      hmargin = (uint32) 0;
+      return (-1);
+      }
+    if ((vmargin * 2.0) > (plength * page->vres))
+      {
+      TIFFError("computeOutputPixelOffsets", 
+                "Combined top and bottom margins exceed page length"); 
+      vmargin = (uint32) 0; 
+      return (-1);
+      }
+    }
+  else
+    {
+    hmargin = 0;
+    vmargin = 0;
+    }
+
+  if (page->mode & PAGE_MODE_ROWSCOLS )
+    {
+    /* Maybe someday but not for now */
+    if (page->mode & PAGE_MODE_MARGINS)
+      TIFFError("computeOutputPixelOffsets", 
+      "Output margins cannot be specified with rows and columns"); 
+
+    owidth  = TIFFhowmany(iwidth, page->cols);
+    olength = TIFFhowmany(ilength, page->rows);
+    }
+  else
+    {
+    if (page->mode & PAGE_MODE_PAPERSIZE )
+      {
+      owidth  = (uint32)((pwidth * page->hres) - (hmargin * 2));
+      olength = (uint32)((plength * page->vres) - (vmargin * 2));
+      }
+    else
+      {
+      owidth = (uint32)(iwidth - (hmargin * 2 * page->hres));
+      olength = (uint32)(ilength - (vmargin * 2 * page->vres));
+      }
+    }
+
+  if (owidth > iwidth)
+    owidth = iwidth;
+  if (olength > ilength)
+    olength = ilength;
+
+  /* Compute the number of pages required for Portrait or Landscape */
+  switch (page->orient)
+    {
+    case ORIENTATION_NONE:
+    case ORIENTATION_PORTRAIT:
+         ocols = TIFFhowmany(iwidth, owidth);
+         orows = TIFFhowmany(ilength, olength);
+         orientation = ORIENTATION_PORTRAIT;
+         break;
+
+    case ORIENTATION_LANDSCAPE:
+         ocols = TIFFhowmany(iwidth, olength);
+         orows = TIFFhowmany(ilength, owidth);
+         x1 = olength;
+         olength = owidth;
+         owidth = x1;
+         orientation = ORIENTATION_LANDSCAPE;
+         break;
+
+    case ORIENTATION_AUTO:
+    default:
+         x1 = TIFFhowmany(iwidth, owidth);
+         x2 = TIFFhowmany(ilength, olength); 
+         y1 = TIFFhowmany(iwidth, olength);
+         y2 = TIFFhowmany(ilength, owidth); 
+
+         if ( (x1 * x2) < (y1 * y2))
+           { /* Portrait */
+           ocols = x1;
+           orows = x2;
+           orientation = ORIENTATION_PORTRAIT;
+          }
+         else
+           { /* Landscape */
+           ocols = y1;
+           orows = y2;
+           x1 = olength;
+           olength = owidth;
+           owidth = x1;
+           orientation = ORIENTATION_LANDSCAPE;
+           }
+    }
+
+  if (ocols < 1)
+    ocols = 1;
+  if (orows < 1)
+    orows = 1;
+
+  /* If user did not specify rows and cols, set them from calcuation */
+  if (page->rows < 1)
+    page->rows = orows;
+  if (page->cols < 1)
+    page->cols = ocols;
+
+  line_bytes = TIFFhowmany8(owidth * image->bps) * image->spp;
+
+  if ((page->rows * page->cols) > MAX_SECTIONS)
+   {
+   TIFFError("computeOutputPixelOffsets",
+            "Rows and Columns exceed maximum sections\nIncrease resolution or reduce sections");
+   return (-1);
+   }
+
+  /* build the list of offsets for each output section */
+  for (k = 0, i = 0 && k <= MAX_SECTIONS; i < orows; i++)
+    {
+    y1 = (uint32)(olength * i);
+    y2 = (uint32)(olength * (i +  1) - 1);
+    if (y2 >= ilength)
+      y2 = ilength - 1;
+    for (j = 0; j < ocols; j++, k++)
+      {
+      x1 = (uint32)(owidth * j); 
+      x2 = (uint32)(owidth * (j + 1) - 1);
+      if (x2 >= iwidth)
+        x2 = iwidth - 1;
+      sections[k].x1 = x1;
+      sections[k].x2 = x2;
+      sections[k].y1 = y1;
+      sections[k].y2 = y2;
+      sections[k].buffsize = line_bytes * olength;
+      sections[k].position = k + 1;
+      sections[k].total = orows * ocols;
+      } 
+    } 
+  return (0);
+  } /* end computeOutputPixelOffsets */
+
+static int
+loadImage(TIFF* in, struct image_data *image, struct dump_opts *dump, unsigned char **read_ptr)
+  {
+  uint32   i;
+  float    xres = 0.0, yres = 0.0;
+  uint16   nstrips = 0, ntiles = 0, planar = 0;
+  uint16   bps = 0, spp = 0, res_unit = 0;
+  uint16   orientation = 0;
+  uint16   input_compression = 0, input_photometric = 0;
+  uint16   subsampling_horiz, subsampling_vert;
+  uint32   width = 0, length = 0;
+  uint32   stsize = 0, tlsize = 0, buffsize = 0, scanlinesize = 0;
+  uint32   tw = 0, tl = 0;       /* Tile width and length */
+  uint32   tile_rowsize = 0;
+  unsigned char *read_buff = NULL;
+  unsigned char *new_buff  = NULL;
+  int      readunit = 0;
+  static   uint32  prev_readsize = 0;
+
+  TIFFGetFieldDefaulted(in, TIFFTAG_BITSPERSAMPLE, &bps);
+  TIFFGetFieldDefaulted(in, TIFFTAG_SAMPLESPERPIXEL, &spp);
+  TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &planar);
+  TIFFGetFieldDefaulted(in, TIFFTAG_ORIENTATION, &orientation);
+  if (! TIFFGetFieldDefaulted(in, TIFFTAG_PHOTOMETRIC, &input_photometric))
+    TIFFError("loadImage","Image lacks Photometric interpreation tag");
+  if (! TIFFGetField(in, TIFFTAG_IMAGEWIDTH,  &width))
+    TIFFError("loadimage","Image lacks image width tag");
+  if(! TIFFGetField(in, TIFFTAG_IMAGELENGTH, &length))
+    TIFFError("loadimage","Image lacks image length tag");
+  TIFFGetFieldDefaulted(in, TIFFTAG_XRESOLUTION, &xres);
+  TIFFGetFieldDefaulted(in, TIFFTAG_YRESOLUTION, &yres);
+  if (!TIFFGetFieldDefaulted(in, TIFFTAG_RESOLUTIONUNIT, &res_unit))
+    res_unit = RESUNIT_INCH;
+  if (!TIFFGetField(in, TIFFTAG_COMPRESSION, &input_compression))
+    input_compression = COMPRESSION_NONE;
+
+#ifdef DEBUG2
+  char compressionid[16];
+
+  switch (input_compression)
+    {
+    case COMPRESSION_NONE:     /* 1  dump mode */
+        strcpy (compressionid, "None/dump");
+         break;         
+    case COMPRESSION_CCITTRLE:   /* 2 CCITT modified Huffman RLE */
+        strcpy (compressionid, "Huffman RLE");
+         break;         
+    case COMPRESSION_CCITTFAX3:          /* 3 CCITT Group 3 fax encoding */
+        strcpy (compressionid, "Group3 Fax");
+         break;         
+    case COMPRESSION_CCITTFAX4:          /* 4 CCITT Group 4 fax encoding */
+        strcpy (compressionid, "Group4 Fax");
+         break;         
+    case COMPRESSION_LZW:        /* 5 Lempel-Ziv  & Welch */
+        strcpy (compressionid, "LZW");
+         break;         
+    case COMPRESSION_OJPEG:      /* 6 !6.0 JPEG */
+        strcpy (compressionid, "Old Jpeg");
+         break;         
+    case COMPRESSION_JPEG:       /* 7 %JPEG DCT compression */
+        strcpy (compressionid, "New Jpeg");
+         break;         
+    case COMPRESSION_NEXT:       /* 32766 NeXT 2-bit RLE */
+        strcpy (compressionid, "Next RLE");
+         break;         
+    case COMPRESSION_CCITTRLEW:   /* 32771 #1 w/ word alignment */
+        strcpy (compressionid, "CITTRLEW");
+         break;         
+    case COMPRESSION_PACKBITS:   /* 32773 Macintosh RLE */
+        strcpy (compressionid, "Mac Packbits");
+         break;         
+    case COMPRESSION_THUNDERSCAN: /* 32809 ThunderScan RLE */
+        strcpy (compressionid, "Thunderscan");
+         break;         
+    case COMPRESSION_IT8CTPAD:   /* 32895 IT8 CT w/padding */
+        strcpy (compressionid, "IT8 padded");
+         break;         
+    case COMPRESSION_IT8LW:      /* 32896 IT8 Linework RLE */
+        strcpy (compressionid, "IT8 RLE");
+         break;         
+    case COMPRESSION_IT8MP:      /* 32897 IT8 Monochrome picture */
+        strcpy (compressionid, "IT8 mono");
+         break;         
+    case COMPRESSION_IT8BL:      /* 32898 IT8 Binary line art */
+        strcpy (compressionid, "IT8 lineart");
+         break;         
+    case COMPRESSION_PIXARFILM:          /* 32908 Pixar companded 10bit LZW */
+        strcpy (compressionid, "Pixar 10 bit");
+         break;         
+    case COMPRESSION_PIXARLOG:   /* 32909 Pixar companded 11bit ZIP */
+        strcpy (compressionid, "Pixar 11bit");
+         break;         
+    case COMPRESSION_DEFLATE:    /* 32946 Deflate compression */
+        strcpy (compressionid, "Deflate");
+         break;         
+    case COMPRESSION_ADOBE_DEFLATE: /* 8 Deflate compression */
+        strcpy (compressionid, "Adobe deflate");
+         break;         
+    default:
+        strcpy (compressionid, "None/unknown");
+         break;         
+    }
+  TIFFError("loadImage", "Input compression %s", compressionid);
+#endif
+
+  scanlinesize = TIFFScanlineSize(in);
+  image->bps = bps;
+  image->spp = spp;
+  image->planar = planar;
+  image->width = width;
+  image->length = length;
+  image->xres = xres;
+  image->yres = yres;
+  image->res_unit = res_unit;
+  image->compression = input_compression;
+  image->photometric = input_photometric;
+#ifdef DEBUG2
+  char photometricid[12];
+
+  switch (input_photometric)
+    {
+    case PHOTOMETRIC_MINISWHITE:
+         strcpy (photometricid, "MinIsWhite");
+         break;
+    case PHOTOMETRIC_MINISBLACK:
+         strcpy (photometricid, "MinIsBlack");
+         break;
+    case PHOTOMETRIC_RGB:
+         strcpy (photometricid, "RGB");
+         break;
+    case PHOTOMETRIC_PALETTE:
+         strcpy (photometricid, "Palette");
+         break;
+    case PHOTOMETRIC_MASK:
+         strcpy (photometricid, "Mask");
+         break;
+    case PHOTOMETRIC_SEPARATED:
+         strcpy (photometricid, "Separated");
+         break;
+    case PHOTOMETRIC_YCBCR:
+         strcpy (photometricid, "YCBCR");
+         break;
+    case PHOTOMETRIC_CIELAB:
+         strcpy (photometricid, "CIELab");
+         break;
+    case PHOTOMETRIC_ICCLAB:
+         strcpy (photometricid, "ICCLab");
+         break;
+    case PHOTOMETRIC_ITULAB:
+         strcpy (photometricid, "ITULab");
+         break;
+    case PHOTOMETRIC_LOGL:
+         strcpy (photometricid, "LogL");
+         break;
+    case PHOTOMETRIC_LOGLUV:
+         strcpy (photometricid, "LOGLuv");
+         break;
+    default:
+         strcpy (photometricid, "Unknown");
+         break;
+    }
+  TIFFError("loadImage", "Input photometric interpretation %s", photometricid);
+
+#endif
+  image->orientation = orientation;
+  switch (orientation)
+    {
+    case 0:
+    case ORIENTATION_TOPLEFT:
+         image->adjustments = 0;
+        break;
+    case ORIENTATION_TOPRIGHT:
+         image->adjustments = MIRROR_HORIZ;
+        break;
+    case ORIENTATION_BOTRIGHT:
+         image->adjustments = ROTATECW_180;
+        break;
+    case ORIENTATION_BOTLEFT:
+         image->adjustments = MIRROR_VERT; 
+        break;
+    case ORIENTATION_LEFTTOP:
+         image->adjustments = MIRROR_VERT | ROTATECW_90;
+        break;
+    case ORIENTATION_RIGHTTOP:
+         image->adjustments = ROTATECW_90;
+        break;
+    case ORIENTATION_RIGHTBOT:
+         image->adjustments = MIRROR_VERT | ROTATECW_270;
+        break; 
+    case ORIENTATION_LEFTBOT:
+         image->adjustments = ROTATECW_270;
+        break;
+    default:
+         image->adjustments = 0;
+         image->orientation = ORIENTATION_TOPLEFT;
+   }
+
+  if ((bps == 0) || (spp == 0))
+    {
+    TIFFError("loadImage", "Invalid samples per pixel (%d) or bits per sample (%d)",
+              spp, bps);
+    return (-1);
+    }
+
+  if (TIFFIsTiled(in))
+    {
+    readunit = TILE;
+    tlsize = TIFFTileSize(in);
+    ntiles = TIFFNumberOfTiles(in);
+    TIFFGetField(in, TIFFTAG_TILEWIDTH, &tw);
+    TIFFGetField(in, TIFFTAG_TILELENGTH, &tl);
+
+    tile_rowsize  = TIFFTileRowSize(in);      
+    buffsize = tlsize * ntiles;
+
+        
+    if (buffsize < (uint32)(ntiles * tl * tile_rowsize))
+      {
+      buffsize = ntiles * tl * tile_rowsize;
+#ifdef DEBUG2
+      TIFFError("loadImage",
+               "Tilesize %u is too small, using ntiles * tilelength * tilerowsize %lu",
+                tlsize, (unsigned long)buffsize);
+#endif
+      }
+    
+    if (dump->infile != NULL)
+      dump_info (dump->infile, dump->format, "", 
+                 "Tilesize: %u, Number of Tiles: %u, Tile row size: %u",
+                 tlsize, ntiles, tile_rowsize);
+    }
+  else
+    {
+    readunit = STRIP;
+    TIFFGetFieldDefaulted(in, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
+    stsize = TIFFStripSize(in);
+    nstrips = TIFFNumberOfStrips(in);
+    buffsize = stsize * nstrips;
+    
+    if (buffsize < (uint32) (((length * width * spp * bps) + 7) / 8))
+      {
+      buffsize =  ((length * width * spp * bps) + 7) / 8;
+#ifdef DEBUG2
+      TIFFError("loadImage",
+               "Stripsize %u is too small, using imagelength * width * spp * bps / 8 = %lu",
+                stsize, (unsigned long)buffsize);
+#endif
+      }
+    
+    if (dump->infile != NULL)
+      dump_info (dump->infile, dump->format, "",
+                 "Stripsize: %u, Number of Strips: %u, Rows per Strip: %u, Scanline size: %u",
+                stsize, nstrips, rowsperstrip, scanlinesize);
+    }
+  
+  if (input_compression == COMPRESSION_JPEG)
+    {  /* Force conversion to RGB */
+    jpegcolormode = JPEGCOLORMODE_RGB;
+    TIFFSetField(in, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+    }
+  /* The clause up to the read statement is taken from Tom Lane's tiffcp patch */
+  else 
+    {   /* Otherwise, can't handle subsampled input */
+    if (input_photometric == PHOTOMETRIC_YCBCR)
+      {
+      TIFFGetFieldDefaulted(in, TIFFTAG_YCBCRSUBSAMPLING,
+                          &subsampling_horiz, &subsampling_vert);
+      if (subsampling_horiz != 1 || subsampling_vert != 1)
+        {
+       TIFFError("loadImage", 
+               "Can't copy/convert subsampled image with subsampling %d horiz %d vert",
+                subsampling_horiz, subsampling_vert);
+        return (-1);
+        }
+       }
+    }
+  read_buff = *read_ptr;
+  if (!read_buff)
+    read_buff = (unsigned char *)_TIFFmalloc(buffsize);
+  else
+    {
+    if (prev_readsize < buffsize)
+      {
+      new_buff = _TIFFrealloc(read_buff, buffsize);
+      if (!new_buff)
+        {
+       free (read_buff);
+        read_buff = (unsigned char *)_TIFFmalloc(buffsize);
+        }
+      else
+        read_buff = new_buff;
+      }
+    }
+
+  if (!read_buff)
+    {
+    TIFFError("loadImage", "Unable to allocate/reallocate read buffer");
+    return (-1);
+    }
+
+  prev_readsize = buffsize;
+  *read_ptr = read_buff;
+
+  /* N.B. The read functions used copy separate plane data into a buffer as interleaved
+   * samples rather than separate planes so the same logic works to extract regions
+   * regardless of the way the data are organized in the input file.
+   */
+  switch (readunit) {
+    case STRIP:
+         if (planar == PLANARCONFIG_CONTIG)
+           {
+            if (!(readContigStripsIntoBuffer(in, read_buff)))
+            {
+            TIFFError("loadImage", "Unable to read contiguous strips into buffer");
+            return (-1);
+             }
+           }
+         else
+           {
+          if (!(readSeparateStripsIntoBuffer(in, read_buff, length, width, spp, dump)))
+            {
+            TIFFError("loadImage", "Unable to read separate strips into buffer");
+            return (-1);
+             }
+           }
+         break;
+
+    case TILE:
+         if (planar == PLANARCONFIG_CONTIG)
+           {
+          if (!(readContigTilesIntoBuffer(in, read_buff, length, width, tw, tl, spp, bps)))
+            {
+            TIFFError("loadImage", "Unable to read contiguous tiles into buffer");
+            return (-1);
+             }
+           }
+         else
+           {
+          if (!(readSeparateTilesIntoBuffer(in, read_buff, length, width, tw, tl, spp, bps)))
+            {
+            TIFFError("loadImage", "Unable to read separate tiles into buffer");
+            return (-1);
+             }
+           }
+         break;
+    default: TIFFError("loadImage", "Unsupported image file format");
+          return (-1);
+          break;
+    }
+  if ((dump->infile != NULL) && (dump->level == 2))
+    {
+    dump_info  (dump->infile, dump->format, "loadImage", 
+                "Image width %d, length %d, Raw image data, %4d bytes",
+                width, length,  buffsize);
+    dump_info  (dump->infile, dump->format, "", 
+                "Bits per sample %d, Samples per pixel %d", bps, spp);
+
+    for (i = 0; i < length; i++)
+      dump_buffer(dump->infile, dump->format, 1, scanlinesize, 
+                  i, read_buff + (i * scanlinesize));
+    }
+  return (0);
+  }   /* end loadImage */
+
+static int  correct_orientation(struct image_data *image, unsigned char **work_buff_ptr)
+  {
+  uint16 mirror, rotation;
+  unsigned char *work_buff;
+
+  work_buff = *work_buff_ptr;
+  if ((image == NULL) || (work_buff == NULL))
+    {
+    TIFFError ("correct_orientatin", "Invalid image or buffer pointer");
+    return (-1);
+    }
+
+  if ((image->adjustments & MIRROR_HORIZ) || (image->adjustments & MIRROR_VERT))
+    {
+    mirror = (uint16)(image->adjustments & MIRROR_BOTH);
+    if (mirrorImage(image->spp, image->bps, mirror, 
+        image->width, image->length, work_buff))
+      {
+      TIFFError ("correct_orientation", "Unable to mirror image");
+      return (-1);
+      }
+    }
+
+  if (image->adjustments & ROTATE_ANY)
+    {
+    if (image->adjustments & ROTATECW_90)
+      rotation = (uint16) 90;
+    else
+    if (image->adjustments & ROTATECW_180)
+      rotation = (uint16) 180;
+    else
+    if (image->adjustments & ROTATECW_270)
+      rotation = (uint16) 270;
+    else
+      {
+      TIFFError ("correct_orientation", "Invalid rotation value: %d", 
+                  image->adjustments & ROTATE_ANY);
+      return (-1);
+      }
+    if (rotateImage(rotation, image, &image->width, &image->length, work_buff_ptr))
+      {
+      TIFFError ("correct_orientation", "Unable to rotate image");
+      return (-1);
+      }
+    image->orientation = ORIENTATION_TOPLEFT;
+    }
+
+  return (0);
+  } /* end correct_orientation */
+
+
+/* Extract multiple zones from an image and combine into a single composite image */
+static int
+extractCompositeRegions(struct image_data *image,  struct crop_mask *crop, 
+                        unsigned char *read_buff, unsigned char *crop_buff)
+  {
+  int       shift_width, bytes_per_sample, bytes_per_pixel;
+  uint32    i, trailing_bits, prev_trailing_bits;
+  uint32    row, first_row, last_row, first_col, last_col;
+  uint32    src_rowsize, dst_rowsize, src_offset, dst_offset;
+  uint32    crop_width, crop_length, img_width, img_length;
+  uint32    prev_length, prev_width, composite_width;
+  uint16    bps, spp;
+  uint8    *src, *dst;
+  tsample_t count, sample = 0;   /* Update to extract one or more samples */
+
+  img_width = image->width;
+  img_length = image->length;
+  bps = image->bps;
+  spp = image->spp;
+  count = spp;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if ((bps % 8) == 0)
+    shift_width = 0;
+  else
+    {
+    if (bytes_per_pixel < (bytes_per_sample + 1))
+      shift_width = bytes_per_pixel;
+    else
+      shift_width = bytes_per_sample + 1;
+    }
+  src = read_buff;
+  dst = crop_buff;
+
+  /* These are setup for adding additional sections */
+  prev_width = prev_length = 0;
+  prev_trailing_bits = trailing_bits = 0;
+  composite_width = crop->combined_width;
+  crop->combined_width = 0;
+  crop->combined_length = 0;
+
+  for (i = 0; i < crop->selections; i++)
+    {
+    /* rows, columns, width, length are expressed in pixels */
+    first_row = crop->regionlist[i].y1;
+    last_row  = crop->regionlist[i].y2;
+    first_col = crop->regionlist[i].x1;
+    last_col  = crop->regionlist[i].x2;
+
+    crop_width = last_col - first_col + 1;
+    crop_length = last_row - first_row + 1;
+
+    /* These should not be needed for composite images */
+    crop->regionlist[i].width = crop_width;
+    crop->regionlist[i].length = crop_length;
+    crop->regionlist[i].buffptr = crop_buff;
+
+    src_rowsize = ((img_width * bps * spp) + 7) / 8;
+    dst_rowsize = (((crop_width * bps * count) + 7) / 8);
+
+    switch (crop->edge_ref)
+      {
+      default:
+      case EDGE_TOP:
+      case EDGE_BOTTOM:
+          if ((i > 0) && (crop_width != crop->regionlist[i - 1].width))
+             {
+            TIFFError ("extractCompositeRegions", 
+                          "Only equal width regions can be combined for -E top or bottom");
+            return (1);
+             }
+
+           crop->combined_width = crop_width;
+           crop->combined_length += crop_length;
+
+           for (row = first_row; row <= last_row; row++)
+             {
+            src_offset = row * src_rowsize;
+            dst_offset = (row - first_row) * dst_rowsize;
+             src = read_buff + src_offset;
+             dst = crop_buff + dst_offset + (prev_length * dst_rowsize);
+             switch (shift_width)
+               {
+               case 0: if (extractContigSamplesBytes (src, dst, img_width, sample,
+                                                      spp, bps, count, first_col,
+                                                      last_col + 1))
+                         {
+                        TIFFError("extractCompositeRegions",
+                                   "Unable to extract row %d", row);
+                        return (1);
+                        }
+                      break;
+               case 1: if (bps == 1)
+                         { 
+                         if (extractContigSamplesShifted8bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                           {
+                          TIFFError("extractCompositeRegions",
+                                     "Unable to extract row %d", row);
+                          return (1);
+                          }
+                        break;
+                        }
+                       else
+                         if (extractContigSamplesShifted16bits (src, dst, img_width,
+                                                                sample, spp, bps, count, 
+                                                                first_col, last_col + 1,
+                                                                prev_trailing_bits))
+                           {
+                          TIFFError("extractCompositeRegions",
+                                     "Unable to extract row %d", row);
+                          return (1);
+                          }
+                       break;
+               case 2:  if (extractContigSamplesShifted24bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                          {
+                         TIFFError("extractCompositeRegions",
+                                    "Unable to extract row %d", row);
+                         return (1);
+                         }
+                       break;
+               case 3:
+               case 4:
+               case 5:  if (extractContigSamplesShifted32bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                          {
+                         TIFFError("extractCompositeRegions",
+                                    "Unable to extract row %d", row);
+                         return (1);
+                         }
+                       break;
+               default: TIFFError("extractCompositeRegions", "Unsupported bit depth %d", bps);
+                       return (1);
+              }
+             }
+           prev_length += crop_length;
+          break;
+      case EDGE_LEFT:  /* splice the pieces of each row together, side by side */
+      case EDGE_RIGHT:
+          if ((i > 0) && (crop_length != crop->regionlist[i - 1].length))
+             {
+            TIFFError ("extractCompositeRegions", 
+                          "Only equal length regions can be combined for -E left or right");
+            return (1);
+             }
+           crop->combined_width += crop_width;
+           crop->combined_length = crop_length;
+           dst_rowsize = (((composite_width * bps * count) + 7) / 8);
+           trailing_bits = (crop_width * bps * count) % 8;
+           for (row = first_row; row <= last_row; row++)
+             {
+            src_offset = row * src_rowsize;
+            dst_offset = (row - first_row) * dst_rowsize;
+             src = read_buff + src_offset;
+             dst = crop_buff + dst_offset + prev_width;
+
+             switch (shift_width)
+               {
+               case 0: if (extractContigSamplesBytes (src, dst, img_width,
+                                                      sample, spp, bps, count,
+                                                      first_col, last_col + 1))
+                         {
+                        TIFFError("extractCompositeRegions",
+                                   "Unable to extract row %d", row);
+                        return (1);
+                        }
+                      break;
+               case 1: if (bps == 1)
+                         { 
+                         if (extractContigSamplesShifted8bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                           {
+                          TIFFError("extractCompositeRegions",
+                                     "Unable to extract row %d", row);
+                          return (1);
+                          }
+                        break;
+                        }
+                       else
+                         if (extractContigSamplesShifted16bits (src, dst, img_width,
+                                                                sample, spp, bps, count, 
+                                                                first_col, last_col + 1,
+                                                                prev_trailing_bits))
+                           {
+                          TIFFError("extractCompositeRegions",
+                                     "Unable to extract row %d", row);
+                          return (1);
+                          }
+                       break;
+              case 2:  if (extractContigSamplesShifted24bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                          {
+                         TIFFError("extractCompositeRegions",
+                                    "Unable to extract row %d", row);
+                         return (1);
+                         }
+                       break;
+               case 3:
+               case 4:
+               case 5:  if (extractContigSamplesShifted32bits (src, dst, img_width,
+                                                               sample, spp, bps, count, 
+                                                               first_col, last_col + 1,
+                                                               prev_trailing_bits))
+                          {
+                         TIFFError("extractCompositeRegions",
+                                    "Unable to extract row %d", row);
+                         return (1);
+                         }
+                       break;
+               default: TIFFError("extractCompositeRegions", "Unsupported bit depth %d", bps);
+                       return (1);
+              }
+            }
+          prev_width += (crop_width * bps * count) / 8;
+           prev_trailing_bits += trailing_bits;
+           if (prev_trailing_bits > 7)
+            prev_trailing_bits-= 8;
+          break;
+      }
+    }
+  if (crop->combined_width != composite_width)
+    TIFFError("combineSeparateRegions","Combined width does not match composite width");
+      
+  return (0);
+  }  /* end extractCompositeRegions */
+
+/* Copy a single region of input buffer to an output buffer. 
+ * The read functions used copy separate plane data into a buffer 
+ * as interleaved samples rather than separate planes so the same
+ * logic works to extract regions regardless of the way the data 
+ * are organized in the input file. This function can be used to
+ * extract one or more samples from the input image by updating the 
+ * parameters for starting sample and number of samples to copy in the
+ * fifth and eighth arguments of the call to extractContigSamples.
+ * They would be passed as new elements of the crop_mask struct.
+ */
+
+static int
+extractSeparateRegion(struct image_data *image,  struct crop_mask *crop,
+                      unsigned char *read_buff, unsigned char *crop_buff,
+                      int region)
+  {
+  int     shift_width, prev_trailing_bits = 0;
+  uint32  bytes_per_sample, bytes_per_pixel;
+  uint32  src_rowsize, dst_rowsize;
+  uint32  row, first_row, last_row, first_col, last_col;
+  uint32  src_offset, dst_offset;
+  uint32  crop_width, crop_length, img_width, img_length;
+  uint16  bps, spp;
+  uint8  *src, *dst;
+  tsample_t count, sample = 0;   /* Update to extract more or more samples */
+
+  img_width = image->width;
+  img_length = image->length;
+  bps = image->bps;
+  spp = image->spp;
+  count = spp;
+
+  bytes_per_sample = (bps + 7) / 8; 
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if ((bps % 8) == 0)
+    shift_width = 0; /* Byte aligned data only */
+  else
+    {
+    if (bytes_per_pixel < (bytes_per_sample + 1))
+      shift_width = bytes_per_pixel;
+    else
+      shift_width = bytes_per_sample + 1;
+    }
+
+  /* rows, columns, width, length are expressed in pixels */
+  first_row = crop->regionlist[region].y1;
+  last_row  = crop->regionlist[region].y2;
+  first_col = crop->regionlist[region].x1;
+  last_col  = crop->regionlist[region].x2;
+
+  crop_width = last_col - first_col + 1;
+  crop_length = last_row - first_row + 1;
+
+  crop->regionlist[region].width = crop_width;
+  crop->regionlist[region].length = crop_length;
+  crop->regionlist[region].buffptr = crop_buff;
+
+  src = read_buff;
+  dst = crop_buff;
+  src_rowsize = ((img_width * bps * spp) + 7) / 8;
+  dst_rowsize = (((crop_width * bps * spp) + 7) / 8);
+
+  for (row = first_row; row <= last_row; row++)
+    {
+    src_offset = row * src_rowsize;
+    dst_offset = (row  - first_row) * dst_rowsize;
+    src = read_buff + src_offset;
+    dst = crop_buff + dst_offset;
+
+    switch (shift_width)
+      {
+      case 0: if (extractContigSamplesBytes (src, dst, img_width, sample,
+                                             spp, bps, count, first_col,
+                                             last_col + 1))
+                {
+               TIFFError("extractSeparateRegion",
+                          "Unable to extract row %d", row);
+               return (1);
+               }
+             break;
+      case 1: if (bps == 1)
+                { 
+                if (extractContigSamplesShifted8bits (src, dst, img_width,
+                                                      sample, spp, bps, count, 
+                                                      first_col, last_col + 1,
+                                                      prev_trailing_bits))
+                  {
+                 TIFFError("extractSeparateRegion",
+                            "Unable to extract row %d", row);
+                 return (1);
+                 }
+                 break;
+               }
+              else
+                if (extractContigSamplesShifted16bits (src, dst, img_width,
+                                                       sample, spp, bps, count, 
+                                                       first_col, last_col + 1,
+                                                       prev_trailing_bits))
+                  {
+                 TIFFError("extractSeparateRegion",
+                            "Unable to extract row %d", row);
+                 return (1);
+                 }
+             break;
+      case 2:  if (extractContigSamplesShifted24bits (src, dst, img_width,
+                                                     sample, spp, bps, count, 
+                                                     first_col, last_col + 1,
+                                                     prev_trailing_bits))
+                {
+               TIFFError("extractSeparateRegion",
+                          "Unable to extract row %d", row);
+               return (1);
+               }
+             break;
+      case 3:
+      case 4:
+      case 5:  if (extractContigSamplesShifted32bits (src, dst, img_width,
+                                                     sample, spp, bps, count, 
+                                                     first_col, last_col + 1,
+                                                     prev_trailing_bits))
+                {
+               TIFFError("extractSeparateRegion",
+                          "Unable to extract row %d", row);
+               return (1);
+               }
+             break;
+      default: TIFFError("extractSeparateRegion", "Unsupported bit depth %d", bps);
+              return (1);
+      }
+    }
+          
+  return (0);
+  }  /* end extractSeparateRegion */
+
+static int
+extractImageSection(struct image_data *image, struct pageseg *section, 
+                    unsigned char *src_buff, unsigned char *sect_buff)
+  {
+  unsigned  char  bytebuff1, bytebuff2;
+  unsigned  char *src, *dst;
+
+  uint32    img_width, img_length, img_rowsize;
+  uint32    j, shift1, shift2, trailing_bits;
+  uint32    row, first_row, last_row, first_col, last_col;
+  uint32    src_offset, dst_offset, row_offset, col_offset;
+  uint32    offset1, offset2, full_bytes;
+  uint32    sect_width, sect_length;
+  uint16    bps, spp;
+
+#ifdef DEVELMODE
+  int      k;
+  unsigned char bitset;
+  static char *bitarray = NULL;
+#endif
+
+  img_width = image->width;
+  img_length = image->length;
+  bps = image->bps;
+  spp = image->spp;
+
+  src = src_buff;
+  dst = sect_buff;
+  src_offset = 0;
+  dst_offset = 0;
+
+#ifdef DEVELMODE
+  if (bitarray == NULL)
+    {
+    if ((bitarray = (char *)malloc(img_width)) == NULL)
+      {
+      TIFFError ("", "DEBUG: Unable to allocate debugging bitarray");
+      return (-1);
+      }
+    }
+#endif
+
+  /* rows, columns, width, length are expressed in pixels */
+  first_row = section->y1;
+  last_row  = section->y2;
+  first_col = section->x1;
+  last_col  = section->x2;
+
+  sect_width = last_col - first_col + 1;
+  sect_length = last_row - first_row + 1;
+  img_rowsize = ((img_width * bps + 7) / 8) * spp;
+  full_bytes = (sect_width * spp * bps) / 8;   /* number of COMPLETE bytes per row in section */
+  trailing_bits = (sect_width * bps) % 8;
+
+#ifdef DEVELMODE
+    TIFFError ("", "First row: %d, last row: %d, First col: %d, last col: %d\n",
+           first_row, last_row, first_col, last_col);
+    TIFFError ("", "Image width: %d, Image length: %d, bps: %d, spp: %d\n",
+          img_width, img_length, bps, spp);
+    TIFFError ("", "Sect  width: %d,  Sect length: %d, full bytes: %d trailing bits %d\n", 
+           sect_width, sect_length, full_bytes, trailing_bits);
+#endif
+
+  if ((bps % 8) == 0)
+    {
+    col_offset = first_col * spp * bps / 8;
+    for (row = first_row; row <= last_row; row++)
+      {
+      /* row_offset = row * img_width * spp * bps / 8; */
+      row_offset = row * img_rowsize;
+      src_offset = row_offset + col_offset;
+
+#ifdef DEVELMODE
+        TIFFError ("", "Src offset: %8d, Dst offset: %8d", src_offset, dst_offset); 
+#endif
+      _TIFFmemcpy (sect_buff + dst_offset, src_buff + src_offset, full_bytes);
+      dst_offset += full_bytes;
+      }        
+    }
+  else
+    { /* bps != 8 */
+    shift1  = spp * ((first_col * bps) % 8);
+    shift2  = spp * ((last_col * bps) % 8);
+    for (row = first_row; row <= last_row; row++)
+      {
+      /* pull out the first byte */
+      row_offset = row * img_rowsize;
+      offset1 = row_offset + (first_col * bps / 8);
+      offset2 = row_offset + (last_col * bps / 8);
+
+#ifdef DEVELMODE
+      for (j = 0, k = 7; j < 8; j++, k--)
+        {
+        bitset = *(src_buff + offset1) & (((unsigned char)1 << k)) ? 1 : 0;
+        sprintf(&bitarray[j], (bitset) ? "1" : "0");
+        }
+      sprintf(&bitarray[8], " ");
+      sprintf(&bitarray[9], " ");
+      for (j = 10, k = 7; j < 18; j++, k--)
+        {
+        bitset = *(src_buff + offset2) & (((unsigned char)1 << k)) ? 1 : 0;
+        sprintf(&bitarray[j], (bitset) ? "1" : "0");
+        }
+      bitarray[18] = '\0';
+      TIFFError ("", "Row: %3d Offset1: %d,  Shift1: %d,    Offset2: %d,  Shift2:  %d\n", 
+                 row, offset1, shift1, offset2, shift2); 
+#endif
+
+      bytebuff1 = bytebuff2 = 0;
+      if (shift1 == 0) /* the region is byte and sample alligned */
+        {
+       _TIFFmemcpy (sect_buff + dst_offset, src_buff + offset1, full_bytes);
+
+#ifdef DEVELMODE
+       TIFFError ("", "        Alligned data src offset1: %8d, Dst offset: %8d\n", offset1, dst_offset); 
+       sprintf(&bitarray[18], "\n");
+       sprintf(&bitarray[19], "\t");
+        for (j = 20, k = 7; j < 28; j++, k--)
+          {
+          bitset = *(sect_buff + dst_offset) & (((unsigned char)1 << k)) ? 1 : 0;
+          sprintf(&bitarray[j], (bitset) ? "1" : "0");
+          }
+        bitarray[28] = ' ';
+        bitarray[29] = ' ';
+#endif
+        dst_offset += full_bytes;
+
+        if (trailing_bits != 0)
+          {
+         bytebuff2 = src_buff[offset2] & ((unsigned char)255 << (7 - shift2));
+          sect_buff[dst_offset] = bytebuff2;
+#ifdef DEVELMODE
+         TIFFError ("", "        Trailing bits src offset:  %8d, Dst offset: %8d\n", 
+                              offset2, dst_offset); 
+          for (j = 30, k = 7; j < 38; j++, k--)
+            {
+            bitset = *(sect_buff + dst_offset) & (((unsigned char)1 << k)) ? 1 : 0;
+            sprintf(&bitarray[j], (bitset) ? "1" : "0");
+            }
+          bitarray[38] = '\0';
+          TIFFError ("", "\tFirst and last bytes before and after masking:\n\t%s\n\n", bitarray);
+#endif
+          dst_offset++;
+          }
+        }
+      else   /* each destination byte will have to be built from two source bytes*/
+        {
+#ifdef DEVELMODE
+         TIFFError ("", "        Unalligned data src offset: %8d, Dst offset: %8d\n", offset1 , dst_offset); 
+#endif
+        for (j = 0; j <= full_bytes; j++) 
+          {
+         bytebuff1 = src_buff[offset1 + j] & ((unsigned char)255 >> shift1);
+         bytebuff2 = src_buff[offset1 + j + 1] & ((unsigned char)255 << (7 - shift1));
+          sect_buff[dst_offset + j] = (bytebuff1 << shift1) | (bytebuff2 >> (8 - shift1));
+          }
+#ifdef DEVELMODE
+       sprintf(&bitarray[18], "\n");
+       sprintf(&bitarray[19], "\t");
+        for (j = 20, k = 7; j < 28; j++, k--)
+          {
+          bitset = *(sect_buff + dst_offset) & (((unsigned char)1 << k)) ? 1 : 0;
+          sprintf(&bitarray[j], (bitset) ? "1" : "0");
+          }
+        bitarray[28] = ' ';
+        bitarray[29] = ' ';
+#endif
+        dst_offset += full_bytes;
+
+        if (trailing_bits != 0)
+          {
+#ifdef DEVELMODE
+           TIFFError ("", "        Trailing bits   src offset: %8d, Dst offset: %8d\n", offset1 + full_bytes, dst_offset); 
+#endif
+         if (shift2 > shift1)
+            {
+           bytebuff1 = src_buff[offset1 + full_bytes] & ((unsigned char)255 << (7 - shift2));
+            bytebuff2 = bytebuff1 & ((unsigned char)255 << shift1);
+            sect_buff[dst_offset] = bytebuff2;
+#ifdef DEVELMODE
+           TIFFError ("", "        Shift2 > Shift1\n"); 
+#endif
+            }
+          else
+            {
+           if (shift2 < shift1)
+              {
+              bytebuff2 = ((unsigned char)255 << (shift1 - shift2 - 1));
+             sect_buff[dst_offset] &= bytebuff2;
+#ifdef DEVELMODE
+             TIFFError ("", "        Shift2 < Shift1\n"); 
+#endif
+              }
+#ifdef DEVELMODE
+            else
+             TIFFError ("", "        Shift2 == Shift1\n"); 
+#endif
+            }
+         }
+#ifdef DEVELMODE
+         sprintf(&bitarray[28], " ");
+         sprintf(&bitarray[29], " ");
+          for (j = 30, k = 7; j < 38; j++, k--)
+            {
+            bitset = *(sect_buff + dst_offset) & (((unsigned char)1 << k)) ? 1 : 0;
+            sprintf(&bitarray[j], (bitset) ? "1" : "0");
+            }
+          bitarray[38] = '\0';
+          TIFFError ("", "\tFirst and last bytes before and after masking:\n\t%s\n\n", bitarray);
+#endif
+        dst_offset++;
+        }
+      }
+    }
+
+  return (0);
+  } /* end extractImageSection */
+
+static int 
+writeSelections(TIFF *in, TIFF **out, struct crop_mask *crop, 
+                struct image_data *image, struct dump_opts *dump,
+                struct buffinfo seg_buffs[], char *mp, char *filename, 
+                unsigned int *page, unsigned int total_pages)
+  {
+  int i, page_count;
+  int autoindex = 0;
+  unsigned char *crop_buff = NULL;
+
+  /* Where we open a new file depends on the export mode */  
+  switch (crop->exp_mode)
+    {
+    case ONE_FILE_COMPOSITE: /* Regions combined into single image */
+         autoindex = 0;
+         crop_buff = seg_buffs[0].buffer;
+         if (update_output_file (out, mp, autoindex, filename, page))
+           return (1);
+         page_count = total_pages;
+         if (writeCroppedImage(in, *out, image, dump,
+                               crop->combined_width, 
+                               crop->combined_length,
+                               crop_buff, *page, total_pages))
+            {
+             TIFFError("writeRegions", "Unable to write new image");
+             return (-1);
+             }
+        break;
+    case ONE_FILE_SEPARATED: /* Regions as separated images */
+         autoindex = 0;
+         if (update_output_file (out, mp, autoindex, filename, page))
+           return (1);
+         page_count = crop->selections * total_pages;
+         for (i = 0; i < crop->selections; i++)
+           {
+           crop_buff = seg_buffs[i].buffer;
+           if (writeCroppedImage(in, *out, image, dump,
+                                 crop->regionlist[i].width, 
+                                 crop->regionlist[i].length, 
+                                 crop_buff, *page, page_count))
+             {
+             TIFFError("writeRegions", "Unable to write new image");
+             return (-1);
+             }
+          }
+         break;
+    case FILE_PER_IMAGE_COMPOSITE: /* Regions as composite image */
+         autoindex = 1;
+         if (update_output_file (out, mp, autoindex, filename, page))
+           return (1);
+
+         crop_buff = seg_buffs[0].buffer;
+         if (writeCroppedImage(in, *out, image, dump,
+                               crop->combined_width, 
+                               crop->combined_length, 
+                               crop_buff, *page, total_pages))
+           {
+           TIFFError("writeRegions", "Unable to write new image");
+           return (-1);
+           }
+         break;
+    case FILE_PER_IMAGE_SEPARATED: /* Regions as separated images */
+         autoindex = 1;
+         page_count = crop->selections;
+         if (update_output_file (out, mp, autoindex, filename, page))
+           return (1);
+                
+         for (i = 0; i < crop->selections; i++)
+           {
+           crop_buff = seg_buffs[i].buffer;
+           /* Write the current region to the current file */
+           if (writeCroppedImage(in, *out, image, dump,
+                                 crop->regionlist[i].width, 
+                                 crop->regionlist[i].length, 
+                                 crop_buff, *page, page_count))
+             {
+             TIFFError("writeRegions", "Unable to write new image");
+             return (-1);
+             }
+           }
+         break;
+    case FILE_PER_SELECTION:
+         autoindex = 1;
+        page_count = 1;
+         for (i = 0; i < crop->selections; i++)
+           {
+           if (update_output_file (out, mp, autoindex, filename, page))
+             return (1);
+
+           crop_buff = seg_buffs[i].buffer;
+           /* Write the current region to the current file */
+           if (writeCroppedImage(in, *out, image, dump,
+                                 crop->regionlist[i].width, 
+                                 crop->regionlist[i].length, 
+                                 crop_buff, *page, page_count))
+             {
+             TIFFError("writeRegions", "Unable to write new image");
+             return (-1);
+             }
+           }
+        break;
+    default: return (1);
+    }
+
+  return (0);
+  } /* end writeRegions */
+
+static int
+writeImageSections(TIFF *in, TIFF *out, struct image_data *image,
+                  struct pagedef *page, struct pageseg *sections,
+                  struct dump_opts * dump, unsigned char *src_buff,
+                   unsigned char **sect_buff_ptr)
+  {
+  double  hres, vres;
+  uint32  i, k, width, length, sectsize;
+  unsigned char *sect_buff = *sect_buff_ptr;
+
+  hres = page->hres;
+  vres = page->vres;
+
+  k = page->cols * page->rows;
+  if ((k < 1) || (k > MAX_SECTIONS))
+   {
+   TIFFError("writeImageSections",
+            "%d Rows and Columns exceed maximum sections\nIncrease resolution or reduce sections", k);
+   return (-1);
+   }
+
+  for (i = 0; i < k; i++)
+    {
+    width  = sections[i].x2 - sections[i].x1 + 1;
+    length = sections[i].y2 - sections[i].y1 + 1;
+    sectsize = (uint32)
+           ceil((width * image->bps + 7) / (double)8) * image->spp * length;
+    /* allocate a buffer if we don't have one already */
+    if (createImageSection(sectsize, sect_buff_ptr))
+      {
+      TIFFError("writeImageSections", "Unable to allocate section buffer");
+      exit (-1);
+      }
+    sect_buff = *sect_buff_ptr;
+
+    if (extractImageSection (image, &sections[i], src_buff, sect_buff))
+      {
+      TIFFError("writeImageSections", "Unable to extract image sections");
+      exit (-1);
+      }
+
+  /* call the write routine here instead of outside the loop */
+    if (writeSingleSection(in, out, image, dump, width, length, hres, vres, sect_buff))
+      {
+      TIFFError("writeImageSections", "Unable to write image section");
+      exit (-1);
+      }
+    }
+
+  return (0);
+  } /* end writeImageSections */
+
+/* Code in this function is heavily indebted to code in tiffcp
+ * with modifications by Richard Nolde to handle orientation correctly.
+ * It will have to be updated significantly if support is added to
+ * extract one or more samples from original image since the 
+ * original code assumes we are always copying all samples.
+ */
+static int  
+writeSingleSection(TIFF *in, TIFF *out, struct image_data *image,
+                   struct dump_opts *dump, uint32 width, uint32 length,
+                   double hres, double vres,
+                   unsigned char *sect_buff)
+  {
+  uint16 bps, spp;
+  uint16 input_compression, input_photometric;
+  uint16 input_planar;
+  struct cpTag* p;
+
+  /*  Calling this seems to reset the compression mode on the TIFF *in file.
+  TIFFGetField(in, TIFFTAG_JPEGCOLORMODE, &input_jpeg_colormode);
+  */
+  input_compression = image->compression;
+  input_photometric = image->photometric;
+
+  spp = image->spp;
+  bps = image->bps;
+  TIFFSetField(out, TIFFTAG_IMAGEWIDTH, width);
+  TIFFSetField(out, TIFFTAG_IMAGELENGTH, length);
+  TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, bps);
+  TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, spp);
+
+#ifdef DEBUG2
+  TIFFError("writeSingleSection", "Input compression: %s",
+           (input_compression == COMPRESSION_OJPEG) ? "Old Jpeg" :
+           ((input_compression == COMPRESSION_JPEG) ?  "New Jpeg" : "Non Jpeg"));
+#endif
+  /* This is the global variable compression which is set 
+   * if the user has specified a command line option for 
+   * a compression option.  Should be passed around in one
+   * of the parameters instead of as a global. If no user
+   * option specified it will still be (uint16) -1. */
+  if (compression != (uint16)-1)
+    TIFFSetField(out, TIFFTAG_COMPRESSION, compression);
+  else
+    { /* OJPEG is no longer supported for writing so upgrade to JPEG */
+    if (input_compression == COMPRESSION_OJPEG)
+      {
+      compression = COMPRESSION_JPEG;
+      jpegcolormode = JPEGCOLORMODE_RAW;
+      TIFFSetField(out, TIFFTAG_COMPRESSION, COMPRESSION_JPEG);
+      }
+    else /* Use the compression from the input file */
+      TIFFSetField(out, TIFFTAG_COMPRESSION, compression);
+    }
+
+  if (compression == COMPRESSION_JPEG)
+    {
+    if ((input_photometric == PHOTOMETRIC_PALETTE) ||  /* color map indexed */
+        (input_photometric == PHOTOMETRIC_MASK))       /* holdout mask */
+      {
+      TIFFError ("writeSingleSection",
+                 "JPEG compression cannot be used with %s image data",
+                (input_photometric == PHOTOMETRIC_PALETTE) ?
+                 "palette" : "mask");
+      return (-1);
+      }
+    if ((input_photometric == PHOTOMETRIC_RGB) &&
+       (jpegcolormode == JPEGCOLORMODE_RGB))
+      TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_YCBCR);
+    else
+       TIFFSetField(out, TIFFTAG_PHOTOMETRIC, input_photometric);
+    }
+  else
+    {
+    if (compression == COMPRESSION_SGILOG || compression == COMPRESSION_SGILOG24)
+      TIFFSetField(out, TIFFTAG_PHOTOMETRIC, spp == 1 ?
+                       PHOTOMETRIC_LOGL : PHOTOMETRIC_LOGLUV);
+    else
+      TIFFSetField(out, TIFFTAG_PHOTOMETRIC, image->photometric);
+    }
+
+#ifdef DEBUG2
+  TIFFError("writeSingleSection", "Input photometric: %s",
+           (input_photometric == PHOTOMETRIC_RGB) ? "RGB" :
+           ((input_photometric == PHOTOMETRIC_YCBCR) ?  "YCbCr" : "Not RGB or YCbCr"));
+#endif
+
+  if (((input_photometric == PHOTOMETRIC_LOGL) ||
+       (input_photometric ==  PHOTOMETRIC_LOGLUV)) &&
+      ((compression != COMPRESSION_SGILOG) && 
+       (compression != COMPRESSION_SGILOG24)))
+    {
+    TIFFError("writeSingleSection",
+              "LogL and LogLuv source data require SGI_LOG or SGI_LOG24 compression");
+    return (-1);
+    }
+
+  if (fillorder != 0)
+    TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
+  else
+    CopyTag(TIFFTAG_FILLORDER, 1, TIFF_SHORT);
+
+  /* The loadimage function reads input orientation and sets
+   * image->orientation. The correct_image_orientation function
+   * applies the required rotation and mirror operations to 
+   * present the data in TOPLEFT orientation and updates 
+   * image->orientation if any transforms are performed, 
+   * as per EXIF standard.
+   */
+  TIFFSetField(out, TIFFTAG_ORIENTATION, image->orientation);
+
+  /*
+   * Choose tiles/strip for the output image according to
+   * the command line arguments (-tiles, -strips) and the
+   * structure of the input image.
+   */
+  if (outtiled == -1)
+    outtiled = TIFFIsTiled(in);
+  if (outtiled) {
+    /*
+     * Setup output file's tile width&height.  If either
+     * is not specified, use either the value from the
+     * input image or, if nothing is defined, use the
+     * library default.
+     */
+    if (tilewidth == (uint32) 0)
+      TIFFGetField(in, TIFFTAG_TILEWIDTH, &tilewidth);
+    if (tilelength == (uint32) 0)
+      TIFFGetField(in, TIFFTAG_TILELENGTH, &tilelength);
+
+    if (tilewidth == 0 || tilelength == 0)
+      TIFFDefaultTileSize(out, &tilewidth, &tilelength);
+    TIFFDefaultTileSize(out, &tilewidth, &tilelength);
+    TIFFSetField(out, TIFFTAG_TILEWIDTH, tilewidth);
+    TIFFSetField(out, TIFFTAG_TILELENGTH, tilelength);
+    } else {
+       /*
+       * RowsPerStrip is left unspecified: use either the
+       * value from the input image or, if nothing is defined,
+       * use the library default.
+       */
+       if (rowsperstrip == (uint32) 0)
+          {
+         if (!TIFFGetField(in, TIFFTAG_ROWSPERSTRIP, &rowsperstrip))
+           rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
+          if (compression != COMPRESSION_JPEG)
+            {
+           if (rowsperstrip > length)
+             rowsperstrip = length;
+           }
+         }
+       else 
+          if (rowsperstrip == (uint32) -1)
+           rowsperstrip = length;
+       TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
+       }
+
+  TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &input_planar);
+  if (config != (uint16) -1)
+    TIFFSetField(out, TIFFTAG_PLANARCONFIG, config);
+  else
+    CopyField(TIFFTAG_PLANARCONFIG, config);
+  if (spp <= 4)
+    CopyTag(TIFFTAG_TRANSFERFUNCTION, 4, TIFF_SHORT);
+  CopyTag(TIFFTAG_COLORMAP, 4, TIFF_SHORT);
+
+/* SMinSampleValue & SMaxSampleValue */
+  switch (compression) {
+    /* These are references to GLOBAL variables set by defaults
+     * and /or the compression flag
+     */
+    case COMPRESSION_JPEG:
+         if (((bps % 8) == 0) || ((bps % 12) == 0))
+          {
+           TIFFSetField(out, TIFFTAG_JPEGQUALITY, quality);
+          TIFFSetField(out, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+           }
+         else
+           {
+          TIFFError("writeSingleSection",
+                     "JPEG compression requires 8 or 12 bits per sample");
+           return (-1);
+           }
+        break;
+   case COMPRESSION_LZW:
+   case COMPRESSION_ADOBE_DEFLATE:
+   case COMPRESSION_DEFLATE:
+       if (predictor != (uint16)-1)
+          TIFFSetField(out, TIFFTAG_PREDICTOR, predictor);
+       else
+         CopyField(TIFFTAG_PREDICTOR, predictor);
+       break;
+   case COMPRESSION_CCITTFAX3:
+   case COMPRESSION_CCITTFAX4:
+       if (compression == COMPRESSION_CCITTFAX3) {
+          if (g3opts != (uint32) -1)
+           TIFFSetField(out, TIFFTAG_GROUP3OPTIONS, g3opts);
+         else
+           CopyField(TIFFTAG_GROUP3OPTIONS, g3opts);
+       } else
+           CopyTag(TIFFTAG_GROUP4OPTIONS, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_BADFAXLINES, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_CLEANFAXDATA, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXRECVPARAMS, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXRECVTIME, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXSUBADDRESS, 1, TIFF_ASCII);
+       break;
+   }
+   { uint32 len32;
+     void** data;
+     if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &len32, &data))
+       TIFFSetField(out, TIFFTAG_ICCPROFILE, len32, data);
+   }
+   { uint16 ninks;
+     const char* inknames;
+     if (TIFFGetField(in, TIFFTAG_NUMBEROFINKS, &ninks)) {
+       TIFFSetField(out, TIFFTAG_NUMBEROFINKS, ninks);
+       if (TIFFGetField(in, TIFFTAG_INKNAMES, &inknames)) {
+        int inknameslen = strlen(inknames) + 1;
+        const char* cp = inknames;
+        while (ninks > 1) {
+          cp = strchr(cp, '\0');
+          if (cp) {
+            cp++;
+            inknameslen += (strlen(cp) + 1);
+          }
+          ninks--;
+         }
+        TIFFSetField(out, TIFFTAG_INKNAMES, inknameslen, inknames);
+       }
+     }
+   }
+   {
+   unsigned short pg0, pg1;
+   if (TIFFGetField(in, TIFFTAG_PAGENUMBER, &pg0, &pg1)) {
+     if (pageNum < 0) /* only one input file */
+       TIFFSetField(out, TIFFTAG_PAGENUMBER, pg0, pg1);
+     else 
+       TIFFSetField(out, TIFFTAG_PAGENUMBER, pageNum++, 0);
+     }
+   }
+
+  for (p = tags; p < &tags[NTAGS]; p++)
+               CopyTag(p->tag, p->count, p->type);
+
+  /* Update these since they are overwritten from input res by loop above */
+  TIFFSetField(out, TIFFTAG_XRESOLUTION, (float)hres);
+  TIFFSetField(out, TIFFTAG_YRESOLUTION, (float)vres);
+
+  /* Compute the tile or strip dimensions and write to disk */
+  if (outtiled)
+    {
+    if (config == PLANARCONFIG_CONTIG)
+      writeBufferToContigTiles (out, sect_buff, length, width, spp, dump);
+    else
+      writeBufferToSeparateTiles (out, sect_buff, length, width, spp, dump);
+    }
+  else
+    {
+    if (config == PLANARCONFIG_CONTIG)
+      writeBufferToContigStrips (out, sect_buff, length);
+    else
+      writeBufferToSeparateStrips(out, sect_buff, length, width, spp, dump);
+    }
+
+  if (!TIFFWriteDirectory(out))
+    {
+    TIFFClose(out);
+    return (-1);
+    }
+
+  return (0);
+  } /* end writeSingleSection */
+
+
+/* Create a buffer to write one section at a time */
+static int
+createImageSection(uint32 sectsize, unsigned char **sect_buff_ptr)
+  {
+  unsigned  char *sect_buff = NULL;
+  unsigned  char *new_buff  = NULL;
+  static    uint32  prev_sectsize = 0;
+  
+  sect_buff = *sect_buff_ptr;
+
+  if (!sect_buff)
+    {
+    sect_buff = (unsigned char *)_TIFFmalloc(sectsize);
+    *sect_buff_ptr = sect_buff;
+    _TIFFmemset(sect_buff, 0, sectsize);
+    }
+  else
+    {
+    if (prev_sectsize < sectsize)
+      {
+      new_buff = _TIFFrealloc(sect_buff, sectsize);
+      if (!new_buff)
+        {
+       free (sect_buff);
+        sect_buff = (unsigned char *)_TIFFmalloc(sectsize);
+        }
+      else
+        sect_buff = new_buff;
+
+      _TIFFmemset(sect_buff, 0, sectsize);
+      }
+    }
+
+  if (!sect_buff)
+    {
+    TIFFError("createImageSection", "Unable to allocate/reallocate section buffer");
+    return (-1);
+    }
+  prev_sectsize = sectsize;
+  *sect_buff_ptr = sect_buff;
+
+  return (0);
+  }  /* end createImageSection */
+
+
+/* Process selections defined by regions, zones, margins, or fixed sized areas */
+static int
+processCropSelections(struct image_data *image, struct crop_mask *crop, 
+                      unsigned char **read_buff_ptr, struct buffinfo seg_buffs[])
+  {
+  int       i;
+  uint32    width, length, total_width, total_length;
+  tsize_t   cropsize;
+  unsigned  char *crop_buff = NULL;
+  unsigned  char *read_buff = NULL;
+  unsigned  char *next_buff = NULL;
+  tsize_t   prev_cropsize = 0;
+
+  read_buff = *read_buff_ptr;
+
+  if (crop->img_mode == COMPOSITE_IMAGES)
+    {
+    cropsize = crop->bufftotal;
+    crop_buff = seg_buffs[0].buffer; 
+    if (!crop_buff)
+      crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+    else
+      {
+      prev_cropsize = seg_buffs[0].size;
+      if (prev_cropsize < cropsize)
+        {
+        next_buff = _TIFFrealloc(crop_buff, cropsize);
+        if (! next_buff)
+          {
+          _TIFFfree (crop_buff);
+          crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+          }
+        else
+          crop_buff = next_buff;
+        }
+      }
+
+    if (!crop_buff)
+      {
+      TIFFError("processCropSelections", "Unable to allocate/reallocate crop buffer");
+      return (-1);
+      }
+    _TIFFmemset(crop_buff, 0, cropsize);
+    seg_buffs[0].buffer = crop_buff;
+    seg_buffs[0].size = cropsize;
+
+    /* Checks for matching width or length as required */
+    if (extractCompositeRegions(image, crop, read_buff, crop_buff) != 0)
+      return (1);
+
+    if (crop->crop_mode & CROP_INVERT)
+      {
+      switch (crop->photometric)
+        {
+        /* Just change the interpretation */
+        case PHOTOMETRIC_MINISWHITE:
+        case PHOTOMETRIC_MINISBLACK:
+            image->photometric = crop->photometric;
+            break;
+        case INVERT_DATA_ONLY:
+        case INVERT_DATA_AND_TAG:
+             if (invertImage(image->photometric, image->spp, image->bps, 
+                             crop->combined_width, crop->combined_length, crop_buff))
+               {
+               TIFFError("processCropSelections", 
+                         "Failed to invert colorspace for composite regions");
+               return (-1);
+               }
+             if (crop->photometric == INVERT_DATA_AND_TAG)
+               {
+               switch (image->photometric)
+                 {
+                 case PHOTOMETRIC_MINISWHITE:
+                     image->photometric = PHOTOMETRIC_MINISBLACK;
+                     break;
+                 case PHOTOMETRIC_MINISBLACK:
+                     image->photometric = PHOTOMETRIC_MINISWHITE;
+                     break;
+                 default:
+                     break;
+                }
+              }
+             break;
+        default: break;
+        }
+      }
+
+    /* Mirror and Rotate will not work with multiple regions unless they are the same width */
+    if (crop->crop_mode & CROP_MIRROR)
+      {
+      if (mirrorImage(image->spp, image->bps, crop->mirror, 
+                      crop->combined_width, crop->combined_length, crop_buff))
+        {
+        TIFFError("processCropSelections", "Failed to mirror composite regions %s", 
+                (crop->rotation == MIRROR_HORIZ) ? "horizontally" : "vertically");
+        return (-1);
+        }
+      }
+
+    if (crop->crop_mode & CROP_ROTATE) /* rotate should be last as it can reallocate the buffer */
+      {
+      if (rotateImage(crop->rotation, image, &crop->combined_width, 
+                      &crop->combined_length, &crop_buff))
+        {
+        TIFFError("processCropSelections", 
+                  "Failed to rotate composite regions by %d degrees", crop->rotation);
+        return (-1);
+        }
+      seg_buffs[0].buffer = crop_buff;
+      seg_buffs[0].size = (((crop->combined_width * image->bps + 7 ) / 8)
+                            * image->spp) * crop->combined_length; 
+      }
+    }
+  else  /* Separated Images */
+    {
+    total_width = total_length = 0;
+    for (i = 0; i < crop->selections; i++)
+      {
+      cropsize = crop->bufftotal;
+      crop_buff = seg_buffs[i].buffer; 
+      if (!crop_buff)
+        crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+      else
+        {
+        prev_cropsize = seg_buffs[0].size;
+        if (prev_cropsize < cropsize)
+          {
+          next_buff = _TIFFrealloc(crop_buff, cropsize);
+          if (! next_buff)
+            {
+            _TIFFfree (crop_buff);
+            crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+            }
+          else
+            crop_buff = next_buff;
+          }
+        }
+
+      if (!crop_buff)
+        {
+        TIFFError("processCropSelections", "Unable to allocate/reallocate crop buffer");
+        return (-1);
+        }
+      _TIFFmemset(crop_buff, 0, cropsize);
+      seg_buffs[i].buffer = crop_buff;
+      seg_buffs[i].size = cropsize;
+
+      if (extractSeparateRegion(image, crop, read_buff, crop_buff, i))
+        {
+       TIFFError("processCropSelections", "Unable to extract cropped region %d from image", i);
+        return (-1);
+        }
+    
+      width  = crop->regionlist[i].width;
+      length = crop->regionlist[i].length;
+
+      if (crop->crop_mode & CROP_INVERT)
+        {
+        switch (crop->photometric)
+          {
+          /* Just change the interpretation */
+          case PHOTOMETRIC_MINISWHITE:
+          case PHOTOMETRIC_MINISBLACK:
+              image->photometric = crop->photometric;
+              break;
+          case INVERT_DATA_ONLY:
+          case INVERT_DATA_AND_TAG:
+               if (invertImage(image->photometric, image->spp, image->bps, 
+                               width, length, crop_buff))
+                 {
+                 TIFFError("processCropSelections", 
+                           "Failed to invert colorspace for region");
+                 return (-1);
+                 }
+               if (crop->photometric == INVERT_DATA_AND_TAG)
+                 {
+                 switch (image->photometric)
+                   {
+                   case PHOTOMETRIC_MINISWHITE:
+                       image->photometric = PHOTOMETRIC_MINISBLACK;
+                       break;
+                   case PHOTOMETRIC_MINISBLACK:
+                       image->photometric = PHOTOMETRIC_MINISWHITE;
+                       break;
+                   default:
+                       break;
+                  }
+                }
+               break;
+          default: break;
+          }
+        }
+
+      if (crop->crop_mode & CROP_MIRROR)
+        {
+        if (mirrorImage(image->spp, image->bps, crop->mirror, 
+                        width, length, crop_buff))
+          {
+          TIFFError("processCropSelections", "Failed to mirror crop region %s", 
+                  (crop->rotation == MIRROR_HORIZ) ? "horizontally" : "vertically");
+          return (-1);
+          }
+        }
+
+      if (crop->crop_mode & CROP_ROTATE) /* rotate should be last as it can reallocate the buffer */
+        {
+       if (rotateImage(crop->rotation, image, &crop->regionlist[i].width, 
+                       &crop->regionlist[i].length, &crop_buff))
+          {
+          TIFFError("processCropSelections", 
+                    "Failed to rotate crop region by %d degrees", crop->rotation);
+          return (-1);
+          }
+        total_width  += crop->regionlist[i].width;
+        total_length += crop->regionlist[i].length;
+        crop->combined_width = total_width;
+        crop->combined_length = total_length;
+        seg_buffs[i].buffer = crop_buff;
+        seg_buffs[i].size = (((crop->regionlist[i].width * image->bps + 7 ) / 8)
+                               * image->spp) * crop->regionlist[i].length; 
+        }
+      }
+    }
+  return (0);
+  } /* end processCropSelections */
+
+/* Copy the crop section of the data from the current image into a buffer
+ * and adjust the IFD values to reflect the new size. If no cropping is
+ * required, use the origial read buffer as the crop buffer.
+ *
+ * There is quite a bit of redundancy between this routine and the more
+ * specialized processCropSelections, but this provides
+ * the most optimized path when no Zones or Regions are required.
+ */
+static int
+createCroppedImage(struct image_data *image, struct crop_mask *crop, 
+                   unsigned char **read_buff_ptr, unsigned char **crop_buff_ptr)
+  {
+  tsize_t   cropsize;
+  unsigned  char *read_buff = NULL;
+  unsigned  char *crop_buff = NULL;
+  unsigned  char *new_buff  = NULL;
+  static    tsize_t  prev_cropsize = 0;
+
+  read_buff = *read_buff_ptr;
+
+  /* process full image, no crop buffer needed */
+  crop_buff = read_buff;
+  *crop_buff_ptr = read_buff;
+  crop->combined_width = image->width;
+  crop->combined_length = image->length;
+
+  cropsize = crop->bufftotal;
+  crop_buff = *crop_buff_ptr;
+  if (!crop_buff)
+    {
+    crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+    *crop_buff_ptr = crop_buff;
+    _TIFFmemset(crop_buff, 0, cropsize);
+    prev_cropsize = cropsize;
+    }
+  else
+    {
+    if (prev_cropsize < cropsize)
+      {
+      new_buff = _TIFFrealloc(crop_buff, cropsize);
+      if (!new_buff)
+        {
+       free (crop_buff);
+        crop_buff = (unsigned char *)_TIFFmalloc(cropsize);
+        }
+      else
+        crop_buff = new_buff;
+      _TIFFmemset(crop_buff, 0, cropsize);
+      }
+    }
+
+  if (!crop_buff)
+    {
+    TIFFError("createCroppedImage", "Unable to allocate/reallocate crop buffer");
+    return (-1);
+    }
+  *crop_buff_ptr = crop_buff;
+
+  if (crop->crop_mode & CROP_INVERT)
+    {
+    switch (crop->photometric)
+      {
+      /* Just change the interpretation */
+      case PHOTOMETRIC_MINISWHITE:
+      case PHOTOMETRIC_MINISBLACK:
+          image->photometric = crop->photometric;
+          break;
+      case INVERT_DATA_ONLY:
+      case INVERT_DATA_AND_TAG:
+           if (invertImage(image->photometric, image->spp, image->bps, 
+                           crop->combined_width, crop->combined_length, crop_buff))
+             {
+             TIFFError("createCroppedImage", 
+                       "Failed to invert colorspace for image or cropped selection");
+             return (-1);
+             }
+           if (crop->photometric == INVERT_DATA_AND_TAG)
+             {
+             switch (image->photometric)
+               {
+               case PHOTOMETRIC_MINISWHITE:
+                   image->photometric = PHOTOMETRIC_MINISBLACK;
+                   break;
+               case PHOTOMETRIC_MINISBLACK:
+                   image->photometric = PHOTOMETRIC_MINISWHITE;
+                   break;
+               default:
+                   break;
+              }
+            }
+           break;
+      default: break;
+      }
+    }
+
+  if (crop->crop_mode & CROP_MIRROR)
+    {
+    if (mirrorImage(image->spp, image->bps, crop->mirror, 
+                    crop->combined_width, crop->combined_length, crop_buff))
+      {
+      TIFFError("createCroppedImage", "Failed to mirror image or cropped selection %s", 
+              (crop->rotation == MIRROR_HORIZ) ? "horizontally" : "vertically");
+      return (-1);
+      }
+    }
+
+  if (crop->crop_mode & CROP_ROTATE) /* rotate should be last as it can reallocate the buffer */
+    {
+    if (rotateImage(crop->rotation, image, &crop->combined_width, 
+                    &crop->combined_length, crop_buff_ptr))
+      {
+      TIFFError("createCroppedImage", 
+                "Failed to rotate image or cropped selection by %d degrees", crop->rotation);
+      return (-1);
+      }
+    }
+
+  if (crop_buff == read_buff) /* we used the read buffer for the crop buffer */
+    *read_buff_ptr = NULL;    /* so we don't try to free it later */
+
+  return (0);
+  } /* end createCroppedImage */
+
+
+/* Code in this function is heavily indebted to code in tiffcp
+ * with modifications by Richard Nolde to handle orientation correctly.
+ * It will have to be updated significantly if support is added to
+ * extract one or more samples from original image since the 
+ * original code assumes we are always copying all samples.
+ * Use of global variables for config, compression and others
+ * should be replaced by addition to the crop_mask struct (which
+ * will be renamed to proc_opts indicating that is controlls
+ * user supplied processing options, not just cropping) and 
+ * then passed in as an argument.
+ */
+static int  
+writeCroppedImage(TIFF *in, TIFF *out, struct image_data *image, 
+                  struct dump_opts *dump, uint32 width, uint32 length, 
+                  unsigned char *crop_buff, int pagenum, int total_pages)
+  {
+  uint16 bps, spp;
+  uint16 input_compression, input_photometric;
+  uint16 input_planar;
+  struct cpTag* p;
+
+  input_compression = image->compression;
+  input_photometric = image->photometric;
+  spp = image->spp;
+  bps = image->bps;
+
+  TIFFSetField(out, TIFFTAG_IMAGEWIDTH, width);
+  TIFFSetField(out, TIFFTAG_IMAGELENGTH, length);
+  TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, bps);
+  TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, spp);
+
+#ifdef DEBUG2
+  TIFFError("writeCroppedImage", "Input compression: %s",
+           (input_compression == COMPRESSION_OJPEG) ? "Old Jpeg" :
+           ((input_compression == COMPRESSION_JPEG) ?  "New Jpeg" : "Non Jpeg"));
+#endif
+
+  if (compression != (uint16)-1)
+    TIFFSetField(out, TIFFTAG_COMPRESSION, compression);
+  else
+    {
+    if (input_compression == COMPRESSION_OJPEG)
+      {
+      compression = COMPRESSION_JPEG;
+      jpegcolormode = JPEGCOLORMODE_RAW;
+      TIFFSetField(out, TIFFTAG_COMPRESSION, COMPRESSION_JPEG);
+      }
+    else
+      CopyField(TIFFTAG_COMPRESSION, compression);
+    }
+
+  if (compression == COMPRESSION_JPEG)
+    {
+    if ((input_photometric == PHOTOMETRIC_PALETTE) ||  /* color map indexed */
+        (input_photometric == PHOTOMETRIC_MASK))       /* $holdout mask */
+      {
+      TIFFError ("writeCroppedImage",
+                 "JPEG compression cannot be used with %s image data",
+               (input_photometric == PHOTOMETRIC_PALETTE) ?
+                 "palette" : "mask");
+      return (-1);
+      }
+    if ((input_photometric == PHOTOMETRIC_RGB) &&
+       (jpegcolormode == JPEGCOLORMODE_RGB))
+      TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_YCBCR);
+    else
+       TIFFSetField(out, TIFFTAG_PHOTOMETRIC, input_photometric);
+    }
+  else
+    {
+    if (compression == COMPRESSION_SGILOG || compression == COMPRESSION_SGILOG24)
+      {
+      TIFFSetField(out, TIFFTAG_PHOTOMETRIC, spp == 1 ?
+                       PHOTOMETRIC_LOGL : PHOTOMETRIC_LOGLUV);
+      }
+    else
+      {
+      if (input_compression == COMPRESSION_SGILOG ||
+          input_compression == COMPRESSION_SGILOG24)
+        {
+        TIFFSetField(out, TIFFTAG_PHOTOMETRIC, spp == 1 ?
+                         PHOTOMETRIC_LOGL : PHOTOMETRIC_LOGLUV);
+        }
+      else
+        TIFFSetField(out, TIFFTAG_PHOTOMETRIC, image->photometric);
+      }
+    }
+
+  if (((input_photometric == PHOTOMETRIC_LOGL) ||
+       (input_photometric ==  PHOTOMETRIC_LOGLUV)) &&
+      ((compression != COMPRESSION_SGILOG) && 
+       (compression != COMPRESSION_SGILOG24)))
+    {
+    TIFFError("writeCroppedImage",
+              "LogL and LogLuv source data require SGI_LOG or SGI_LOG24 compression");
+    return (-1);
+    }
+
+  if (fillorder != 0)
+    TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
+  else
+    CopyTag(TIFFTAG_FILLORDER, 1, TIFF_SHORT);
+
+  /* The loadimage function reads input orientation and sets
+   * image->orientation. The correct_image_orientation function
+   * applies the required rotation and mirror operations to 
+   * present the data in TOPLEFT orientation and updates 
+   * image->orientation if any transforms are performed, 
+   * as per EXIF standard. 
+   */
+  TIFFSetField(out, TIFFTAG_ORIENTATION, image->orientation);
+       
+  /*
+   * Choose tiles/strip for the output image according to
+   * the command line arguments (-tiles, -strips) and the
+   * structure of the input image.
+   */
+  if (outtiled == -1)
+    outtiled = TIFFIsTiled(in);
+  if (outtiled) {
+    /*
+     * Setup output file's tile width&height.  If either
+     * is not specified, use either the value from the
+     * input image or, if nothing is defined, use the
+     * library default.
+     */
+    if (tilewidth == (uint32) 0)
+      TIFFGetField(in, TIFFTAG_TILEWIDTH, &tilewidth);
+    if (tilelength == (uint32) 0)
+      TIFFGetField(in, TIFFTAG_TILELENGTH, &tilelength);
+
+    if (tilewidth == 0 || tilelength == 0)
+      TIFFDefaultTileSize(out, &tilewidth, &tilelength);
+    TIFFSetField(out, TIFFTAG_TILEWIDTH, tilewidth);
+    TIFFSetField(out, TIFFTAG_TILELENGTH, tilelength);
+    } else {
+       /*
+       * RowsPerStrip is left unspecified: use either the
+       * value from the input image or, if nothing is defined,
+       * use the library default.
+       */
+       if (rowsperstrip == (uint32) 0)
+          {
+         if (!TIFFGetField(in, TIFFTAG_ROWSPERSTRIP, &rowsperstrip))
+           rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
+          if (compression != COMPRESSION_JPEG)
+            {
+           if (rowsperstrip > length)
+             rowsperstrip = length;
+           }
+         }
+       else 
+          if (rowsperstrip == (uint32) -1)
+           rowsperstrip = length;
+       TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
+       }
+
+  TIFFGetFieldDefaulted(in, TIFFTAG_PLANARCONFIG, &input_planar);
+  if (config != (uint16) -1)
+    TIFFSetField(out, TIFFTAG_PLANARCONFIG, config);
+  else
+    CopyField(TIFFTAG_PLANARCONFIG, config);
+  if (spp <= 4)
+    CopyTag(TIFFTAG_TRANSFERFUNCTION, 4, TIFF_SHORT);
+  CopyTag(TIFFTAG_COLORMAP, 4, TIFF_SHORT);
+
+/* SMinSampleValue & SMaxSampleValue */
+  switch (compression) {
+    case COMPRESSION_JPEG:
+         if (((bps % 8) == 0) || ((bps % 12) == 0))
+          {
+           TIFFSetField(out, TIFFTAG_JPEGQUALITY, quality);
+          TIFFSetField(out, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
+           }
+         else
+           {
+          TIFFError("writeCroppedImage",
+                     "JPEG compression requires 8 or 12 bits per sample");
+           return (-1);
+           }
+        break;
+   case COMPRESSION_LZW:
+   case COMPRESSION_ADOBE_DEFLATE:
+   case COMPRESSION_DEFLATE:
+       if (predictor != (uint16)-1)
+          TIFFSetField(out, TIFFTAG_PREDICTOR, predictor);
+       else
+         CopyField(TIFFTAG_PREDICTOR, predictor);
+       break;
+   case COMPRESSION_CCITTFAX3:
+   case COMPRESSION_CCITTFAX4:
+        if (bps != 1)
+          {
+         TIFFError("writeCroppedImage",
+            "Group 3/4 compression is not usable with bps > 1");
+          return (-1);
+         }
+       if (compression == COMPRESSION_CCITTFAX3) {
+          if (g3opts != (uint32) -1)
+           TIFFSetField(out, TIFFTAG_GROUP3OPTIONS, g3opts);
+         else
+           CopyField(TIFFTAG_GROUP3OPTIONS, g3opts);
+       } else
+           CopyTag(TIFFTAG_GROUP4OPTIONS, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_BADFAXLINES, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_CLEANFAXDATA, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_CONSECUTIVEBADFAXLINES, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXRECVPARAMS, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXRECVTIME, 1, TIFF_LONG);
+           CopyTag(TIFFTAG_FAXSUBADDRESS, 1, TIFF_ASCII);
+        break;
+    case COMPRESSION_NONE:
+         break;
+    default: break;
+   }
+   { uint32 len32;
+     void** data;
+     if (TIFFGetField(in, TIFFTAG_ICCPROFILE, &len32, &data))
+       TIFFSetField(out, TIFFTAG_ICCPROFILE, len32, data);
+   }
+   { uint16 ninks;
+     const char* inknames;
+     if (TIFFGetField(in, TIFFTAG_NUMBEROFINKS, &ninks)) {
+       TIFFSetField(out, TIFFTAG_NUMBEROFINKS, ninks);
+       if (TIFFGetField(in, TIFFTAG_INKNAMES, &inknames)) {
+        int inknameslen = strlen(inknames) + 1;
+        const char* cp = inknames;
+        while (ninks > 1) {
+          cp = strchr(cp, '\0');
+          if (cp) {
+            cp++;
+            inknameslen += (strlen(cp) + 1);
+          }
+          ninks--;
+         }
+        TIFFSetField(out, TIFFTAG_INKNAMES, inknameslen, inknames);
+       }
+     }
+   }
+   {
+   unsigned short pg0, pg1;
+   if (TIFFGetField(in, TIFFTAG_PAGENUMBER, &pg0, &pg1)) {
+     TIFFSetField(out, TIFFTAG_PAGENUMBER, pagenum, total_pages);
+     }
+   }
+
+  for (p = tags; p < &tags[NTAGS]; p++)
+               CopyTag(p->tag, p->count, p->type);
+
+  /* Compute the tile or strip dimensions and write to disk */
+  if (outtiled)
+    {
+    if (config == PLANARCONFIG_CONTIG)
+      {
+      if (writeBufferToContigTiles (out, crop_buff, length, width, spp, dump))
+        TIFFError("","Unable to write contiguous tile data for page %d", pagenum);
+      }
+    else
+      {
+      if (writeBufferToSeparateTiles (out, crop_buff, length, width, spp, dump))
+        TIFFError("","Unable to write separate tile data for page %d", pagenum);
+      }
+    }
+  else
+    {
+    if (config == PLANARCONFIG_CONTIG)
+      {
+      if (writeBufferToContigStrips (out, crop_buff, length))
+        TIFFError("","Unable to write contiguous strip data for page %d", pagenum);
+      }
+    else
+      {
+      if (writeBufferToSeparateStrips(out, crop_buff, length, width, spp, dump))
+        TIFFError("","Unable to write separate strip data for page %d", pagenum);
+      }
+    }
+
+  if (!TIFFWriteDirectory(out))
+    {
+    TIFFError("","Failed to write IFD for page number %d", pagenum);
+    TIFFClose(out);
+    return (-1);
+    }
+
+  return (0);
+  } /* end writeCroppedImage */
+
+static int
+rotateContigSamples8bits(uint16 rotation, uint16 spp, uint16 bps, uint32 width, 
+                         uint32 length,   uint32 col, uint8 *src, uint8 *dst)
+  {
+  int      ready_bits = 0;
+  uint32   src_byte = 0, src_bit = 0;
+  uint32   row, rowsize = 0, bit_offset = 0;
+  uint8    matchbits = 0, maskbits = 0;
+  uint8    buff1 = 0, buff2 = 0;
+  uint8   *next;
+  tsample_t sample;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("rotateContigSamples8bits","Invalid src or destination buffer");
+    return (1);
+    }
+
+  rowsize = ((bps * spp * width) + 7) / 8;
+  ready_bits = 0;
+  maskbits =  (uint8)-1 >> ( 8 - bps);
+  buff1 = buff2 = 0;
+
+  for (row = 0; row < length ; row++)
+    {
+    bit_offset = col * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        src_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      switch (rotation)
+       {
+        case  90: next = src + src_byte - (row * rowsize);
+                  break;
+        case 270: next = src + src_byte + (row * rowsize);
+                 break;
+       default:  TIFFError("rotateContigSamples8bits", "Invalid rotation %d", rotation);
+                  return (1);
+        }
+      matchbits = maskbits << (8 - src_bit - bps); 
+      buff1 = ((*next) & matchbits) << (src_bit);
+
+       /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 8)
+        {
+        *dst++ = buff2;
+        buff2 = buff1;
+        ready_bits -= 8;
+        }
+      else
+        {
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  if (ready_bits > 0)
+    {
+    buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+    *dst++ = buff1;
+    }
+
+  return (0);
+  }  /* end rotateContigSamples8bits */
+
+
+static int
+rotateContigSamples16bits(uint16 rotation, uint16 spp, uint16 bps, uint32 width, 
+                         uint32 length,   uint32 col, uint8 *src, uint8 *dst)
+  {
+  int      ready_bits = 0;
+  uint32   row, rowsize, bit_offset;
+  uint32   src_byte = 0, src_bit = 0;
+  uint16   matchbits = 0, maskbits = 0;
+  uint16   buff1 = 0, buff2 = 0;
+  uint8    bytebuff = 0;
+  uint8   *next;
+  tsample_t sample;
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("rotateContigSamples16bits","Invalid src or destination buffer");
+    return (1);
+    }
+
+  rowsize = ((bps * spp * width) + 7) / 8;
+  ready_bits = 0;
+  maskbits =  (uint16)-1 >> (16 - bps);
+  buff1 = buff2 = 0;
+  for (row = 0; row < length; row++)
+    {
+    bit_offset = col * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        src_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      switch (rotation)
+       {
+        case  90: next = src + src_byte - (row * rowsize);
+                  break;
+        case 270: next = src + src_byte + (row * rowsize);
+                 break;
+       default:  TIFFError("rotateContigSamples8bits", "Invalid rotation %d", rotation);
+                  return (1);
+        }
+      matchbits = maskbits << (16 - src_bit - bps); 
+      if (little_endian)
+        buff1 = (next[0] << 8) | next[1];
+      else
+        buff1 = (next[1] << 8) | next[0];
+
+      buff1 = (buff1 & matchbits) << (src_bit);
+
+      /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 8)
+        {
+        bytebuff = (buff2 >> 8);
+        *dst++ = bytebuff;
+        ready_bits -= 8;
+        /* shift in new bits */
+        buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+        }
+      else
+        { /* add another bps bits to the buffer */
+        bytebuff = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  if (ready_bits > 0)
+    {
+    bytebuff = (buff2 >> 8);
+    *dst++ = bytebuff;
+    }
+
+  return (0);
+  }  /* end rotateContigSamples16bits */
+
+static int
+rotateContigSamples24bits(uint16 rotation, uint16 spp, uint16 bps, uint32 width, 
+                          uint32 length,   uint32 col, uint8 *src, uint8 *dst)
+  {
+  int      ready_bits = 0;
+  uint32   row, rowsize, bit_offset;
+  uint32   src_byte = 0, src_bit = 0;
+  uint32   matchbits = 0, maskbits = 0;
+  uint32   buff1 = 0, buff2 = 0;
+  uint8    bytebuff1 = 0, bytebuff2 = 0;
+  uint8   *next;
+  tsample_t sample;
+
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("rotateContigSamples24bits","Invalid src or destination buffer");
+    return (1);
+    }
+
+  rowsize = ((bps * spp * width) + 7) / 8;
+  ready_bits = 0;
+  maskbits =  (uint32)-1 >> (32 - bps);
+  buff1 = buff2 = 0;
+  for (row = 0; row < length; row++)
+    {
+    bit_offset = col * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        src_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      switch (rotation)
+       {
+        case  90: next = src + src_byte - (row * rowsize);
+                  break;
+        case 270: next = src + src_byte + (row * rowsize);
+                 break;
+       default:  TIFFError("rotateContigSamples8bits", "Invalid rotation %d", rotation);
+                  return (1);
+        }
+      matchbits = maskbits << (32 - src_bit - bps); 
+      if (little_endian)
+       buff1 = (next[0] << 24) | (next[1] << 16) | (next[2] << 8) | next[3];
+      else
+       buff1 = (next[3] << 24) | (next[2] << 16) | (next[1] << 8) | next[0];
+      buff1 = (buff1 & matchbits) << (src_bit);
+
+      /* If we have a full buffer's worth, write it out */
+      if (ready_bits >= 16)
+        {
+        bytebuff1 = (buff2 >> 24);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 16);
+        *dst++ = bytebuff2;
+        ready_bits -= 16;
+
+        /* shift in new bits */
+        buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+        }
+      else
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+ /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 24);
+    *dst++ = bytebuff1;
+
+    buff2 = (buff2 << 8);
+    bytebuff2 = bytebuff1;
+    ready_bits -= 8;
+    }
+  return (0);
+  }  /* end rotateContigSamples24bits */
+
+static int
+rotateContigSamples32bits(uint16 rotation, uint16 spp, uint16 bps, uint32 width, 
+                          uint32 length,   uint32 col, uint8 *src, uint8 *dst)
+  {
+  int    ready_bits = 0, shift_width = 0;
+  int    bytes_per_sample, bytes_per_pixel;
+  uint32 row, rowsize, bit_offset;
+  uint32 src_byte, src_bit;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 maskbits = 0, matchbits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  uint8   *next;
+  tsample_t sample;
+
+
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("rotateContigSamples24bits","Invalid src or destination buffer");
+    return (1);
+    }
+
+  bytes_per_sample = (bps + 7) / 8;
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if (bytes_per_pixel < (bytes_per_sample + 1))
+    shift_width = bytes_per_pixel;
+  else
+    shift_width = bytes_per_sample + 1;
+
+  rowsize = ((bps * spp * width) + 7) / 8;
+  ready_bits = 0;
+  maskbits =  (uint64)-1 >> (64 - bps);
+  buff1 = buff2 = 0;
+  for (row = 0; row < length; row++)
+    {
+    bit_offset = col * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        src_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      switch (rotation)
+       {
+        case  90: next = src + src_byte - (row * rowsize);
+                  break;
+        case 270: next = src + src_byte + (row * rowsize);
+                 break;
+       default:  TIFFError("rotateContigSamples8bits", "Invalid rotation %d", rotation);
+                  return (1);
+        }
+      matchbits = maskbits << (64 - src_bit - bps); 
+      if (little_endian)
+        {
+       longbuff1 = (next[0] << 24) | (next[1] << 16) | (next[2] << 8) | next[3];
+        longbuff2 = longbuff1;
+        }
+      else
+        {
+       longbuff1 = (next[3] << 24) | (next[2] << 16) | (next[1] << 8) | next[0];
+        longbuff2 = longbuff1;
+       }
+
+      buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+      buff1 = (buff3 & matchbits) << (src_bit);
+
+      if (ready_bits < 32)
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 56);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 48);
+        *dst++ = bytebuff2;
+        bytebuff3 = (buff2 >> 40);
+        *dst++ = bytebuff3;
+        bytebuff4 = (buff2 >> 32);
+        *dst++ = bytebuff4;
+        ready_bits -= 32;
+                    
+        /* shift in new bits */
+        buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 56);
+    *dst++ = bytebuff1;
+    buff2 = (buff2 << 8);
+    ready_bits -= 8;
+    }
+
+  return (0);
+  } /* end rotateContigSamples32bits */
+
+
+/* Rotate an image by a multiple of 90 degrees clockwise */
+static int
+rotateImage(uint16 rotation, struct image_data *image, uint32 *img_width, 
+            uint32 *img_length, unsigned char **ibuff_ptr)
+  {
+  int      shift_width;
+  uint32   bytes_per_pixel, bytes_per_sample;
+  uint32   row, rowsize, src_offset, dst_offset;
+  uint32   i, col, width, length;
+  uint32   colsize, buffsize, col_offset, pix_offset;
+  unsigned char *ibuff;
+  unsigned char *src;
+  unsigned char *dst;
+  uint16   spp, bps;
+  float    res_temp;
+  unsigned char *rbuff = NULL;
+
+  width  = *img_width;
+  length = *img_length;
+  spp = image->spp;
+  bps = image->bps;
+
+  rowsize = ((bps * spp * width) + 7) / 8;
+  colsize = ((bps * spp * length) + 7) / 8;
+  if ((colsize * width) > (rowsize * length))
+    buffsize = (colsize + 1) * width;
+  else
+    buffsize = (rowsize + 1) * length;
+
+  bytes_per_sample = (bps + 7) / 8;
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if (bytes_per_pixel < (bytes_per_sample + 1))
+    shift_width = bytes_per_pixel;
+  else
+    shift_width = bytes_per_sample + 1;
+
+  switch (rotation)
+    {
+    case 0:
+    case 360: return (0);
+    case 90:
+    case 180:
+    case 270: break;
+    default:  TIFFError("rotateImage", "Invalid rotation angle %d", rotation);
+              return (-1);
+    }
+
+  if (!(rbuff = (unsigned char *)_TIFFmalloc(buffsize)))
+    {
+    TIFFError("rotateImage", "Unable to allocate rotation buffer of %1u bytes", buffsize);
+    return (-1);
+    }
+  _TIFFmemset(rbuff, '\0', buffsize);
+
+  ibuff = *ibuff_ptr;
+  switch (rotation)
+    {
+    case 180: if ((bps % 8) == 0) /* byte alligned data */
+                { 
+                src = ibuff;
+                pix_offset = (spp * bps) / 8;
+                for (row = 0; row < length; row++)
+                   {
+                  dst_offset = (length - row - 1) * rowsize;
+                   for (col = 0; col < width; col++)
+                     { 
+                    col_offset = (width - col - 1) * pix_offset;
+                     dst = rbuff + dst_offset + col_offset;
+
+                    for (i = 0; i  < bytes_per_pixel; i++)
+                      *dst++ = *src++;
+                     }
+                   }
+                }
+             else
+                { /* non 8 bit per sample data */ 
+                for (row = 0; row < length; row++)
+                  {
+                 src_offset = row * rowsize;
+                 dst_offset = (length - row - 1) * rowsize;
+                 src = ibuff + src_offset;
+                  dst = rbuff + dst_offset;
+                  switch (shift_width)
+                    {
+                    case 1: if (bps == 1)
+                             {
+                              if (reverseSamples8bits(spp, bps, width, src, dst))
+                                {
+                               _TIFFfree(rbuff);
+                                return (-1);
+                                }
+                              break;
+                              }
+                            if (reverseSamples16bits(spp, bps, width, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    case 2: if (reverseSamples24bits(spp, bps, width, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    case 3: 
+                    case 4: 
+                    case 5: if (reverseSamples32bits(spp, bps, width, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    default: TIFFError("rotateImage","Unsupported bit depth %d", bps);
+                            _TIFFfree(rbuff);
+                             return (-1);      
+                    }
+                 }
+               }
+              _TIFFfree(ibuff);
+              *(ibuff_ptr) = rbuff;
+              break;
+
+    case 90:  if ((bps % 8) == 0) /* byte aligned data */
+                {
+                for (col = 0; col < width; col++)
+                  {
+                 src_offset = ((length - 1) * rowsize) + (col * bytes_per_pixel);
+                  dst_offset = col * colsize;
+                 src = ibuff + src_offset;
+                 dst = rbuff + dst_offset;
+                  for (row = length; row > 0; row--)
+                    {
+                    for (i = 0; i < bytes_per_pixel; i++)
+                      *dst++ = *(src + i);
+                   src -= rowsize;
+                    }
+                 }
+               }
+              else
+                { /* non 8 bit per sample data */ 
+                for (col = 0; col < width; col++)
+                  {
+                 src_offset = (length - 1) * rowsize;
+                  dst_offset = col * colsize;
+                 src = ibuff + src_offset;
+                 dst = rbuff + dst_offset;
+                  switch (shift_width)
+                    {
+                    case 1: if (bps == 1)
+                             {
+                              if (rotateContigSamples8bits(rotation, spp, bps, width, 
+                                                        length, col, src, dst))
+                                {
+                               _TIFFfree(rbuff);
+                                return (-1);
+                                }
+                              break;
+                              }
+                            if (rotateContigSamples16bits(rotation, spp, bps, width, 
+                                                        length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                             }
+                           break;
+                    case 2: if (rotateContigSamples24bits(rotation, spp, bps, width, 
+                                                         length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    case 3: 
+                    case 4: 
+                    case 5: if (rotateContigSamples32bits(rotation, spp, bps, width, 
+                                                         length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    default: TIFFError("rotateImage","Unsupported bit depth %d", bps);
+                            _TIFFfree(rbuff);
+                             return (-1);      
+                   }
+                 }
+               }
+              _TIFFfree(ibuff);
+              *(ibuff_ptr) = rbuff;
+
+              *img_width = length;
+              *img_length = width;
+              image->width = length;
+              image->length = width;
+              res_temp = image->xres;
+              image->xres = image->yres;
+              image->yres = res_temp;
+             break;
+
+    case 270: if ((bps % 8) == 0) /* byte aligned data */
+                {
+                for (col = 0; col < width; col++)
+                  {
+                 src_offset = col * bytes_per_pixel;
+                  dst_offset = (width - col - 1) * colsize;
+                 src = ibuff + src_offset;
+                 dst = rbuff + dst_offset;
+                  for (row = length; row > 0; row--)
+                    {
+                    for (i = 0; i < bytes_per_pixel; i++)
+                      *dst++ = *(src + i);
+                   src += rowsize;
+                    }
+                 }
+               }
+              else
+                { /* non 8 bit per sample data */ 
+                for (col = 0; col < width; col++)
+                  {
+                 src_offset = 0;
+                  dst_offset = (width - col - 1) * colsize;
+                 src = ibuff + src_offset;
+                 dst = rbuff + dst_offset;
+                  switch (shift_width)
+                    {
+                    case 1: if (bps == 1)
+                             {
+                              if (rotateContigSamples8bits(rotation, spp, bps, width, 
+                                                        length, col, src, dst))
+                                {
+                               _TIFFfree(rbuff);
+                                return (-1);
+                                }
+                              break;
+                              }
+                            if (rotateContigSamples16bits(rotation, spp, bps, width, 
+                                                        length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                             }
+                           break;
+                    case 2: if (rotateContigSamples24bits(rotation, spp, bps, width, 
+                                                         length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    case 3: 
+                    case 4: 
+                    case 5: if (rotateContigSamples32bits(rotation, spp, bps, width, 
+                                                         length, col, src, dst))
+                              {
+                             _TIFFfree(rbuff);
+                              return (-1);
+                              }
+                             break;
+                    default: TIFFError("rotateImage","Unsupported bit depth %d", bps);
+                            _TIFFfree(rbuff);
+                             return (-1);      
+                   }
+                 }
+               }
+              _TIFFfree(ibuff);
+              *(ibuff_ptr) = rbuff;
+
+              *img_width = length;
+              *img_length = width;
+              image->width = length;
+              image->length = width;
+              res_temp = image->xres;
+              image->xres = image->yres;
+              image->yres = res_temp;
+              break;
+    default:
+              break;
+    }
+
+  return (0);
+  } /* end rotateImage */
+
+static int
+reverseSamples8bits (uint16 spp, uint16 bps, uint32 width, 
+                     uint8 *ibuff, uint8 *obuff)
+  {
+  int      ready_bits = 0;
+  uint32   col;
+  uint32   src_byte, src_bit;
+  uint32   bit_offset = 0;
+  uint8    match_bits = 0, mask_bits = 0;
+  uint8    buff1 = 0, buff2 = 0;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t sample;
+
+  if ((ibuff == NULL) || (obuff == NULL))
+    {
+    TIFFError("reverseSamples8bits","Invalid image or work buffer");
+    return (1);
+    }
+
+  ready_bits = 0;
+  mask_bits =  (uint8)-1 >> ( 8 - bps);
+  dst = obuff;
+  for (col = width; col > 0; col--)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = (col - 1) * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        src_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        src_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      src = ibuff + src_byte;
+      match_bits = mask_bits << (8 - src_bit - bps); 
+      buff1 = ((*src) & match_bits) << (src_bit);
+
+      if (ready_bits < 8)
+        buff2 = (buff2 | (buff1 >> ready_bits));
+      else  /* If we have a full buffer's worth, write it out */
+        {
+        *dst++ = buff2;
+        buff2 = buff1;
+        ready_bits -= 8;
+        }
+      ready_bits += bps;
+      }
+    }
+  if (ready_bits > 0)
+    {
+    buff1 = (buff2 & ((unsigned int)255 << (8 - ready_bits)));
+    *dst++ = buff1;
+    }
+
+  return (0);
+  } /* end reverseSamples8bits */
+
+
+static int
+reverseSamples16bits (uint16 spp, uint16 bps, uint32 width, 
+                      uint8 *ibuff, uint8 *obuff)
+  {
+  int      ready_bits = 0;
+  uint32   col;
+  uint32   src_byte = 0, high_bit = 0;
+  uint32   bit_offset = 0;
+  uint16   match_bits = 0, mask_bits = 0;
+  uint16   buff1 = 0, buff2 = 0;
+  uint8    bytebuff = 0;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t sample;
+
+  if ((ibuff == NULL) || (obuff == NULL))
+    {
+    TIFFError("reverseSample16bits","Invalid image or work buffer");
+    return (1);
+    }
+
+  ready_bits = 0;
+  mask_bits =  (uint16)-1 >> (16 - bps);
+  dst = obuff;
+  for (col = width; col > 0; col--)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = (col - 1) * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        high_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        high_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      src = ibuff + src_byte;
+      match_bits = mask_bits << (16 - high_bit - bps); 
+      if (little_endian)
+        buff1 = (src[0] << 8) | src[1];
+      else
+        buff1 = (src[1] << 8) | src[0];
+      buff1 = (buff1 & match_bits) << (high_bit);
+      
+      if (ready_bits < 8)
+        { /* add another bps bits to the buffer */
+        bytebuff = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff = (buff2 >> 8);
+        *dst++ = bytebuff;
+        ready_bits -= 8;
+        /* shift in new bits */
+        buff2 = ((buff2 << 8) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+  if (ready_bits > 0)
+    {
+    bytebuff = (buff2 >> 8);
+    *dst++ = bytebuff;
+    }
+
+  return (0);
+  } /* end reverseSamples16bits */
+
+static int
+reverseSamples24bits (uint16 spp, uint16 bps, uint32 width, 
+                      uint8 *ibuff, uint8 *obuff)
+  {
+  int      ready_bits = 0;
+  uint32   col;
+  uint32   src_byte = 0, high_bit = 0;
+  uint32   bit_offset = 0;
+  uint32   match_bits = 0, mask_bits = 0;
+  uint32   buff1 = 0, buff2 = 0;
+  uint8    bytebuff1 = 0, bytebuff2 = 0;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t sample;
+
+  if ((ibuff == NULL) || (obuff == NULL))
+    {
+    TIFFError("reverseSamples24bits","Invalid image or work buffer");
+    return (1);
+    }
+
+  ready_bits = 0;
+  mask_bits =  (uint32)-1 >> (32 - bps);
+  dst = obuff;
+  for (col = width; col > 0; col--)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = (col - 1) * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        high_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        high_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      src = ibuff + src_byte;
+      match_bits = mask_bits << (32 - high_bit - bps); 
+      if (little_endian)
+       buff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+      else
+       buff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+      buff1 = (buff1 & match_bits) << (high_bit);
+
+      if (ready_bits < 16)
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 24);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 16);
+        *dst++ = bytebuff2;
+        ready_bits -= 16;
+
+        /* shift in new bits */
+        buff2 = ((buff2 << 16) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+
+ /* catch any trailing bits at the end of the line */
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 24);
+    *dst++ = bytebuff1;
+
+    buff2 = (buff2 << 8);
+    bytebuff2 = bytebuff1;
+    ready_bits -= 8;
+    }
+  return (0);
+  } /* end reverseSamples24bits */
+
+
+static int
+reverseSamples32bits (uint16 spp, uint16 bps, uint32 width, 
+                      uint8 *ibuff, uint8 *obuff)
+  {
+  int    ready_bits = 0, shift_width = 0;
+  int    bytes_per_sample, bytes_per_pixel;
+  uint32 bit_offset;
+  uint32 src_byte = 0, high_bit = 0;
+  uint32 col;
+  uint32 longbuff1 = 0, longbuff2 = 0;
+  uint64 mask_bits = 0, match_bits = 0;
+  uint64 buff1 = 0, buff2 = 0, buff3 = 0;
+  uint8  bytebuff1 = 0, bytebuff2 = 0, bytebuff3 = 0, bytebuff4 = 0;
+  unsigned char *src;
+  unsigned char *dst;
+  tsample_t sample;
+
+  if ((ibuff == NULL) || (obuff == NULL))
+    {
+    TIFFError("reverseSamples32bits","Invalid image or work buffer");
+    return (1);
+    }
+
+  ready_bits = 0;
+  mask_bits =  (uint64)-1 >> (64 - bps);
+  dst = obuff;
+
+  bytes_per_sample = (bps + 7) / 8;
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  if (bytes_per_pixel < (bytes_per_sample + 1))
+    shift_width = bytes_per_pixel;
+  else
+    shift_width = bytes_per_sample + 1;
+
+  for (col = width; col > 0; col--)
+    {
+    /* Compute src byte(s) and bits within byte(s) */
+    bit_offset = (col - 1) * bps * spp;
+    for (sample = 0; sample < spp; sample++)
+      {
+      if (sample == 0)
+        {
+        src_byte = bit_offset / 8;
+        high_bit  = bit_offset % 8;
+        }
+      else
+        {
+        src_byte = (bit_offset + (sample * bps)) / 8;
+        high_bit  = (bit_offset + (sample * bps)) % 8;
+        }
+
+      src = ibuff + src_byte;
+      match_bits = mask_bits << (64 - high_bit - bps); 
+      if (little_endian)
+        {
+       longbuff1 = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
+        longbuff2 = longbuff1;
+        }
+      else
+        {
+       longbuff1 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
+        longbuff2 = longbuff1;
+       }
+      buff3 = ((uint64)longbuff1 << 32) | longbuff2;
+      buff1 = (buff3 & match_bits) << (high_bit);
+
+      if (ready_bits < 32)
+        { /* add another bps bits to the buffer */
+        bytebuff1 = bytebuff2 = bytebuff3 = bytebuff4 = 0;
+        buff2 = (buff2 | (buff1 >> ready_bits));
+        }
+      else /* If we have a full buffer's worth, write it out */
+        {
+        bytebuff1 = (buff2 >> 56);
+        *dst++ = bytebuff1;
+        bytebuff2 = (buff2 >> 48);
+        *dst++ = bytebuff2;
+        bytebuff3 = (buff2 >> 40);
+        *dst++ = bytebuff3;
+        bytebuff4 = (buff2 >> 32);
+        *dst++ = bytebuff4;
+        ready_bits -= 32;
+                    
+        /* shift in new bits */
+        buff2 = ((buff2 << 32) | (buff1 >> ready_bits));
+        }
+      ready_bits += bps;
+      }
+    }
+  while (ready_bits > 0)
+    {
+    bytebuff1 = (buff2 >> 56);
+    *dst++ = bytebuff1;
+    buff2 = (buff2 << 8);
+    ready_bits -= 8;
+    }
+
+  return (0);
+  } /* end reverseSamples32bits */
+
+static int
+reverseSamplesBytes (uint16 spp, uint16 bps, uint32 width, 
+                     uint8 *src, uint8 *dst)
+  {
+  int i;
+  uint32  col, bytes_per_pixel, col_offset;
+  uint8   bytebuff1;
+  unsigned char swapbuff[32];
+  
+  if ((src == NULL) || (dst == NULL))
+    {
+    TIFFError("reverseSamplesBytes","Invalid input or output buffer");
+    return (1);
+    }
+
+  bytes_per_pixel  = ((bps * spp) + 7) / 8;
+  switch (bps / 8)
+     {
+     case 8:  /* Use memcpy for multiple bytes per sample data */
+     case 4:
+     case 3:
+     case 2: for (col = 0; col < (width / 2); col++)
+               {
+              col_offset = col * bytes_per_pixel;                     
+              _TIFFmemcpy (swapbuff, src + col_offset, bytes_per_pixel);
+              _TIFFmemcpy (src + col_offset, dst - col_offset - bytes_per_pixel, bytes_per_pixel);
+              _TIFFmemcpy (dst - col_offset - bytes_per_pixel, swapbuff, bytes_per_pixel);
+               }
+            break;
+     case 1: /* Use byte copy only for single byte per sample data */
+             for (col = 0; col < (width / 2); col++)
+               { 
+              for (i = 0; i < spp; i++)
+                  {
+                 bytebuff1 = *src;
+                 *src++ = *(dst - spp + i);
+                  *(dst - spp + i) = bytebuff1;
+                 }
+               dst -= spp;
+                }
+            break;
+     default: TIFFError("reverseSamplesBytes","Unsupported bit depth %d", bps);
+       return (1);
+     }
+  return (0);
+  } /* end reverseSamplesBytes */
+
+
+/* Mirror an image horizontally or vertically */
+static int
+mirrorImage(uint16 spp, uint16 bps, uint16 mirror, uint32 width, uint32 length, unsigned char *ibuff)
+  {
+  int      shift_width;
+  uint32   bytes_per_pixel, bytes_per_sample;
+  uint32   row, rowsize, row_offset;
+  unsigned char *line_buff = NULL;
+  unsigned char *src;
+  unsigned char *dst;
+
+  src = ibuff;
+  rowsize = ((width * bps * spp) + 7) / 8;
+  switch (mirror)
+    {
+    case MIRROR_BOTH:
+    case MIRROR_VERT: 
+             line_buff = (unsigned char *)_TIFFmalloc(rowsize);
+             if (line_buff == NULL)
+               {
+              TIFFError ("mirrorImage", "Unable to allocate mirror line buffer of %1u bytes", rowsize);
+               return (-1);
+               }
+
+             dst = ibuff + (rowsize * (length - 1));
+             for (row = 0; row < length / 2; row++)
+               {
+             _TIFFmemcpy(line_buff, src, rowsize);
+             _TIFFmemcpy(src, dst,  rowsize);
+             _TIFFmemcpy(dst, line_buff, rowsize);
+               src += (rowsize);
+               dst -= (rowsize);                                 
+               }
+             if (line_buff)
+               _TIFFfree(line_buff);
+             if (mirror == MIRROR_VERT)
+               break;
+    case MIRROR_HORIZ :
+              if ((bps % 8) == 0) /* byte alligned data */
+                { 
+                for (row = 0; row < length; row++)
+                  {
+                 row_offset = row * rowsize;
+                  src = ibuff + row_offset;
+                  dst = ibuff + row_offset + rowsize;
+                  if (reverseSamplesBytes(spp, bps, width, src, dst))
+                    {
+                   return (-1);
+                    }
+                 }
+               }
+             else
+                { /* non 8 bit per sample  data */
+                if (!(line_buff = (unsigned char *)_TIFFmalloc(rowsize + 1)))
+                  {
+                  TIFFError("mirrorImage", "Unable to allocate mirror line buffer");
+                  return (-1);
+                  }
+                bytes_per_sample = (bps + 7) / 8;
+                bytes_per_pixel  = ((bps * spp) + 7) / 8;
+                if (bytes_per_pixel < (bytes_per_sample + 1))
+                  shift_width = bytes_per_pixel;
+                else
+                  shift_width = bytes_per_sample + 1;
+
+                for (row = 0; row < length; row++)
+                  {
+                 row_offset = row * rowsize;
+                  src = ibuff + row_offset;
+                  _TIFFmemset (line_buff, '\0', rowsize);
+                  switch (shift_width)
+                    {
+                    case 1: if (reverseSamples16bits(spp, bps, width, src, line_buff))
+                              {
+                             _TIFFfree(line_buff);
+                              return (-1);
+                              }
+                             _TIFFmemcpy (src, line_buff, rowsize);
+                             break;
+                    case 2: if (reverseSamples24bits(spp, bps, width, src, line_buff))
+                              {
+                             _TIFFfree(line_buff);
+                              return (-1);
+                              }
+                             _TIFFmemcpy (src, line_buff, rowsize);
+                             break;
+                    case 3: 
+                    case 4: 
+                    case 5: if (reverseSamples32bits(spp, bps, width, src, line_buff))
+                              {
+                             _TIFFfree(line_buff);
+                              return (-1);
+                              }
+                             _TIFFmemcpy (src, line_buff, rowsize);
+                             break;
+                    default: TIFFError("mirrorImage","Unsupported bit depth %d", bps);
+                            _TIFFfree(line_buff);
+                             return (-1);      
+                    }
+                 }
+                if (line_buff)
+                  _TIFFfree(line_buff);
+               }
+             break;
+
+    default: TIFFError ("mirrorImage", "Invalid mirror axis %d", mirror);
+             return (-1);
+             break;
+    }
+
+  return (0);
+  }
+
+/* Invert the light and dark values for a bilevel or grayscale image */
+static int
+invertImage(uint16 photometric, uint16 spp, uint16 bps, uint32 width, uint32 length, unsigned char *work_buff)
+  {
+  uint32   row, col;
+  unsigned char  bytebuff1, bytebuff2, bytebuff3, bytebuff4;
+  unsigned char *src;
+  uint16        *src_uint16;
+  uint32        *src_uint32;
+
+  if (spp != 1)
+    {
+    TIFFError("invertImage", "Image inversion not supported for more than one sample per pixel");
+    return (-1);
+    }
+
+  if (photometric !=  PHOTOMETRIC_MINISWHITE && photometric !=  PHOTOMETRIC_MINISBLACK)
+    {
+    TIFFError("invertImage", "Only black and white and grayscale images can be inverted");
+    return (-1);
+    }
+
+  src = work_buff;
+  if (src == NULL)
+    {
+    TIFFError ("invertImage", "Invalid crop buffer passed to invertImage");
+    return (-1);
+    }
+
+  switch (bps)
+    {
+    case 32: src_uint32 = (uint32 *)src;
+             for (row = 0; row < length; row++)
+               for (col = 0; col < width; col++)
+                 {
+                *src_uint32 = (uint32)0xFFFFFFFF - *src_uint32;
+                  src_uint32++;
+                 }
+            break;
+    case 16: src_uint16 = (uint16 *)src;
+             for (row = 0; row < length; row++)
+               for (col = 0; col < width; col++)
+                 {
+                *src_uint16 = (uint16)0xFFFF - *src_uint16;
+                  src_uint16++;
+                 }
+            break;
+    case 8: for (row = 0; row < length; row++)
+              for (col = 0; col < width; col++)
+                {
+               *src = (uint8)255 - *src;
+                 src++;
+                }
+            break;
+    case 4: for (row = 0; row < length; row++)
+              for (col = 0; col < width; col++)
+                {
+               bytebuff1 = 16 - (uint8)(*src & 240 >> 4);
+               bytebuff2 = 16 - (*src & 15);
+               *src = bytebuff1 << 4 & bytebuff2;
+                src++;
+                }
+            break;
+    case 2: for (row = 0; row < length; row++)
+              for (col = 0; col < width; col++)
+                {
+               bytebuff1 = 4 - (uint8)(*src & 192 >> 6);
+               bytebuff2 = 4 - (uint8)(*src & 48  >> 4);
+               bytebuff3 = 4 - (uint8)(*src & 12  >> 2);
+               bytebuff4 = 4 - (uint8)(*src & 3);
+               *src = (bytebuff1 << 6) || (bytebuff2 << 4) || (bytebuff3 << 2) || bytebuff4;
+                src++;
+                }
+            break;
+    case 1: for (row = 0; row < length; row++)
+              for (col = 0; col < width; col += 8 /(spp * bps))
+                {
+                *src = ~(*src);
+                src++;
+                }
+            break;
+    default: TIFFError("invertImage", "Unsupported bit depth %d", bps);
+      return (-1);
+    }
+
+  return (0);
+  }
+
+/* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 360c6bfc6be85c5ea89e5755680bc3b0b4bb0738..08eb59df9c14c5905ac035fe43d4237bb9fe70b6 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #define        streq(a,b)      (strcmp(a,b) == 0)
@@ -77,7 +81,8 @@ fsdither(TIFF* in, TIFF* out)
         * Get first line
         */
        if (TIFFReadScanline(in, inputline, 0, 0) <= 0)
-               return;
+            goto skip_on_error;
+
        inptr = inputline;
        nextptr = nextline;
        for (j = 0; j < imagewidth; ++j)
@@ -128,6 +133,7 @@ fsdither(TIFF* in, TIFF* out)
                if (TIFFWriteScanline(out, outline, i-1, 0) < 0)
                        break;
        }
+  skip_on_error:
        _TIFFfree(inputline);
        _TIFFfree(thisline);
        _TIFFfree(nextline);
@@ -191,7 +197,6 @@ main(int argc, char* argv[])
        float floatv;
        char thing[1024];
        uint32 rowsperstrip = (uint32) -1;
-       int onestrip = 0;
        uint16 fillorder = 0;
        int c;
        extern int optind;
@@ -213,7 +218,6 @@ main(int argc, char* argv[])
                        break;
                case 'r':               /* rows/strip */
                        rowsperstrip = atoi(optarg);
-                       onestrip = 0;
                        break;
                case 't':
                        threshold = atoi(optarg);
@@ -263,10 +267,7 @@ main(int argc, char* argv[])
        CopyField(TIFFTAG_XRESOLUTION, floatv);
        CopyField(TIFFTAG_YRESOLUTION, floatv);
        CopyField(TIFFTAG_RESOLUTIONUNIT, shortv);
-       if (onestrip)
-               rowsperstrip = imagelength-1;
-       else
-               rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
+        rowsperstrip = TIFFDefaultStripSize(out, rowsperstrip);
        TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
        switch (compression) {
        case COMPRESSION_CCITTFAX3:
@@ -323,3 +324,10 @@ usage(void)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index a897b1207a4fe1c8b6f3bd433e77ffaf3dc24f16..aca745749279a816a8d87085c9dcf31ea10126b6 100644 (file)
 # include <io.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
+#ifndef HAVE_GETOPT
+extern int getopt(int, char**, char*);
+#endif
+
 #include "tiffio.h"
 
 #ifndef O_BINARY
 # define O_BINARY      0
 #endif
 
-char*  appname;
-char*  curfile;
-int    swabflag;
-int    bigendian;
-int    typeshift[14];          /* data type shift counts */
-long   typemask[14];           /* data type masks */
-uint32 maxitems = 24;          /* maximum indirect data items to print */
-
-char*  bytefmt = "%s%#02x";            /* BYTE */
-char*  sbytefmt = "%s%d";              /* SBYTE */
-char*  shortfmt = "%s%u";              /* SHORT */
-char*  sshortfmt = "%s%d";             /* SSHORT */
-char*  longfmt = "%s%lu";              /* LONG */
-char*  slongfmt = "%s%ld";             /* SLONG */
-char*  rationalfmt = "%s%g";           /* RATIONAL */
-char*  srationalfmt = "%s%g";          /* SRATIONAL */
-char*  floatfmt = "%s%g";              /* FLOAT */
-char*  doublefmt = "%s%g";             /* DOUBLE */
-char*  ifdfmt = "%s%#04x";             /* IFD offset */
-
-static void dump(int, off_t);
-extern int optind;
-extern char* optarg;
+static union
+{
+       TIFFHeaderClassic classic;
+       TIFFHeaderBig big;
+       TIFFHeaderCommon common;
+} hdr;
+char* appname;
+char* curfile;
+int swabflag;
+int bigendian;
+int bigtiff;
+uint32 maxitems = 24;   /* maximum indirect data items to print */
+
+const char* bytefmt = "%s%#02x";       /* BYTE */
+const char* sbytefmt = "%s%d";         /* SBYTE */
+const char* shortfmt = "%s%u";         /* SHORT */
+const char* sshortfmt = "%s%d";                /* SSHORT */
+const char* longfmt = "%s%lu";         /* LONG */
+const char* slongfmt = "%s%ld";                /* SLONG */
+const char* ifdfmt = "%s%#04lx";       /* IFD offset */
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+const char* long8fmt = "%s%I64u";      /* LONG8 */
+const char* slong8fmt = "%s%I64d";     /* SLONG8 */
+const char* ifd8fmt = "%s%#08I64x";    /* IFD offset8*/
+#else
+const char* long8fmt = "%s%llu";       /* LONG8 */
+const char* slong8fmt = "%s%lld";      /* SLONG8 */
+const char* ifd8fmt = "%s%#08llx";     /* IFD offset8*/
+#endif
+const char* rationalfmt = "%s%g";      /* RATIONAL */
+const char* srationalfmt = "%s%g";     /* SRATIONAL */
+const char* floatfmt = "%s%g";         /* FLOAT */
+const char* doublefmt = "%s%g";                /* DOUBLE */
+
+static void dump(int, uint64);
+extern int optind;
+extern char* optarg;
 
 void
 usage()
@@ -89,7 +111,7 @@ main(int argc, char* argv[])
        int one = 1, fd;
        int multiplefiles = (argc > 1);
        int c;
-       uint32 diroff = (uint32) 0;
+       uint64 diroff = 0;
        bigendian = (*(char *)&one == 0);
 
        appname = argv[0];
@@ -102,7 +124,7 @@ main(int argc, char* argv[])
                        slongfmt = "%s%#lx";
                        break;
                case 'o':
-                       diroff = (uint32) strtoul(optarg, NULL, 0);
+                       diroff = (uint64) strtoul(optarg, NULL, 0);
                        break;
                case 'm':
                        maxitems = strtoul(optarg, NULL, 0);
@@ -123,107 +145,83 @@ main(int argc, char* argv[])
                        printf("%s:\n", argv[optind]);
                curfile = argv[optind];
                swabflag = 0;
+               bigtiff = 0;
                dump(fd, diroff);
                close(fd);
        }
        return (0);
 }
 
-static TIFFHeader hdr;
-
-#define        ord(e)  ((int)e)
-
-/*
- * Initialize shift & mask tables and byte
- * swapping state according to the file
- * byte order.
- */
-static void
-InitByteOrder(int magic)
-{
-       typemask[0] = 0;
-       typemask[ord(TIFF_BYTE)] = 0xff;
-       typemask[ord(TIFF_SBYTE)] = 0xff;
-       typemask[ord(TIFF_UNDEFINED)] = 0xff;
-       typemask[ord(TIFF_SHORT)] = 0xffff;
-       typemask[ord(TIFF_SSHORT)] = 0xffff;
-       typemask[ord(TIFF_LONG)] = 0xffffffff;
-       typemask[ord(TIFF_SLONG)] = 0xffffffff;
-       typemask[ord(TIFF_IFD)] = 0xffffffff;
-       typemask[ord(TIFF_RATIONAL)] = 0xffffffff;
-       typemask[ord(TIFF_SRATIONAL)] = 0xffffffff;
-       typemask[ord(TIFF_FLOAT)] = 0xffffffff;
-       typemask[ord(TIFF_DOUBLE)] = 0xffffffff;
-       typeshift[0] = 0;
-       typeshift[ord(TIFF_LONG)] = 0;
-       typeshift[ord(TIFF_SLONG)] = 0;
-       typeshift[ord(TIFF_IFD)] = 0;
-       typeshift[ord(TIFF_RATIONAL)] = 0;
-       typeshift[ord(TIFF_SRATIONAL)] = 0;
-       typeshift[ord(TIFF_FLOAT)] = 0;
-       typeshift[ord(TIFF_DOUBLE)] = 0;
-       if (magic == TIFF_BIGENDIAN || magic == MDI_BIGENDIAN) {
-               typeshift[ord(TIFF_BYTE)] = 24;
-               typeshift[ord(TIFF_SBYTE)] = 24;
-               typeshift[ord(TIFF_SHORT)] = 16;
-               typeshift[ord(TIFF_SSHORT)] = 16;
-               swabflag = !bigendian;
-       } else {
-               typeshift[ord(TIFF_BYTE)] = 0;
-               typeshift[ord(TIFF_SBYTE)] = 0;
-               typeshift[ord(TIFF_SHORT)] = 0;
-               typeshift[ord(TIFF_SSHORT)] = 0;
-               swabflag = bigendian;
-       }
-}
+#define ord(e) ((int)e)
 
-static off_t ReadDirectory(int, unsigned, off_t);
-static void ReadError(char*);
-static void Error(const char*, ...);
-static void Fatal(const char*, ...);
+static uint64 ReadDirectory(int, unsigned, uint64);
+static void ReadError(char*);
+static void Error(const char*, ...);
+static void Fatal(const char*, ...);
 
 static void
-dump(int fd, off_t diroff)
+dump(int fd, uint64 diroff)
 {
        unsigned i;
 
        lseek(fd, (off_t) 0, 0);
-       if (read(fd, (char*) &hdr, sizeof (hdr)) != sizeof (hdr))
+       if (read(fd, (char*) &hdr, sizeof (TIFFHeaderCommon)) != sizeof (TIFFHeaderCommon))
                ReadError("TIFF header");
-       /*
-        * Setup the byte order handling.
-        */
-       if (hdr.tiff_magic != TIFF_BIGENDIAN && hdr.tiff_magic != TIFF_LITTLEENDIAN &&
+       if (hdr.common.tiff_magic != TIFF_BIGENDIAN
+           && hdr.common.tiff_magic != TIFF_LITTLEENDIAN &&
 #if HOST_BIGENDIAN
-           // MDI is sensitive to the host byte order, unlike TIFF
-           MDI_BIGENDIAN != hdr.tiff_magic )
+           /* MDI is sensitive to the host byte order, unlike TIFF */
+           MDI_BIGENDIAN != hdr.common.tiff_magic
 #else
-           MDI_LITTLEENDIAN != hdr.tiff_magic )
+           MDI_LITTLEENDIAN != hdr.common.tiff_magic
 #endif
+          ) {
                Fatal("Not a TIFF or MDI file, bad magic number %u (%#x)",
-                   hdr.tiff_magic, hdr.tiff_magic);
-       InitByteOrder(hdr.tiff_magic);
-       /*
-        * Swap header if required.
-        */
-       if (swabflag) {
-               TIFFSwabShort(&hdr.tiff_version);
-               TIFFSwabLong(&hdr.tiff_diroff);
+                   hdr.common.tiff_magic, hdr.common.tiff_magic);
+       }
+       if (hdr.common.tiff_magic == TIFF_BIGENDIAN
+           || hdr.common.tiff_magic == MDI_BIGENDIAN)
+               swabflag = !bigendian;
+       else
+               swabflag = bigendian;
+       if (swabflag)
+               TIFFSwabShort(&hdr.common.tiff_version);
+       if (hdr.common.tiff_version==42)
+       {
+               if (read(fd, (char*) &hdr.classic.tiff_diroff, 4) != 4)
+                       ReadError("TIFF header");
+               if (swabflag)
+                       TIFFSwabLong(&hdr.classic.tiff_diroff);
+               printf("Magic: %#x <%s-endian> Version: %#x <%s>\n",
+                   hdr.classic.tiff_magic,
+                   hdr.classic.tiff_magic == TIFF_BIGENDIAN ? "big" : "little",
+                   42,"ClassicTIFF");
+               if (diroff == 0)
+                       diroff = hdr.classic.tiff_diroff;
+       }
+       else if (hdr.common.tiff_version==43)
+       {
+               if (read(fd, (char*) &hdr.big.tiff_offsetsize, 12) != 12)
+                       ReadError("TIFF header");
+               if (swabflag)
+               {
+                       TIFFSwabShort(&hdr.big.tiff_offsetsize);
+                       TIFFSwabShort(&hdr.big.tiff_unused);
+                       TIFFSwabLong8(&hdr.big.tiff_diroff);
+               }
+               printf("Magic: %#x <%s-endian> Version: %#x <%s>\n",
+                   hdr.big.tiff_magic,
+                   hdr.big.tiff_magic == TIFF_BIGENDIAN ? "big" : "little",
+                   43,"BigTIFF");
+               printf("OffsetSize: %#x Unused: %#x\n",
+                   hdr.big.tiff_offsetsize,hdr.big.tiff_unused);
+               if (diroff == 0)
+                       diroff = hdr.big.tiff_diroff;
+               bigtiff = 1;
        }
-       /*
-        * Now check version (if needed, it's been byte-swapped).
-        * Note that this isn't actually a version number, it's a
-        * magic number that doesn't change (stupid).
-        */
-       if (hdr.tiff_version != TIFF_VERSION)
+       else
                Fatal("Not a TIFF file, bad version number %u (%#x)",
-                   hdr.tiff_version, hdr.tiff_version); 
-       printf("Magic: %#x <%s-endian> Version: %#x\n",
-           hdr.tiff_magic,
-           hdr.tiff_magic == TIFF_BIGENDIAN ? "big" : "little",
-           hdr.tiff_version);
-       if (diroff == 0)
-           diroff = hdr.tiff_diroff;
+                   hdr.common.tiff_version, hdr.common.tiff_version);
        for (i = 0; diroff != 0; i++) {
                if (i > 0)
                        putchar('\n');
@@ -231,161 +229,289 @@ dump(int fd, off_t diroff)
        }
 }
 
-static int datawidth[] = {
-    0, /* nothing */
-    1, /* TIFF_BYTE */
-    1, /* TIFF_ASCII */
-    2, /* TIFF_SHORT */
-    4, /* TIFF_LONG */
-    8, /* TIFF_RATIONAL */
-    1, /* TIFF_SBYTE */
-    1, /* TIFF_UNDEFINED */
-    2, /* TIFF_SSHORT */
-    4, /* TIFF_SLONG */
-    8, /* TIFF_SRATIONAL */
-    4, /* TIFF_FLOAT */
-    8, /* TIFF_DOUBLE */
-    4  /* TIFF_IFD */
+static const int datawidth[] = {
+       0, /* 00 = undefined */
+       1, /* 01 = TIFF_BYTE */
+       1, /* 02 = TIFF_ASCII */
+       2, /* 03 = TIFF_SHORT */
+       4, /* 04 = TIFF_LONG */
+       8, /* 05 = TIFF_RATIONAL */
+       1, /* 06 = TIFF_SBYTE */
+       1, /* 07 = TIFF_UNDEFINED */
+       2, /* 08 = TIFF_SSHORT */
+       4, /* 09 = TIFF_SLONG */
+       8, /* 10 = TIFF_SRATIONAL */
+       4, /* 11 = TIFF_FLOAT */
+       8, /* 12 = TIFF_DOUBLE */
+       4, /* 13 = TIFF_IFD */
+       0, /* 14 = undefined */
+       0, /* 15 = undefined */
+       8, /* 16 = TIFF_LONG8 */
+       8, /* 17 = TIFF_SLONG8 */
+       8, /* 18 = TIFF_IFD8 */
 };
-#define        NWIDTHS (sizeof (datawidth) / sizeof (datawidth[0]))
-static int TIFFFetchData(int, TIFFDirEntry*, void*);
-static void PrintTag(FILE*, uint16);
-static void PrintType(FILE*, uint16);
-static void PrintData(FILE*, uint16, uint32, unsigned char*);
-static void PrintByte(FILE*, const char*, TIFFDirEntry*);
-static void PrintShort(FILE*, const char*, TIFFDirEntry*);
-static void PrintLong(FILE*, const char*, TIFFDirEntry*);
+#define NWIDTHS (sizeof (datawidth) / sizeof (datawidth[0]))
+static void PrintTag(FILE*, uint16);
+static void PrintType(FILE*, uint16);
+static void PrintData(FILE*, uint16, uint32, unsigned char*);
 
 /*
  * Read the next TIFF directory from a file
  * and convert it to the internal format.
  * We read directories sequentially.
  */
-static off_t
-ReadDirectory(int fd, unsigned ix, off_t off)
+static uint64
+ReadDirectory(int fd, unsigned int ix, uint64 off)
 {
-       register TIFFDirEntry *dp;
-       register unsigned int n;
-       TIFFDirEntry *dir = 0;
        uint16 dircount;
-       int space;
-       uint32 nextdiroff = 0;
+       uint32 direntrysize;
+       void* dirmem = NULL;
+       uint64 nextdiroff = 0;
+       uint32 n;
+       uint8* dp;
 
        if (off == 0)                   /* no more directories */
                goto done;
-       if (lseek(fd, (off_t) off, 0) != off) {
+#if defined(__WIN32__) && defined(_MSC_VER)
+       if (_lseeki64(fd, (__int64)off, SEEK_SET) != (__int64)off) {
+#else
+       if (lseek(fd, (off_t)off, SEEK_SET) != (off_t)off) {
+#endif
                Fatal("Seek error accessing TIFF directory");
                goto done;
        }
-       if (read(fd, (char*) &dircount, sizeof (uint16)) != sizeof (uint16)) {
-               ReadError("directory count");
-               goto done;
+       if (!bigtiff) {
+               if (read(fd, (char*) &dircount, sizeof (uint16)) != sizeof (uint16)) {
+                       ReadError("directory count");
+                       goto done;
+               }
+               if (swabflag)
+                       TIFFSwabShort(&dircount);
+               direntrysize = 12;
+       } else {
+               uint64 dircount64 = 0;
+               if (read(fd, (char*) &dircount64, sizeof (uint64)) != sizeof (uint64)) {
+                       ReadError("directory count");
+                       goto done;
+               }
+               if (swabflag)
+                       TIFFSwabLong8(&dircount64);
+               if (dircount64>0xFFFF) {
+                       Error("Sanity check on directory count failed");
+                       goto done;
+               }
+               dircount = (uint16)dircount64;
+               direntrysize = 20;
        }
-       if (swabflag)
-               TIFFSwabShort(&dircount);
-       dir = (TIFFDirEntry *)_TIFFmalloc(dircount * sizeof (TIFFDirEntry));
-       if (dir == NULL) {
+       dirmem = _TIFFmalloc(dircount * direntrysize);
+       if (dirmem == NULL) {
                Fatal("No space for TIFF directory");
                goto done;
        }
-       n = read(fd, (char*) dir, dircount*sizeof (*dp));
-       if (n != dircount*sizeof (*dp)) {
-               n /= sizeof (*dp);
+       n = read(fd, (char*) dirmem, dircount*direntrysize);
+       if (n != dircount*direntrysize) {
+               n /= direntrysize;
                Error(
-           "Could only read %u of %u entries in directory at offset %#lx",
-                   n, dircount, (unsigned long) off);
+#if defined(__WIN32__) && defined(_MSC_VER)
+           "Could only read %lu of %u entries in directory at offset %#I64x",
+                     (unsigned long)n, dircount, (unsigned __int64) off);
+#else
+           "Could only read %lu of %u entries in directory at offset %#llx",
+                     (unsigned long)n, dircount, (unsigned long long) off);
+#endif
                dircount = n;
-       }
-       if (read(fd, (char*) &nextdiroff, sizeof (uint32)) != sizeof (uint32))
                nextdiroff = 0;
-       if (swabflag)
-               TIFFSwabLong(&nextdiroff);
-       printf("Directory %u: offset %lu (%#lx) next %lu (%#lx)\n", ix,
-           (unsigned long)off, (unsigned long)off,
-           (unsigned long)nextdiroff, (unsigned long)nextdiroff);
-       for (dp = dir, n = dircount; n > 0; n--, dp++) {
-               if (swabflag) {
-                       TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
-                       TIFFSwabArrayOfLong(&dp->tdir_count, 2);
+       } else {
+               if (!bigtiff) {
+                       uint32 nextdiroff32;
+                       if (read(fd, (char*) &nextdiroff32, sizeof (uint32)) != sizeof (uint32))
+                               nextdiroff32 = 0;
+                       if (swabflag)
+                               TIFFSwabLong(&nextdiroff32);
+                       nextdiroff = nextdiroff32;
+               } else {
+                       if (read(fd, (char*) &nextdiroff, sizeof (uint64)) != sizeof (uint64))
+                               nextdiroff = 0;
+                       if (swabflag)
+                               TIFFSwabLong8(&nextdiroff);
                }
-               PrintTag(stdout, dp->tdir_tag);
+       }
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+       printf("Directory %u: offset %I64u (%#I64x) next %I64u (%#I64x)\n", ix,
+           (unsigned __int64)off, (unsigned __int64)off,
+           (unsigned __int64)nextdiroff, (unsigned __int64)nextdiroff);
+#else
+       printf("Directory %u: offset %llu (%#llx) next %llu (%#llx)\n", ix,
+           (unsigned long long)off, (unsigned long long)off,
+           (unsigned long long)nextdiroff, (unsigned long long)nextdiroff);
+#endif
+       for (dp = (uint8*)dirmem, n = dircount; n > 0; n--) {
+               uint16 tag;
+               uint16 type;
+               uint16 typewidth;
+               uint64 count;
+               uint64 datasize;
+               int datafits;
+               void* datamem;
+               uint64 dataoffset;
+               int datatruncated;
+               tag = *(uint16*)dp;
+               if (swabflag)
+                       TIFFSwabShort(&tag);
+               dp += sizeof(uint16);
+               type = *(uint16*)dp;
+               dp += sizeof(uint16);
+               if (swabflag)
+                       TIFFSwabShort(&type);
+               PrintTag(stdout, tag);
                putchar(' ');
-               PrintType(stdout, dp->tdir_type);
+               PrintType(stdout, type);
                putchar(' ');
-               printf("%lu<", (unsigned long) dp->tdir_count);
-               if (dp->tdir_type >= NWIDTHS) {
-                       printf(">\n");
-                       continue;
+               if (!bigtiff)
+               {
+                       uint32 count32;
+                       count32 = *(uint32*)dp;
+                       if (swabflag)
+                               TIFFSwabLong(&count32);
+                       dp += sizeof(uint32);
+                       count = count32;
                }
-               space = dp->tdir_count * datawidth[dp->tdir_type];
-               if (space <= 0) {
-                       printf(">\n");
-                       Error("Invalid count for tag %u", dp->tdir_tag);
-                       continue;
-                }
-               if (space <= 4) {
-                       switch (dp->tdir_type) {
-                       case TIFF_FLOAT:
-                       case TIFF_UNDEFINED:
-                       case TIFF_ASCII: {
-                               unsigned char data[4];
-                               _TIFFmemcpy(data, &dp->tdir_offset, 4);
+               else
+               {
+                       count = *(uint64*)dp;
+                       if (swabflag)
+                               TIFFSwabLong8(&count);
+                       dp += sizeof(uint64);
+               }
+#if defined(__WIN32__) && (defined(_MSC_VER) || defined(__MINGW32__))
+               printf("%I64u<", (unsigned __int64)count);
+#else
+               printf("%llu<", (unsigned long long)count);
+#endif
+               if (type >= NWIDTHS)
+                       typewidth = 0;
+               else
+                       typewidth = datawidth[type];
+               datasize = count*typewidth;
+               datafits = 1;
+               datamem = dp;
+               dataoffset = 0;
+               datatruncated = 0;
+               if (!bigtiff)
+               {
+                       if (datasize>4)
+                       {
+                               uint32 dataoffset32;
+                               datafits = 0;
+                               datamem = NULL;
+                               dataoffset32 = *(uint32*)dp;
                                if (swabflag)
-                                       TIFFSwabLong((uint32*) data);
-                               PrintData(stdout,
-                                   dp->tdir_type, dp->tdir_count, data);
-                               break;
+                                       TIFFSwabLong(&dataoffset32);
+                               dataoffset = dataoffset32;
                        }
-                       case TIFF_BYTE:
-                               PrintByte(stdout, bytefmt, dp);
-                               break;
-                       case TIFF_SBYTE:
-                               PrintByte(stdout, sbytefmt, dp);
-                               break;
-                       case TIFF_SHORT:
-                               PrintShort(stdout, shortfmt, dp);
-                               break;
-                       case TIFF_SSHORT:
-                               PrintShort(stdout, sshortfmt, dp);
-                               break;
-                       case TIFF_LONG:
-                               PrintLong(stdout, longfmt, dp);
-                               break;
-                       case TIFF_SLONG:
-                               PrintLong(stdout, slongfmt, dp);
-                               break;
-                       case TIFF_IFD:
-                               PrintLong(stdout, ifdfmt, dp);
-                               break;
+                       dp += sizeof(uint32);
+               }
+               else
+               {
+                       if (datasize>8)
+                       {
+                               datafits = 0;
+                               datamem = NULL;
+                               dataoffset = *(uint64*)dp;
+                               if (swabflag)
+                                       TIFFSwabLong8(&dataoffset);
                        }
-               } else {
-                       unsigned char *data = (unsigned char *)_TIFFmalloc(space);
-                       if (data) {
-                               if (TIFFFetchData(fd, dp, data)) {
-                                       if (dp->tdir_count > maxitems) {
-                                               PrintData(stdout, dp->tdir_type,
-                                                   maxitems, data);
-                                               printf(" ...");
-                                       } else
-                                               PrintData(stdout, dp->tdir_type,
-                                                   dp->tdir_count, data);
-                                }
-                               _TIFFfree(data);
+                       dp += sizeof(uint64);
+               }
+               if (datasize>0x10000)
+               {
+                       datatruncated = 1;
+                       count = 0x10000/typewidth;
+                       datasize = count*typewidth;
+               }
+               if (count>maxitems)
+               {
+                       datatruncated = 1;
+                       count = maxitems;
+                       datasize = count*typewidth;
+               }
+               if (!datafits)
+               {
+                       datamem = _TIFFmalloc((uint32)datasize);
+                       if (datamem) {
+#if defined(__WIN32__) && defined(_MSC_VER)
+                               if (_lseeki64(fd, (__int64)dataoffset, SEEK_SET)
+                                   != (__int64)dataoffset)
+#else
+                               if (lseek(fd, (off_t)dataoffset, 0) !=
+                                   (off_t)dataoffset)
+#endif
+                               {
+                                       Error(
+                               "Seek error accessing tag %u value", tag);
+                                       _TIFFfree(datamem);
+                                       datamem = NULL;
+                               }
+                               if (read(fd, datamem, (size_t)datasize) != (TIFF_SSIZE_T)datasize)
+                               {
+                                       Error(
+                               "Read error accessing tag %u value", tag);
+                                       _TIFFfree(datamem);
+                                       datamem = NULL;
+                               }
                        } else
-                               Error("No space for data for tag %u",
-                                   dp->tdir_tag);
+                               Error("No space for data for tag %u",tag);
+               }
+               if (datamem)
+               {
+                       if (swabflag)
+                       {
+                               switch (type)
+                               {
+                                       case TIFF_BYTE:
+                                       case TIFF_ASCII:
+                                       case TIFF_SBYTE:
+                                       case TIFF_UNDEFINED:
+                                               break;
+                                       case TIFF_SHORT:
+                                       case TIFF_SSHORT:
+                                               TIFFSwabArrayOfShort((uint16*)datamem,(tmsize_t)count);
+                                               break;
+                                       case TIFF_LONG:
+                                       case TIFF_SLONG:
+                                       case TIFF_FLOAT:
+                                       case TIFF_IFD:
+                                               TIFFSwabArrayOfLong((uint32*)datamem,(tmsize_t)count);
+                                               break;
+                                       case TIFF_RATIONAL:
+                                       case TIFF_SRATIONAL:
+                                               TIFFSwabArrayOfLong((uint32*)datamem,(tmsize_t)count*2);
+                                               break;
+                                       case TIFF_DOUBLE:
+                                       case TIFF_LONG8:
+                                       case TIFF_SLONG8:
+                                       case TIFF_IFD8:
+                                               TIFFSwabArrayOfLong8((uint64*)datamem,(tmsize_t)count);
+                                               break;
+                               }
+                       }
+                       PrintData(stdout,type,(uint32)count,datamem);
+                       if (datatruncated)
+                               printf(" ...");
+                       if (!datafits)
+                               _TIFFfree(datamem);
                }
                printf(">\n");
        }
 done:
-       if (dir)
-               _TIFFfree((char *)dir);
+       if (dirmem)
+               _TIFFfree((char *)dirmem);
        return (nextdiroff);
 }
 
-static struct tagname {
-       uint16  tag;
-       char*   name;
+static const struct tagname {
+       uint16 tag;
+       const char* name;
 } tagnames[] = {
     { TIFFTAG_SUBFILETYPE,     "SubFileType" },
     { TIFFTAG_OSUBFILETYPE,    "OldSubFileType" },
@@ -484,7 +610,7 @@ static      struct tagname {
 static void
 PrintTag(FILE* fd, uint16 tag)
 {
-       register struct tagname *tp;
+       const struct tagname *tp;
 
        for (tp = tagnames; tp < &tagnames[NTAGS]; tp++)
                if (tp->tag == tag) {
@@ -497,7 +623,7 @@ PrintTag(FILE* fd, uint16 tag)
 static void
 PrintType(FILE* fd, uint16 type)
 {
-       static char *typenames[] = {
+       static const char *typenames[] = {
            "0",
            "BYTE",
            "ASCII",
@@ -510,7 +636,13 @@ PrintType(FILE* fd, uint16 type)
            "SLONG",
            "SRATIONAL",
            "FLOAT",
-           "DOUBLE"
+           "DOUBLE",
+           "IFD",
+           "14",
+           "15",
+           "LONG8",
+           "SLONG8",
+           "IFD8"
        };
 #define        NTYPES  (sizeof (typenames) / sizeof (typenames[0]))
 
@@ -521,60 +653,6 @@ PrintType(FILE* fd, uint16 type)
 }
 #undef NTYPES
 
-static void
-PrintByte(FILE* fd, const char* fmt, TIFFDirEntry* dp)
-{
-       char* sep = "";
-
-       if (hdr.tiff_magic == TIFF_BIGENDIAN) {
-               switch ((int)dp->tdir_count) {
-               case 4: fprintf(fd, fmt, sep, dp->tdir_offset&0xff);
-                       sep = " ";
-               case 3: fprintf(fd, fmt, sep, (dp->tdir_offset>>8)&0xff);
-                       sep = " ";
-               case 2: fprintf(fd, fmt, sep, (dp->tdir_offset>>16)&0xff);
-                       sep = " ";
-               case 1: fprintf(fd, fmt, sep, dp->tdir_offset>>24);
-               }
-       } else {
-               switch ((int)dp->tdir_count) {
-               case 4: fprintf(fd, fmt, sep, dp->tdir_offset>>24);
-                       sep = " ";
-               case 3: fprintf(fd, fmt, sep, (dp->tdir_offset>>16)&0xff);
-                       sep = " ";
-               case 2: fprintf(fd, fmt, sep, (dp->tdir_offset>>8)&0xff);
-                       sep = " ";
-               case 1: fprintf(fd, fmt, sep, dp->tdir_offset&0xff);
-               }
-       }
-}
-
-static void
-PrintShort(FILE* fd, const char* fmt, TIFFDirEntry* dp)
-{
-       char *sep = "";
-
-       if (hdr.tiff_magic == TIFF_BIGENDIAN) {
-               switch (dp->tdir_count) {
-               case 2: fprintf(fd, fmt, sep, dp->tdir_offset&0xffff);
-                       sep = " ";
-               case 1: fprintf(fd, fmt, sep, dp->tdir_offset>>16);
-               }
-       } else {
-               switch (dp->tdir_count) {
-               case 2: fprintf(fd, fmt, sep, dp->tdir_offset>>16);
-                       sep = " ";
-               case 1: fprintf(fd, fmt, sep, dp->tdir_offset&0xffff);
-               }
-       }
-}
-
-static void
-PrintLong(FILE* fd, const char* fmt, TIFFDirEntry* dp)
-{
-       fprintf(fd, fmt, "", (long) dp->tdir_offset);
-}
-
 #include <ctype.h>
 
 static void
@@ -646,6 +724,28 @@ PrintData(FILE* fd, uint16 type, uint32 count, unsigned char* data)
                        fprintf(fd, slongfmt, sep, (long) *lp++), sep = " ";
                break;
        }
+       case TIFF_LONG8: {
+               uint64 *llp = (uint64*)data;
+               while (count-- > 0) {
+#if defined(__WIN32__) && defined(_MSC_VER)
+                       fprintf(fd, long8fmt, sep, (unsigned __int64) *llp++);
+#else
+                       fprintf(fd, long8fmt, sep, (unsigned long long) *llp++);
+#endif
+                       sep = " ";
+               }
+               break;
+       }
+       case TIFF_SLONG8: {
+               int64 *llp = (int64*)data;
+               while (count-- > 0)
+#if defined(__WIN32__) && defined(_MSC_VER)
+                       fprintf(fd, slong8fmt, sep, (__int64) *llp++), sep = " ";
+#else
+                       fprintf(fd, slong8fmt, sep, (long long) *llp++), sep = " ";
+#endif
+               break;
+       }
        case TIFF_RATIONAL: {
                uint32 *lp = (uint32*)data;
                while (count-- > 0) {
@@ -695,49 +795,19 @@ PrintData(FILE* fd, uint16 type, uint32 count, unsigned char* data)
                }
                break;
        }
-       }
-}
-
-/*
- * Fetch a contiguous directory item.
- */
-static int
-TIFFFetchData(int fd, TIFFDirEntry* dir, void* cp)
-{
-       int cc, w;
-
-       w = (dir->tdir_type < NWIDTHS ? datawidth[dir->tdir_type] : 0);
-       cc = dir->tdir_count * w;
-       if (lseek(fd, (off_t)dir->tdir_offset, 0) != (off_t)-1
-           && read(fd, cp, cc) != -1) {
-               if (swabflag) {
-                       switch (dir->tdir_type) {
-                       case TIFF_SHORT:
-                       case TIFF_SSHORT:
-                               TIFFSwabArrayOfShort((uint16*) cp,
-                                   dir->tdir_count);
-                               break;
-                       case TIFF_LONG:
-                       case TIFF_SLONG:
-                       case TIFF_FLOAT:
-                       case TIFF_IFD:
-                               TIFFSwabArrayOfLong((uint32*) cp,
-                                   dir->tdir_count);
-                               break;
-                       case TIFF_RATIONAL:
-                               TIFFSwabArrayOfLong((uint32*) cp,
-                                   2*dir->tdir_count);
-                               break;
-                       case TIFF_DOUBLE:
-                               TIFFSwabArrayOfDouble((double*) cp,
-                                   dir->tdir_count);
-                               break;
-                       }
+       case TIFF_IFD8: {
+               uint64 *llp = (uint64*)data;
+               while (count-- > 0) {
+#if defined(__WIN32__) && defined(_MSC_VER)
+                       fprintf(fd, ifd8fmt, sep, (unsigned __int64) *llp++);
+#else
+                       fprintf(fd, ifd8fmt, sep, (unsigned long long) *llp++);
+#endif
+                       sep = " ";
                }
-               return (cc);
+               break;
+       }
        }
-       Error("Error while reading data for tag %u", dir->tdir_tag);
-       return (0);
 }
 
 static void
@@ -776,3 +846,10 @@ Fatal(const char* fmt, ...)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 835295a0f74610939511b6f626101a83cee8da22..45022166dce31d2b57bf41684f5532e8d2e27c57 100644 (file)
@@ -40,6 +40,7 @@
 #endif
 
 #include "tiffio.h"
+#include "tiffiop.h"
 
 #ifndef HAVE_GETOPT
 extern int getopt(int, char**, char*);
@@ -204,7 +205,7 @@ initImage(void)
         if (photo != (uint16) -1)
                 TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, photo);
         if (!TIFFRGBAImageBegin(&img, tif, stoponerr, title)) {
-                TIFFError(filelist[fileindex], title);
+                TIFFError(filelist[fileindex], "%s", title);
                 TIFFClose(tif);
                 tif = NULL;
                 return -1;
@@ -224,21 +225,24 @@ initImage(void)
                 w = xmax;
         }
 
-        if (w != width || h != height) {
-            if (raster != NULL)
-                _TIFFfree(raster), raster = NULL;
-            raster = (uint32*) _TIFFmalloc(img.width * img.height * sizeof (uint32));
-            if (raster == NULL) {
-                width = height = 0;
-                TIFFError(filelist[fileindex], "No space for raster buffer");
-                cleanup_and_exit();
-            }
-            width = w;
-            height = h;
-        }
-        TIFFRGBAImageGet(&img, raster, img.width, img.height);
+       if (w != width || h != height) {
+               uint32 rastersize =
+                       _TIFFMultiply32(tif, img.width, img.height, "allocating raster buffer");
+               if (raster != NULL)
+                       _TIFFfree(raster), raster = NULL;
+               raster = (uint32*) _TIFFCheckMalloc(tif, rastersize, sizeof (uint32),
+                                                   "allocating raster buffer");
+               if (raster == NULL) {
+                       width = height = 0;
+                       TIFFError(filelist[fileindex], "No space for raster buffer");
+                       cleanup_and_exit();
+               }
+               width = w;
+               height = h;
+       }
+       TIFFRGBAImageGet(&img, raster, img.width, img.height);
 #if HOST_BIGENDIAN
-        TIFFSwabArrayOfLong(raster,img.width*img.height);
+       TIFFSwabArrayOfLong(raster,img.width*img.height);
 #endif
        return 0;
 }
@@ -453,3 +457,10 @@ photoArg(const char* arg)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 661e0693e8365910527537692e56fda9e1068a77..15ac9b7390e575f534dc1dcd0765b737828958fd 100644 (file)
 # include <unistd.h>
 #endif
 
-#include "tiffio.h"
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
 
-#define        streq(a,b)      (strcasecmp(a,b) == 0)
+#include "tiffiop.h"
 
-int    showdata = 0;                   /* show data */
-int    rawdata = 0;                    /* show raw/decoded data */
-int    showwords = 0;                  /* show data as bytes/words */
-int    readdata = 0;                   /* read data in file */
-int    stoponerr = 1;                  /* stop on first read error */
+static TIFFErrorHandler old_error_handler = 0;
+static int status = 0;                  /* exit status */
+static int showdata = 0;               /* show data */
+static int rawdata = 0;                        /* show raw/decoded data */
+static int showwords = 0;              /* show data as bytes/words */
+static int readdata = 0;               /* read data in file */
+static int stoponerr = 1;              /* stop on first read error */
 
 static void usage(void);
-static void tiffinfo(TIFF*, uint16, long);
+static void tiffinfo(TIFF*, uint16, long, int);
+
+static void
+PrivateErrorHandler(const char* module, const char* fmt, va_list ap)
+{
+        if (old_error_handler)
+                (*old_error_handler)(module,fmt,ap);
+       status = 1;
+}
 
 int
 main(int argc, char* argv[])
@@ -60,7 +72,7 @@ main(int argc, char* argv[])
        extern int optind;
        extern char* optarg;
        long flags = 0;
-       uint32 diroff = 0;
+       uint64 diroff = 0;
        int chopstrips = 0;             /* disable strip chopping */
 
        while ((c = getopt(argc, argv, "f:o:cdDSjilmrsvwz0123456789")) != -1)
@@ -116,6 +128,9 @@ main(int argc, char* argv[])
                }
        if (optind >= argc)
                usage();
+
+       old_error_handler = TIFFSetErrorHandler(PrivateErrorHandler);
+
        multiplefiles = (argc - optind > 1);
        for (; optind < argc; optind++) {
                if (multiplefiles)
@@ -124,26 +139,27 @@ main(int argc, char* argv[])
                if (tif != NULL) {
                        if (dirnum != -1) {
                                if (TIFFSetDirectory(tif, (tdir_t) dirnum))
-                                       tiffinfo(tif, order, flags);
+                                       tiffinfo(tif, order, flags, 1);
                        } else if (diroff != 0) {
                                if (TIFFSetSubDirectory(tif, diroff))
-                                       tiffinfo(tif, order, flags);
+                                       tiffinfo(tif, order, flags, 1);
                        } else {
                                do {
-                                       uint32 offset;
+                                       toff_t offset;
 
-                                       tiffinfo(tif, order, flags);
+                                       tiffinfo(tif, order, flags, 1);
                                        if (TIFFGetField(tif, TIFFTAG_EXIFIFD,
                                                         &offset)) {
-                                               if (TIFFReadEXIFDirectory(tif, offset))
-                                                       tiffinfo(tif, order, flags);
+                                               if (TIFFReadEXIFDirectory(tif, offset)) {
+                                                       tiffinfo(tif, order, flags, 0);
+                                               }
                                        }
                                } while (TIFFReadDirectory(tif));
                        }
                        TIFFClose(tif);
                }
        }
-       return (0);
+       return (status);
 }
 
 char* stuff[] = {
@@ -202,7 +218,7 @@ TIFFReadContigStripData(TIFF* tif)
 
        buf = (unsigned char *)_TIFFmalloc(TIFFStripSize(tif));
        if (buf) {
-               uint32 row, h;
+               uint32 row, h=0;
                uint32 rowsperstrip = (uint32)-1;
 
                TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
@@ -254,7 +270,7 @@ TIFFReadSeparateStripData(TIFF* tif)
 
 static void
 ShowTile(uint32 row, uint32 col, tsample_t sample,
-    unsigned char* pp, uint32 nrow, uint32 rowsize)
+    unsigned char* pp, uint32 nrow, tsize_t rowsize)
 {
        uint32 cc;
 
@@ -263,7 +279,7 @@ ShowTile(uint32 row, uint32 col, tsample_t sample,
                printf(",%u", sample);
        printf("):\n");
        while (nrow-- > 0) {
-               for (cc = 0; cc < rowsize; cc++) {
+         for (cc = 0; cc < (uint32) rowsize; cc++) {
                        printf(" %02x", *pp++);
                        if (((cc+1) % 24) == 0)
                                putchar('\n');
@@ -335,7 +351,7 @@ TIFFReadSeparateTileData(TIFF* tif)
 void
 TIFFReadData(TIFF* tif)
 {
-       uint16 config;
+       uint16 config = PLANARCONFIG_CONTIG;
 
        TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &config);
        if (TIFFIsTiled(tif)) {
@@ -382,18 +398,18 @@ TIFFReadRawData(TIFF* tif, int bitrev)
 {
        tstrip_t nstrips = TIFFNumberOfStrips(tif);
        const char* what = TIFFIsTiled(tif) ? "Tile" : "Strip";
-       uint32* stripbc;
+       uint64* stripbc;
 
        TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &stripbc);
        if (nstrips > 0) {
-               uint32 bufsize = stripbc[0];
+               uint32 bufsize = (uint32) stripbc[0];
                tdata_t buf = _TIFFmalloc(bufsize);
                tstrip_t s;
 
                for (s = 0; s < nstrips; s++) {
                        if (stripbc[s] > bufsize) {
-                               buf = _TIFFrealloc(buf, stripbc[s]);
-                               bufsize = stripbc[s];
+                               buf = _TIFFrealloc(buf, (tmsize_t)stripbc[s]);
+                               bufsize = (uint32) stripbc[s];
                        }
                        if (buf == NULL) {
                                fprintf(stderr,
@@ -401,23 +417,23 @@ TIFFReadRawData(TIFF* tif, int bitrev)
                                    (unsigned long) s);
                                break;
                        }
-                       if (TIFFReadRawStrip(tif, s, buf, stripbc[s]) < 0) {
+                       if (TIFFReadRawStrip(tif, s, buf, (tmsize_t) stripbc[s]) < 0) {
                                fprintf(stderr, "Error reading strip %lu\n",
                                    (unsigned long) s);
                                if (stoponerr)
                                        break;
                        } else if (showdata) {
                                if (bitrev) {
-                                       TIFFReverseBits(buf, stripbc[s]);
+                                       TIFFReverseBits(buf, (tmsize_t)stripbc[s]);
                                        printf("%s %lu: (bit reversed)\n ",
                                            what, (unsigned long) s);
                                } else
                                        printf("%s %lu:\n ", what,
                                            (unsigned long) s);
                                if (showwords)
-                                       ShowRawWords((uint16*) buf, stripbc[s]>>1);
+                                       ShowRawWords((uint16*) buf, (uint32) stripbc[s]>>1);
                                else
-                                       ShowRawBytes((unsigned char*) buf, stripbc[s]);
+                                       ShowRawBytes((unsigned char*) buf, (uint32) stripbc[s]);
                        }
                }
                if (buf != NULL)
@@ -426,10 +442,10 @@ TIFFReadRawData(TIFF* tif, int bitrev)
 }
 
 static void
-tiffinfo(TIFF* tif, uint16 order, long flags)
+tiffinfo(TIFF* tif, uint16 order, long flags, int is_image)
 {
        TIFFPrintDirectory(tif, stdout, flags);
-       if (!readdata)
+       if (!readdata || !is_image)
                return;
        if (rawdata) {
                if (order) {
@@ -447,3 +463,10 @@ tiffinfo(TIFF* tif, uint16 order, long flags)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index c26e84bb64c0abc4798f4b080fa6ae30db39b18b..cab8d2957d1957b25b3789f5fa5b43674369967c 100644 (file)
 # include <unistd.h>
 #endif
 
+#ifdef NEED_LIBPORT
+# include "libport.h"
+#endif
+
 #include "tiffio.h"
 
 #define        MAX_CMAP_SIZE   256
@@ -893,3 +897,10 @@ bad:
        _TIFFfree(nextline);
        _TIFFfree(outline);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 8f75388a8e5c9f2718c1698274aedd3974970758..4c10b5e82d0955fcdbc40f42641bc55b255b6ff7 100644 (file)
  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  * OF THIS SOFTWARE.
  ******************************************************************************
- *
- * $Log: tiffset.c,v $
- * Revision 1.11  2005/09/13 14:13:42  dron
- * Avoid warnings.
- *
- * Revision 1.10  2005/02/24 14:47:11  fwarmerdam
- * Updated header.
- *
  */
 
 
@@ -48,6 +40,8 @@ static char* usageMsg[] = {
 "usage: tiffset [options] filename",
 "where options are:",
 " -s <tagname> [count] <value>...   set the tag value",
+" -d <dirno> set the directory",
+" -sd <diroff> set the subdirectory",
 " -sf <tagname> <filename>  read the tag value from file (for ASCII tags only)",
 NULL
 };
@@ -61,10 +55,10 @@ usage(void)
        exit(-1);
 }
 
-static const TIFFFieldInfo *
+static const TIFFField *
 GetField(TIFF *tiff, const char *tagname)
 {
-    const TIFFFieldInfo *fip;
+    const TIFFField *fip;
 
     if( atoi(tagname) > 0 )
         fip = TIFFFieldWithTag(tiff, (ttag_t)atoi(tagname));
@@ -72,8 +66,8 @@ GetField(TIFF *tiff, const char *tagname)
         fip = TIFFFieldWithName(tiff, tagname);
 
     if (!fip) {
-        fprintf( stderr, "Field name %s not recognised.\n", tagname );
-        return (TIFFFieldInfo *)NULL;
+        fprintf( stderr, "Field name \"%s\" is not recognised.\n", tagname );
+        return (TIFFField *)NULL;
     }
 
     return fip;
@@ -93,8 +87,26 @@ main(int argc, char* argv[])
         return 2;
 
     for( arg_index = 1; arg_index < argc-1; arg_index++ ) {
+       if (strcmp(argv[arg_index],"-d") == 0 && arg_index < argc-2) {
+           arg_index++;
+           if( TIFFSetDirectory(tiff, atoi(argv[arg_index]) ) != 1 )
+            {
+               fprintf( stderr, "Failed to set directory=%s\n", argv[arg_index] );
+               return 6;
+            }
+           arg_index++;
+       }
+       if (strcmp(argv[arg_index],"-sd") == 0 && arg_index < argc-2) {
+           arg_index++;
+           if( TIFFSetSubDirectory(tiff, atoi(argv[arg_index]) ) != 1 )
+            {
+               fprintf( stderr, "Failed to set sub directory=%s\n", argv[arg_index] );
+               return 7;
+            }
+           arg_index++;
+       }
         if (strcmp(argv[arg_index],"-s") == 0 && arg_index < argc-3) {
-            const TIFFFieldInfo *fip;
+            const TIFFField *fip;
             const char *tagname;
 
             arg_index++;
@@ -105,24 +117,25 @@ main(int argc, char* argv[])
                 return 3;
 
             arg_index++;
-            if (fip->field_type == TIFF_ASCII) {
-                if (TIFFSetField(tiff, fip->field_tag, argv[arg_index]) != 1)
+            if (TIFFFieldDataType(fip) == TIFF_ASCII) {
+                if (TIFFSetField(tiff, TIFFFieldTag(fip), argv[arg_index]) != 1)
                     fprintf( stderr, "Failed to set %s=%s\n",
-                             fip->field_name, argv[arg_index] );
-            } else if (fip->field_writecount > 0) {
+                             TIFFFieldName(fip), argv[arg_index] );
+            } else if (TIFFFieldWriteCount(fip) > 0
+                      || TIFFFieldWriteCount(fip) == TIFF_VARIABLE) {
                 int     ret = 1;
                 short   wc;
 
-                if (fip->field_writecount == TIFF_VARIABLE)
+                if (TIFFFieldWriteCount(fip) == TIFF_VARIABLE)
                         wc = atoi(argv[arg_index++]);
                 else
-                        wc = fip->field_writecount;
+                        wc = TIFFFieldWriteCount(fip);
 
                 if (argc - arg_index < wc) {
                     fprintf( stderr,
                              "Number of tag values is not enough. "
                              "Expected %d values for %s tag, got %d\n",
-                             wc, fip->field_name, argc - arg_index);
+                             wc, TIFFFieldName(fip), argc - arg_index);
                     return 4;
                 }
                     
@@ -130,7 +143,7 @@ main(int argc, char* argv[])
                         int     i, size;
                         void    *array;
 
-                        switch (fip->field_type) {
+                        switch (TIFFFieldDataType(fip)) {
                                 /*
                                  * XXX: We can't use TIFFDataWidth()
                                  * to determine the space needed to store
@@ -172,7 +185,7 @@ main(int argc, char* argv[])
                                 return 4;
                         }
 
-                        switch (fip->field_type) {
+                        switch (TIFFFieldDataType(fip)) {
                             case TIFF_BYTE:
                                 for (i = 0; i < wc; i++)
                                     ((uint8 *)array)[i] = atoi(argv[arg_index+i]);
@@ -212,38 +225,49 @@ main(int argc, char* argv[])
                                 break;
                         }
                 
-                        if (fip->field_passcount) {
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                        if (TIFFFieldPassCount(fip)) {
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    wc, array);
-                        } else {
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                        } else if (TIFFFieldTag(fip) == TIFFTAG_PAGENUMBER
+                                  || TIFFFieldTag(fip) == TIFFTAG_HALFTONEHINTS
+                                  || TIFFFieldTag(fip) == TIFFTAG_YCBCRSUBSAMPLING
+                                  || TIFFFieldTag(fip) == TIFFTAG_DOTRANGE) {
+                                       if (TIFFFieldDataType(fip) == TIFF_BYTE) {
+                                       ret = TIFFSetField(tiff, TIFFFieldTag(fip),
+                                               ((uint8 *)array)[0], ((uint8 *)array)[1]);
+                               } else if (TIFFFieldDataType(fip) == TIFF_SHORT) {
+                                       ret = TIFFSetField(tiff, TIFFFieldTag(fip),
+                                               ((uint16 *)array)[0], ((uint16 *)array)[1]);
+                               }
+                       } else {
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    array);
                         }
 
                         _TIFFfree(array);
                 } else {
-                        switch (fip->field_type) {
+                        switch (TIFFFieldDataType(fip)) {
                             case TIFF_BYTE:
                             case TIFF_SHORT:
                             case TIFF_SBYTE:
                             case TIFF_SSHORT:
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    atoi(argv[arg_index++]));
                                 break;
                             case TIFF_LONG:
                             case TIFF_SLONG:
                             case TIFF_IFD:
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    atol(argv[arg_index++]));
                                 break;
                             case TIFF_DOUBLE:
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    atof(argv[arg_index++]));
                                 break;
                             case TIFF_RATIONAL:
                             case TIFF_SRATIONAL:
                             case TIFF_FLOAT:
-                                ret = TIFFSetField(tiff, fip->field_tag,
+                                ret = TIFFSetField(tiff, TIFFFieldTag(fip),
                                                    (float)atof(argv[arg_index++]));
                                 break;
                             default:
@@ -252,14 +276,14 @@ main(int argc, char* argv[])
                 }
 
                 if (ret != 1)
-                    fprintf(stderr, "Failed to set %s\n", fip->field_name);
+                    fprintf(stderr, "Failed to set %s\n", TIFFFieldName(fip));
                 arg_index += wc;
             }
         } else if (strcmp(argv[arg_index],"-sf") == 0 && arg_index < argc-3) {
             FILE    *fp;
-            const TIFFFieldInfo *fip;
+            const TIFFField *fip;
             char    *text;
-            int     len;
+            size_t  len;
 
             arg_index++;
             fip = GetField(tiff, argv[arg_index]);
@@ -267,10 +291,10 @@ main(int argc, char* argv[])
             if (!fip)
                 return 3;
 
-            if (fip->field_type != TIFF_ASCII) {
+            if (TIFFFieldDataType(fip) != TIFF_ASCII) {
                 fprintf( stderr,
                          "Only ASCII tags can be set from file. "
-                         "%s is not ASCII tag.\n", fip->field_name );
+                         "%s is not ASCII tag.\n", TIFFFieldName(fip) );
                 return 5;
             }
 
@@ -287,9 +311,9 @@ main(int argc, char* argv[])
 
             fclose( fp );
 
-            if(TIFFSetField( tiff, fip->field_tag, text ) != 1) {
+            if(TIFFSetField( tiff, TIFFFieldTag(fip), text ) != 1) {
                 fprintf(stderr, "Failed to set %s from file %s\n", 
-                        fip->field_name, argv[arg_index]);
+                        TIFFFieldName(fip), argv[arg_index]);
             }
 
             _TIFFfree( text );
@@ -307,3 +331,10 @@ main(int argc, char* argv[])
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index aaf4bb455f66c3894527b98366e16ce7ee5a2a0c..300dd8b669ce06ee023fe15f6c1f70d7eb8448df 100644 (file)
@@ -43,7 +43,11 @@ extern int getopt(int, char**, char*);
 #define        CopyField3(tag, v1, v2, v3) \
     if (TIFFGetField(in, tag, &v1, &v2, &v3)) TIFFSetField(out, tag, v1, v2, v3)
 
-static char fname[1024+1];
+#define PATH_LENGTH 8192
+
+static const char TIFF_SUFFIX[] = ".tif";
+
+static char fname[PATH_LENGTH];
 
 static int tiffcp(TIFF*, TIFF*);
 static void newfilename(void);
@@ -60,16 +64,26 @@ main(int argc, char* argv[])
                fprintf(stderr, "usage: tiffsplit input.tif [prefix]\n");
                return (-3);
        }
-       if (argc > 2)
-               strcpy(fname, argv[2]);
+       if (argc > 2) {
+               strncpy(fname, argv[2], sizeof(fname));
+               fname[sizeof(fname) - 1] = '\0';
+       }
        in = TIFFOpen(argv[1], "r");
        if (in != NULL) {
                do {
-                       char path[1024+1];
+                       size_t path_len;
+                       char *path;
+                       
                        newfilename();
-                       strcpy(path, fname);
-                       strcat(path, ".tif");
+
+                       path_len = strlen(fname) + sizeof(TIFF_SUFFIX);
+                       path = (char *) _TIFFmalloc(path_len);
+                       strncpy(path, fname, path_len);
+                       path[path_len - 1] = '\0';
+                       strncat(path, TIFF_SUFFIX, path_len - strlen(path) - 1);
                        out = TIFFOpen(path, TIFFIsBigEndian(in)?"wb":"wl");
+                       _TIFFfree(path);
+
                        if (out == NULL)
                                return (-2);
                        if (!tiffcp(in, out))
@@ -158,7 +172,7 @@ tiffcp(TIFF* in, TIFF* out)
        CopyField(TIFFTAG_SAMPLESPERPIXEL, samplesperpixel);
        CopyField(TIFFTAG_COMPRESSION, compression);
        if (compression == COMPRESSION_JPEG) {
-               uint16 count = 0;
+               uint32 count = 0;
                void *table = NULL;
                if (TIFFGetField(in, TIFFTAG_JPEGTABLES, &count, &table)
                    && count > 0 && table) {
@@ -183,7 +197,7 @@ tiffcp(TIFF* in, TIFF* out)
        CopyField(TIFFTAG_YPOSITION, floatv);
        CopyField(TIFFTAG_IMAGEDEPTH, longv);
        CopyField(TIFFTAG_TILEDEPTH, longv);
-       CopyField(TIFFTAG_SAMPLEFORMAT, longv);
+       CopyField(TIFFTAG_SAMPLEFORMAT, shortv);
        CopyField2(TIFFTAG_EXTRASAMPLES, shortv, shortav);
        { uint16 *red, *green, *blue;
          CopyField3(TIFFTAG_COLORMAP, red, green, blue);
@@ -216,23 +230,26 @@ tiffcp(TIFF* in, TIFF* out)
 static int
 cpStrips(TIFF* in, TIFF* out)
 {
-       tsize_t bufsize  = TIFFStripSize(in);
+       tmsize_t bufsize  = TIFFStripSize(in);
        unsigned char *buf = (unsigned char *)_TIFFmalloc(bufsize);
 
        if (buf) {
                tstrip_t s, ns = TIFFNumberOfStrips(in);
-               uint32 *bytecounts;
+               uint64 *bytecounts;
 
-               TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts);
+               if (!TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts)) {
+                       fprintf(stderr, "tiffsplit: strip byte counts are missing\n");
+                       return (0);
+               }
                for (s = 0; s < ns; s++) {
-                       if (bytecounts[s] > (uint32)bufsize) {
-                               buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[s]);
+                       if (bytecounts[s] > (uint64)bufsize) {
+                               buf = (unsigned char *)_TIFFrealloc(buf, (tmsize_t)bytecounts[s]);
                                if (!buf)
                                        return (0);
-                               bufsize = bytecounts[s];
+                               bufsize = (tmsize_t)bytecounts[s];
                        }
-                       if (TIFFReadRawStrip(in, s, buf, bytecounts[s]) < 0 ||
-                           TIFFWriteRawStrip(out, s, buf, bytecounts[s]) < 0) {
+                       if (TIFFReadRawStrip(in, s, buf, (tmsize_t)bytecounts[s]) < 0 ||
+                           TIFFWriteRawStrip(out, s, buf, (tmsize_t)bytecounts[s]) < 0) {
                                _TIFFfree(buf);
                                return (0);
                        }
@@ -246,23 +263,26 @@ cpStrips(TIFF* in, TIFF* out)
 static int
 cpTiles(TIFF* in, TIFF* out)
 {
-       tsize_t bufsize = TIFFTileSize(in);
+       tmsize_t bufsize = TIFFTileSize(in);
        unsigned char *buf = (unsigned char *)_TIFFmalloc(bufsize);
 
        if (buf) {
                ttile_t t, nt = TIFFNumberOfTiles(in);
-               uint32 *bytecounts;
+               uint64 *bytecounts;
 
-               TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts);
+               if (!TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts)) {
+                       fprintf(stderr, "tiffsplit: tile byte counts are missing\n");
+                       return (0);
+               }
                for (t = 0; t < nt; t++) {
-                       if (bytecounts[t] > (uint32) bufsize) {
-                               buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[t]);
+                       if (bytecounts[t] > (uint64) bufsize) {
+                               buf = (unsigned char *)_TIFFrealloc(buf, (tmsize_t)bytecounts[t]);
                                if (!buf)
                                        return (0);
-                               bufsize = bytecounts[t];
+                               bufsize = (tmsize_t)bytecounts[t];
                        }
-                       if (TIFFReadRawTile(in, t, buf, bytecounts[t]) < 0 ||
-                           TIFFWriteRawTile(out, t, buf, bytecounts[t]) < 0) {
+                       if (TIFFReadRawTile(in, t, buf, (tmsize_t)bytecounts[t]) < 0 ||
+                           TIFFWriteRawTile(out, t, buf, (tmsize_t)bytecounts[t]) < 0) {
                                _TIFFfree(buf);
                                return (0);
                        }
@@ -274,3 +294,10 @@ cpTiles(TIFF* in, TIFF* out)
 }
 
 /* vim: set ts=8 sts=8 sw=8 noet: */
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */
index 01982fd51922a491593dfda5ece31f5dba9ea65c..8f72447d04d0236384e4bbd7086bee2b64a43124 100644 (file)
@@ -159,3 +159,10 @@ check(int R, int G, int B)
        eCodes++;
     eBits += abs(eR) + abs(eG) + abs(eB);
 }
+/*
+ * Local Variables:
+ * mode: c
+ * c-basic-offset: 8
+ * fill-column: 78
+ * End:
+ */