diff --git a/configure.in b/configure.in index a34990a..d01bf62 100644 --- a/configure.in +++ b/configure.in @@ -12,19 +12,11 @@ AC_C_BIGENDIAN AC_PROG_CC AM_PROG_AS -case $host_os in -solaris*) - ;; -*) - AC_MSG_CHECKING([if gcc supports __attribute__((visibility("hidden")))]) - AC_COMPILE_IFELSE([ - void __attribute__((visibility("hidden"))) func (void) {} - ], - [AC_MSG_RESULT(yes) - AC_DEFINE(USE_HIDDEN_FUNCTION_ATTRIBUTE,1, - [Define this to 1 if `hidden' attribute for internal functions is used.])], - [AC_MSG_RESULT(no)]) -esac +dnl Set default visibility to hidden? +AC_ARG_ENABLE(visibility-hiding, + [ --enable-visibility-hiding enable visibility hiding @<:@default=no@:>@],, + enable_visibility_hiding=no +) AM_PROG_CC_STDC AC_HEADER_STDC @@ -589,6 +581,10 @@ fi AM_CONDITIONAL(BUILD_ID3_LOADER, test "$id3_ok" = yes) AC_SUBST(ID3LIBS) +if test "x$enable_visibility_hiding" = xyes ; then + CPPFLAGS="$CPPFLAGS -fvisibility=hidden" +fi + AC_OUTPUT([ Makefile imlib2.pc @@ -636,6 +632,8 @@ echo echo "Use X86 MMX for speed.....: $mmx" echo "Use AMD64 for speed.......: $amd64" echo +echo "Use visibility hiding.....: $enable_visibility_hiding" +echo echo echo "Installation Path.........: $prefix" echo diff --git a/src/lib/asm.h b/src/lib/asm.h index 66ba981..3e24cbd 100644 --- a/src/lib/asm.h +++ b/src/lib/asm.h @@ -9,7 +9,7 @@ # define PR_(sym) __##sym #endif -#ifdef USE_HIDDEN_FUNCTION_ATTRIBUTE +#if defined(__GNUC__) && (__GNUC__ >= 4) # define HIDDEN_(sym) .hidden PR_(sym) #else # define HIDDEN_(sym) diff --git a/src/lib/common.h b/src/lib/common.h index d95de02..08d7e26 100644 --- a/src/lib/common.h +++ b/src/lib/common.h @@ -15,7 +15,7 @@ #include #endif -#ifdef USE_HIDDEN_FUNCTION_ATTRIBUTE +#if defined(__GNUC__) && (__GNUC__ >= 4) #define __hidden __attribute__((visibility("hidden"))) #else #define __hidden diff --git a/src/lib/image.h b/src/lib/image.h index 5ed821f..49b93a4 100644 --- a/src/lib/image.h +++ b/src/lib/image.h @@ -112,9 +112,10 @@ struct _imlibloader ImlibLoader *next; }; -void __imlib_AttachTag(ImlibImage *im, const char *key, int val, void *data, - ImlibDataDestructorFunction destructor); -ImlibImageTag *__imlib_GetTag(ImlibImage *im, const char *key); +EAPI void __imlib_AttachTag(ImlibImage *im, const char *key, + int val, void *data, + ImlibDataDestructorFunction destructor); +EAPI ImlibImageTag *__imlib_GetTag(ImlibImage *im, const char *key); __hidden ImlibImageTag *__imlib_RemoveTag(ImlibImage *im, const char *key); __hidden void __imlib_FreeTag(ImlibImage *im, ImlibImageTag *t); __hidden void __imlib_FreeAllTags(ImlibImage *im); @@ -150,7 +151,7 @@ __hidden void __imlib_ConsumeLoader(ImlibLoader *l); __hidden void __imlib_RescanLoaders(void); __hidden void __imlib_RemoveAllLoaders(void); __hidden void __imlib_LoadAllLoaders(void); -ImlibLoader *__imlib_FindBestLoaderForFile(const char *file, int for_save); +EAPI ImlibLoader *__imlib_FindBestLoaderForFile(const char *file, int for_save); __hidden ImlibLoader *__imlib_FindBestLoaderForFileFormat(const char *file, char *format, int for_save); __hidden void __imlib_SetImageAlphaFlag(ImlibImage *im, char alpha); __hidden ImlibImage *__imlib_CreateImage(int w, int h, DATA32 *data); diff --git a/src/modules/filters/Makefile.am b/src/modules/filters/Makefile.am index fc915f7..15c47be 100644 --- a/src/modules/filters/Makefile.am +++ b/src/modules/filters/Makefile.am @@ -10,6 +10,8 @@ INCLUDES = -I. \ pkgdir = $(libdir)/imlib2/filters pkg_LTLIBRARIES = testfilter.la bumpmap.la colormod.la +EXTRA_DIST = filter_common.h + testfilter_la_SOURCES = filter_test.c testfilter_la_LDFLAGS = -module -avoid-version testfilter_la_LIBADD = $(top_builddir)/src/lib/libImlib2.la diff --git a/src/modules/filters/filter_bumpmap.c b/src/modules/filters/filter_bumpmap.c index 13bd127..79451a9 100644 --- a/src/modules/filters/filter_bumpmap.c +++ b/src/modules/filters/filter_bumpmap.c @@ -1,14 +1,6 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" +#include "filter_common.h" #include - #include -#include "image.h" -#include "script.h" -#include "dynamic_filters.h" #include "colormod.h" #include "blend.h" diff --git a/src/modules/filters/filter_colormod.c b/src/modules/filters/filter_colormod.c index e64c5bd..3d90487 100644 --- a/src/modules/filters/filter_colormod.c +++ b/src/modules/filters/filter_colormod.c @@ -1,14 +1,6 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" +#include "filter_common.h" #include - #include -#include "image.h" -#include "script.h" -#include "dynamic_filters.h" #define GET_INT(x, ptr) (((ptr)->type == VAR_PTR) ? \ (x) = (*(int *)(ptr)->data) : \ diff --git a/src/modules/filters/filter_common.h b/src/modules/filters/filter_common.h new file mode 100644 index 0000000..a43d829 --- /dev/null +++ b/src/modules/filters/filter_common.h @@ -0,0 +1,13 @@ +#ifndef __FILTER_COMMON_H +#define __FILTER_COMMON_H 1 + +#include "config.h" +#include "common.h" +#include "dynamic_filters.h" +#include "image.h" + +EAPI void init(struct imlib_filter_info *info); +EAPI void deinit(void); +EAPI void *exec(char *filter, void *im, pIFunctionParam params); + +#endif /* __FILTER_COMMON_H */ diff --git a/src/modules/filters/filter_test.c b/src/modules/filters/filter_test.c index cc9f448..3e8b185 100644 --- a/src/modules/filters/filter_test.c +++ b/src/modules/filters/filter_test.c @@ -1,16 +1,5 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" +#include "filter_common.h" #include -#include "image.h" -#include "script.h" -#include "dynamic_filters.h" - -void init(struct imlib_filter_info *info); -void deinit(void); -void *exec(char *filter, void *im, pIFunctionParam params); void init(struct imlib_filter_info *info) diff --git a/src/modules/loaders/Makefile.am b/src/modules/loaders/Makefile.am index 674e5df..620db23 100644 --- a/src/modules/loaders/Makefile.am +++ b/src/modules/loaders/Makefile.am @@ -46,6 +46,8 @@ xpm.la \ tga.la \ lbm.la +EXTRA_DIST = loader_common.h + jpeg_la_SOURCES = loader_jpeg.c jpeg_la_LDFLAGS = -module -avoid-version jpeg_la_LIBADD = @JPEGLIBS@ $(top_builddir)/src/lib/libImlib2.la diff --git a/src/modules/loaders/loader_argb.c b/src/modules/loaders/loader_argb.c index 16ec62f..9fa1b63 100644 --- a/src/modules/loaders/loader_argb.c +++ b/src/modules/loaders/loader_argb.c @@ -1,17 +1,4 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include - -#include "image.h" - -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); +#include "loader_common.h" #define SWAP32(x) (x) = \ ((((x) & 0x000000ff ) << 24) |\ diff --git a/src/modules/loaders/loader_bmp.c b/src/modules/loaders/loader_bmp.c index 69aa168..986a4a0 100644 --- a/src/modules/loaders/loader_bmp.c +++ b/src/modules/loaders/loader_bmp.c @@ -8,22 +8,8 @@ * - Simplify and make secure RLE encoding * - Fix 16 and 32 bit depth (old code was incorrect and it's commented) */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" +#include "loader_common.h" #include -#include - -#include "image.h" - -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); typedef struct tagRGBQUAD { unsigned char rgbBlue; diff --git a/src/modules/loaders/loader_bz2.c b/src/modules/loaders/loader_bz2.c index 5596422..7ac225f 100644 --- a/src/modules/loaders/loader_bz2.c +++ b/src/modules/loaders/loader_bz2.c @@ -1,19 +1,10 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include +#include "loader_common.h" #include -#include -#include #include #include #include #include -#include "common.h" -#include "image.h" - #define OUTBUF_SIZE 16384 #define INBUF_SIZE 1024 diff --git a/src/modules/loaders/loader_common.h b/src/modules/loaders/loader_common.h new file mode 100644 index 0000000..1d8a1a0 --- /dev/null +++ b/src/modules/loaders/loader_common.h @@ -0,0 +1,14 @@ +#ifndef __LOADER_COMMON_H +#define __LOADER_COMMON_H 1 + +#include "config.h" +#include "common.h" +#include "image.h" + +EAPI char load(ImlibImage * im, ImlibProgressFunction progress, + char progress_granularity, char immediate_load); +EAPI char save(ImlibImage * im, ImlibProgressFunction progress, + char progress_granularity); +EAPI void formats(ImlibLoader * l); + +#endif /* __LOADER_COMMON_H */ diff --git a/src/modules/loaders/loader_gif.c b/src/modules/loaders/loader_gif.c index 0041a1c..b462aec 100644 --- a/src/modules/loaders/loader_gif.c +++ b/src/modules/loaders/loader_gif.c @@ -1,23 +1,9 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include +#include "loader_common.h" #include #include #include -#include - -#include "image.h" #include -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); - char load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, char immediate_load) diff --git a/src/modules/loaders/loader_id3.c b/src/modules/loaders/loader_id3.c index ec7d6ed..ef4362a 100644 --- a/src/modules/loaders/loader_id3.c +++ b/src/modules/loaders/loader_id3.c @@ -1,19 +1,10 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include -#include -#include +#include "loader_common.h" #include #include #include #include #include #include - -#include "image.h" - #include #if ! defined (__STDC_VERSION__) || __STDC_VERSION__ < 199901L diff --git a/src/modules/loaders/loader_jpeg.c b/src/modules/loaders/loader_jpeg.c index dab91b4..7235a71 100644 --- a/src/modules/loaders/loader_jpeg.c +++ b/src/modules/loaders/loader_jpeg.c @@ -1,11 +1,4 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include - -#include "image.h" +#include "loader_common.h" #include #include @@ -15,16 +8,7 @@ struct ImLib_JPEG_error_mgr { }; typedef struct ImLib_JPEG_error_mgr *emptr; -void _JPEGFatalErrorHandler(j_common_ptr cinfo); -void _JPEGErrorHandler(j_common_ptr cinfo); -void _JPEGErrorHandler2(j_common_ptr cinfo, int msg_level); -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); - -void +static void _JPEGFatalErrorHandler(j_common_ptr cinfo) { emptr errmgr; @@ -35,7 +19,7 @@ _JPEGFatalErrorHandler(j_common_ptr cinfo) return; } -void +static void _JPEGErrorHandler(j_common_ptr cinfo) { emptr errmgr; @@ -46,7 +30,7 @@ _JPEGErrorHandler(j_common_ptr cinfo) return; } -void +static void _JPEGErrorHandler2(j_common_ptr cinfo, int msg_level) { emptr errmgr; diff --git a/src/modules/loaders/loader_lbm.c b/src/modules/loaders/loader_lbm.c index 656d91b..e02fefe 100644 --- a/src/modules/loaders/loader_lbm.c +++ b/src/modules/loaders/loader_lbm.c @@ -11,19 +11,7 @@ * Version: 2004-08-28 *------------------------------------------------------------------------------*/ -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "common.h" -#include "image.h" - -char load(ImlibImage *im, ImlibProgressFunction progress, char progress_granularity, char immediate_load); -#if 0 -char save(ImlibImage *im, ImlibProgressFunction progress, char progress_granularity); -#endif -void formats(ImlibLoader *l); - +#include "loader_common.h" #define L2RLONG(a) ((((long)((a)[0]) & 0xff) << 24) + (((long)((a)[1]) & 0xff) << 16) + (((long)((a)[2]) & 0xff) << 8) + ((long)((a)[3]) & 0xff)) #define L2RWORD(a) ((((long)((a)[0]) & 0xff) << 8) + ((long)((a)[1]) & 0xff)) @@ -53,13 +41,6 @@ typedef struct ILBM { int rle; } ILBM; -static void freeilbm(ILBM *); -static int loadchunks(char *, ILBM *, int); -static void bodyrow(unsigned char *, int, ILBM *); -static unsigned char scalegun(unsigned char, int); -static void scalecmap(ILBM *); -static void deplane(DATA32 *, int, ILBM *, unsigned char **); - /*------------------------------------------------------------------------------ * Frees memory allocated as part of an ILBM structure. diff --git a/src/modules/loaders/loader_png.c b/src/modules/loaders/loader_png.c index c1284ce..df57798 100644 --- a/src/modules/loaders/loader_png.c +++ b/src/modules/loaders/loader_png.c @@ -1,11 +1,4 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include - -#include "image.h" +#include "loader_common.h" #include /* this is a quick sample png loader module... nice and small isnt it? */ @@ -13,13 +6,6 @@ /* PNG stuff */ #define PNG_BYTES_TO_CHECK 4 -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); - -static void comment_free(ImlibImage * im, void *data); static void comment_free(ImlibImage * im, void *data) { diff --git a/src/modules/loaders/loader_pnm.c b/src/modules/loaders/loader_pnm.c index 1cd9d2d..8ea46fb 100644 --- a/src/modules/loaders/loader_pnm.c +++ b/src/modules/loaders/loader_pnm.c @@ -1,17 +1,5 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include +#include "loader_common.h" #include -#include "image.h" - -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); char load(ImlibImage * im, ImlibProgressFunction progress, diff --git a/src/modules/loaders/loader_tga.c b/src/modules/loaders/loader_tga.c index 90b60d4..93b84aa 100644 --- a/src/modules/loaders/loader_tga.c +++ b/src/modules/loaders/loader_tga.c @@ -9,26 +9,12 @@ * * header/footer structures courtesy of the GIMP Targa plugin */ - -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include -#include +#include "loader_common.h" #include #include -#include "image.h" #include "colormod.h" #include "blend.h" -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); - /* flip an inverted image - see RLE reading below */ static void tgaflip(DATA32 * in, int w, int h); diff --git a/src/modules/loaders/loader_tiff.c b/src/modules/loaders/loader_tiff.c index 0eb5592..44bcc83 100644 --- a/src/modules/loaders/loader_tiff.c +++ b/src/modules/loaders/loader_tiff.c @@ -1,17 +1,9 @@ /* To do: */ /* o Need code to handle tiff with different orientations */ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include - +#include "loader_common.h" #include #include -#include -#include "image.h" #include /* This is a wrapper data structure for TIFFRGBAImage, so that data can be */ @@ -31,21 +23,8 @@ struct TIFFRGBAImage_Extra { typedef struct TIFFRGBAImage_Extra TIFFRGBAImage_Extra; -static void put_contig_and_raster(TIFFRGBAImage *, uint32 *, - uint32, uint32, uint32, uint32, int32, - int32, unsigned char *); -static void put_separate_and_raster(TIFFRGBAImage *, uint32 *, uint32, - uint32, uint32, uint32, int32, - int32, unsigned char *, - unsigned char *, unsigned char *, - unsigned char *); static void raster(TIFFRGBAImage_Extra * img, uint32 * raster, uint32 x, uint32 y, uint32 w, uint32 h); -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); static void put_contig_and_raster(TIFFRGBAImage * img, uint32 * rast, diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c index 2892a8c..f240a7c 100644 --- a/src/modules/loaders/loader_xpm.c +++ b/src/modules/loaders/loader_xpm.c @@ -1,21 +1,7 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "common.h" -#include +#include "loader_common.h" #include #include #include -#include - -#include "image.h" - -char load(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity, char immediate_load); -char save(ImlibImage * im, ImlibProgressFunction progress, - char progress_granularity); -void formats(ImlibLoader * l); static FILE *rgb_txt = NULL; diff --git a/src/modules/loaders/loader_zlib.c b/src/modules/loaders/loader_zlib.c index 30e4644..c313d1d 100644 --- a/src/modules/loaders/loader_zlib.c +++ b/src/modules/loaders/loader_zlib.c @@ -1,18 +1,10 @@ -#ifdef HAVE_CONFIG_H -# include -#endif - +#include "loader_common.h" #include -#include -#include #include #include #include #include -#include "common.h" -#include "image.h" - #define OUTBUF_SIZE 16484 static int uncompress_file (int src, int dest)