846 lines
28 KiB
Text
846 lines
28 KiB
Text
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
dnl Set various version strings - taken gratefully from the GTk sources
|
|
# See docs/release_checklist.md
|
|
m4_define([MAJOR_VERSION_MACRO], [2])
|
|
m4_define([MINOR_VERSION_MACRO], [7])
|
|
m4_define([MICRO_VERSION_MACRO], [0])
|
|
|
|
AC_INIT([SDL2_image],
|
|
[MAJOR_VERSION_MACRO.MINOR_VERSION_MACRO.MICRO_VERSION_MACRO],
|
|
[https://github.com/libsdl-org/SDL_image/issues],
|
|
[SDL2_image])
|
|
AC_CONFIG_MACRO_DIR([acinclude])
|
|
AC_CONFIG_SRCDIR([src/IMG.c])
|
|
|
|
AC_SUBST([MAJOR_VERSION], MAJOR_VERSION_MACRO)
|
|
AC_SUBST([MINOR_VERSION], MINOR_VERSION_MACRO)
|
|
AC_SUBST([MICRO_VERSION], MICRO_VERSION_MACRO)
|
|
|
|
BINARY_AGE=`expr $MINOR_VERSION \* 100 + $MICRO_VERSION`
|
|
AS_CASE(["$MINOR_VERSION"],
|
|
[*@<:@02468@:>@],
|
|
dnl Stable branch, 2.6.1 -> libSDL2-2.0.so.0.600.1
|
|
[INTERFACE_AGE="$MICRO_VERSION"],
|
|
[*],
|
|
dnl Development branch, 2.5.1 -> libSDL2-2.0.so.0.501.0
|
|
[INTERFACE_AGE=0])
|
|
|
|
dnl libtool versioning
|
|
LT_INIT([win32-dll])
|
|
|
|
# For historical reasons, the library name redundantly includes the major
|
|
# version twice: libSDL2_image-2.0.so.0.
|
|
# TODO: in SDL 3, stop using -release, which will simplify it to libSDL3.so.0
|
|
LT_RELEASE=2.0
|
|
# Increment this if there is an incompatible change - but if that happens,
|
|
# we should rename the library from SDL2 to SDL3, at which point this would
|
|
# reset to 0 anyway.
|
|
LT_MAJOR=0
|
|
LT_AGE=`expr $BINARY_AGE - $INTERFACE_AGE`
|
|
LT_CURRENT=`expr $LT_MAJOR + $LT_AGE`
|
|
LT_REVISION=$INTERFACE_AGE
|
|
LT_EXTRA=""
|
|
m4_pattern_allow([LT_MAJOR])
|
|
|
|
AC_SUBST(LT_RELEASE)
|
|
AC_SUBST(LT_CURRENT)
|
|
AC_SUBST(LT_REVISION)
|
|
AC_SUBST(LT_AGE)
|
|
AC_SUBST(LT_EXTRA)
|
|
|
|
dnl For use in static assertions
|
|
AC_DEFINE_UNQUOTED([SDL_BUILD_MAJOR_VERSION], $MAJOR_VERSION, [ ])
|
|
AC_DEFINE_UNQUOTED([SDL_BUILD_MINOR_VERSION], $MINOR_VERSION, [ ])
|
|
AC_DEFINE_UNQUOTED([SDL_BUILD_MICRO_VERSION], $MICRO_VERSION, [ ])
|
|
|
|
dnl Detect the canonical build and host environments
|
|
AC_CANONICAL_HOST
|
|
|
|
dnl Setup for automake
|
|
AM_INIT_AUTOMAKE([foreign subdir-objects tar-ustar])
|
|
|
|
dnl Check for tools
|
|
AC_PROG_AWK
|
|
AC_PROG_CC
|
|
AC_PROG_OBJC
|
|
AC_CHECK_TOOL(RC,[windres],[:])
|
|
AC_PROG_INSTALL
|
|
AC_PROG_FGREP
|
|
AC_PROG_MAKE_SET
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
if [ test -z "$AWK" ]; then
|
|
AC_MSG_ERROR([*** awk not found, aborting])
|
|
fi
|
|
|
|
AC_CHECK_PROGS([SORT], [gsort sort], [false])
|
|
AS_IF([! "$SORT" -V </dev/null >/dev/null], [AC_MSG_WARN([sort(1) that supports the -V option is required to find dynamic libraries])])
|
|
|
|
case "$host" in
|
|
*-*-beos*)
|
|
ac_default_prefix=/boot/develop/tools/gnupro
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
if test "$build" != "$host"; then # cross-compiling
|
|
# Default cross-compile location
|
|
ac_default_prefix=/usr/local/cross-tools/$host
|
|
else
|
|
# Look for the location of the tools and install there
|
|
if test "$BUILD_PREFIX" != ""; then
|
|
ac_default_prefix=$BUILD_PREFIX
|
|
elif test "$MINGW_PREFIX" != ""; then
|
|
ac_default_prefix=$MINGW_PREFIX
|
|
fi
|
|
fi
|
|
use_version_rc=true
|
|
LT_EXTRA="-Wl,src/version.o"
|
|
;;
|
|
*-*-darwin*)
|
|
AC_ARG_ENABLE([imageio], [AS_HELP_STRING([--enable-imageio], [use native Mac OS X frameworks for loading images [default=yes]])],
|
|
[], [enable_imageio=yes])
|
|
dnl Show a message when we use ImageIO support so it's not a surprise
|
|
AC_MSG_CHECKING([for ImageIO support])
|
|
AC_MSG_RESULT($enable_imageio)
|
|
if test x$enable_imageio = xyes; then
|
|
IMG_LIBS="-Wl,-framework,ApplicationServices -lobjc $IMG_LIBS"
|
|
else
|
|
CFLAGS="$CFLAGS -DSDL_IMAGE_USE_COMMON_BACKEND"
|
|
fi
|
|
;;
|
|
*-*-os2*)
|
|
# disable static builds on os/2
|
|
enable_static=no
|
|
# -DBUILD_SDL is needed for DECLSPEC
|
|
CFLAGS="$CFLAGS -DBUILD_SDL"
|
|
# OS/2 does not support a DLL name longer than 8 characters.
|
|
LT_EXTRA="-os2dllname SDL2img"
|
|
;;
|
|
esac
|
|
AM_CONDITIONAL(USE_IMAGEIO, test x$enable_imageio = xyes)
|
|
if test x$enable_imageio = xyes; then
|
|
AC_SUBST([USE_IMAGEIO], 1)
|
|
else
|
|
AC_SUBST([USE_IMAGEIO], 0)
|
|
fi
|
|
AM_CONDITIONAL(USE_VERSION_RC, test x$use_version_rc = xtrue)
|
|
|
|
dnl set this to use on systems that use lib64 instead of lib
|
|
base_bindir=`echo \${bindir} | sed 's/.*\/\(.*\)/\1/; q'`
|
|
base_libdir=`echo \${libdir} | sed 's/.*\/\(.*\)/\1/; q'`
|
|
|
|
dnl Function to find a library in the compiler search path
|
|
find_lib()
|
|
{
|
|
gcc_bin_path=[`$CC -print-search-dirs 2>/dev/null | $FGREP programs: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
|
|
gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | $FGREP libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
|
|
env_lib_path=[`echo $LIBS $LDFLAGS $* | sed 's/-L[ ]*//g'`]
|
|
if test "$cross_compiling" = yes; then
|
|
host_lib_path=""
|
|
else
|
|
host_lib_path="$ac_default_prefix/$base_libdir $ac_default_prefix/$base_bindir /usr/$base_libdir /usr/local/$base_libdir"
|
|
fi
|
|
for path in $env_lib_path $gcc_bin_path $gcc_lib_path $host_lib_path; do
|
|
lib=[`ls -- $path/$1 2>/dev/null | sed 's,.*/,,' | $SORT -V -r | $AWK 'BEGIN{FS="."}{ print NF, $0 }' | $SORT -n -s | sed 's,[0-9]* ,,' | head -1`]
|
|
if test x$lib != x; then
|
|
echo $lib
|
|
return
|
|
fi
|
|
done
|
|
}
|
|
|
|
CheckNoUndef()
|
|
{
|
|
AC_MSG_CHECKING(for linker option --no-undefined)
|
|
have_no_undefined=no
|
|
case "${host_os}" in
|
|
dnl Skip this on platforms where it is just simply busted.
|
|
openbsd*) ;;
|
|
darwin*) have_no_undefined="-Wl,-undefined,error"
|
|
LDFLAGS="$LDFLAGS -Wl,-undefined,error" ;;
|
|
*) save_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="$LDFLAGS -Wl,--no-undefined"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM],
|
|
[have_no_undefined=yes],[LDFLAGS="$save_LDFLAGS"])
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT($have_no_undefined)
|
|
}
|
|
|
|
dnl See if GCC's -Wall is supported.
|
|
CheckWarnAll()
|
|
{
|
|
AC_MSG_CHECKING(for GCC -Wall option)
|
|
have_gcc_Wall=no
|
|
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$save_CFLAGS -Wall"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int x = 0;])], [have_gcc_Wall=yes])
|
|
AC_MSG_RESULT($have_gcc_Wall)
|
|
CFLAGS="$save_CFLAGS"
|
|
|
|
if test x$have_gcc_Wall = xyes; then
|
|
CFLAGS="$CFLAGS -Wall"
|
|
|
|
dnl Haiku headers use multicharacter constants all over the place. Ignore these warnings when using -Wall.
|
|
AC_MSG_CHECKING(for necessary GCC -Wno-multichar option)
|
|
need_gcc_Wno_multichar=no
|
|
case "$host" in
|
|
*-*-haiku*)
|
|
need_gcc_Wno_multichar=yes
|
|
;;
|
|
esac
|
|
AC_MSG_RESULT($need_gcc_Wno_multichar)
|
|
if test x$need_gcc_Wno_multichar = xyes; then
|
|
CFLAGS="$CFLAGS -Wno-multichar"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
dnl See if GCC's -fvisibility=hidden is supported (gcc4 and later, usually).
|
|
CheckVisibilityHidden()
|
|
{
|
|
AC_MSG_CHECKING(for GCC -fvisibility=hidden option)
|
|
have_gcc_fvisibility=no
|
|
case "$host" in
|
|
*-*-cygwin* | *-*-mingw* | *-*-os2*)
|
|
AC_MSG_RESULT([ignored for $host_os])
|
|
return
|
|
;;
|
|
esac
|
|
|
|
visibility_CFLAGS="-fvisibility=hidden"
|
|
save_CFLAGS="$CFLAGS"
|
|
CFLAGS="$save_CFLAGS $visibility_CFLAGS -Werror"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#if !defined(__GNUC__) || __GNUC__ < 4
|
|
#error SDL only uses visibility attributes in GCC 4 or newer
|
|
#endif
|
|
]],[])], [have_gcc_fvisibility=yes],[])
|
|
AC_MSG_RESULT($have_gcc_fvisibility)
|
|
CFLAGS="$save_CFLAGS"
|
|
|
|
if test x$have_gcc_fvisibility = xyes; then
|
|
CFLAGS="$CFLAGS $visibility_CFLAGS"
|
|
fi
|
|
}
|
|
|
|
dnl Check command-line options
|
|
AC_ARG_ENABLE([stb_image], [AS_HELP_STRING([--enable-stb-image], [use stb_image for loading JPG and PNG images [default=yes]])],
|
|
[], [enable_stb_image=yes])
|
|
AC_ARG_ENABLE([avif], [AS_HELP_STRING([--enable-avif], [support loading AVIF images [default=yes]])],
|
|
[], [enable_avif=yes])
|
|
AC_ARG_ENABLE([avif-shared], [AS_HELP_STRING([--enable-avif-shared], [dynamically load AVIF support [default=yes]])],
|
|
[], [enable_avif_shared=yes])
|
|
AC_ARG_ENABLE([bmp], [AS_HELP_STRING([--enable-bmp], [support loading BMP/ICO/CUR images [default=yes]])],
|
|
[], [enable_bmp=yes])
|
|
AC_ARG_ENABLE([gif], [AS_HELP_STRING([--enable-gif], [support loading GIF images [default=yes]])],
|
|
[], [enable_gif=yes])
|
|
AC_ARG_ENABLE([jpg], [AS_HELP_STRING([--enable-jpg], [support loading JPG images [default=yes]])],
|
|
[], [enable_jpg=yes])
|
|
AC_ARG_ENABLE([jpg-shared], [AS_HELP_STRING([--enable-jpg-shared], [dynamically load JPG support [default=yes]])],
|
|
[], [enable_jpg_shared=yes])
|
|
AC_ARG_ENABLE([save-jpg], [AS_HELP_STRING([--enable-save-jpg], [support saving JPG images [default=yes]])],
|
|
[], [enable_save_jpg=yes])
|
|
AC_ARG_ENABLE([jxl], [AS_HELP_STRING([--enable-jxl], [support loading JXL images [default=yes]])],
|
|
[], [enable_jxl=yes])
|
|
AC_ARG_ENABLE([jxl-shared], [AS_HELP_STRING([--enable-jxl-shared], [dynamically load JXL support [default=yes]])],
|
|
[], [enable_jxl_shared=yes])
|
|
AC_ARG_ENABLE([lbm], [AS_HELP_STRING([--enable-lbm], [support loading LBM images [default=yes]])],
|
|
[], [enable_lbm=yes])
|
|
AC_ARG_ENABLE([pcx], [AS_HELP_STRING([--enable-pcx], [support loading PCX images [default=yes]])],
|
|
[], [enable_pcx=yes])
|
|
AC_ARG_ENABLE([png], [AS_HELP_STRING([--enable-png], [support loading PNG images [default=yes]])],
|
|
[], [enable_png=yes])
|
|
AC_ARG_ENABLE([png-shared], [AS_HELP_STRING([--enable-png-shared], [dynamically load PNG support [default=yes]])],
|
|
[], [enable_png_shared=yes])
|
|
AC_ARG_ENABLE([save-png], [AS_HELP_STRING([--enable-save-png], [support saving PNG images [default=yes]])],
|
|
[], [enable_save_png=yes])
|
|
AC_ARG_ENABLE([pnm], [AS_HELP_STRING([--enable-pnm], [support loading PNM images [default=yes]])],
|
|
[], [enable_pnm=yes])
|
|
AC_ARG_ENABLE([svg], [AS_HELP_STRING([--enable-svg], [support loading SVG images [default=yes]])],
|
|
[], [enable_svg=yes])
|
|
AC_ARG_ENABLE([tga], [AS_HELP_STRING([--enable-tga], [support loading TGA images [default=yes]])],
|
|
[], [enable_tga=yes])
|
|
AC_ARG_ENABLE([tif], [AS_HELP_STRING([--enable-tif], [support loading TIFF images [default=yes]])],
|
|
[], [enable_tif=yes])
|
|
AC_ARG_ENABLE([tif-shared], [AS_HELP_STRING([--enable-tif-shared], [dynamically load TIFF support [default=yes]])],
|
|
[], [enable_tif_shared=yes])
|
|
AC_ARG_ENABLE([xcf], [AS_HELP_STRING([--enable-xcf], [support loading XCF images [default=yes]])],
|
|
[], [enable_xcf=yes])
|
|
AC_ARG_ENABLE([xpm], [AS_HELP_STRING([--enable-xpm], [support loading XPM images [default=yes]])],
|
|
[], [enable_xpm=yes])
|
|
AC_ARG_ENABLE([xv], [AS_HELP_STRING([--enable-xv], [support loading XV images [default=yes]])],
|
|
[], [enable_xv=yes])
|
|
AC_ARG_ENABLE([webp], [AS_HELP_STRING([--enable-webp], [support loading WEBP images [default=yes]])],
|
|
[], [enable_webp=yes])
|
|
AC_ARG_ENABLE([webp-shared], [AS_HELP_STRING([--enable-webp-shared], [dynamically load WEBP support [default=yes]])],
|
|
[], [enable_webp_shared=yes])
|
|
AC_ARG_ENABLE([qoi], [AS_HELP_STRING([--enable-qoi], [support loading QOI images [default=yes]])],
|
|
[], [enable_qoi=yes])
|
|
AC_ARG_ENABLE([tests],
|
|
[AS_HELP_STRING([--enable-tests], [build tests [default=no]])],
|
|
[], [enable_tests=no])
|
|
AC_ARG_ENABLE([installed-tests],
|
|
[AS_HELP_STRING([--enable-installed-tests], [install tests [default=no]])],
|
|
[], [enable_installed_tests=no])
|
|
|
|
dnl Check for SDL
|
|
SDL_VERSION=2.0.9
|
|
AC_SUBST(SDL_VERSION)
|
|
AM_PATH_SDL2($SDL_VERSION,
|
|
:,
|
|
AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!])
|
|
)
|
|
CFLAGS="$CFLAGS $SDL_CFLAGS"
|
|
LIBS="$LIBS $SDL_LIBS"
|
|
|
|
if test x$enable_stb_image = xyes; then
|
|
AC_DEFINE([USE_STBIMAGE])
|
|
AC_SUBST([USE_STBIMAGE], 1)
|
|
else
|
|
AC_SUBST([USE_STBIMAGE], 0)
|
|
fi
|
|
|
|
AC_SUBST([USE_WIC], 0)
|
|
|
|
load_avif=0
|
|
if test x$enable_avif = xyes; then
|
|
PKG_CHECK_MODULES([LIBAVIF], [libavif >= 0.9.3], [dnl
|
|
have_avif_hdr=yes
|
|
have_avif_lib=yes
|
|
have_avif_pc=yes
|
|
], [dnl
|
|
save_LIBS="$LIBS"
|
|
LIBS="-lavif"
|
|
AC_LANG_PUSH([C])
|
|
AC_MSG_CHECKING([for libavif >= 0.9.3])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <avif/avif.h>
|
|
]], [[
|
|
#if (AVIF_VERSION < 90300)
|
|
#error libavif too old.
|
|
#endif
|
|
return !!avifVersion();
|
|
]])],[
|
|
have_avif_hdr=yes
|
|
have_avif_lib=yes
|
|
LIBAVIF_CFLAGS=""
|
|
LIBAVIF_LIBS="-lavif"
|
|
], [have_avif_lib=no])
|
|
LIBS="$save_LIBS"
|
|
AC_LANG_POP([C])
|
|
AC_MSG_RESULT([$have_avif_lib])
|
|
])
|
|
if test x$have_avif_hdr = xyes -a x$have_avif_lib = xyes; then
|
|
if test x$enable_avif = xyes; then
|
|
AC_DEFINE([LOAD_AVIF])
|
|
fi
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
avif_lib=[`find_lib "libavif.[0-9]*.dylib"`]
|
|
if test x$avif_lib = x; then
|
|
avif_lib=[`find_lib "libavif*.dylib"`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
avif_lib=[`find_lib "libavif-[0-9]*.dll"`]
|
|
if test x$avif_lib = x; then
|
|
avif_lib=[`find_lib "libavif*.dll"`]
|
|
fi
|
|
;;
|
|
*)
|
|
avif_lib=[`find_lib "libavif[0-9]*.so.*"`]
|
|
if test x$avif_lib = x; then
|
|
avif_lib=[`find_lib "libavif.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
load_avif=1
|
|
elif test x$enable_avif = xyes; then
|
|
AC_MSG_WARN([*** Unable to find AVIF library (https://github.com/AOMediaCodec/libavif)])
|
|
AC_MSG_WARN([AVIF image loading disabled])
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_AVIF], $load_avif)
|
|
|
|
load_jpg=0
|
|
if test x$enable_jpg = xyes; then
|
|
if test x$enable_stb_image = xyes; then
|
|
AC_DEFINE([LOAD_JPG])
|
|
load_jpg=1
|
|
elif test x$enable_imageio = xyes; then
|
|
AC_DEFINE([LOAD_JPG])
|
|
load_jpg=1
|
|
AC_DEFINE([JPG_USES_IMAGEIO])
|
|
else
|
|
PKG_CHECK_MODULES([LIBJPEG], [libjpeg], [dnl
|
|
have_jpg_hdr=yes
|
|
have_jpg_lib=yes
|
|
have_jpg_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([jpeglib.h], [
|
|
have_jpg_hdr=yes
|
|
LIBJPEG_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], [
|
|
have_jpg_lib=yes
|
|
LIBJPEG_LIBS="-ljpeg"
|
|
])
|
|
])
|
|
if test x$have_jpg_hdr = xyes -a x$have_jpg_lib = xyes; then
|
|
if test x$enable_jpg = xyes; then
|
|
AC_DEFINE([LOAD_JPG])
|
|
load_jpg=1
|
|
fi
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
jpg_lib=[`find_lib "libjpeg.[0-9]*.dylib"`]
|
|
if test x$jpg_lib = x; then
|
|
jpg_lib=[`find_lib libjpeg.dylib`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
jpg_lib=[`find_lib "libjpeg*.dll"`]
|
|
;;
|
|
*)
|
|
jpg_lib=[`find_lib "libjpeg[0-9]*.so.*"`]
|
|
if test x$jpg_lib = x; then
|
|
jpg_lib=[`find_lib "libjpeg.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
else
|
|
AC_MSG_WARN([*** Unable to find JPEG library (http://www.ijg.org/)])
|
|
AC_MSG_WARN([JPG image loading disabled])
|
|
fi
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_JPG], $load_jpg)
|
|
|
|
load_jxl=0
|
|
if test x$enable_jxl = xyes; then
|
|
PKG_CHECK_MODULES([LIBJXL], [libjxl], [dnl
|
|
have_jxl_hdr=yes
|
|
have_jxl_lib=yes
|
|
have_jxl_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([jxl/decode.h], [
|
|
have_jxl_hdr=yes
|
|
LIBJXL_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([jxl], [JxlSignatureCheck], [
|
|
have_jxl_lib=yes
|
|
LIBJXL_LIBS="-ljxl"
|
|
])
|
|
])
|
|
if test x$have_jxl_hdr = xyes -a x$have_jxl_lib = xyes; then
|
|
if test x$enable_jxl = xyes; then
|
|
AC_DEFINE([LOAD_JXL])
|
|
load_jxl=1
|
|
fi
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
jxl_lib=[`find_lib "libjxl.[0-9]*.dylib"`]
|
|
if test x$jxl_lib = x; then
|
|
jxl_lib=[`find_lib libjxl.dylib`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
jxl_lib=[`find_lib "libjxl-[0-9]*.dll"`]
|
|
if test x$jxl_lib = x; then
|
|
jxl_lib=[`find_lib "libjxl.dll"`]
|
|
fi
|
|
;;
|
|
*)
|
|
jxl_lib=[`find_lib "libjxl[0-9]*.so.*"`]
|
|
if test x$jxl_lib = x; then
|
|
jxl_lib=[`find_lib "libjxl.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
elif test x$enable_jxl = xyes; then
|
|
AC_MSG_WARN([*** Unable to find JXL library (https://jpegxl.info/)])
|
|
AC_MSG_WARN([JXL image loading disabled])
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_JXL], $load_jxl)
|
|
|
|
load_png=0
|
|
if test x$enable_png = xyes; then
|
|
if test x$enable_stb_image = xyes; then
|
|
AC_DEFINE([LOAD_PNG])
|
|
load_png=1
|
|
elif test x$enable_imageio = xyes; then
|
|
AC_DEFINE([LOAD_PNG])
|
|
AC_DEFINE([PNG_USES_IMAGEIO])
|
|
load_png=1
|
|
else
|
|
PKG_CHECK_MODULES([LIBPNG], [libpng], [dnl
|
|
have_png_hdr=yes
|
|
have_png_lib=yes
|
|
have_png_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([png.h], [
|
|
have_png_hdr=yes
|
|
LIBPNG_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([png], [png_create_read_struct], [
|
|
have_png_lib=yes
|
|
LIBPNG_LIBS="-lpng -lz"
|
|
], [], [-lz])
|
|
])
|
|
if test x$have_png_hdr = xyes -a x$have_png_lib = xyes; then
|
|
AC_DEFINE([LOAD_PNG])
|
|
load_png=1
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
png_lib=[`find_lib "libpng[0-9]*.dylib"`]
|
|
if test x$png_lib = x; then
|
|
png_lib=[`find_lib libpng.dylib`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
png_lib=[`find_lib "libpng*.dll"`]
|
|
;;
|
|
*)
|
|
png_lib=[`find_lib "libpng[0-9]*.so.*"`]
|
|
if test x$png_lib = x; then
|
|
png_lib=[`find_lib "libpng.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
else
|
|
AC_MSG_WARN([*** Unable to find PNG library (http://www.libpng.org/pub/png/)])
|
|
AC_MSG_WARN([PNG image loading disabled])
|
|
fi
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_PNG], $load_png)
|
|
|
|
load_tif=0
|
|
if test x$enable_tif = xyes -a x$enable_imageio != xyes; then
|
|
PKG_CHECK_MODULES([LIBTIFF], [libtiff-4], [dnl
|
|
have_tif_hdr=yes
|
|
have_tif_lib=yes
|
|
have_tif_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([tiffio.h], [
|
|
have_tif_hdr=yes
|
|
LIBTIFF_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([tiff], [TIFFClientOpen], [
|
|
have_tif_lib=yes
|
|
LIBTIFF_LIBS="-ltiff -lz"
|
|
], [], [-lz])
|
|
])
|
|
if test x$have_tif_hdr = xyes -a x$have_tif_lib = xyes; then
|
|
AC_DEFINE([LOAD_TIF])
|
|
load_tif=1
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
tif_lib=[`find_lib "libtiff.[0-9]*.dylib"`]
|
|
if test x$tif_lib = x; then
|
|
tif_lib=[`find_lib libtiff.dylib`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
tif_lib=[`find_lib "libtiff-*.dll"`]
|
|
;;
|
|
*)
|
|
tif_lib=[`find_lib "libtiff[0-9]*.so.*"`]
|
|
if test x$tif_lib = x; then
|
|
tif_lib=[`find_lib "libtiff.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
else
|
|
AC_MSG_WARN([*** Unable to find Tiff library (http://www.simplesystems.org/libtiff/)])
|
|
AC_MSG_WARN([TIF image loading disabled])
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_TIF], $load_tif)
|
|
|
|
if test x$enable_webp = xyes; then
|
|
PKG_CHECK_MODULES([LIBWEBPDEMUX], [libwebpdemux], [dnl
|
|
have_webpdemux_hdr=yes
|
|
have_webpdemux_lib=yes
|
|
have_webpdemux_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([webp/demux.h], [
|
|
have_webpdemux_hdr=yes
|
|
LIBWEBPDEMUX_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([webpdemux], [WebPDemuxGetFrame], [
|
|
have_webpdemux_lib=yes
|
|
LIBWEBPDEMUX_LIBS="-lwebpdemux"
|
|
], [], [-lm])
|
|
])
|
|
PKG_CHECK_MODULES([LIBWEBP], [libwebp], [dnl
|
|
have_webp_hdr=yes
|
|
have_webp_lib=yes
|
|
have_webp_pc=yes
|
|
], [dnl
|
|
AC_CHECK_HEADER([webp/decode.h], [
|
|
have_webp_hdr=yes
|
|
LIBWEBP_CFLAGS=""
|
|
])
|
|
AC_CHECK_LIB([webp], [WebPGetDecoderVersion], [
|
|
have_webp_lib=yes
|
|
LIBWEBP_LIBS="-lwebp"
|
|
], [], [-lm])
|
|
])
|
|
if test x$have_webpdemux_hdr = xyes -a x$have_webpdemux_lib = xyes -a x$have_webp_hdr = xyes -a x$have_webp_lib = xyes; then
|
|
AC_DEFINE([LOAD_WEBP])
|
|
load_webp=1
|
|
|
|
case "$host" in
|
|
*-*-darwin*)
|
|
webpdemux_lib=[`find_lib "libwebpdemux.[0-9]*.dylib"`]
|
|
webp_lib=[`find_lib "libwebp.[0-9]*.dylib"`]
|
|
if test x$webp_lib = x; then
|
|
webpdemux_lib=[`find_lib libwebpdemux.dylib`]
|
|
webp_lib=[`find_lib libwebp.dylib`]
|
|
fi
|
|
;;
|
|
*-*-cygwin* | *-*-mingw*)
|
|
webpdemux_lib=[`find_lib "libwebpdemux-*.dll"`]
|
|
webp_lib=[`find_lib "libwebp-*.dll"`]
|
|
;;
|
|
*)
|
|
webpdemux_lib=[`find_lib "libwebpdemux[0-9]*.so.*"`]
|
|
webp_lib=[`find_lib "libwebp[0-9]*.so.*"`]
|
|
if test x$webp_lib = x; then
|
|
webpdemux_lib=[`find_lib "libwebpdemux.so.*"`]
|
|
webp_lib=[`find_lib "libwebp.so.*"`]
|
|
fi
|
|
;;
|
|
esac
|
|
else
|
|
AC_MSG_WARN([*** Unable to find WEBP library (https://developers.google.com/speed/webp)])
|
|
AC_MSG_WARN([WEBP image loading disabled])
|
|
fi
|
|
fi
|
|
AC_SUBST([LOAD_WEBP], $load_webp)
|
|
|
|
load_bmp=0
|
|
if test x$enable_bmp = xyes; then
|
|
AC_DEFINE([LOAD_BMP])
|
|
load_bmp=1
|
|
fi
|
|
AC_SUBST([LOAD_BMP], $load_bmp)
|
|
|
|
load_gif=0
|
|
if test x$enable_gif = xyes; then
|
|
AC_DEFINE([LOAD_GIF])
|
|
load_gif=1
|
|
fi
|
|
AC_SUBST([LOAD_GIF], $load_gif)
|
|
|
|
load_lbm=0
|
|
if test x$enable_lbm = xyes; then
|
|
AC_DEFINE([LOAD_LBM])
|
|
load_lbm=1
|
|
fi
|
|
AC_SUBST([LOAD_LBM], $load_lbm)
|
|
|
|
load_pcx=0
|
|
if test x$enable_pcx = xyes; then
|
|
AC_DEFINE([LOAD_PCX])
|
|
load_pcx=1
|
|
fi
|
|
AC_SUBST([LOAD_PCX], $load_pcx)
|
|
|
|
load_pnm=0
|
|
if test x$enable_pnm = xyes; then
|
|
AC_DEFINE([LOAD_PNM])
|
|
load_pnm=1
|
|
fi
|
|
AC_SUBST([LOAD_PNM], $load_pnm)
|
|
|
|
load_svg=0
|
|
if test x$enable_svg = xyes; then
|
|
AC_DEFINE([LOAD_SVG])
|
|
load_svg=1
|
|
fi
|
|
AC_SUBST([LOAD_SVG], $load_svg)
|
|
|
|
load_tga=0
|
|
if test x$enable_tga = xyes; then
|
|
AC_DEFINE([LOAD_TGA])
|
|
load_tga=1
|
|
fi
|
|
AC_SUBST([LOAD_TGA], $load_tga)
|
|
|
|
load_xcf=0
|
|
if test x$enable_xcf = xyes; then
|
|
AC_DEFINE([LOAD_XCF])
|
|
load_xcf=1
|
|
fi
|
|
AC_SUBST([LOAD_XCF], $load_xcf)
|
|
|
|
load_xpm=0
|
|
if test x$enable_xpm = xyes; then
|
|
AC_DEFINE([LOAD_XPM])
|
|
load_xpm=1
|
|
fi
|
|
AC_SUBST([LOAD_XPM], $load_xpm)
|
|
|
|
load_xv=0
|
|
if test x$enable_xv = xyes; then
|
|
AC_DEFINE([LOAD_XV])
|
|
load_xv=1
|
|
fi
|
|
AC_SUBST([LOAD_XV], $load_xv)
|
|
|
|
load_qoi=0
|
|
if test x$enable_qoi = xyes; then
|
|
AC_DEFINE([LOAD_QOI])
|
|
load_qoi=1
|
|
fi
|
|
AC_SUBST([LOAD_QOI], $load_qoi)
|
|
|
|
if test x$enable_webp = xyes -a x$have_webp_hdr = xyes -a x$have_webp_lib -a x$have_webpdemux_hdr = xyes -a x$have_webpdemux_lib = xyes; then
|
|
CFLAGS="$LIBWEBP_CFLAGS $CFLAGS"
|
|
if test x$enable_webp_shared = xyes && test x$webp_lib != x; then
|
|
echo "-- dynamic libwebp -> $webp_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_WEBP_DYNAMIC, "$webp_lib")
|
|
echo "-- dynamic libwebpdemux -> $webpdemux_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_WEBPDEMUX_DYNAMIC, "$webpdemux_lib")
|
|
else
|
|
IMG_LIBS="$LIBWEBPDEMUX_LIBS $LIBWEBP_LIBS $IMG_LIBS"
|
|
if test x$have_webp_pc = xyes; then
|
|
PC_REQUIRES="libwebpdemux libwebp $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBWEBPDEMUX_LIBS $LIBWEBP_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
if test x$enable_avif = xyes -a x$have_avif_hdr = xyes -a x$have_avif_lib = xyes; then
|
|
CFLAGS="$LIBAVIF_CFLAGS $CFLAGS"
|
|
if test x$enable_avif_shared = xyes && test x$avif_lib != x; then
|
|
echo "-- dynamic libavif -> $avif_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_AVIF_DYNAMIC, "$avif_lib")
|
|
else
|
|
IMG_LIBS="$LIBAVIF_LIBS $IMG_LIBS"
|
|
if test x$have_avif_pc = xyes; then
|
|
PC_REQUIRES="libavif $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBAVIF_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
if test x$enable_tif = xyes -a x$have_tif_hdr = xyes -a x$have_tif_lib = xyes; then
|
|
CFLAGS="$LIBTIFF_CFLAGS $CFLAGS"
|
|
if test x$enable_tif_shared = xyes && test x$tif_lib != x; then
|
|
echo "-- dynamic libtiff -> $tif_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_TIF_DYNAMIC, "$tif_lib")
|
|
else
|
|
if test x$have_libjpeg = xyes; then
|
|
# Disable dynamic jpeg since we're linking it explicitly
|
|
jpg_lib=''
|
|
fi
|
|
IMG_LIBS="$LIBTIFF_LIBS $IMG_LIBS"
|
|
if test x$have_tif_pc = xyes; then
|
|
PC_REQUIRES="libtiff-4 $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBTIFF_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
if test x$enable_jpg = xyes -a x$have_jpg_hdr = xyes -a x$have_jpg_lib = xyes; then
|
|
CFLAGS="$LIBJPEG_CFLAGS $CFLAGS"
|
|
if test x$enable_jpg_shared = xyes && test x$jpg_lib != x; then
|
|
echo "-- dynamic libjpeg -> $jpg_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_JPG_DYNAMIC, "$jpg_lib")
|
|
else
|
|
IMG_LIBS="$LIBJPEG_LIBS $IMG_LIBS"
|
|
if test x$have_jpg_pc = xyes; then
|
|
PC_REQUIRES="libjpeg $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBJPEG_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
if test x$enable_jxl = xyes -a x$have_jxl_hdr = xyes -a x$have_jxl_lib = xyes; then
|
|
CFLAGS="$LIBJXL_CFLAGS $CFLAGS"
|
|
if test x$enable_jxl_shared = xyes && test x$jxl_lib != x; then
|
|
echo "-- dynamic libjxl -> $jxl_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_JXL_DYNAMIC, "$jxl_lib")
|
|
else
|
|
IMG_LIBS="$LIBJXL_LIBS $IMG_LIBS"
|
|
if test x$have_jxl_pc = xyes; then
|
|
PC_REQUIRES="libjxl $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBJXL_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
if test x$enable_png = xyes -a x$have_png_hdr = xyes -a x$have_png_lib = xyes; then
|
|
CFLAGS="$LIBPNG_CFLAGS $CFLAGS"
|
|
if test x$enable_png_shared = xyes && test x$png_lib != x; then
|
|
echo "-- dynamic libpng -> $png_lib"
|
|
AC_DEFINE_UNQUOTED(LOAD_PNG_DYNAMIC, "$png_lib")
|
|
else
|
|
IMG_LIBS="$LIBPNG_LIBS $IMG_LIBS"
|
|
if test x$have_png_pc = xyes; then
|
|
PC_REQUIRES="libpng $PC_REQUIRES"
|
|
else
|
|
PC_LIBS="$LIBPNG_LIBS $PC_LIBS"
|
|
fi
|
|
fi
|
|
fi
|
|
if test x$enable_save_png = xyes; then
|
|
AC_DEFINE([SDL_IMAGE_SAVE_PNG], 1)
|
|
AC_SUBST([SDL2IMAGE_PNG_SAVE], 1)
|
|
else
|
|
AC_DEFINE([SDL_IMAGE_SAVE_PNG], 0)
|
|
AC_SUBST([SDL2IMAGE_PNG_SAVE], 0)
|
|
fi
|
|
if test x$enable_save_jpg = xyes; then
|
|
AC_DEFINE([SDL_IMAGE_SAVE_JPG], 1)
|
|
AC_SUBST([SDL2IMAGE_JPG_SAVE], 1)
|
|
else
|
|
AC_DEFINE([SDL_IMAGE_SAVE_JPG], 0)
|
|
AC_SUBST([SDL2IMAGE_JPG_SAVE], 0)
|
|
fi
|
|
|
|
AC_SUBST([IMG_LIBS])
|
|
AC_SUBST([PC_LIBS])
|
|
AC_SUBST([PC_REQUIRES])
|
|
|
|
AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_tests" = xyes])
|
|
AM_CONDITIONAL([INSTALL_TESTS], [test "x$enable_installed_tests" = xyes])
|
|
|
|
dnl Calculate the location of the prefix, relative to the cmake folder
|
|
pkg_cmakedir='$libdir/cmake/SDL2_image'
|
|
AX_COMPUTE_RELATIVE_PATHS([pkg_cmakedir:prefix:cmake_prefix_relpath])
|
|
AC_SUBST([cmake_prefix_relpath])
|
|
|
|
dnl check for LD --no-undefined option
|
|
CheckNoUndef
|
|
|
|
dnl check for GCC warning options
|
|
CheckWarnAll
|
|
|
|
dnl check for GCC visibility attributes
|
|
CheckVisibilityHidden
|
|
|
|
OBJCFLAGS=$CFLAGS
|
|
|
|
# Finally create all the generated files
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
sdl2_image-config.cmake
|
|
sdl2_image-config-version.cmake
|
|
SDL2_image.spec
|
|
SDL2_image.pc
|
|
test/Makefile
|
|
])
|
|
AC_OUTPUT
|