From 4b46c1f6e891b1ddd5968536440b888661fade3e Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 31 Aug 2005 10:45:47 +0000 Subject: Initial population git-svn-id: https://svn.o-hand.com/repos/poky@1 311d38ba-8fff-0310-9ca6-ca027cbcb966 --- openembedded/packages/jpeg/jpeg-6b/debian.patch | 10014 +++++++++++++++++++++ openembedded/packages/jpeg/jpeg-6b/ldflags.patch | 16 + openembedded/packages/jpeg/jpeg-6b/paths.patch | 77 + 3 files changed, 10107 insertions(+) create mode 100644 openembedded/packages/jpeg/jpeg-6b/debian.patch create mode 100644 openembedded/packages/jpeg/jpeg-6b/ldflags.patch create mode 100644 openembedded/packages/jpeg/jpeg-6b/paths.patch (limited to 'openembedded/packages/jpeg/jpeg-6b') diff --git a/openembedded/packages/jpeg/jpeg-6b/debian.patch b/openembedded/packages/jpeg/jpeg-6b/debian.patch new file mode 100644 index 000000000..823c8e08d --- /dev/null +++ b/openembedded/packages/jpeg/jpeg-6b/debian.patch @@ -0,0 +1,10014 @@ + +# +# Made by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- jpeg-6b/jpegtran.1~libjpeg6bb-5 ++++ jpeg-6b/jpegtran.1 +@@ -131,6 +131,24 @@ + .B \-rot 180 -trim + trims both edges. + .PP ++We also offer a lossless-crop option, which discards data outside a given ++image region but losslessly preserves what is inside. Like the rotate and ++flip transforms, lossless crop is restricted by the JPEG format: the upper ++left corner of the selected region must fall on an iMCU boundary. If this ++does not hold for the given crop parameters, we silently move the upper left ++corner up and/or left to make it so, simultaneously increasing the region ++dimensions to keep the lower right crop corner unchanged. (Thus, the ++output image covers at least the requested region, but may cover more.) ++ ++Note: lossless-crop is an enhancement from http://sylvana.net/jpegcrop/ ++that may not be available on non-Debian systems. ++ ++The image can be losslessly cropped by giving the switch: ++.TP ++.B \-crop WxH+X+Y ++Crop to a rectangular subarea of width W, height H starting at point X,Y. ++.PP ++.PP + Another not-strictly-lossless transformation switch is: + .TP + .B \-grayscale +--- jpeg-6b/configure~libjpeg6bb-5 ++++ jpeg-6b/configure +@@ -52,7 +52,7 @@ + includedir='${prefix}/include' + oldincludedir='/usr/include' + infodir='${prefix}/info' +-mandir='${prefix}/man' ++mandir='${prefix}/share/man' + + # Initialize some other variables. + subdirs= +@@ -1559,7 +1559,8 @@ + if test "x$LTSTATIC" = xno; then + disable_static="--disable-static" + fi +- $srcdir/ltconfig $disable_shared $disable_static $srcdir/ltmain.sh ++ chmod a+x $srcdir/ltconfig.new ++ $srcdir/ltconfig.new $disable_shared $disable_static $srcdir/ltmain.new.sh $host + fi + + # Select memory manager depending on user input. +--- jpeg-6b/makefile.cfg~libjpeg6bb-5 ++++ jpeg-6b/makefile.cfg +@@ -17,7 +17,7 @@ + binprefix = + manprefix = + manext = 1 +-mandir = $(prefix)/man/man$(manext) ++mandir = $(prefix)/share/man/man$(manext) + + # The name of your C compiler: + CC= @CC@ +@@ -210,6 +210,11 @@ + $(INSTALL_DATA) $(srcdir)/jpeglib.h $(includedir)/jpeglib.h + $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(includedir)/jmorecfg.h + $(INSTALL_DATA) $(srcdir)/jerror.h $(includedir)/jerror.h ++#:mjpegtools require this file to build and header say: ++# * These declarations are considered internal to the JPEG library; most ++# * applications using the library shouldn't need to include this file. ++# So it is not forbidden to use it, therefore it must be installed. ++ $(INSTALL_DATA) $(srcdir)/jpegint.h $(includedir)/jpegint.h + + clean: + $(RM) *.o *.lo libjpeg.a libjpeg.la +--- jpeg-6b/jpegtran.c~libjpeg6bb-5 ++++ jpeg-6b/jpegtran.c +@@ -1,7 +1,7 @@ + /* + * jpegtran.c + * +- * Copyright (C) 1995-1997, Thomas G. Lane. ++ * Copyright (C) 1995-2001, Thomas G. Lane. + * This file is part of the Independent JPEG Group's software. + * For conditions of distribution and use, see the accompanying README file. + * +@@ -64,6 +64,7 @@ + #endif + #if TRANSFORMS_SUPPORTED + fprintf(stderr, "Switches for modifying the image:\n"); ++ fprintf(stderr, " -crop WxH+X+Y Crop to a rectangular subarea\n"); + fprintf(stderr, " -grayscale Reduce to grayscale (omit color data)\n"); + fprintf(stderr, " -flip [horizontal|vertical] Mirror image (left-right or top-bottom)\n"); + fprintf(stderr, " -rotate [90|180|270] Rotate image (degrees clockwise)\n"); +@@ -134,6 +135,7 @@ + transformoption.transform = JXFORM_NONE; + transformoption.trim = FALSE; + transformoption.force_grayscale = FALSE; ++ transformoption.crop = FALSE; + cinfo->err->trace_level = 0; + + /* Scan command line options, adjust parameters */ +@@ -160,7 +162,7 @@ + exit(EXIT_FAILURE); + #endif + +- } else if (keymatch(arg, "copy", 1)) { ++ } else if (keymatch(arg, "copy", 2)) { + /* Select which extra markers to copy. */ + if (++argn >= argc) /* advance to next argument */ + usage(); +@@ -173,6 +175,20 @@ + } else + usage(); + ++ } else if (keymatch(arg, "crop", 2)) { ++ /* Perform lossless cropping. */ ++#if TRANSFORMS_SUPPORTED ++ if (++argn >= argc) /* advance to next argument */ ++ usage(); ++ if (! jtransform_parse_crop_spec(&transformoption, argv[argn])) { ++ fprintf(stderr, "%s: bogus -crop argument '%s'\n", ++ progname, argv[argn]); ++ exit(EXIT_FAILURE); ++ } ++#else ++ select_transform(JXFORM_NONE); /* force an error */ ++#endif ++ + } else if (keymatch(arg, "debug", 1) || keymatch(arg, "verbose", 1)) { + /* Enable debug printouts. */ + /* On first -d, print version identification */ +@@ -342,8 +358,10 @@ + jvirt_barray_ptr * src_coef_arrays; + jvirt_barray_ptr * dst_coef_arrays; + int file_index; +- FILE * input_file; +- FILE * output_file; ++ /* We assume all-in-memory processing and can therefore use only a ++ * single file pointer for sequential input and output operation. ++ */ ++ FILE * fp; + + /* On Mac, fetch a command line. */ + #ifdef USE_CCOMMAND +@@ -406,24 +424,13 @@ + + /* Open the input file. */ + if (file_index < argc) { +- if ((input_file = fopen(argv[file_index], READ_BINARY)) == NULL) { ++ if ((fp = fopen(argv[file_index], READ_BINARY)) == NULL) { + fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]); + exit(EXIT_FAILURE); + } + } else { + /* default input file is stdin */ +- input_file = read_stdin(); +- } +- +- /* Open the output file. */ +- if (outfilename != NULL) { +- if ((output_file = fopen(outfilename, WRITE_BINARY)) == NULL) { +- fprintf(stderr, "%s: can't open %s\n", progname, outfilename); +- exit(EXIT_FAILURE); +- } +- } else { +- /* default output file is stdout */ +- output_file = write_stdout(); ++ fp = read_stdin(); + } + + #ifdef PROGRESS_REPORT +@@ -431,7 +438,7 @@ + #endif + + /* Specify data source for decompression */ +- jpeg_stdio_src(&srcinfo, input_file); ++ jpeg_stdio_src(&srcinfo, fp); + + /* Enable saving of extra markers that we want to copy */ + jcopy_markers_setup(&srcinfo, copyoption); +@@ -463,11 +470,32 @@ + dst_coef_arrays = src_coef_arrays; + #endif + ++ /* Close input file, if we opened it. ++ * Note: we assume that jpeg_read_coefficients consumed all input ++ * until JPEG_REACHED_EOI, and that jpeg_finish_decompress will ++ * only consume more while (! cinfo->inputctl->eoi_reached). ++ * We cannot call jpeg_finish_decompress here since we still need the ++ * virtual arrays allocated from the source object for processing. ++ */ ++ if (fp != stdin) ++ fclose(fp); ++ ++ /* Open the output file. */ ++ if (outfilename != NULL) { ++ if ((fp = fopen(outfilename, WRITE_BINARY)) == NULL) { ++ fprintf(stderr, "%s: can't open %s\n", progname, outfilename); ++ exit(EXIT_FAILURE); ++ } ++ } else { ++ /* default output file is stdout */ ++ fp = write_stdout(); ++ } ++ + /* Adjust default compression parameters by re-parsing the options */ + file_index = parse_switches(&dstinfo, argc, argv, 0, TRUE); + + /* Specify data destination for compression */ +- jpeg_stdio_dest(&dstinfo, output_file); ++ jpeg_stdio_dest(&dstinfo, fp); + + /* Start compressor (note no image data is actually written here) */ + jpeg_write_coefficients(&dstinfo, dst_coef_arrays); +@@ -488,11 +516,9 @@ + (void) jpeg_finish_decompress(&srcinfo); + jpeg_destroy_decompress(&srcinfo); + +- /* Close files, if we opened them */ +- if (input_file != stdin) +- fclose(input_file); +- if (output_file != stdout) +- fclose(output_file); ++ /* Close output file, if we opened it */ ++ if (fp != stdout) ++ fclose(fp); + + #ifdef PROGRESS_REPORT + end_progress_monitor((j_common_ptr) &dstinfo); +--- jpeg-6b/rdjpgcom.c~libjpeg6bb-5 ++++ jpeg-6b/rdjpgcom.c +@@ -14,6 +14,7 @@ + #define JPEG_CJPEG_DJPEG /* to get the command-line config symbols */ + #include "jinclude.h" /* get auto-config symbols, */ + ++#include /*ballombe@debian.org: use locale for isprint*/ + #include /* to declare isupper(), tolower() */ + #ifdef USE_SETMODE + #include /* to declare setmode()'s parameter macros */ +@@ -223,7 +224,10 @@ + unsigned int length; + int ch; + int lastch = 0; +- ++/* ballombe@debian.org Thu, 15 Nov 2001 20:04:47 +0100*/ ++/* Set locale properly for isprint*/ ++ setlocale(LC_CTYPE,""); ++ + /* Get the marker parameter length count */ + length = read_2_bytes(); + /* Length includes itself, so must be at least 2 */ +@@ -254,6 +258,8 @@ + length--; + } + printf("\n"); ++/*ballombe@debian.org: revert to C locale*/ ++ setlocale(LC_CTYPE,"C"); + } + + +--- jpeg-6b/transupp.c~libjpeg6bb-5 ++++ jpeg-6b/transupp.c +@@ -1,7 +1,7 @@ + /* + * transupp.c + * +- * Copyright (C) 1997, Thomas G. Lane. ++ * Copyright (C) 1997-2001, Thomas G. Lane. + * This file is part of the Independent JPEG Group's software. + * For conditions of distribution and use, see the accompanying README file. + * +@@ -20,6 +20,7 @@ + #include "jinclude.h" + #include "jpeglib.h" + #include "transupp.h" /* My own external interface */ ++#include /* to declare isdigit() */ + + + #if TRANSFORMS_SUPPORTED +@@ -28,7 +29,8 @@ + * Lossless image transformation routines. These routines work on DCT + * coefficient arrays and thus do not require any lossy decompression + * or recompression of the image. +- * Thanks to Guido Vollbeding for the initial design and code of this feature. ++ * Thanks to Guido Vollbeding for the initial design and code of this feature, ++ * and to Ben Jackson for introducing the cropping feature. + * + * Horizontal flipping is done in-place, using a single top-to-bottom + * pass through the virtual source array. It will thus be much the +@@ -42,6 +44,13 @@ + * arrays for most of the transforms. That could result in much thrashing + * if the image is larger than main memory. + * ++ * If cropping or trimming is involved, the destination arrays may be smaller ++ * than the source arrays. Note it is not possible to do horizontal flip ++ * in-place when a nonzero Y crop offset is specified, since we'd have to move ++ * data from one block row to another but the virtual array manager doesn't ++ * guarantee we can touch more than one row at a time. So in that case, ++ * we have to use a separate destination array. ++ * + * Some notes about the operating environment of the individual transform + * routines: + * 1. Both the source and destination virtual arrays are allocated from the +@@ -54,20 +63,65 @@ + * and we may as well take that as the effective iMCU size. + * 4. When "trim" is in effect, the destination's dimensions will be the + * trimmed values but the source's will be untrimmed. +- * 5. All the routines assume that the source and destination buffers are ++ * 5. When "crop" is in effect, the destination's dimensions will be the ++ * cropped values but the source's will be uncropped. Each transform ++ * routine is responsible for picking up source data starting at the ++ * correct X and Y offset for the crop region. (The X and Y offsets ++ * passed to the transform routines are measured in iMCU blocks of the ++ * destination.) ++ * 6. All the routines assume that the source and destination buffers are + * padded out to a full iMCU boundary. This is true, although for the + * source buffer it is an undocumented property of jdcoefct.c. +- * Notes 2,3,4 boil down to this: generally we should use the destination's +- * dimensions and ignore the source's. + */ + + + LOCAL(void) +-do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, +- jvirt_barray_ptr *src_coef_arrays) +-/* Horizontal flip; done in-place, so no separate dest array is required */ ++do_crop (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, ++ jvirt_barray_ptr *src_coef_arrays, ++ jvirt_barray_ptr *dst_coef_arrays) ++/* Crop. This is only used when no rotate/flip is requested with the crop. */ + { +- JDIMENSION MCU_cols, comp_width, blk_x, blk_y; ++ JDIMENSION dst_blk_y, x_crop_blocks, y_crop_blocks; ++ int ci, offset_y; ++ JBLOCKARRAY src_buffer, dst_buffer; ++ jpeg_component_info *compptr; ++ ++ /* We simply have to copy the right amount of data (the destination's ++ * image size) starting at the given X and Y offsets in the source. ++ */ ++ for (ci = 0; ci < dstinfo->num_components; ci++) { ++ compptr = dstinfo->comp_info + ci; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; ++ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; ++ dst_blk_y += compptr->v_samp_factor) { ++ dst_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y, ++ (JDIMENSION) compptr->v_samp_factor, TRUE); ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_y + y_crop_blocks, ++ (JDIMENSION) compptr->v_samp_factor, FALSE); ++ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { ++ jcopy_block_row(src_buffer[offset_y] + x_crop_blocks, ++ dst_buffer[offset_y], ++ compptr->width_in_blocks); ++ } ++ } ++ } ++} ++ ++ ++LOCAL(void) ++do_flip_h_no_crop (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, ++ jvirt_barray_ptr *src_coef_arrays) ++/* Horizontal flip; done in-place, so no separate dest array is required. ++ * NB: this only works when y_crop_offset is zero. ++ */ ++{ ++ JDIMENSION MCU_cols, comp_width, blk_x, blk_y, x_crop_blocks; + int ci, k, offset_y; + JBLOCKARRAY buffer; + JCOEFPTR ptr1, ptr2; +@@ -79,17 +133,19 @@ + * mirroring by changing the signs of odd-numbered columns. + * Partial iMCUs at the right edge are left untouched. + */ +- MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); ++ MCU_cols = srcinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_width = MCU_cols * compptr->h_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; + for (blk_y = 0; blk_y < compptr->height_in_blocks; + blk_y += compptr->v_samp_factor) { + buffer = (*srcinfo->mem->access_virt_barray) + ((j_common_ptr) srcinfo, src_coef_arrays[ci], blk_y, + (JDIMENSION) compptr->v_samp_factor, TRUE); + for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { ++ /* Do the mirroring */ + for (blk_x = 0; blk_x * 2 < comp_width; blk_x++) { + ptr1 = buffer[offset_y][blk_x]; + ptr2 = buffer[offset_y][comp_width - blk_x - 1]; +@@ -105,6 +161,79 @@ + *ptr2++ = -temp1; + } + } ++ if (x_crop_blocks > 0) { ++ /* Now left-justify the portion of the data to be kept. ++ * We can't use a single jcopy_block_row() call because that routine ++ * depends on memcpy(), whose behavior is unspecified for overlapping ++ * source and destination areas. Sigh. ++ */ ++ for (blk_x = 0; blk_x < compptr->width_in_blocks; blk_x++) { ++ jcopy_block_row(buffer[offset_y] + blk_x + x_crop_blocks, ++ buffer[offset_y] + blk_x, ++ (JDIMENSION) 1); ++ } ++ } ++ } ++ } ++ } ++} ++ ++ ++LOCAL(void) ++do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, ++ jvirt_barray_ptr *src_coef_arrays, ++ jvirt_barray_ptr *dst_coef_arrays) ++/* Horizontal flip in general cropping case */ ++{ ++ JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; ++ int ci, k, offset_y; ++ JBLOCKARRAY src_buffer, dst_buffer; ++ JBLOCKROW src_row_ptr, dst_row_ptr; ++ JCOEFPTR src_ptr, dst_ptr; ++ jpeg_component_info *compptr; ++ ++ /* Here we must output into a separate array because we can't touch ++ * different rows of a single virtual array simultaneously. Otherwise, ++ * this is essentially the same as the routine above. ++ */ ++ MCU_cols = srcinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); ++ ++ for (ci = 0; ci < dstinfo->num_components; ci++) { ++ compptr = dstinfo->comp_info + ci; ++ comp_width = MCU_cols * compptr->h_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; ++ for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; ++ dst_blk_y += compptr->v_samp_factor) { ++ dst_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y, ++ (JDIMENSION) compptr->v_samp_factor, TRUE); ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_y + y_crop_blocks, ++ (JDIMENSION) compptr->v_samp_factor, FALSE); ++ for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { ++ dst_row_ptr = dst_buffer[offset_y]; ++ src_row_ptr = src_buffer[offset_y]; ++ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) { ++ if (x_crop_blocks + dst_blk_x < comp_width) { ++ /* Do the mirrorable blocks */ ++ dst_ptr = dst_row_ptr[dst_blk_x]; ++ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1]; ++ /* this unrolled loop doesn't need to know which row it's on... */ ++ for (k = 0; k < DCTSIZE2; k += 2) { ++ *dst_ptr++ = *src_ptr++; /* copy even column */ ++ *dst_ptr++ = - *src_ptr++; /* copy odd column with sign change */ ++ } ++ } else { ++ /* Copy last partial block(s) verbatim */ ++ jcopy_block_row(src_row_ptr + dst_blk_x + x_crop_blocks, ++ dst_row_ptr + dst_blk_x, ++ (JDIMENSION) 1); ++ } ++ } + } + } + } +@@ -113,11 +242,13 @@ + + LOCAL(void) + do_flip_v (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* Vertical flip */ + { + JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JBLOCKROW src_row_ptr, dst_row_ptr; +@@ -131,33 +262,38 @@ + * of odd-numbered rows. + * Partial iMCUs at the bottom edge are copied verbatim. + */ +- MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); ++ MCU_rows = srcinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_height = MCU_rows * compptr->v_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) + ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y, + (JDIMENSION) compptr->v_samp_factor, TRUE); +- if (dst_blk_y < comp_height) { ++ if (y_crop_blocks + dst_blk_y < comp_height) { + /* Row is within the mirrorable area. */ + src_buffer = (*srcinfo->mem->access_virt_barray) + ((j_common_ptr) srcinfo, src_coef_arrays[ci], +- comp_height - dst_blk_y - (JDIMENSION) compptr->v_samp_factor, ++ comp_height - y_crop_blocks - dst_blk_y - ++ (JDIMENSION) compptr->v_samp_factor, + (JDIMENSION) compptr->v_samp_factor, FALSE); + } else { + /* Bottom-edge blocks will be copied verbatim. */ + src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y, ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_y + y_crop_blocks, + (JDIMENSION) compptr->v_samp_factor, FALSE); + } + for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { +- if (dst_blk_y < comp_height) { ++ if (y_crop_blocks + dst_blk_y < comp_height) { + /* Row is within the mirrorable area. */ + dst_row_ptr = dst_buffer[offset_y]; + src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1]; ++ src_row_ptr += x_crop_blocks; + for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; + dst_blk_x++) { + dst_ptr = dst_row_ptr[dst_blk_x]; +@@ -173,7 +309,8 @@ + } + } else { + /* Just copy row verbatim. */ +- jcopy_block_row(src_buffer[offset_y], dst_buffer[offset_y], ++ jcopy_block_row(src_buffer[offset_y] + x_crop_blocks, ++ dst_buffer[offset_y], + compptr->width_in_blocks); + } + } +@@ -184,11 +321,12 @@ + + LOCAL(void) + do_transpose (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* Transpose source into destination */ + { +- JDIMENSION dst_blk_x, dst_blk_y; ++ JDIMENSION dst_blk_x, dst_blk_y, x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_x, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JCOEFPTR src_ptr, dst_ptr; +@@ -201,6 +339,8 @@ + */ + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) +@@ -210,11 +350,12 @@ + for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; + dst_blk_x += compptr->h_samp_factor) { + src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x, ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_x + x_crop_blocks, + (JDIMENSION) compptr->h_samp_factor, FALSE); + for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) { +- src_ptr = src_buffer[offset_x][dst_blk_y + offset_y]; + dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ src_ptr = src_buffer[offset_x][dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -228,6 +369,7 @@ + + LOCAL(void) + do_rot_90 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* 90 degree rotation is equivalent to +@@ -237,6 +379,7 @@ + */ + { + JDIMENSION MCU_cols, comp_width, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_x, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JCOEFPTR src_ptr, dst_ptr; +@@ -246,11 +389,13 @@ + * at the (output) right edge properly. They just get transposed and + * not mirrored. + */ +- MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); ++ MCU_cols = srcinfo->image_height / (dstinfo->max_h_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_width = MCU_cols * compptr->h_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) +@@ -259,15 +404,26 @@ + for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { + for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; + dst_blk_x += compptr->h_samp_factor) { +- src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x, +- (JDIMENSION) compptr->h_samp_factor, FALSE); ++ if (x_crop_blocks + dst_blk_x < comp_width) { ++ /* Block is within the mirrorable area. */ ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ comp_width - x_crop_blocks - dst_blk_x - ++ (JDIMENSION) compptr->h_samp_factor, ++ (JDIMENSION) compptr->h_samp_factor, FALSE); ++ } else { ++ /* Edge blocks are transposed but not mirrored. */ ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_x + x_crop_blocks, ++ (JDIMENSION) compptr->h_samp_factor, FALSE); ++ } + for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) { +- src_ptr = src_buffer[offset_x][dst_blk_y + offset_y]; +- if (dst_blk_x < comp_width) { ++ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ if (x_crop_blocks + dst_blk_x < comp_width) { + /* Block is within the mirrorable area. */ +- dst_ptr = dst_buffer[offset_y] +- [comp_width - dst_blk_x - offset_x - 1]; ++ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1] ++ [dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) { + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -277,7 +433,8 @@ + } + } else { + /* Edge blocks are transposed but not mirrored. */ +- dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ src_ptr = src_buffer[offset_x] ++ [dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -292,6 +449,7 @@ + + LOCAL(void) + do_rot_270 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* 270 degree rotation is equivalent to +@@ -301,6 +459,7 @@ + */ + { + JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_x, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JCOEFPTR src_ptr, dst_ptr; +@@ -310,11 +469,13 @@ + * at the (output) bottom edge properly. They just get transposed and + * not mirrored. + */ +- MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); ++ MCU_rows = srcinfo->image_width / (dstinfo->max_v_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_height = MCU_rows * compptr->v_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) +@@ -324,14 +485,15 @@ + for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; + dst_blk_x += compptr->h_samp_factor) { + src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x, ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_x + x_crop_blocks, + (JDIMENSION) compptr->h_samp_factor, FALSE); + for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) { + dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; +- if (dst_blk_y < comp_height) { ++ if (y_crop_blocks + dst_blk_y < comp_height) { + /* Block is within the mirrorable area. */ + src_ptr = src_buffer[offset_x] +- [comp_height - dst_blk_y - offset_y - 1]; ++ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1]; + for (i = 0; i < DCTSIZE; i++) { + for (j = 0; j < DCTSIZE; j++) { + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -341,7 +503,8 @@ + } + } else { + /* Edge blocks are transposed but not mirrored. */ +- src_ptr = src_buffer[offset_x][dst_blk_y + offset_y]; ++ src_ptr = src_buffer[offset_x] ++ [dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -356,6 +519,7 @@ + + LOCAL(void) + do_rot_180 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* 180 degree rotation is equivalent to +@@ -365,89 +529,93 @@ + */ + { + JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JBLOCKROW src_row_ptr, dst_row_ptr; + JCOEFPTR src_ptr, dst_ptr; + jpeg_component_info *compptr; + +- MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); +- MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); ++ MCU_cols = srcinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); ++ MCU_rows = srcinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_width = MCU_cols * compptr->h_samp_factor; + comp_height = MCU_rows * compptr->v_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) + ((j_common_ptr) srcinfo, dst_coef_arrays[ci], dst_blk_y, + (JDIMENSION) compptr->v_samp_factor, TRUE); +- if (dst_blk_y < comp_height) { ++ if (y_crop_blocks + dst_blk_y < comp_height) { + /* Row is within the vertically mirrorable area. */ + src_buffer = (*srcinfo->mem->access_virt_barray) + ((j_common_ptr) srcinfo, src_coef_arrays[ci], +- comp_height - dst_blk_y - (JDIMENSION) compptr->v_samp_factor, ++ comp_height - y_crop_blocks - dst_blk_y - ++ (JDIMENSION) compptr->v_samp_factor, + (JDIMENSION) compptr->v_samp_factor, FALSE); + } else { + /* Bottom-edge rows are only mirrored horizontally. */ + src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_y, ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_y + y_crop_blocks, + (JDIMENSION) compptr->v_samp_factor, FALSE); + } + for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { +- if (dst_blk_y < comp_height) { ++ dst_row_ptr = dst_buffer[offset_y]; ++ if (y_crop_blocks + dst_blk_y < comp_height) { + /* Row is within the mirrorable area. */ +- dst_row_ptr = dst_buffer[offset_y]; + src_row_ptr = src_buffer[compptr->v_samp_factor - offset_y - 1]; +- /* Process the blocks that can be mirrored both ways. */ +- for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) { ++ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) { + dst_ptr = dst_row_ptr[dst_blk_x]; +- src_ptr = src_row_ptr[comp_width - dst_blk_x - 1]; +- for (i = 0; i < DCTSIZE; i += 2) { +- /* For even row, negate every odd column. */ +- for (j = 0; j < DCTSIZE; j += 2) { +- *dst_ptr++ = *src_ptr++; +- *dst_ptr++ = - *src_ptr++; ++ if (x_crop_blocks + dst_blk_x < comp_width) { ++ /* Process the blocks that can be mirrored both ways. */ ++ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1]; ++ for (i = 0; i < DCTSIZE; i += 2) { ++ /* For even row, negate every odd column. */ ++ for (j = 0; j < DCTSIZE; j += 2) { ++ *dst_ptr++ = *src_ptr++; ++ *dst_ptr++ = - *src_ptr++; ++ } ++ /* For odd row, negate every even column. */ ++ for (j = 0; j < DCTSIZE; j += 2) { ++ *dst_ptr++ = - *src_ptr++; ++ *dst_ptr++ = *src_ptr++; ++ } + } +- /* For odd row, negate every even column. */ +- for (j = 0; j < DCTSIZE; j += 2) { +- *dst_ptr++ = - *src_ptr++; +- *dst_ptr++ = *src_ptr++; ++ } else { ++ /* Any remaining right-edge blocks are only mirrored vertically. */ ++ src_ptr = src_row_ptr[x_crop_blocks + dst_blk_x]; ++ for (i = 0; i < DCTSIZE; i += 2) { ++ for (j = 0; j < DCTSIZE; j++) ++ *dst_ptr++ = *src_ptr++; ++ for (j = 0; j < DCTSIZE; j++) ++ *dst_ptr++ = - *src_ptr++; + } + } + } +- /* Any remaining right-edge blocks are only mirrored vertically. */ +- for (; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) { +- dst_ptr = dst_row_ptr[dst_blk_x]; +- src_ptr = src_row_ptr[dst_blk_x]; +- for (i = 0; i < DCTSIZE; i += 2) { +- for (j = 0; j < DCTSIZE; j++) +- *dst_ptr++ = *src_ptr++; +- for (j = 0; j < DCTSIZE; j++) +- *dst_ptr++ = - *src_ptr++; +- } +- } + } else { + /* Remaining rows are just mirrored horizontally. */ +- dst_row_ptr = dst_buffer[offset_y]; + src_row_ptr = src_buffer[offset_y]; +- /* Process the blocks that can be mirrored. */ +- for (dst_blk_x = 0; dst_blk_x < comp_width; dst_blk_x++) { +- dst_ptr = dst_row_ptr[dst_blk_x]; +- src_ptr = src_row_ptr[comp_width - dst_blk_x - 1]; +- for (i = 0; i < DCTSIZE2; i += 2) { +- *dst_ptr++ = *src_ptr++; +- *dst_ptr++ = - *src_ptr++; ++ for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) { ++ if (x_crop_blocks + dst_blk_x < comp_width) { ++ /* Process the blocks that can be mirrored. */ ++ dst_ptr = dst_row_ptr[dst_blk_x]; ++ src_ptr = src_row_ptr[comp_width - x_crop_blocks - dst_blk_x - 1]; ++ for (i = 0; i < DCTSIZE2; i += 2) { ++ *dst_ptr++ = *src_ptr++; ++ *dst_ptr++ = - *src_ptr++; ++ } ++ } else { ++ /* Any remaining right-edge blocks are only copied. */ ++ jcopy_block_row(src_row_ptr + dst_blk_x + x_crop_blocks, ++ dst_row_ptr + dst_blk_x, ++ (JDIMENSION) 1); + } + } +- /* Any remaining right-edge blocks are only copied. */ +- for (; dst_blk_x < compptr->width_in_blocks; dst_blk_x++) { +- dst_ptr = dst_row_ptr[dst_blk_x]; +- src_ptr = src_row_ptr[dst_blk_x]; +- for (i = 0; i < DCTSIZE2; i++) +- *dst_ptr++ = *src_ptr++; +- } + } + } + } +@@ -457,6 +625,7 @@ + + LOCAL(void) + do_transverse (j_decompress_ptr srcinfo, j_compress_ptr dstinfo, ++ JDIMENSION x_crop_offset, JDIMENSION y_crop_offset, + jvirt_barray_ptr *src_coef_arrays, + jvirt_barray_ptr *dst_coef_arrays) + /* Transverse transpose is equivalent to +@@ -470,18 +639,21 @@ + */ + { + JDIMENSION MCU_cols, MCU_rows, comp_width, comp_height, dst_blk_x, dst_blk_y; ++ JDIMENSION x_crop_blocks, y_crop_blocks; + int ci, i, j, offset_x, offset_y; + JBLOCKARRAY src_buffer, dst_buffer; + JCOEFPTR src_ptr, dst_ptr; + jpeg_component_info *compptr; + +- MCU_cols = dstinfo->image_width / (dstinfo->max_h_samp_factor * DCTSIZE); +- MCU_rows = dstinfo->image_height / (dstinfo->max_v_samp_factor * DCTSIZE); ++ MCU_cols = srcinfo->image_height / (dstinfo->max_h_samp_factor * DCTSIZE); ++ MCU_rows = srcinfo->image_width / (dstinfo->max_v_samp_factor * DCTSIZE); + + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; + comp_width = MCU_cols * compptr->h_samp_factor; + comp_height = MCU_rows * compptr->v_samp_factor; ++ x_crop_blocks = x_crop_offset * compptr->h_samp_factor; ++ y_crop_blocks = y_crop_offset * compptr->v_samp_factor; + for (dst_blk_y = 0; dst_blk_y < compptr->height_in_blocks; + dst_blk_y += compptr->v_samp_factor) { + dst_buffer = (*srcinfo->mem->access_virt_barray) +@@ -490,17 +662,26 @@ + for (offset_y = 0; offset_y < compptr->v_samp_factor; offset_y++) { + for (dst_blk_x = 0; dst_blk_x < compptr->width_in_blocks; + dst_blk_x += compptr->h_samp_factor) { +- src_buffer = (*srcinfo->mem->access_virt_barray) +- ((j_common_ptr) srcinfo, src_coef_arrays[ci], dst_blk_x, +- (JDIMENSION) compptr->h_samp_factor, FALSE); ++ if (x_crop_blocks + dst_blk_x < comp_width) { ++ /* Block is within the mirrorable area. */ ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ comp_width - x_crop_blocks - dst_blk_x - ++ (JDIMENSION) compptr->h_samp_factor, ++ (JDIMENSION) compptr->h_samp_factor, FALSE); ++ } else { ++ src_buffer = (*srcinfo->mem->access_virt_barray) ++ ((j_common_ptr) srcinfo, src_coef_arrays[ci], ++ dst_blk_x + x_crop_blocks, ++ (JDIMENSION) compptr->h_samp_factor, FALSE); ++ } + for (offset_x = 0; offset_x < compptr->h_samp_factor; offset_x++) { +- if (dst_blk_y < comp_height) { +- src_ptr = src_buffer[offset_x] +- [comp_height - dst_blk_y - offset_y - 1]; +- if (dst_blk_x < comp_width) { ++ dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ if (y_crop_blocks + dst_blk_y < comp_height) { ++ if (x_crop_blocks + dst_blk_x < comp_width) { + /* Block is within the mirrorable area. */ +- dst_ptr = dst_buffer[offset_y] +- [comp_width - dst_blk_x - offset_x - 1]; ++ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1] ++ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1]; + for (i = 0; i < DCTSIZE; i++) { + for (j = 0; j < DCTSIZE; j++) { + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -516,7 +697,8 @@ + } + } else { + /* Right-edge blocks are mirrored in y only */ +- dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ src_ptr = src_buffer[offset_x] ++ [comp_height - y_crop_blocks - dst_blk_y - offset_y - 1]; + for (i = 0; i < DCTSIZE; i++) { + for (j = 0; j < DCTSIZE; j++) { + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -526,11 +708,10 @@ + } + } + } else { +- src_ptr = src_buffer[offset_x][dst_blk_y + offset_y]; +- if (dst_blk_x < comp_width) { ++ if (x_crop_blocks + dst_blk_x < comp_width) { + /* Bottom-edge blocks are mirrored in x only */ +- dst_ptr = dst_buffer[offset_y] +- [comp_width - dst_blk_x - offset_x - 1]; ++ src_ptr = src_buffer[compptr->h_samp_factor - offset_x - 1] ++ [dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) { + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -540,7 +721,8 @@ + } + } else { + /* At lower right corner, just transpose, no mirroring */ +- dst_ptr = dst_buffer[offset_y][dst_blk_x + offset_x]; ++ src_ptr = src_buffer[offset_x] ++ [dst_blk_y + offset_y + y_crop_blocks]; + for (i = 0; i < DCTSIZE; i++) + for (j = 0; j < DCTSIZE; j++) + dst_ptr[j*DCTSIZE+i] = src_ptr[i*DCTSIZE+j]; +@@ -554,8 +736,116 @@ + } + + ++/* Parse an unsigned integer: subroutine for jtransform_parse_crop_spec. ++ * Returns TRUE if valid integer found, FALSE if not. ++ * *strptr is advanced over the digit string, and *result is set to its value. ++ */ ++ ++LOCAL(boolean) ++jt_read_integer (const char ** strptr, JDIMENSION * result) ++{ ++ const char * ptr = *strptr; ++ JDIMENSION val = 0; ++ ++ for (; isdigit(*ptr); ptr++) { ++ val = val * 10 + (JDIMENSION) (*ptr - '0'); ++ } ++ *result = val; ++ if (ptr == *strptr) ++ return FALSE; /* oops, no digits */ ++ *strptr = ptr; ++ return TRUE; ++} ++ ++ ++/* Parse a crop specification (written in X11 geometry style). ++ * The routine returns TRUE if the spec string is valid, FALSE if not. ++ * ++ * The crop spec string should have the format ++ * x{+-}{+-} ++ * where width, height, xoffset, and yoffset are unsigned integers. ++ * Each of the elements can be omitted to indicate a default value. ++ * (A weakness of this style is that it is not possible to omit xoffset ++ * while specifying yoffset, since they look alike.) ++ * ++ * This code is loosely based on XParseGeometry from the X11 distribution. ++ */ ++ ++GLOBAL(boolean) ++jtransform_parse_crop_spec (jpeg_transform_info *info, const char *spec) ++{ ++ info->crop = FALSE; ++ info->crop_width_set = JCROP_UNSET; ++ info->crop_height_set = JCROP_UNSET; ++ info->crop_xoffset_set = JCROP_UNSET; ++ info->crop_yoffset_set = JCROP_UNSET; ++ ++ if (isdigit(*spec)) { ++ /* fetch width */ ++ if (! jt_read_integer(&spec, &info->crop_width)) ++ return FALSE; ++ info->crop_width_set = JCROP_POS; ++ } ++ if (*spec == 'x' || *spec == 'X') { ++ /* fetch height */ ++ spec++; ++ if (! jt_read_integer(&spec, &info->crop_height)) ++ return FALSE; ++ info->crop_height_set = JCROP_POS; ++ } ++ if (*spec == '+' || *spec == '-') { ++ /* fetch xoffset */ ++ info->crop_xoffset_set = (*spec == '-') ? JCROP_NEG : JCROP_POS; ++ spec++; ++ if (! jt_read_integer(&spec, &info->crop_xoffset)) ++ return FALSE; ++ } ++ if (*spec == '+' || *spec == '-') { ++ /* fetch yoffset */ ++ info->crop_yoffset_set = (*spec == '-') ? JCROP_NEG : JCROP_POS; ++ spec++; ++ if (! jt_read_integer(&spec, &info->crop_yoffset)) ++ return FALSE; ++ } ++ /* We had better have gotten to the end of the string. */ ++ if (*spec != '\0') ++ return FALSE; ++ info->crop = TRUE; ++ return TRUE; ++} ++ ++ ++/* Trim off any partial iMCUs on the indicated destination edge */ ++ ++LOCAL(void) ++trim_right_edge (jpeg_transform_info *info, JDIMENSION full_width) ++{ ++ JDIMENSION MCU_cols; ++ ++ MCU_cols = info->output_width / (info->max_h_samp_factor * DCTSIZE); ++ if (MCU_cols > 0 && info->x_crop_offset + MCU_cols == ++ full_width / (info->max_h_samp_factor * DCTSIZE)) ++ info->output_width = MCU_cols * (info->max_h_samp_factor * DCTSIZE); ++} ++ ++LOCAL(void) ++trim_bottom_edge (jpeg_transform_info *info, JDIMENSION full_height) ++{ ++ JDIMENSION MCU_rows; ++ ++ MCU_rows = info->output_height / (info->max_v_samp_factor * DCTSIZE); ++ if (MCU_rows > 0 && info->y_crop_offset + MCU_rows == ++ full_height / (info->max_v_samp_factor * DCTSIZE)) ++ info->output_height = MCU_rows * (info->max_v_samp_factor * DCTSIZE); ++} ++ ++ + /* Request any required workspace. + * ++ * This routine figures out the size that the output image will be ++ * (which implies that all the transform parameters must be set before ++ * it is called). ++ * + * We allocate the workspace virtual arrays from the source decompression + * object, so that all the arrays (both the original data and the workspace) + * will be taken into account while making memory management decisions. +@@ -569,9 +859,13 @@ + jpeg_transform_info *info) + { + jvirt_barray_ptr *coef_arrays = NULL; ++ boolean need_workspace, transpose_it; + jpeg_component_info *compptr; +- int ci; ++ JDIMENSION xoffset, yoffset, width_in_iMCUs, height_in_iMCUs; ++ JDIMENSION width_in_blocks, height_in_blocks; ++ int ci, h_samp_factor, v_samp_factor; + ++ /* Determine number of components in output image */ + if (info->force_grayscale && + srcinfo->jpeg_color_space == JCS_YCbCr && + srcinfo->num_components == 3) { +@@ -581,55 +875,181 @@ + /* Process all the components */ + info->num_components = srcinfo->num_components; + } ++ /* If there is only one output component, force the iMCU size to be 1; ++ * else use the source iMCU size. (This allows us to do the right thing ++ * when reducing color to grayscale, and also provides a handy way of ++ * cleaning up "funny" grayscale images whose sampling factors are not 1x1.) ++ */ ++ ++ switch (info->transform) { ++ case JXFORM_TRANSPOSE: ++ case JXFORM_TRANSVERSE: ++ case JXFORM_ROT_90: ++ case JXFORM_ROT_270: ++ info->output_width = srcinfo->image_height; ++ info->output_height = srcinfo->image_width; ++ if (info->num_components == 1) { ++ info->max_h_samp_factor = 1; ++ info->max_v_samp_factor = 1; ++ } else { ++ info->max_h_samp_factor = srcinfo->max_v_samp_factor; ++ info->max_v_samp_factor = srcinfo->max_h_samp_factor; ++ } ++ break; ++ default: ++ info->output_width = srcinfo->image_width; ++ info->output_height = srcinfo->image_height; ++ if (info->num_components == 1) { ++ info->max_h_samp_factor = 1; ++ info->max_v_samp_factor = 1; ++ } else { ++ info->max_h_samp_factor = srcinfo->max_h_samp_factor; ++ info->max_v_samp_factor = srcinfo->max_v_samp_factor; ++ } ++ break; ++ } ++ ++ /* If cropping has been requested, compute the crop area's position and ++ * dimensions, ensuring that its upper left corner falls at an iMCU boundary. ++ */ ++ if (info->crop) { ++ /* Insert default values for unset crop parameters */ ++ if (info->crop_xoffset_set == JCROP_UNSET) ++ info->crop_xoffset = 0; /* default to +0 */ ++ if (info->crop_yoffset_set == JCROP_UNSET) ++ info->crop_yoffset = 0; /* default to +0 */ ++ if (info->crop_xoffset >= info->output_width || ++ info->crop_yoffset >= info->output_height) ++ ERREXIT(srcinfo, JERR_BAD_CROP_SPEC); ++ if (info->crop_width_set == JCROP_UNSET) ++ info->crop_width = info->output_width - info->crop_xoffset; ++ if (info->crop_height_set == JCROP_UNSET) ++ info->crop_height = info->output_height - info->crop_yoffset; ++ /* Ensure parameters are valid */ ++ if (info->crop_width <= 0 || info->crop_width > info->output_width || ++ info->crop_height <= 0 || info->crop_height > info->output_height || ++ info->crop_xoffset > info->output_width - info->crop_width || ++ info->crop_yoffset > info->output_height - info->crop_height) ++ ERREXIT(srcinfo, JERR_BAD_CROP_SPEC); ++ /* Convert negative crop offsets into regular offsets */ ++ if (info->crop_xoffset_set == JCROP_NEG) ++ xoffset = info->output_width - info->crop_width - info->crop_xoffset; ++ else ++ xoffset = info->crop_xoffset; ++ if (info->crop_yoffset_set == JCROP_NEG) ++ yoffset = info->output_height - info->crop_height - info->crop_yoffset; ++ else ++ yoffset = info->crop_yoffset; ++ /* Now adjust so that upper left corner falls at an iMCU boundary */ ++ info->output_width = ++ info->crop_width + (xoffset % (info->max_h_samp_factor * DCTSIZE)); ++ info->output_height = ++ info->crop_height + (yoffset % (info->max_v_samp_factor * DCTSIZE)); ++ /* Save x/y offsets measured in iMCUs */ ++ info->x_crop_offset = xoffset / (info->max_h_samp_factor * DCTSIZE); ++ info->y_crop_offset = yoffset / (info->max_v_samp_factor * DCTSIZE); ++ } else { ++ info->x_crop_offset = 0; ++ info->y_crop_offset = 0; ++ } + ++ /* Figure out whether we need workspace arrays, ++ * and if so whether they are transposed relative to the source. ++ */ ++ need_workspace = FALSE; ++ transpose_it = FALSE; + switch (info->transform) { + case JXFORM_NONE: ++ if (info->x_crop_offset != 0 || info->y_crop_offset != 0) ++ need_workspace = TRUE; ++ /* No workspace needed if neither cropping nor transforming */ ++ break; + case JXFORM_FLIP_H: +- /* Don't need a workspace array */ ++ if (info->trim) ++ trim_right_edge(info, srcinfo->image_width); ++ if (info->y_crop_offset != 0) ++ need_workspace = TRUE; ++ /* do_flip_h_no_crop doesn't need a workspace array */ + break; + case JXFORM_FLIP_V: +- case JXFORM_ROT_180: +- /* Need workspace arrays having same dimensions as source image. +- * Note that we allocate arrays padded out to the next iMCU boundary, +- * so that transform routines need not worry about missing edge blocks. +- */ +- coef_arrays = (jvirt_barray_ptr *) +- (*srcinfo->mem->alloc_small) ((j_common_ptr) srcinfo, JPOOL_IMAGE, +- SIZEOF(jvirt_barray_ptr) * info->num_components); +- for (ci = 0; ci < info->num_components; ci++) { +- compptr = srcinfo->comp_info + ci; +- coef_arrays[ci] = (*srcinfo->mem->request_virt_barray) +- ((j_common_ptr) srcinfo, JPOOL_IMAGE, FALSE, +- (JDIMENSION) jround_up((long) compptr->width_in_blocks, +- (long) compptr->h_samp_factor), +- (JDIMENSION) jround_up((long) compptr->height_in_blocks, +- (long) compptr->v_samp_factor), +- (JDIMENSION) compptr->v_samp_factor); +- } ++ if (info->trim) ++ trim_bottom_edge(info, srcinfo->image_height); ++ /* Need workspace arrays having same dimensions as source image. */ ++ need_workspace = TRUE; + break; + case JXFORM_TRANSPOSE: ++ /* transpose does NOT have to trim anything */ ++ /* Need workspace arrays having transposed dimensions. */ ++ need_workspace = TRUE; ++ transpose_it = TRUE; ++ break; + case JXFORM_TRANSVERSE: ++ if (info->trim) { ++ trim_right_edge(info, srcinfo->image_height); ++ trim_bottom_edge(info, srcinfo->image_width); ++ } ++ /* Need workspace arrays having transposed dimensions. */ ++ need_workspace = TRUE; ++ transpose_it = TRUE; ++ break; + case JXFORM_ROT_90: ++ if (info->trim) ++ trim_right_edge(info, srcinfo->image_height); ++ /* Need workspace arrays having transposed dimensions. */ ++ need_workspace = TRUE; ++ transpose_it = TRUE; ++ break; ++ case JXFORM_ROT_180: ++ if (info->trim) { ++ trim_right_edge(info, srcinfo->image_width); ++ trim_bottom_edge(info, srcinfo->image_height); ++ } ++ /* Need workspace arrays having same dimensions as source image. */ ++ need_workspace = TRUE; ++ break; + case JXFORM_ROT_270: +- /* Need workspace arrays having transposed dimensions. +- * Note that we allocate arrays padded out to the next iMCU boundary, +- * so that transform routines need not worry about missing edge blocks. +- */ ++ if (info->trim) ++ trim_bottom_edge(info, srcinfo->image_width); ++ /* Need workspace arrays having transposed dimensions. */ ++ need_workspace = TRUE; ++ transpose_it = TRUE; ++ break; ++ } ++ ++ /* Allocate workspace if needed. ++ * Note that we allocate arrays padded out to the next iMCU boundary, ++ * so that transform routines need not worry about missing edge blocks. ++ */ ++ if (need_workspace) { + coef_arrays = (jvirt_barray_ptr *) + (*srcinfo->mem->alloc_small) ((j_common_ptr) srcinfo, JPOOL_IMAGE, +- SIZEOF(jvirt_barray_ptr) * info->num_components); ++ SIZEOF(jvirt_barray_ptr) * info->num_components); ++ width_in_iMCUs = (JDIMENSION) ++ jdiv_round_up((long) info->output_width, ++ (long) (info->max_h_samp_factor * DCTSIZE)); ++ height_in_iMCUs = (JDIMENSION) ++ jdiv_round_up((long) info->output_height, ++ (long) (info->max_v_samp_factor * DCTSIZE)); + for (ci = 0; ci < info->num_components; ci++) { + compptr = srcinfo->comp_info + ci; ++ if (info->num_components == 1) { ++ /* we're going to force samp factors to 1x1 in this case */ ++ h_samp_factor = v_samp_factor = 1; ++ } else if (transpose_it) { ++ h_samp_factor = compptr->v_samp_factor; ++ v_samp_factor = compptr->h_samp_factor; ++ } else { ++ h_samp_factor = compptr->h_samp_factor; ++ v_samp_factor = compptr->v_samp_factor; ++ } ++ width_in_blocks = width_in_iMCUs * h_samp_factor; ++ height_in_blocks = height_in_iMCUs * v_samp_factor; + coef_arrays[ci] = (*srcinfo->mem->request_virt_barray) + ((j_common_ptr) srcinfo, JPOOL_IMAGE, FALSE, +- (JDIMENSION) jround_up((long) compptr->height_in_blocks, +- (long) compptr->v_samp_factor), +- (JDIMENSION) jround_up((long) compptr->width_in_blocks, +- (long) compptr->h_samp_factor), +- (JDIMENSION) compptr->h_samp_factor); ++ width_in_blocks, height_in_blocks, (JDIMENSION) v_samp_factor); + } +- break; + } ++ + info->workspace_coef_arrays = coef_arrays; + } + +@@ -642,14 +1062,8 @@ + int tblno, i, j, ci, itemp; + jpeg_component_info *compptr; + JQUANT_TBL *qtblptr; +- JDIMENSION dtemp; + UINT16 qtemp; + +- /* Transpose basic image dimensions */ +- dtemp = dstinfo->image_width; +- dstinfo->image_width = dstinfo->image_height; +- dstinfo->image_height = dtemp; +- + /* Transpose sampling factors */ + for (ci = 0; ci < dstinfo->num_components; ci++) { + compptr = dstinfo->comp_info + ci; +@@ -674,46 +1088,159 @@ + } + + +-/* Trim off any partial iMCUs on the indicated destination edge */ ++/* Adjust Exif image parameters. ++ * ++ * We try to adjust the Tags ExifImageWidth and ExifImageHeight if possible. ++ */ + + LOCAL(void) +-trim_right_edge (j_compress_ptr dstinfo) ++adjust_exif_parameters (JOCTET FAR * data, unsigned int length, ++ JDIMENSION new_width, JDIMENSION new_height) + { +- int ci, max_h_samp_factor; +- JDIMENSION MCU_cols; ++ boolean is_motorola; /* Flag for byte order */ ++ unsigned int number_of_tags, tagnum; ++ unsigned int firstoffset, offset; ++ JDIMENSION new_value; + +- /* We have to compute max_h_samp_factor ourselves, +- * because it hasn't been set yet in the destination +- * (and we don't want to use the source's value). +- */ +- max_h_samp_factor = 1; +- for (ci = 0; ci < dstinfo->num_components; ci++) { +- int h_samp_factor = dstinfo->comp_info[ci].h_samp_factor; +- max_h_samp_factor = MAX(max_h_samp_factor, h_samp_factor); ++ if (length < 12) return; /* Length of an IFD entry */ ++ ++ /* Discover byte order */ ++ if (GETJOCTET(data[0]) == 0x49 && GETJOCTET(data[1]) == 0x49) ++ is_motorola = FALSE; ++ else if (GETJOCTET(data[0]) == 0x4D && GETJOCTET(data[1]) == 0x4D) ++ is_motorola = TRUE; ++ else ++ return; ++ ++ /* Check Tag Mark */ ++ if (is_motorola) { ++ if (GETJOCTET(data[2]) != 0) return; ++ if (GETJOCTET(data[3]) != 0x2A) return; ++ } else { ++ if (GETJOCTET(data[3]) != 0) return; ++ if (GETJOCTET(data[2]) != 0x2A) return; + } +- MCU_cols = dstinfo->image_width / (max_h_samp_factor * DCTSIZE); +- if (MCU_cols > 0) /* can't trim to 0 pixels */ +- dstinfo->image_width = MCU_cols * (max_h_samp_factor * DCTSIZE); +-} + +-LOCAL(void) +-trim_bottom_edge (j_compress_ptr dstinfo) +-{ +- int ci, max_v_samp_factor; +- JDIMENSION MCU_rows; ++ /* Get first IFD offset (offset to IFD0) */ ++ if (is_motorola) { ++ if (GETJOCTET(data[4]) != 0) return; ++ if (GETJOCTET(data[5]) != 0) return; ++ firstoffset = GETJOCTET(data[6]); ++ firstoffset <<= 8; ++ firstoffset += GETJOCTET(data[7]); ++ } else { ++ if (GETJOCTET(data[7]) != 0) return; ++ if (GETJOCTET(data[6]) != 0) return; ++ firstoffset = GETJOCTET(data[5]); ++ firstoffset <<= 8; ++ firstoffset += GETJOCTET(data[4]); ++ } ++ if (firstoffset > length - 2) return; /* check end of data segment */ + +- /* We have to compute max_v_samp_factor ourselves, +- * because it hasn't been set yet in the destination +- * (and we don't want to use the source's value). +- */ +- max_v_samp_factor = 1; +- for (ci = 0; ci < dstinfo->num_components; ci++) { +- int v_samp_factor = dstinfo->comp_info[ci].v_samp_factor; +- max_v_samp_factor = MAX(max_v_samp_factor, v_samp_factor); ++ /* Get the number of directory entries contained in this IFD */ ++ if (is_motorola) { ++ number_of_tags = GETJOCTET(data[firstoffset]); ++ number_of_tags <<= 8; ++ number_of_tags += GETJOCTET(data[firstoffset+1]); ++ } else { ++ number_of_tags = GETJOCTET(data[firstoffset+1]); ++ number_of_tags <<= 8; ++ number_of_tags += GETJOCTET(data[firstoffset]); + } +- MCU_rows = dstinfo->image_height / (max_v_samp_factor * DCTSIZE); +- if (MCU_rows > 0) /* can't trim to 0 pixels */ +- dstinfo->image_height = MCU_rows * (max_v_samp_factor * DCTSIZE); ++ if (number_of_tags == 0) return; ++ firstoffset += 2; ++ ++ /* Search for ExifSubIFD offset Tag in IFD0 */ ++ for (;;) { ++ if (firstoffset > length - 12) return; /* check end of data segment */ ++ /* Get Tag number */ ++ if (is_motorola) { ++ tagnum = GETJOCTET(data[firstoffset]); ++ tagnum <<= 8; ++ tagnum += GETJOCTET(data[firstoffset+1]); ++ } else { ++ tagnum = GETJOCTET(data[firstoffset+1]); ++ tagnum <<= 8; ++ tagnum += GETJOCTET(data[firstoffset]); ++ } ++ if (tagnum == 0x8769) break; /* found ExifSubIFD offset Tag */ ++ if (--number_of_tags == 0) return; ++ firstoffset += 12; ++ } ++ ++ /* Get the ExifSubIFD offset */ ++ if (is_motorola) { ++ if (GETJOCTET(data[firstoffset+8]) != 0) return; ++ if (GETJOCTET(data[firstoffset+9]) != 0) return; ++ offset = GETJOCTET(data[firstoffset+10]); ++ offset <<= 8; ++ offset += GETJOCTET(data[firstoffset+11]); ++ } else { ++ if (GETJOCTET(data[firstoffset+11]) != 0) return; ++ if (GETJOCTET(data[firstoffset+10]) != 0) return; ++ offset = GETJOCTET(data[firstoffset+9]); ++ offset <<= 8; ++ offset += GETJOCTET(data[firstoffset+8]); ++ } ++ if (offset > length - 2) return; /* check end of data segment */ ++ ++ /* Get the number of directory entries contained in this SubIFD */ ++ if (is_motorola) { ++ number_of_tags = GETJOCTET(data[offset]); ++ number_of_tags <<= 8; ++ number_of_tags += GETJOCTET(data[offset+1]); ++ } else { ++ number_of_tags = GETJOCTET(data[offset+1]); ++ number_of_tags <<= 8; ++ number_of_tags += GETJOCTET(data[offset]); ++ } ++ if (number_of_tags < 2) return; ++ offset += 2; ++ ++ /* Search for ExifImageWidth and ExifImageHeight Tags in this SubIFD */ ++ do { ++ if (offset > length - 12) return; /* check end of data segment */ ++ /* Get Tag number */ ++ if (is_motorola) { ++ tagnum = GETJOCTET(data[offset]); ++ tagnum <<= 8; ++ tagnum += GETJOCTET(data[offset+1]); ++ } else { ++ tagnum = GETJOCTET(data[offset+1]); ++ tagnum <<= 8; ++ tagnum += GETJOCTET(data[offset]); ++ } ++ if (tagnum == 0xA002 || tagnum == 0xA003) { ++ if (tagnum == 0xA002) ++ new_value = new_width; /* ExifImageWidth Tag */ ++ else ++ new_value = new_height; /* ExifImageHeight Tag */ ++ if (is_motorola) { ++ data[offset+2] = 0; /* Format = unsigned long (4 octets) */ ++ data[offset+3] = 4; ++ data[offset+4] = 0; /* Number Of Components = 1 */ ++ data[offset+5] = 0; ++ data[offset+6] = 0; ++ data[offset+7] = 1; ++ data[offset+8] = 0; ++ data[offset+9] = 0; ++ data[offset+10] = (JOCTET)((new_value >> 8) & 0xFF); ++ data[offset+11] = (JOCTET)(new_value & 0xFF); ++ } else { ++ data[offset+2] = 4; /* Format = unsigned long (4 octets) */ ++ data[offset+3] = 0; ++ data[offset+4] = 1; /* Number Of Components = 1 */ ++ data[offset+5] = 0; ++ data[offset+6] = 0; ++ data[offset+7] = 0; ++ data[offset+8] = (JOCTET)(new_value & 0xFF); ++ data[offset+9] = (JOCTET)((new_value >> 8) & 0xFF); ++ data[offset+10] = 0; ++ data[offset+11] = 0; ++ } ++ } ++ offset += 12; ++ } while (--number_of_tags); + } + + +@@ -736,18 +1263,22 @@ + { + /* If force-to-grayscale is requested, adjust destination parameters */ + if (info->force_grayscale) { +- /* We use jpeg_set_colorspace to make sure subsidiary settings get fixed +- * properly. Among other things, the target h_samp_factor & v_samp_factor +- * will get set to 1, which typically won't match the source. +- * In fact we do this even if the source is already grayscale; that +- * provides an easy way of coercing a grayscale JPEG with funny sampling +- * factors to the customary 1,1. (Some decoders fail on other factors.) ++ /* First, ensure we have YCbCr or grayscale data, and that the source's ++ * Y channel is full resolution. (No reasonable person would make Y ++ * be less than full resolution, so actually coping with that case ++ * isn't worth extra code space. But we check it to avoid crashing.) + */ +- if ((dstinfo->jpeg_color_space == JCS_YCbCr && +- dstinfo->num_components == 3) || +- (dstinfo->jpeg_color_space == JCS_GRAYSCALE && +- dstinfo->num_components == 1)) { +- /* We have to preserve the source's quantization table number. */ ++ if (((dstinfo->jpeg_color_space == JCS_YCbCr && ++ dstinfo->num_components == 3) || ++ (dstinfo->jpeg_color_space == JCS_GRAYSCALE && ++ dstinfo->num_components == 1)) && ++ srcinfo->comp_info[0].h_samp_factor == srcinfo->max_h_samp_factor && ++ srcinfo->comp_info[0].v_samp_factor == srcinfo->max_v_samp_factor) { ++ /* We use jpeg_set_colorspace to make sure subsidiary settings get fixed ++ * properly. Among other things, it sets the target h_samp_factor & ++ * v_samp_factor to 1, which typically won't match the source. ++ * We have to preserve the source's quantization table number, however. ++ */ + int sv_quant_tbl_no = dstinfo->comp_info[0].quant_tbl_no; + jpeg_set_colorspace(dstinfo, JCS_GRAYSCALE); + dstinfo->comp_info[0].quant_tbl_no = sv_quant_tbl_no; +@@ -755,50 +1286,52 @@ + /* Sorry, can't do it */ + ERREXIT(dstinfo, JERR_CONVERSION_NOTIMPL); + } ++ } else if (info->num_components == 1) { ++ /* For a single-component source, we force the destination sampling factors ++ * to 1x1, with or without force_grayscale. This is useful because some ++ * decoders choke on grayscale images with other sampling factors. ++ */ ++ dstinfo->comp_info[0].h_samp_factor = 1; ++ dstinfo->comp_info[0].v_samp_factor = 1; + } + +- /* Correct the destination's image dimensions etc if necessary */ ++ /* Correct the destination's image dimensions as necessary ++ * for crop and rotate/flip operations. ++ */ ++ dstinfo->image_width = info->output_width; ++ dstinfo->image_height = info->output_height; ++ ++ /* Transpose destination image parameters */ + switch (info->transform) { +- case JXFORM_NONE: +- /* Nothing to do */ +- break; +- case JXFORM_FLIP_H: +- if (info->trim) +- trim_right_edge(dstinfo); +- break; +- case JXFORM_FLIP_V: +- if (info->trim) +- trim_bottom_edge(dstinfo); +- break; + case JXFORM_TRANSPOSE: +- transpose_critical_parameters(dstinfo); +- /* transpose does NOT have to trim anything */ +- break; + case JXFORM_TRANSVERSE: +- transpose_critical_parameters(dstinfo); +- if (info->trim) { +- trim_right_edge(dstinfo); +- trim_bottom_edge(dstinfo); +- } +- break; + case JXFORM_ROT_90: +- transpose_critical_parameters(dstinfo); +- if (info->trim) +- trim_right_edge(dstinfo); +- break; +- case JXFORM_ROT_180: +- if (info->trim) { +- trim_right_edge(dstinfo); +- trim_bottom_edge(dstinfo); +- } +- break; + case JXFORM_ROT_270: + transpose_critical_parameters(dstinfo); +- if (info->trim) +- trim_bottom_edge(dstinfo); + break; + } + ++ /* Adjust Exif properties */ ++ if (srcinfo->marker_list != NULL && ++ srcinfo->marker_list->marker == JPEG_APP0+1 && ++ srcinfo->marker_list->data_length >= 6 && ++ GETJOCTET(srcinfo->marker_list->data[0]) == 0x45 && ++ GETJOCTET(srcinfo->marker_list->data[1]) == 0x78 && ++ GETJOCTET(srcinfo->marker_list->data[2]) == 0x69 && ++ GETJOCTET(srcinfo->marker_list->data[3]) == 0x66 && ++ GETJOCTET(srcinfo->marker_list->data[4]) == 0 && ++ GETJOCTET(srcinfo->marker_list->data[5]) == 0) { ++ /* Suppress output of JFIF marker */ ++ dstinfo->write_JFIF_header = FALSE; ++ /* Adjust Exif image parameters */ ++ if (dstinfo->image_width != srcinfo->image_width || ++ dstinfo->image_height != srcinfo->image_height) ++ /* Align data segment to start of TIFF structure for parsing */ ++ adjust_exif_parameters(srcinfo->marker_list->data + 6, ++ srcinfo->marker_list->data_length - 6, ++ dstinfo->image_width, dstinfo->image_height); ++ } ++ + /* Return the appropriate output data set */ + if (info->workspace_coef_arrays != NULL) + return info->workspace_coef_arrays; +@@ -816,36 +1349,53 @@ + */ + + GLOBAL(void) +-jtransform_execute_transformation (j_decompress_ptr srcinfo, +- j_compress_ptr dstinfo, +- jvirt_barray_ptr *src_coef_arrays, +- jpeg_transform_info *info) ++jtransform_execute_transform (j_decompress_ptr srcinfo, ++ j_compress_ptr dstinfo, ++ jvirt_barray_ptr *src_coef_arrays, ++ jpeg_transform_info *info) + { + jvirt_barray_ptr *dst_coef_arrays = info->workspace_coef_arrays; + ++ /* Note: conditions tested here should match those in switch statement ++ * in jtransform_request_workspace() ++ */ + switch (info->transform) { + case JXFORM_NONE: ++ if (info->x_crop_offset != 0 || info->y_crop_offset != 0) ++ do_crop(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_FLIP_H: +- do_flip_h(srcinfo, dstinfo, src_coef_arrays); ++ if (info->y_crop_offset != 0) ++ do_flip_h(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); ++ else ++ do_flip_h_no_crop(srcinfo, dstinfo, info->x_crop_offset, ++ src_coef_arrays); + break; + case JXFORM_FLIP_V: +- do_flip_v(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_flip_v(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_TRANSPOSE: +- do_transpose(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_transpose(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_TRANSVERSE: +- do_transverse(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_transverse(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_ROT_90: +- do_rot_90(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_rot_90(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_ROT_180: +- do_rot_180(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_rot_180(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + case JXFORM_ROT_270: +- do_rot_270(srcinfo, dstinfo, src_coef_arrays, dst_coef_arrays); ++ do_rot_270(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset, ++ src_coef_arrays, dst_coef_arrays); + break; + } + } +--- jpeg-6b/jerror.h~libjpeg6bb-5 ++++ jpeg-6b/jerror.h +@@ -45,6 +45,7 @@ + JMESSAGE(JERR_BAD_ALLOC_CHUNK, "MAX_ALLOC_CHUNK is wrong, please fix") + JMESSAGE(JERR_BAD_BUFFER_MODE, "Bogus buffer control mode") + JMESSAGE(JERR_BAD_COMPONENT_ID, "Invalid component ID %d in SOS") ++JMESSAGE(JERR_BAD_CROP_SPEC, "Invalid crop request") + JMESSAGE(JERR_BAD_DCT_COEF, "DCT coefficient out of range") + JMESSAGE(JERR_BAD_DCTSIZE, "IDCT output block size %d not supported") + JMESSAGE(JERR_BAD_HUFF_TABLE, "Bogus Huffman table definition") +--- jpeg-6b/transupp.h~libjpeg6bb-5 ++++ jpeg-6b/transupp.h +@@ -1,7 +1,7 @@ + /* + * transupp.h + * +- * Copyright (C) 1997, Thomas G. Lane. ++ * Copyright (C) 1997-2001, Thomas G. Lane. + * This file is part of the Independent JPEG Group's software. + * For conditions of distribution and use, see the accompanying README file. + * +@@ -22,32 +22,6 @@ + #define TRANSFORMS_SUPPORTED 1 /* 0 disables transform code */ + #endif + +-/* Short forms of external names for systems with brain-damaged linkers. */ +- +-#ifdef NEED_SHORT_EXTERNAL_NAMES +-#define jtransform_request_workspace jTrRequest +-#define jtransform_adjust_parameters jTrAdjust +-#define jtransform_execute_transformation jTrExec +-#define jcopy_markers_setup jCMrkSetup +-#define jcopy_markers_execute jCMrkExec +-#endif /* NEED_SHORT_EXTERNAL_NAMES */ +- +- +-/* +- * Codes for supported types of image transformations. +- */ +- +-typedef enum { +- JXFORM_NONE, /* no transformation */ +- JXFORM_FLIP_H, /* horizontal flip */ +- JXFORM_FLIP_V, /* vertical flip */ +- JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */ +- JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */ +- JXFORM_ROT_90, /* 90-degree clockwise rotation */ +- JXFORM_ROT_180, /* 180-degree rotation */ +- JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */ +-} JXFORM_CODE; +- + /* + * Although rotating and flipping data expressed as DCT coefficients is not + * hard, there is an asymmetry in the JPEG format specification for images +@@ -75,6 +49,19 @@ + * (For example, -rot 270 -trim trims only the bottom edge, but -rot 90 -trim + * followed by -rot 180 -trim trims both edges.) + * ++ * We also offer a lossless-crop option, which discards data outside a given ++ * image region but losslessly preserves what is inside. Like the rotate and ++ * flip transforms, lossless crop is restricted by the JPEG format: the upper ++ * left corner of the selected region must fall on an iMCU boundary. If this ++ * does not hold for the given crop parameters, we silently move the upper left ++ * corner up and/or left to make it so, simultaneously increasing the region ++ * dimensions to keep the lower right crop corner unchanged. (Thus, the ++ * output image covers at least the requested region, but may cover more.) ++ * ++ * If both crop and a rotate/flip transform are requested, the crop is applied ++ * last --- that is, the crop region is specified in terms of the destination ++ * image. ++ * + * We also offer a "force to grayscale" option, which simply discards the + * chrominance channels of a YCbCr image. This is lossless in the sense that + * the luminance channel is preserved exactly. It's not the same kind of +@@ -83,20 +70,87 @@ + * be aware of the option to know how many components to work on. + */ + ++ ++/* Short forms of external names for systems with brain-damaged linkers. */ ++ ++#ifdef NEED_SHORT_EXTERNAL_NAMES ++#define jtransform_parse_crop_spec jTrParCrop ++#define jtransform_request_workspace jTrRequest ++#define jtransform_adjust_parameters jTrAdjust ++#define jtransform_execute_transform jTrExec ++#define jcopy_markers_setup jCMrkSetup ++#define jcopy_markers_execute jCMrkExec ++#endif /* NEED_SHORT_EXTERNAL_NAMES */ ++ ++ ++/* ++ * Codes for supported types of image transformations. ++ */ ++ ++typedef enum { ++ JXFORM_NONE, /* no transformation */ ++ JXFORM_FLIP_H, /* horizontal flip */ ++ JXFORM_FLIP_V, /* vertical flip */ ++ JXFORM_TRANSPOSE, /* transpose across UL-to-LR axis */ ++ JXFORM_TRANSVERSE, /* transpose across UR-to-LL axis */ ++ JXFORM_ROT_90, /* 90-degree clockwise rotation */ ++ JXFORM_ROT_180, /* 180-degree rotation */ ++ JXFORM_ROT_270 /* 270-degree clockwise (or 90 ccw) */ ++} JXFORM_CODE; ++ ++/* ++ * Codes for crop parameters, which can individually be unspecified, ++ * positive, or negative. (Negative width or height makes no sense, though.) ++ */ ++ ++typedef enum { ++ JCROP_UNSET, ++ JCROP_POS, ++ JCROP_NEG ++} JCROP_CODE; ++ ++/* ++ * Transform parameters struct. ++ * NB: application must not change any elements of this struct after ++ * calling jtransform_request_workspace. ++ */ ++ + typedef struct { + /* Options: set by caller */ + JXFORM_CODE transform; /* image transform operator */ + boolean trim; /* if TRUE, trim partial MCUs as needed */ + boolean force_grayscale; /* if TRUE, convert color image to grayscale */ ++ boolean crop; /* if TRUE, crop source image */ ++ ++ /* Crop parameters: application need not set these unless crop is TRUE. ++ * These can be filled in by jtransform_parse_crop_spec(). ++ */ ++ JDIMENSION crop_width; /* Width of selected region */ ++ JCROP_CODE crop_width_set; ++ JDIMENSION crop_height; /* Height of selected region */ ++ JCROP_CODE crop_height_set; ++ JDIMENSION crop_xoffset; /* X offset of selected region */ ++ JCROP_CODE crop_xoffset_set; /* (negative measures from right edge) */ ++ JDIMENSION crop_yoffset; /* Y offset of selected region */ ++ JCROP_CODE crop_yoffset_set; /* (negative measures from bottom edge) */ + + /* Internal workspace: caller should not touch these */ + int num_components; /* # of components in workspace */ + jvirt_barray_ptr * workspace_coef_arrays; /* workspace for transformations */ ++ JDIMENSION output_width; /* cropped destination dimensions */ ++ JDIMENSION output_height; ++ JDIMENSION x_crop_offset; /* destination crop offsets measured in iMCUs */ ++ JDIMENSION y_crop_offset; ++ int max_h_samp_factor; /* destination iMCU size */ ++ int max_v_samp_factor; + } jpeg_transform_info; + + + #if TRANSFORMS_SUPPORTED + ++/* Parse a crop specification (written in X11 geometry style) */ ++EXTERN(boolean) jtransform_parse_crop_spec ++ JPP((jpeg_transform_info *info, const char *spec)); + /* Request any required workspace */ + EXTERN(void) jtransform_request_workspace + JPP((j_decompress_ptr srcinfo, jpeg_transform_info *info)); +@@ -106,11 +160,18 @@ + jvirt_barray_ptr *src_coef_arrays, + jpeg_transform_info *info)); + /* Execute the actual transformation, if any */ +-EXTERN(void) jtransform_execute_transformation ++EXTERN(void) jtransform_execute_transform + JPP((j_decompress_ptr srcinfo, j_compress_ptr dstinfo, + jvirt_barray_ptr *src_coef_arrays, + jpeg_transform_info *info)); + ++/* jtransform_execute_transform used to be called ++ * jtransform_execute_transformation, but some compilers complain about ++ * routine names that long. This macro is here to avoid breaking any ++ * old source code that uses the original name... ++ */ ++#define jtransform_execute_transformation jtransform_execute_transform ++ + #endif /* TRANSFORMS_SUPPORTED */ + + +--- jpeg-6b/config.guess~libjpeg6bb-5 ++++ jpeg-6b/config.guess +@@ -1,4 +1,10 @@ + #! /bin/sh ++# autotools-dev hack (, Wed, 14 Nov 2001 10:13:10 +0100) ++if [ -x /usr/share/misc/config.guess ]; then ++ /usr/share/misc/config.guess $* ++ exit $? ++fi ++ + # Attempt to guess a canonical system name. + # Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. + # +--- jpeg-6b/config.sub~libjpeg6bb-5 ++++ jpeg-6b/config.sub +@@ -1,4 +1,10 @@ + #! /bin/sh ++# autotools-dev hack (, Wed, 14 Nov 2001 10:13:10 +0100) ++if [ -x /usr/share/misc/config.sub ]; then ++ /usr/share/misc/config.sub $* ++ exit $? ++fi ++ + # Configuration validation subroutine script, version 1.1. + # Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. + # This file is (in principle) common to ALL GNU software. +--- /dev/null ++++ jpeg-6b/libtool.cfg +@@ -0,0 +1,224 @@ ++# libtool.cfg - Libtool configuration file. ++# Generated automatically by ltconfig (GNU libtool 1.3.3 (1.385.2.181 1999/07/02 15:49:11)) ++# Libtool was configured as follows, on host yellowpig: ++# ++# CC="old_CC" CFLAGS="old_CFLAGS" CPPFLAGS="old_CPPFLAGS" \ ++# LD="old_LD" LDFLAGS="old_LDFLAGS" LIBS="old_LIBS" \ ++# NM="old_NM" RANLIB="old_RANLIB" LN_S="old_LN_S" \ ++# DLLTOOL="old_DLLTOOL" OBJDUMP="old_OBJDUMP" AS="old_AS" \ ++# ./ltconfig.new ./ltmain.sh.new i386-gnu ++# ++# Compiler and other test output produced by ltconfig.new, useful for ++# debugging ltconfig.new, is in ./config.log if it exists. ++ ++# The version of ltconfig.new that generated this script. ++LTCONFIG_VERSION=1.3.3 ++ ++# Shell to use when invoking shell scripts. ++SHELL=/bin/sh ++ ++# Whether or not to build shared libraries. ++build_libtool_libs=yes ++ ++# Whether or not to build static libraries. ++build_old_libs=yes ++ ++# Whether or not to optimize for fast installation. ++fast_install=yes ++ ++# The host system. ++host_alias=i386-gnu ++host=i386-pc-gnu ++ ++# An echo program that does not interpret backslashes. ++echo=echo ++ ++# The archiver. ++AR=ar ++ ++# The default C compiler. ++CC=gcc ++ ++# The linker used to build libraries. ++LD=/usr/bin/ld ++ ++# Whether we need hard or soft links. ++LN_S=ln -s ++ ++# A BSD-compatible nm program. ++NM=/usr/bin/nm -B ++ ++# 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=.libs ++ ++# How to create reloadable object files. ++reload_flag= -r ++reload_cmds=$LD$reload_flag -o $output$reload_objs ++ ++# How to pass a linker flag through the compiler. ++wl=-Wl, ++ ++# Object file suffix (normally "o"). ++objext="o" ++ ++# Old archive suffix (normally "a"). ++libext="a" ++ ++# Executable file suffix (normally ""). ++exeext="" ++ ++# Additional compiler flags for building library objects. ++pic_flag= -fPIC ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=yes ++ ++# Can we write directly to a .lo ? ++compiler_o_lo=yes ++ ++# Must we lock files when doing compilation ? ++need_locks=no ++ ++# Do we need the lib prefix for modules? ++need_lib_prefix=no ++ ++# Do we need a version for libraries? ++need_version=no ++ ++# Whether dlopen is supported. ++dlopen=unknown ++ ++# Whether dlopen of programs is supported. ++dlopen_self=unknown ++ ++# Whether dlopen of statically linked programs is supported. ++dlopen_self_static=unknown ++ ++# Compiler flag to prevent dynamic linking. ++link_static_flag=-static ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag= -fno-builtin -fno-rtti -fno-exceptions ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=${wl}--export-dynamic ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=${wl}--whole-archive$convenience ${wl}--no-whole-archive ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec= ++ ++# Library versioning type. ++version_type=linux ++ ++# Format of library name prefix. ++libname_spec=lib$name ++ ++# 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=${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so ++ ++# The coded name of the library, if different from the real name. ++soname_spec=${libname}${release}.so$major ++ ++# Commands used to build and install an old-style archive. ++RANLIB=ranlib ++old_archive_cmds=$AR cru $oldlib$oldobjs~$RANLIB $oldlib ++old_postinstall_cmds=$RANLIB $oldlib~chmod 644 $oldlib ++old_postuninstall_cmds= ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds= ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib ++archive_expsym_cmds=$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib ++postinstall_cmds= ++postuninstall_cmds= ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=unknown ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd= ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag= ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag= ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds= ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval= ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=sed -n -e 's/^.*[ ]\([ABCDGISTW]\)[ ][ ]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=sed -n -e 's/^. .* \(.*\)$/extern char \1;/p' ++ ++# This is the shared library runtime path variable. ++runpath_var=LD_RUN_PATH ++ ++# This is the shared library path variable. ++shlibpath_var=LD_LIBRARY_PATH ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=unknown ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=immediate ++ ++# Flag to hardcode $libdir into a binary during linking. ++# This must work even if $libdir does not exist. ++hardcode_libdir_flag_spec=${wl}--rpath ${wl}$libdir ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator= ++ ++# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=no ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=no ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=unsupported ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=/lib /usr/lib /usr/local/lib ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=/lib /usr/lib ++ ++# Fix the shell variable $srcfile for the compiler. ++fix_srcfile_path="" ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=no ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$NM $libobjs $convenience | $global_symbol_pipe | sed 's/.* //' | sort | uniq > $export_symbols ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=_GLOBAL_OFFSET_TABLE_ ++ ++# Symbols that must always be exported. ++include_expsyms= ++ +--- /dev/null ++++ jpeg-6b/ltmain.new.sh +@@ -0,0 +1,3975 @@ ++# ltmain.sh - Provide generalized library-building support services. ++# NOTE: Changing this file will not affect anything until you rerun ltconfig. ++# ++# Copyright (C) 1996-1999 Free Software Foundation, Inc. ++# Originally by Gordon Matzigkeit , 1996 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# 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 "$0" --no-reexec ${1+"$@"} ++fi ++ ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat <&2 ++ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit 1 ++fi ++ ++if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then ++ echo "$modename: not configured to build any kind of library" 1>&2 ++ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit 1 ++fi ++ ++# Global variables. ++mode=$default_mode ++nonopt= ++prev= ++prevopt= ++run= ++show="$echo" ++show_help= ++execute_dlfiles= ++lo2o="s/\\.lo\$/.${objext}/" ++o2lo="s/\\.${objext}\$/.lo/" ++ ++# Parse our command line options once, thoroughly. ++while test $# -gt 0 ++do ++ arg="$1" ++ shift ++ ++ case "$arg" in ++ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; ++ *) optarg= ;; ++ esac ++ ++ # If the previous option needs an argument, assign it. ++ if test -n "$prev"; then ++ case "$prev" in ++ execute_dlfiles) ++ eval "$prev=\"\$$prev \$arg\"" ++ ;; ++ *) ++ eval "$prev=\$arg" ++ ;; ++ esac ++ ++ prev= ++ prevopt= ++ continue ++ fi ++ ++ # Have we seen a non-optional argument yet? ++ case "$arg" in ++ --help) ++ show_help=yes ++ ;; ++ ++ --version) ++ echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" ++ exit 0 ++ ;; ++ ++ --config) ++ sed -e '1,/^### BEGIN LIBTOOL CONFIG/d' -e '/^### END LIBTOOL CONFIG/,$d' $0 ++ exit 0 ++ ;; ++ ++ --debug) ++ echo "$progname: enabling shell trace mode" ++ set -x ++ ;; ++ ++ --dry-run | -n) ++ run=: ++ ;; ++ ++ --features) ++ echo "host: $host" ++ if test "$build_libtool_libs" = yes; then ++ echo "enable shared libraries" ++ else ++ echo "disable shared libraries" ++ fi ++ if test "$build_old_libs" = yes; then ++ echo "enable static libraries" ++ else ++ echo "disable static libraries" ++ fi ++ exit 0 ++ ;; ++ ++ --finish) mode="finish" ;; ++ ++ --mode) prevopt="--mode" prev=mode ;; ++ --mode=*) mode="$optarg" ;; ++ ++ --quiet | --silent) ++ show=: ++ ;; ++ ++ -dlopen) ++ prevopt="-dlopen" ++ prev=execute_dlfiles ++ ;; ++ ++ -*) ++ $echo "$modename: unrecognized option \`$arg'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ ;; ++ ++ *) ++ nonopt="$arg" ++ break ++ ;; ++ esac ++done ++ ++if test -n "$prevopt"; then ++ $echo "$modename: option \`$prevopt' requires an argument" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++fi ++ ++if test -z "$show_help"; then ++ ++ # Infer the operation mode. ++ if test -z "$mode"; then ++ case "$nonopt" in ++ *cc | *++ | gcc* | *-gcc*) ++ mode=link ++ for arg ++ do ++ case "$arg" in ++ -c) ++ mode=compile ++ break ++ ;; ++ esac ++ done ++ ;; ++ *db | *dbx | *strace | *truss) ++ mode=execute ++ ;; ++ *install*|cp|mv) ++ mode=install ++ ;; ++ *rm) ++ mode=uninstall ++ ;; ++ *) ++ # If we have no mode, but dlfiles were specified, then do execute mode. ++ test -n "$execute_dlfiles" && mode=execute ++ ++ # Just use the default operation mode. ++ if test -z "$mode"; then ++ if test -n "$nonopt"; then ++ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 ++ else ++ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 ++ fi ++ fi ++ ;; ++ esac ++ fi ++ ++ # Only execute mode is allowed to have -dlopen flags. ++ if test -n "$execute_dlfiles" && test "$mode" != execute; then ++ $echo "$modename: unrecognized option \`-dlopen'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ # Change the help message to a mode-specific one. ++ generic_help="$help" ++ help="Try \`$modename --help --mode=$mode' for more information." ++ ++ # These modes are in order of execution frequency so that they run quickly. ++ case "$mode" in ++ # libtool compile mode ++ compile) ++ modename="$modename: compile" ++ # Get the compilation command and the source file. ++ base_compile= ++ lastarg= ++ srcfile="$nonopt" ++ suppress_output= ++ ++ user_target=no ++ for arg ++ do ++ # Accept any command-line options. ++ case "$arg" in ++ -o) ++ if test "$user_target" != "no"; then ++ $echo "$modename: you cannot specify \`-o' more than once" 1>&2 ++ exit 1 ++ fi ++ user_target=next ++ ;; ++ ++ -static) ++ build_old_libs=yes ++ continue ++ ;; ++ esac ++ ++ case "$user_target" in ++ next) ++ # The next one is the -o target name ++ user_target=yes ++ continue ++ ;; ++ yes) ++ # We got the output file ++ user_target=set ++ libobj="$arg" ++ continue ++ ;; ++ esac ++ ++ # Accept the current argument as the source file. ++ lastarg="$srcfile" ++ srcfile="$arg" ++ ++ # Aesthetically quote the previous argument. ++ ++ # Backslashify any backslashes, double quotes, and dollar signs. ++ # These are the only characters that are still specially ++ # interpreted inside of double-quoted scrings. ++ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` ++ ++ # Double-quote args containing other shell metacharacters. ++ # Many Bourne shells cannot handle close brackets correctly in scan ++ # sets, so we specify it separately. ++ case "$lastarg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ lastarg="\"$lastarg\"" ++ ;; ++ esac ++ ++ # Add the previous argument to base_compile. ++ if test -z "$base_compile"; then ++ base_compile="$lastarg" ++ else ++ base_compile="$base_compile $lastarg" ++ fi ++ done ++ ++ case "$user_target" in ++ set) ++ ;; ++ no) ++ # Get the name of the library object. ++ libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` ++ ;; ++ *) ++ $echo "$modename: you must specify a target with \`-o'" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ # Recognize several different file suffixes. ++ # If the user specifies -o file.o, it is replaced with file.lo ++ xform='[cCFSfmso]' ++ case "$libobj" in ++ *.ada) xform=ada ;; ++ *.adb) xform=adb ;; ++ *.ads) xform=ads ;; ++ *.asm) xform=asm ;; ++ *.c++) xform=c++ ;; ++ *.cc) xform=cc ;; ++ *.cpp) xform=cpp ;; ++ *.cxx) xform=cxx ;; ++ *.f90) xform=f90 ;; ++ *.for) xform=for ;; ++ esac ++ ++ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` ++ ++ case "$libobj" in ++ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; ++ *) ++ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ if test -z "$base_compile"; then ++ $echo "$modename: you must specify a compilation command" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ # Delete any leftover library objects. ++ if test "$build_old_libs" = yes; then ++ removelist="$obj $libobj" ++ else ++ removelist="$libobj" ++ fi ++ ++ $run $rm $removelist ++ trap "$run $rm $removelist; exit 1" 1 2 15 ++ ++ # 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} ++ lockfile="$output_obj.lock" ++ removelist="$removelist $output_obj $lockfile" ++ trap "$run $rm $removelist; exit 1" 1 2 15 ++ else ++ need_locks=no ++ lockfile= ++ fi ++ ++ # Lock this critical section if it is needed ++ # We use this script file to make the link, it avoids creating a new file ++ if test "$need_locks" = yes; then ++ until ln "$0" "$lockfile" 2>/dev/null; do ++ $show "Waiting for $lockfile to be removed" ++ sleep 2 ++ done ++ elif test "$need_locks" = warn; then ++ if test -f "$lockfile"; then ++ echo "\ ++*** ERROR, $lockfile exists and contains: ++`cat $lockfile 2>/dev/null` ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $run $rm $removelist ++ exit 1 ++ fi ++ echo $srcfile > "$lockfile" ++ fi ++ ++ if test -n "$fix_srcfile_path"; then ++ eval srcfile=\"$fix_srcfile_path\" ++ fi ++ ++ # 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. ++ fbsd_hideous_sh_bug=$base_compile ++ ++ # All platforms use -DPIC, to notify preprocessed assembler code. ++ command="$base_compile $pic_flag -DPIC $srcfile" ++ if test "$build_old_libs" = yes; then ++ lo_libobj="$libobj" ++ dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$dir" = "X$libobj"; then ++ dir="$objdir" ++ else ++ dir="$dir/$objdir" ++ fi ++ libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` ++ ++ if test -d "$dir"; then ++ $show "$rm $libobj" ++ $run $rm $libobj ++ else ++ $show "$mkdir $dir" ++ $run $mkdir $dir ++ status=$? ++ if test $status -ne 0 && test ! -d $dir; then ++ exit $status ++ fi ++ fi ++ fi ++ if test "$compiler_o_lo" = yes; then ++ output_obj="$libobj" ++ command="$command -o $output_obj" ++ elif test "$compiler_c_o" = yes; then ++ output_obj="$obj" ++ command="$command -o $output_obj" ++ fi ++ ++ $run $rm "$output_obj" ++ $show "$command" ++ if $run eval "$command"; then : ++ else ++ test -n "$output_obj" && $run $rm $removelist ++ exit 1 ++ fi ++ ++ if test "$need_locks" = warn && ++ test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then ++ echo "\ ++*** ERROR, $lockfile contains: ++`cat $lockfile 2>/dev/null` ++ ++but it should contain: ++$srcfile ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $run $rm $removelist ++ exit 1 ++ fi ++ ++ # Just move the object if needed, then go on to compile the next one ++ if test x"$output_obj" != x"$libobj"; then ++ $show "$mv $output_obj $libobj" ++ if $run $mv $output_obj $libobj; then : ++ else ++ error=$? ++ $run $rm $removelist ++ exit $error ++ fi ++ fi ++ ++ # If we have no pic_flag, then copy the object into place and finish. ++ if test -z "$pic_flag" && test "$build_old_libs" = yes; then ++ # Rename the .lo from within objdir to obj ++ if test -f $obj; then ++ $show $rm $obj ++ $run $rm $obj ++ fi ++ ++ $show "$mv $libobj $obj" ++ if $run $mv $libobj $obj; then : ++ else ++ error=$? ++ $run $rm $removelist ++ exit $error ++ fi ++ ++ # Now arrange that obj and lo_libobj become the same file ++ $show "$LN_S $obj $lo_libobj" ++ if $run $LN_S $obj $lo_libobj; then ++ exit 0 ++ else ++ error=$? ++ $run $rm $removelist ++ exit $error ++ fi ++ fi ++ ++ # Allow error messages only from the first compilation. ++ suppress_output=' >/dev/null 2>&1' ++ fi ++ ++ # Only build a position-dependent object if we build old libraries. ++ if test "$build_old_libs" = yes; then ++ command="$base_compile $srcfile" ++ if test "$compiler_c_o" = yes; then ++ command="$command -o $obj" ++ output_obj="$obj" ++ fi ++ ++ # Suppress compiler output if we already did a PIC compilation. ++ command="$command$suppress_output" ++ $run $rm "$output_obj" ++ $show "$command" ++ if $run eval "$command"; then : ++ else ++ $run $rm $removelist ++ exit 1 ++ fi ++ ++ if test "$need_locks" = warn && ++ test x"`cat $lockfile 2>/dev/null`" != x"$srcfile"; then ++ echo "\ ++*** ERROR, $lockfile contains: ++`cat $lockfile 2>/dev/null` ++ ++but it should contain: ++$srcfile ++ ++This indicates that another process is trying to use the same ++temporary object file, and libtool could not work around it because ++your compiler does not support \`-c' and \`-o' together. If you ++repeat this compilation, it may succeed, by chance, but you had better ++avoid parallel builds (make -j) in this platform, or get a better ++compiler." ++ ++ $run $rm $removelist ++ exit 1 ++ fi ++ ++ # Just move the object if needed ++ if test x"$output_obj" != x"$obj"; then ++ $show "$mv $output_obj $obj" ++ if $run $mv $output_obj $obj; then : ++ else ++ error=$? ++ $run $rm $removelist ++ exit $error ++ fi ++ fi ++ ++ # Create an invalid libtool object if no PIC, so that we do not ++ # accidentally link it into a program. ++ if test "$build_libtool_libs" != yes; then ++ $show "echo timestamp > $libobj" ++ $run eval "echo timestamp > \$libobj" || exit $? ++ else ++ # Move the .lo from within objdir ++ $show "$mv $libobj $lo_libobj" ++ if $run $mv $libobj $lo_libobj; then : ++ else ++ error=$? ++ $run $rm $removelist ++ exit $error ++ fi ++ fi ++ fi ++ ++ # Unlock the critical section if it was locked ++ if test "$need_locks" != no; then ++ $rm "$lockfile" ++ fi ++ ++ exit 0 ++ ;; ++ ++ # libtool link mode ++ link) ++ modename="$modename: link" ++ C_compiler="$CC" # save it, to compile generated C sources ++ CC="$nonopt" ++ case "$host" in ++ *-*-cygwin* | *-*-mingw* | *-*-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 invokation. ++ # allow_undefined=no ++ ++ # 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 ++ ++ # This is a source program that is used to create dlls on Windows ++ # Don't remove nor modify the starting and closing comments ++# /* ltdll.c starts here */ ++# #define WIN32_LEAN_AND_MEAN ++# #include ++# #undef WIN32_LEAN_AND_MEAN ++# #include ++# ++# #ifndef __CYGWIN__ ++# # ifdef __CYGWIN32__ ++# # define __CYGWIN__ __CYGWIN32__ ++# # endif ++# #endif ++# ++# #ifdef __cplusplus ++# extern "C" { ++# #endif ++# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); ++# #ifdef __cplusplus ++# } ++# #endif ++# ++# #ifdef __CYGWIN__ ++# #include ++# DECLARE_CYGWIN_DLL( DllMain ); ++# #endif ++# HINSTANCE __hDllInstance_base; ++# ++# BOOL APIENTRY ++# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) ++# { ++# __hDllInstance_base = hInst; ++# return TRUE; ++# } ++# /* ltdll.c ends here */ ++ # This is a source program that is used to create import libraries ++ # on Windows for dlls which lack them. Don't remove nor modify the ++ # starting and closing comments ++# /* impgen.c starts here */ ++# /* Copyright (C) 1999 Free Software Foundation, Inc. ++# ++# 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. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# */ ++# ++# #include /* for printf() */ ++# #include /* for open(), lseek(), read() */ ++# #include /* for O_RDONLY, O_BINARY */ ++# #include /* for strdup() */ ++# ++# static unsigned int ++# pe_get16 (fd, offset) ++# int fd; ++# int offset; ++# { ++# unsigned char b[2]; ++# lseek (fd, offset, SEEK_SET); ++# read (fd, b, 2); ++# return b[0] + (b[1]<<8); ++# } ++# ++# static unsigned int ++# pe_get32 (fd, offset) ++# int fd; ++# int offset; ++# { ++# unsigned char b[4]; ++# lseek (fd, offset, SEEK_SET); ++# read (fd, b, 4); ++# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); ++# } ++# ++# static unsigned int ++# pe_as32 (ptr) ++# void *ptr; ++# { ++# unsigned char *b = ptr; ++# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); ++# } ++# ++# int ++# main (argc, argv) ++# int argc; ++# char *argv[]; ++# { ++# int dll; ++# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; ++# unsigned long export_rva, export_size, nsections, secptr, expptr; ++# unsigned long name_rvas, nexp; ++# unsigned char *expdata, *erva; ++# char *filename, *dll_name; ++# ++# filename = argv[1]; ++# ++# dll = open(filename, O_RDONLY|O_BINARY); ++# if (!dll) ++# return 1; ++# ++# dll_name = filename; ++# ++# for (i=0; filename[i]; i++) ++# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') ++# dll_name = filename + i +1; ++# ++# pe_header_offset = pe_get32 (dll, 0x3c); ++# opthdr_ofs = pe_header_offset + 4 + 20; ++# num_entries = pe_get32 (dll, opthdr_ofs + 92); ++# ++# if (num_entries < 1) /* no exports */ ++# return 1; ++# ++# export_rva = pe_get32 (dll, opthdr_ofs + 96); ++# export_size = pe_get32 (dll, opthdr_ofs + 100); ++# nsections = pe_get16 (dll, pe_header_offset + 4 +2); ++# secptr = (pe_header_offset + 4 + 20 + ++# pe_get16 (dll, pe_header_offset + 4 + 16)); ++# ++# expptr = 0; ++# for (i = 0; i < nsections; i++) ++# { ++# char sname[8]; ++# unsigned long secptr1 = secptr + 40 * i; ++# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); ++# unsigned long vsize = pe_get32 (dll, secptr1 + 16); ++# unsigned long fptr = pe_get32 (dll, secptr1 + 20); ++# lseek(dll, secptr1, SEEK_SET); ++# read(dll, sname, 8); ++# if (vaddr <= export_rva && vaddr+vsize > export_rva) ++# { ++# expptr = fptr + (export_rva - vaddr); ++# if (export_rva + export_size > vaddr + vsize) ++# export_size = vsize - (export_rva - vaddr); ++# break; ++# } ++# } ++# ++# expdata = (unsigned char*)malloc(export_size); ++# lseek (dll, expptr, SEEK_SET); ++# read (dll, expdata, export_size); ++# erva = expdata - export_rva; ++# ++# nexp = pe_as32 (expdata+24); ++# name_rvas = pe_as32 (expdata+32); ++# ++# printf ("EXPORTS\n"); ++# for (i = 0; i&2 ++ fi ++ if test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ else ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ dlopen_self=$dlopen_self_static ++ fi ++ fi ++ build_libtool_libs=no ++ build_old_libs=yes ++ prefer_static_libs=yes ++ break ++ ;; ++ esac ++ done ++ ++ # See if our shared archives depend on static archives. ++ test -n "$old_archive_from_new_cmds" && build_old_libs=yes ++ ++ # Go through the arguments, transforming them on the way. ++ while test $# -gt 0; do ++ arg="$1" ++ shift ++ ++ # 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 ++ ++ 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 ++ 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= ++ ;; ++ esac ++ ;; ++ expsyms) ++ export_symbols="$arg" ++ if test ! -f "$arg"; then ++ $echo "$modename: symbol file \`$arg' does not exist" ++ exit 1 ++ fi ++ prev= ++ continue ++ ;; ++ expsyms_regex) ++ export_symbols_regex="$arg" ++ prev= ++ continue ++ ;; ++ release) ++ release="-$arg" ++ prev= ++ continue ++ ;; ++ rpath | xrpath) ++ # We need an absolute path. ++ case "$arg" in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ $echo "$modename: only absolute run-paths are allowed" 1>&2 ++ exit 1 ++ ;; ++ esac ++ if test "$prev" = rpath; then ++ case "$rpath " in ++ *" $arg "*) ;; ++ *) rpath="$rpath $arg" ;; ++ esac ++ else ++ case "$xrpath " in ++ *" $arg "*) ;; ++ *) xrpath="$xrpath $arg" ;; ++ esac ++ fi ++ prev= ++ continue ++ ;; ++ *) ++ eval "$prev=\"\$arg\"" ++ prev= ++ continue ++ ;; ++ esac ++ fi ++ ++ prevarg="$arg" ++ ++ case "$arg" in ++ -all-static) ++ if test -n "$link_static_flag"; then ++ compile_command="$compile_command $link_static_flag" ++ finalize_command="$finalize_command $link_static_flag" ++ fi ++ continue ++ ;; ++ ++ -allow-undefined) ++ # FIXME: remove this flag sometime in the future. ++ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 ++ continue ++ ;; ++ ++ -avoid-version) ++ avoid_version=yes ++ continue ++ ;; ++ ++ -dlopen) ++ prev=dlfiles ++ continue ++ ;; ++ ++ -dlpreopen) ++ prev=dlprefiles ++ continue ++ ;; ++ ++ -export-dynamic) ++ export_dynamic=yes ++ continue ++ ;; ++ ++ -export-symbols | -export-symbols-regex) ++ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then ++ $echo "$modename: not more than one -exported-symbols argument allowed" ++ exit 1 ++ fi ++ if test "X$arg" = "X-export-symbols"; then ++ prev=expsyms ++ else ++ prev=expsyms_regex ++ fi ++ continue ++ ;; ++ ++ -L*) ++ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` ++ # We need an absolute path. ++ case "$dir" in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ absdir=`cd "$dir" && pwd` ++ if test -z "$absdir"; then ++ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 ++ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 ++ absdir="$dir" ++ fi ++ dir="$absdir" ++ ;; ++ esac ++ case " $deplibs " in ++ *" $arg "*) ;; ++ *) deplibs="$deplibs $arg";; ++ esac ++ case " $lib_search_path " in ++ *" $dir "*) ;; ++ *) lib_search_path="$lib_search_path $dir";; ++ esac ++ case "$host" in ++ *-*-cygwin* | *-*-mingw* | *-*-os2*) ++ dllsearchdir=`cd "$dir" && pwd || echo "$dir"` ++ case ":$dllsearchpath:" in ++ ::) dllsearchpath="$dllsearchdir";; ++ *":$dllsearchdir:"*) ;; ++ *) dllsearchpath="$dllsearchpath:$dllsearchdir";; ++ esac ++ ;; ++ esac ++ ;; ++ ++ -l*) ++ if test "$arg" = "-lc"; then ++ case "$host" in ++ *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) ++ # These systems don't actually have c library (as such) ++ continue ++ ;; ++ esac ++ elif test "$arg" = "-lm"; then ++ case "$host" in ++ *-*-cygwin* | *-*-beos*) ++ # These systems don't actually have math library (as such) ++ continue ++ ;; ++ esac ++ fi ++ deplibs="$deplibs $arg" ++ ;; ++ ++ -module) ++ module=yes ++ continue ++ ;; ++ ++ -no-undefined) ++ allow_undefined=no ++ continue ++ ;; ++ ++ -o) prev=output ;; ++ ++ -release) ++ prev=release ++ continue ++ ;; ++ ++ -rpath) ++ prev=rpath ++ continue ++ ;; ++ ++ -R) ++ prev=xrpath ++ continue ++ ;; ++ ++ -R*) ++ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` ++ # We need an absolute path. ++ case "$dir" in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ $echo "$modename: only absolute run-paths are allowed" 1>&2 ++ exit 1 ++ ;; ++ esac ++ case "$xrpath " in ++ *" $dir "*) ;; ++ *) xrpath="$xrpath $dir" ;; ++ esac ++ continue ++ ;; ++ ++ -static) ++ # If we have no pic_flag, then this is the same as -all-static. ++ if test -z "$pic_flag" && test -n "$link_static_flag"; then ++ compile_command="$compile_command $link_static_flag" ++ finalize_command="$finalize_command $link_static_flag" ++ fi ++ continue ++ ;; ++ ++ -thread-safe) ++ thread_safe=yes ++ continue ++ ;; ++ ++ -version-info) ++ prev=vinfo ++ continue ++ ;; ++ ++ # Some other compiler flag. ++ -* | +*) ++ # Unknown arguments in both finalize_command and compile_command need ++ # to be aesthetically quoted because they are evaled later. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case "$arg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ arg="\"$arg\"" ++ ;; ++ esac ++ ;; ++ ++ *.o | *.obj | *.a | *.lib) ++ # A standard object. ++ objs="$objs $arg" ++ ;; ++ ++ *.lo) ++ # A library object. ++ if test "$prev" = dlfiles; then ++ dlfiles="$dlfiles $arg" ++ if test "$build_libtool_libs" = yes && test "$dlopen" = yes; then ++ prev= ++ continue ++ else ++ # If libtool objects are unsupported, then we need to preload. ++ prev=dlprefiles ++ fi ++ fi ++ ++ if test "$prev" = dlprefiles; then ++ # Preload the old-style object. ++ dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` ++ prev= ++ fi ++ libobjs="$libobjs $arg" ++ ;; ++ ++ *.la) ++ # A libtool-controlled library. ++ ++ dlname= ++ libdir= ++ library_names= ++ old_library= ++ ++ # Check to see that this really is a libtool archive. ++ if (sed -e '2q' $arg | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ else ++ $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 ++ exit 1 ++ fi ++ ++ # If the library was installed with an old release of libtool, ++ # it will not redefine variable installed. ++ installed=yes ++ ++ # Read the .la file ++ # If there is no directory component, then add one. ++ case "$arg" in ++ */* | *\\*) . $arg ;; ++ *) . ./$arg ;; ++ esac ++ ++ # 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 ++ $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 ++ exit 1 ++ fi ++ ++ # Find the relevant object directory and library name. ++ name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` ++ ++ if test "X$installed" = Xyes; then ++ dir="$libdir" ++ else ++ dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$dir" = "X$arg"; then ++ dir="$objdir" ++ else ++ dir="$dir/$objdir" ++ fi ++ fi ++ ++ if test -n "$dependency_libs"; then ++ # Extract -R and -L from dependency_libs ++ temp_deplibs= ++ for deplib in $dependency_libs; do ++ case "$deplib" in ++ -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` ++ case " $rpath $xrpath " in ++ *" $temp_xrpath "*) ;; ++ *) xrpath="$xrpath $temp_xrpath";; ++ esac;; ++ -L*) case "$compile_command $temp_deplibs " in ++ *" $deplib "*) ;; ++ *) temp_deplibs="$temp_deplibs $deplib";; ++ esac ++ temp_dir=`$echo "X$deplib" | $Xsed -e 's/^-L//'` ++ case " $lib_search_path " in ++ *" $temp_dir "*) ;; ++ *) lib_search_path="$lib_search_path $temp_dir";; ++ esac ++ ;; ++ *) temp_deplibs="$temp_deplibs $deplib";; ++ esac ++ done ++ dependency_libs="$temp_deplibs" ++ fi ++ ++ if test -z "$libdir"; then ++ # It is a libtool convenience library, so add in its objects. ++ convenience="$convenience $dir/$old_library" ++ old_convenience="$old_convenience $dir/$old_library" ++ deplibs="$deplibs$dependency_libs" ++ compile_command="$compile_command $dir/$old_library$dependency_libs" ++ finalize_command="$finalize_command $dir/$old_library$dependency_libs" ++ continue ++ fi ++ ++ # This library was specified with -dlopen. ++ if test "$prev" = dlfiles; then ++ dlfiles="$dlfiles $arg" ++ if test -z "$dlname" || test "$dlopen" != yes || test "$build_libtool_libs" = no; then ++ # If there is no dlname, no dlopen support or we're linking statically, ++ # we need to preload. ++ prev=dlprefiles ++ else ++ # We should not create a dependency on this library, but we ++ # may need any libraries it requires. ++ compile_command="$compile_command$dependency_libs" ++ finalize_command="$finalize_command$dependency_libs" ++ prev= ++ continue ++ fi ++ fi ++ ++ # The library was specified with -dlpreopen. ++ if test "$prev" = dlprefiles; then ++ # Prefer using a static library (so that no silly _DYNAMIC symbols ++ # are required to link). ++ if test -n "$old_library"; then ++ dlprefiles="$dlprefiles $dir/$old_library" ++ else ++ dlprefiles="$dlprefiles $dir/$linklib" ++ fi ++ prev= ++ fi ++ ++ if test -n "$library_names" && ++ { test "$prefer_static_libs" = no || test -z "$old_library"; }; then ++ link_against_libtool_libs="$link_against_libtool_libs $arg" ++ if test -n "$shlibpath_var"; then ++ # Make sure the rpath contains only unique directories. ++ case "$temp_rpath " in ++ *" $dir "*) ;; ++ *) temp_rpath="$temp_rpath $dir" ;; ++ esac ++ fi ++ ++ # We need an absolute path. ++ case "$dir" in ++ [\\/] | [A-Za-z]:[\\/]*) absdir="$dir" ;; ++ *) ++ absdir=`cd "$dir" && pwd` ++ if test -z "$absdir"; then ++ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 ++ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 ++ absdir="$dir" ++ fi ++ ;; ++ esac ++ ++ # This is the magic to use -rpath. ++ # Skip directories that are in the system default run-time ++ # search path, unless they have been requested with -R. ++ 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 ++ ++ lib_linked=yes ++ case "$hardcode_action" in ++ immediate | unsupported) ++ if test "$hardcode_direct" = no; then ++ compile_command="$compile_command $dir/$linklib" ++ deplibs="$deplibs $dir/$linklib" ++ case "$host" in ++ *-*-cygwin* | *-*-mingw* | *-*-os2*) ++ dllsearchdir=`cd "$dir" && pwd || echo "$dir"` ++ if test -n "$dllsearchpath"; then ++ dllsearchpath="$dllsearchpath:$dllsearchdir" ++ else ++ dllsearchpath="$dllsearchdir" ++ fi ++ ;; ++ esac ++ elif test "$hardcode_minus_L" = no; then ++ case "$host" in ++ *-*-sunos*) ++ compile_shlibpath="$compile_shlibpath$dir:" ++ ;; ++ esac ++ case "$compile_command " in ++ *" -L$dir "*) ;; ++ *) compile_command="$compile_command -L$dir";; ++ esac ++ compile_command="$compile_command -l$name" ++ deplibs="$deplibs -L$dir -l$name" ++ elif test "$hardcode_shlibpath_var" = no; then ++ case ":$compile_shlibpath:" in ++ *":$dir:"*) ;; ++ *) compile_shlibpath="$compile_shlibpath$dir:";; ++ esac ++ compile_command="$compile_command -l$name" ++ deplibs="$deplibs -l$name" ++ else ++ lib_linked=no ++ fi ++ ;; ++ ++ relink) ++ if test "$hardcode_direct" = yes; then ++ compile_command="$compile_command $absdir/$linklib" ++ deplibs="$deplibs $absdir/$linklib" ++ elif test "$hardcode_minus_L" = yes; then ++ case "$compile_command " in ++ *" -L$absdir "*) ;; ++ *) compile_command="$compile_command -L$absdir";; ++ esac ++ compile_command="$compile_command -l$name" ++ deplibs="$deplibs -L$absdir -l$name" ++ elif test "$hardcode_shlibpath_var" = yes; then ++ case ":$compile_shlibpath:" in ++ *":$absdir:"*) ;; ++ *) compile_shlibpath="$compile_shlibpath$absdir:";; ++ esac ++ compile_command="$compile_command -l$name" ++ deplibs="$deplibs -l$name" ++ else ++ lib_linked=no ++ fi ++ ;; ++ ++ *) ++ lib_linked=no ++ ;; ++ esac ++ ++ if test "$lib_linked" != yes; then ++ $echo "$modename: configuration error: unsupported hardcode properties" ++ exit 1 ++ fi ++ ++ # Finalize command for both is simple: just hardcode it. ++ if test "$hardcode_direct" = yes; then ++ finalize_command="$finalize_command $libdir/$linklib" ++ elif test "$hardcode_minus_L" = yes; then ++ case "$finalize_command " in ++ *" -L$libdir "*) ;; ++ *) finalize_command="$finalize_command -L$libdir";; ++ esac ++ finalize_command="$finalize_command -l$name" ++ elif test "$hardcode_shlibpath_var" = yes; then ++ case ":$finalize_shlibpath:" in ++ *":$libdir:"*) ;; ++ *) finalize_shlibpath="$finalize_shlibpath$libdir:";; ++ esac ++ finalize_command="$finalize_command -l$name" ++ else ++ # We cannot seem to hardcode it, guess we'll fake it. ++ case "$finalize_command " in ++ *" -L$dir "*) ;; ++ *) finalize_command="$finalize_command -L$libdir";; ++ esac ++ finalize_command="$finalize_command -l$name" ++ fi ++ else ++ # Transform directly to old archives if we don't build new libraries. ++ if test -n "$pic_flag" && test -z "$old_library"; then ++ $echo "$modename: cannot find static library for \`$arg'" 1>&2 ++ exit 1 ++ fi ++ ++ # 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_command="$compile_command $dir/$linklib" ++ finalize_command="$finalize_command $dir/$linklib" ++ else ++ case "$compile_command " in ++ *" -L$dir "*) ;; ++ *) compile_command="$compile_command -L$dir";; ++ esac ++ compile_command="$compile_command -l$name" ++ case "$finalize_command " in ++ *" -L$dir "*) ;; ++ *) finalize_command="$finalize_command -L$dir";; ++ esac ++ finalize_command="$finalize_command -l$name" ++ fi ++ fi ++ ++ # Add in any libraries that this one depends upon. ++ compile_command="$compile_command$dependency_libs" ++ finalize_command="$finalize_command$dependency_libs" ++ continue ++ ;; ++ ++ # Some other compiler argument. ++ *) ++ # Unknown arguments in both finalize_command and compile_command need ++ # to be aesthetically quoted because they are evaled later. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case "$arg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ arg="\"$arg\"" ++ ;; ++ esac ++ ;; ++ esac ++ ++ # 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 ++ ++ if test -n "$prev"; then ++ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ 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" ++ fi ++ ++ oldlibs= ++ # calculate the name of the file, without its directory ++ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` ++ libobjs_save="$libobjs" ++ ++ case "$output" in ++ "") ++ $echo "$modename: you must specify an output file" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ ;; ++ ++ *.a | *.lib) ++ if test -n "$link_against_libtool_libs"; then ++ $echo "$modename: error: cannot link libtool libraries into archives" 1>&2 ++ exit 1 ++ fi ++ ++ if test -n "$deplibs"; then ++ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$rpath"; then ++ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$xrpath"; then ++ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$vinfo"; then ++ $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$release"; then ++ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 ++ fi ++ ++ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then ++ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 ++ fi ++ ++ # Now set the variables for building old libraries. ++ build_libtool_libs=no ++ oldlibs="$output" ++ ;; ++ ++ *.la) ++ # Make sure we only generate libraries of the form `libNAME.la'. ++ case "$outputname" in ++ lib*) ++ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` ++ eval libname=\"$libname_spec\" ++ ;; ++ *) ++ if test "$module" = no; then ++ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ if test "$need_lib_prefix" != no; then ++ # Add the "lib" prefix for modules if required ++ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` ++ eval libname=\"$libname_spec\" ++ else ++ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` ++ fi ++ ;; ++ esac ++ ++ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$output_objdir" = "X$output"; then ++ output_objdir="$objdir" ++ else ++ output_objdir="$output_objdir/$objdir" ++ fi ++ ++ if test -n "$objs"; then ++ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 ++ exit 1 ++ fi ++ ++ # How the heck are we supposed to write a wrapper for a shared library? ++ if test -n "$link_against_libtool_libs"; then ++ $echo "$modename: error: cannot link shared libraries into libtool libraries" 1>&2 ++ exit 1 ++ fi ++ ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ $echo "$modename: warning: \`-dlopen' is ignored for libtool libraries" 1>&2 ++ fi ++ ++ set dummy $rpath ++ if test $# -gt 2; then ++ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 ++ fi ++ install_libdir="$2" ++ ++ oldlibs= ++ if test -z "$rpath"; then ++ if test "$build_libtool_libs" = yes; then ++ # Building a libtool convenience library. ++ libext=al ++ oldlibs="$output_objdir/$libname.$libext $oldlibs" ++ build_libtool_libs=convenience ++ build_old_libs=yes ++ fi ++ dependency_libs="$deplibs" ++ ++ if test -n "$vinfo"; then ++ $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 ++ fi ++ ++ if test -n "$release"; then ++ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 ++ fi ++ else ++ ++ # Parse the version information argument. ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' ++ set dummy $vinfo 0 0 0 ++ IFS="$save_ifs" ++ ++ if test -n "$8"; then ++ $echo "$modename: too many parameters to \`-version-info'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ current="$2" ++ revision="$3" ++ age="$4" ++ ++ # Check that each of the things are valid numbers. ++ case "$current" in ++ 0 | [1-9] | [1-9][0-9]*) ;; ++ *) ++ $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 ++ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ case "$revision" in ++ 0 | [1-9] | [1-9][0-9]*) ;; ++ *) ++ $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 ++ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ case "$age" in ++ 0 | [1-9] | [1-9][0-9]*) ;; ++ *) ++ $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 ++ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ if test $age -gt $current; then ++ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 ++ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 ++ exit 1 ++ fi ++ ++ # Calculate the version variables. ++ major= ++ versuffix= ++ verstring= ++ case "$version_type" in ++ none) ;; ++ ++ irix) ++ major=`expr $current - $age + 1` ++ versuffix="$major.$revision" ++ verstring="sgi$major.$revision" ++ ++ # Add in all the interfaces that we are compatible with. ++ loop=$revision ++ while test $loop != 0; do ++ iface=`expr $revision - $loop` ++ loop=`expr $loop - 1` ++ verstring="sgi$major.$iface:$verstring" ++ done ++ ;; ++ ++ linux) ++ major=.`expr $current - $age` ++ versuffix="$major.$age.$revision" ++ ;; ++ ++ osf) ++ major=`expr $current - $age` ++ versuffix=".$current.$age.$revision" ++ verstring="$current.$age.$revision" ++ ++ # Add in all the interfaces that we are compatible with. ++ loop=$age ++ while test $loop != 0; do ++ iface=`expr $current - $loop` ++ loop=`expr $loop - 1` ++ verstring="$verstring:${iface}.0" ++ done ++ ++ # Make executables depend on our current version. ++ verstring="$verstring:${current}.0" ++ ;; ++ ++ sunos) ++ major=".$current" ++ versuffix=".$current.$revision" ++ ;; ++ ++ freebsd-aout) ++ major=".$current" ++ versuffix=".$current.$revision"; ++ ;; ++ ++ freebsd-elf) ++ major=".$current" ++ versuffix=".$current"; ++ ;; ++ ++ windows) ++ # Like Linux, but with '-' rather than '.', since we only ++ # want one extension on Windows 95. ++ major=`expr $current - $age` ++ versuffix="-$major-$age-$revision" ++ ;; ++ ++ *) ++ $echo "$modename: unknown library version type \`$version_type'" 1>&2 ++ echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ # Clear the version info if we defaulted, and they specified a release. ++ if test -z "$vinfo" && test -n "$release"; then ++ major= ++ verstring="0.0" ++ 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 ++ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 ++ build_libtool_libs=no ++ build_old_libs=yes ++ fi ++ else ++ # Don't allow undefined symbols. ++ allow_undefined_flag="$no_undefined_flag" ++ fi ++ ++ dependency_libs="$deplibs" ++ case "$host" in ++ *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) ++ # these systems don't actually have a c library (as such)! ++ ;; ++ *) ++ # Add libc to deplibs on all other systems. ++ deplibs="$deplibs -lc" ++ ;; ++ esac ++ fi ++ ++ # Create the output directory, or remove our outputs if we need to. ++ if test -d $output_objdir; then ++ $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" ++ $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* ++ else ++ $show "$mkdir $output_objdir" ++ $run $mkdir $output_objdir ++ status=$? ++ if test $status -ne 0 && test ! -d $output_objdir; then ++ exit $status ++ fi ++ fi ++ ++ # 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" ++ ++ # Transform .lo files to .o files. ++ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` ++ fi ++ ++ if test "$build_libtool_libs" = yes; then ++ # 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 behaviour. ++ 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. ++ $rm conftest.c ++ cat > conftest.c </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 10q \ ++ | egrep "$file_magic_regex" > /dev/null; then ++ newdeplibs="$newdeplibs $a_deplib" ++ a_deplib="" ++ break 2 ++ fi ++ done ++ done ++ if test -n "$a_deplib" ; then ++ droppeddeps=yes ++ echo ++ echo "*** Warning: This library needs some functionality provided by $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." ++ fi ++ else ++ # Add a -L argument. ++ newdeplibs="$newdeplibs $a_deplib" ++ fi ++ done # Gone through all deplibs. ++ ;; ++ none | unknown | *) ++ newdeplibs="" ++ if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ ++ -e 's/ -[LR][^ ]*//g' -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 ++ ;; ++ esac ++ versuffix=$versuffix_save ++ major=$major_save ++ release=$release_save ++ libname=$libname_save ++ name=$name_save ++ ++ 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." ++ fi ++ fi ++ # Done checking deplibs! ++ deplibs=$newdeplibs ++ fi ++ ++ # All the library-specific variables (install_libdir is set above). ++ library_names= ++ old_library= ++ dlname= ++ ++ # Test again, we may have decided not to build it any more ++ if test "$build_libtool_libs" = yes; then ++ # Get the real and link names of the library. ++ eval library_names=\"$library_names_spec\" ++ set dummy $library_names ++ realname="$2" ++ shift; shift ++ ++ if test -n "$soname_spec"; then ++ eval soname=\"$soname_spec\" ++ else ++ soname="$realname" ++ fi ++ ++ lib="$output_objdir/$realname" ++ for link ++ do ++ linknames="$linknames $link" ++ done ++ ++ # Ensure that we have .o objects for linkers which dislike .lo ++ # (e.g. aix) incase we are running --disable-static ++ for obj in $libobjs; do ++ oldobj=`$echo "X$obj" | $Xsed -e "$lo2o"` ++ if test ! -f $oldobj; then ++ $show "${LN_S} $obj $oldobj" ++ $run ${LN_S} $obj $oldobj || exit $? ++ fi ++ done ++ ++ # Use standard objects if they are pic ++ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ ++ # Prepare the list of exported symbols ++ if test -z "$export_symbols"; then ++ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then ++ $show "generating symbol list for \`$libname.la'" ++ export_symbols="$output_objdir/$libname.exp" ++ $run $rm $export_symbols ++ eval cmds=\"$export_symbols_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ if test -n "$export_symbols_regex"; then ++ $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" ++ $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' ++ $show "$mv \"${export_symbols}T\" \"$export_symbols\"" ++ $run eval '$mv "${export_symbols}T" "$export_symbols"' ++ fi ++ fi ++ fi ++ ++ if test -n "$export_symbols" && test -n "$include_expsyms"; then ++ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' ++ fi ++ ++ if test -n "$convenience"; then ++ if test -n "$whole_archive_flag_spec"; then ++ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" ++ else ++ gentop="$output_objdir/${outputname}x" ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ $show "mkdir $gentop" ++ $run mkdir "$gentop" ++ status=$? ++ if test $status -ne 0 && test ! -d "$gentop"; then ++ exit $status ++ fi ++ generated="$generated $gentop" ++ ++ for xlib in $convenience; do ++ # Extract the objects. ++ case "$xlib" in ++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; ++ *) xabs=`pwd`"/$xlib" ;; ++ esac ++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` ++ xdir="$gentop/$xlib" ++ ++ $show "${rm}r $xdir" ++ $run ${rm}r "$xdir" ++ $show "mkdir $xdir" ++ $run mkdir "$xdir" ++ status=$? ++ if test $status -ne 0 && test ! -d "$xdir"; then ++ exit $status ++ fi ++ $show "(cd $xdir && $AR x $xabs)" ++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? ++ ++ libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` ++ done ++ fi ++ fi ++ ++ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then ++ eval flag=\"$thread_safe_flag_spec\" ++ linkopts="$linkopts $flag" ++ fi ++ ++ # Do each of the archive commands. ++ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then ++ eval cmds=\"$archive_expsym_cmds\" ++ else ++ eval cmds=\"$archive_cmds\" ++ fi ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ ++ # Create links to the real library. ++ for linkname in $linknames; do ++ if test "$realname" != "$linkname"; then ++ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" ++ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? ++ fi ++ done ++ ++ # If -module or -export-dynamic was specified, set the dlname. ++ if test "$module" = yes || test "$export_dynamic" = yes; then ++ # On all known operating systems, these are identical. ++ dlname="$soname" ++ fi ++ fi ++ ;; ++ ++ *.lo | *.o | *.obj) ++ if test -n "$link_against_libtool_libs"; then ++ $echo "$modename: error: cannot link libtool libraries into objects" 1>&2 ++ exit 1 ++ fi ++ ++ if test -n "$deplibs"; then ++ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ++ fi ++ ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 ++ fi ++ ++ if test -n "$rpath"; then ++ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 ++ fi ++ ++ if test -n "$xrpath"; then ++ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 ++ fi ++ ++ if test -n "$vinfo"; then ++ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 ++ fi ++ ++ if test -n "$release"; then ++ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 ++ fi ++ ++ case "$output" in ++ *.lo) ++ if test -n "$objs"; then ++ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 ++ exit 1 ++ fi ++ libobj="$output" ++ obj=`$echo "X$output" | $Xsed -e "$lo2o"` ++ ;; ++ *) ++ libobj= ++ obj="$output" ++ ;; ++ esac ++ ++ # Delete the old objects. ++ $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" ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ $show "mkdir $gentop" ++ $run mkdir "$gentop" ++ status=$? ++ if test $status -ne 0 && test ! -d "$gentop"; then ++ exit $status ++ fi ++ generated="$generated $gentop" ++ ++ for xlib in $convenience; do ++ # Extract the objects. ++ case "$xlib" in ++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; ++ *) xabs=`pwd`"/$xlib" ;; ++ esac ++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` ++ xdir="$gentop/$xlib" ++ ++ $show "${rm}r $xdir" ++ $run ${rm}r "$xdir" ++ $show "mkdir $xdir" ++ $run mkdir "$xdir" ++ status=$? ++ if test $status -ne 0 && test ! -d "$xdir"; then ++ exit $status ++ fi ++ $show "(cd $xdir && $AR x $xabs)" ++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? ++ ++ reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` ++ done ++ fi ++ fi ++ ++ # Create the old-style object. ++ reload_objs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ++ ++ output="$obj" ++ eval cmds=\"$reload_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ ++ # Exit if we aren't doing a library object file. ++ if test -z "$libobj"; then ++ if test -n "$gentop"; then ++ $show "${rm}r $gentop" ++ $run ${rm}r $gentop ++ fi ++ ++ exit 0 ++ fi ++ ++ if test "$build_libtool_libs" != yes; then ++ if test -n "$gentop"; then ++ $show "${rm}r $gentop" ++ $run ${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" ++ $run eval "echo timestamp > $libobj" || exit $? ++ exit 0 ++ fi ++ ++ if test -n "$pic_flag"; then ++ # Only do commands if we really have different PIC objects. ++ reload_objs="$libobjs $reload_conv_objs" ++ output="$libobj" ++ eval cmds=\"$reload_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ else ++ # Just create a symlink. ++ $show $rm $libobj ++ $run $rm $libobj ++ $show "$LN_S $obj $libobj" ++ $run $LN_S $obj $libobj || exit $? ++ fi ++ ++ if test -n "$gentop"; then ++ $show "${rm}r $gentop" ++ $run ${rm}r $gentop ++ fi ++ ++ exit 0 ++ ;; ++ ++ # Anything else should be a program. ++ *) ++ if test -n "$vinfo"; then ++ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 ++ fi ++ ++ if test -n "$release"; then ++ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 ++ fi ++ ++ if test "$preload" = yes; then ++ if test "$dlopen" = unknown && test "$dlopen_self" = unknown && ++ test "$dlopen_self_static" = unknown; then ++ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." ++ fi ++ 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 "$compile_rpath " in ++ *" $libdir "*) ;; ++ *) compile_rpath="$compile_rpath $libdir" ;; ++ esac ++ case "$finalize_rpath " in ++ *" $libdir "*) ;; ++ *) finalize_rpath="$finalize_rpath $libdir" ;; ++ esac ++ done ++ fi ++ ++ # Now hardcode the library paths ++ rpath= ++ hardcode_libdirs= ++ for libdir in $compile_rpath $finalize_rpath; do ++ if test -n "$hardcode_libdir_flag_spec"; then ++ if test -n "$hardcode_libdir_separator"; then ++ if test -z "$hardcode_libdirs"; then ++ hardcode_libdirs="$libdir" ++ else ++ # Just accumulate the unique libdirs. ++ case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in ++ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ++ ;; ++ *) ++ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ++ ;; ++ esac ++ 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 ++ 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" ++ ;; ++ esac ++ 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" ++ ++ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` ++ if test "X$output_objdir" = "X$output"; then ++ output_objdir="$objdir" ++ else ++ output_objdir="$output_objdir/$objdir" ++ fi ++ ++ # Create the binary in the object directory, then wrap it. ++ if test ! -d $output_objdir; then ++ $show "$mkdir $output_objdir" ++ $run $mkdir $output_objdir ++ status=$? ++ if test $status -ne 0 && test ! -d $output_objdir; then ++ exit $status ++ fi ++ fi ++ ++ 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 ++ ++ dlsyms= ++ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then ++ if test -n "$NM" && test -n "$global_symbol_pipe"; then ++ dlsyms="${outputname}S.c" ++ else ++ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 ++ fi ++ fi ++ ++ if test -n "$dlsyms"; then ++ case "$dlsyms" in ++ "") ;; ++ *.c) ++ # Discover the nlist of each of the dlfiles. ++ nlist="$output_objdir/${outputname}.nm" ++ ++ $show "$rm $nlist ${nlist}S ${nlist}T" ++ $run $rm "$nlist" "${nlist}S" "${nlist}T" ++ ++ # Parse the name list into a source file. ++ $show "creating $output_objdir/$dlsyms" ++ ++ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ ++/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ ++/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ ++ ++#ifdef __cplusplus ++extern \"C\" { ++#endif ++ ++/* Prevent the only kind of declaration conflicts we can make. */ ++#define lt_preloaded_symbols some_other_symbol ++ ++/* External symbol declarations for the compiler. */\ ++" ++ ++ if test "$dlself" = yes; then ++ $show "generating symbol list for \`$output'" ++ ++ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" ++ ++ # Add our own program objects to the symbol list. ++ progfiles=`$echo "X$objs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` ++ for arg in $progfiles; do ++ $show "extracting global C symbols from \`$arg'" ++ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" ++ done ++ ++ if test -n "$exclude_expsyms"; then ++ $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' ++ $run eval '$mv "$nlist"T "$nlist"' ++ fi ++ ++ if test -n "$export_symbols_regex"; then ++ $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' ++ $run eval '$mv "$nlist"T "$nlist"' ++ fi ++ ++ # Prepare the list of exported symbols ++ if test -z "$export_symbols"; then ++ export_symbols="$output_objdir/$output.exp" ++ $run $rm $export_symbols ++ $run eval "sed -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' ++ else ++ $run eval "sed -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' ++ $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' ++ $run eval 'mv "$nlist"T "$nlist"' ++ fi ++ fi ++ ++ for arg in $dlprefiles; do ++ $show "extracting global C symbols from \`$arg'" ++ name=`echo "$arg" | sed -e 's%^.*/%%'` ++ $run eval 'echo ": $name " >> "$nlist"' ++ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" ++ done ++ ++ if test -z "$run"; then ++ # Make sure we have at least an empty file. ++ test -f "$nlist" || : > "$nlist" ++ ++ if test -n "$exclude_expsyms"; then ++ egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T ++ $mv "$nlist"T "$nlist" ++ fi ++ ++ # Try sorting and uniquifying the output. ++ if grep -v "^: " < "$nlist" | sort +2 | 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/$dlsyms"' ++ else ++ echo '/* NONE */' >> "$output_objdir/$dlsyms" ++ fi ++ ++ $echo >> "$output_objdir/$dlsyms" "\ ++ ++#undef lt_preloaded_symbols ++ ++#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[] = ++{\ ++" ++ ++ sed -n -e 's/^: \([^ ]*\) $/ {\"\1\", (lt_ptr_t) 0},/p' \ ++ -e 's/^. \([^ ]*\) \([^ ]*\)$/ {"\2", (lt_ptr_t) \&\2},/p' \ ++ < "$nlist" >> "$output_objdir/$dlsyms" ++ ++ $echo >> "$output_objdir/$dlsyms" "\ ++ {0, (lt_ptr_t) 0} ++}; ++ ++/* This works around a problem in FreeBSD linker */ ++#ifdef FREEBSD_WORKAROUND ++static const void *lt_preloaded_setup() { ++ return lt_preloaded_symbols; ++} ++#endif ++ ++#ifdef __cplusplus ++} ++#endif\ ++" ++ fi ++ ++ pic_flag_for_symtable= ++ 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*) ++ case "$compile_command " in ++ *" -static "*) ;; ++ *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; ++ esac ++ esac ++ ++ # Now compile the dynamic symbol file. ++ $show "(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" ++ $run eval '(cd $output_objdir && $C_compiler -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? ++ ++ # Clean up the generated files. ++ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" ++ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" ++ ++ # Transform the symbol file into the correct name. ++ compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` ++ ;; ++ *) ++ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 ++ exit 1 ++ ;; ++ esac ++ else ++ # We keep going just in case the user didn't refer to ++ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe ++ # really was required. ++ ++ # Nullify the symbol file. ++ compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` ++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` ++ fi ++ ++ if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; 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. ++ $show "$link_command" ++ $run eval "$link_command" ++ status=$? ++ ++ # Delete the generated files. ++ if test -n "$dlsyms"; then ++ $show "$rm $output_objdir/${outputname}S.${objext}" ++ $run $rm "$output_objdir/${outputname}S.${objext}" ++ fi ++ ++ exit $status ++ fi ++ ++ if test -n "$shlibpath_var"; then ++ # We should set the shlibpath_var ++ rpath= ++ for dir in $temp_rpath; do ++ case "$dir" in ++ [\\/]* | [A-Za-z]:[\\/]*) ++ # Absolute path. ++ rpath="$rpath$dir:" ++ ;; ++ *) ++ # Relative path: add a thisdir entry. ++ rpath="$rpath\$thisdir/$dir:" ++ ;; ++ esac ++ done ++ temp_rpath="$rpath" ++ fi ++ ++ if test -n "$compile_shlibpath$finalize_shlibpath"; then ++ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" ++ fi ++ if test -n "$finalize_shlibpath"; then ++ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" ++ fi ++ ++ compile_var= ++ finalize_var= ++ if test -n "$runpath_var"; then ++ if test -n "$perm_rpath"; then ++ # We should set the runpath_var. ++ rpath= ++ for dir in $perm_rpath; do ++ 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\" " ++ fi ++ 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" ++ ++ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 ++ $echo "$modename: \`$output' will be relinked during installation" 1>&2 ++ 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'` ++ else ++ # fast_install is set to needless ++ relink_command= ++ fi ++ else ++ link_command="$compile_var$compile_command$compile_rpath" ++ relink_command="$finalize_var$finalize_command$finalize_rpath" ++ 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. ++ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname ++ ++ $show "$link_command" ++ $run eval "$link_command" || exit $? ++ ++ # Now create the wrapper script. ++ $show "creating $output" ++ ++ # Quote the relink command for shipping. ++ if test -n "$relink_command"; then ++ relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` ++ fi ++ ++ # Quote $echo for shipping. ++ if test "X$echo" = "X$SHELL $0 --fallback-echo"; then ++ case "$0" in ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; ++ *) qecho="$SHELL `pwd`/$0 --fallback-echo";; ++ esac ++ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` ++ else ++ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` ++ fi ++ ++ # Only actually do things if our run command is non-null. ++ if test -z "$run"; then ++ # win32 will think the script is a binary if it has ++ # a .exe suffix, so we strip it off here. ++ case $output in ++ *.exe) output=`echo $output|sed 's,.exe$,,'` ;; ++ esac ++ $rm $output ++ trap "$rm $output; exit 1" 1 2 15 ++ ++ $echo > $output "\ ++#! $SHELL ++ ++# $output - temporary wrapper script for $objdir/$outputname ++# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP ++# ++# 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' ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi ++ ++relink_command=\"$relink_command\" ++ ++# This environment variable determines our operation mode. ++if test \"\$libtool_install_magic\" = \"$magic\"; then ++ # install mode needs the following variable: ++ link_against_libtool_libs='$link_against_libtool_libs' ++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 "\ ++ ++ # Find the directory that this script lives in. ++ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` ++ test \"x\$thisdir\" = \"x\$file\" && thisdir=. ++ ++ # Follow symbolic links until we get to the real thisdir. ++ file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` ++ while test -n \"\$file\"; do ++ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` ++ ++ # If there was a directory component, then change thisdir. ++ if test \"x\$destdir\" != \"x\$file\"; then ++ case \"\$destdir\" in ++ [\\/]* | [A-Za-z]:[\\/]*) thisdir=\"\$destdir\" ;; ++ *) thisdir=\"\$thisdir/\$destdir\" ;; ++ esac ++ fi ++ ++ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` ++ file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` ++ done ++ ++ # Try to get the absolute directory name. ++ absdir=\`cd \"\$thisdir\" && pwd\` ++ test -n \"\$absdir\" && thisdir=\"\$absdir\" ++" ++ ++ if test "$fast_install" = yes; then ++ echo >> $output "\ ++ program=lt-'$outputname' ++ progdir=\"\$thisdir/$objdir\" ++ ++ if test ! -f \"\$progdir/\$program\" || \\ ++ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | sed 1q\`; \\ ++ test \"X\$file\" != \"X\$progdir/\$program\"; }; then ++ ++ file=\"\$\$-\$program\" ++ ++ if test ! -d \"\$progdir\"; then ++ $mkdir \"\$progdir\" ++ else ++ $rm \"\$progdir/\$file\" ++ fi" ++ ++ echo >> $output "\ ++ ++ # relink executable if necessary ++ if test -n \"\$relink_command\"; then ++ if (cd \"\$thisdir\" && eval \$relink_command); then : ++ else ++ $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 >> $output "\ ++ program='$outputname$exeext' ++ progdir=\"\$thisdir/$objdir\" ++" ++ fi ++ ++ echo >> $output "\ ++ ++ if test -f \"\$progdir/\$program\"; then" ++ ++ # 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\" ++ ++ # 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/::*\$//'\` ++ ++ export $shlibpath_var ++" ++ fi ++ ++ # 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 ++ ++ $echo >> $output "\ ++ if test \"\$libtool_execute_magic\" != \"$magic\"; then ++ # Run the actual program with our arguments. ++" ++ case $host in ++ *-*-cygwin* | *-*-mingw | *-*-os2*) ++ # win32 systems need to use the prog path for dll ++ # lookup to work ++ $echo >> $output "\ ++ exec \$progdir\\\\\$program \${1+\"\$@\"} ++" ++ ;; ++ *) ++ $echo >> $output "\ ++ # Export the path to the program. ++ PATH=\"\$progdir:\$PATH\" ++ export PATH ++ ++ exec \$program \${1+\"\$@\"} ++" ++ ;; ++ 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 ++ fi ++ exit 0 ++ ;; ++ esac ++ ++ # See if we need to build an old-fashioned archive. ++ for oldlib in $oldlibs; do ++ ++ if test "$build_libtool_libs" = convenience; then ++ oldobjs="$libobjs_save" ++ addlibs="$convenience" ++ build_libtool_libs=no ++ else ++ if test "$build_libtool_libs" = module; then ++ oldobjs="$libobjs_save" ++ build_libtool_libs=no ++ else ++ oldobjs="$objs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` ++ fi ++ addlibs="$old_convenience" ++ fi ++ ++ if test -n "$addlibs"; then ++ gentop="$output_objdir/${outputname}x" ++ $show "${rm}r $gentop" ++ $run ${rm}r "$gentop" ++ $show "mkdir $gentop" ++ $run mkdir "$gentop" ++ status=$? ++ if test $status -ne 0 && test ! -d "$gentop"; then ++ exit $status ++ fi ++ generated="$generated $gentop" ++ ++ # Add in members from convenience archives. ++ for xlib in $addlibs; do ++ # Extract the objects. ++ case "$xlib" in ++ [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; ++ *) xabs=`pwd`"/$xlib" ;; ++ esac ++ xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` ++ xdir="$gentop/$xlib" ++ ++ $show "${rm}r $xdir" ++ $run ${rm}r "$xdir" ++ $show "mkdir $xdir" ++ $run mkdir "$xdir" ++ status=$? ++ if test $status -ne 0 && test ! -d "$xdir"; then ++ exit $status ++ fi ++ $show "(cd $xdir && $AR x $xabs)" ++ $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? ++ ++ oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` ++ done ++ fi ++ ++ # Do each command in the archive commands. ++ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then ++ eval cmds=\"$old_archive_from_new_cmds\" ++ else ++ # Ensure that we have .o objects in place incase we decided ++ # not to build a shared library, and have fallen back to building ++ # static libs even though --disable-static was passed! ++ for oldobj in $oldobjs; do ++ if test ! -f $oldobj; then ++ obj=`$echo "X$oldobj" | $Xsed -e "$o2lo"` ++ $show "${LN_S} $obj $oldobj" ++ $run ${LN_S} $obj $oldobj || exit $? ++ fi ++ done ++ ++ eval cmds=\"$old_archive_cmds\" ++ fi ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ done ++ ++ if test -n "$generated"; then ++ $show "${rm}r$generated" ++ $run ${rm}r$generated ++ fi ++ ++ # Now create the libtool archive. ++ case "$output" in ++ *.la) ++ old_library= ++ test "$build_old_libs" = yes && old_library="$libname.$libext" ++ $show "creating $output" ++ ++ if test -n "$xrpath"; then ++ temp_xrpath= ++ for libdir in $xrpath; do ++ temp_xrpath="$temp_xrpath -R$libdir" ++ done ++ dependency_libs="$temp_xrpath $dependency_libs" ++ fi ++ ++ # Only create the output if not a dry run. ++ if test -z "$run"; then ++ for installed in no yes; do ++ if test "$installed" = yes; then ++ if test -z "$install_libdir"; then ++ break ++ fi ++ output="$output_objdir/$outputname"i ++ fi ++ $rm $output ++ $echo > $output "\ ++# $outputname - a libtool library file ++# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP ++# ++# Please DO NOT delete this file! ++# It is necessary for linking the library. ++ ++# The name that we can dlopen(3). ++dlname='$dlname' ++ ++# Names of this library. ++library_names='$library_names' ++ ++# The name of the static archive. ++old_library='$old_library' ++ ++# Libraries that this one depends upon. ++dependency_libs='$dependency_libs' ++ ++# Version information for $libname. ++current=$current ++age=$age ++revision=$revision ++ ++# Is this an already installed library? ++installed=$installed ++ ++# Directory that this library needs to be installed in: ++libdir='$install_libdir'\ ++" ++ done ++ fi ++ ++ # Do a symbolic link so that the libtool archive can be found in ++ # LD_LIBRARY_PATH before the program is installed. ++ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" ++ $run eval "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" || exit $? ++ ;; ++ esac ++ exit 0 ++ ;; ++ ++ # libtool install mode ++ install) ++ modename="$modename: install" ++ ++ # There may be an optional sh(1) argument at the beginning of ++ # install_prog (especially on Windows NT). ++ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh; then ++ # Aesthetically quote it. ++ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` ++ case "$arg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ arg="\"$arg\"" ++ ;; ++ esac ++ install_prog="$arg " ++ arg="$1" ++ shift ++ else ++ install_prog= ++ arg="$nonopt" ++ fi ++ ++ # The real first argument should be the name of the installation program. ++ # Aesthetically quote it. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case "$arg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ arg="\"$arg\"" ++ ;; ++ esac ++ install_prog="$install_prog$arg" ++ ++ # We need to accept at least all the BSD install flags. ++ dest= ++ files= ++ opts= ++ prev= ++ install_type= ++ isdir=no ++ stripme= ++ for arg ++ do ++ if test -n "$dest"; then ++ files="$files $dest" ++ dest="$arg" ++ continue ++ fi ++ ++ case "$arg" in ++ -d) isdir=yes ;; ++ -f) prev="-f" ;; ++ -g) prev="-g" ;; ++ -m) prev="-m" ;; ++ -o) prev="-o" ;; ++ -s) ++ stripme=" -s" ++ continue ++ ;; ++ -*) ;; ++ ++ *) ++ # If the previous option needed an argument, then skip it. ++ if test -n "$prev"; then ++ prev= ++ else ++ dest="$arg" ++ continue ++ fi ++ ;; ++ esac ++ ++ # Aesthetically quote the argument. ++ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` ++ case "$arg" in ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ arg="\"$arg\"" ++ ;; ++ esac ++ install_prog="$install_prog $arg" ++ done ++ ++ if test -z "$install_prog"; then ++ $echo "$modename: you must specify an install program" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ if test -n "$prev"; then ++ $echo "$modename: the \`$prev' option requires an argument" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ if test -z "$files"; then ++ if test -z "$dest"; then ++ $echo "$modename: no file or destination specified" 1>&2 ++ else ++ $echo "$modename: you must specify a destination" 1>&2 ++ fi ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ # Strip any trailing slash from the destination. ++ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` ++ ++ # Check to see that the destination is a directory. ++ test -d "$dest" && isdir=yes ++ if test "$isdir" = yes; then ++ destdir="$dest" ++ destname= ++ else ++ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$destdir" = "X$dest" && destdir=. ++ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` ++ ++ # Not a directory, so check to see that there is only one file specified. ++ set dummy $files ++ if test $# -gt 2; then ++ $echo "$modename: \`$dest' is not a directory" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ fi ++ case "$destdir" in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; ++ *) ++ for file in $files; do ++ case "$file" in ++ *.lo) ;; ++ *) ++ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ ;; ++ esac ++ done ++ ;; ++ esac ++ ++ # This variable tells wrapper scripts just to set variables rather ++ # than running their programs. ++ libtool_install_magic="$magic" ++ ++ staticlibs= ++ future_libdirs= ++ current_libdirs= ++ for file in $files; do ++ ++ # Do each installation. ++ case "$file" in ++ *.a | *.lib) ++ # Do the static libraries later. ++ staticlibs="$staticlibs $file" ++ ;; ++ ++ *.la) ++ # Check to see that this really is a libtool archive. ++ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ else ++ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ library_names= ++ old_library= ++ # If there is no directory component, then add one. ++ case "$file" in ++ */* | *\\*) . $file ;; ++ *) . ./$file ;; ++ esac ++ ++ # Add the libdir to current_libdirs if it is the destination. ++ if test "X$destdir" = "X$libdir"; then ++ case "$current_libdirs " in ++ *" $libdir "*) ;; ++ *) current_libdirs="$current_libdirs $libdir" ;; ++ esac ++ else ++ # Note the libdir as a future libdir. ++ case "$future_libdirs " in ++ *" $libdir "*) ;; ++ *) future_libdirs="$future_libdirs $libdir" ;; ++ esac ++ fi ++ ++ dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" ++ test "X$dir" = "X$file/" && dir= ++ dir="$dir$objdir" ++ ++ # See the names of the shared library. ++ set dummy $library_names ++ if test -n "$2"; then ++ realname="$2" ++ shift ++ shift ++ ++ # Install the shared library and build the symlinks. ++ $show "$install_prog$stripme $dir/$realname $destdir/$realname" ++ $run eval "$install_prog$stripme $dir/$realname $destdir/$realname" || exit $? ++ ++ if test $# -gt 0; then ++ # Delete the old symlinks, and create new ones. ++ for linkname ++ do ++ if test "$linkname" != "$realname"; then ++ $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" ++ $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" ++ fi ++ done ++ fi ++ ++ # Do each command in the postinstall commands. ++ lib="$destdir/$realname" ++ eval cmds=\"$postinstall_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ fi ++ ++ # Install the pseudo-library for information purposes. ++ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ instname="$dir/$name"i ++ $show "$install_prog $instname $destdir/$name" ++ $run eval "$install_prog $instname $destdir/$name" || exit $? ++ ++ # Maybe install the static library, too. ++ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ++ ;; ++ ++ *.lo) ++ # Install (i.e. copy) a libtool object. ++ ++ # Figure out destination file name, if it wasn't already specified. ++ if test -n "$destname"; then ++ destfile="$destdir/$destname" ++ else ++ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ destfile="$destdir/$destfile" ++ fi ++ ++ # Deduce the name of the destination old-style object file. ++ case "$destfile" in ++ *.lo) ++ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` ++ ;; ++ *.o | *.obj) ++ staticdest="$destfile" ++ destfile= ++ ;; ++ *) ++ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ # Install the libtool object if requested. ++ if test -n "$destfile"; then ++ $show "$install_prog $file $destfile" ++ $run eval "$install_prog $file $destfile" || exit $? ++ fi ++ ++ # 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"` ++ ++ $show "$install_prog $staticobj $staticdest" ++ $run eval "$install_prog \$staticobj \$staticdest" || exit $? ++ fi ++ exit 0 ++ ;; ++ ++ *) ++ # Figure out destination file name, if it wasn't already specified. ++ if test -n "$destname"; then ++ destfile="$destdir/$destname" ++ else ++ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ destfile="$destdir/$destfile" ++ fi ++ ++ # Do a test to see if this is really a libtool program. ++ if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ link_against_libtool_libs= ++ relink_command= ++ ++ # If there is no directory component, then add one. ++ case "$file" in ++ */* | *\\*) . $file ;; ++ *) . ./$file ;; ++ esac ++ ++ # Check the variables that should have been set. ++ if test -z "$link_against_libtool_libs"; then ++ $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 ++ exit 1 ++ fi ++ ++ finalize=yes ++ for lib in $link_against_libtool_libs; do ++ # Check to see that each library is installed. ++ libdir= ++ if test -f "$lib"; then ++ # If there is no directory component, then add one. ++ case "$lib" in ++ */* | *\\*) . $lib ;; ++ *) . ./$lib ;; ++ esac ++ fi ++ libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" ++ if test -n "$libdir" && test ! -f "$libfile"; then ++ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 ++ finalize=no ++ fi ++ done ++ ++ outputname= ++ if test "$fast_install" = no && test -n "$relink_command"; then ++ if test "$finalize" = yes && test -z "$run"; then ++ tmpdir="/tmp" ++ test -n "$TMPDIR" && tmpdir="$TMPDIR" ++ tmpdir="$tmpdir/libtool-$$" ++ if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : ++ else ++ $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 ++ continue ++ fi ++ outputname="$tmpdir/$file" ++ # Replace the output file specification. ++ relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` ++ ++ $show "$relink_command" ++ if $run eval "$relink_command"; then : ++ else ++ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 ++ ${rm}r "$tmpdir" ++ continue ++ fi ++ file="$outputname" ++ else ++ $echo "$modename: warning: cannot relink \`$file'" 1>&2 ++ fi ++ else ++ # Install the binary that we compiled earlier. ++ file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` ++ fi ++ fi ++ ++ $show "$install_prog$stripme $file $destfile" ++ $run eval "$install_prog\$stripme \$file \$destfile" || exit $? ++ test -n "$outputname" && ${rm}r "$tmpdir" ++ ;; ++ esac ++ done ++ ++ for file in $staticlibs; do ++ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ ++ # Set up the ranlib parameters. ++ oldlib="$destdir/$name" ++ ++ $show "$install_prog $file $oldlib" ++ $run eval "$install_prog \$file \$oldlib" || exit $? ++ ++ # Do each command in the postinstall commands. ++ eval cmds=\"$old_postinstall_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || exit $? ++ done ++ IFS="$save_ifs" ++ done ++ ++ if test -n "$future_libdirs"; then ++ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 ++ fi ++ ++ if test -n "$current_libdirs"; then ++ # Maybe just do a dry run. ++ test -n "$run" && current_libdirs=" -n$current_libdirs" ++ exec $SHELL $0 --finish$current_libdirs ++ exit 1 ++ fi ++ ++ exit 0 ++ ;; ++ ++ # libtool finish mode ++ finish) ++ modename="$modename: finish" ++ libdirs="$nonopt" ++ admincmds= ++ ++ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then ++ for dir ++ do ++ libdirs="$libdirs $dir" ++ done ++ ++ for libdir in $libdirs; do ++ if test -n "$finish_cmds"; then ++ # Do each command in the finish commands. ++ eval cmds=\"$finish_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" || admincmds="$admincmds ++ $cmd" ++ done ++ IFS="$save_ifs" ++ fi ++ if test -n "$finish_eval"; then ++ # Do the single finish_eval. ++ eval cmds=\"$finish_eval\" ++ $run eval "$cmds" || admincmds="$admincmds ++ $cmds" ++ fi ++ done ++ fi ++ ++ # Exit here if they wanted silent mode. ++ test "$show" = : && exit 0 ++ ++ 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 \`-LLIBDIR'" ++ echo "flag during linking and do at least one of the following:" ++ if test -n "$shlibpath_var"; then ++ echo " - add LIBDIR to the \`$shlibpath_var' environment variable" ++ echo " during execution" ++ fi ++ if test -n "$runpath_var"; then ++ echo " - add LIBDIR to the \`$runpath_var' environment variable" ++ echo " during linking" ++ fi ++ if test -n "$hardcode_libdir_flag_spec"; then ++ libdir=LIBDIR ++ eval flag=\"$hardcode_libdir_flag_spec\" ++ ++ echo " - use the \`$flag' linker flag" ++ fi ++ if test -n "$admincmds"; then ++ echo " - have your system administrator run these commands:$admincmds" ++ fi ++ if test -f /etc/ld.so.conf; then ++ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" ++ fi ++ echo ++ echo "See any operating system documentation about shared libraries for" ++ echo "more information, such as the ld(1) and ld.so(8) manual pages." ++ echo "----------------------------------------------------------------------" ++ exit 0 ++ ;; ++ ++ # libtool execute mode ++ execute) ++ modename="$modename: execute" ++ ++ # The first argument is the command name. ++ cmd="$nonopt" ++ if test -z "$cmd"; then ++ $echo "$modename: you must specify a COMMAND" 1>&2 ++ $echo "$help" ++ exit 1 ++ fi ++ ++ # Handle -dlopen flags immediately. ++ for file in $execute_dlfiles; do ++ if test ! -f "$file"; then ++ $echo "$modename: \`$file' is not a file" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ dir= ++ case "$file" in ++ *.la) ++ # Check to see that this really is a libtool archive. ++ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : ++ else ++ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ # Read the libtool library. ++ dlname= ++ library_names= ++ ++ # If there is no directory component, then add one. ++ case "$file" in ++ */* | *\\*) . $file ;; ++ *) . ./$file ;; ++ esac ++ ++ # Skip this library if it cannot be dlopened. ++ if test -z "$dlname"; then ++ # Warn if it was a shared library. ++ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" ++ continue ++ fi ++ ++ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$dir" = "X$file" && dir=. ++ ++ if test -f "$dir/$objdir/$dlname"; then ++ dir="$dir/$objdir" ++ else ++ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 ++ exit 1 ++ fi ++ ;; ++ ++ *.lo) ++ # Just add the directory containing the .lo file. ++ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$dir" = "X$file" && dir=. ++ ;; ++ ++ *) ++ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 ++ 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 ++ -*) ;; ++ *) ++ # Do a test to see if this is really a libtool program. ++ if (sed -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ # If there is no directory component, then add one. ++ case "$file" in ++ */* | *\\*) . $file ;; ++ *) . ./$file ;; ++ esac ++ ++ # Transform arg to wrapped name. ++ file="$progdir/$program" ++ fi ++ ;; ++ esac ++ # Quote arguments (to preserve shell metacharacters). ++ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` ++ args="$args \"$file\"" ++ done ++ ++ if test -z "$run"; then ++ # Export the shlibpath_var. ++ eval "export $shlibpath_var" ++ ++ # Restore saved enviroment 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 ++ ++ # Now actually exec the command. ++ eval "exec \$cmd$args" ++ ++ $echo "$modename: cannot exec \$cmd$args" ++ exit 1 ++ else ++ # Display what would be done. ++ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" ++ $echo "export $shlibpath_var" ++ $echo "$cmd$args" ++ exit 0 ++ fi ++ ;; ++ ++ # libtool uninstall mode ++ uninstall) ++ modename="$modename: uninstall" ++ rm="$nonopt" ++ files= ++ ++ for arg ++ do ++ case "$arg" in ++ -*) rm="$rm $arg" ;; ++ *) files="$files $arg" ;; ++ esac ++ done ++ ++ if test -z "$rm"; then ++ $echo "$modename: you must specify an RM program" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ for file in $files; do ++ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` ++ test "X$dir" = "X$file" && dir=. ++ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` ++ ++ rmfiles="$file" ++ ++ case "$name" in ++ *.la) ++ # Possibly a libtool archive, so verify it. ++ if (sed -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then ++ . $dir/$name ++ ++ # Delete the libtool libraries and symlinks. ++ for n in $library_names; do ++ rmfiles="$rmfiles $dir/$n" ++ done ++ test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" ++ ++ $show "$rm $rmfiles" ++ $run $rm $rmfiles ++ ++ if test -n "$library_names"; then ++ # Do each command in the postuninstall commands. ++ eval cmds=\"$postuninstall_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" ++ done ++ IFS="$save_ifs" ++ fi ++ ++ if test -n "$old_library"; then ++ # Do each command in the old_postuninstall commands. ++ eval cmds=\"$old_postuninstall_cmds\" ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS='~' ++ for cmd in $cmds; do ++ IFS="$save_ifs" ++ $show "$cmd" ++ $run eval "$cmd" ++ done ++ IFS="$save_ifs" ++ fi ++ ++ # FIXME: should reinstall the best remaining shared library. ++ fi ++ ;; ++ ++ *.lo) ++ if test "$build_old_libs" = yes; then ++ oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` ++ rmfiles="$rmfiles $dir/$oldobj" ++ fi ++ $show "$rm $rmfiles" ++ $run $rm $rmfiles ++ ;; ++ ++ *) ++ $show "$rm $rmfiles" ++ $run $rm $rmfiles ++ ;; ++ esac ++ done ++ exit 0 ++ ;; ++ ++ "") ++ $echo "$modename: you must specify a MODE" 1>&2 ++ $echo "$generic_help" 1>&2 ++ exit 1 ++ ;; ++ esac ++ ++ $echo "$modename: invalid operation mode \`$mode'" 1>&2 ++ $echo "$generic_help" 1>&2 ++ exit 1 ++fi # test -z "$show_help" ++ ++# We need to display help for each of the modes. ++case "$mode" in ++"") $echo \ ++"Usage: $modename [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 ++ --finish same as \`--mode=finish' ++ --help display this help message and exit ++ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] ++ --quiet same as \`--silent' ++ --silent don't print informational messages ++ --version print version information ++ ++MODE must be one of the following: ++ ++ 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. Try \`$modename --help --mode=MODE' for ++a more detailed description of MODE." ++ exit 0 ++ ;; ++ ++compile) ++ $echo \ ++"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE ++ ++Compile a source file into a libtool library object. ++ ++This mode accepts the following additional options: ++ ++ -o OUTPUT-FILE set the output file name to OUTPUT-FILE ++ -static always build a \`.o' file suitable for static linking ++ ++COMPILE-COMMAND is a command to be used in creating a \`standard' object file ++from the given SOURCEFILE. ++ ++The output file name is determined by removing the directory component from ++SOURCEFILE, then substituting the C source code suffix \`.c' with the ++library object suffix, \`.lo'." ++ ;; ++ ++execute) ++ $echo \ ++"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... ++ ++Automatically set library path, then run a program. ++ ++This mode accepts the following additional options: ++ ++ -dlopen FILE add the directory containing FILE to the library path ++ ++This mode sets the library path environment variable according to \`-dlopen' ++flags. ++ ++If any of the ARGS are libtool executable wrappers, then they are translated ++into their corresponding uninstalled binary, and any of their required library ++directories are added to the library path. ++ ++Then, COMMAND is executed, with ARGS as arguments." ++ ;; ++ ++finish) ++ $echo \ ++"Usage: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only ++BSD-compatible install options are recognized)." ++ ;; ++ ++link) ++ $echo \ ++"Usage: $modename [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-undefined declare that a library does not refer to external symbols ++ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects ++ -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 ++ -static do not do any dynamic linking of libtool libraries ++ -version-info CURRENT[:REVISION[:AGE]] ++ specify library version info [each variable defaults to 0] ++ ++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: $modename [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." ++ ;; ++ ++*) ++ $echo "$modename: invalid operation mode \`$mode'" 1>&2 ++ $echo "$help" 1>&2 ++ exit 1 ++ ;; ++esac ++ ++echo ++$echo "Try \`$modename --help' for more information about other modes." ++ ++exit 0 ++ ++# Local Variables: ++# mode:shell-script ++# sh-indentation:2 ++# End: +--- /dev/null ++++ jpeg-6b/testimg.uu +@@ -0,0 +1,873 @@ ++begin 664 testimg.gif ++M1TE&.#=AXP"5`/<``"PJ+&F/3)DN)4=;.)=43*#)F+R,>EI;F=%238.,O]T? ++M*7)83%TL)WRK8=`Y+L]S;=K.K#8[*Y&1='%U6YET9N\U,>+HR5-U1/-06)<\ ++M+6)"-4-`7W)UH)FNKU-99KJRI'23=$@_,KQ33+X[+6UG5J*+O=K3V(5`,M!$ ++M/=%B77-VQ/LU6X=W9%E:.H^A=.+HW^:KIO9B9IBP?O/LW9AVGG.=5K2TZTY- ++M-_9R<:18>/H<-'5WJ(,Q*LG(L],]1F-U8%U./KX_1YV3V'F,9/!%1W5LF[E:>:>ADHEI ++M5IB^AKQR:?I4VL!@7]%(48^/W(A:3F)I9N`X,J>0 ++M?8=.1(2!JKTC)$A"/OEE=\UD@2PQ+&IIEV""2).@C_?O\?F!@^2-B>!33_DK ++M2;Y$-W!J>H>$S*A325]<2LV"@ZNOW3H_-7"#64]/2,[`LDMI//(Y0+R@D;UV ++MG>&BG+F-L5%.9=W`M)F`"M&(V+;YHAM$M*IIE@N'\Y4@T+V!;:_FQK+\Q*-_=W<]T ++MDJ-OA,^/BH5<;ON.D+>?O(>#<(FMA)\]0/>?HJ>MD5-1C'N!R,?6MWHMTU#:H"1?G6"=*EC6[R#H:A#-#^_ ++MN>$M+:AE?F&!8($Z+KY(1Z_3K*DQ)N%S)D=N!TBH9K?VJ/ ++M8_IU?][;QI2:S/'A\JBN^*:@Q:"C\5]W2KZ^O69JLK2Z_,$Q06\M+9>QE*63 ++MD:M58SIW>57+QH8BP`````XP"5```(_P#=K=FU:]>N7;MV[=JU:]>N ++M7;MV[=JU:]>N7;MV[=JU:]>N7;O$71%"A`@1(D0(-&C0W`@1XD:(&R$TA%"F[$09'[IT2:-#!X4T ++M%"CF18D2)4H40(```0($*`JV)2A&T!FA:P0=>'3@Z=*E*T.&##XR^#B1(<.) ++M#!DR^,B0(4,&'QE\9,B001<=.G1&T-'EHXRR$)MV[=JU:]H'GSH@"*$@40 ++M($"`L,5S@`(>'7ATX-&!ITL7/%T9=/GPD2'#B0P93F3(<"+#B0P93F3(X"-# ++M!A^H=.FB0X<.'5UW3BC;M"G$KCV[=NW:M6O7KEV[W.W:M6O-KC5KUKA;L\N= ++M.W?NW+G;M$F#LC($".2P1H.&&3.L.!R0)4M6'UF%.-69]/#ATZ=.;%PQ8E7I0H@``!B@(H2CP4(T;H&J%K ++M!#Q=(W3I@J-NS1IW:]SM7+W`%9LF3)*B2K#Z<=9B3,>F5J!PD\_WV,>##B;LV:-;ON7;MV[=KE;I.[7>YVN=NU:]YVN7/G;I>[7>YVN5NS ++M:]>N-;MV[=H58=>N71%V[=H58E>(""%"A`@1(D2($"%"A`B!!F"()AHT*#MQ ++M(DF&#/!TZ9(F#<62>/&B`(H"*`H@0(#BQ7-`9\0(72-TP=,%3Q<\'_!\9/"1 ++M(<.)#!E.9,@0[42&:!E.9,APPD<&'ZATT:%#AXX(701.:`BQ:=.>/9OV[-JU ++M:]>N7;MVK=FU9LV:76O6[%JS:]>N7>[[W.W:Y<[=+G?NW.URM\;=&G>[=NURM\O=+G>[UNS:M6O-KEV[=NW: ++MM2O"K@B[=H78%2)$B$TA-FW:%")$B!`W;H1HHF&9LA/1HF7(H$N7-#I?4,2+ ++M%R\*($"```&*`C`>"CHC=.F"IPO>"%WPX.G*`,]'A@P93F0XD>%$AA,9,IS( ++M<"+#B0P9?&3P`8\.G1%TZ-"Y;&(2HITS9LE';I`A18<[<*EFR9,F2)0O-AE^%.(D1 ++M(P;_CX<6'O`8P0,`P!IW:]:X6[/+W2YWN]SM&$CJX[99:%"+%KSZ8]F_;LVA5AUZY=N];L6K-FS9HU:]:LV;5FS:XUNW:Y ++M<^=NTR9+EC0H&R7E%BM?*LP=6"5+EBQ9&V1M0+/AUZ\^_WWZ].G3P@@>3@`` ++M`%CC;HV[->[6K'&WQIV[76ON")MV10BQ*\2N39LB;`H1(D*($#=" ++MW`BA08.&>B>B1/`R ++MZ,K@(\.)#!E.9#AQ(D.T#">B93B1X<2)##Y\9-!%APX=.M)$W`FS0,.>/2%V ++M`=RT:]>N7;MVK8FP9M>:-6LBK%D38P7,&`>\.#!`P#`&@``UNQ:X\X=@%WN ++MW+E;X\Z=.P#NUK@#X&Z-.P#N`+A;X\Z=.W?N`+@#X&Z-NS7NW*UQMV;7+G<1 ++MW.U:LVO-KEV[=D78M6O7KEV;=FW:%2'$IDTA0H0($2)$B!`A-&C04*]>M"31 ++M?/C0I8N.M"\HXL6+4B%*A7@HZ.B"ITL7/%VZ=.G*H,M'A@P9,IS(<"+#B0S1 ++M,D0[D2':B6C1HITX<<*'+EU.Z#B1)JU6K1X+\/3YM2O$KCV[]NS:M2O"FC41 ++MUD18LV;-FC5KUJS9M6;-KEUK`.YRM\N=NTV;T&@8(J02&#NL5)@[($O6A@T; ++M-OS:\*O_#S`/'CP`\X"G!1X\:P"L`;`&P!H`:]:X6[-F#0!W`-8`<`<`@+LU ++M[@``<`?`'0``[M8`6`/`W1IW[MRM<>=NC3MW`-RM<;?&W2YWN];LVK5KUZY= ++MNW9MVK4KPJ9=FW9MBK`I1(@0(="$T!#"DB5+]>I%BY8A0P8?NG31H4,G7KQX ++M4>+%BX=BA"X?NC+HR@`O`[P,&3)DR)#A1(83)TZYV[=JU:]>N7;LV1=BT:].N ++M39LV;0H1(D2($"$LA;!4KUZT:-%.9,@`3YBG8@6[42T$R=.G#CAPX>N.[KHB+CSS]JA ++M0RPF'`'6YP::/2$B[%H38.CPP^=&7(D"%#A@P9,F3(D.'$ ++MB1,9HIV(%BU#M&@GHD4[<>*$CQ,$?/BX(^V.B%K6Z)%Y18N6F"-]?MU`LR?" ++MKC6[UNQ:L\;=FEUK=JW9M6;-FC5K=JU9XV[-FEWNW.W:A(;3CE=(8'U+P"J! ++MKUD):-'R!8W_UBQ<2$XAP35K%I,C+5K@60-@S1H`:P"L<;?&'0``[@`````` ++M````````````````````````````````<`?`'4``:]RM<0=@C;LU[M:X6^-N ++MC;LU[M:XV[5KUZY=NW9MVK5IUZ9=FW9MVA1BTZ80FT)LVF3)4KUHT:*=R)#! ++M1P8?NG31H4,'`0H1='3IRN`C@X\,&71ER)`A0X8,)S)$RQ`M0[0,T:)%BQ8M ++MVHEH)TZ4.5'&AZX[NNZPJT6/C(M7N&C1$@.L3Y]?:/9$6+-KS9HU`-:L<;<& ++MP)HU[M:X6^-NS1IW:]RM<>?.W:Y=-X[02O`*"9($"9!T0-(!"1)<_TAF<4&B ++M3ITZ)+AFT?+0HDF+-6O6`%CC;HV[-0#6`%@#```````````````````````` ++M``````````````````#6``"PQMT:`.[6N%OC#@``=P``N%OC;I>[79MV;=JU ++M">"N7;LV[=JT:].N$)LVA0BQ*<2F398L6:H7[42&##Y09[6N%NS ++M:XV[7>[9(BSZ_\.W9LVN-NS4`W*UQYVZ-.W<`W*UQMV:7.W=KUJQQY\Z=NUTWCO"9 ++MY<8-$B2G.A10I$C_D:("!4YU>'1*W:E3LT`P:7&CQ8TU:P"L6;-FS1IW[M:L ++M<;=FC;LU````````````````````````````````````````6`/`W1H`[@`` ++M<`<```!W`-RM<;=FE[M=FW9MVK5IUZY=FW;QV+5KTZY=N_;LV15BTZ9-FRQ9 ++MJAN%CTR;F2<.H5KUBQ:$Y@<`0;LQIX]$7;M ++M`N#.G3MW[MRY`^`.@#L`[@"L<0?`'0!W[MRYBX"O!9]9+MS@PN7&2H$"_].F ++M32M@Y=2I4Z=.G<(UBQL38#>RW`"P9LV:76ON3;MV;=KE;M,N=YMV;=H58M>N/;OV[-JTB8$E2_7J13MQXH2/$R[6N'/GSIV["%E:\($RRX4;7*<>%?\H4*!`@0*/3IUZ=.K4*2[< ++M:!T!EN4&FEUKW*U9XV[-KC6[=NW:M/!@8$F#LF@G3IS(D"%#M`P9?&3PD2%#A@P9 ++M3F2(=N)$M!,G,D3+$"U:M&C1E-53IJS>B6@GRI0I4Z9,&1\$>FP[9,H%+C>G ++MW)Q"@HL+"&[0F%PX<@38C1`1=KESY\Z=.P````(```"`.P#NW+ES!\`=``#N ++MW*UQ%Z$%'R@N7+AP<0K_UR,K!:P\.G7JU*E3N$[AF@6%R1%@-[*$6+-FS:XU ++MN];LVK5KUZY=NW;MM7CUET>K54W;BQ(DR97;O6[%JS:]>:"+LB[(JP:]>N ++M7>YVN=NUR]T:=VOYV[=JT:]>F79LB;-H58M>F7;LVN=NU:]>F79MX;.+!8Q,/=YO<;=K$P)*E ++M>LKJG3AQ(D.T:!E.G#CAXX2/$QE.G#AQXL2):!FB98@6+5JT$]&415-V0EFT ++M:"?*E#E1IDP9'P0RL3`U"Q>N4Z=.G4*""Q<(;MR@08,&[<(18+_P15@#```` ++M``#<`7`'P!T`````````8`V`76L``(AP8P(4*/Z0X?_"A0S7NU.G&IQJ@.L4 ++MEP:XN,RBQ40,L%\A(NQ:LVO-+H"[(NS:M2O"K@B[=NW:M6M7!'>[W+G;Y/#@L6O7KDT\&%BR5*]>M&C1HF4X<>+$ ++MB1,G3IPX<>+$B0S13B3)$"U:M&C13BB+%JU>M'K*3B@[4>9$F3)ERI0)$Z8* ++M!5-09N'"=_;L"A%AUZ9=NW;MVK5KUZY=NW:M<;?&'4!W[MRY<^<. ++M@#MW[G:Y6[-KUYI=NW:MV;7+781=FW9MVA0AQ*80(3;MV11BUZ9=FW9M/9OV;(JP:5.$7;MV[=JU:]>N7;O$-;MV[5JS ++M:]>N7;MV;8JP"6"$$)M"A-@5(D2($)M"[-JT:].N3;LV[=JT:=,F!CP8;-H4 ++M(D*$39M",+!D*5V]:$FB)8D6K=Z):&5.G#AQXL2)$]$R1$L2+5JT:">414N2 ++MA,"=$]%.E%FV;-FR,F7"A"$Q80(+"H&R$B\'#GSIT[`````%@#``````#W;MV;,KQ)X-NT+L"A$BQ)Y->S;M0K,KQ*X0NW:Y ++MV[1KUZY=NR*XV[5KUZY=NR+LVK5KUYY-(4+L"K$K1(@0(4*$"!$B1(@0(7:% ++MV!5B5XA=(7:%V+4'S:80(4)LVK3)TJ80(2Q9JA`C6K0D)S*< ++M`)@AVHEHT4XH.Z%,F;)HT:(E$:`+#JE_/LHH6[:L28L%"\)4F<""PC\O11#( ++MJ59-E`%[9,A(.$1&@@0)$F;-H@5EPH1[>&Z$8+!I$X]=N]RYV^5NDSL>/'CP ++M"-$"#XDC_Q,F\.'#)P"W&B!J<*G!A1L7+KBX@``!`@04:-`N`+N!)L2>/;OV ++M[-FS9\^N#2'VA`B!9D.(#2'VA$`3(D2(/2$V[=D4(L2F79LV;=JU:5>$7;LB ++M[(JP:U>$/;OV[(JP*4*($"%"A`@1(D0(2VA";`JQ*<2F$+M"[`JQ*\0N-&@V ++MH;&TR9(E2Y88,*A73UD9'SX(H$*%RL>=.^S8W4&5`56&$P*B)3EQ0IDR9_=(`%QPKTJ5'O\>R(FW90Z@?1BNX>#%BU<<2I0H ++M43)`A@R90X<.5>E1IHPR9>D86.+!@T>(39LV;>+ACLOQ+(6?>G#ESYLR9$R4*!CG7Y!P[]N#!@PW9MBK`IQ*X0(4*$T!`B1`@- ++M(4)L"A%BTYY-(?9LVA-BCX9-Z5"Q*S(E!2H?!'R($(%`FBX?J.#!@T<-GBYX ++M&3+`TT5'%S543J2)T.4C6K1T29((-"$VH$$3`@V:$&A"H`F!!DV($"%";-JS*<2> ++M37M"A-@58M>N"+MV1=BU*<*N$+M"A`@1(D2($"$TA`BQ*02:32$VA=BS:4^( ++M/2%";&(0S5B1:QB,"'1TT=$%#QX\>/"H.4'G!)V3 ++M+\:,94B2)(.T(MC&8,/D8`0*$;4(+"!194*5*M8>8(BR#]"^*/M6[`.T8LZ* ++M.7,`K5BQ8L6*??NT:-&R;]\^+5JT8,&"!$I23LKEW#MN0, ++MM0P9,M"AL\0!/%WPX-%Q(DT$/%WPX,&#-V*$$Q1+1BS!)D<.G2\($,S#-L89 ++MIC&8EHR@(R+,LBI5PO2H]:!:%$"``$6)$B5*E"B`5LR9LV+%OA7[]NW;IV6? ++MEGU:M&C1LD^+EGU:L&BY=DV-L1,,&(1HN6& ++MRH"+LVK5GUYX((?;L0;,'S1XT:'ZA08,& ++M#4`T:&Z@08,&38@0(4*$"+$G1(@]F_:$V!5B5XA=NW9MBK`IPJX0$4*$"!$B ++M1(@0ED)H"!$B1(A-(3:%V+-I3X@]:#;5\V'L&C9LF#Q1HY9!0(81(]#!@P.`,,#;%>$7;OV[-JS:P^:/6C0H$&#!@T:-&A^H;F!!HT&-"'0A`@1 ++M(D2($"%";`H18E.(/9OV;-JS"^">71%"A-@5(D2($"$TA`@1(D2($)9";`JQ ++M:5>(72$BA-@3(D0Z=L:!DR9(`'+T,&>`+@P7-"!QX=7?`RC*!# ++MA\X(!V,4;-&Q9'*2(D^M,F7N_#N&(5Z4*-A0.*"# ++M0DZ4*"L``9H#"-"^%2M6K-BW;]^^?5JT:-FG99^6?5JT8,&2!DN::J"\G/^H ++MIVQ!%5/K`GTH5HQ8L7*3RDU*-,S$IRY=/IGH8L)$HF*J7M%BPN3"D2-'UNQ9 ++MLV?7KCV[]NS:@V8/&C1HT*"Y@>;W;MRX@>:&!C0:T*`)$2)$B!![-NW9 ++MM&?3GEV;(FR*L&M7B!`A0H0($4)#"`TA+(4(L2G$IA`A=H6(`#!"B`A[+$7S ++M4H0:-6K4J%'3I4L7/!_PJ&6`AXH:/#IT=,&#!P\>'6ET/(UP,,;9EBU;MFS9 ++M4F%,A3'.QHQQ,,:!`SHC'OR[1LP#!&@?H'U1`&D! ++MM`_0OA7[]NW;MV_?/BW[M&C!@D7+/BQITJ1)DZW_6K):818<6O>AW*1$B1(E ++M2I3(A(E/X,"]`#<#'+@NX$PD*D?LU2PF3)B(87)DUYI=N_;LVK,+S9X](?:@ ++M0?/KUPTT-]#T+L ++MVK,I1(@0(4*$"!$B1(@0FS9MVA0"S:X]>_9$"*'AGS1J\.!1HP8/'CQ=NN#! ++M@T>-&K4,\'2A`JA+%SQX\$;0H4/'TP@'#AR,<59ARY8M%;94&#-FC`,'F!QX ++M\D0'`0H$QXYAB%(!4)1X\9R,@.<$'H(O\>(!`@1H7Y0H4;3LV[=/BQ8M^_;M ++MTZ(%BQ8L6K! ++M@`/7I8N)1,46O:)%:P<46K36[%JS:]>N77MV[=JS)\0O-&ANH/F%Y@::&S=N ++MW.C3QPBG0H7ZH`D1(@2:$+LVA-BU:<^F/;MV[=JU:\^F/7OVA`@1(D0(#2%" ++MA`@18M.F39OV[-FS)\0F#67NP,M`+0.U#/`RP(-'9\0(:B/@P8,'#YXN.O!T ++MP1M!APZ=$9X<.'#@P,&8,6,J;-E2H<(8!P[&`!SCP(&#$2-0H$`0!4,40("B ++MQ(N'8L0(>/#@T9&&(!Z@*%&B1(FR+TJ4*/OV:=&R;]\^+5JT:,&B!E"M-#E&)-,P"N!?@P($#!PX<."!O@``!`@3(FQEOP'4QD8C8HE>S ++M9KV2(&&-NS6[UNS9M6O/GA![]J#9@P;-#30W;MRX<>/&C4*3$5EH ++M-H38L"G$KCV[]NP*L6O7KA"[]NP)L0M-B!`A-(0($2)$A!";0FS:M6L7FDV; ++M&*2+Y@,>-0'PX&40``\>/#JZ1HP8,0(>/'CPX,&#!X\.-3K24(SPY,"!`P=C ++M'(P94\'9E@I;G(UQX&#,F#'Q'#@8@<(!"A11HD2)$@4;"A0C1L"#!P\>'03Q ++M`,8#%"5*E'U1M$39IT6+EGU:M@D6+%BU8L&!)@T7_BQ8L\[Z`HJ2!A8%( ++M7=Z\`?+F#;@WX-X`>0,$"!`@0-X`>?/F#;@7P\H16[3(#3$WB]RM6;-KS:Y= ++MN_;LVK5G3XA?:-#<0'/CQHT;?=#TX52'EADS0H34&6*DD*P->S9LVK!KTYY= ++M(?;LVA-BSZ8](4*$"!$BA(80(4)$"!%ASZX0>W:%V,0C71)4J.!1@Z<+'CQX ++M&>#!@T=GQ`@4(^B,&`%O!+P1\$:,H(,"A2=/#APXS`!G(M&/#Q^(E?M!;-<:=VO>/;O0[`FQ!PV: ++M&S=N-+FAX881,1S,P((%"Y89%5*$<3(B2Q::/;MV[=JU:]>>77MVA8@0(D2( ++M$"%"A`@1(D2($)MV[=FS:T^(39;JH4*%"AX\7?!TP8,'#QZ\$2-&C'`P`L6( ++M$=1&C!@Q8L0(%",\>7+@P-F8,6/&5*C@;$N%+16O&NI.J4JD^Z9*$3@W@`!`N0-$"!`@``!`@0($(!`W@!Y\P;( ++MFQF?AB52DJA5(B62=NW:M6O-KC6[(NS:M2?"GCTAT*"YT4?#C1M]^GBH8P;6 ++M-TB,OCVQ8\>,$#9L.!4JA&;#GCV[]NS:M2M$A!`A0H0($>)&B!`A0H38M&?7 ++MGC41]KC;9$F9#U34X,&#IPL>/%TCX,$;,6($'0<.'(P8,<+3B!&>/*%`@>F, ++M`P>8QCAS5J&"LPI;*FS94F&,,P<.QF`:@\F!@S$H\LE!@8(."A0C1HP8,6+$ ++MB!%TZ(P8X>!+/#E1HD2)$@6#%BU:]FG9AT4+%BQ:L&#!@@7_"Q8L6K!@24.* ++M%)PI=_Z):M;E#1`@0(```0($"!`@0(```0($")`W;]Z`Z^+-A#<+GUZX:K5G ++MUZY=NW;MVK5K#\!=NT+L"8$&S8T036XTN:&ACY$Z9F`Q&A=N'"-&W\#`@N5+ ++M"(/`684*SBILV;)E ++MRY8*%9PY<.#`@0,'#C`Y<.!`CIQ\"%#0H3-BQ(@1U$:,&$$'!1T4*.9]F36GF7<-0Y%\>&(C>O`$" ++M!`@0($"``'D#!`@0($#>O'GS!EP7$Y^ZO)@Q0],G5R'V1-BU:\VN7;MV[=JS ++M*T2$$"%":+BAH8^&/K(XU3'SK4.X<.'"C1LW#B"C)]^^F?$E1IB'0H4*;=BP ++M(42$$"'PA<"7)<2O7WLV;"CD08PP,9P6-%%6IH>/#!ETC=`U0A>=$=1&C!CA ++MR8&#,0X<.,"TQ($#!P[B.<#D8,P8!V.<5=A28F#'Q\N'(%\59A0I;MFS9LF5+A0K.G&'"Y,"!`P<.'#APX&",@W@QY*"@ ++M,P+>B!$C1HP8@<(!"@1R$(R@\R5>O"@8,&#`H`4+%BU8M&#!@@7_"Y8T6-)@ ++MP8(E#9886*)HP8#EWS-1_1"]>0,$"!`@0(```?(&"!`@;X"\`=?%Q#`3,]X` ++M`0($"+]/(?:$V!4BPJX(NW;MVK5GUZ80(4*@T7"CCX8F?0H-X0`&4KAPY\Z% ++M.W?NG(UPX1@QLL.*@S!A!PYP6E5HPP8T>]"@0;,!31\/;#CX,E.)1JAG[-B) ++MD*9K!#QX\*C!@P/'BC1DSQH&S,?&B1!D#R($S!Y@P.8@2!5"%+5NV`-RR94N%"L[& ++M8,+DP($#!PX<.!CC`).#,0XPY$/A:<2($2-&>!KA8`0*%'(0H*`C+1Z">!CD ++MR)DG)U\^+%BP8/_1@D4+%BQIL&#!$@-+OA@Q\J4YEJ)'&0KVFB$"!P0($"!` ++M@``!`@3(&R!`@`!YT\6$B6$S9@`!`@3(FQ=HT*`)$2%$A!`1=NV*L&O7GETA ++M0H2X<4,#FB9]"G'BP`H2I''APH4+=^[7!(&ZI&;*%R?HL,U;XHG.B!'PJ(V@!F_$"`F'AC ++MY,1S$"^?G'@.`(YP,&*$@Q&>1M"A@P`!'3IT4*!`@4`.@GE?\N5+DP;_BQ8L ++M6K!@P8(%2XPT:=*DB9$FVX,4_\)H"-,KDJ$N;X```0($"!`@0(```0($")`W ++M;[HX,A$+"!`@0(#P>W$#S0TT:$*$"+$KQ*9=(7:%V+0A!)H0&M`TT="DD!$V ++MOF!!&AKRY@T0($"```$"!`@0($"```$"9(8W;S-F``$"!,B, ++M%WUNW$"#!DV($"%VA8BP:<^F/2%"W+@1XD:(&QKZ>*CCZQND<>'"A0L7+ERX ++M<.'"C1LW;APC,&#LL%+!@4,=8:-&E6%GK`B">=BP8"@<.'#@P-F8,6/&C!DSQH&S,9C&C'%PQ@$*!PX<5``4!5"% ++M+5N<.<.$:/-0H3;AAAL&`<.QC@8,6+$B!$C1CCPY`"3 ++M`V>8'(P9XR">@S%CQCC`-,:!`P<.'#CP-,*!@PJ`HE2HL,49)F=CQHP!5*'" ++ME@K.G&'"Y,D!#CD.ECB0,R^>`P>>'(P8,6($G1$C1HP8,8(.'3H(4"#X$N/_ ++M6!H<:;!@P9(&2YILO.!4.Y8M39ILI%+9(T/B1@L2O0R!`_<&"!`@0(```0($ ++M"!`@0(```0)DQ@P@0(```0($"$`@39K/K&R1(X\:-"QSW(4^3(/ ++M&R!`@.+%0X&"#IT1.I<&1)D8,+&G29,L& ++MAU0<'-VZI;E&JE,D*D=^];E'QE"7+D"```$"!`@0($"```$"!`@0($"`S``" ++M!`@0($"``.G3I,^-)C=NW$`3`DV($&A"A$"#YL:-&QIN-&DB"Z"1.KX20((T ++M;MRX<>/&A0LW;EPX/>/"Z0DW;APD2'I*Y;HD[0LV;-BPQ8N';4P\%'10>)(3 ++M)5X40-BP+7&`@@X*%"A&C!CA:80#3Y@P.1L3;XRS,6/&C'&`R8$G3PXP.7"` ++M"9,#3`Z/&C29]C(@QDP`,I''CQHT;-VY8'#APX,`3)@>8G#ES ++MYLR9,V=;G&T9XVS,&`=C/*%P$$]./!3YY,A!@<*!@Q$.1HP8,8+."%TCX(T8 ++M,6+_!!T4QW#DPX'C6)INW;JEB2$G!@XXW;IAP7(LU2)NY`:TF$#%#[@W0(`` ++M`0($"!`@0#1IT@0$"!`@0(#,`#)CQHP90(``:=*D29\F-YKTT7`#C880-T*$ ++M0',CQ(TF&FYHZ-/$"!M?"6!!`O/DR;AQX\:%&S=N'*1QC)X\@01)'Z%1@C`-G8\:,<>#)TPA/(T9X.A.O0CP'#D8X\.3`@3-GSIPY<^;,V9@QF!PX ++M<.#`DQP'\>)%R2<'@YQX*!R,<#!BQ(@1\$;H&@%O!#PZ__#HT*$CY]@Q'#CR ++M'<,A)U^:;#%BX,"!`P<&+-=248%V`1B>"8&\O0$"!`@0($"```&B29,F39J` ++M``$"!`B0&3-FS``"!`B0)DV:-&G2I(^&&S?'B88N'#1L@;$N6 ++MH$#AR4D^;/&P81NSQ`$*%",\C4!!9P2\$2,<.!@S)EZ%,9B/8L7Q?CJ5)DP8'CFXX ++MTD3!<"V5!"9__ASAH\K1&R!`@``!`@0($$V:;-FR98L?/R`S@,R8$&AAL:^MRX<>/�U-FMS0T,=('0Y"$L""!0L,&$A@ ++M($&"!`D,K`0)6)D1O'E1``&:AVW)EQ$CZ,B)%P_;&&PH ++M4*!P,&+$B!$C1HP8X<"!@S%C*HP9,V:,,V<5G&'"Y&#$"$^>',0;4V',&`>> ++M1CAP,,(!)@<.'#A`X<"3IQ$.`(YPX,!!O'B8*HQQ-F9,/#ER,,B1XX#.B!$C ++M=(W0!0__W@AX(^#1H4/GV#$<.(X=.Y:F6YIC,=+`Z88CGY9]UWB1X4..W`13 ++M'RR\`0($"!`@0#1ILF4K2)`@02Q8L!`+R(P9CAPYZC)CQHPF3?HT:7*C29,^ ++M&OIHN-&DCX8^&FXTN7&C29,^30IQJB/$EYD$=F#!`@,&#!@P"1+X\N7+'!LI ++MF7(4P;8"T#Y`\5#,BS1@A(,1#APX&!,O7CP4 ++M#D8X&#'"P8@1#C#%#`@2<4*$;`&P$/'CQX_P#AZ8*G"]X( ++M70B.'3MV[%B:--VZX8@1`T6O2I$F3)DV:-&ERH\D-#7TT]+G11T.? ++M)DV:W&C2QX@1,4,X"!%BQ@PK.PGL)$A@AQ4'%6S,"1M%@-T7;"OF[`,414Z\ ++M>5$`[8N'`H6T$?`0H'#@`),#!RCHT!DQ8L2($2-&C'`PPL&8,6.<5=BR9&/&Q(N'@LZ($0Y&.'#@(%X4 ++M9\XJC!GC8(R#,0X/'CP=(T0D>(8#AS9<'3+A@-' ++M&AS=NJ6)@47+/H`8'MASX6\6,A>JE,2*I8D?/UM!6BE29*5`@0+!@@5KU>/'ER@`+%B!$C'(P8,6+$"$\.'#@8,\99A0H5`%78LF7+EBU;MFS9,D>' ++M#AU;MCAS@,F!`P=CQD2I,*;"F'AR4#APX,F3`TP.XHT96KLN7#ASY\$%U14N7#A ++M`A<7+KB0X3KUZ)$5*U:L,"/VXX<2;R8,^?%3[,.-)C>:-&G2I(^&&TWZ-+G1 ++M!&"?)DV:-&G2I$F3)DV:-#%BQ`@G3L+82)%RRXX=&G9HW*(A[U8.5-3@C4`Q ++M!E`40(```8J";1ZV)2-&P(,'C\Z7>-@<.$"!8@2U$0Y&.!@QPL$(!PXPC1DS ++MID*%"ELJ;-FR9/\:,<+3"$^>/(WP1(T:M1%T$!RK ++MU@U.-SC=NG7#T0U'FA@8]NV+/'CP1J!`,6;,F'AR4%`;,6*$@Q$.1CAP@`G3F`I1*E08,\:9LRU;MFS9 ++MLD7'%ATZ=.C0L040($!1QCBKL&7.E@I;*E1P%F_,&!Q1,&%R$"_>&`=C'#AP ++MX&G$"`#`Z0:G6[=N:=+$ ++MP*)EW[XH*0[QX<.'#Q\^4/CP(=<&6@!NR)#A>O?HT:-'CQY9D2'#S8\@2!`C6ER)=X2U"@0($B7A1`@*(`FK?$B1-X(^#!`PAO!(HE#L;$ ++MBR='SH@1(T:,0.'`@0-,#L:,J1"E@K,Q8\94<.;,V98MSK9LF:-#AXX5SK9@ ++MB($!$"!G6[8`VE+!F3-,8S!%P8$A7KPQ8\8X<.``DR=/(SR-&#%BA`,Y_W(< ++M>'(0;PRV>(``Q4/AP(&G$2.D'<,!!PZ<;MVZ=>O6+4T,+%KV[8OBI0HY'#AP\?/@&X<4&&[%2#!J<>/7KTZ)&,1S)-;FAH8F&&TUN ++M--%P0T.3)C>:-&FBH4F3)DV:-&G2I$F3)D::&#%B9(@P*4*$5.K5KITV;=>6 ++M:-F'(1X*%"CB10$4)4J4>"A&T!D!#QZU$2-&Q,,6!="8>/E0.!CA:<0(!R,< ++M8'(PID*4"A6<`73FS%F%"ELJ;'&V9<+DR4&^?/GBQ8OGP($#!PX<>!H!#]Z($=1&C/^0$\\!IGB`QHRI4&%,A3%C ++M'(P8,4+:L6-PX,#IU@U.MVYITL3`$F7%/@PB%ARY<($<'SZF^$#QQP49LG>G ++MWN%Z]^[1HT>/'CUZ),.%&U4__`PK1DQ?$PU-;C1ITD3#C29-FMS0T*2)AB9- ++MFC1ITJ1)DR9-FC1ITF29D65&C`B3(D3(K5SMM&G+=FW?G'U1HJ!`@0)%O"A1 ++MHD2)MX3."'C4X,&#-\)!E"B`QHR)EP^''`Y,20(\>!`SDH ++M''ARX,#!B!'PX(T806W_!`H4*!R,&0/(684M6[94&#-F#`I/GNC(.08'#IQN ++M<+IUZY8F#18,6O;MPR!B00MR;?BP@`)%@C]/,V1@'%@A(,1(T;`@P=/%SQJ ++M_P!'((@7;PRF"A4J5-BR9D&IQN<-&G28,&@9=\^ ++M#-):_"%'#@H4"5!/7KWSH6,'TJ M$[)N& ++M&QJ:-&G21$.3&QJ::&C21$.3)AJ:-&G2I,FR%DT6-%G6I,FR94:,U-DA1`B- ++M7NWR=$N3+\J<%?OV`9H7;\F2>/&PH4#A@,X(>/#@C1B!`H6#,<[&C''F0`Z. ++M?"@<.!B!R<&8,6/&;*D`:,N<+3JVZ-"A0X<.!7,4S)FS0DN:&%@P8,"`;`A&T/'D"86<>9X-1&4/^C-D(.@GACQHRIL&7+ ++MEBU;ME2HX,P!"D\CI!WK!H<4'(!PX'1+DR8?EGE:`*V0HZM)BR-MH/CSY\*% ++MBW>G3B%K@`Q9`USO&KQK\*C!HT>/3LE@]D-)HG(=D#1ITJ2)AAM-FC1ITJ1) ++MDR9-FC31T*1)DR9-6C1ILJP)GB;+FBPSLDQ8'0YF$ICIU2Z/-APX8D2)`@A0 ++ME'F`L&$;@\W!$@'3H.'(P9,V;,F#$.QHR1DP_%"`@`P9X,&C1F>$ ++MIQ'HXLE!@,*!)P>81HP808W_VID1*.+)B3?&F;,*6RILV5)A2X4*8\8X\#1B ++M1`H/3ND0QUS)B5ZX"$5I,F&IHTT=!$0Q,-39HT:=)$PXTF39HT:=*D ++M29,639HT6=;$R+)E1CA)\64F@;@2O00]@(,C1@P,43!HB0(($+8Q8U`XH#-B ++M!#QX\."-6#)BB0,'F!PX&#/&P9@H7(0+UZ\>`Z<5:BPI<*6"A6V;'%684P\3R-&I*A&"@XI.-W2I,&" ++M17G!PQ,`0)8J6*%$`81NSQ`&*$71&P(,'CPZ=$9X<.,`T ++M9HR#,6/&C!D33TX\!Y[BQ8M2H0(@0%'F;%&P9E#%CHL0; ++M,\:9LPI;*FRIL*7"E@H5QCCP-&)$BFJIX,"!TRT-%BQ8M.S;IZ4(*F4W6I!K ++MXZ^&/V3(D"%#Q@49,F3(D"%#UJ!!@P8-'C5X]$@&+EP@:!WY]:M)DR9-FC1I ++MTJ1)DR9-FC1ITJ1)DV4MFC3ITZ2)$3Q&."W@!'#(D"%U.+!*8`<,F!(E>B7+ ++MPPL.CAA8,$31$@70F#%CECB@,X(./%TCZ""0YLG3"`<.'(P9XV#,&&=C\L5S ++MX"#>F"A;*LP!A`$#H`H**FRIX*Q"!07.G`&*D@\#MGC8L(T9X\"!@Q$CZ"!` ++M\&4$-4\(YLG)AR'?"`!L3+P1U.`A@$.*%)QNW=)@P:)EW[Y]UZY%J]?D#[D`_OS5X((,&;(:R)#5 ++MX%(#&3(N#;@T:-"@P:-'[]ZYP`4%FH=?OYHTT="D29,F39HT:=*D29,F330T ++M:=*D29,F?8P8&3*D3IU1;.IPX.#+%RLP8,`\J23O6:@K#W#@B!$#0Q1`@,:, ++M`3AF"0H4=$;`&X$*'H(4"$:,\.0`Q1@'8\8X&S,F2KQX\<8X&^-L2P5`&&+D ++MP^#,F;,H%9PYP^;,01ILF#"=68)M#"9LV#"A<_!%3HP8,6(XD78L!HXTN6)@T6+?OVK=`R;THZ#2V.\&GCSU^-&LBXU.!2HP:R&LB0(6N`K$&#!@T: ++M-&CP[ATR%_Y`,!'CH4F3)DV:-&G2I$F3)DV:-&G2I$F3)DV:]#&"A].0.CN$ ++M2.&P@P,'7[Y8V;%C!TR)2KUZT;-&0(0<.?DP8``T!M`8;&,BA$C1HR`1TU:BA0I1(P8,6*,`V<5 ++MG(T9,R9>E#%CQE2HX&Q+!4!1HN2+DL]9E#%1QF#"-,\!NC/8`"[!!FB,,V?. ++ML&F)D09'C'Q88L3()P<%)@<.XLW#("?_7KPQ8\9LF3-GRYPH4:(X&S/&P1AG ++M%2ILJ;!ERY8*SL:,<4"-VHAJI.!T2Y,&"Y9]*U;LNR8MFH80+8Z0XQ/`GS]D ++M-6K4J%XT:7&K40-:@1HT&-1HT:/#.A0MDN*#0@L:D29,F39HT:=*D29,F ++M39HT:=)D69,F>)HTX<1I!P!@Q(@1=*1Y29$B!9T1#AQ@&E-AC+,Q%<;$&^.L@K,* ++M6RI4V%(A2KY\..;-PX8%![9N.#`LP;0D2@5`@%8XVQ<#1YH8,;"DB9$OGYQY ++M#C"-P30FGIQX_P#C.<`T9LR6+8"V``($J(*S,<[&.*M0H4*%+16V;-E288P# ++M%-1&P,,!!TZW--FP8-&R;]^^:^P8W$`SH`6Y-E!`^$-6HP8W;C4"^*M1`UF- ++M!C4:U&A0HP&R!LB0(?,'!1JY(T>:-%G68EF3)LN:-&G2I,FR%DU:+&O2Q(@1 ++M,5*$"#%CQI<*%>94L&(%ZYNX8C^40(```0($"!`:4:KUX($T!#&BQ!N#;?/W_^:@2H$:!&C1HU:M2H4:-&C1HU:C1`5L,? ++MGS;D_@P8D*5)DR9-FC1ITF)9DR;+FN!9UF1!DR8M.(FIPX&#+U8J5'`PIT(% ++M*SO?]!13HH0($2)$B!"!8,A/('H&\HA(@2.?'$#8`&$;,V;)"`/#D8XVS,F#%CQC@;,Z9"A0K.G#D;,V8,BB@88L3`$@,+!@PQTL3(AZ'" ++MEBUSMCA3L`)#OA@QTJ3!DB_>F#%CQC@8,V;_#(HQ#L:,J3`&4(4*@"I4<.9L ++MS)@Q8YQ5V%*API8*6[9LJ3`FGH,1GD9<(]4M31HL6+1HV;?OFK1HFS;A0S,` ++M#T!R?*#X\\?-7X``-0+X\U?#7XT:-6K4J%&C1HT``=J0^S,@RX`L`YHT:8*G ++M28ME>/`T:=$$3Q,\3?`T,6*D3AT.0GSY\J7"W`$5*EC9>:*G6")O1&+%BA6+ ++M"!$(2CZ0.43/&@$OU7#DDQ,O"B!LSK`Y0.%IQ`A==(X=.X;"$R8'SL9$B1(/ ++MDP-GSBHXJ^"LPI@Q\3QAFI"?`0,&#!CPYT:3)DV:-&G2I,F")G@6-&G2 ++MI(D13D/J"@\C8!'3<2Q8P@<.'#@`!.&?%'&8!HSQIDS9\Z>/,7H ++MEB8-%BU:]JW`=LU8&65-;H2X$6)`"W)\`D`)$"!`@``!`M0(X*]&C1HU`@0( ++M$*#-!7)__OSY\^?/GS\W-#1I@J<)GB9XFN!IT@1/DR:%C-3A`%"($`Z^5'`P ++M=\"<.16LP(S3,RF1B4_>8A&)!0$"A`^JUDDPQ8("!6M7>,'!<2P?ABCQQF"+ ++M%\\!G1'4J*$XAL*!`P>8QN3#D2_>F#%CQCASY@P3)D^>''CRY`#%/&Q+YF'( ++MER]&FGSS`%6H``@0("WY`(T9$T6+%D`5*HP!%*7_`J`*8\:@&#-FS)@*%;"- ++M`30&T)@Q8\:,&3/&684*6RILJ;"EPI8*%<;$\^0)79IN:=)HT;)OWXIYU]@I ++M:X+GQHT;^&X,.$*.3X```0($"!`@0(`:W&H$"!`@0(``;=JTN7#ASY\C%_Y< ++MN*#AQHTF39HT:=($3Y,%39K@P6.DS@XA'(2HX*#"W`%SYEC9`<-HG(USDUP- ++M,V'"V[!A?HI]`+A.PHX=)%A4Z='CR@,X<'#$P!`E2I0Q\1R@D#-BQ(@1*%#$ ++M0^$`4Y08^>(Y&#-F3(4Q8\8X<.")V@@'7^*-<+#$P;QK^;#$P!`/6Q1`4;1@ ++MR(=E#"9G%0`!`E2A`J`*_Q4J5!@S9DR\,6/&C!E380R@,8#&5!CCS,&8,6.< ++M.:M0H4*%"A6V5*@P9LP8!^A0X$B3!HN6?2M6[+M6I(RR)BV:W+@1(LN`/^3: ++M\&D3($"```$"U`A0(T"-``$"!&C3IDV;"Q>.7+A`CMP%!76D"!'"P1<'%>;,F3.G@A482)#$Z;$Q:=*D1(DFE2M6K)2X5V9V ++M;"-19UN5'CW^/<`!!T>,?/FB5(@W)MXQ!R-&`/0T`H4#%/$4*!8(0G=.CFS;L6(T:^+TL<.,`6)4H40%'&.,,&"-"6+5LJ ++M5/^H4,&9LPK.XHV)-V9,A0H5*E2H4*%"!6?.QHP9,V9,!6=;*E2H4&%+A0H5 ++MQCAPX"D?CC3YYFG9MV*%EFOLTC71T*>)AA`A0F1I<80.>&$X+ABSH4>:.EP/#ERKEV3@P*3@S'.G%6HX`P0H#F``&W9LF7_"Z`*6[94J#!FS)@Q ++M\;"-P59A3(4Q%2I4&.-LC(,Q8\8XJU"A0H4*%;94J#!F#"84F&)TPX)!BY85 ++M*U9H<>*#QXT;-YK<"'$#7Y8!+Z*OA!DS=>IP6K!@09@P!.Z(\'*L&AQ2.'`-@Q`@Z(U"@0(%BQ(@S3E#(D2-'CAP4 ++M#AR,&;/%V18=<^;,V3)GRYPM_P!U;-FR98NS"F/&C(DW9DR%"A4J5*@P9LR8 ++M,0[&C!DS9LR8,14J5*A0H4*%"F/&C'&`#4<,+%JTK%BQ;]\U:0QXA`AQXT:( ++M$/AN9+G1X@^Y-FW:!`C0)D"``#4"!`@0H$V`-FW:M&G3I@VY-N3:M&FS)P0: ++M-!K0-&FRK$D3/'B&U)$B10H'-N8.'#A@SIP*5JS`@`'#Z`FC;T\8?7NB[XD^ ++M?;!*F!%2AP0>3G@6+"A#H)87$0^J58-#BA2.8W+R><(TPH&G$2-&.'#@P($# ++M!PX<.!@S9LP8!PX<.!@Q8L0(.BB6C!CAR0D*!'(0H!CAR<&8,5NV;)DS9\N< ++M.3ITZ/_0H4/'ECE;*E3`-F;,F#%CL%48LV5,A0ICQC@;,\;!&(`.QHP9,Z9" ++MA0H5*E08,V8,)@?YTF#1HD7+OA7[M'R)QF/7K@@A0H3`AP_?C2/D)I#CTZ9- ++MFS8!`@0($"!`@`!M`@1HTR9`FS;DVK3ATZ9-FS81]NQ!@^:&AAM-FC3!PZE. ++MG1ULI+`1=N#``7/FS*E@90<,&#!@8(%Y`NN)G2>P2M@I`Q8M6IP2,&!@^.8`T\C1HP8X<"!`P?Q'#APX"">`T]C'(QQX&#$ ++M"$^>1GAR,`(%"A0.4*!`@0(%"D\.'(QQ5F'+G"U;=,S1H4/_APX=.G3,V3(' ++M4`5L8\;$&S.FPI@*%2I4<%9AC`-,8\8X&#-FS)@QSL8X&S-FS)@Q8QR,21,# ++MRSXM^_:MV'?-"4`&/$*LB1`A0H@0(?"UX`.%#Y\V;=JT"1`@0(```6H$"!`@ ++M0(`V`=JT:=.&3YLVY-H$"+!KUYX0(="@N=&D21,\G,34X2"%S8$#JPX<.&!. ++M!2L[=NS8`0,&#"P[8.S8L5/)3B58E/`L6$!`1`HYQXY5@U,- ++M#APX<'`X&.%@Q(@1(T:,<#`&DP,'#AR,P.3``28'#AR,<#!BA(,1(QR,<(`" ++MA0,4#E"@<.#`V9@*6[9LT;%ECHXM_W/FS-$Q9XZ.+8``C1DSQL&8,8"P51A3 ++MH4(%0&.!01$($!P+$:U:M6JP8$#!\>($2-&C!@Q ++MPH$#!P[&.'#@P(&#$0X<.'#@P($#!R@.'3MV[-BQ`\9.I025S.S8 ++M-JK,`CQ'CBQ84$9$D2(QCAW#4>T8'!QPY#CP-&+$"`3`@0,'#AR,<>#`@0,'*%"@ ++M<.`@2@PL6E;LF[-BQ;4IZ7ALVK4K0H0($?"18"!@,ORU:=,F0(``-6H$ ++MJ!$@0(``;0+P"1"@#9\V`0+P"1`@0(`U:];LVK4G1`@T:/KTX<2)D[`#G%:M ++M.F!.A0I6K.R`867'CAT[=NS8`DQ9$%86J) ++MD'/M6(QJ<'#@D",GW@@'(QR,<##"@0,'F!PX<.!@Q(@1#E#$B^?`P0@'#D8X ++M<.#`@2<'#AR,B11!VX,`!(T>.+%C60X07!-?D`(R!`P<.%/$\ ++M>4+A8(0#%`X<.!B#"9,#!RA&C!@Q`H4<.2@<.'#@P,&($9X<.'#@P($#!PX< ++MC!E3`1`@0("VS/^IL*5"A0J`*@"JL`50A0ICQHS!Y@#;&&QC`%6H4*$"H`IC ++MQCASX,"!`P<.'#APX&#$B!$CZ#AP`"@?%BW[]JW8ART;*@8A-NS9M6G3)GPW ++MR)%A%BP8,RNG_`6XT*9-@!HU`M0($"!`@`!M`O`)$*!-FP!M`@0($"!`C35K ++MUJQ9LVO/KCUHT/0IY,$#IP,>#I@SI\*.'3!@P-AAQ.'3N5 ++MS)BYM6/(O04+\-S#`,J)XLF!@Q$.1CAP,,*!)P<.QL0;,V9,O"A1`%68`VC_RY8* ++M@,:,&0,(4`5`@``!PC9FS!@'8["-P58!&R!`@`!5`(1MC`,'#AR,<#!BA(,1 ++M(T:,&#$"!0I/,;!HV;=BQ8I]6%`IVQ1BSZ9=FS9%R'+!GQ5FP9C)D(&,SX4+ ++M;0($"%`C0(```0*T:1,@0)L`;0($"!"@38``-6K46+,&P)HU:W;MV;,'S:\^ ++M'CAYX'1`&!L5=EB!`0/&CAU6=EC9L6/'CAT[=BK9J23$S*T==>YQPH/G'IX% ++M]_#<"Q.&0"T13)`1T'=$:,<.!`3KP1 ++M#AR,&.'`P0@'#AQ@:/7OV_"K4QX.'`YS8L%%A!PP8 ++M,';`V+&C@A4K.PG`V+%CQTXE.S2$;*M#XAZ>>WCPW%NPX-X]$@O*W$$@!P,& ++M0&/&C!DS9LP8!PXL1, ++MA@L^`P8,N$"N38```0($:!.@39L``0($".`O0(```0($J%&C08,($7;MVA4A ++M0H0]>_"A^=6G3Q\C'CC5X:#"#A@P3\#8L6-'B`HS9NR8J61&R*UM.^K<6X!G ++M`9Y[>.[A67!O09@P9>Z(0(!B3`5G8YR-<39FS!@'#APX&#-FS)@1(ZB-&#'" ++MP0@'^5`X<.!IQ(@1#D8X<##"@0-,F)R-&1-ES)@*_X```1HS9E^4;CABQ'.` ++M:4R\,6/&C'&&K<(80&,``1H#:$P%0!4`C<'F`,6($2/@P1L!#QX\>/#@P:-& ++M;4D:#%JBS+MF3!J!93?0W,`7`A^^`4?X2'#Q3H85*RZ@M,@R`."`(VW:!`@0 ++M($"``&T"!`@0((`_?P$"!*@1H$:-&@T:U`@1(<*>/7OV[`F!#TV6&WWZ],'3 ++M@I,8*4+,V`%C!XP=5D*$"%$AQ(P0,T)N[:@SY-Z">POP++B'!\^]!??"+.A! ++MX`X=.@Z<.1LS9HRS,<[&C''@P($#!PX<.!@Q`AZU$0Y&.(B7+YX#%".HP1LQ ++MPM.($0X<.!@3;\R8>(#&5/\8@PW0&$`88N!((\>!)P/'CPX,&#!P\>O`PCY*3!H&7>-6DBF%IW=(T8@N2I4LOT)LVA3B0H!'[USX ++M@R+!!9\C-[+@PY=EP!%R;0($"!`@0(```0($"!`@@+\:-6K4J%&C1H,J@ ++M"8$F"YH;:/#=N''CQHT^35JTP-."$Z#HSP@$*%&/&`!HS9@RV"F,`C0$T!A"@,8#&`!H#:,P8!RA&C(`'#QZ\#!G@ ++M9:W.ASH\F-)C>: ++MM,#3!`\>/'CP/`ON+;BWX-X1$@O* ++M``S3H]:=.[K@P?/DP)FS,6/&C!GCP,$8!PX<.'#@P(&#$2/@4:,V8H0G!PX< ++MQ(N'@@XU.2A0H(@7+]Z8,14`5?\8,V9,/!0H1GBBYFD$G1$.4&##!F@,H#&` ++MQE3`-F8,(&=CG(T9,P;0&$!CL&%#@6($'6KP,F3(D$%`A@PGD@@042U;$1'2 ++M[A"XTZ-'E1;X\+4(((.9E4?(VAPYTN(&/GPA\.T)@2_+D0MM`@2H$2!`@``! ++M_`4(X"]`C1HU:M2HT:!!@P8U`C1ITN1&DR9-;C1ITJ1)DQ9-\"QH@F-6KPZ(P8X*-03%BQ`AJ(^B,H.,`!;8Q8RH`JC"F`K8Q@,9@&S,&VQA` ++MV,9@&X-M##8'=$;`@Z/7I4:?&'G#\9 ++MS&2X:$/NR(`;62)$B!!BSQY\^+*T(,?'7X```6H$"!"@1H`:`6H$J%&C1HT& ++M#1HT"!"@38LF>)HTP=,$3Y,6+?#@:8('#YY[>/`LX'1O`:=[0^[=XX2GB1$\ ++M??KTZ=.D#YX6>!;@N7?O'AX2]\+4$J&+#ATZ(^!Y&N'`P1@'8\:,<>#,@8,Q ++M#AR,<>#``9T1\*A1@S=B!!T'GAPX0"$GWA@'SAR,&1.O`J`*_P#'.,,V!EL\ ++M3R.H4:,&;\0(%"A0C!E3H0*@,8#&5!@SIL*8,8"PC<$V9LP8;&.6H$`Q`AZU ++M#!DR9,B0)$.2)-&BZ1(A0H2N.P1Z].C1@T"5"5!<,&,FP]^1+`.R9,$7(<*N ++M/2'P10BQ)\L?!9SP<+J'A],"/`OPX,'3I,^-&TWZ-&G2H@4> ++M/'CPD""Q($RM6M*+I&C!@QPI,#!PX/'CP1HQ`@2(> ++MMC&`*E0`5&$,((`5L`$:,V;,F#'8QHQ9L@2%DQ'PJ&7(D"%#A@P9DIR(5B^) ++MCSMW[MPA0(``@1X]>E0Y)(,9,Q=06N"+@`\?OA`1]H2(L&?/GCWXLK0@Q\=? ++MC1H!:@2H42-`C1H!:M2H4:-!C08-:@1H<^$"G@5X\.!9@`O7OW[MW#<^\>'CQ-^MSH<^-&GSY]FK1H@0?/D7L+PM3R(L*) ++M@S$.'(P8,8*.`P=C'(QQX,"!`P<.'#APX,#!"#KP,@C(`$\7O!$C'(QP@,(! ++MH#%CG(T9XVS_S)@*8P!A&X/)TPAX\.#!@P>/VH@1#N*-&8.M0H4*@"J,J3`F ++MWI@Q\<8LP;9DR1(4=$;`HY9!0(8,&:(ER9`D&L`329+XN*.+P!T"!,+T"-.C ++M1Q4)+JA`.7(#WYH($2+@V[,G0H1=(?9$V(,ORQ]R?/SYJU&C1H`:-6K4"%"C ++M1HT:-1HT:%`C0)L`;2[@P;,`SP(\>!;@N8<'SST\]^[=PW,/S[TC]^[=PW,/ ++M#YY[>.[AP8.G29,;(6Z@N7'C1I\^+5JTP--D0:U_(N2@P#;&@0-X=."-&./` ++M@8,Q#L8X&./`P1@'#AS0&0$/7@8!&>#1&3%BA"<'#L94J`!H#"!L_]BPC1F# ++M#=N8)9ZHP8,';P0\>/#@41LQ`L48;&.P`:H`J$*%>!7&Q!L3#T4\%`Z6T!DQ ++M`AXU`1DR9#@1+4.T:-&21*L7K`>-'M"[(H0(D*$/?BRM"`7P%^-`#5JU*A1HT:-`#5JU&C0H$&#&@$"M&G3 ++MYL(]/'CNX;F'YQZ>>WCNW;N'Y]Z]>R3NW;MW#P^)>WA(W+M'XAZ>>WA:]+EQ ++M`\T--%ENW+CQJT^?)DT6A"%PY]H\;&/&.*!#!YX#!P[&.'#@P($#!PX<.'#@ ++MP,$(>/#@94B2P8>N$2,\><+D8`RV"H"B8/^+APT;)G1+EHP8X0G>"'BZ,NB" ++M!P\>/&HC/#EP$&\,H#$5L`$:$R5>O'CQ'*!8XH0./'@9,F3(D"%#M`S1HD5+ ++M$BU)O70G"!`@4(9`#P(]PA#H0:#*O18#\.&+@"\"O@A[T/P*L2="A#T1(H2( ++MD*4%N3;^:OBK42-`C1HU:M2H`;!&@P8-:M0($*!-@`!M+N"Y=^_>/3SW[N&Y ++M=P_//3SW[MTC@><>GGMX[MW#<^_>/3SW\-S#LP!/BR8W;J"YD07-KU\W?MWH ++M!@$9X&48 ++M06>$`P<.X@$"A&W_WA('GCQY&H%NQ`AJ\.!ER)!!EZX,\.#!@S?"TP@'#N+% ++M`S0FRIAX8\;$0X$"A9,1(^!1RY!!0(9H&9*HEB5:&@(\R!'H0 ++M"$.@1X\>!'JTN!$!'SY\^-:LV?/K1A8T(2+L"K%GUYX(6?Z0X^.O1H`:-6K4 ++MJ%$C0(T:-1HT:%"C1ILV;0*T:7/AWCT\]_#.[AP7/C1A8T:-#@0Y-E3Y\;:+(TT5#FWS$Y\^+% ++M0^'`@2<'#APX<.!@C`,'#APX<.#`P8@1\.!E$)`A`[P1\#`Y/`R9,@0+4.&#!DR9-#E0Q<\>-3@41LQPL&8>/'&Q(L7#T4\%"A& ++M4*-&30"J)!F21(L6+5JT:-&B18M6+TFZ$P1\A/%!(`R!'@3"$"!`H$J3`5EN ++M9(D0`5^$7YQ:],$7(D($?!'V[(F0I06Y`/[\!:@1H$:-&C5JU*C1H$&#!@': ++M!`@0($"`-A?NX;EW[QZ>>_?NW<-S#\^]>WCN<;J'YQZ>>_?NW;MW[]X]//?N ++MW<-S#P^>/C=N`,R2!0V^+&CPH<&'[\8-#"@<.'#@P($#!PX< ++M.'#@P($#!PX!BBQ/^;AV+$"'BH4,%#E2%#AF@G ++M3IS(D"&#CPP9,F3(``\>O!$C1M!QX"`>BG@H4*"@,P(>/'@",F3(<")#M`PG ++MHD6+5B]:O7I)ZD7+0,!'F3`$RA`@0(!`#P)A>K1H<:3%`'P1?@$[/3SW ++M[MW#O2'WAMR[=^\>GGMX[MV[=^_>O7MX[N%IT>0&&C19 ++MT.#[]0O?GBPW-H7H84U$BF/YXD6)-V:$@Q$.`(YP,,+!"`<.'#APX,"!)T^> ++MJ%$3(`#>"!3QY,2+$B__'@H43N"A0N7#AX\3/DZ<.''B1+1H&:*=.)'A1(8, ++M&3)0RP`/WH@1(^@XH#."S@AXU.`)R(`J0Y(3T:)%BQ8M6K1ZT>I%JU/T[U[]^[=NT?BWCT2>.[=NT<"SX(6>&[[+@0Y/%TK(> ++MM7P@.)8O'X8H\1PX&.%@A`,'#AR@<(`"!0H4*%"@0$&'C@@4"!#(D1-%3KQX ++M_P#CQ9,V`AX\'SY\E#EQXL0)92>BG4@2+5J&:-&BG"/@4:.604"&#$DR1#L1+5JT),JB18NF+%J]>O7JE?'AXT29,@0($"!`@$"/ ++M'E4.29#`YTB6+,#(,3G2(DN6$/A"[-JS:\\>?%E:D&OCKX:_&C5JU*A1HT:# ++M!C5J!&C3IDV```':M&ESX=X]//?NW<-S[]Z]>_?NW;O'Z=Z](??NW;MW[]Z1 ++M>_?NW;MWC\2]>_=(X,&#ITF?&VC0H,$7(@N:&R'J]:@%3P`=!#B.88@G)QX* ++M%`Y0H$"!0DX\.?'BR8D73TX^.7+D()`C1TZ\>/'BQ?^+%^\+"CKP?&3PX>/$ ++MB1,G3IQ0%BU:M&C1HD4[$2U)-(#1HB7)D"$:J@P9J&6@EH%:!G@9,B3)$"U: ++MM&C1HD6+ED19M'K1ZM5+5R])F3)ERI0I0X```0($"(2I4H7%A",#!@PX0H[/ ++MGP%9\(7`AR]"A`@1(H3`AV\`N0#^_`6H42-`C1HU&C1H4"-`FS8!`@0($"!` ++MFS87[MV[=P_/O7OW[MV[=^_>/1+WAMR[=^_>O7M'2-R[=^_>O7OW2-R[1^(> ++MB7MX\#1I'$'6D"1M!!@`/'L7PQY,A!@0(%BG@HY*"()R>> ++MG'ARYL63$P^%'!3QXL6+%P7_6Y1X\>;1<0)/EX\3)WR<.'$B6K03T4Y$BQ8M ++M6K03T4Y$BW8B6K1HT9)DR)`A0X8,\#)D2)(A0[1HT4XDB98D"HEJ1>M ++M7KUZ]925.5&F3)DP!`@0($"@1X\%>/!DR9)E`+DVY(ZTR((/'SY\$2)LBK!K ++MSYX(65H<:1/`7XT:-6K4J-&@08,:`0*T:1,@0(```0)`NW#A'IY[]^[=PW/O ++M'IXC]^[=NW?OR+U[8NX=N7?O'@D2).X=N7?OWKU[]TC3$BR<' ++M4!1`_U'BC1F#(IZ#$?#@^_?ND;AW[]Z1>_?NW;MW ++M[QZ)>R1(W+M'XMZ]>R3NW;MWC\2]>_<6X&G2Y,:-$"'PA=`0AITN:E^<.!E! ++M)\4Q.0A0H$"!`@4*%`Y0H$`1#T4\%/&P88L7+UZ\>-CB`?^*-P90O'CQ4*"# ++M-T)7AA,93D3+D"1#DFC1HD6+%BU:M&C1ZM6+IBQ:O6CUHIU($BU)DFC1DD3+ ++M$.U$M&C1HD6+5B])O23UTB6I5R]=/67*PI0I4R8,@3)E"!`HLZ`*GAM9!OR9 ++M0.[(GS\#\.&+$`%?B#T1]H2($"$$O@@#CI"#`C"`OQHU:M2HT:!&C0!MV@0( ++MT"9`@``!VK2Y<.$>GGOW[MV[AT?,O7OW[MV[=^_>/1+W[MV[=^\>"3PD[I&X ++M=^_>/1+W[MV[=P_//3PMFMRX$>)&"`U5KEPQ)H*.$VE?4'Q!\`4%"A0H4*!` ++M@8(."A0H4*"(ARU>O'CQYL6+%R7_7KQX\>)ABQM7KUH]>K5 ++MJUK5JU>F3)@R9O!3D^_OS5J%&C1H,&-=H$:-.F39L``=H$:-.FS84_]^[A ++M`7COWI%[)/#.[=(W&/Q+U[]^[=NW>/!(E[1\20 ++M($'B'IXF-VZ$"+%@09D3/MB)$"%"A`AI(A!(<[($!0H4=%"@H(,"1;PE\;#- ++MBSM'J1:M7KUZ2>O72U4M7KUZZ>B<6 ++ME`E3AD`9`@3*A`E#@@0)_?NW;MW[]Z]>_?P ++MW+MW[]Z](_?NW2-!XMX]$O?N`21QC\2">_=(D"!Q[]Z$'2QV3*B"IT6($"$T ++M6`I1KUZ]:"=\$&!WQXL(:72DH8CG``4*%"CDH)@7+UX\;/'BQ?^+%R]>O'CQ ++MXL6+%R\>"CHC4`F(%NW$"64GHD6+%BU#M&C1HIV(%JU>M&C1HD6+%BU:M&C1 ++MHM6K%ZU>M&CUHM6+5J]>O6CIZM5+5R]=O7J6TEFJMXQ`F3)E"!`@4"9,F##W ++M2$R80.[/@`$#!@S(,B`+O@@1(NR)$"'"G@@1]NS!%V+`D39\`M2H4:-!#6X! ++MVK1ITZ9-FS8!V@1HTZ;-A3_W\-S#<^_>O7OW[AW!<^_>O7OW[MV[=^_(O7OW ++M[I&X=X_$O7M5[MV[=^_>$#'W=IAZ14:"*3YX6F0)@6]3"`TA`&[:9,F2)0W* ++MRA"X(T*:$Q3Q4*!`$0]%O"_QXL6+%R__WKQX\^+%BXI%JQ>M7K1H]:+5BZ8L6KUH ++M]:+5JUI7KIZ)\J4(5"&0!@"8<)4N;?@WI$C`P;"1)5[ ++M]TC4V6'JU;I%JJBL<\/BR(T;64)D07/C1H@0NS9MVL1`69D[NJ1]0;$D7KQX ++M\>+%BQ=O7KQX_P#CQ8N'(AX*%"A0H(B'(AX*%'3@PO7JI4M7+UT] ++M2^DL6:IWH@R!,@3"$`@S:L&"!2U:M&B1!1\^?/CP9 ++M-7LB1(B`[\8`<@'\U4!6HP:W-A?:M&G3IDV;`&W:M&G3YL*%/WCNW;MW[]X] ++M,7CNW;MW[]X]$O?NW;MW[]X]$O?ND;AW[QZ)>_?ND1A"HHZI5XL^E$ODIURY ++M#^M,D;B1!0V^+'OP[=F##PT^-+M":#AQQPL")_-0Q/L2+QZ*>/.6S/^+-P]% ++MO'@HY*"(AP(%"A0HQJ"@0P=5AA,GHIV(%NU$$H#1HD6+%BU:M&CUHD6K%RV: ++MLFC1HM6+5B]:NFCUZD6K5Z]>O7KUZM6K5R]=O7KI+-5+9RF=)4LGRI0A4(9` ++MF`5A[BW`TZ=/'WSX(D18$R'"'GSXLJ#)@@\?O@@1]JS9LRM"A!#XLK0@QR=` ++MC08U:@2XT.9"FS9MVK1ITZ9-FS9M+OSY<^\>'C'W[AVY1^(>GB/W[N$Y ++MD7OWCMR[1^+>/1+W2-R[=T_,/3$33"WZ4,[$IQDO/GD;YB>0A"IX;J#!E^77 ++MKSU[]D2($"+$)DMEV'DI@@#!EWGSXL6+%R__7KQX\>+%0Q$O'@H4*%"@0!$/ ++M!0H4=.!ER!#M1+03T:*=B!8M6K1HT:)%BQ8M6K1H]:)%JQ>M7K1ZT>K5JQ>M ++M'L!Z]:+5JU>O7KIZZ>JELY3.4CU+EM(QL'2BC`\"8<*$6;#@7HL^-[+@B[`F ++M0H0U:]9$B+!G3Q9\O_#ABQ!A380U$?9$B!`A2XL+;?S5J%$C0)L+%]I<:-.F ++M39LV;=JT:=/FPH4!1_#0/DS0QPB`Q](+.CQ8TL:++@0Q,B1(A=>_9LVF2I ++MS+\K7KP@0"!G7A1L__'BS5LR;TF\>/'BH8B'`@4*%/'B.4!!1Q>\)">BG8@6 ++M[42T#-&B18L6+5JT>M&BU8L6+5JT:,JBU8M6KUZ]>O7JU:M7KUZ]>O7JU:M7 ++MKYZE=)8LI;-DR9(E964(E"$0!N"">PM:H,&'!M^:"'O61(@084V$-1'P[?GU ++MZQ<^?/C6K(FP9E>$""'P#3C2QE^-&C7:M+EPH4V;"VW:M&G3IDV;-FTN_!EP ++MC\21>T?N';EW[]Z](_?NW1-S[]Z](_=(D+A'XMX]$B1(D+AW3\R.5\7*?9KQ ++M!@@0($"``'G3Q9&A2%1,X;F1!0V:+"$V;0JQ!\VN3DB78YL5;LB0>BG@H4*!`$2\>"A0CZ&3($.W$B6@GHD4[$2U:M"31ZD6+ ++M%JU>M&CUHM6+IBR:LGKUHM5+5Z]>O7KUZM5+EZY>O7KI+*6S9*F>)08,&%B* ++M5H9`F04+1N&Y@08-/GP1]D2($&%7A%T1UD18$R$"OE^_\.'#!W#-FC5K(NR) ++M$`%?EB-M_-7P%Z#-A0L7+EQHO7OWCMR[ ++M=^_(O7OW[MV[1^+>/1+W2)"X=^\>B7MBZIA:5.X3/R!`@``!`@0($"`S9L2" ++M\(.*J2,W;H0($2+$IA"[-O0Q4F==)$2(^N7Q4@3_P;QX*%!\F8=BR9)X8Y9@ ++M0X$B'@H4\<8XH",-7H8,&4Y$.Q$M6K1HT:)%BQ8M2;1ZT:+5BQ9-6;1HRNI% ++MJU>O7KUZ]>K5JU?/4KUZ]>K5JV>IGJ5T#"PQ8&")`0-E9W;MV15A380U:R+@VX/O%[X]$=:L6;-K5X0($08,/68T`;2Y< ++MN-#FPH4V%]JT`=CF0ILVT/[\^77DWI%[1^Z)N7?DWCTQ]^[=.W+OWI%[]TB0 ++MN$?BWCT2)$C<(R%FAYMBKEX``0($"!`@0(```0($2"P+1()1D7"D1980(="@ ++M01.BSX(=ZSX,^S3CS8Q4___H2)-S#0$*%"CBH8BW!`4V%/%0.(CG(!X*%'3H ++M9,@0[<2):">413L1+5JT>M'J18L6+5JT>M&B*:L735F]>O7JU:MGJ9ZE>I;J ++M6:I7KUZ]>O4L6;)DB0$#2Y886%)69D&8!4U"A-@5(4*$"'OV1(BP9\V>-7O6 ++M1(@0(0*^/?CP_<*W)\*:-6O61(@0(_?NW;MW[]Z]>_?NW;MWY-Z](_?N`;Q'XMX]$O=(D+A'XAX)$B3, ++M+"IGXH4F($"```$"!`@0($"`S.!GH=4/&5".W,ARXP8:-&B&F%KW(9&)&3.` ++M`/_ITBF.%R?21""0A@+!ER5+4#B(YP`%"A1C4*!`0<<)J@P93D0[<2):M&C1 ++MHD6+%BU:M'K1ZD6+IBQ:O1/UZM6K5\]2.DOU+-6S5,]2/4O*+-6S5*]>.DOI ++M+#&PQ("!I66C%BQ#LRE$A`@1UD38LR9"A`B[]NR*$"'"F@@1UJS!AP\?OE^_ ++M]D18LV97A%WXLI"#PH5+@`L7+ERX<.'"A0L7+K2Y`.T"M`O`?N$[D7OWQ-R[=^\>B7LD[I&X1^(>"1(D2)#8,8M8.5?\@``!`@0($"!` ++M``(!`D03$$VQ++3Z084/GAM9T*!!P\G4HF)^3'29`>3_S8PW0&:DNG)'A`@O ++M(NC008%B"0H4*%"@0($"!0H4=.!ER!`MVHEHRJ*=4!:M7K1H]:*EBQ8MVHEZ ++MT>I%JU>O7KUZ]2S5LU3/4CU+&NI9LE3/DJ5ZEBQ9LF3)$@,&EGBD6["@"9I- ++MFR)$B!`A0H0(>_:LB1!A380(:_9$B+`&7X0U^/#]VH-O3X0(:]:LB1#A!CDH ++MR/RUN?#GPI\_?R[\N7"!'#ER;/Q#T2]TC<(T&"!(DZM&!)2O0"B"8@0(```0($"#\@0(```6*!B!)5 ++M$H[M'JG:AWHEZT>O7J6:IGJ9ZE ++M>I;J6;)4SY*E>I;JI;-DJ9ZE=`PL66)@R9*R!1K0;(JP*T*$-1$B[%D3(4*$ ++M-6LB[%D380V^-1'61%B#;PV^/;_P18@0(<*:76L&,`$!`MJ%/W_^_+GPY\^? ++M/Q?(76A##MJ%/[\BK#ER[]Z1>_?$W#MR[\B]>V+NW;MW3\P]$B3ND;A'@@0) ++M$B2J#!&S8Q:Q2:[X`=$$!`@0($"`S`"B:0:0&3.(^(E$9D*+/BV.B'E5;%@7 ++M<#/>`/\!`@0($"!`@`")U>G?G3LB1$BC@T(:"FDHZ"Q!@0(%'8`C4*'*$"W: ++MB1/1E$4[42]:M'K1ZD6+%DU9M'K1ZM6K5Z]>/4OU+-6S9,E2/4N6+&FP5,^2 ++MI7KU+"E39DF9)4O*EBE;%F+7FCU[=JW9%2'"F@AKUD2($&'-&GQK\*V)$"%" ++MA#5K\*V)L`??'GP1(NQ:$V$`$S[0H/WY\^?/GS]__ORY0.X".7+0+EP8L&<- ++M@'M'[MT[B7LD[I$@48>$F#H[S'1(9(L? ++M$"!`@``!`@0($"!`@``!,L,1A`\26.#Q<&0'+6(_3'1Y`^3_S1L@0(```0($ ++M"!`@,Q!1(G#G#AUITE#004$'!1T47^@X@9I%JYI9JF>IGH9ZENI9LE3/4CU+ENK5TU#/DC)ERI1IL+2@ ++MQX(F>W9%B!!A380]:]9$6+,FPIH(:]9$6!-AS9HU$=9$6!-A#;XU>_;\VK,G ++MPIHU$?HP80+MSY\!?_[\^?/GSY\_%RZ0NT".W)\!$=8`('%/S#TQ]X[<.W)/ ++MS)%[8NZ)N7=/S#T2)$B0P$."Q(0A1W:8>H6$6*)/_(```0($"!`@0(```0($ ++M"!`@0&(1^>&BRI$C.V:Y*9;HQ9LW_T"```$"!`@0($"```$"!,B,0;5\B)!& ++MAPZ*+RA0T$%!1YH(7:A.G#AQXL2):">B18L6K5ZT=-'J):D7K5Z]:/72U:MG ++MJ9ZE>I;J6;)4SU(]2_4L64IGJ5Z]>AKJ:="P#*"&>U58F-(0(4*$-1$BK(D0 ++M(<*:"+O6[(JP)L*:-6LBK,&W9DV$-6O6K(D0(<(>?/CPX<,7(V+N';DGYAZ)>T?ND;AWY!Z)>T?ND1A" ++M8@@)$B1(D"!1AQ8L8I-O/\!`@0($"!`@``!`@0($"!`@`"9T8R2CSO2$$BC0X>.-#IT1.C2 ++MYNGJ6ZM6S5,]2/4N6+-6S ++M5,]2O7KUZFFHIT&9,@W+FE39<B7M#2)`@08*$F`D[7A&; ++M%.0-$"!`@``!`@0($"!`^`'A!P3(#""QO"EA)F'"!%JSJ!!K]6G_!A`@0(`` ++M`0($"!`@0(```0($"!`@0!`-\G'G#CPZ"!#004$'`1U=/C+X.''BQ(D3T:)% ++MJZ>L7K1Z]>I%JQ>M7KUZ]>K5JU?/4KUZENI92F>IGJ5ZEI35TU#/DC)E&I1I ++M:+)@`0E3$DRAB1`APIH(:R*LB1!A380U:R*LB;!F380U:R*L61-AS9HU:]:L ++MB1!AS9X]>_#AV_.KSP!\^+(,`#C@#[`_`_X,&/#G"#DF%X#]PK=F#0`2).Z) ++MN2>&Q+TC]TC<.W*/!(E[8NZ)N4>"!`D2)$B0F"!D4;E$+X```0($"!`@0(`` ++M`3*#'S]^0/@!F<&/B!)55"1(<*.JG))/_R^```$"!`@0($"```$"!`@0($"` ++MO'D#!,@,0Y1\W*DE@@X=.BBDT=$%#Q6J$R>4G5"F[(2R:,JB*8M63UF]>O7J ++MU:M7KYZE>O7JU;-4KYXE99;J6;)4SY(E91HL:="@K(F&92WND3`E8<*>-1'6 ++M1(BP)L*:"&LBK(FP9DV$-6O6K%FS9DV$-6O6K%FS)L*:-6LBK%D38<\>?/A^ ++MX8N`#]^O`0.``0,V8,"`(Q>87!#SY]>:-0``'+DGYMZ1>V+N`21Q3\R1>R3$ ++MW#MR[]X0$D-(D"!!8L*$':8Z3'+%#P@0($"```$"!`B0&?PL6)AA808_?K&\ ++M*?'SX<.'*$,F4GEBE3IDR9,F7*E"E3IJR>AGJ6+"FK5Z]>O7KU ++M+-6K5\^2)0V6-%C2H$&#,@U--#1ILNP>"5.F@$6($&%-A#41UD18$V%-A#41 ++MUJQ9$V%-A#41UJQ9LV;-FC5KUJR)L&;-F@AK(N"+L`??G@@1\.'[-6#``&!_ ++M@`'[PX0)DR/`?JU9`P#`/1+WCI`@<>_(/3'W2-P[K52U?/4CU+EBPILZ1!F08- ++MRIHT:=*D29,F+4A,,$7K%[XU$2)$6!-A380U$=9$6!-A380U:]:L6;-FS9HU ++M:]:L6;-FS9HU$2*L6;,FPIHU:_!%P(O7J6;*D3(,E#1HT:+C19-F"%LN:-&G1@L0$ ++M/B0BX-L38-1'61(BP)L*:"&LBK%FS9LV:-6O6K%FS9LV:-6O6K%FS9LT: ++M?&LBK(D0`=\>?/@BX(N`#]^O+`,&``-VA,D1#[_PK5D#`,"](_?$W#MR[PB) ++M>T?NB;DGAL2]>V)(D!A"@@2)"23$B-GA1H^K%T"```$"!`@0($#XS7AA80:_ ++M6!9F6.CB;=@P$UW>O/]Y\P8($"!`@``!`@0($"!`@``!`@0($"!`@``!`@0( ++M$(!`@`"9$:N?M3MW[MRY(P)5!E0G3IPXH4S9,F7*3BA3IDR9,F7*E"E39DF9 ++MLGKUZM6K9\E2/0V6-&C0H$%#"`TM\"QHT:))BQ8M)DR@]6?-G@@1]JS9$R%" ++MA#41(JR)L&9-A#5KUJQ9LR;"FC5KUJQ9LV;-FC5K(JQ9$V%-A`AKUNS9@V\/ ++MOC7X]N#+DJ4/,&!'F(CY\VL-@#5K`)"X)^;>D7LD[HDA08+$$1+WQ-PC<6\( ++MB7LD2$P@P63"A!VS.DQRQ0\($"!`@``!`@3(#$W\^`'AQR_6#&_>AGES!.[_ ++MS1L@0(```0($"!`@0(```0($"!`@0(```0($"!`@0(```0($"!`@,V)1JN7C ++MSIT[/NXD.7$BV@EERI354Z9,&O7CUE&NIIT*!! ++M0Y,0FRSM:G+CQHT6]_"T:-%B`A\2^"+@6Q-ASYH]:R)$B!`A0H0U$2*LB1!A ++M380U:]9$6+-FS9HU:]:LB;!F380U:R*L6;,&WQY\OW[]VH,O0H0(^&X,`(;G ++MR!$/OR*L6;,&P+TC]X[<$W/O"(E[8DB0N'>$A!@2]\20&$*"Q`028B8PH96@ ++M0Z)/_(```0($"!`@0(```3*#7ZQ8L2Q8,.'-A(DN_S/>O`$"!`@0($"```$" ++M!`@0($"```$"!`@0($"```$"!`@0($"```$"9,:,?M;"]"!`@$`9'R?**#NA ++M3-D)9=&4*5.F3)DR9RA+C1 ++MH@6>%B0F3,"390V^/7LB[(D0(4*$"!$B1(@0(4*$"&LB1%@3(<*:-6O6K%FS ++M9LV:-6O6K%FS9LV:"&O61%BS9\^O7_CP1<"'+\LO8,#$`.OS*\*:-6O6B+E' ++M@@2)>V+ND1!S[\@]$B3ND;A'XAX)$B3$D"`Q@0F3'4B()7(%!`@0($"```$" ++M!`B_&?SX6;#@S9LW;R:Z=/\!]P8($"!`@``!`@0($"!`@``!`@0($"!`@``! ++M`@0($"!`@``!`@0($"!`@``!$JL9O3!E"/0HL7OCT1\.'[!0P8,&"_(JQ9LV;-O2/WQ-P[0H+$$1(D2)`0 ++M0T+,/3$DAI`80H($"28DF.Q@@J2#*U?\@``!`@0($"!`9@"9P<\"$6^MO'D; ++M]JG_RYLW;X"\`0($"!`@0(```0($"!`@0(```0($"!`@0(```0($"!`@0(`` ++M`0($"!`@0&;,0&1OV;)E)Y:56:;,4IEERI0MLV3)DC(-&I1IT&!)@P8-&C1H ++MT*`A1),0+4C@N9'E1H@L^/#AN]&"Q(0)$_#@BX`/WYX]>_;LB;!GSYX]>_;L ++MV;-G3X0($?9$V!,APIXU$2*L6;-FS9HU:]:L`;AFS9H(:]:L61-ASYY?OW[] ++MPH/Q!`2)$A, ++M.#*!"9,=LR1-R ++MX,-W`Q^^$#=:3&`QH44(?'LB[-FS9\^>"'LB[-D384^$/7OV[-FS9\^>"!$B ++M1(@08-6O6K%FS9LV:-6O6K%FS9LV:-1$B_/KUZ]O7Q'6 ++M`%RS9LT],?=(W!-#@L0],22.D"!Q[PB)>R2&D"!!XL@$,1/$,&$RJX.K3_R` ++M``$"!`@0($"```'"SX*W5DJ4#/\S`>X-$"!`@``!`@0($"!`@``!`@0($"!` ++M@``!`@0($"!`@``!`@0($"!`@``!`@0($"!`W@`!`@0(D!F.B$0*1(_"O04+ ++M-%@*H2&$!@T:-#31H*%)DR9-;C1I7&A`E' ++M;J"Y@6;/GCU[]NS9LV=/A`A[]NS9LV?/GCU[]NS9LV?/GCT1]D2($`'?FC5K ++MUJQ9LV;-FC5KUJQ9LV9-!'Q9?OW*D@4?OBR_?OWZ%0'?F@AK[MT[_;LV;-GSYX]>_;LV;-GSYX]>_;LV;-GSYX]$2)$B+!FS9HU:]:L6;-FS9H( ++M:]:LP9?E5Y9?6;+@R_+KUR]\$2*L6;,&SY%[1^Z1(''O"`DQ),3<$T/BGA@2 ++M0X[4(4'B"`DQ3)@P02+)U0L@0(```0($"!`@0(#$LN`-@A(__P#+^1GVZ0T0 ++M($"```$"!`@0($"```$"!`@0($"```$"!`@0($"```$"!`@0($"```$"!`@0 ++M($"```$"!`@0($"```$"!,B;&8[(+`MQ0T.3)DUN-&G2I$F3&TUNW+AQX\:- ++M&\!:9,&7)7WM^[<&W9\^>/7OV[,&WY]>> ++M/7OV[-FS9\^>/7OV[-FS9\^>"'LB1%BS9LV:-6O6K%FS9LV:"/BR_,J2)4N6 ++M+%E^9?F%+T*$-1&.'#ER1,P1$B1('+EW[QZ)>R1(D"!!@L0],21(,#DRH8ZO ++M#HI/&C1LWLMS(D@5?EALWLK1H<2-+ ++M"SQ'6K1HT0)/BR8M;J!!$V+/GCU[]NS9LV8("3%,F-#JD,@5OS=`@``!`@3( ++M#"`S+%CPIL3_SX_;L^84/WYX]^/;LV;/GUYX]>W[MV;/GUYY?OW[AVX-O ++MSYX]>R+@RS+@SY\+?_X,^/4KRZ\!P(#]&9`ERYHU:XX<.7+D"(D)1TB0($&" ++M!`D2)$B0($%"S)`C)$@``$"!`@0($"```$"!`@0($"```$"!`@0($"```$"!`@0($"```'R ++MIHL)1S.```$"!`@0($"```$"!`@0($"``"%BZH:&&S>:W&ARX\:-&S=NW+C1 ++M`N"-&UENW,B2Y4:6&RT&M&A!SM2$%C=NW+AQXT:+&RV:-+EQXT:($'M^[=FS ++M!]^>/?CP[?FU9P^^/;_V[/FU9\^>7[_V_/JUY]>O7WM^[?FU!U^6+'\NM&ES ++MX<^`7UGP_1H`[,\?8`-^K5FSYLB1(V*.,!$S0/&C1M9;MRX,>#&@!M96@QH ++MT8(<'PDN_$WXT^+&C1LW;MQH`K!%BR8W;MSXA6;/GCU[]N#;@V_/KSU[]NS9 ++ML^?7GCU[?NWYM>?7AE^_?NWYM6?/KSU[\&49\.?"A0L7_OSZA2]"EE]_//SY ++M,P`?O@@1CAPY2>&!)B2!P1PV0'""0=$KG2 ++M!`3(&WXS+'AKI430R8\/'_SX&=:ERYLW0(```0($"!`@0(```0($"!`@0(`` ++M`0($"!`@0(```0($"!`@0(```0)DQHP9;X```0($"!`@0(```0($"!`@,X`` ++MB67J1I,;36XTN='D1I,;-V[_;\VH-OSZ\]>_;\`KAGSYY?>W[] ++JVO-KSZ\]>_;LV;-G#[X!?RY, 1996 ++# ++# This file is free software; you can redistribute it and/or modify it ++# under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# A lot of this script is taken from autoconf-2.10. ++ ++# Check that we are running under the correct shell. ++SHELL=${CONFIG_SHELL-/bin/sh} ++echo=echo ++if test "X$1" = X--no-reexec; then ++ # Discard the --no-reexec flag, and continue. ++ shift ++elif test "X$1" = X--fallback-echo; then ++ # Avoid inline document here, it may be left over ++ : ++elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then ++ # Yippee, $echo works! ++ : ++else ++ # Restart under the correct shell. ++ exec "$SHELL" "$0" --no-reexec ${1+"$@"} ++fi ++ ++if test "X$1" = X--fallback-echo; then ++ # used as fallback echo ++ shift ++ cat </dev/null`} ++ case X$UNAME in ++ *-DOS) PATH_SEPARATOR=';' ;; ++ *) PATH_SEPARATOR=':' ;; ++ esac ++fi ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi ++ ++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' || ++ test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then ++ # 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. ++ ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for dir in $PATH /usr/ucb; do ++ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && ++ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && ++ test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then ++ echo="$dir/echo" ++ break ++ fi ++ done ++ IFS="$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' && ++ test "X`(print -r "$echo_test_string") 2>/dev/null`" = 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 ltconfig 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' && ++ test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then ++ # Cool, printf works ++ : ++ elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && ++ test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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 test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' && ++ test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = 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}" "$0" ${1+"$@"} ++ else ++ # Oops. We lost completely, so just stick with echo. ++ echo=echo ++ fi ++ fi ++ fi ++ fi ++fi ++ ++# Sed substitution that helps us do robust quoting. It backslashifies ++# metacharacters that are still active within double-quoted strings. ++Xsed='sed -e s/^X//' ++sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' ++ ++# Same as above, but do not quote variable references. ++double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' ++ ++# Sed substitution to delay expansion of an escaped shell variable in a ++# double_quote_subst'ed string. ++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' ++ ++# The name of this program. ++progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` ++ ++# Constants: ++PROGRAM=ltconfig ++PACKAGE=libtool ++VERSION=1.3.3 ++TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)" ++ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' ++ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' ++rm="rm -f" ++ ++help="Try \`$progname --help' for more information." ++ ++# Global variables: ++default_ofile=libtool ++can_build_shared=yes ++enable_shared=yes ++# All known linkers require a `.a' archive for static linking (except M$VC, ++# which needs '.lib'). ++enable_static=yes ++enable_fast_install=yes ++enable_dlopen=unknown ++enable_win32_dll=no ++ltmain= ++silent= ++srcdir= ++ac_config_guess= ++ac_config_sub= ++host= ++nonopt= ++ofile="$default_ofile" ++verify_host=yes ++with_gcc=no ++with_gnu_ld=no ++need_locks=yes ++ac_ext=c ++objext=o ++libext=a ++exeext= ++cache_file= ++ ++old_AR="$AR" ++old_CC="$CC" ++old_CFLAGS="$CFLAGS" ++old_CPPFLAGS="$CPPFLAGS" ++old_LDFLAGS="$LDFLAGS" ++old_LD="$LD" ++old_LN_S="$LN_S" ++old_LIBS="$LIBS" ++old_NM="$NM" ++old_RANLIB="$RANLIB" ++old_DLLTOOL="$DLLTOOL" ++old_OBJDUMP="$OBJDUMP" ++old_AS="$AS" ++ ++# Parse the command line options. ++args= ++prev= ++for option ++do ++ case "$option" in ++ -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; ++ *) optarg= ;; ++ esac ++ ++ # If the previous option needs an argument, assign it. ++ if test -n "$prev"; then ++ eval "$prev=\$option" ++ prev= ++ continue ++ fi ++ ++ case "$option" in ++ --help) cat <&2 ++ echo "$help" 1>&2 ++ exit 1 ++ ;; ++ ++ *) ++ if test -z "$ltmain"; then ++ ltmain="$option" ++ elif test -z "$host"; then ++# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 ++# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then ++# echo "$progname: warning \`$option' is not a valid host type" 1>&2 ++# fi ++ host="$option" ++ else ++ echo "$progname: too many arguments" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++ fi ;; ++ esac ++done ++ ++if test -z "$ltmain"; then ++ echo "$progname: you must specify a LTMAIN file" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++fi ++ ++if test ! -f "$ltmain"; then ++ echo "$progname: \`$ltmain' does not exist" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++fi ++ ++# Quote any args containing shell metacharacters. ++ltconfig_args= ++for arg ++do ++ case "$arg" in ++ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ++ ltconfig_args="$ltconfig_args '$arg'" ;; ++ *) ltconfig_args="$ltconfig_args $arg" ;; ++ esac ++done ++ ++# A relevant subset of AC_INIT. ++ ++# File descriptor usage: ++# 0 standard input ++# 1 file creation ++# 2 errors and warnings ++# 3 some systems may open it to /dev/tty ++# 4 used on the Kubota Titan ++# 5 compiler messages saved in config.log ++# 6 checking for... messages and results ++if test "$silent" = yes; then ++ exec 6>/dev/null ++else ++ exec 6>&1 ++fi ++exec 5>>./config.log ++ ++# NLS nuisances. ++# Only set LANG and LC_ALL to C if already set. ++# These must not be set unconditionally because not all systems understand ++# e.g. LANG=C (notably SCO). ++if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi ++if test "${LANG+set}" = set; then LANG=C; export LANG; fi ++ ++if test -n "$cache_file" && test -r "$cache_file"; then ++ echo "loading cache $cache_file within ltconfig" ++ . $cache_file ++fi ++ ++if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then ++ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. ++ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ++ ac_n= ac_c=' ++' ac_t=' ' ++ else ++ ac_n=-n ac_c= ac_t= ++ fi ++else ++ ac_n= ac_c='\c' ac_t= ++fi ++ ++if test -z "$srcdir"; then ++ # Assume the source directory is the same one as the path to LTMAIN. ++ srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'` ++ test "$srcdir" = "$ltmain" && srcdir=. ++fi ++ ++trap "$rm conftest*; exit 1" 1 2 15 ++if test "$verify_host" = yes; then ++ # Check for config.guess and config.sub. ++ ac_aux_dir= ++ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do ++ if test -f $ac_dir/config.guess; then ++ ac_aux_dir=$ac_dir ++ break ++ fi ++ done ++ if test -z "$ac_aux_dir"; then ++ echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++ fi ++ ac_config_guess=$ac_aux_dir/config.guess ++ ac_config_sub=$ac_aux_dir/config.sub ++ ++ # Make sure we can run config.sub. ++ if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then : ++ else ++ echo "$progname: cannot run $ac_config_sub" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++ fi ++ ++ echo $ac_n "checking host system type""... $ac_c" 1>&6 ++ ++ host_alias=$host ++ case "$host_alias" in ++ "") ++ if host_alias=`$SHELL $ac_config_guess`; then : ++ else ++ echo "$progname: cannot guess host type; you must specify one" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++ fi ;; ++ esac ++ host=`$SHELL $ac_config_sub $host_alias` ++ echo "$ac_t$host" 1>&6 ++ ++ # Make sure the host verified. ++ test -z "$host" && exit 1 ++ ++elif test -z "$host"; then ++ echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 ++ echo "$help" 1>&2 ++ exit 1 ++else ++ host_alias=$host ++fi ++ ++# Transform linux* to *-*-linux-gnu*, to support old configure scripts. ++case "$host_os" in ++linux-gnu*) ;; ++linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` ++esac ++ ++host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ++host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ++host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ ++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 "${COLLECT_NAMES+set}" != set; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++ fi ++ ;; ++esac ++ ++# Determine commands to create old-style static archives. ++old_archive_cmds='$AR cru $oldlib$oldobjs' ++old_postinstall_cmds='chmod 644 $oldlib' ++old_postuninstall_cmds= ++ ++# Set a sane default for `AR'. ++test -z "$AR" && AR=ar ++ ++# Set a sane default for `OBJDUMP'. ++test -z "$OBJDUMP" && OBJDUMP=objdump ++ ++# If RANLIB is not set, then run the test. ++if test "${RANLIB+set}" != "set"; then ++ result=no ++ ++ echo $ac_n "checking for ranlib... $ac_c" 1>&6 ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for dir in $PATH; do ++ test -z "$dir" && dir=. ++ if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then ++ RANLIB="ranlib" ++ result="ranlib" ++ break ++ fi ++ done ++ IFS="$save_ifs" ++ ++ echo "$ac_t$result" 1>&6 ++fi ++ ++if test -n "$RANLIB"; then ++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" ++ old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" ++fi ++ ++# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin. ++test -z "$DLLTOOL" && DLLTOOL=dlltool ++test -z "$OBJDUMP" && OBJDUMP=objdump ++test -z "$AS" && AS=as ++ ++# Check to see if we are using GCC. ++if test "$with_gcc" != yes || test -z "$CC"; then ++ # If CC is not set, then try to find GCC or a usable CC. ++ if test -z "$CC"; then ++ echo $ac_n "checking for gcc... $ac_c" 1>&6 ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for dir in $PATH; do ++ test -z "$dir" && dir=. ++ if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then ++ CC="gcc" ++ break ++ fi ++ done ++ IFS="$save_ifs" ++ ++ if test -n "$CC"; then ++ echo "$ac_t$CC" 1>&6 ++ else ++ echo "$ac_t"no 1>&6 ++ fi ++ fi ++ ++ # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". ++ if test -z "$CC"; then ++ echo $ac_n "checking for cc... $ac_c" 1>&6 ++ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ cc_rejected=no ++ for dir in $PATH; do ++ test -z "$dir" && dir=. ++ if test -f $dir/cc || test -f $dir/cc$ac_exeext; then ++ if test "$dir/cc" = "/usr/ucb/cc"; then ++ cc_rejected=yes ++ continue ++ fi ++ CC="cc" ++ break ++ fi ++ done ++ IFS="$save_ifs" ++ if test $cc_rejected = yes; then ++ # We found a bogon in the path, so make sure we never use it. ++ set dummy $CC ++ shift ++ if test $# -gt 0; then ++ # We chose a different compiler from the bogus one. ++ # However, it has the same name, so the bogon will be chosen ++ # first if we set CC to just the name; use the full file name. ++ shift ++ set dummy "$dir/cc" "$@" ++ shift ++ CC="$@" ++ fi ++ fi ++ ++ if test -n "$CC"; then ++ echo "$ac_t$CC" 1>&6 ++ else ++ echo "$ac_t"no 1>&6 ++ fi ++ ++ if test -z "$CC"; then ++ echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 ++ exit 1 ++ fi ++ fi ++ ++ # Now see if the compiler is really GCC. ++ with_gcc=no ++ echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 ++ echo "$progname:581: checking whether we are using GNU C" >&5 ++ ++ $rm conftest.c ++ cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ++ with_gcc=yes ++ fi ++ $rm conftest.c ++ echo "$ac_t$with_gcc" 1>&6 ++fi ++ ++# Allow CC to be a program name with arguments. ++set dummy $CC ++compiler="$2" ++ ++echo $ac_n "checking for object suffix... $ac_c" 1>&6 ++$rm conftest* ++echo 'int i = 1;' > conftest.c ++echo "$progname:603: checking for object suffix" >& 5 ++if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then ++ # Append any warnings to the config.log. ++ cat conftest.err 1>&5 ++ ++ for ac_file in conftest.*; do ++ case $ac_file in ++ *.c) ;; ++ *) objext=`echo $ac_file | sed -e s/conftest.//` ;; ++ esac ++ done ++else ++ cat conftest.err 1>&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++fi ++$rm conftest* ++echo "$ac_t$objext" 1>&6 ++ ++echo $ac_n "checking for executable suffix... $ac_c" 1>&6 ++if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_cv_exeext="no" ++ $rm conftest* ++ echo 'main () { return 0; }' > conftest.c ++ echo "$progname:629: checking for executable suffix" >& 5 ++ if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then ++ # Append any warnings to the config.log. ++ cat conftest.err 1>&5 ++ ++ for ac_file in conftest.*; do ++ case $ac_file in ++ *.c | *.err | *.$objext ) ;; ++ *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;; ++ esac ++ done ++ else ++ cat conftest.err 1>&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++ fi ++ $rm conftest* ++fi ++if test "X$ac_cv_exeext" = Xno; then ++ exeext="" ++else ++ exeext="$ac_cv_exeext" ++fi ++echo "$ac_t$ac_cv_exeext" 1>&6 ++ ++echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 ++pic_flag= ++special_shlib_compile_flags= ++wl= ++link_static_flag= ++no_builtin_flag= ++ ++if test "$with_gcc" = yes; then ++ wl='-Wl,' ++ link_static_flag='-static' ++ ++ case "$host_os" in ++ beos* | irix5* | irix6* | osf3* | osf4*) ++ # PIC is the default for these OSes. ++ ;; ++ aix*) ++ # Below there is a dirty hack to force normal static linking with -ldl ++ # The problem is because libdl dynamically linked with both libc and ++ # libC (AIX C++ library), which obviously doesn't included in libraries ++ # list by gcc. This cause undefined symbols with -static flags. ++ # This hack allows C programs to be linked with "-static -ldl", but ++ # we not sure about C++ programs. ++ link_static_flag="$link_static_flag ${wl}-lC" ++ ;; ++ cygwin* | mingw* | os2*) ++ # We can build DLLs from non-PIC. ++ ;; ++ 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'. ++ pic_flag='-m68020 -resident32 -malways-restore-a4' ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec; then ++ pic_flag=-Kconform_pic ++ fi ++ ;; ++ *) ++ pic_flag='-fPIC' ++ ;; ++ esac ++else ++ # PORTME Check for PIC flags for the system compiler. ++ case "$host_os" in ++ aix3* | aix4*) ++ # All AIX code is PIC. ++ link_static_flag='-bnso -bI:/lib/syscalls.exp' ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ # Is there a better link_static_flag that works with the bundled CC? ++ wl='-Wl,' ++ link_static_flag="${wl}-a ${wl}archive" ++ pic_flag='+Z' ++ ;; ++ ++ irix5* | irix6*) ++ wl='-Wl,' ++ link_static_flag='-non_shared' ++ # PIC (with -KPIC) is the default. ++ ;; ++ ++ cygwin* | mingw* | os2*) ++ # We can build DLLs from non-PIC. ++ ;; ++ ++ osf3* | osf4*) ++ # All OSF/1 code is PIC. ++ wl='-Wl,' ++ link_static_flag='-non_shared' ++ ;; ++ ++ sco3.2v5*) ++ pic_flag='-Kpic' ++ link_static_flag='-dn' ++ special_shlib_compile_flags='-belf' ++ ;; ++ ++ solaris*) ++ pic_flag='-KPIC' ++ link_static_flag='-Bstatic' ++ wl='-Wl,' ++ ;; ++ ++ sunos4*) ++ pic_flag='-PIC' ++ link_static_flag='-Bstatic' ++ wl='-Qoption ld ' ++ ;; ++ ++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ pic_flag='-KPIC' ++ link_static_flag='-Bstatic' ++ wl='-Wl,' ++ ;; ++ ++ uts4*) ++ pic_flag='-pic' ++ link_static_flag='-Bstatic' ++ ;; ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ pic_flag='-Kconform_pic' ++ link_static_flag='-Bstatic' ++ fi ++ ;; ++ *) ++ can_build_shared=no ++ ;; ++ esac ++fi ++ ++if test -n "$pic_flag"; then ++ echo "$ac_t$pic_flag" 1>&6 ++ ++ # Check to make sure the pic_flag actually works. ++ echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 ++ $rm conftest* ++ echo "int some_variable = 0;" > conftest.c ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS $pic_flag -DPIC" ++ echo "$progname:776: checking if $compiler PIC flag $pic_flag works" >&5 ++ if { (eval echo $progname:777: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then ++ # Append any warnings to the config.log. ++ cat conftest.err 1>&5 ++ ++ case "$host_os" in ++ hpux9* | hpux10* | hpux11*) ++ # On HP-UX, both CC and GCC only warn that PIC is supported... then they ++ # create non-PIC objects. So, if there were any warnings, we assume that ++ # PIC is not supported. ++ if test -s conftest.err; then ++ echo "$ac_t"no 1>&6 ++ can_build_shared=no ++ pic_flag= ++ else ++ echo "$ac_t"yes 1>&6 ++ pic_flag=" $pic_flag" ++ fi ++ ;; ++ *) ++ echo "$ac_t"yes 1>&6 ++ pic_flag=" $pic_flag" ++ ;; ++ esac ++ else ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ can_build_shared=no ++ pic_flag= ++ echo "$ac_t"no 1>&6 ++ fi ++ CFLAGS="$save_CFLAGS" ++ $rm conftest* ++else ++ echo "$ac_t"none 1>&6 ++fi ++ ++# Check to see if options -o and -c are simultaneously supported by compiler ++echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6 ++$rm -r conftest 2>/dev/null ++mkdir conftest ++cd conftest ++$rm conftest* ++echo "int some_variable = 0;" > conftest.c ++mkdir out ++# According to Tom Tromey, Ian Lance Taylor reported there are C compilers ++# that will create temporary files in the current directory regardless of ++# the output directory. Thus, making CWD read-only will cause this test ++# to fail, enabling locking or at least warning the user not to do parallel ++# builds. ++chmod -w . ++save_CFLAGS="$CFLAGS" ++CFLAGS="$CFLAGS -o out/conftest2.o" ++echo "$progname:829: checking if $compiler supports -c -o file.o" >&5 ++if { (eval echo $progname:830: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then ++ ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s out/conftest.err; then ++ echo "$ac_t"no 1>&6 ++ compiler_c_o=no ++ else ++ echo "$ac_t"yes 1>&6 ++ compiler_c_o=yes ++ fi ++else ++ # Append any errors to the config.log. ++ cat out/conftest.err 1>&5 ++ compiler_c_o=no ++ echo "$ac_t"no 1>&6 ++fi ++CFLAGS="$save_CFLAGS" ++chmod u+w . ++$rm conftest* out/* ++rmdir out ++cd .. ++rmdir conftest ++$rm -r conftest 2>/dev/null ++ ++if test x"$compiler_c_o" = x"yes"; then ++ # Check to see if we can write to a .lo ++ echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6 ++ $rm conftest* ++ echo "int some_variable = 0;" > conftest.c ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -c -o conftest.lo" ++ echo "$progname:862: checking if $compiler supports -c -o file.lo" >&5 ++if { (eval echo $progname:863: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then ++ ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ echo "$ac_t"no 1>&6 ++ compiler_o_lo=no ++ else ++ echo "$ac_t"yes 1>&6 ++ compiler_o_lo=yes ++ fi ++ else ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ compiler_o_lo=no ++ echo "$ac_t"no 1>&6 ++ fi ++ CFLAGS="$save_CFLAGS" ++ $rm conftest* ++else ++ compiler_o_lo=no ++fi ++ ++# Check to see if we can do hard links to lock some files if needed ++hard_links="nottested" ++if test "$compiler_c_o" = no && test "$need_locks" != no; then ++ # do not overwrite the value of need_locks provided by the user ++ echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&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 "$ac_t$hard_links" 1>&6 ++ $rm conftest* ++ if test "$hard_links" = no; then ++ echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2 ++ need_locks=warn ++ fi ++else ++ need_locks=no ++fi ++ ++if test "$with_gcc" = yes; then ++ # Check to see if options -fno-rtti -fno-exceptions are supported by compiler ++ echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6 ++ $rm conftest* ++ echo "int some_variable = 0;" > conftest.c ++ save_CFLAGS="$CFLAGS" ++ CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c" ++ echo "$progname:914: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ++ if { (eval echo $progname:915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then ++ ++ # The compiler can only warn and ignore the option if not recognized ++ # So say no if there are warnings ++ if test -s conftest.err; then ++ echo "$ac_t"no 1>&6 ++ compiler_rtti_exceptions=no ++ else ++ echo "$ac_t"yes 1>&6 ++ compiler_rtti_exceptions=yes ++ fi ++ else ++ # Append any errors to the config.log. ++ cat conftest.err 1>&5 ++ compiler_rtti_exceptions=no ++ echo "$ac_t"no 1>&6 ++ fi ++ CFLAGS="$save_CFLAGS" ++ $rm conftest* ++ ++ if test "$compiler_rtti_exceptions" = "yes"; then ++ no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' ++ else ++ no_builtin_flag=' -fno-builtin' ++ fi ++ ++fi ++ ++# Check for any special shared library compilation flags. ++if test -n "$special_shlib_compile_flags"; then ++ echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 ++ if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : ++ else ++ echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 ++ can_build_shared=no ++ fi ++fi ++ ++echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 ++$rm conftest* ++echo 'main(){return(0);}' > conftest.c ++save_LDFLAGS="$LDFLAGS" ++LDFLAGS="$LDFLAGS $link_static_flag" ++echo "$progname:958: checking if $compiler static flag $link_static_flag works" >&5 ++if { (eval echo $progname:959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ++ echo "$ac_t$link_static_flag" 1>&6 ++else ++ echo "$ac_t"none 1>&6 ++ link_static_flag= ++fi ++LDFLAGS="$save_LDFLAGS" ++$rm conftest* ++ ++if test -z "$LN_S"; then ++ # Check to see if we can use ln -s, or we need hard links. ++ echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 ++ $rm conftest.dat ++ if ln -s X conftest.dat 2>/dev/null; then ++ $rm conftest.dat ++ LN_S="ln -s" ++ else ++ LN_S=ln ++ fi ++ if test "$LN_S" = "ln -s"; then ++ echo "$ac_t"yes 1>&6 ++ else ++ echo "$ac_t"no 1>&6 ++ fi ++fi ++ ++# Make sure LD is an absolute path. ++if test -z "$LD"; then ++ ac_prog=ld ++ if test "$with_gcc" = yes; then ++ # Check if gcc -print-prog-name=ld gives a path. ++ echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 ++ echo "$progname:991: checking for ld used by GCC" >&5 ++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ++ case "$ac_prog" in ++ # Accept absolute paths. ++ [\\/]* | [A-Za-z]:[\\/]*) ++ re_direlt='/[^/][^/]*/\.\./' ++ # Canonicalize the path of ld ++ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` ++ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ++ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` ++ done ++ test -z "$LD" && LD="$ac_prog" ++ ;; ++ "") ++ # If it fails, then pretend we are not 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 $ac_n "checking for GNU ld... $ac_c" 1>&6 ++ echo "$progname:1015: checking for GNU ld" >&5 ++ else ++ echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ++ echo "$progname:1018: checking for non-GNU ld" >&5 ++ fi ++ ++ if test -z "$LD"; then ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for ac_dir in $PATH; do ++ test -z "$ac_dir" && ac_dir=. ++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then ++ LD="$ac_dir/$ac_prog" ++ # Check to see if the program is GNU ld. I'd rather use --version, ++ # but apparently some GNU ld's only accept -v. ++ # Break only if it was the GNU/non-GNU ld that we prefer. ++ if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then ++ test "$with_gnu_ld" != no && break ++ else ++ test "$with_gnu_ld" != yes && break ++ fi ++ fi ++ done ++ IFS="$ac_save_ifs" ++ fi ++ ++ if test -n "$LD"; then ++ echo "$ac_t$LD" 1>&6 ++ else ++ echo "$ac_t"no 1>&6 ++ fi ++ ++ if test -z "$LD"; then ++ echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 ++ exit 1 ++ fi ++fi ++ ++# Check to see if it really is or is not GNU ld. ++echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 ++# I'd rather use --version here, but apparently some GNU ld's only accept -v. ++if $LD -v 2>&1 &5; then ++ with_gnu_ld=yes ++else ++ with_gnu_ld=no ++fi ++echo "$ac_t$with_gnu_ld" 1>&6 ++ ++# See if the linker supports building shared libraries. ++echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 ++ ++allow_undefined_flag= ++no_undefined_flag= ++need_lib_prefix=unknown ++need_version=unknown ++# when you set need_version to no, make sure it does not cause -set_version ++# flags to be left without arguments ++archive_cmds= ++archive_expsym_cmds= ++old_archive_from_new_cmds= ++export_dynamic_flag_spec= ++whole_archive_flag_spec= ++thread_safe_flag_spec= ++hardcode_libdir_flag_spec= ++hardcode_libdir_separator= ++hardcode_direct=no ++hardcode_minus_L=no ++hardcode_shlibpath_var=unsupported ++runpath_var= ++always_export_symbols=no ++export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' ++# include_expsyms should be a list of space-separated symbols to be *always* ++# included in the symbol list ++include_expsyms= ++# exclude_expsyms can be an egrep regular expression 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. ++ ++case "$host_os" in ++cygwin* | mingw*) ++ # 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 "$with_gcc" != yes; then ++ with_gnu_ld=no ++ fi ++ ;; ++ ++esac ++ ++ld_shlibs=yes ++if test "$with_gnu_ld" = yes; then ++ # If archive_cmds runs LD, not CC, wlarc should be empty ++ wlarc='${wl}' ++ ++ # See if GNU ld supports shared libraries. ++ case "$host_os" in ++ aix3* | aix4*) ++ # On AIX, the GNU linker is very broken ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: the GNU linker, at least up to release 2.9.1, is reported ++*** to be unable to reliably create shared libraries on AIX. ++*** Therefore, libtool is disabling shared libraries support. If you ++*** really care for shared libraries, you may want to modify your PATH ++*** so that a non-GNU linker is found, and then restart. ++ ++EOF ++ ;; ++ ++ amigaos*) ++ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ ++ # Samuel A. Falvo II reports ++ # that the semantics of dynamic libraries on AmigaOS, at least up ++ # to version 4, is to share data among multiple programs linked ++ # with the same dynamic library. Since this doesn't match the ++ # behavior of shared libraries on other platforms, we can use ++ # them. ++ ld_shlibs=no ++ ;; ++ ++ beos*) ++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then ++ allow_undefined_flag=unsupported ++ # Joseph Beckenbach says some releases of gcc ++ # support --undefined. This deserves some investigation. FIXME ++ archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ cygwin* | mingw*) ++ # 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=yes ++ ++ # Extract the symbol export list from an `--export-all' def file, ++ # then regenerate the def file from the symbol export list, so that ++ # the compiled dll only exports the symbol export list. ++ export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ ++ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ ++ $DLLTOOL --export-all --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --output-def $objdir/$soname-def $objdir/$soname-ltdll.$objext $libobjs $convenience~ ++ sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]* ; *//" < $objdir/$soname-def > $export_symbols' ++ ++ archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~ ++ _lt_hint=1; ++ for symbol in `cat $export_symbols`; do ++ echo " \$symbol @ \$_lt_hint ; " >> $objdir/$soname-def; ++ _lt_hint=`expr 1 + \$_lt_hint`; ++ done~ ++ test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~ ++ test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~ ++ $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ ++ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ ++ $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~ ++ $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~ ++ $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry@12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts' ++ ++ old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' ++ ;; ++ ++ netbsd*) ++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib' ++ # can we support soname and/or expsyms with a.out? -oliva ++ fi ++ ;; ++ ++ solaris*) ++ if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then ++ ld_shlibs=no ++ cat <&2 ++ ++*** Warning: The releases 2.8.* of the GNU linker cannot reliably ++*** create shared libraries on Solaris systems. Therefore, libtool ++*** is disabling shared libraries support. We urge you to upgrade GNU ++*** binutils to release 2.9.1 or newer. Another option is to modify ++*** your PATH or compiler configuration so that the native linker is ++*** used, and then restart. ++ ++EOF ++ elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts' ++ wlarc= ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ *) ++ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib' ++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ++ else ++ ld_shlibs=no ++ fi ++ ;; ++ esac ++ ++ if test "$ld_shlibs" = yes; then ++ runpath_var=LD_RUN_PATH ++ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' ++ export_dynamic_flag_spec='${wl}--export-dynamic' ++ case $host_os in ++ cygwin* | mingw*) ++ # dlltool doesn't understand --whole-archive et. al. ++ whole_archive_flag_spec= ++ ;; ++ *) ++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' ++ ;; ++ esac ++ 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 $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname' ++ # Note: this linker hardcodes the directories in LIBPATH if there ++ # are no directories specified by -L. ++ hardcode_minus_L=yes ++ if test "$with_gcc" = yes && test -z "$link_static_flag"; then ++ # Neither direct hardcoding nor static linking is supported with a ++ # broken collect2. ++ hardcode_direct=unsupported ++ fi ++ ;; ++ ++ aix4*) ++ hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib' ++ hardcode_libdir_separator=':' ++ if test "$with_gcc" = yes; then ++ collect2name=`${CC} -print-prog-name=collect2` ++ if test -f "$collect2name" && \ ++ strings "$collect2name" | grep resolve_lib_name >/dev/null ++ then ++ # We have reworked collect2 ++ hardcode_direct=yes ++ else ++ # We have old collect2 ++ hardcode_direct=unsupported ++ # It fails to find uninstalled libraries when the uninstalled ++ # path is not listed in the libpath. Setting hardcode_minus_L ++ # to unsupported forces relinking ++ hardcode_minus_L=yes ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_libdir_separator= ++ fi ++ shared_flag='-shared' ++ else ++ shared_flag='${wl}-bM:SRE' ++ hardcode_direct=yes ++ fi ++ allow_undefined_flag=' ${wl}-berok' ++ archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}' ++ archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}' ++ case "$host_os" in aix4.[01]|aix4.[01].*) ++ # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on ++ always_export_symbols=yes ;; ++ esac ++ ;; ++ ++ amigaos*) ++ archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ # see comment about different semantics on the GNU ld section ++ ld_shlibs=no ++ ;; ++ ++ cygwin* | mingw*) ++ # 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 ++ # FIXME: Setting linknames here is a bad hack. ++ archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames=' ++ # The linker will automatically build a .lib file if we build a DLL. ++ old_archive_from_new_cmds='true' ++ # FIXME: Should let the user specify the lib program. ++ old_archive_cmds='lib /OUT:$oldlib$oldobjs' ++ fix_srcfile_path='`cygpath -w $srcfile`' ++ ;; ++ ++ freebsd1*) ++ ld_shlibs=no ++ ;; ++ ++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor ++ # support. Future versions do this automatically, but an explicit c++rt0.o ++ # does not break anything, and helps significantly (at the cost of a little ++ # extra space). ++ freebsd2.2*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /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 $linkopts' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. ++ freebsd*) ++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ hpux9* | hpux10* | hpux11*) ++ case "$host_os" in ++ hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;; ++ *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;; ++ esac ++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' ++ hardcode_libdir_separator=: ++ hardcode_direct=yes ++ hardcode_minus_L=yes # Not in the search PATH, but as the default ++ # location of the library. ++ export_dynamic_flag_spec='${wl}-E' ++ ;; ++ ++ irix5* | irix6*) ++ if test "$with_gcc" = yes; then ++ archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' ++ else ++ archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ netbsd*) ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' # a.out ++ else ++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts' # ELF ++ fi ++ hardcode_libdir_flag_spec='${wl}-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ openbsd*) ++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_direct=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ os2*) ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_minus_L=yes ++ allow_undefined_flag=unsupported ++ archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def' ++ old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' ++ ;; ++ ++ osf3* | osf4*) ++ if test "$with_gcc" = yes; then ++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' ++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' ++ else ++ allow_undefined_flag=' -expect_unresolved \*' ++ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' ++ fi ++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_separator=: ++ ;; ++ ++ sco3.2v5*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ;; ++ ++ solaris*) ++ no_undefined_flag=' -z text' ++ # $CC -shared without GNU ld will not create a library from C++ ++ # object files and a static libstdc++, better avoid it by now ++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts' ++ 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 $linkopts~$rm $lib.exp' ++ hardcode_libdir_flag_spec='-R$libdir' ++ hardcode_shlibpath_var=no ++ case "$host_os" in ++ solaris2.[0-5] | solaris2.[0-5].*) ;; ++ *) # Supported since Solaris 2.6 (maybe 2.5.1?) ++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; ++ esac ++ ;; ++ ++ sunos4*) ++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_direct=yes ++ hardcode_minus_L=yes ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ runpath_var='LD_RUN_PATH' ++ hardcode_shlibpath_var=no ++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie ++ ;; ++ ++ sysv4.3*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_shlibpath_var=no ++ export_dynamic_flag_spec='-Bexport' ++ ;; ++ ++ uts4*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ dgux*) ++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' ++ hardcode_libdir_flag_spec='-L$libdir' ++ hardcode_shlibpath_var=no ++ ;; ++ ++ sysv4*MP*) ++ if test -d /usr/nec ;then ++ # archive_cmds='$LD -G -z text -h $soname -o $lib$libobjs$deplibs' ++ archive_cmds='$LD -G -h $soname -o $lib$libobjs$deplibs' ++ hardcode_shlibpath_var=no ++ runpath_var=LD_RUN_PATH ++ hardcode_runpath_var=yes ++ ld_shlibs=yes ++ fi ++ ;; ++ ++ *) ++ ld_shlibs=no ++ ;; ++ esac ++fi ++echo "$ac_t$ld_shlibs" 1>&6 ++test "$ld_shlibs" = no && can_build_shared=no ++ ++if test -z "$NM"; then ++ echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 ++ case "$NM" in ++ [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path. ++ *) ++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}" ++ for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do ++ test -z "$ac_dir" && ac_dir=. ++ if test -f $ac_dir/nm || test -f $ac_dir/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 ++ if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ++ NM="$ac_dir/nm -B" ++ break ++ elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ++ NM="$ac_dir/nm -p" ++ break ++ else ++ NM=${NM="$ac_dir/nm"} # keep the first match, but ++ continue # so that we can try to find one that supports BSD flags ++ fi ++ fi ++ done ++ IFS="$ac_save_ifs" ++ test -z "$NM" && NM=nm ++ ;; ++ esac ++ echo "$ac_t$NM" 1>&6 ++fi ++ ++# Check for command to grab the raw symbol name followed by C symbol from nm. ++echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 ++ ++# These are sane defaults that work on at least a few old systems. ++# [They come from Ultrix. What could be older than Ultrix?!! ;)] ++ ++# Character class describing NM global symbol codes. ++symcode='[BCDEGRST]' ++ ++# Regexp to match symbols that can be accessed directly from C. ++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' ++ ++# Transform the above into a raw symbol and a C symbol. ++symxfrm='\1 \2\3 \3' ++ ++# Transform an extracted symbol line into a proper C declaration ++global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" ++ ++# Define system-specific variables. ++case "$host_os" in ++aix*) ++ symcode='[BCDT]' ++ ;; ++cygwin* | mingw*) ++ symcode='[ABCDGISTW]' ++ ;; ++hpux*) # Its linker distinguishes data from code symbols ++ global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'" ++ ;; ++irix*) ++ symcode='[BCDEGRST]' ++ ;; ++solaris*) ++ symcode='[BDT]' ++ ;; ++sysv4) ++ symcode='[DFNSTU]' ++ ;; ++esac ++ ++# If we're using GNU nm, then use its standard symbol codes. ++if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then ++ symcode='[ABCDGISTW]' ++fi ++ ++# Try without a prefix undercore, then with it. ++for ac_symprfx in "" "_"; do ++ ++ # Write the raw and C identifiers. ++ global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode\)[ ][ ]*\($ac_symprfx\)$sympat$/$symxfrm/p'" ++ ++ # Check to see that the pipe works correctly. ++ pipe_works=no ++ $rm conftest* ++ cat > conftest.c <&5 ++ if { (eval echo $progname:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then ++ # Now try to grab the symbols. ++ nlist=conftest.nm ++ if { echo "$progname:1596: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then ++ ++ # Try sorting and uniquifying the output. ++ if sort "$nlist" | uniq > "$nlist"T; then ++ mv -f "$nlist"T "$nlist" ++ else ++ rm -f "$nlist"T ++ fi ++ ++ # Make sure that we snagged all the symbols we need. ++ if egrep ' nm_test_var$' "$nlist" >/dev/null; then ++ if egrep ' nm_test_func$' "$nlist" >/dev/null; then ++ cat < conftest.c ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++EOF ++ # Now generate the symbol file. ++ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c' ++ ++ cat <> conftest.c ++#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/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c ++ cat <<\EOF >> conftest.c ++ {0, (lt_ptr_t) 0} ++}; ++ ++#ifdef __cplusplus ++} ++#endif ++EOF ++ # Now try linking the two files. ++ mv conftest.$objext conftstm.$objext ++ save_LIBS="$LIBS" ++ save_CFLAGS="$CFLAGS" ++ LIBS="conftstm.$objext" ++ CFLAGS="$CFLAGS$no_builtin_flag" ++ if { (eval echo $progname:1648: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ++ pipe_works=yes ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++ fi ++ LIBS="$save_LIBS" ++ else ++ echo "cannot find nm_test_func in $nlist" >&5 ++ fi ++ else ++ echo "cannot find nm_test_var in $nlist" >&5 ++ fi ++ else ++ echo "cannot run $global_symbol_pipe" >&5 ++ fi ++ else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.c >&5 ++ fi ++ $rm conftest* conftst* ++ ++ # Do not use the global_symbol_pipe unless it works. ++ if test "$pipe_works" = yes; then ++ break ++ else ++ global_symbol_pipe= ++ fi ++done ++if test "$pipe_works" = yes; then ++ echo "${ac_t}ok" 1>&6 ++else ++ echo "${ac_t}failed" 1>&6 ++fi ++ ++if test -z "$global_symbol_pipe"; then ++ global_symbol_to_cdecl= ++fi ++ ++# Check hardcoding attributes. ++echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 ++hardcode_action= ++if test -n "$hardcode_libdir_flag_spec" || \ ++ test -n "$runpath_var"; then ++ ++ # We can hardcode non-existant directories. ++ if test "$hardcode_direct" != no && ++ # If the only mechanism to avoid hardcoding is shlibpath_var, we ++ # have to relink, otherwise we might link with an installed library ++ # when we should be linking with a yet-to-be-installed one ++ ## test "$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 "$ac_t$hardcode_action" 1>&6 ++ ++ ++reload_flag= ++reload_cmds='$LD$reload_flag -o $output$reload_objs' ++echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 ++# PORTME Some linkers may need a different reload flag. ++reload_flag='-r' ++echo "$ac_t$reload_flag" 1>&6 ++test -n "$reload_flag" && reload_flag=" $reload_flag" ++ ++# PORTME Fill in your ld.so characteristics ++library_names_spec= ++libname_spec='lib$name' ++soname_spec= ++postinstall_cmds= ++postuninstall_cmds= ++finish_cmds= ++finish_eval= ++shlibpath_var= ++shlibpath_overrides_runpath=unknown ++version_type=none ++dynamic_linker="$host_os ld.so" ++sys_lib_dlsearch_path_spec="/lib /usr/lib" ++sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" ++file_magic_cmd= ++file_magic_test_file= ++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 egrep 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. ++echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 ++case "$host_os" in ++aix3*) ++ version_type=linux ++ library_names_spec='${libname}${release}.so$versuffix $libname.a' ++ shlibpath_var=LIBPATH ++ ++ # AIX has no versioning support, so we append a major version to the name. ++ soname_spec='${libname}${release}.so$major' ++ ;; ++ ++aix4*) ++ version_type=linux ++ # AIX 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. ++ # We preserve .a as extension for shared libraries though AIX4.2 ++ # and later linker supports .so ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a' ++ shlibpath_var=LIBPATH ++ deplibs_check_method=pass_all ++ ;; ++ ++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}.so' ++ dynamic_linker="$host_os ld.so" ++ shlibpath_var=LIBRARY_PATH ++ deplibs_check_method=pass_all ++ lt_cv_dlopen="load_add_on" ++ lt_cv_dlopen_libs= ++ lt_cv_dlopen_self=yes ++ ;; ++ ++bsdi4*) ++ version_type=linux ++ library_names_spec='${libname}.so$major ${libname}.so' ++ soname_spec='${libname}.so' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/shlib/libc.so ++ 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*) ++ version_type=windows ++ need_version=no ++ need_lib_prefix=no ++ if test "$with_gcc" = yes; then ++ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a' ++ else ++ library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' ++ fi ++ dynamic_linker='Win32 ld.exe' ++ deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' ++ file_magic_cmd='${OBJDUMP} -f' ++ # FIXME: first we should search . and the directory the executable is in ++ shlibpath_var=PATH ++ lt_cv_dlopen="LoadLibrary" ++ lt_cv_dlopen_libs= ++ ;; ++ ++freebsd1*) ++ dynamic_linker=no ++ ;; ++ ++freebsd*) ++ objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` ++ version_type=freebsd-$objformat ++ case "$version_type" in ++ freebsd-elf*) ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /usr/lib/libc.so*` ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ need_version=no ++ need_lib_prefix=no ++ ;; ++ freebsd-*) ++ deplibs_check_method=unknown ++ library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' ++ need_version=yes ++ ;; ++ esac ++ finish_cmds='PATH="\$PATH:/sbin" OBJFORMAT="'"$objformat"'" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ case "$host_os" in ++ freebsd2* | freebsd3.[01]*) ++ shlibpath_overrides_runpath=yes ++ ;; ++ *) # from 3.2 on ++ shlibpath_overrides_runpath=no ++ ;; ++ esac ++ ;; ++ ++gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++hpux9* | hpux10* | hpux11*) ++ # Give a soname corresponding to the major version so that dld.sl refuses to ++ # link against other versions. ++ dynamic_linker="$host_os dld.sl" ++ version_type=sunos ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_var=SHLIB_PATH ++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH ++ library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' ++ soname_spec='${libname}${release}.sl$major' ++ # HP-UX runs *really* slowly unless shared libraries are mode 555. ++ postinstall_cmds='chmod 555 $lib' ++ ;; ++ ++irix5* | irix6*) ++ version_type=irix ++ need_lib_prefix=no ++ need_version=no ++ soname_spec='${libname}${release}.so.$major' ++ library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so' ++ case "$host_os" in ++ irix5*) ++ libsuff= shlibsuff= ++ # this will be overridden with pass_all, but let us keep it just in case ++ deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" ++ ;; ++ *) ++ case "$LD" in # libtool.m4 will add one of these switches to LD ++ *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; ++ *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; ++ *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;; ++ *) libsuff= shlibsuff= libmagic=never-match;; ++ esac ++ # this will be overridden with pass_all, but let us keep it just in case ++ deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" ++ ;; ++ 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}" ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /lib${libsuff}/libc.so*` ++ deplibs_check_method='pass_all' ++ ;; ++ ++# No shared lib support for Linux oldld, aout, or coff. ++linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) ++ dynamic_linker=no ++ ;; ++ ++# This must be Linux ELF. ++linux-gnu*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=no ++ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` ++ ++ if test -f /lib/ld.so.1; then ++ dynamic_linker='GNU ld.so' ++ else ++ # Only the GNU ld.so supports shared libraries on MkLinux. ++ case "$host_cpu" in ++ *) dynamic_linker='Linux ld.so' ;; ++ esac ++ fi ++ ;; ++ ++netbsd*) ++ version_type=sunos ++ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then ++ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ dynamic_linker='NetBSD (a.out) ld.so' ++ else ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' ++ soname_spec='${libname}${release}.so$major' ++ dynamic_linker='NetBSD ld.elf_so' ++ fi ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++openbsd*) ++ version_type=sunos ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ need_version=no ++ fi ++ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++os2*) ++ libname_spec='$name' ++ need_lib_prefix=no ++ library_names_spec='$libname.dll $libname.a' ++ dynamic_linker='OS/2 ld.exe' ++ shlibpath_var=LIBPATH ++ ;; ++ ++osf3* | osf4*) ++ version_type=osf ++ need_version=no ++ soname_spec='${libname}${release}.so' ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' ++ shlibpath_var=LD_LIBRARY_PATH ++ # this will be overridden with pass_all, but let us keep it just in case ++ deplibs_check_method='file_magic COFF format alpha shared library' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/shlib/libc.so ++ deplibs_check_method='pass_all' ++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" ++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ++ ;; ++ ++sco3.2v5*) ++ version_type=osf ++ soname_spec='${libname}${release}.so$major' ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++solaris*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ # ldd complains unless libraries are executable ++ postinstall_cmds='chmod +x $lib' ++ deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib" ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=/lib/libc.so ++ ;; ++ ++sunos4*) ++ version_type=sunos ++ library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' ++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' ++ shlibpath_var=LD_LIBRARY_PATH ++ shlibpath_overrides_runpath=yes ++ if test "$with_gnu_ld" = yes; then ++ need_lib_prefix=no ++ fi ++ need_version=yes ++ ;; ++ ++sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) ++ version_type=linux ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ case "$host_vendor" in ++ ncr) ++ deplibs_check_method='pass_all' ++ ;; ++ motorola) ++ need_lib_prefix=no ++ need_version=no ++ shlibpath_overrides_runpath=no ++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ++ 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]' ++ file_magic_cmd=/usr/bin/file ++ file_magic_test_file=`echo /usr/lib/libc.so*` ++ ;; ++ esac ++ ;; ++ ++uts4*) ++ version_type=linux ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++dgux*) ++ version_type=linux ++ need_lib_prefix=no ++ need_version=no ++ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' ++ soname_spec='${libname}${release}.so$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ ;; ++ ++sysv4*MP*) ++ if test -d /usr/nec ;then ++ version_type=linux ++ library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' ++ soname_spec='$libname.so.$major' ++ shlibpath_var=LD_LIBRARY_PATH ++ fi ++ ;; ++ ++*) ++ dynamic_linker=no ++ ;; ++esac ++echo "$ac_t$dynamic_linker" 1>&6 ++test "$dynamic_linker" = no && can_build_shared=no ++ ++# Report the final consequences. ++echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 ++ ++# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in ++# configure.in, otherwise build static only libraries. ++case "$host_os" in ++cygwin* | mingw* | os2*) ++ if test x$can_build_shared = xyes; then ++ test x$enable_win32_dll = xno && can_build_shared=no ++ echo "checking if package supports dlls... $can_build_shared" 1>&6 ++ fi ++;; ++esac ++ ++if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then ++ case "$deplibs_check_method" in ++ "file_magic "*) ++ file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" ++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | ++ egrep "$file_magic_regex" > /dev/null; then ++ : ++ else ++ cat <&2 ++ ++*** Warning: the command libtool uses to detect shared libraries, ++*** $file_magic_cmd, produces output that libtool cannot recognize. ++*** The result is that libtool may fail to recognize shared libraries ++*** as such. This will affect the creation of libtool libraries that ++*** depend on shared libraries, but programs linked with such libtool ++*** libraries will work regardless of this problem. Nevertheless, you ++*** may want to report the problem to your system manager and/or to ++*** bug-libtool@gnu.org ++ ++EOF ++ fi ;; ++ esac ++fi ++ ++echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&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*) ++ test "$enable_shared" = yes && enable_static=no ++ ;; ++esac ++ ++echo "$ac_t$enable_shared" 1>&6 ++ ++# Make sure either enable_shared or enable_static is yes. ++test "$enable_shared" = yes || enable_static=yes ++ ++echo "checking whether to build static libraries... $enable_static" 1>&6 ++ ++if test "$hardcode_action" = relink; then ++ # Fast installation is not supported ++ enable_fast_install=no ++elif test "$shlibpath_overrides_runpath" = yes || ++ test "$enable_shared" = no; then ++ # Fast installation is not necessary ++ enable_fast_install=needless ++fi ++ ++echo $ac_n "checking for objdir... $ac_c" 1>&6 ++rm -f .libs 2>/dev/null ++mkdir .libs 2>/dev/null ++if test -d .libs; then ++ objdir=.libs ++else ++ # MS-DOS does not allow filenames that begin with a dot. ++ objdir=_libs ++fi ++rmdir .libs 2>/dev/null ++echo "$ac_t$objdir" 1>&6 ++ ++if test "x$enable_dlopen" != xyes; then ++ enable_dlopen=unknown ++ enable_dlopen_self=unknown ++ enable_dlopen_self_static=unknown ++else ++if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then ++ lt_cv_dlopen=no lt_cv_dlopen_libs= ++echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ++echo "$progname:2170: checking for dlopen in -ldl" >&5 ++ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldl $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for dlopen""... $ac_c" 1>&6 ++echo "$progname:2207: checking for dlopen" >&5 ++if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++/* Override any gcc2 internal prototype to avoid an error. */ ++/* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++char dlopen(); ++ ++int main() { ++ ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined (__stub_dlopen) || defined (__stub___dlopen) ++choke me ++#else ++dlopen(); ++#endif ++ ++; return 0; } ++EOF ++if { (eval echo $progname:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_dlopen=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_dlopen=no" ++fi ++rm -f conftest* ++fi ++if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dlopen" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 ++echo "$progname:2251: checking for dld_link in -ldld" >&5 ++ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldld $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for shl_load""... $ac_c" 1>&6 ++echo "$progname:2288: checking for shl_load" >&5 ++if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++/* Override any gcc2 internal prototype to avoid an error. */ ++/* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++char shl_load(); ++ ++int main() { ++ ++/* The GNU C library defines this for functions which it implements ++ to always fail with ENOSYS. Some functions are actually named ++ something starting with __ and the normal name is an alias. */ ++#if defined (__stub_shl_load) || defined (__stub___shl_load) ++choke me ++#else ++shl_load(); ++#endif ++ ++; return 0; } ++EOF ++if { (eval echo $progname:2315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_func_shl_load=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_func_shl_load=no" ++fi ++rm -f conftest* ++fi ++ ++if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="shl_load" ++else ++ echo "$ac_t""no" 1>&6 ++echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ++echo "$progname:2333: checking for shl_load in -ldld" >&5 ++ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` ++if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ ac_save_LIBS="$LIBS" ++LIBS="-ldld $LIBS" ++cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=yes" ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_lib_$ac_lib_var=no" ++fi ++rm -f conftest* ++LIBS="$ac_save_LIBS" ++ ++fi ++if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" ++else ++ echo "$ac_t""no" 1>&6 ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++ ++fi ++ ++fi ++ ++ if test "x$lt_cv_dlopen" != xno; then ++ enable_dlopen=yes ++ fi ++ ++ case "$lt_cv_dlopen" in ++ dlopen) ++for ac_hdr in dlfcn.h; do ++ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ++echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ++echo "$progname:2395: checking for $ac_hdr" >&5 ++if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ cat > conftest.$ac_ext < ++int fnord = 0; ++EOF ++ac_try="$ac_compile conftest.$ac_ext >/dev/null 2>conftest.out" ++{ (eval echo $progname:2405: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ++ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ++if test -z "$ac_err"; then ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=yes" ++else ++ echo "$ac_err" >&5 ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -rf conftest* ++ eval "ac_cv_header_$ac_safe=no" ++fi ++rm -f conftest* ++fi ++if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ++ echo "$ac_t""yes" 1>&6 ++else ++ echo "$ac_t""no" 1>&6 ++fi ++done ++ ++ if test "x$ac_cv_header_dlfcn_h" = xyes; then ++ CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" ++ fi ++ eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" ++ LIBS="$lt_cv_dlopen_libs $LIBS" ++ ++ echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 ++echo "$progname:2433: checking whether a program can dlopen itself" >&5 ++if test "${lt_cv_dlopen_self+set}" = set; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ if test "$cross_compiling" = yes; then ++ lt_cv_dlopen_self=cross ++ else ++ cat > conftest.c < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LTDL_GLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LTDL_GLOBAL DL_GLOBAL ++# else ++# define LTDL_GLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LTDL_LAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LTDL_LAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LTDL_LAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LTDL_LAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LTDL_LAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LTDL_LAZY_OR_NOW DL_NOW ++# else ++# define LTDL_LAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++fnord() { int i=42;} ++main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); ++ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); ++ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } ++ ++EOF ++if { (eval echo $progname:2487: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null ++then ++ lt_cv_dlopen_self=yes ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -fr conftest* ++ lt_cv_dlopen_self=no ++fi ++rm -fr conftest* ++fi ++ ++fi ++ ++echo "$ac_t""$lt_cv_dlopen_self" 1>&6 ++ ++ if test "$lt_cv_dlopen_self" = yes; then ++ LDFLAGS="$LDFLAGS $link_static_flag" ++ echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 ++echo "$progname:2506: checking whether a statically linked program can dlopen itself" >&5 ++if test "${lt_cv_dlopen_self_static+set}" = set; then ++ echo $ac_n "(cached) $ac_c" 1>&6 ++else ++ if test "$cross_compiling" = yes; then ++ lt_cv_dlopen_self_static=cross ++ else ++ cat > conftest.c < ++#endif ++ ++#include ++ ++#ifdef RTLD_GLOBAL ++# define LTDL_GLOBAL RTLD_GLOBAL ++#else ++# ifdef DL_GLOBAL ++# define LTDL_GLOBAL DL_GLOBAL ++# else ++# define LTDL_GLOBAL 0 ++# endif ++#endif ++ ++/* We may have to define LTDL_LAZY_OR_NOW in the command line if we ++ find out it does not work in some platform. */ ++#ifndef LTDL_LAZY_OR_NOW ++# ifdef RTLD_LAZY ++# define LTDL_LAZY_OR_NOW RTLD_LAZY ++# else ++# ifdef DL_LAZY ++# define LTDL_LAZY_OR_NOW DL_LAZY ++# else ++# ifdef RTLD_NOW ++# define LTDL_LAZY_OR_NOW RTLD_NOW ++# else ++# ifdef DL_NOW ++# define LTDL_LAZY_OR_NOW DL_NOW ++# else ++# define LTDL_LAZY_OR_NOW 0 ++# endif ++# endif ++# endif ++# endif ++#endif ++ ++fnord() { int i=42;} ++main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW); ++ if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); ++ if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } ++ ++EOF ++if { (eval echo $progname:2560: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null ++then ++ lt_cv_dlopen_self_static=yes ++else ++ echo "$progname: failed program was:" >&5 ++ cat conftest.$ac_ext >&5 ++ rm -fr conftest* ++ lt_cv_dlopen_self_static=no ++fi ++rm -fr conftest* ++fi ++ ++fi ++ ++echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 ++fi ++ ;; ++ 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 ++ ++# Copy echo and quote the copy, instead of the original, because it is ++# used later. ++ltecho="$echo" ++if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then ++ ltecho="$CONFIG_SHELL \$0 --fallback-echo" ++fi ++LTSHELL="$SHELL" ++ ++LTCONFIG_VERSION="$VERSION" ++ ++# Only quote variables if we're using ltmain.sh. ++case "$ltmain" in ++*.sh) ++ # Now quote all the things that may contain metacharacters. ++ for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \ ++ old_LD old_LDFLAGS old_LIBS \ ++ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \ ++ AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \ ++ reload_flag reload_cmds wl \ ++ pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ ++ thread_safe_flag_spec whole_archive_flag_spec libname_spec \ ++ library_names_spec soname_spec \ ++ RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ ++ old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \ ++ file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \ ++ finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ ++ hardcode_libdir_flag_spec hardcode_libdir_separator \ ++ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ ++ compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do ++ ++ case "$var" in ++ reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ ++ old_postinstall_cmds | old_postuninstall_cmds | \ ++ export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ ++ postinstall_cmds | postuninstall_cmds | \ ++ finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) ++ # Double-quote double-evaled strings. ++ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ++ ;; ++ *) ++ eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" ++ ;; ++ esac ++ done ++ ++ case "$ltecho" in ++ *'\$0 --fallback-echo"') ++ ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` ++ ;; ++ esac ++ ++ trap "$rm \"$ofile\"; exit 1" 1 2 15 ++ echo "creating $ofile" ++ $rm "$ofile" ++ cat < "$ofile" ++#! $SHELL ++ ++# `$echo "$ofile" | 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 ltconfig or ltmain.sh. ++# ++# Copyright (C) 1996-1999 Free Software Foundation, Inc. ++# Gordon Matzigkeit , 1996 ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 2 of the License, or ++# (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++# ++# As a special exception to the GNU General Public License, if you ++# distribute this file as part of a program that contains a ++# configuration script generated by Autoconf, you may include it under ++# the same distribution terms that you use for the rest of that program. ++ ++# Sed that helps us avoid accidentally triggering echo(1) options like -n. ++Xsed="sed -e s/^X//" ++ ++# The HP-UX ksh and POSIX shell print the target directory to stdout ++# if CDPATH is set. ++if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi ++ ++### BEGIN LIBTOOL CONFIG ++EOF ++ cfgfile="$ofile" ++ ;; ++ ++*) ++ # Double-quote the variables that need it (for aesthetics). ++ for var in old_CC old_CFLAGS old_CPPFLAGS \ ++ old_LD old_LDFLAGS old_LIBS \ ++ old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do ++ eval "$var=\\\"\$var\\\"" ++ done ++ ++ # Just create a config file. ++ cfgfile="$ofile.cfg" ++ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 ++ echo "creating $cfgfile" ++ $rm "$cfgfile" ++ cat < "$cfgfile" ++# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file. ++# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) ++EOF ++ ;; ++esac ++ ++cat <> "$cfgfile" ++# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`: ++# ++# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\ ++# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\ ++# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\ ++# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\ ++# $0$ltconfig_args ++# ++# Compiler and other test output produced by $progname, useful for ++# debugging $progname, is in ./config.log if it exists. ++ ++# The version of $progname that generated this script. ++LTCONFIG_VERSION=$LTCONFIG_VERSION ++ ++# Shell to use when invoking shell scripts. ++SHELL=$LTSHELL ++ ++# 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 optimize for fast installation. ++fast_install=$enable_fast_install ++ ++# The host system. ++host_alias=$host_alias ++host=$host ++ ++# An echo program that does not interpret backslashes. ++echo=$ltecho ++ ++# The archiver. ++AR=$AR ++ ++# The default C compiler. ++CC=$CC ++ ++# The linker used to build libraries. ++LD=$LD ++ ++# Whether we need hard or soft links. ++LN_S=$LN_S ++ ++# A BSD-compatible nm program. ++NM=$NM ++ ++# 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=$reload_flag ++reload_cmds=$reload_cmds ++ ++# How to pass a linker flag through the compiler. ++wl=$wl ++ ++# Object file suffix (normally "o"). ++objext="$objext" ++ ++# Old archive suffix (normally "a"). ++libext="$libext" ++ ++# Executable file suffix (normally ""). ++exeext="$exeext" ++ ++# Additional compiler flags for building library objects. ++pic_flag=$pic_flag ++ ++# Does compiler simultaneously support -c and -o options? ++compiler_c_o=$compiler_c_o ++ ++# Can we write directly to a .lo ? ++compiler_o_lo=$compiler_o_lo ++ ++# Must we lock files when doing compilation ? ++need_locks=$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=$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=$link_static_flag ++ ++# Compiler flag to turn off builtin functions. ++no_builtin_flag=$no_builtin_flag ++ ++# Compiler flag to allow reflexive dlopens. ++export_dynamic_flag_spec=$export_dynamic_flag_spec ++ ++# Compiler flag to generate shared objects directly from archives. ++whole_archive_flag_spec=$whole_archive_flag_spec ++ ++# Compiler flag to generate thread-safe objects. ++thread_safe_flag_spec=$thread_safe_flag_spec ++ ++# Library versioning type. ++version_type=$version_type ++ ++# Format of library name prefix. ++libname_spec=$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=$library_names_spec ++ ++# The coded name of the library, if different from the real name. ++soname_spec=$soname_spec ++ ++# Commands used to build and install an old-style archive. ++RANLIB=$RANLIB ++old_archive_cmds=$old_archive_cmds ++old_postinstall_cmds=$old_postinstall_cmds ++old_postuninstall_cmds=$old_postuninstall_cmds ++ ++# Create an old-style archive from a shared archive. ++old_archive_from_new_cmds=$old_archive_from_new_cmds ++ ++# Commands used to build and install a shared archive. ++archive_cmds=$archive_cmds ++archive_expsym_cmds=$archive_expsym_cmds ++postinstall_cmds=$postinstall_cmds ++postuninstall_cmds=$postuninstall_cmds ++ ++# Method to check whether dependent libraries are shared objects. ++deplibs_check_method=$deplibs_check_method ++ ++# Command to use when deplibs_check_method == file_magic. ++file_magic_cmd=$file_magic_cmd ++ ++# Flag that allows shared libraries with undefined symbols to be built. ++allow_undefined_flag=$allow_undefined_flag ++ ++# Flag that forces no undefined symbols. ++no_undefined_flag=$no_undefined_flag ++ ++# Commands used to finish a libtool library installation in a directory. ++finish_cmds=$finish_cmds ++ ++# Same as above, but a single script fragment to be evaled but not shown. ++finish_eval=$finish_eval ++ ++# Take the output of nm and produce a listing of raw symbols and C names. ++global_symbol_pipe=$global_symbol_pipe ++ ++# Transform the output of nm in a proper C declaration ++global_symbol_to_cdecl=$global_symbol_to_cdecl ++ ++# This is the shared library runtime path variable. ++runpath_var=$runpath_var ++ ++# This is the shared library path variable. ++shlibpath_var=$shlibpath_var ++ ++# Is shlibpath searched before the hard-coded library search path? ++shlibpath_overrides_runpath=$shlibpath_overrides_runpath ++ ++# How to hardcode a shared library path into an executable. ++hardcode_action=$hardcode_action ++ ++# Flag to hardcode \$libdir into a binary during linking. ++# This must work even if \$libdir does not exist. ++hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec ++ ++# Whether we need a single -rpath flag with a separated argument. ++hardcode_libdir_separator=$hardcode_libdir_separator ++ ++# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the ++# resulting binary. ++hardcode_direct=$hardcode_direct ++ ++# Set to yes if using the -LDIR flag during linking hardcodes DIR into the ++# resulting binary. ++hardcode_minus_L=$hardcode_minus_L ++ ++# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into ++# the resulting binary. ++hardcode_shlibpath_var=$hardcode_shlibpath_var ++ ++# Compile-time system search path for libraries ++sys_lib_search_path_spec=$sys_lib_search_path_spec ++ ++# Run-time system search path for libraries ++sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec ++ ++# Fix the shell variable \$srcfile for the compiler. ++fix_srcfile_path="$fix_srcfile_path" ++ ++# Set to yes if exported symbols are required. ++always_export_symbols=$always_export_symbols ++ ++# The commands to list exported symbols. ++export_symbols_cmds=$export_symbols_cmds ++ ++# Symbols that should not be listed in the preloaded symbols. ++exclude_expsyms=$exclude_expsyms ++ ++# Symbols that must always be exported. ++include_expsyms=$include_expsyms ++ ++EOF ++ ++case "$ltmain" in ++*.sh) ++ echo '### END LIBTOOL CONFIG' >> "$ofile" ++ echo >> "$ofile" ++ case "$host_os" in ++ aix3*) ++ cat <<\EOF >> "$ofile" ++ ++# 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 "${COLLECT_NAMES+set}" != set; then ++ COLLECT_NAMES= ++ export COLLECT_NAMES ++fi ++EOF ++ ;; ++ esac ++ ++ # Append the ltmain.sh script. ++ sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1) ++ ++ chmod +x "$ofile" ++ ;; ++ ++*) ++ # Compile the libtool program. ++ echo "FIXME: would compile $ltmain" ++ ;; ++esac ++ ++test -n "$cache_file" || exit 0 ++ ++# AC_CACHE_SAVE ++trap '' 1 2 15 ++cat > confcache <<\EOF ++# This file is a shell script that caches the results of configure ++# tests run on this system so they can be shared between configure ++# scripts and configure runs. It is not useful on other systems. ++# If it contains results you don't want to keep, you may remove or edit it. ++# ++# By default, configure uses ./config.cache as the cache file, ++# creating it if it does not exist already. You can give configure ++# the --cache-file=FILE option to use a different cache file; that is ++# what configure does when it calls configure scripts in ++# subdirectories, so they share the cache. ++# Giving --cache-file=/dev/null disables caching, for debugging configure. ++# config.status only pays attention to the cache file if you give it the ++# --recheck option to rerun configure. ++# ++EOF ++# The following way of writing the cache mishandles newlines in values, ++# but we know of no workaround that is simple, portable, and efficient. ++# So, don't put newlines in cache variables' values. ++# Ultrix sh set writes to stderr and can't be redirected directly, ++# and sets the high bit in the cache file unless we assign to the vars. ++(set) 2>&1 | ++ case `(ac_space=' '; set | grep ac_space) 2>&1` in ++ *ac_space=\ *) ++ # `set' does not quote correctly, so add quotes (double-quote substitution ++ # turns \\\\ into \\, and sed turns \\ into \). ++ sed -n \ ++ -e "s/'/'\\\\''/g" \ ++ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ++ ;; ++ *) ++ # `set' quotes correctly as required by POSIX, so do not add quotes. ++ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ++ ;; ++ esac >> confcache ++if cmp -s $cache_file confcache; then ++ : ++else ++ if test -w $cache_file; then ++ echo "updating cache $cache_file" ++ cat confcache > $cache_file ++ else ++ echo "not updating unwritable cache $cache_file" ++ fi ++fi ++rm -f confcache ++ ++exit 0 ++ ++# Local Variables: ++# mode:shell-script ++# sh-indentation:2 ++# End: diff --git a/openembedded/packages/jpeg/jpeg-6b/ldflags.patch b/openembedded/packages/jpeg/jpeg-6b/ldflags.patch new file mode 100644 index 000000000..727327bc6 --- /dev/null +++ b/openembedded/packages/jpeg/jpeg-6b/ldflags.patch @@ -0,0 +1,16 @@ + +# +# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher +# + +--- jpeg-6b/makefile.cfg~ldflags ++++ jpeg-6b/makefile.cfg +@@ -169,7 +169,7 @@ + # with libtool: + libjpeg.la: @A2K_DEPS@ $(LIBOBJECTS) + $(LIBTOOL) --mode=link $(CC) -o libjpeg.la $(LIBOBJECTS) \ +- -rpath $(libdir) -version-info $(JPEG_LIB_VERSION) ++ -rpath $(libdir) -version-info $(JPEG_LIB_VERSION) $(LDFLAGS) + + # sample programs: + diff --git a/openembedded/packages/jpeg/jpeg-6b/paths.patch b/openembedded/packages/jpeg/jpeg-6b/paths.patch new file mode 100644 index 000000000..014bf4ec0 --- /dev/null +++ b/openembedded/packages/jpeg/jpeg-6b/paths.patch @@ -0,0 +1,77 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- jpeg-6b/makefile.cfg~paths.patch ++++ jpeg-6b/makefile.cfg +@@ -7,17 +7,18 @@ + # For compiling with source and object files in different directories. + srcdir = @srcdir@ + VPATH = @srcdir@ ++DESTDIR = @DESTDIR@ + + # Where to install the programs and man pages. + prefix = @prefix@ + exec_prefix = @exec_prefix@ +-bindir = $(exec_prefix)/bin +-libdir = $(exec_prefix)/lib +-includedir = $(prefix)/include ++bindir = @bindir@ ++libdir = @libdir@ ++includedir = @includedir@ + binprefix = + manprefix = + manext = 1 +-mandir = $(prefix)/share/man/man$(manext) ++mandir = @mandir@/man$(manext) + + # The name of your C compiler: + CC= @CC@ +@@ -191,30 +192,30 @@ + # Installation rules: + + install: cjpeg djpeg jpegtran rdjpgcom wrjpgcom @FORCE_INSTALL_LIB@ +- $(INSTALL_PROGRAM) cjpeg $(bindir)/$(binprefix)cjpeg +- $(INSTALL_PROGRAM) djpeg $(bindir)/$(binprefix)djpeg +- $(INSTALL_PROGRAM) jpegtran $(bindir)/$(binprefix)jpegtran +- $(INSTALL_PROGRAM) rdjpgcom $(bindir)/$(binprefix)rdjpgcom +- $(INSTALL_PROGRAM) wrjpgcom $(bindir)/$(binprefix)wrjpgcom +- $(INSTALL_DATA) $(srcdir)/cjpeg.1 $(mandir)/$(manprefix)cjpeg.$(manext) +- $(INSTALL_DATA) $(srcdir)/djpeg.1 $(mandir)/$(manprefix)djpeg.$(manext) +- $(INSTALL_DATA) $(srcdir)/jpegtran.1 $(mandir)/$(manprefix)jpegtran.$(manext) +- $(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(mandir)/$(manprefix)rdjpgcom.$(manext) +- $(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(mandir)/$(manprefix)wrjpgcom.$(manext) ++ $(INSTALL_PROGRAM) cjpeg $(DESTDIR)$(bindir)/$(binprefix)cjpeg ++ $(INSTALL_PROGRAM) djpeg $(DESTDIR)$(bindir)/$(binprefix)djpeg ++ $(INSTALL_PROGRAM) jpegtran $(DESTDIR)$(bindir)/$(binprefix)jpegtran ++ $(INSTALL_PROGRAM) rdjpgcom $(DESTDIR)$(bindir)/$(binprefix)rdjpgcom ++ $(INSTALL_PROGRAM) wrjpgcom $(DESTDIR)$(bindir)/$(binprefix)wrjpgcom ++ $(INSTALL_DATA) $(srcdir)/cjpeg.1 $(DESTDIR)$(mandir)/$(manprefix)cjpeg.$(manext) ++ $(INSTALL_DATA) $(srcdir)/djpeg.1 $(DESTDIR)$(mandir)/$(manprefix)djpeg.$(manext) ++ $(INSTALL_DATA) $(srcdir)/jpegtran.1 $(DESTDIR)$(mandir)/$(manprefix)jpegtran.$(manext) ++ $(INSTALL_DATA) $(srcdir)/rdjpgcom.1 $(DESTDIR)$(mandir)/$(manprefix)rdjpgcom.$(manext) ++ $(INSTALL_DATA) $(srcdir)/wrjpgcom.1 $(DESTDIR)$(mandir)/$(manprefix)wrjpgcom.$(manext) + + install-lib: libjpeg.$(A) install-headers +- $(INSTALL_LIB) libjpeg.$(A) $(libdir)/$(binprefix)libjpeg.$(A) ++ $(INSTALL_LIB) libjpeg.$(A) $(DESTDIR)$(libdir)/$(binprefix)libjpeg.$(A) + + install-headers: jconfig.h +- $(INSTALL_DATA) jconfig.h $(includedir)/jconfig.h +- $(INSTALL_DATA) $(srcdir)/jpeglib.h $(includedir)/jpeglib.h +- $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(includedir)/jmorecfg.h +- $(INSTALL_DATA) $(srcdir)/jerror.h $(includedir)/jerror.h ++ $(INSTALL_DATA) jconfig.h $(DESTDIR)$(includedir)/jconfig.h ++ $(INSTALL_DATA) $(srcdir)/jpeglib.h $(DESTDIR)$(includedir)/jpeglib.h ++ $(INSTALL_DATA) $(srcdir)/jmorecfg.h $(DESTDIR)$(includedir)/jmorecfg.h ++ $(INSTALL_DATA) $(srcdir)/jerror.h $(DESTDIR)$(includedir)/jerror.h + #:mjpegtools require this file to build and header say: + # * These declarations are considered internal to the JPEG library; most + # * applications using the library shouldn't need to include this file. + # So it is not forbidden to use it, therefore it must be installed. +- $(INSTALL_DATA) $(srcdir)/jpegint.h $(includedir)/jpegint.h ++ $(INSTALL_DATA) $(srcdir)/jpegint.h $(DESTDIR)$(includedir)/jpegint.h + + clean: + $(RM) *.o *.lo libjpeg.a libjpeg.la -- cgit v1.2.3