forked from old/legacy-imlib2
parent
e9835e4365
commit
dc7edbee66
4
Makefile
4
Makefile
|
@ -70,9 +70,9 @@ LN_S = ln -s
|
|||
LTLIBOBJS =
|
||||
MAKEINFO = makeinfo
|
||||
NM = /usr/bin/nm -B
|
||||
OBJDUMP =
|
||||
PACKAGE = imlib
|
||||
RANLIB = ranlib
|
||||
USE_SYMBOL_UNDERSCORE = no
|
||||
VERSION = 2.0
|
||||
pkglibdir = ${libdir}/loaders
|
||||
|
||||
|
@ -125,7 +125,7 @@ imlib2_OBJECTS = rend.o ximage.o scale.o main.o rgba.o image.o color.o \
|
|||
grab.o blend.o file.o rgbadraw.o api.o draw.o context.o
|
||||
imlib2_DEPENDENCIES = $(top_builddir)/libltdl/libltdlc.la
|
||||
imlib2_LDFLAGS =
|
||||
CFLAGS = -O2 -mpentium -mcpu=pentium -march=pentium -malign-loops=2 -malign-jumps=2 -malign-functions=2 -g -W -Wall -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -pg -pg
|
||||
CFLAGS = -O6 -mpentiumpro -mcpu=pentiumpro -march=pentiumpro -malign-loops=2 -malign-jumps=2 -malign-functions=2 -g -W -Wall -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
|
|
32
api.c
32
api.c
|
@ -2,13 +2,13 @@
|
|||
#include "common.h"
|
||||
#include "scale.h"
|
||||
#include "image.h"
|
||||
#include "rend.h"
|
||||
#include "context.h"
|
||||
#include "rgba.h"
|
||||
#include "color.h"
|
||||
#include "file.h"
|
||||
#include "grab.h"
|
||||
#include "blend.h"
|
||||
#include "rend.h"
|
||||
#include "draw.h"
|
||||
#include "api.h"
|
||||
|
||||
|
@ -294,7 +294,8 @@ imlib_render_image_on_drawable(Imlib_Image image, Display *display,
|
|||
char dithered_rendering,
|
||||
char alpha_blending,
|
||||
int x, int y,
|
||||
Imlib_Color_Modifier color_modifier)
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation)
|
||||
{
|
||||
ImlibImage *im;
|
||||
ImlibColorModifier *cm;
|
||||
|
@ -308,7 +309,7 @@ imlib_render_image_on_drawable(Imlib_Image image, Display *display,
|
|||
0,
|
||||
dithered_rendering,
|
||||
alpha_blending, 0,
|
||||
cm);
|
||||
cm, (ImlibOp)operation);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -319,7 +320,8 @@ imlib_render_image_on_drawable_at_size(Imlib_Image image, Display *display,
|
|||
char dithered_rendering,
|
||||
char alpha_blending,
|
||||
int x, int y, int width, int height,
|
||||
Imlib_Color_Modifier color_modifier)
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation)
|
||||
{
|
||||
ImlibImage *im;
|
||||
ImlibColorModifier *cm;
|
||||
|
@ -333,7 +335,7 @@ imlib_render_image_on_drawable_at_size(Imlib_Image image, Display *display,
|
|||
anti_aliased_scaling,
|
||||
dithered_rendering,
|
||||
alpha_blending, 0,
|
||||
cm);
|
||||
cm, (ImlibOp)operation);
|
||||
}
|
||||
|
||||
void imlib_render_image_part_on_drawable_at_size(Imlib_Image image, Display *display,
|
||||
|
@ -345,7 +347,8 @@ void imlib_render_image_part_on_drawable_at_size(Imlib_Image image, Display *dis
|
|||
int source_x, int source_y,
|
||||
int source_width, int source_height,
|
||||
int x, int y, int width, int height,
|
||||
Imlib_Color_Modifier color_modifier)
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation)
|
||||
{
|
||||
ImlibImage *im;
|
||||
ImlibColorModifier *cm;
|
||||
|
@ -360,7 +363,7 @@ void imlib_render_image_part_on_drawable_at_size(Imlib_Image image, Display *dis
|
|||
anti_aliased_scaling,
|
||||
dithered_rendering,
|
||||
alpha_blending, 0,
|
||||
cm);
|
||||
cm, (ImlibOp)operation);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -370,19 +373,23 @@ imlib_blend_image_onto_image(Imlib_Image source_image,
|
|||
int source_x, int source_y,
|
||||
int source_width, int source_height,
|
||||
int destination_x, int destination_y,
|
||||
int destination_width, int destination_height)
|
||||
int destination_width, int destination_height,
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation)
|
||||
{
|
||||
ImlibImage *im_src, *im_dst;
|
||||
char anitalias = 1;
|
||||
ImlibColorModifier *cm;
|
||||
|
||||
CAST_IMAGE(im_src, source_image);
|
||||
CAST_IMAGE(im_dst, destination_image);
|
||||
cm = (ImlibColorModifier *)color_modifier;
|
||||
__imlib_DirtyImage(im_dst);
|
||||
__imlib_DirtyPixmapsForImage(im_dst);
|
||||
__imlib_BlendImageToImage(im_src, im_dst, antialias, blend, merge_alpha,
|
||||
source_x, source_y, source_width, source_height,
|
||||
destination_x, destination_y,
|
||||
destination_width, destination_height);
|
||||
destination_width, destination_height,
|
||||
cm, (ImlibOp)operation);
|
||||
}
|
||||
|
||||
Imlib_Image
|
||||
|
@ -538,7 +545,7 @@ imlib_create_cropped_image(Imlib_Image image, int x, int y, int width,
|
|||
im->data = malloc(width * height *sizeof(DATA32));
|
||||
__imlib_BlendImageToImage(im_old, im, 0, 0, 0,
|
||||
x, y, width, height,
|
||||
0, 0, width, height);
|
||||
0, 0, width, height, NULL, IMLIB_OP_COPY);
|
||||
return (Imlib_Image)im;
|
||||
}
|
||||
|
||||
|
@ -557,7 +564,8 @@ imlib_create_cropped_scaled_image(Imlib_Image image, char antialias,
|
|||
im->data = malloc(destination_width * destination_height *sizeof(DATA32));
|
||||
__imlib_BlendImageToImage(im_old, im, antialias, 0, 0,
|
||||
source_x, source_y, source_width, source_height,
|
||||
0, 0, destination_width, destination_height);
|
||||
0, 0, destination_width, destination_height,
|
||||
NULL, IMLIB_OP_COPY);
|
||||
return (Imlib_Image)im;
|
||||
}
|
||||
|
||||
|
|
22
api.h
22
api.h
|
@ -12,12 +12,21 @@
|
|||
typedef void * Imlib_Image;
|
||||
typedef void * Imlib_Color_Modifier;
|
||||
typedef struct _imlib_border Imlib_Border;
|
||||
typedef enum _imlib_operation Imlib_Operation;
|
||||
|
||||
struct _imlib_border
|
||||
{
|
||||
int left, right, top, bottom;
|
||||
};
|
||||
|
||||
enum _imlib_operation
|
||||
{
|
||||
IMLIB_OP_COPY,
|
||||
IMLIB_OP_ADD,
|
||||
IMLIB_OP_SUBTRACT,
|
||||
IMLIB_OP_RESHADE
|
||||
};
|
||||
|
||||
typedef void (*Imlib_Progress_Function)(Imlib_Image *im, char percent,
|
||||
int update_x, int update_y,
|
||||
int update_w, int update_h);
|
||||
|
@ -83,7 +92,8 @@ void imlib_render_image_on_drawable(Imlib_Image image, Display *display,
|
|||
char dithered_rendering,
|
||||
char alpha_blending,
|
||||
int x, int y,
|
||||
Imlib_Color_Modifier color_modifier);
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation);
|
||||
void imlib_render_image_on_drawable_at_size(Imlib_Image image, Display *display,
|
||||
Drawable drawable, Visual *visual,
|
||||
Colormap colormap, int depth,
|
||||
|
@ -91,7 +101,8 @@ void imlib_render_image_on_drawable_at_size(Imlib_Image image, Display *display,
|
|||
char dithered_rendering,
|
||||
char alpha_blending,
|
||||
int x, int y, int width, int height,
|
||||
Imlib_Color_Modifier color_modifier);
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation);
|
||||
void imlib_render_image_part_on_drawable_at_size(Imlib_Image image, Display *display,
|
||||
Drawable drawable, Visual *visual,
|
||||
Colormap colormap, int depth,
|
||||
|
@ -101,7 +112,8 @@ void imlib_render_image_part_on_drawable_at_size(Imlib_Image image, Display *dis
|
|||
int source_x, int source_y,
|
||||
int source_width, int source_height,
|
||||
int x, int y, int width, int height,
|
||||
Imlib_Color_Modifier color_modifier);
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation);
|
||||
/* rgba space ops */
|
||||
void imlib_blend_image_onto_image(Imlib_Image source_image,
|
||||
Imlib_Image destination_image,
|
||||
|
@ -109,7 +121,9 @@ void imlib_blend_image_onto_image(Imlib_Image source_image,
|
|||
int source_x, int source_y,
|
||||
int source_width, int source_height,
|
||||
int destination_x, int destination_y,
|
||||
int destination_width, int destination_height);
|
||||
int destination_width, int destination_height,
|
||||
Imlib_Color_Modifier color_modifier,
|
||||
Imlib_Operation operation);
|
||||
|
||||
#if 0
|
||||
|
||||
|
|
38
blend.c
38
blend.c
|
@ -7,7 +7,8 @@
|
|||
void
|
||||
__imlib_BlendRGBAToData(DATA32 *src, int src_w, int src_h, DATA32 *dst,
|
||||
int dst_w, int dst_h, int sx, int sy, int dx, int dy,
|
||||
int w, int h, char dalpha)
|
||||
int w, int h, char dalpha, ImlibColorModifier *cm,
|
||||
ImlibOp op)
|
||||
{
|
||||
if (sx < 0)
|
||||
{
|
||||
|
@ -78,17 +79,6 @@ __imlib_BlendRGBAToRGB(DATA32 *src, int src_jump, DATA32 *dst, int dst_jump,
|
|||
a = (*p1 >> 24) & 0xff;
|
||||
if (a < 255)
|
||||
{
|
||||
/* funny - i cant tell much of a speed diff between these 2 */
|
||||
#if 0
|
||||
/* this one over time leads to rounding errors :( */
|
||||
r = 255 - a;
|
||||
*p2 =
|
||||
((((*p1 & 0x00ff00ff) * a) >> 8) & 0x00ff00ff) +
|
||||
((((*p1 >> 8) & 0x00ff00ff) * a) & 0xff00ff00) +
|
||||
((((*p2 & 0x00ff00ff) * r) >> 8) & 0x00ff00ff) +
|
||||
((((*p2 >> 8) & 0x00ff00ff) * r) & 0xff00ff00);
|
||||
#else
|
||||
/* this is more accurate - but slower ? doesnt seem to be :) */
|
||||
b = (*p1 ) & 0xff;
|
||||
g = (*p1 >> 8 ) & 0xff;
|
||||
r = (*p1 >> 16) & 0xff;
|
||||
|
@ -104,7 +94,6 @@ __imlib_BlendRGBAToRGB(DATA32 *src, int src_jump, DATA32 *dst, int dst_jump,
|
|||
tmp = (b - bb) * a;
|
||||
nb = bb + ((tmp + (tmp >> 8) + 0x80) >> 8);
|
||||
*p2 = ((nr & 0xff) << 16) | ((ng & 0xff) << 8) | (nb & 0xff);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
*p2 = *p1;
|
||||
|
@ -208,7 +197,8 @@ void
|
|||
__imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
||||
char aa, char blend, char merge_alpha,
|
||||
int ssx, int ssy, int ssw, int ssh,
|
||||
int ddx, int ddy, int ddw, int ddh)
|
||||
int ddx, int ddy, int ddw, int ddh,
|
||||
ImlibColorModifier *cm, ImlibOp op)
|
||||
{
|
||||
if ((!(im_src->data)) && (im_src->loader))
|
||||
im_src->loader->load(im_src, NULL, 0, 1);
|
||||
|
@ -233,13 +223,13 @@ __imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
|||
im_dst->data, im_dst->w, im_dst->h,
|
||||
ssx, ssy,
|
||||
ddx, ddy,
|
||||
ssw, ssh, 1);
|
||||
ssw, ssh, 1, cm, op);
|
||||
else
|
||||
__imlib_BlendRGBAToData(im_src->data, im_src->w, im_src->h,
|
||||
im_dst->data, im_dst->w, im_dst->h,
|
||||
ssx, ssy,
|
||||
ddx, ddy,
|
||||
ssw, ssh, 3);
|
||||
ssw, ssh, 3, cm, op);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -248,13 +238,13 @@ __imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
|||
im_dst->data, im_dst->w, im_dst->h,
|
||||
ssx, ssy,
|
||||
ddx, ddy,
|
||||
ssw, ssh, 0);
|
||||
ssw, ssh, 0, cm, op);
|
||||
else
|
||||
__imlib_BlendRGBAToData(im_src->data, im_src->w, im_src->h,
|
||||
im_dst->data, im_dst->w, im_dst->h,
|
||||
ssx, ssy,
|
||||
ddx, ddy,
|
||||
ssw, ssh, 2);
|
||||
ssw, ssh, 2, cm, op);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -424,12 +414,14 @@ __imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
|||
__imlib_BlendRGBAToData(buf, dw, hh,
|
||||
im_dst->data, im_dst->w,
|
||||
im_dst->h,
|
||||
0, 0, dx, dy + y, dw, dh, 1);
|
||||
0, 0, dx, dy + y, dw, dh, 1,
|
||||
cm, op);
|
||||
else
|
||||
__imlib_BlendRGBAToData(buf, dw, hh,
|
||||
im_dst->data, im_dst->w,
|
||||
im_dst->h,
|
||||
0, 0, dx, dy + y, dw, dh, 3);
|
||||
0, 0, dx, dy + y, dw, dh, 3,
|
||||
cm, op);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -437,12 +429,14 @@ __imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
|||
__imlib_BlendRGBAToData(buf, dw, hh,
|
||||
im_dst->data, im_dst->w,
|
||||
im_dst->h,
|
||||
0, 0, dx, dy + y, dw, dh, 0);
|
||||
0, 0, dx, dy + y, dw, dh, 0,
|
||||
cm, op);
|
||||
else
|
||||
__imlib_BlendRGBAToData(buf, dw, hh,
|
||||
im_dst->data, im_dst->w,
|
||||
im_dst->h,
|
||||
0, 0, dx, dy + y, dw, dh, 2);
|
||||
0, 0, dx, dy + y, dw, dh, 2,
|
||||
cm, op);
|
||||
}
|
||||
h -= LINESIZE;
|
||||
}
|
||||
|
|
17
blend.h
17
blend.h
|
@ -1,9 +1,21 @@
|
|||
#ifndef __BLEND
|
||||
#define __BLEND 1
|
||||
|
||||
typedef enum _imlibop ImlibOp;
|
||||
|
||||
enum _imlibop
|
||||
{
|
||||
OP_COPY,
|
||||
OP_ADD,
|
||||
OP_SUBTRACT,
|
||||
OP_RESHADE
|
||||
};
|
||||
|
||||
void
|
||||
__imlib_BlendRGBAToData(DATA32 *src, int src_w, int src_h, DATA32 *dst,
|
||||
int dst_w, int dst_h, int sx, int sy, int dx, int dy,
|
||||
int w, int h, char dalpha);
|
||||
int w, int h, char dalpha, ImlibColorModifier *cm,
|
||||
ImlibOp op);
|
||||
void
|
||||
__imlib_BlendRGBAToRGB(DATA32 *src, int src_jump, DATA32 *dst, int dst_jump,
|
||||
int w, int h);
|
||||
|
@ -20,5 +32,6 @@ void
|
|||
__imlib_BlendImageToImage(ImlibImage *im_src, ImlibImage *im_dst,
|
||||
char aa, char blend, char merge_alpha,
|
||||
int ssx, int ssy, int ssw, int ssh,
|
||||
int ddx, int ddy, int ddw, int ddh);
|
||||
int ddx, int ddy, int ddw, int ddh,
|
||||
ImlibColorModifier *cm, ImlibOp op);
|
||||
#endif
|
||||
|
|
4
draw.c
4
draw.c
|
@ -2,6 +2,7 @@
|
|||
#include <X11/extensions/XShm.h>
|
||||
#include "common.h"
|
||||
#include "image.h"
|
||||
#include "blend.h"
|
||||
#include "rend.h"
|
||||
#include "draw.h"
|
||||
|
||||
|
@ -43,7 +44,8 @@ __imlib_CreatePixmapsForImage(Display *d, Drawable w, Visual *v, int depth,
|
|||
*m = mask;
|
||||
}
|
||||
__imlib_RenderImage(d, im, pmap, mask, v, cm, depth, sx, sy, sw, sh, 0, 0,
|
||||
dw, dh, anitalias, hiq, 0, dither_mask, cmod);
|
||||
dw, dh, anitalias, hiq, 0, dither_mask, cmod,
|
||||
OP_COPY);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# A brief demonstration of using Automake with Libtool. -*-Makefile-*-
|
||||
#
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies foreign
|
||||
|
||||
if INSTALL_LTDL
|
||||
|
@ -20,6 +20,25 @@ libltdl_la_LIBADD = $(LIBADD_DL)
|
|||
libltdlc_la_SOURCES = ltdl.c
|
||||
libltdlc_la_LIBADD = $(LIBADD_DL)
|
||||
|
||||
## Because we do not have automatic dependency tracking:
|
||||
ltdl.lo: ltdl.h config.h
|
||||
|
||||
$(OBJECTS): libtool
|
||||
libtool: $(LIBTOOL_DEPS)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
## This allows us to install libltdl without using ln and without creating
|
||||
## a world writeable directory.
|
||||
## FIXME: Removed this rule once automake can do this properly by itself.
|
||||
local-install-files: $(DISTFILES)
|
||||
-rm -rf $(DESTDIR)$(datadir)/libtool/libltdl
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \
|
||||
else \
|
||||
test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \
|
||||
|| cp -p $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
|
|
|
@ -10,9 +10,6 @@
|
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
# A brief demonstration of using Automake with Libtool. -*-Makefile-*-
|
||||
#
|
||||
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
|
@ -73,9 +70,9 @@ LN_S = @LN_S@
|
|||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NM = @NM@
|
||||
OBJDUMP = @OBJDUMP@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
USE_SYMBOL_UNDERSCORE = @USE_SYMBOL_UNDERSCORE@
|
||||
VERSION = @VERSION@
|
||||
|
||||
AUTOMAKE_OPTIONS = no-dependencies foreign
|
||||
|
@ -115,8 +112,8 @@ CCLD = $(CC)
|
|||
LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
HEADERS = $(include_HEADERS) $(noinst_HEADERS)
|
||||
|
||||
DIST_COMMON = README ./stamp-h.in Makefile.am Makefile.in acinclude.m4 \
|
||||
aclocal.m4 config.h.in configure configure.in
|
||||
DIST_COMMON = README ./stamp-h.in COPYING.LIB Makefile.am Makefile.in \
|
||||
acconfig.h acinclude.m4 aclocal.m4 config.h.in configure configure.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
@ -159,7 +156,7 @@ $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in
|
|||
rm -f $(srcdir)/stamp-h.in; \
|
||||
$(MAKE) $(srcdir)/stamp-h.in; \
|
||||
else :; fi
|
||||
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
@echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null
|
||||
|
||||
|
@ -433,10 +430,25 @@ mostlyclean-generic distclean-generic clean-generic \
|
|||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
ltdl.lo: ltdl.h config.h
|
||||
|
||||
$(OBJECTS): libtool
|
||||
libtool: $(LIBTOOL_DEPS)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
local-install-files: $(DISTFILES)
|
||||
-rm -rf $(DESTDIR)$(datadir)/libtool/libltdl
|
||||
$(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \
|
||||
else \
|
||||
test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \
|
||||
|| cp -p $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## libtool.m4 - Configure libtool for the target system. -*-Shell-script-*-
|
||||
## Copyright (C) 1996-1999 Free Software Foundation, Inc.
|
||||
## Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
## 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
|
||||
|
@ -21,7 +21,7 @@
|
|||
## configuration script generated by Autoconf, you may include it under
|
||||
## the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# serial 35 AC_PROG_LIBTOOL
|
||||
# serial 40 AC_PROG_LIBTOOL
|
||||
AC_DEFUN(AC_PROG_LIBTOOL,
|
||||
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
|
||||
|
||||
|
@ -30,8 +30,9 @@ AC_CACHE_SAVE
|
|||
|
||||
# Actually configure libtool. ac_aux_dir is where install-sh is found.
|
||||
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
|
||||
LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
|
||||
DLLTOOL="$DLLTOOL" AS="$AS" \
|
||||
LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
|
||||
LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
|
||||
DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
|
||||
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
|
||||
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|
||||
|| AC_MSG_ERROR([libtool configure failed])
|
||||
|
@ -62,25 +63,24 @@ AC_REQUIRE([AC_PROG_RANLIB])dnl
|
|||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_PROG_LD])dnl
|
||||
AC_REQUIRE([AC_PROG_NM])dnl
|
||||
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||
AC_REQUIRE([AC_SYS_SYMBOL_UNDERSCORE])dnl
|
||||
AC_REQUIRE([AC_PROG_LN_S])dnl
|
||||
dnl
|
||||
|
||||
# Check for any special flags to pass to ltconfig.
|
||||
#
|
||||
# the following will cause an existing older ltconfig to fail, so
|
||||
# we ignore this at the expense of the cache file... Checking this
|
||||
# will just take longer ... bummer!
|
||||
#libtool_flags="--cache-file=$cache_file"
|
||||
#
|
||||
libtool_flags="--cache-file=$cache_file"
|
||||
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
|
||||
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
|
||||
test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
|
||||
test "$lt_dlopen" = yes && libtool_flags="$libtool_flags --enable-dlopen"
|
||||
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
|
||||
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
|
||||
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
|
||||
[libtool_flags="$libtool_flags --enable-dlopen"])
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
|
||||
[libtool_flags="$libtool_flags --enable-win32-dll"])
|
||||
AC_ARG_ENABLE(libtool-lock,
|
||||
[ --disable-libtool-lock avoid locking (might break parallel builds)])
|
||||
test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
|
||||
test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
|
||||
|
||||
# Some flags need to be propagated to the compiler or linker for good
|
||||
# libtool support.
|
||||
|
@ -116,33 +116,28 @@ case "$host" in
|
|||
fi
|
||||
;;
|
||||
|
||||
*-*-cygwin*)
|
||||
AC_SYS_LIBTOOL_CYGWIN
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
|
||||
[*-*-cygwin* | *-*-mingw*)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
|
||||
])
|
||||
esac
|
||||
|
||||
# enable the --disable-libtool-lock switch
|
||||
|
||||
AC_ARG_ENABLE(libtool-lock,
|
||||
[ --disable-libtool-lock force libtool not to do file locking],
|
||||
need_locks=$enableval,
|
||||
need_locks=yes)
|
||||
|
||||
if test x"$need_locks" = xno; then
|
||||
libtool_flags="$libtool_flags --disable-lock"
|
||||
fi
|
||||
])
|
||||
|
||||
# AC_LIBTOOL_DLOPEN - check for dlopen support
|
||||
AC_DEFUN(AC_LIBTOOL_DLOPEN, [lt_dlopen=yes])
|
||||
# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
|
||||
AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
|
||||
|
||||
# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
|
||||
AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
|
||||
|
||||
# AC_ENABLE_SHARED - implement the --enable-shared flag
|
||||
# Usage: AC_ENABLE_SHARED[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_SHARED,
|
||||
[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_SHARED, [dnl
|
||||
define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(shared,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
|
||||
|
@ -167,15 +162,15 @@ enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
|
||||
AC_DEFUN(AC_DISABLE_SHARED,
|
||||
[AC_ENABLE_SHARED(no)])
|
||||
AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_SHARED(no)])
|
||||
|
||||
# AC_ENABLE_STATIC - implement the --enable-static flag
|
||||
# Usage: AC_ENABLE_STATIC[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_STATIC,
|
||||
[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_STATIC, [dnl
|
||||
define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(static,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
|
||||
|
@ -200,16 +195,16 @@ enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_DISABLE_STATIC - set the default static flag to --disable-static
|
||||
AC_DEFUN(AC_DISABLE_STATIC,
|
||||
[AC_ENABLE_STATIC(no)])
|
||||
AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_STATIC(no)])
|
||||
|
||||
|
||||
# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
|
||||
# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_FAST_INSTALL,
|
||||
[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
|
||||
define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(fast-install,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
|
||||
|
@ -234,9 +229,8 @@ enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
|
||||
AC_DEFUN(AC_DISABLE_FAST_INSTALL,
|
||||
[AC_ENABLE_FAST_INSTALL(no)])
|
||||
|
||||
AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_FAST_INSTALL(no)])
|
||||
|
||||
# AC_PROG_LD - find the path to the GNU or non-GNU linker
|
||||
AC_DEFUN(AC_PROG_LD,
|
||||
|
@ -254,7 +248,7 @@ if test "$ac_cv_prog_gcc" = yes; then
|
|||
case "$ac_prog" in
|
||||
# Accept absolute paths.
|
||||
changequote(,)dnl
|
||||
/* | [A-Za-z]:[\\/]*)
|
||||
[\\/]* | [A-Za-z]:[\\/]*)
|
||||
re_direlt='/[^/][^/]*/\.\./'
|
||||
changequote([,])dnl
|
||||
# Canonicalize the path of ld
|
||||
|
@ -280,10 +274,10 @@ else
|
|||
fi
|
||||
AC_CACHE_VAL(ac_cv_path_LD,
|
||||
[if test -z "$LD"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
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"; then
|
||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||
ac_cv_path_LD="$ac_dir/$ac_prog"
|
||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||
# but apparently some GNU ld's only accept -v.
|
||||
|
@ -328,10 +322,10 @@ AC_CACHE_VAL(ac_cv_path_NM,
|
|||
# Let the user override the test.
|
||||
ac_cv_path_NM="$NM"
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||
for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f $ac_dir/nm; then
|
||||
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
|
||||
|
@ -355,227 +349,22 @@ AC_MSG_RESULT([$NM])
|
|||
AC_SUBST(NM)
|
||||
])
|
||||
|
||||
# AC_SYS_NM_PARSE - Check for command to grab the raw symbol name followed
|
||||
# by C symbol name from nm.
|
||||
AC_DEFUN(AC_SYS_NM_PARSE,
|
||||
# AC_CHECK_LIBM - check for math library
|
||||
AC_DEFUN(AC_CHECK_LIBM,
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([AC_PROG_NM])dnl
|
||||
# Check for command to grab the raw symbol name followed by C symbol from nm.
|
||||
AC_MSG_CHECKING([command to parse $NM output])
|
||||
AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe,
|
||||
[# These are sane defaults that work on at least a few old systems.
|
||||
# {They come from Ultrix. What could be older than Ultrix?!! ;)}
|
||||
|
||||
changequote(,)dnl
|
||||
# Character class describing NM global symbol codes.
|
||||
ac_symcode='[BCDEGRST]'
|
||||
|
||||
# Regexp to match symbols that can be accessed directly from C.
|
||||
ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
|
||||
|
||||
# Transform the above into a raw symbol and a C symbol.
|
||||
ac_symxfrm='\1 \2\3 \3'
|
||||
|
||||
# Transform an extracted symbol line into a proper C declaration
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
ac_symcode='[BCDT]'
|
||||
LIBM=
|
||||
case "$host" in
|
||||
*-*-beos* | *-*-cygwin*)
|
||||
# These system don't have libm
|
||||
;;
|
||||
cygwin* | mingw*)
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
*-ncr-sysv4.3*)
|
||||
AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
|
||||
AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
|
||||
;;
|
||||
hpux*)
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
ac_symcode='[BCDEGRST]'
|
||||
;;
|
||||
solaris*)
|
||||
ac_symcode='[BDT]'
|
||||
*)
|
||||
AC_CHECK_LIB(m, main, LIBM="-lm")
|
||||
;;
|
||||
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
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
# Try without a prefix undercore, then with it.
|
||||
for ac_symprfx in "" "_"; do
|
||||
|
||||
ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
ac_pipe_works=no
|
||||
rm -f conftest.$ac_ext
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char nm_test_var;
|
||||
void nm_test_func(){}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
int main(){nm_test_var='a';nm_test_func;return 0;}
|
||||
EOF
|
||||
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
|
||||
# Try sorting and uniquifying the output.
|
||||
if sort "$ac_nlist" | uniq > "$ac_nlist"T; then
|
||||
mv -f "$ac_nlist"T "$ac_nlist"
|
||||
else
|
||||
rm -f "$ac_nlist"T
|
||||
fi
|
||||
|
||||
# Make sure that we snagged all the symbols we need.
|
||||
if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then
|
||||
if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then
|
||||
cat <<EOF > conftest.c
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EOF
|
||||
# Now generate the symbol file.
|
||||
eval "$ac_global_symbol_to_cdecl"' < "$ac_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;
|
||||
}
|
||||
changequote(,)dnl
|
||||
lt_preloaded_symbols[] =
|
||||
changequote([,])dnl
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# Now try linking the two files.
|
||||
mv conftest.$ac_objext conftestm.$ac_objext
|
||||
ac_save_LIBS="$LIBS"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
LIBS="conftestm.$ac_objext"
|
||||
CFLAGS="$CFLAGS$no_builtin_flag"
|
||||
if AC_TRY_EVAL(ac_link) && test -s conftest; then
|
||||
ac_pipe_works=yes
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
LIBS="$ac_save_LIBS"
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
else
|
||||
echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "$progname: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$ac_pipe_works" = yes; then
|
||||
if test x"$ac_symprfx" = x"_"; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
ac_cv_sys_symbol_underscore=no
|
||||
fi
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
ac_result=yes
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
ac_result=no
|
||||
fi
|
||||
AC_MSG_RESULT($ac_result)
|
||||
])
|
||||
|
||||
# AC_SYS_LIBTOOL_CYGWIN - find tools needed on cygwin
|
||||
AC_DEFUN(AC_SYS_LIBTOOL_CYGWIN,
|
||||
[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
])
|
||||
|
||||
# AC_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols
|
||||
# with an underscore?
|
||||
AC_DEFUN(AC_SYS_SYMBOL_UNDERSCORE,
|
||||
[AC_REQUIRE([AC_PROG_NM])dnl
|
||||
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||
[ac_cv_sys_symbol_underscore=no
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
void nm_test_func(){}
|
||||
int main(){nm_test_func;return 0;}
|
||||
EOF
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
# See whether the symbols have a leading underscore.
|
||||
if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
|
||||
:
|
||||
else
|
||||
echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
])
|
||||
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
|
||||
USE_SYMBOL_UNDERSCORE=${ac_cv_sys_symbol_underscore=no}
|
||||
AC_SUBST(USE_SYMBOL_UNDERSCORE)dnl
|
||||
])
|
||||
|
||||
# AC_CHECK_LIBM - check for math library
|
||||
AC_DEFUN(AC_CHECK_LIBM, [
|
||||
AC_CHECK_LIB(mw, _mwvalidcheckl)
|
||||
AC_CHECK_LIB(m, cos)
|
||||
])
|
||||
|
||||
# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
|
||||
|
@ -586,13 +375,14 @@ AC_CHECK_LIB(m, cos)
|
|||
# '${top_builddir}/' (note the single quotes!) if your package is not
|
||||
# flat, and, if you're not using automake, define top_builddir as
|
||||
# appropriate in the Makefiles.
|
||||
AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
|
||||
AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
case "$enable_ltdl_convenience" in
|
||||
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
|
||||
"") enable_ltdl_convenience=yes
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
|
||||
esac
|
||||
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
|
||||
INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
|
||||
])
|
||||
|
||||
# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
|
||||
|
@ -604,16 +394,23 @@ AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
|
|||
# flat, and, if you're not using automake, define top_builddir as
|
||||
# appropriate in the Makefiles.
|
||||
# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
|
||||
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [
|
||||
AC_CHECK_LIB(ltdl, main, LIBLTDL="-lltdl", [
|
||||
case "$enable_ltdl_install" in
|
||||
no) AC_MSG_WARN([libltdl not installed, but installation disabled]) ;;
|
||||
"") enable_ltdl_install=yes
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install" ;;
|
||||
esac
|
||||
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_CHECK_LIB(ltdl, main,
|
||||
[test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
|
||||
[if test x"$enable_ltdl_install" = xno; then
|
||||
AC_MSG_WARN([libltdl not installed, but installation disabled])
|
||||
else
|
||||
enable_ltdl_install=yes
|
||||
fi
|
||||
])
|
||||
if test x"$enable_ltdl_install" != x"no"; then
|
||||
if test x"$enable_ltdl_install" = x"yes"; then
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install"
|
||||
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
|
||||
INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
|
||||
else
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
|
||||
LIBLTDL="-lltdl"
|
||||
INCLTDL=
|
||||
fi
|
||||
])
|
||||
|
||||
|
@ -625,6 +422,6 @@ AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
|
|||
AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
|
||||
AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
|
||||
AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
|
||||
AC_DEFUN(AM_SYS_NM_PARSE, [indir([AC_SYS_NM_PARSE])])dnl
|
||||
AC_DEFUN(AM_SYS_SYMBOL_UNDERSCORE, [indir([AC_SYS_SYMBOL_UNDERSCORE])])dnl
|
||||
AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN, [indir([AC_SYS_LIBTOOL_CYGWIN])])dnl
|
||||
|
||||
dnl This is just to silence aclocal about the macro not being used
|
||||
ifelse([AC_DISABLE_FAST_INSTALL])dnl
|
||||
|
|
|
@ -11,7 +11,7 @@ dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
# serial 35 AC_PROG_LIBTOOL
|
||||
# serial 40 AC_PROG_LIBTOOL
|
||||
AC_DEFUN(AC_PROG_LIBTOOL,
|
||||
[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
|
||||
|
||||
|
@ -20,8 +20,9 @@ AC_CACHE_SAVE
|
|||
|
||||
# Actually configure libtool. ac_aux_dir is where install-sh is found.
|
||||
CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
|
||||
LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
|
||||
DLLTOOL="$DLLTOOL" AS="$AS" \
|
||||
LD="$LD" LDFLAGS="$LDFLAGS" LIBS="$LIBS" \
|
||||
LN_S="$LN_S" NM="$NM" RANLIB="$RANLIB" \
|
||||
DLLTOOL="$DLLTOOL" AS="$AS" OBJDUMP="$OBJDUMP" \
|
||||
${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig --no-reexec \
|
||||
$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
|
||||
|| AC_MSG_ERROR([libtool configure failed])
|
||||
|
@ -52,8 +53,6 @@ AC_REQUIRE([AC_PROG_RANLIB])dnl
|
|||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_PROG_LD])dnl
|
||||
AC_REQUIRE([AC_PROG_NM])dnl
|
||||
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||
AC_REQUIRE([AC_SYS_SYMBOL_UNDERSCORE])dnl
|
||||
AC_REQUIRE([AC_PROG_LN_S])dnl
|
||||
dnl
|
||||
|
||||
|
@ -62,10 +61,16 @@ libtool_flags="--cache-file=$cache_file"
|
|||
test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
|
||||
test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
|
||||
test "$enable_fast_install" = no && libtool_flags="$libtool_flags --disable-fast-install"
|
||||
test "$lt_dlopen" = yes && libtool_flags="$libtool_flags --enable-dlopen"
|
||||
test "$silent" = yes && libtool_flags="$libtool_flags --silent"
|
||||
test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
|
||||
test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN],
|
||||
[libtool_flags="$libtool_flags --enable-dlopen"])
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
|
||||
[libtool_flags="$libtool_flags --enable-win32-dll"])
|
||||
AC_ARG_ENABLE(libtool-lock,
|
||||
[ --disable-libtool-lock avoid locking (might break parallel builds)])
|
||||
test "x$enable_libtool_lock" = xno && libtool_flags="$libtool_flags --disable-lock"
|
||||
test x"$silent" = xyes && libtool_flags="$libtool_flags --silent"
|
||||
|
||||
# Some flags need to be propagated to the compiler or linker for good
|
||||
# libtool support.
|
||||
|
@ -101,33 +106,28 @@ case "$host" in
|
|||
fi
|
||||
;;
|
||||
|
||||
*-*-cygwin*)
|
||||
AC_SYS_LIBTOOL_CYGWIN
|
||||
ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL],
|
||||
[*-*-cygwin* | *-*-mingw*)
|
||||
AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
AC_CHECK_TOOL(OBJDUMP, objdump, false)
|
||||
;;
|
||||
|
||||
])
|
||||
esac
|
||||
|
||||
# enable the --disable-libtool-lock switch
|
||||
|
||||
AC_ARG_ENABLE(libtool-lock,
|
||||
[ --disable-libtool-lock force libtool not to do file locking],
|
||||
need_locks=$enableval,
|
||||
need_locks=yes)
|
||||
|
||||
if test x"$need_locks" = xno; then
|
||||
libtool_flags="$libtool_flags --disable-lock"
|
||||
fi
|
||||
])
|
||||
|
||||
# AC_LIBTOOL_DLOPEN - check for dlopen support
|
||||
AC_DEFUN(AC_LIBTOOL_DLOPEN, [lt_dlopen=yes])
|
||||
# AC_LIBTOOL_DLOPEN - enable checks for dlopen support
|
||||
AC_DEFUN(AC_LIBTOOL_DLOPEN, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])])
|
||||
|
||||
# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's
|
||||
AC_DEFUN(AC_LIBTOOL_WIN32_DLL, [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])])
|
||||
|
||||
# AC_ENABLE_SHARED - implement the --enable-shared flag
|
||||
# Usage: AC_ENABLE_SHARED[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_SHARED,
|
||||
[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_SHARED, [dnl
|
||||
define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(shared,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT],
|
||||
|
@ -152,15 +152,15 @@ enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_DISABLE_SHARED - set the default shared flag to --disable-shared
|
||||
AC_DEFUN(AC_DISABLE_SHARED,
|
||||
[AC_ENABLE_SHARED(no)])
|
||||
AC_DEFUN(AC_DISABLE_SHARED, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_SHARED(no)])
|
||||
|
||||
# AC_ENABLE_STATIC - implement the --enable-static flag
|
||||
# Usage: AC_ENABLE_STATIC[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_STATIC,
|
||||
[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_STATIC, [dnl
|
||||
define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(static,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT],
|
||||
|
@ -185,16 +185,16 @@ enable_static=AC_ENABLE_STATIC_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_DISABLE_STATIC - set the default static flag to --disable-static
|
||||
AC_DEFUN(AC_DISABLE_STATIC,
|
||||
[AC_ENABLE_STATIC(no)])
|
||||
AC_DEFUN(AC_DISABLE_STATIC, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_STATIC(no)])
|
||||
|
||||
|
||||
# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag
|
||||
# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)]
|
||||
# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
|
||||
# `yes'.
|
||||
AC_DEFUN(AC_ENABLE_FAST_INSTALL,
|
||||
[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_DEFUN(AC_ENABLE_FAST_INSTALL, [dnl
|
||||
define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
|
||||
AC_ARG_ENABLE(fast-install,
|
||||
changequote(<<, >>)dnl
|
||||
<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT],
|
||||
|
@ -219,9 +219,8 @@ enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl
|
|||
])
|
||||
|
||||
# AC_ENABLE_FAST_INSTALL - set the default to --disable-fast-install
|
||||
AC_DEFUN(AC_DISABLE_FAST_INSTALL,
|
||||
[AC_ENABLE_FAST_INSTALL(no)])
|
||||
|
||||
AC_DEFUN(AC_DISABLE_FAST_INSTALL, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_ENABLE_FAST_INSTALL(no)])
|
||||
|
||||
# AC_PROG_LD - find the path to the GNU or non-GNU linker
|
||||
AC_DEFUN(AC_PROG_LD,
|
||||
|
@ -239,7 +238,7 @@ if test "$ac_cv_prog_gcc" = yes; then
|
|||
case "$ac_prog" in
|
||||
# Accept absolute paths.
|
||||
changequote(,)dnl
|
||||
/* | [A-Za-z]:[\\/]*)
|
||||
[\\/]* | [A-Za-z]:[\\/]*)
|
||||
re_direlt='/[^/][^/]*/\.\./'
|
||||
changequote([,])dnl
|
||||
# Canonicalize the path of ld
|
||||
|
@ -265,10 +264,10 @@ else
|
|||
fi
|
||||
AC_CACHE_VAL(ac_cv_path_LD,
|
||||
[if test -z "$LD"; then
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
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"; then
|
||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
||||
ac_cv_path_LD="$ac_dir/$ac_prog"
|
||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
||||
# but apparently some GNU ld's only accept -v.
|
||||
|
@ -313,10 +312,10 @@ AC_CACHE_VAL(ac_cv_path_NM,
|
|||
# Let the user override the test.
|
||||
ac_cv_path_NM="$NM"
|
||||
else
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||
for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f $ac_dir/nm; then
|
||||
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
|
||||
|
@ -340,227 +339,22 @@ AC_MSG_RESULT([$NM])
|
|||
AC_SUBST(NM)
|
||||
])
|
||||
|
||||
# AC_SYS_NM_PARSE - Check for command to grab the raw symbol name followed
|
||||
# by C symbol name from nm.
|
||||
AC_DEFUN(AC_SYS_NM_PARSE,
|
||||
# AC_CHECK_LIBM - check for math library
|
||||
AC_DEFUN(AC_CHECK_LIBM,
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([AC_PROG_NM])dnl
|
||||
# Check for command to grab the raw symbol name followed by C symbol from nm.
|
||||
AC_MSG_CHECKING([command to parse $NM output])
|
||||
AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe,
|
||||
[# These are sane defaults that work on at least a few old systems.
|
||||
# {They come from Ultrix. What could be older than Ultrix?!! ;)}
|
||||
|
||||
changequote(,)dnl
|
||||
# Character class describing NM global symbol codes.
|
||||
ac_symcode='[BCDEGRST]'
|
||||
|
||||
# Regexp to match symbols that can be accessed directly from C.
|
||||
ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
|
||||
|
||||
# Transform the above into a raw symbol and a C symbol.
|
||||
ac_symxfrm='\1 \2\3 \3'
|
||||
|
||||
# Transform an extracted symbol line into a proper C declaration
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
ac_symcode='[BCDT]'
|
||||
LIBM=
|
||||
case "$host" in
|
||||
*-*-beos* | *-*-cygwin*)
|
||||
# These system don't have libm
|
||||
;;
|
||||
cygwin* | mingw*)
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
*-ncr-sysv4.3*)
|
||||
AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
|
||||
AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
|
||||
;;
|
||||
hpux*)
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
ac_symcode='[BCDEGRST]'
|
||||
;;
|
||||
solaris*)
|
||||
ac_symcode='[BDT]'
|
||||
*)
|
||||
AC_CHECK_LIB(m, main, LIBM="-lm")
|
||||
;;
|
||||
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
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
# Try without a prefix undercore, then with it.
|
||||
for ac_symprfx in "" "_"; do
|
||||
|
||||
ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
ac_pipe_works=no
|
||||
rm -f conftest.$ac_ext
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char nm_test_var;
|
||||
void nm_test_func(){}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
int main(){nm_test_var='a';nm_test_func;return 0;}
|
||||
EOF
|
||||
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
|
||||
# Try sorting and uniquifying the output.
|
||||
if sort "$ac_nlist" | uniq > "$ac_nlist"T; then
|
||||
mv -f "$ac_nlist"T "$ac_nlist"
|
||||
else
|
||||
rm -f "$ac_nlist"T
|
||||
fi
|
||||
|
||||
# Make sure that we snagged all the symbols we need.
|
||||
if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then
|
||||
if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then
|
||||
cat <<EOF > conftest.c
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EOF
|
||||
# Now generate the symbol file.
|
||||
eval "$ac_global_symbol_to_cdecl"' < "$ac_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;
|
||||
}
|
||||
changequote(,)dnl
|
||||
lt_preloaded_symbols[] =
|
||||
changequote([,])dnl
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# Now try linking the two files.
|
||||
mv conftest.$ac_objext conftestm.$ac_objext
|
||||
ac_save_LIBS="$LIBS"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
LIBS="conftestm.$ac_objext"
|
||||
CFLAGS="$CFLAGS$no_builtin_flag"
|
||||
if AC_TRY_EVAL(ac_link) && test -s conftest; then
|
||||
ac_pipe_works=yes
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
LIBS="$ac_save_LIBS"
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
else
|
||||
echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "$progname: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$ac_pipe_works" = yes; then
|
||||
if test x"$ac_symprfx" = x"_"; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
ac_cv_sys_symbol_underscore=no
|
||||
fi
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
ac_result=yes
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
ac_result=no
|
||||
fi
|
||||
AC_MSG_RESULT($ac_result)
|
||||
])
|
||||
|
||||
# AC_SYS_LIBTOOL_CYGWIN - find tools needed on cygwin
|
||||
AC_DEFUN(AC_SYS_LIBTOOL_CYGWIN,
|
||||
[AC_CHECK_TOOL(DLLTOOL, dlltool, false)
|
||||
AC_CHECK_TOOL(AS, as, false)
|
||||
])
|
||||
|
||||
# AC_SYS_SYMBOL_UNDERSCORE - does the compiler prefix global symbols
|
||||
# with an underscore?
|
||||
AC_DEFUN(AC_SYS_SYMBOL_UNDERSCORE,
|
||||
[AC_REQUIRE([AC_PROG_NM])dnl
|
||||
AC_REQUIRE([AC_SYS_NM_PARSE])dnl
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||
[ac_cv_sys_symbol_underscore=no
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
void nm_test_func(){}
|
||||
int main(){nm_test_func;return 0;}
|
||||
EOF
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
# See whether the symbols have a leading underscore.
|
||||
if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
|
||||
:
|
||||
else
|
||||
echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
])
|
||||
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
|
||||
USE_SYMBOL_UNDERSCORE=${ac_cv_sys_symbol_underscore=no}
|
||||
AC_SUBST(USE_SYMBOL_UNDERSCORE)dnl
|
||||
])
|
||||
|
||||
# AC_CHECK_LIBM - check for math library
|
||||
AC_DEFUN(AC_CHECK_LIBM, [
|
||||
AC_CHECK_LIB(mw, _mwvalidcheckl)
|
||||
AC_CHECK_LIB(m, cos)
|
||||
])
|
||||
|
||||
# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for
|
||||
|
@ -571,13 +365,14 @@ AC_CHECK_LIB(m, cos)
|
|||
# '${top_builddir}/' (note the single quotes!) if your package is not
|
||||
# flat, and, if you're not using automake, define top_builddir as
|
||||
# appropriate in the Makefiles.
|
||||
AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
|
||||
AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
case "$enable_ltdl_convenience" in
|
||||
no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
|
||||
"") enable_ltdl_convenience=yes
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
|
||||
esac
|
||||
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdlc.la
|
||||
INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
|
||||
])
|
||||
|
||||
# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for
|
||||
|
@ -589,16 +384,23 @@ AC_DEFUN(AC_LIBLTDL_CONVENIENCE, [
|
|||
# flat, and, if you're not using automake, define top_builddir as
|
||||
# appropriate in the Makefiles.
|
||||
# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
|
||||
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [
|
||||
AC_CHECK_LIB(ltdl, main, LIBLTDL="-lltdl", [
|
||||
case "$enable_ltdl_install" in
|
||||
no) AC_MSG_WARN([libltdl not installed, but installation disabled]) ;;
|
||||
"") enable_ltdl_install=yes
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install" ;;
|
||||
esac
|
||||
AC_DEFUN(AC_LIBLTDL_INSTALLABLE, [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
|
||||
AC_CHECK_LIB(ltdl, main,
|
||||
[test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
|
||||
[if test x"$enable_ltdl_install" = xno; then
|
||||
AC_MSG_WARN([libltdl not installed, but installation disabled])
|
||||
else
|
||||
enable_ltdl_install=yes
|
||||
fi
|
||||
])
|
||||
if test x"$enable_ltdl_install" != x"no"; then
|
||||
if test x"$enable_ltdl_install" = x"yes"; then
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install"
|
||||
LIBLTDL=ifelse($#,1,$1,['${top_builddir}/libltdl'])/libltdl.la
|
||||
INCLTDL=ifelse($#,1,-I$1,['-I${top_builddir}/libltdl'])
|
||||
else
|
||||
ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
|
||||
LIBLTDL="-lltdl"
|
||||
INCLTDL=
|
||||
fi
|
||||
])
|
||||
|
||||
|
@ -610,9 +412,9 @@ AC_DEFUN(AM_DISABLE_SHARED, [indir([AC_DISABLE_SHARED], $@)])dnl
|
|||
AC_DEFUN(AM_DISABLE_STATIC, [indir([AC_DISABLE_STATIC], $@)])dnl
|
||||
AC_DEFUN(AM_PROG_LD, [indir([AC_PROG_LD])])dnl
|
||||
AC_DEFUN(AM_PROG_NM, [indir([AC_PROG_NM])])dnl
|
||||
AC_DEFUN(AM_SYS_NM_PARSE, [indir([AC_SYS_NM_PARSE])])dnl
|
||||
AC_DEFUN(AM_SYS_SYMBOL_UNDERSCORE, [indir([AC_SYS_SYMBOL_UNDERSCORE])])dnl
|
||||
AC_DEFUN(AM_SYS_LIBTOOL_CYGWIN, [indir([AC_SYS_LIBTOOL_CYGWIN])])dnl
|
||||
|
||||
dnl This is just to silence aclocal about the macro not being used
|
||||
ifelse([AC_DISABLE_FAST_INSTALL])dnl
|
||||
|
||||
# Do all the work for Automake. This macro actually does too much --
|
||||
# some checks are only needed if your package does certain things.
|
||||
|
|
|
@ -9,27 +9,27 @@
|
|||
/* Define if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define if you have the libdl library or equivalent. */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define if you have the GNU dld library. */
|
||||
#undef HAVE_DLD
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
#undef HAVE_SHL_LOAD
|
||||
|
||||
/* Define if you have the dlerror function. */
|
||||
#undef HAVE_DLERROR
|
||||
|
||||
/* Define if you have the dlopen function. */
|
||||
#undef HAVE_DLOPEN
|
||||
|
||||
/* Define if you have the index function. */
|
||||
#undef HAVE_INDEX
|
||||
|
||||
/* Define if you have the rindex function. */
|
||||
#undef HAVE_RINDEX
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
#undef HAVE_SHL_LOAD
|
||||
|
||||
/* Define if you have the strchr function. */
|
||||
#undef HAVE_STRCHR
|
||||
|
||||
/* Define if you have the strdup function. */
|
||||
#undef HAVE_STRDUP
|
||||
|
||||
/* Define if you have the strrchr function. */
|
||||
#undef HAVE_STRRCHR
|
||||
|
||||
|
@ -75,18 +75,6 @@
|
|||
/* Define if libtool can extract symbol lists from object files. */
|
||||
#undef HAVE_PRELOADED_SYMBOLS
|
||||
|
||||
/* Define if you have the libdl library or equivalent. */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define if you have the libdl library. */
|
||||
#undef HAVE_LIBDL
|
||||
|
||||
/* Define if you have the GNU dld library. */
|
||||
#undef HAVE_DLD
|
||||
|
||||
/* Define if you have the shl_load function. */
|
||||
#undef HAVE_SHL_LOAD
|
||||
|
||||
/* Define if dlsym() requires a leading underscode in symbol names. */
|
||||
#undef NEED_USCORE
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
|||
dnl Process this file with autoconf to create configure.
|
||||
dnl Initialize the libltdl package.
|
||||
|
||||
AC_INIT(ltdl.c)
|
||||
|
||||
if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then
|
||||
|
@ -30,19 +30,21 @@ AC_ARG_ENABLE(ltdl-install,
|
|||
AM_CONDITIONAL(INSTALL_LTDL, test x"${enable_ltdl_install-no}" != xno)
|
||||
AM_CONDITIONAL(CONVENIENCE_LTDL, test x"${enable_ltdl_convenience-no}" != xno)
|
||||
|
||||
dnl Read the libtool configuration
|
||||
rm -f conftest
|
||||
./libtool --config > conftest
|
||||
. ./conftest
|
||||
rm -f conftest
|
||||
|
||||
AC_CACHE_CHECK([which extension is used for shared libraries],
|
||||
libltdl_cv_shlibext, [dnl
|
||||
(
|
||||
rm -f conftest
|
||||
./libtool --config > conftest
|
||||
. ./conftest
|
||||
last=
|
||||
for spec in $library_names_spec; do
|
||||
last="$spec"
|
||||
done
|
||||
rm -f conftest
|
||||
changequote(, )
|
||||
echo "$last" | sed 's/^[^.]*//;s/\$.*$//;s/\.$//' > conftest
|
||||
echo "$last" | sed 's/\[.*\]//;s/^[^.]*//;s/\$.*$//;s/\.$//' > conftest
|
||||
changequote([, ])
|
||||
)
|
||||
libltdl_cv_shlibext=`cat conftest`
|
||||
|
@ -54,34 +56,14 @@ if test -n "$libltdl_cv_shlibext"; then
|
|||
fi
|
||||
|
||||
AC_CACHE_CHECK([which variable specifies run-time library path],
|
||||
libltdl_cv_shlibpath_var, [dnl
|
||||
(
|
||||
rm -f conftest
|
||||
./libtool --config > conftest
|
||||
. ./conftest
|
||||
rm -f conftest
|
||||
echo "$shlibpath_var" > conftest
|
||||
)
|
||||
libltdl_cv_shlibpath_var=`cat conftest`
|
||||
rm -f conftest
|
||||
])
|
||||
libltdl_cv_shlibpath_var, [libltdl_cv_shlibpath_var="$shlibpath_var"])
|
||||
if test -n "$libltdl_cv_shlibpath_var"; then
|
||||
AC_DEFINE_UNQUOTED(LTDL_SHLIBPATH_VAR, "$libltdl_cv_shlibpath_var",
|
||||
[Define to the name of the environment variable that determines the dynamic library search path. ])
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([for objdir],
|
||||
libltdl_cv_objdir, [dnl
|
||||
(
|
||||
rm -f conftest
|
||||
./libtool --config > conftest
|
||||
. ./conftest
|
||||
rm -f conftest
|
||||
echo "$objdir" > conftest
|
||||
)
|
||||
libltdl_cv_objdir=`cat conftest`
|
||||
rm -f conftest
|
||||
])
|
||||
libltdl_cv_objdir, [libltdl_cv_objdir="$objdir"])
|
||||
test -z "$libltdl_cv_objdir" && libltdl_cv_objdir=".libs"
|
||||
AC_DEFINE_UNQUOTED(LTDL_OBJDIR, "$libltdl_cv_objdir/",
|
||||
[Define to the sub-directory in which libtool stores uninstalled libraries. ])
|
||||
|
@ -89,55 +71,241 @@ AC_DEFINE_UNQUOTED(LTDL_OBJDIR, "$libltdl_cv_objdir/",
|
|||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(malloc.h memory.h stdlib.h stdio.h ctype.h dlfcn.h dl.h dld.h)
|
||||
AC_CHECK_HEADERS(string.h strings.h, break)
|
||||
AC_CHECK_FUNCS(strdup strchr strrchr index rindex)
|
||||
AC_CHECK_FUNCS(strchr index, break)
|
||||
AC_CHECK_FUNCS(strrchr rindex, break)
|
||||
|
||||
AC_CACHE_CHECK([whether libtool supports -dlopen/-dlpreopen],
|
||||
libltdl_cv_preloaded_symbols, [dnl
|
||||
(
|
||||
rm -f conftest
|
||||
./libtool --config > conftest
|
||||
. ./conftest
|
||||
rm -f conftest
|
||||
if test -n "$global_symbol_pipe"; then
|
||||
echo yes > conftest
|
||||
else
|
||||
echo no > conftest
|
||||
fi
|
||||
)
|
||||
libltdl_cv_preloaded_symbols=`cat conftest`
|
||||
rm -f conftest
|
||||
if test -n "$global_symbol_pipe"; then
|
||||
libltdl_cv_preloaded_symbols=yes
|
||||
else
|
||||
libltdl_cv_preloaded_symbols=no
|
||||
fi
|
||||
])
|
||||
if test x"$libltdl_cv_preloaded_symbols" = x"yes"; then
|
||||
AC_DEFINE(HAVE_PRELOADED_SYMBOLS, 1,
|
||||
[Define if libtool can extract symbol lists from object files. ])
|
||||
fi
|
||||
|
||||
test_dlerror=no
|
||||
LIBADD_DL=
|
||||
AC_CHECK_FUNCS(dlopen, [AC_DEFINE(HAVE_LIBDL, 1,
|
||||
[Define if you have the libdl library or equivalent. ]) test_dlerror=yes],
|
||||
[AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_LIBDL, 1,
|
||||
[Define if you have the libdl library. ]) dnl
|
||||
LIBADD_DL="-ldl" test_dlerror=yes],
|
||||
[AC_CHECK_LIB(dld, dld_link, [AC_DEFINE(HAVE_DLD, 1,
|
||||
[Define if you have the GNU dld library. ]) dnl
|
||||
LIBADD_DL="-ldld"],
|
||||
[AC_CHECK_FUNCS(shl_load, [AC_DEFINE(HAVE_SHL_LOAD, 1,
|
||||
[Define if you have the shl_load function. ])])]
|
||||
)]
|
||||
)]
|
||||
)
|
||||
AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_LIBDL, 1) LIBADD_DL="-ldl"],
|
||||
[AC_CHECK_FUNC(dlopen, [AC_DEFINE(HAVE_LIBDL, 1)])])
|
||||
AC_CHECK_FUNC(shl_load, [AC_DEFINE(HAVE_SHL_LOAD, 1)],
|
||||
[AC_CHECK_LIB(dld, shl_load, [AC_DEFINE(HAVE_SHL_LOAD, 1) LIBADD_DL="$LIBADD_DL -ldld"])])
|
||||
AC_CHECK_LIB(dld, dld_link, [AC_DEFINE(HAVE_DLD, 1)dnl
|
||||
test "x$ac_cv_lib_dld_shl_load" = yes || LIBADD_DL="$LIBADD_DL -ldld"])
|
||||
AC_SUBST(LIBADD_DL)
|
||||
|
||||
if test "$test_dlerror" = yes; then
|
||||
if test "x$ac_cv_func_dlopen" = xyes || test "x$ac_cv_lib_dl_dlopen" = xyes; then
|
||||
LIBS_SAVE="$LIBS"
|
||||
LIBS="$LIBS $LIBADD_DL"
|
||||
AC_CHECK_FUNCS(dlerror)
|
||||
LIBS="$LIBS_SAVE"
|
||||
fi
|
||||
|
||||
AC_SYS_SYMBOL_UNDERSCORE
|
||||
if test x"$USE_SYMBOL_UNDERSCORE" = xyes; then
|
||||
dnl Check for command to grab the raw symbol name followed
|
||||
dnl by C symbol name from nm.
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([AC_PROG_NM])dnl
|
||||
# Check for command to grab the raw symbol name followed by C symbol from nm.
|
||||
AC_MSG_CHECKING([command to parse $NM output])
|
||||
AC_CACHE_VAL(ac_cv_sys_global_symbol_pipe,
|
||||
[# These are sane defaults that work on at least a few old systems.
|
||||
# {They come from Ultrix. What could be older than Ultrix?!! ;)}
|
||||
|
||||
changequote(,)dnl
|
||||
# Character class describing NM global symbol codes.
|
||||
ac_symcode='[BCDEGRST]'
|
||||
|
||||
# Regexp to match symbols that can be accessed directly from C.
|
||||
ac_sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
|
||||
|
||||
# Transform the above into a raw symbol and a C symbol.
|
||||
ac_symxfrm='\1 \2\3 \3'
|
||||
|
||||
# Transform an extracted symbol line into a proper C declaration
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
|
||||
# Define system-specific variables.
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
ac_symcode='[BCDT]'
|
||||
;;
|
||||
cygwin* | mingw*)
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
;;
|
||||
hpux*)
|
||||
ac_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
|
||||
;;
|
||||
irix*)
|
||||
ac_symcode='[BCDEGRST]'
|
||||
;;
|
||||
solaris*)
|
||||
ac_symcode='[BDT]'
|
||||
;;
|
||||
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
|
||||
ac_symcode='[ABCDGISTW]'
|
||||
fi
|
||||
changequote([,])dnl
|
||||
|
||||
# Try without a prefix undercore, then with it.
|
||||
for ac_symprfx in "" "_"; do
|
||||
|
||||
ac_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($ac_symcode\)[ ][ ]*\($ac_symprfx\)$ac_sympat$/$ac_symxfrm/p'"
|
||||
|
||||
# Check to see that the pipe works correctly.
|
||||
ac_pipe_works=no
|
||||
rm -f conftest.$ac_ext
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
char nm_test_var;
|
||||
void nm_test_func(){}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
int main(){nm_test_var='a';nm_test_func;return 0;}
|
||||
EOF
|
||||
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
|
||||
# Try sorting and uniquifying the output.
|
||||
if sort "$ac_nlist" | uniq > "$ac_nlist"T; then
|
||||
mv -f "$ac_nlist"T "$ac_nlist"
|
||||
else
|
||||
rm -f "$ac_nlist"T
|
||||
fi
|
||||
|
||||
# Make sure that we snagged all the symbols we need.
|
||||
if egrep ' nm_test_var$' "$ac_nlist" >/dev/null; then
|
||||
if egrep ' nm_test_func$' "$ac_nlist" >/dev/null; then
|
||||
cat <<EOF > conftest.c
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
EOF
|
||||
# Now generate the symbol file.
|
||||
eval "$ac_global_symbol_to_cdecl"' < "$ac_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;
|
||||
}
|
||||
changequote(,)dnl
|
||||
lt_preloaded_symbols[] =
|
||||
changequote([,])dnl
|
||||
{
|
||||
EOF
|
||||
sed 's/^. \(.*\) \(.*\)$/ {"\2", (lt_ptr_t) \&\2},/' < "$ac_nlist" >> conftest.c
|
||||
cat <<\EOF >> conftest.c
|
||||
{0, (lt_ptr_t) 0}
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
EOF
|
||||
# Now try linking the two files.
|
||||
mv conftest.$ac_objext conftstm.$ac_objext
|
||||
ac_save_LIBS="$LIBS"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
LIBS="conftstm.$ac_objext"
|
||||
CFLAGS="$CFLAGS$no_builtin_flag"
|
||||
if AC_TRY_EVAL(ac_link) && test -s conftest; then
|
||||
ac_pipe_works=yes
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
LIBS="$ac_save_LIBS"
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
else
|
||||
echo "cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot find nm_test_var in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "$progname: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest* conftst*
|
||||
|
||||
# Do not use the global_symbol_pipe unless it works.
|
||||
if test "$ac_pipe_works" = yes; then
|
||||
if test x"$ac_symprfx" = x"_"; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
ac_cv_sys_symbol_underscore=no
|
||||
fi
|
||||
break
|
||||
else
|
||||
ac_cv_sys_global_symbol_pipe=
|
||||
fi
|
||||
done
|
||||
])
|
||||
|
||||
ac_result=yes
|
||||
if test -z "$ac_cv_sys_global_symbol_pipe"; then
|
||||
ac_result=no
|
||||
fi
|
||||
AC_MSG_RESULT($ac_result)
|
||||
|
||||
dnl does the compiler prefix global symbols with an underscore?
|
||||
AC_MSG_CHECKING([for _ prefix in compiled symbols])
|
||||
AC_CACHE_VAL(ac_cv_sys_symbol_underscore,
|
||||
[ac_cv_sys_symbol_underscore=no
|
||||
cat > conftest.$ac_ext <<EOF
|
||||
void nm_test_func(){}
|
||||
int main(){nm_test_func;return 0;}
|
||||
EOF
|
||||
if AC_TRY_EVAL(ac_compile); then
|
||||
# Now try to grab the symbols.
|
||||
ac_nlist=conftest.nm
|
||||
if AC_TRY_EVAL(NM conftest.$ac_objext \| $ac_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then
|
||||
# See whether the symbols have a leading underscore.
|
||||
if egrep '^. _nm_test_func' "$ac_nlist" >/dev/null; then
|
||||
ac_cv_sys_symbol_underscore=yes
|
||||
else
|
||||
if egrep '^. nm_test_func ' "$ac_nlist" >/dev/null; then
|
||||
:
|
||||
else
|
||||
echo "configure: cannot find nm_test_func in $ac_nlist" >&AC_FD_CC
|
||||
fi
|
||||
fi
|
||||
else
|
||||
echo "configure: cannot run $ac_cv_sys_global_symbol_pipe" >&AC_FD_CC
|
||||
fi
|
||||
else
|
||||
echo "configure: failed program was:" >&AC_FD_CC
|
||||
cat conftest.c >&AC_FD_CC
|
||||
fi
|
||||
rm -rf conftest*
|
||||
])
|
||||
AC_MSG_RESULT($ac_cv_sys_symbol_underscore)
|
||||
|
||||
if test x"$ac_cv_sys_symbol_underscore" = xyes; then
|
||||
if test x"$ac_cv_func_dlopen" = xyes ||
|
||||
test x"$ac_cv_lib_dl_dlopen" = xyes ; then
|
||||
AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
|
||||
|
@ -184,7 +352,7 @@ if test x"$USE_SYMBOL_UNDERSCORE" = xyes; then
|
|||
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) exit(0); } exit(1); }
|
||||
if(ptr1 && !ptr2) { dlclose(self); exit(0); } } exit(1); }
|
||||
], libltdl_cv_need_uscore=no, libltdl_cv_need_uscore=yes,
|
||||
libltdl_cv_need_uscore=cross
|
||||
)])
|
||||
|
|
294
libltdl/ltdl.c
294
libltdl/ltdl.c
|
@ -1,6 +1,6 @@
|
|||
/* ltdl.c -- system independent dlopen wrapper
|
||||
Copyright (C) 1998-1999 Free Software Foundation, Inc.
|
||||
Originally by Thomas Tanner <tanner@gmx.de>
|
||||
Originally by Thomas Tanner <tanner@ffii.org>
|
||||
This file is part of GNU Libtool.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
|
@ -8,6 +8,11 @@ modify it under the terms of the GNU Library General Public
|
|||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
As a special exception to the GNU Library General Public License,
|
||||
if you distribute this file as part of a program that uses GNU libtool
|
||||
to create libraries and programs, you may include it under the same
|
||||
distribution terms that you use for the rest of that program.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
|
@ -76,12 +81,16 @@ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|||
#define LTDL_SYMBOL_OVERHEAD 5
|
||||
|
||||
static const char objdir[] = LTDL_OBJDIR;
|
||||
#ifdef LTDL_SHLIB_EXT
|
||||
static const char shlib_ext[] = LTDL_SHLIB_EXT;
|
||||
#endif
|
||||
|
||||
static const char unknown_error[] = "unknown error";
|
||||
static const char dlopen_not_supported_error[] = "dlopen support not available";
|
||||
static const char file_not_found_error[] = "file not found";
|
||||
static const char no_symbols_error[] = "no symbols defined";
|
||||
static const char cannot_open_error[] = "can't open the module";
|
||||
static const char cannot_close_error[] = "can't close the module";
|
||||
static const char symbol_error[] = "symbol not found";
|
||||
static const char memory_error[] = "not enough memory";
|
||||
static const char invalid_handle_error[] = "invalid handle";
|
||||
|
@ -95,17 +104,17 @@ const lt_dlsymlist lt_preloaded_symbols[1] = { { 0, 0 } };
|
|||
|
||||
static const char *last_error = 0;
|
||||
|
||||
lt_ptr_t (*lt_dlmalloc) __P((size_t size)) = malloc;
|
||||
void (*lt_dlfree) __P((lt_ptr_t ptr)) = free;
|
||||
lt_ptr_t (*lt_dlmalloc) LTDL_PARAMS((size_t size)) = (lt_ptr_t(*)LTDL_PARAMS((size_t)))malloc;
|
||||
void (*lt_dlfree) LTDL_PARAMS((lt_ptr_t ptr)) = (void(*)LTDL_PARAMS((lt_ptr_t)))free;
|
||||
|
||||
typedef struct lt_dltype_t {
|
||||
struct lt_dltype_t *next;
|
||||
const char *sym_prefix; /* prefix for symbols */
|
||||
int (*mod_init) __P((void));
|
||||
int (*mod_exit) __P((void));
|
||||
int (*lib_open) __P((lt_dlhandle handle, const char *filename));
|
||||
int (*lib_close) __P((lt_dlhandle handle));
|
||||
lt_ptr_t (*find_sym) __P((lt_dlhandle handle, const char *symbol));
|
||||
int (*mod_init) LTDL_PARAMS((void));
|
||||
int (*mod_exit) LTDL_PARAMS((void));
|
||||
int (*lib_open) LTDL_PARAMS((lt_dlhandle handle, const char *filename));
|
||||
int (*lib_close) LTDL_PARAMS((lt_dlhandle handle));
|
||||
lt_ptr_t (*find_sym) LTDL_PARAMS((lt_dlhandle handle, const char *symbol));
|
||||
} lt_dltype_t;
|
||||
|
||||
#define LTDL_TYPE_TOP 0
|
||||
|
@ -156,7 +165,7 @@ strchr(str, ch)
|
|||
{
|
||||
const char *p;
|
||||
|
||||
for (p = str; *p != (char)ch && p != '\0'; p++)
|
||||
for (p = str; *p != (char)ch && *p != '\0'; p++)
|
||||
/*NOWORK*/;
|
||||
|
||||
return (*p == (char)ch) ? p : 0;
|
||||
|
@ -183,7 +192,7 @@ strrchr(str, ch)
|
|||
{
|
||||
const char *p;
|
||||
|
||||
for (p = str; p != '\0'; p++)
|
||||
for (p = str; *p != '\0'; p++)
|
||||
/*NOWORK*/;
|
||||
|
||||
while (*p != (char)ch && p >= str)
|
||||
|
@ -204,10 +213,6 @@ strrchr(str, ch)
|
|||
# include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#if ! HAVE_DLERROR /* not all platforms have dlerror() */
|
||||
#define dlerror() unknown_error
|
||||
#endif
|
||||
|
||||
#ifdef RTLD_GLOBAL
|
||||
# define LTDL_GLOBAL RTLD_GLOBAL
|
||||
#else
|
||||
|
@ -241,65 +246,77 @@ strrchr(str, ch)
|
|||
#endif
|
||||
|
||||
static int
|
||||
dl_init ()
|
||||
sys_dl_init LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dl_exit ()
|
||||
sys_dl_exit LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dl_open (handle, filename)
|
||||
sys_dl_open (handle, filename)
|
||||
lt_dlhandle handle;
|
||||
const char *filename;
|
||||
{
|
||||
handle->handle = dlopen(filename, LTDL_GLOBAL | LTDL_LAZY_OR_NOW);
|
||||
if (!handle->handle) {
|
||||
#if HAVE_DLERROR
|
||||
last_error = dlerror();
|
||||
#else
|
||||
last_error = cannot_open_error;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dl_close (handle)
|
||||
sys_dl_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
if (dlclose(handle->handle) != 0) {
|
||||
#if HAVE_DLERROR
|
||||
last_error = dlerror();
|
||||
#else
|
||||
last_error = cannot_close_error;
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static lt_ptr_t
|
||||
dl_sym (handle, symbol)
|
||||
sys_dl_sym (handle, symbol)
|
||||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr_t address = dlsym(handle->handle, symbol);
|
||||
|
||||
if (!address)
|
||||
#if HAVE_DLERROR
|
||||
last_error = dlerror();
|
||||
#else
|
||||
last_error = symbol_error;
|
||||
#endif
|
||||
return address;
|
||||
}
|
||||
|
||||
static
|
||||
lt_dltype_t
|
||||
#ifdef NEED_USCORE
|
||||
dl = { LTDL_TYPE_TOP, "_", dl_init, dl_exit,
|
||||
dl_open, dl_close, dl_sym };
|
||||
sys_dl = { LTDL_TYPE_TOP, "_", sys_dl_init, sys_dl_exit,
|
||||
sys_dl_open, sys_dl_close, sys_dl_sym };
|
||||
#else
|
||||
dl = { LTDL_TYPE_TOP, 0, dl_init, dl_exit,
|
||||
dl_open, dl_close, dl_sym };
|
||||
sys_dl = { LTDL_TYPE_TOP, 0, sys_dl_init, sys_dl_exit,
|
||||
sys_dl_open, sys_dl_close, sys_dl_sym };
|
||||
#endif
|
||||
|
||||
#undef LTDL_TYPE_TOP
|
||||
#define LTDL_TYPE_TOP &dl
|
||||
#define LTDL_TYPE_TOP &sys_dl
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -344,66 +361,66 @@ dl = { LTDL_TYPE_TOP, 0, dl_init, dl_exit,
|
|||
#define BIND_RESTRICTED 0
|
||||
#endif /* BIND_RESTRICTED */
|
||||
|
||||
#define LTDL_BIND_FLAGS (BIND_IMMEDIATE | BIND_NONFATAL | BIND_VERBOSE | DYNAMIC_PATH)
|
||||
#define LTDL_BIND_FLAGS (BIND_IMMEDIATE | BIND_NONFATAL | DYNAMIC_PATH)
|
||||
|
||||
static int
|
||||
shl_init ()
|
||||
sys_shl_init LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
shl_exit ()
|
||||
sys_shl_exit LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
shl_open (handle, filename)
|
||||
sys_shl_open (handle, filename)
|
||||
lt_dlhandle handle;
|
||||
const char *filename;
|
||||
{
|
||||
handle->handle = shl_load(filename, LTDL_BIND_FLAGS, 0L);
|
||||
if (!handle->handle) {
|
||||
last_error = unknown_error;
|
||||
last_error = cannot_open_error;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
shl_close (handle)
|
||||
sys_shl_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
if (shl_unload((shl_t) (handle->handle)) != 0) {
|
||||
last_error = unknown_error;
|
||||
last_error = cannot_close_error;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static lt_ptr_t
|
||||
shl_sym (handle, symbol)
|
||||
sys_shl_sym (handle, symbol)
|
||||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr_t address;
|
||||
|
||||
if (shl_findsym((shl_t) (handle->handle), symbol, TYPE_UNDEFINED,
|
||||
&address) != 0 || !(handle->handle) || !address) {
|
||||
last_error = unknown_error;
|
||||
return 0;
|
||||
}
|
||||
return address;
|
||||
if (handle->handle && shl_findsym((shl_t*) &(handle->handle),
|
||||
symbol, TYPE_UNDEFINED, &address) == 0)
|
||||
if (address)
|
||||
return address;
|
||||
last_error = symbol_error;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static
|
||||
lt_dltype_t
|
||||
shl = { LTDL_TYPE_TOP, 0, shl_init, shl_exit,
|
||||
shl_open, shl_close, shl_sym };
|
||||
sys_shl = { LTDL_TYPE_TOP, 0, sys_shl_init, sys_shl_exit,
|
||||
sys_shl_open, sys_shl_close, sys_shl_sym };
|
||||
|
||||
#undef LTDL_TYPE_TOP
|
||||
#define LTDL_TYPE_TOP &shl
|
||||
#define LTDL_TYPE_TOP &sys_shl
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -416,19 +433,19 @@ shl = { LTDL_TYPE_TOP, 0, shl_init, shl_exit,
|
|||
#endif
|
||||
|
||||
static int
|
||||
dld_init ()
|
||||
sys_dld_init LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dld_exit ()
|
||||
sys_dld_exit LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dld_open (handle, filename)
|
||||
sys_dld_open (handle, filename)
|
||||
lt_dlhandle handle;
|
||||
const char *filename;
|
||||
{
|
||||
|
@ -438,7 +455,7 @@ dld_open (handle, filename)
|
|||
return 1;
|
||||
}
|
||||
if (dld_link(filename) != 0) {
|
||||
last_error = unknown_error;
|
||||
last_error = cannot_open_error;
|
||||
lt_dlfree(handle->handle);
|
||||
return 1;
|
||||
}
|
||||
|
@ -446,11 +463,11 @@ dld_open (handle, filename)
|
|||
}
|
||||
|
||||
static int
|
||||
dld_close (handle)
|
||||
sys_dld_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
if (dld_unlink_by_file((char*)(handle->handle), 1) != 0) {
|
||||
last_error = unknown_error;
|
||||
last_error = cannot_close_error;
|
||||
return 1;
|
||||
}
|
||||
lt_dlfree(handle->filename);
|
||||
|
@ -458,24 +475,24 @@ dld_close (handle)
|
|||
}
|
||||
|
||||
static lt_ptr_t
|
||||
dld_sym (handle, symbol)
|
||||
sys_dld_sym (handle, symbol)
|
||||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr_t address = dld_get_func(symbol);
|
||||
|
||||
if (!address)
|
||||
last_error = unknown_error;
|
||||
last_error = symbol_error;
|
||||
return address;
|
||||
}
|
||||
|
||||
static
|
||||
lt_dltype_t
|
||||
dld = { LTDL_TYPE_TOP, 0, dld_init, dld_exit,
|
||||
dld_open, dld_close, dld_sym };
|
||||
sys_dld = { LTDL_TYPE_TOP, 0, sys_dld_init, sys_dld_exit,
|
||||
sys_dld_open, sys_dld_close, sys_dld_sym };
|
||||
|
||||
#undef LTDL_TYPE_TOP
|
||||
#define LTDL_TYPE_TOP &dld
|
||||
#define LTDL_TYPE_TOP &sys_dld
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -486,60 +503,178 @@ dld = { LTDL_TYPE_TOP, 0, dld_init, dld_exit,
|
|||
#include <windows.h>
|
||||
|
||||
static int
|
||||
wll_init ()
|
||||
sys_wll_init LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
wll_exit ()
|
||||
sys_wll_exit LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Forward declaration; required to implement handle search below. */
|
||||
static lt_dlhandle handles;
|
||||
|
||||
static int
|
||||
wll_open (handle, filename)
|
||||
sys_wll_open (handle, filename)
|
||||
lt_dlhandle handle;
|
||||
const char *filename;
|
||||
{
|
||||
handle->handle = LoadLibrary(filename);
|
||||
if (!handle->handle) {
|
||||
last_error = unknown_error;
|
||||
lt_dlhandle cur;
|
||||
char *searchname = NULL;
|
||||
char *ext = strrchr(filename, '.');
|
||||
|
||||
if (ext) {
|
||||
/* FILENAME already has an extension. */
|
||||
searchname = strdup(filename);
|
||||
} else {
|
||||
/* Append a `.' to stop Windows from adding an
|
||||
implicit `.dll' extension. */
|
||||
searchname = (char*)lt_dlmalloc(2+ strlen(filename));
|
||||
strcpy(searchname, filename);
|
||||
strcat(searchname, ".");
|
||||
}
|
||||
|
||||
handle->handle = LoadLibrary(searchname);
|
||||
lt_dlfree(searchname);
|
||||
|
||||
/* libltdl expects this function to fail if it is unable
|
||||
to physically load the library. Sadly, LoadLibrary
|
||||
will search the loaded libraries for a match and return
|
||||
one of them if the path search load fails.
|
||||
|
||||
We check whether LoadLibrary is returning a handle to
|
||||
an already loaded module, and simulate failure if we
|
||||
find one. */
|
||||
cur = handles;
|
||||
while (cur) {
|
||||
if (!cur->handle) {
|
||||
cur = 0;
|
||||
break;
|
||||
}
|
||||
if (cur->handle == handle->handle)
|
||||
break;
|
||||
cur = cur->next;
|
||||
}
|
||||
|
||||
if (cur || !handle->handle) {
|
||||
last_error = cannot_open_error;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
wll_close (handle)
|
||||
sys_wll_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
if (FreeLibrary(handle->handle) != 0) {
|
||||
last_error = unknown_error;
|
||||
if (FreeLibrary(handle->handle) == 0) {
|
||||
last_error = cannot_close_error;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static lt_ptr_t
|
||||
wll_sym (handle, symbol)
|
||||
sys_wll_sym (handle, symbol)
|
||||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr_t address = GetProcAddress(handle->handle, symbol);
|
||||
|
||||
if (!address)
|
||||
last_error = unknown_error;
|
||||
last_error = symbol_error;
|
||||
return address;
|
||||
}
|
||||
|
||||
static
|
||||
lt_dltype_t
|
||||
wll = { LTDL_TYPE_TOP, 0, wll_init, wll_exit,
|
||||
wll_open, wll_close, wll_sym };
|
||||
sys_wll = { LTDL_TYPE_TOP, 0, sys_wll_init, sys_wll_exit,
|
||||
sys_wll_open, sys_wll_close, sys_wll_sym };
|
||||
|
||||
#undef LTDL_TYPE_TOP
|
||||
#define LTDL_TYPE_TOP &wll
|
||||
#define LTDL_TYPE_TOP &sys_wll
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __BEOS__
|
||||
|
||||
/* dynamic linking for BeOS */
|
||||
|
||||
#include <kernel/image.h>
|
||||
|
||||
static int
|
||||
sys_bedl_init LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sys_bedl_exit LTDL_PARAMS((void))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sys_bedl_open (handle, filename)
|
||||
lt_dlhandle handle;
|
||||
const char *filename;
|
||||
{
|
||||
image_id image = 0;
|
||||
|
||||
if (filename) {
|
||||
image = load_add_on(filename);
|
||||
} else {
|
||||
image_info info;
|
||||
int32 cookie = 0;
|
||||
if (get_next_image_info(0, &cookie, &info) == B_OK)
|
||||
image = load_add_on(info.name);
|
||||
}
|
||||
if (image <= 0) {
|
||||
last_error = cannot_open_error;
|
||||
return 1;
|
||||
}
|
||||
handle->handle = (void*) image;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
sys_bedl_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
if (unload_add_on((image_id)handle->handle) != B_OK) {
|
||||
last_error = cannot_close_error;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static lt_ptr_t
|
||||
sys_bedl_sym (handle, symbol)
|
||||
lt_dlhandle handle;
|
||||
const char *symbol;
|
||||
{
|
||||
lt_ptr_t address = 0;
|
||||
image_id image = (image_id)handle->handle;
|
||||
|
||||
if (get_image_symbol(image, symbol, B_SYMBOL_TYPE_ANY,
|
||||
&address) != B_OK) {
|
||||
last_error = symbol_error;
|
||||
return 0;
|
||||
}
|
||||
return address;
|
||||
}
|
||||
|
||||
static
|
||||
lt_dltype_t
|
||||
sys_bedl = { LTDL_TYPE_TOP, 0, sys_bedl_init, sys_bedl_exit,
|
||||
sys_bedl_open, sys_bedl_close, sys_bedl_sym };
|
||||
|
||||
#undef LTDL_TYPE_TOP
|
||||
#define LTDL_TYPE_TOP &sys_bedl
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -554,7 +689,7 @@ static const lt_dlsymlist *default_preloaded_symbols = 0;
|
|||
static lt_dlsymlists_t *preloaded_symbols = 0;
|
||||
|
||||
static int
|
||||
presym_init ()
|
||||
presym_init LTDL_PARAMS((void))
|
||||
{
|
||||
preloaded_symbols = 0;
|
||||
if (default_preloaded_symbols)
|
||||
|
@ -563,7 +698,7 @@ presym_init ()
|
|||
}
|
||||
|
||||
static int
|
||||
presym_free_symlists ()
|
||||
presym_free_symlists LTDL_PARAMS((void))
|
||||
{
|
||||
lt_dlsymlists_t *lists = preloaded_symbols;
|
||||
|
||||
|
@ -578,7 +713,7 @@ presym_free_symlists ()
|
|||
}
|
||||
|
||||
static int
|
||||
presym_exit ()
|
||||
presym_exit LTDL_PARAMS((void))
|
||||
{
|
||||
presym_free_symlists();
|
||||
return 0;
|
||||
|
@ -650,6 +785,8 @@ static int
|
|||
presym_close (handle)
|
||||
lt_dlhandle handle;
|
||||
{
|
||||
/* Just to silence gcc -Wall */
|
||||
handle = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -686,7 +823,7 @@ static lt_dltype_t *types = LTDL_TYPE_TOP;
|
|||
#undef LTDL_TYPE_TOP
|
||||
|
||||
int
|
||||
lt_dlinit ()
|
||||
lt_dlinit LTDL_PARAMS((void))
|
||||
{
|
||||
/* initialize libltdl */
|
||||
lt_dltype_t **type = &types;
|
||||
|
@ -737,7 +874,7 @@ lt_dlpreload_default (preloaded)
|
|||
}
|
||||
|
||||
int
|
||||
lt_dlexit ()
|
||||
lt_dlexit LTDL_PARAMS((void))
|
||||
{
|
||||
/* shut down libltdl */
|
||||
lt_dltype_t *type = types;
|
||||
|
@ -975,6 +1112,8 @@ load_deplibs(handle, deplibs)
|
|||
/* FIXME: load deplibs */
|
||||
handle->depcount = 0;
|
||||
handle->deplibs = 0;
|
||||
/* Just to silence gcc -Wall */
|
||||
deplibs = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -983,6 +1122,8 @@ unload_deplibs(handle)
|
|||
lt_dlhandle handle;
|
||||
{
|
||||
/* FIXME: unload deplibs */
|
||||
/* Just to silence gcc -Wall */
|
||||
handle = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -994,7 +1135,7 @@ trim (dest, str)
|
|||
/* remove the leading and trailing "'" from str
|
||||
and store the result in dest */
|
||||
char *tmp;
|
||||
char *end = strrchr(str, '\'');
|
||||
const char *end = strrchr(str, '\'');
|
||||
int len = strlen(str);
|
||||
|
||||
if (*dest)
|
||||
|
@ -1099,7 +1240,7 @@ lt_dlopen (filename)
|
|||
}
|
||||
/* canonicalize the module name */
|
||||
for (i = 0; i < ext - basename; i++)
|
||||
if (isalnum(basename[i]))
|
||||
if (isalnum((int)(basename[i])))
|
||||
name[i] = basename[i];
|
||||
else
|
||||
name[i] = '_';
|
||||
|
@ -1417,7 +1558,7 @@ lt_dlsym (handle, symbol)
|
|||
}
|
||||
|
||||
const char *
|
||||
lt_dlerror ()
|
||||
lt_dlerror LTDL_PARAMS((void))
|
||||
{
|
||||
const char *error = last_error;
|
||||
|
||||
|
@ -1440,11 +1581,12 @@ lt_dladdsearchdir (search_dir)
|
|||
} else {
|
||||
char *new_search_path = (char*)
|
||||
lt_dlmalloc(strlen(user_search_path) +
|
||||
strlen(search_dir) + 1);
|
||||
strlen(search_dir) + 2); /* ':' + '\0' == 2 */
|
||||
if (!new_search_path) {
|
||||
last_error = memory_error;
|
||||
return 1;
|
||||
}
|
||||
strcpy(new_search_path, user_search_path);
|
||||
strcat(new_search_path, ":");
|
||||
strcat(new_search_path, search_dir);
|
||||
lt_dlfree(user_search_path);
|
||||
|
@ -1469,7 +1611,7 @@ lt_dlsetsearchpath (search_path)
|
|||
}
|
||||
|
||||
const char *
|
||||
lt_dlgetsearchpath ()
|
||||
lt_dlgetsearchpath LTDL_PARAMS((void))
|
||||
{
|
||||
return user_search_path;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* ltdl.h -- generic dlopen functions
|
||||
Copyright (C) 1998-1999 Free Software Foundation, Inc.
|
||||
Originally by Thomas Tanner <tanner@gmx.de>
|
||||
Originally by Thomas Tanner <tanner@ffii.org>
|
||||
This file is part of GNU Libtool.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
|
@ -8,6 +8,11 @@ modify it under the terms of the GNU Library General Public
|
|||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later version.
|
||||
|
||||
As a special exception to the GNU Library General Public License,
|
||||
if you distribute this file as part of a program that uses GNU libtool
|
||||
to create libraries and programs, you may include it under the same
|
||||
distribution terms that you use for the rest of that program.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
|
@ -35,16 +40,16 @@ Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|||
# define __END_DECLS /* empty */
|
||||
#endif
|
||||
|
||||
/* __P is a macro used to wrap function prototypes, so that compilers
|
||||
/* LTDL_PARAMS is a macro used to wrap function prototypes, so that compilers
|
||||
that don't understand ANSI C prototypes still work, and ANSI C
|
||||
compilers can issue warnings about type mismatches. */
|
||||
#undef __P
|
||||
#undef LTDL_PARAMS
|
||||
#undef lt_ptr_t
|
||||
#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(WIN32) || defined(__cplusplus)
|
||||
# define __P(protos) protos
|
||||
# define LTDL_PARAMS(protos) protos
|
||||
# define lt_ptr_t void*
|
||||
#else
|
||||
# define __P(protos) ()
|
||||
# define LTDL_PARAMS(protos) ()
|
||||
# define lt_ptr_t char*
|
||||
#endif
|
||||
|
||||
|
@ -62,24 +67,24 @@ typedef struct {
|
|||
} lt_dlsymlist;
|
||||
|
||||
__BEGIN_DECLS
|
||||
extern int lt_dlinit __P((void));
|
||||
extern int lt_dlpreload __P((const lt_dlsymlist *preloaded));
|
||||
extern int lt_dlpreload_default __P((const lt_dlsymlist *preloaded));
|
||||
extern int lt_dlexit __P((void));
|
||||
extern lt_dlhandle lt_dlopen __P((const char *filename));
|
||||
extern lt_dlhandle lt_dlopenext __P((const char *filename));
|
||||
extern int lt_dlclose __P((lt_dlhandle handle));
|
||||
extern lt_ptr_t lt_dlsym __P((lt_dlhandle handle, const char *name));
|
||||
extern const char *lt_dlerror __P((void));
|
||||
extern int lt_dladdsearchdir __P((const char *search_dir));
|
||||
extern int lt_dlsetsearchpath __P((const char *search_path));
|
||||
extern const char *lt_dlgetsearchpath __P((void));
|
||||
extern int lt_dlinit LTDL_PARAMS((void));
|
||||
extern int lt_dlpreload LTDL_PARAMS((const lt_dlsymlist *preloaded));
|
||||
extern int lt_dlpreload_default LTDL_PARAMS((const lt_dlsymlist *preloaded));
|
||||
extern int lt_dlexit LTDL_PARAMS((void));
|
||||
extern lt_dlhandle lt_dlopen LTDL_PARAMS((const char *filename));
|
||||
extern lt_dlhandle lt_dlopenext LTDL_PARAMS((const char *filename));
|
||||
extern int lt_dlclose LTDL_PARAMS((lt_dlhandle handle));
|
||||
extern lt_ptr_t lt_dlsym LTDL_PARAMS((lt_dlhandle handle, const char *name));
|
||||
extern const char *lt_dlerror LTDL_PARAMS((void));
|
||||
extern int lt_dladdsearchdir LTDL_PARAMS((const char *search_dir));
|
||||
extern int lt_dlsetsearchpath LTDL_PARAMS((const char *search_path));
|
||||
extern const char *lt_dlgetsearchpath LTDL_PARAMS((void));
|
||||
|
||||
extern const lt_dlsymlist lt_preloaded_symbols[];
|
||||
#define LTDL_SET_PRELOADED_SYMBOLS() lt_dlpreload_default(lt_preloaded_symbols)
|
||||
|
||||
extern lt_ptr_t (*lt_dlmalloc)__P((size_t size));
|
||||
extern void (*lt_dlfree)__P((lt_ptr_t ptr));
|
||||
extern lt_ptr_t (*lt_dlmalloc)LTDL_PARAMS((size_t size));
|
||||
extern void (*lt_dlfree)LTDL_PARAMS((lt_ptr_t ptr));
|
||||
|
||||
__END_DECLS
|
||||
|
||||
|
|
59
main.c
59
main.c
|
@ -36,7 +36,7 @@ progress(Imlib_Image *im, char percent,
|
|||
update_w, update_h,
|
||||
update_x, update_y,
|
||||
update_w, update_h,
|
||||
NULL);
|
||||
NULL, IMLIB_OP_COPY);
|
||||
}
|
||||
|
||||
#if 1
|
||||
|
@ -59,6 +59,7 @@ int main (int argc, char **argv)
|
|||
int loop = 0;
|
||||
int blend = 1;
|
||||
int interactive = 1;
|
||||
int blendtest = 0;
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
{
|
||||
|
@ -73,6 +74,11 @@ int main (int argc, char **argv)
|
|||
}
|
||||
else if (!strcmp(argv[i], "-blend"))
|
||||
blend = 1;
|
||||
else if (!strcmp(argv[i], "-blendtest"))
|
||||
{
|
||||
blendtest = 1;
|
||||
interactive = 0;
|
||||
}
|
||||
else if (!strcmp(argv[i], "-dither"))
|
||||
dith = 1;
|
||||
else if (!strcmp(argv[i], "-scale"))
|
||||
|
@ -110,11 +116,8 @@ int main (int argc, char **argv)
|
|||
printf("load fialed\n");
|
||||
exit(0);
|
||||
}
|
||||
if (w < 0)
|
||||
{
|
||||
w = imlib_image_get_width(im);
|
||||
h = imlib_image_get_height(im);
|
||||
}
|
||||
w = imlib_image_get_width(im);
|
||||
h = imlib_image_get_height(im);
|
||||
}
|
||||
if (!root)
|
||||
{
|
||||
|
@ -144,10 +147,27 @@ int main (int argc, char **argv)
|
|||
aa, dith, blend,
|
||||
0, 0,
|
||||
w - i, (((w - i) * h) / w),
|
||||
NULL);
|
||||
NULL, IMLIB_OP_COPY);
|
||||
pixels += (w - i) * (((w - i) * h) / w);
|
||||
}
|
||||
}
|
||||
else if (blendtest)
|
||||
{
|
||||
Imlib_Image im2;
|
||||
|
||||
im2 = imlib_create_image(w, h);
|
||||
w = imlib_image_get_width(im);
|
||||
h = imlib_image_get_height(im);
|
||||
printf("%i %i\n", w, h);
|
||||
for (i = 0; i < 1024; i++)
|
||||
{
|
||||
imlib_blend_image_onto_image(im, im2,
|
||||
0, 0, 0,
|
||||
0, 0, w, h,
|
||||
0, 0, w, h, NULL, IMLIB_OP_COPY);
|
||||
pixels += (w * h);
|
||||
}
|
||||
}
|
||||
else if (interactive)
|
||||
{
|
||||
Imlib_Image im_bg, im_sh1, im_sh2, im_sh3, im_ic[13];
|
||||
|
@ -187,14 +207,15 @@ int main (int argc, char **argv)
|
|||
imlib_blend_image_onto_image(im_bg, im,
|
||||
0, 0, 0,
|
||||
0, 0, w, h,
|
||||
0, 0, w, h);
|
||||
for (j = 0; j < 10; j++)
|
||||
0, 0, w, h,
|
||||
NULL, IMLIB_OP_COPY);
|
||||
for (j = 0; j < 32; j++)
|
||||
{
|
||||
for (i = 0; i < 10; i++)
|
||||
for (i = 0; i < 32; i++)
|
||||
{
|
||||
int ic, iw, ih, ww, hh;
|
||||
|
||||
ic = ((j * 10) + i) % 13;
|
||||
ic = ((j * 32) + i) % 13;
|
||||
iw = imlib_image_get_width(im_ic[ic]);
|
||||
ih = imlib_image_get_height(im_ic[ic]);
|
||||
ww = iw;
|
||||
|
@ -202,24 +223,26 @@ int main (int argc, char **argv)
|
|||
imlib_blend_image_onto_image(im_ic[ic], im,
|
||||
aa, blend, 0,
|
||||
0, 0, iw, ih,
|
||||
x + (i * ww), y + (j * hh),
|
||||
ww, hh);
|
||||
x + (i * iw), y + (j * ih),
|
||||
ww, hh,
|
||||
NULL, IMLIB_OP_COPY);
|
||||
}
|
||||
}
|
||||
imlib_blend_image_onto_image(im_sh1, im,
|
||||
aa, blend, 0,
|
||||
0, 0, 50, 50,
|
||||
0, 0, 50, 50);
|
||||
0, 0, 50, 50, NULL, IMLIB_OP_COPY);
|
||||
imlib_blend_image_onto_image(im_sh2, im,
|
||||
aa, blend, 0,
|
||||
0, 0, 50, 50,
|
||||
50, 0, w - 50, 50);
|
||||
50, 0, w - 50, 50, NULL, IMLIB_OP_COPY);
|
||||
imlib_blend_image_onto_image(im_sh3, im,
|
||||
aa, blend, 0,
|
||||
0, 0, 50, 50,
|
||||
0, 50, 50, h - 50);
|
||||
0, 50, 50, h - 50, NULL, IMLIB_OP_COPY);
|
||||
imlib_render_image_on_drawable(im, disp, win, vis,
|
||||
cm, depth, dith, 1, 0, 0, NULL);
|
||||
cm, depth, dith, 1, 0, 0, NULL,
|
||||
IMLIB_OP_COPY);
|
||||
imlib_free_image(im_sh1);
|
||||
imlib_free_image(im_sh2);
|
||||
imlib_free_image(im_sh3);
|
||||
|
@ -239,7 +262,7 @@ int main (int argc, char **argv)
|
|||
aa, dith, blend,
|
||||
0, 0,
|
||||
w, h,
|
||||
NULL);
|
||||
NULL, IMLIB_OP_COPY);
|
||||
pixels += w * h;
|
||||
}
|
||||
}
|
||||
|
|
4
rend.c
4
rend.c
|
@ -5,11 +5,11 @@
|
|||
#include "image.h"
|
||||
#include "ximage.h"
|
||||
#include "context.h"
|
||||
#include "rend.h"
|
||||
#include "rgba.h"
|
||||
#include "color.h"
|
||||
#include "grab.h"
|
||||
#include "blend.h"
|
||||
#include "rend.h"
|
||||
|
||||
/* size of the lines per segment we scale / render at a time */
|
||||
#define LINESIZE 16
|
||||
|
@ -28,7 +28,7 @@ __imlib_RenderImage(Display *d, ImlibImage *im,
|
|||
int sx, int sy, int sw, int sh,
|
||||
int dx, int dy, int dw, int dh,
|
||||
char anitalias, char hiq, char blend, char dither_mask,
|
||||
ImlibColorModifier *cmod)
|
||||
ImlibColorModifier *cmod, ImlibOp op)
|
||||
{
|
||||
XImage *xim, *mxim;
|
||||
Context *ct;
|
||||
|
|
Loading…
Reference in New Issue