mirror of
https://git.yoctoproject.org/poky
synced 2026-02-26 03:19:41 +01:00
10015 lines
337 KiB
Diff
10015 lines
337 KiB
Diff
|
|
#
|
|
# 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
|
|
+#<ballombe@debian.org>: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, <stdio.h> */
|
|
|
|
+#include <locale.h> /*ballombe@debian.org: use locale for isprint*/
|
|
#include <ctype.h> /* to declare isupper(), tolower() */
|
|
#ifdef USE_SETMODE
|
|
#include <fcntl.h> /* 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 <ctype.h> /* 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
|
|
+ * <width>x<height>{+-}<xoffset>{+-}<yoffset>
|
|
+ * 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 (<ballombe@debian.org>, 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 (<ballombe@debian.org>, 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 <gord@gnu.ai.mit.edu>, 1996
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful, but
|
|
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+# General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write to the Free Software
|
|
+# Foundation, Inc., 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 <<EOF
|
|
+$*
|
|
+EOF
|
|
+ exit 0
|
|
+fi
|
|
+
|
|
+# The name of this program.
|
|
+progname=`$echo "$0" | sed 's%^.*/%%'`
|
|
+modename="$progname"
|
|
+
|
|
+# Constants.
|
|
+PROGRAM=ltmain.sh
|
|
+PACKAGE=libtool
|
|
+VERSION=1.3.3
|
|
+TIMESTAMP=" (1.385.2.181 1999/07/02 15:49:11)"
|
|
+
|
|
+default_mode=
|
|
+help="Try \`$progname --help' for more information."
|
|
+magic="%%%MAGIC variable%%%"
|
|
+mkdir="mkdir"
|
|
+mv="mv -f"
|
|
+rm="rm -f"
|
|
+
|
|
+# Sed substitution that helps us do robust quoting. It backslashifies
|
|
+# metacharacters that are still active within double-quoted strings.
|
|
+Xsed='sed -e 1s/^X//'
|
|
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
|
|
+SP2NL='tr \040 \012'
|
|
+NL2SP='tr \015\012 \040\040'
|
|
+
|
|
+# 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).
|
|
+# We save the old values to restore during execute mode.
|
|
+if test "${LC_ALL+set}" = set; then
|
|
+ save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
|
|
+fi
|
|
+if test "${LANG+set}" = set; then
|
|
+ save_LANG="$LANG"; LANG=C; export LANG
|
|
+fi
|
|
+
|
|
+if test "$LTCONFIG_VERSION" != "$VERSION"; then
|
|
+ echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&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 <windows.h>
|
|
+# #undef WIN32_LEAN_AND_MEAN
|
|
+# #include <stdio.h>
|
|
+#
|
|
+# #ifndef __CYGWIN__
|
|
+# # ifdef __CYGWIN32__
|
|
+# # define __CYGWIN__ __CYGWIN32__
|
|
+# # endif
|
|
+# #endif
|
|
+#
|
|
+# #ifdef __cplusplus
|
|
+# extern "C" {
|
|
+# #endif
|
|
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
|
|
+# #ifdef __cplusplus
|
|
+# }
|
|
+# #endif
|
|
+#
|
|
+# #ifdef __CYGWIN__
|
|
+# #include <cygwin/cygwin_dll.h>
|
|
+# DECLARE_CYGWIN_DLL( DllMain );
|
|
+# #endif
|
|
+# HINSTANCE __hDllInstance_base;
|
|
+#
|
|
+# BOOL APIENTRY
|
|
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
|
|
+# {
|
|
+# __hDllInstance_base = hInst;
|
|
+# return TRUE;
|
|
+# }
|
|
+# /* ltdll.c ends here */
|
|
+ # 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 <stdio.h> /* for printf() */
|
|
+# #include <unistd.h> /* for open(), lseek(), read() */
|
|
+# #include <fcntl.h> /* for O_RDONLY, O_BINARY */
|
|
+# #include <string.h> /* 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<nexp; i++)
|
|
+# {
|
|
+# unsigned long name_rva = pe_as32 (erva+name_rvas+i*4);
|
|
+# printf ("\t%s @ %ld ;\n", erva+name_rva, 1+ i);
|
|
+# }
|
|
+#
|
|
+# return 0;
|
|
+# }
|
|
+# /* impgen.c ends here */
|
|
+ ;;
|
|
+ *)
|
|
+ allow_undefined=yes
|
|
+ ;;
|
|
+ esac
|
|
+ compile_command="$CC"
|
|
+ finalize_command="$CC"
|
|
+
|
|
+ compile_rpath=
|
|
+ finalize_rpath=
|
|
+ compile_shlibpath=
|
|
+ finalize_shlibpath=
|
|
+ convenience=
|
|
+ old_convenience=
|
|
+ deplibs=
|
|
+ linkopts=
|
|
+
|
|
+ if test -n "$shlibpath_var"; then
|
|
+ # get the directories listed in $shlibpath_var
|
|
+ eval lib_search_path=\`\$echo \"X \${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
|
|
+ else
|
|
+ lib_search_path=
|
|
+ fi
|
|
+ # now prepend the system-specific ones
|
|
+ eval lib_search_path=\"$sys_lib_search_path_spec\$lib_search_path\"
|
|
+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
|
|
+
|
|
+ avoid_version=no
|
|
+ dlfiles=
|
|
+ dlprefiles=
|
|
+ dlself=no
|
|
+ export_dynamic=no
|
|
+ export_symbols=
|
|
+ export_symbols_regex=
|
|
+ generated=
|
|
+ libobjs=
|
|
+ link_against_libtool_libs=
|
|
+ ltlibs=
|
|
+ module=no
|
|
+ objs=
|
|
+ prefer_static_libs=no
|
|
+ preload=no
|
|
+ prev=
|
|
+ prevarg=
|
|
+ release=
|
|
+ rpath=
|
|
+ xrpath=
|
|
+ perm_rpath=
|
|
+ temp_rpath=
|
|
+ thread_safe=no
|
|
+ vinfo=
|
|
+
|
|
+ # We need to know -static, to get the right output filenames.
|
|
+ for arg
|
|
+ do
|
|
+ case "$arg" in
|
|
+ -all-static | -static)
|
|
+ if test "X$arg" = "X-all-static"; then
|
|
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
|
|
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&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 <<EOF
|
|
+ int main() { return 0; }
|
|
+EOF
|
|
+ $rm conftest
|
|
+ $C_compiler -o conftest conftest.c $deplibs
|
|
+ if test $? -eq 0 ; then
|
|
+ ldd_output=`ldd conftest`
|
|
+ for i in $deplibs; do
|
|
+ name="`expr $i : '-l\(.*\)'`"
|
|
+ # If $name is empty we are operating on a -L argument.
|
|
+ if test "$name" != "" ; then
|
|
+ libname=`eval \\$echo \"$libname_spec\"`
|
|
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
|
|
+ set dummy $deplib_matches
|
|
+ deplib_match=$2
|
|
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
|
|
+ newdeplibs="$newdeplibs $i"
|
|
+ else
|
|
+ droppeddeps=yes
|
|
+ echo
|
|
+ echo "*** Warning: This library needs some functionality provided by $i."
|
|
+ echo "*** I have the capability to make that library automatically link in when"
|
|
+ echo "*** you link to this library. But I can only do this if you have a"
|
|
+ echo "*** shared version of the library, which you do not appear to have."
|
|
+ fi
|
|
+ else
|
|
+ newdeplibs="$newdeplibs $i"
|
|
+ fi
|
|
+ done
|
|
+ else
|
|
+ # Error occured in the first compile. Let's try to salvage the situation:
|
|
+ # Compile a seperate program for each library.
|
|
+ for i in $deplibs; do
|
|
+ name="`expr $i : '-l\(.*\)'`"
|
|
+ # If $name is empty we are operating on a -L argument.
|
|
+ if test "$name" != "" ; then
|
|
+ $rm conftest
|
|
+ $C_compiler -o conftest conftest.c $i
|
|
+ # Did it work?
|
|
+ if test $? -eq 0 ; then
|
|
+ ldd_output=`ldd conftest`
|
|
+ libname=`eval \\$echo \"$libname_spec\"`
|
|
+ deplib_matches=`eval \\$echo \"$library_names_spec\"`
|
|
+ set dummy $deplib_matches
|
|
+ deplib_match=$2
|
|
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
|
|
+ newdeplibs="$newdeplibs $i"
|
|
+ else
|
|
+ droppeddeps=yes
|
|
+ echo
|
|
+ echo "*** Warning: This library needs some functionality provided by $i."
|
|
+ echo "*** I have the capability to make that library automatically link in when"
|
|
+ echo "*** you link to this library. But I can only do this if you have a"
|
|
+ echo "*** shared version of the library, which you do not appear to have."
|
|
+ fi
|
|
+ else
|
|
+ droppeddeps=yes
|
|
+ echo
|
|
+ echo "*** Warning! Library $i is needed by this library but I was not able to"
|
|
+ echo "*** make it link in! You will probably need to install it or some"
|
|
+ echo "*** library that it depends on before this library will be fully"
|
|
+ echo "*** functional. Installing it before continuing would be even better."
|
|
+ fi
|
|
+ else
|
|
+ newdeplibs="$newdeplibs $i"
|
|
+ fi
|
|
+ done
|
|
+ fi
|
|
+ ;;
|
|
+ file_magic*)
|
|
+ set dummy $deplibs_check_method
|
|
+ file_magic_regex="`expr \"$deplibs_check_method\" : \"$2 \(.*\)\"`"
|
|
+ for a_deplib in $deplibs; do
|
|
+ name="`expr $a_deplib : '-l\(.*\)'`"
|
|
+ # If $name is empty we are operating on a -L argument.
|
|
+ if test "$name" != "" ; then
|
|
+ libname=`eval \\$echo \"$libname_spec\"`
|
|
+ for i in $lib_search_path; do
|
|
+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
|
|
+ for potent_lib in $potential_libs; do
|
|
+ # Follow soft links.
|
|
+ if ls -lLd "$potent_lib" 2>/dev/null \
|
|
+ | grep " -> " >/dev/null; then
|
|
+ continue
|
|
+ fi
|
|
+ # The statement above tries to avoid entering an
|
|
+ # endless loop below, in case of cyclic links.
|
|
+ # We might still enter an endless loop, since a link
|
|
+ # loop can be closed while we follow links,
|
|
+ # but so what?
|
|
+ potlib="$potent_lib"
|
|
+ while test -h "$potlib" 2>/dev/null; do
|
|
+ potliblink=`ls -ld $potlib | sed 's/.* -> //'`
|
|
+ case "$potliblink" in
|
|
+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
|
|
+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
|
|
+ esac
|
|
+ done
|
|
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
|
|
+ | sed 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
|
|
+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
|
|
+MF&&EPIRY5;)D;=@D:\.LV_/_Z!>P7,&`>\.#!`P#`&@``UNQ:X\X=@%WN
|
|
+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
|
|
+M%6+7IA";0FS:9,E2O7K13IPX`3"#CPP^?/C0I4N7"%VZ=&7(D"%#A@P93F3(
|
|
+MD"'#B0S1,D2+%BU:M`S1HD6+%BW:"64GRIPH4\8'*@)W:EFC)\&%FU.XN-"B
|
|
+M)>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
|
|
+MJA<M6K0,)S*<R.##1P8?\'3ITI7!1P8?)S*<R)#A1(83&3)$`Y@A6K1H&:)%
|
|
+MBQ8M6I)HT:*=.%&F3)DR/LKX8,>N%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:76O<K=FUQMT:=VO<K7'GSAT`````
|
|
+M``````````````````````````````````#6N%L#8(T[`````'#GSIT[=^YV
|
|
+M[=JU:]>N3;MV;=KE;M,N=YMV;=H58M>N/;OV[-JTB8$E2_7J13MQXH2/$R<R
|
|
+M9,B009<N'SXRG,B0(<.)#"=.9(B6(=J))!FB18L6+5JT:-%.U#MQ0MF),B?*
|
|
+ME"E3AD"/'H<.`5SGQLTI7+APS:(%#=J1(\#Z9-D389<[=^X`N','````=^X`
|
|
+MN'/GSIV[->[6N'/GSIV["%E:\($RRX4;7*<>%?\H4*!`@0*/3IUZ=.K4*2[<
|
|
+M:!T!EN4&FEUKW*U9XV[-KC6[=NW:M<O=KEV[=KD#````````````````````
|
|
+M`````````````*QQMV;-&@!KW*U9X\Z=NS7N=NW:M6O7KDV[-NW:M6G7KEV;
|
|
+M=KG;Y&[3KDV[-D78%6'7KET\>/!@8$F#LF@G3IS(D"%#M`P9?&3PD2%#A@P9
|
|
+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
|
|
+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[<R?%,3E1H@#"Y@#%B!&>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-]#<N'$##1HT:&3UD84&S8T0(="$"+$IQ*X0NS;M"K$KQ*80>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!<TX(E39I]_UBR3<DSZA"90,-,?/KTZ=,G<.#`@0/WY@V0-V_>
|
|
+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!<NU-%BP
|
|
+M:/_1HF7>E"M-#E&)-,P"N!?@P($#!PX<."!O@``!`@3(FQEOP'4QD8C8HE>S
|
|
+M9KV2(&&-NS6[UNS9M6O/GA![]J#9@P;-#30W;MRX<>/&C4*<ZM1A4X>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%(
|
|
+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
|
|
+M@`!I@J=)DSY-FO31T.>&AAL:^MRX<>/�U-FMS0T,=('0Y"$L""!0L,&$A@
|
|
+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
|
|
+M#-):_"%'#@H4"5!<N'"!#-D[7.^0O4/V[M2[!@T>/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,"`;<D2
|
|
+M=.BH48/G(P,\>`A&T/'D"86<>9X<C/#DP`$\>-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!$@<C1L"#-P(>'3H.'(P9,V;,F#$.QHR1DP_%"`<H'&"*XJQ"
|
|
+MA2U1MFS1L46'CBU;="B8HV".,P58YF")D2\?ABC8'"P9,0*>@`P9X,&C1F>$
|
|
+MIQ'HXLE!@,*!)P>81HP808W_VID1*.+)B3?&F;,*6RILV5)A2X4*8\8X\#1B
|
|
+M1`H<I."0@M,M31HL6+!H6;$/FYH3&@:0:^,/F0M_R-XA0X8,&4!DR)`A0X:K
|
|
+MP;LXU>/3ND0QUS)B5ZX"$5I,F&IHTT=!$0Q,-39HT:=)$PXTF39HT:=*D
|
|
+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
|
|
+M-6K4J%XT:7&K40-:@1HT&-1HT:/#.A0MDN*#0@L:D29,F39HT:=*D29,F
|
|
+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
|
|
+M<.`@2@PL6E;LF[-BQ;4IZ7ALVK4K0H0($?"18"!@,ORU:=,F0(``-6H$
|
|
+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
|
|
+M@R+!!9\C-[+@PY=EP!%R;0($"!`@0(```0($"!`@@+\:-6K4J%&C1H,J@
|
|
+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
|
|
+M3-D)9=&4*5.F3)DR9<J4*5.FS)(R2\HTU-.@08,V4A=BT"6"$&S>RA+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"/0H<T*9,F7*E"FK5T_9"67*RM13
|
|
+MILR2,DO*E&G0H$R#!@T:-#0)H:'%C4TA0N#+$@)?B!M'2."9,&%"E@CX\.V)
|
|
+ML&=/A#T1(NR)`##"G@@1(D2($"'"FCUK(D18$V'-FC5KUJQ9LV;-FC5KUJR)
|
|
+ML&;-FC5[]OSZ]>L7OCT1\.'[!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<O0H1?OX`!^X5O3X0(:]8<N7?OR#T2]\3<(W%/S+TC]TB0N'>/Q!`2)$A,
|
|
+M.#*!"9,=LR1-<O4&"!`@0(```0($"!!-L2QX:S5LV+!/_UUFO`$"!`@0($"`
|
|
+M``$"!`@0($"```$"!`@0($"```$"!`@0($"`O`$"!`@0($"`S``"!`@0(+$0
|
|
+M10I$8<&R9<N6*5.F0=DR9<N6:="@08,HT:-#01T.?&S<TW+AQC\6$%C>R
|
|
+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
|
|
+JVO-KSZ\]>_;LV;-G#[X!?RY<N/!GP"]\:_#ARS+@SQ%@`WZM6;,F(``[
|
|
+`
|
|
+end
|
|
--- /dev/null
|
|
+++ jpeg-6b/ltconfig.new
|
|
@@ -0,0 +1,3016 @@
|
|
+#! /bin/sh
|
|
+
|
|
+# ltconfig - Create a system-specific libtool.
|
|
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
|
|
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 <<EOF
|
|
+$*
|
|
+EOF
|
|
+ exit 0
|
|
+fi
|
|
+
|
|
+# Find the correct PATH separator. Usually this is `:', but
|
|
+# DJGPP uses `;' like DOS.
|
|
+if test "X${PATH_SEPARATOR+set}" != "Xset"; then
|
|
+ UNAME=${UNAME-`uname 2>/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 <<EOM
|
|
+Usage: $progname [OPTION]... [HOST [LTMAIN]]
|
|
+
|
|
+Generate a system-specific libtool script.
|
|
+
|
|
+ --debug enable verbose shell tracing
|
|
+ --disable-shared do not build shared libraries
|
|
+ --disable-static do not build static libraries
|
|
+ --disable-fast-install do not optimize for fast installation
|
|
+ --enable-dlopen enable dlopen support
|
|
+ --enable-win32-dll enable building dlls on win32 hosts
|
|
+ --help display this help and exit
|
|
+ --no-verify do not verify that HOST is a valid host type
|
|
+-o, --output=FILE specify the output file [default=$default_ofile]
|
|
+ --quiet same as \`--silent'
|
|
+ --silent do not print informational messages
|
|
+ --srcdir=DIR find \`config.guess' in DIR
|
|
+ --version output version information and exit
|
|
+ --with-gcc assume that the GNU C compiler will be used
|
|
+ --with-gnu-ld assume that the C compiler uses the GNU linker
|
|
+ --disable-lock disable file locking
|
|
+ --cache-file=FILE configure cache file
|
|
+
|
|
+LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
|
|
+that provides basic libtool functionality.
|
|
+
|
|
+HOST is the canonical host system name [default=guessed].
|
|
+EOM
|
|
+ exit 0
|
|
+ ;;
|
|
+
|
|
+ --debug)
|
|
+ echo "$progname: enabling shell trace mode"
|
|
+ set -x
|
|
+ ;;
|
|
+
|
|
+ --disable-shared) enable_shared=no ;;
|
|
+
|
|
+ --disable-static) enable_static=no ;;
|
|
+
|
|
+ --disable-fast-install) enable_fast_install=no ;;
|
|
+
|
|
+ --enable-dlopen) enable_dlopen=yes ;;
|
|
+
|
|
+ --enable-win32-dll) enable_win32_dll=yes ;;
|
|
+
|
|
+ --quiet | --silent) silent=yes ;;
|
|
+
|
|
+ --srcdir) prev=srcdir ;;
|
|
+ --srcdir=*) srcdir="$optarg" ;;
|
|
+
|
|
+ --no-verify) verify_host=no ;;
|
|
+
|
|
+ --output | -o) prev=ofile ;;
|
|
+ --output=*) ofile="$optarg" ;;
|
|
+
|
|
+ --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
|
|
+
|
|
+ --with-gcc) with_gcc=yes ;;
|
|
+ --with-gnu-ld) with_gnu_ld=yes ;;
|
|
+
|
|
+ --disable-lock) need_locks=no ;;
|
|
+
|
|
+ --cache-file=*) cache_file="$optarg" ;;
|
|
+
|
|
+ -*)
|
|
+ echo "$progname: unrecognized option \`$option'" 1>&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 <<EOF
|
|
+#ifdef __GNUC__
|
|
+ yes;
|
|
+#endif
|
|
+EOF
|
|
+ if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&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 </dev/null | egrep '(GNU|with BFD)' 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 <<EOF 1>&2
|
|
+
|
|
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
|
|
+*** to be unable to reliably create shared libraries on AIX.
|
|
+*** Therefore, libtool is disabling shared libraries support. If you
|
|
+*** really care for shared libraries, you may want to modify your PATH
|
|
+*** so that a non-GNU linker is found, and then restart.
|
|
+
|
|
+EOF
|
|
+ ;;
|
|
+
|
|
+ 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 <kc5tja@dolphin.openprojects.net> reports
|
|
+ # that the semantics of dynamic libraries on AmigaOS, at least up
|
|
+ # to version 4, is to share data among multiple programs linked
|
|
+ # with the same dynamic library. Since this doesn't match the
|
|
+ # behavior of shared libraries on other platforms, we can use
|
|
+ # them.
|
|
+ ld_shlibs=no
|
|
+ ;;
|
|
+
|
|
+ beos*)
|
|
+ if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
|
|
+ allow_undefined_flag=unsupported
|
|
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
|
|
+ # support --undefined. This deserves some investigation. FIXME
|
|
+ archive_cmds='$CC -nostart $libobjs $deplibs $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 <<EOF 1>&2
|
|
+
|
|
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
|
|
+*** create shared libraries on Solaris systems. Therefore, libtool
|
|
+*** is disabling shared libraries support. We urge you to upgrade GNU
|
|
+*** binutils to release 2.9.1 or newer. Another option is to modify
|
|
+*** your PATH or compiler configuration so that the native linker is
|
|
+*** used, and then restart.
|
|
+
|
|
+EOF
|
|
+ elif $LD --help 2>&1 | 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 <<EOF
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+char nm_test_var;
|
|
+void nm_test_func(){}
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+main(){nm_test_var='a';nm_test_func();return(0);}
|
|
+EOF
|
|
+
|
|
+ echo "$progname:1592: checking if global_symbol_pipe works" >&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 <<EOF > conftest.c
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+
|
|
+EOF
|
|
+ # Now generate the symbol file.
|
|
+ eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
|
|
+
|
|
+ cat <<EOF >> 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 <<EOF 1>&2
|
|
+
|
|
+*** Warning: the command libtool uses to detect shared libraries,
|
|
+*** $file_magic_cmd, produces output that libtool cannot recognize.
|
|
+*** The result is that libtool may fail to recognize shared libraries
|
|
+*** as such. This will affect the creation of libtool libraries that
|
|
+*** depend on shared libraries, but programs linked with such libtool
|
|
+*** libraries will work regardless of this problem. Nevertheless, you
|
|
+*** may want to report the problem to your system manager and/or to
|
|
+*** bug-libtool@gnu.org
|
|
+
|
|
+EOF
|
|
+ fi ;;
|
|
+ esac
|
|
+fi
|
|
+
|
|
+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 <<EOF
|
|
+#line 2178 "ltconfig"
|
|
+/* 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() {
|
|
+dlopen()
|
|
+; return 0; }
|
|
+EOF
|
|
+if { (eval echo $progname:2188: \"$ac_link\") 1>&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 <<EOF
|
|
+#line 2212 "ltconfig"
|
|
+/* System header to define __stub macros and hopefully few prototypes,
|
|
+ which can conflict with char dlopen(); below. */
|
|
+#include <assert.h>
|
|
+/* 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 <<EOF
|
|
+#line 2259 "ltconfig"
|
|
+/* 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 dld_link();
|
|
+
|
|
+int main() {
|
|
+dld_link()
|
|
+; return 0; }
|
|
+EOF
|
|
+if { (eval echo $progname:2269: \"$ac_link\") 1>&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 <<EOF
|
|
+#line 2293 "ltconfig"
|
|
+/* System header to define __stub macros and hopefully few prototypes,
|
|
+ which can conflict with char shl_load(); below. */
|
|
+#include <assert.h>
|
|
+/* 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 <<EOF
|
|
+#line 2341 "ltconfig"
|
|
+#include "confdefs.h"
|
|
+/* 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() {
|
|
+shl_load()
|
|
+; return 0; }
|
|
+EOF
|
|
+if { (eval echo $progname:2352: \"$ac_link\") 1>&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 <<EOF
|
|
+#line 2400 "ltconfig"
|
|
+#include <$ac_hdr>
|
|
+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 <<EOF
|
|
+#line 2441 "ltconfig"
|
|
+
|
|
+#if HAVE_DLFCN_H
|
|
+#include <dlfcn.h>
|
|
+#endif
|
|
+
|
|
+#include <stdio.h>
|
|
+
|
|
+#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 <<EOF
|
|
+#line 2514 "ltconfig"
|
|
+
|
|
+#if HAVE_DLFCN_H
|
|
+#include <dlfcn.h>
|
|
+#endif
|
|
+
|
|
+#include <stdio.h>
|
|
+
|
|
+#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 <<EOF > "$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 <gord@gnu.ai.mit.edu>, 1996
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2 of the License, or
|
|
+# (at your option) any later version.
|
|
+#
|
|
+# This program is distributed in the hope that it will be useful, but
|
|
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
+# General Public License for more details.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write to the Free Software
|
|
+# Foundation, Inc., 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 <<EOF > "$cfgfile"
|
|
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
|
|
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
|
|
+EOF
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+cat <<EOF >> "$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:
|