1*b2055c35SXin LiAC_INIT([libwebp], [1.4.0], 2*b2055c35SXin Li [https://bugs.chromium.org/p/webp],, 3*b2055c35SXin Li [https://developers.google.com/speed/webp]) 4*b2055c35SXin LiAC_CANONICAL_HOST 5*b2055c35SXin LiAC_PREREQ([2.60]) 6*b2055c35SXin LiAM_INIT_AUTOMAKE([-Wall foreign subdir-objects]) 7*b2055c35SXin Li 8*b2055c35SXin Lidnl === automake >= 1.12 requires this for 'unusual archivers' support. 9*b2055c35SXin Lidnl === it must occur before LT_INIT (AC_PROG_LIBTOOL). 10*b2055c35SXin Lim4_ifdef([AM_PROG_AR], [AM_PROG_AR]) 11*b2055c35SXin Li 12*b2055c35SXin Lidnl === AC_PROG_LIBTOOL is deprecated. 13*b2055c35SXin Lim4_ifdef([LT_INIT], [LT_INIT], [AC_PROG_LIBTOOL]) 14*b2055c35SXin LiAC_PROG_SED 15*b2055c35SXin LiAM_PROG_CC_C_O 16*b2055c35SXin Li 17*b2055c35SXin Lidnl === Enable less verbose output when building. 18*b2055c35SXin Lim4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 19*b2055c35SXin Li 20*b2055c35SXin Lidnl == test endianness 21*b2055c35SXin LiAC_C_BIGENDIAN 22*b2055c35SXin Li 23*b2055c35SXin Lidnl === SET_IF_UNSET(shell_var, value) 24*b2055c35SXin Lidnl === Set the shell variable 'shell_var' to 'value' if it is unset. 25*b2055c35SXin LiAC_DEFUN([SET_IF_UNSET], [test "${$1+set}" = "set" || $1=$2]) 26*b2055c35SXin Li 27*b2055c35SXin LiAC_ARG_ENABLE([everything], 28*b2055c35SXin Li AS_HELP_STRING([--enable-everything], 29*b2055c35SXin Li [Enable all optional targets. These can still be 30*b2055c35SXin Li disabled with --disable-target]), 31*b2055c35SXin Li [SET_IF_UNSET([enable_libsharpyuv], [$enableval]) 32*b2055c35SXin Li SET_IF_UNSET([enable_libwebpdecoder], [$enableval]) 33*b2055c35SXin Li SET_IF_UNSET([enable_libwebpdemux], [$enableval]) 34*b2055c35SXin Li SET_IF_UNSET([enable_libwebpextras], [$enableval]) 35*b2055c35SXin Li SET_IF_UNSET([enable_libwebpmux], [$enableval])]) 36*b2055c35SXin Li 37*b2055c35SXin Lidnl === Check whether libwebpmux should be built 38*b2055c35SXin LiAC_MSG_CHECKING(whether libwebpmux is to be built) 39*b2055c35SXin LiAC_ARG_ENABLE([libwebpmux], 40*b2055c35SXin Li AS_HELP_STRING([--disable-libwebpmux], 41*b2055c35SXin Li [Disable libwebpmux @<:@default=no@:>@]), 42*b2055c35SXin Li [], [enable_libwebpmux=yes]) 43*b2055c35SXin LiAC_MSG_RESULT(${enable_libwebpmux-no}) 44*b2055c35SXin LiAM_CONDITIONAL([BUILD_MUX], [test "$enable_libwebpmux" = "yes"]) 45*b2055c35SXin Li 46*b2055c35SXin Lidnl === Check whether libwebpdemux should be built 47*b2055c35SXin LiAC_MSG_CHECKING(whether libwebpdemux is to be built) 48*b2055c35SXin LiAC_ARG_ENABLE([libwebpdemux], 49*b2055c35SXin Li AS_HELP_STRING([--disable-libwebpdemux], 50*b2055c35SXin Li [Disable libwebpdemux @<:@default=no@:>@]), 51*b2055c35SXin Li [], [enable_libwebpdemux=yes]) 52*b2055c35SXin LiAC_MSG_RESULT(${enable_libwebpdemux-no}) 53*b2055c35SXin LiAM_CONDITIONAL([BUILD_DEMUX], [test "$enable_libwebpdemux" = "yes"]) 54*b2055c35SXin Li 55*b2055c35SXin Lidnl === Check whether decoder library should be built. 56*b2055c35SXin LiAC_MSG_CHECKING(whether decoder library is to be built) 57*b2055c35SXin LiAC_ARG_ENABLE([libwebpdecoder], 58*b2055c35SXin Li AS_HELP_STRING([--enable-libwebpdecoder], 59*b2055c35SXin Li [Build libwebpdecoder @<:@default=no@:>@])) 60*b2055c35SXin LiAC_MSG_RESULT(${enable_libwebpdecoder-no}) 61*b2055c35SXin LiAM_CONDITIONAL([BUILD_LIBWEBPDECODER], [test "$enable_libwebpdecoder" = "yes"]) 62*b2055c35SXin Li 63*b2055c35SXin Lidnl === Check whether libwebpextras should be built 64*b2055c35SXin LiAC_MSG_CHECKING(whether libwebpextras is to be built) 65*b2055c35SXin LiAC_ARG_ENABLE([libwebpextras], 66*b2055c35SXin Li AS_HELP_STRING([--enable-libwebpextras], 67*b2055c35SXin Li [Build libwebpextras @<:@default=no@:>@])) 68*b2055c35SXin LiAC_MSG_RESULT(${enable_libwebpextras-no}) 69*b2055c35SXin LiAM_CONDITIONAL([BUILD_EXTRAS], [test "$enable_libwebpextras" = "yes"]) 70*b2055c35SXin Li 71*b2055c35SXin Lidnl === If --enable-asserts is not defined, define NDEBUG 72*b2055c35SXin Li 73*b2055c35SXin LiAC_MSG_CHECKING(whether asserts are enabled) 74*b2055c35SXin LiAC_ARG_ENABLE([asserts], 75*b2055c35SXin Li AS_HELP_STRING([--enable-asserts], 76*b2055c35SXin Li [Enable assert checks])) 77*b2055c35SXin Liif test "x${enable_asserts-no}" = "xno"; then 78*b2055c35SXin Li AM_CPPFLAGS="${AM_CPPFLAGS} -DNDEBUG" 79*b2055c35SXin Lifi 80*b2055c35SXin LiAC_MSG_RESULT(${enable_asserts-no}) 81*b2055c35SXin LiAC_SUBST([AM_CPPFLAGS]) 82*b2055c35SXin Li 83*b2055c35SXin LiAC_ARG_WITH([pkgconfigdir], AS_HELP_STRING([--with-pkgconfigdir=DIR], 84*b2055c35SXin Li [Path to the pkgconfig directory @<:@LIBDIR/pkgconfig@:>@]), 85*b2055c35SXin Li [pkgconfigdir="$withval"], [pkgconfigdir='${libdir}/pkgconfig']) 86*b2055c35SXin LiAC_SUBST([pkgconfigdir]) 87*b2055c35SXin Li 88*b2055c35SXin Lidnl === TEST_AND_ADD_CFLAGS(var, flag) 89*b2055c35SXin Lidnl === Checks whether $CC supports 'flag' and adds it to 'var' 90*b2055c35SXin Lidnl === on success. 91*b2055c35SXin LiAC_DEFUN([TEST_AND_ADD_CFLAGS], 92*b2055c35SXin Li [SAVED_CFLAGS="$CFLAGS" 93*b2055c35SXin Li CFLAGS="-Werror $2" 94*b2055c35SXin Li AC_MSG_CHECKING([whether $CC supports $2]) 95*b2055c35SXin Li dnl Note AC_LANG_PROGRAM([]) uses an old-style main definition. 96*b2055c35SXin Li AC_COMPILE_IFELSE([AC_LANG_SOURCE([int main(void) { return 0; }])], 97*b2055c35SXin Li [AC_MSG_RESULT([yes])] 98*b2055c35SXin Li dnl Simply append the variable avoiding a 99*b2055c35SXin Li dnl compatibility ifdef for AS_VAR_APPEND as this 100*b2055c35SXin Li dnl variable shouldn't grow all that large. 101*b2055c35SXin Li [$1="${$1} $2"], 102*b2055c35SXin Li [AC_MSG_RESULT([no])]) 103*b2055c35SXin Li CFLAGS="$SAVED_CFLAGS"]) 104*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-fvisibility=hidden]) 105*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wall]) 106*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wconstant-conversion]) 107*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wdeclaration-after-statement]) 108*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wextra]) 109*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wextra-semi-stmt]) 110*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wfloat-conversion]) 111*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wformat -Wformat-nonliteral]) 112*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wformat -Wformat-security]) 113*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wmissing-declarations]) 114*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wmissing-prototypes]) 115*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wold-style-definition]) 116*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wparentheses-equality]) 117*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wshadow]) 118*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wshorten-64-to-32]) 119*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wstrict-prototypes]) 120*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wundef]) 121*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wunreachable-code-aggressive]) 122*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wunreachable-code]) 123*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wunused-but-set-variable]) 124*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wunused]) 125*b2055c35SXin LiTEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wvla]) 126*b2055c35SXin Li# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62040 127*b2055c35SXin Li# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61622 128*b2055c35SXin LiAS_IF([test "$GCC" = "yes" ], [ 129*b2055c35SXin Li gcc_version=`$CC -dumpversion` 130*b2055c35SXin Li gcc_wht_bug="" 131*b2055c35SXin Li case "$host_cpu" in 132*b2055c35SXin Li aarch64|arm64) 133*b2055c35SXin Li case "$gcc_version" in 134*b2055c35SXin Li 4.9|4.9.0|4.9.1) gcc_wht_bug=yes ;; 135*b2055c35SXin Li esac 136*b2055c35SXin Li esac 137*b2055c35SXin Li AS_IF([test "$gcc_wht_bug" = "yes"], [ 138*b2055c35SXin Li TEST_AND_ADD_CFLAGS([AM_CFLAGS], [-frename-registers])])]) 139*b2055c35SXin Li# Use -flax-vector-conversions, if available, when building intrinsics with 140*b2055c35SXin Li# older versions of gcc. The flag appeared in 4.3.x, but if backported, and 141*b2055c35SXin Li# -fno-lax-vector-conversions is set, errors may occur with the intrinsics 142*b2055c35SXin Li# files along with the older system includes, e.g., emmintrin.h. 143*b2055c35SXin Li# Originally observed with cc (GCC) 4.2.1 20070831 patched [FreeBSD] (9.3). 144*b2055c35SXin Li# https://bugs.chromium.org/p/webp/issues/detail?id=274 145*b2055c35SXin LiAS_IF([test "$GCC" = "yes" ], [ 146*b2055c35SXin Li case "$host_cpu" in 147*b2055c35SXin Li amd64|i?86|x86_64) 148*b2055c35SXin Li AC_COMPILE_IFELSE( 149*b2055c35SXin Li dnl only check for -flax-vector-conversions with older gcc, skip 150*b2055c35SXin Li dnl clang as it reports itself as 4.2.1, but the flag isn't needed. 151*b2055c35SXin Li [AC_LANG_SOURCE([#if !defined(__clang__) && defined(__GNUC__) && \ 152*b2055c35SXin Li ((__GNUC__ << 8) | __GNUC_MINOR__) < 0x403 153*b2055c35SXin Li #error old gcc 154*b2055c35SXin Li #endif 155*b2055c35SXin Li int main(void) { return 0; } 156*b2055c35SXin Li ])],, 157*b2055c35SXin Li [TEST_AND_ADD_CFLAGS([INTRINSICS_CFLAGS], 158*b2055c35SXin Li [-flax-vector-conversions])]) 159*b2055c35SXin Li ;; 160*b2055c35SXin Li esac]) 161*b2055c35SXin LiAC_SUBST([AM_CFLAGS]) 162*b2055c35SXin Li 163*b2055c35SXin Lidnl === Check for machine specific flags 164*b2055c35SXin LiAC_ARG_ENABLE([sse4.1], 165*b2055c35SXin Li AS_HELP_STRING([--disable-sse4.1], 166*b2055c35SXin Li [Disable detection of SSE4.1 support 167*b2055c35SXin Li @<:@default=auto@:>@])) 168*b2055c35SXin Li 169*b2055c35SXin LiAS_IF([test "x$enable_sse4_1" != "xno" -a "x$enable_sse2" != "xno"], [ 170*b2055c35SXin Li SSE41_FLAGS="$INTRINSICS_CFLAGS $SSE41_FLAGS" 171*b2055c35SXin Li TEST_AND_ADD_CFLAGS([SSE41_FLAGS], [-msse4.1]) 172*b2055c35SXin Li AS_IF([test -n "$SSE41_FLAGS"], [ 173*b2055c35SXin Li SAVED_CFLAGS=$CFLAGS 174*b2055c35SXin Li CFLAGS="$CFLAGS $SSE41_FLAGS" 175*b2055c35SXin Li AC_CHECK_HEADER([smmintrin.h], 176*b2055c35SXin Li [AC_DEFINE(WEBP_HAVE_SSE41, [1], 177*b2055c35SXin Li [Set to 1 if SSE4.1 is supported])], 178*b2055c35SXin Li [SSE41_FLAGS=""]) 179*b2055c35SXin Li CFLAGS=$SAVED_CFLAGS]) 180*b2055c35SXin Li AC_SUBST([SSE41_FLAGS])]) 181*b2055c35SXin Li 182*b2055c35SXin LiAC_ARG_ENABLE([sse2], 183*b2055c35SXin Li AS_HELP_STRING([--disable-sse2], 184*b2055c35SXin Li [Disable detection of SSE2 support 185*b2055c35SXin Li @<:@default=auto@:>@])) 186*b2055c35SXin Li 187*b2055c35SXin LiAS_IF([test "x$enable_sse2" != "xno"], [ 188*b2055c35SXin Li SSE2_FLAGS="$INTRINSICS_CFLAGS $SSE2_FLAGS" 189*b2055c35SXin Li TEST_AND_ADD_CFLAGS([SSE2_FLAGS], [-msse2]) 190*b2055c35SXin Li AS_IF([test -n "$SSE2_FLAGS"], [ 191*b2055c35SXin Li SAVED_CFLAGS=$CFLAGS 192*b2055c35SXin Li CFLAGS="$CFLAGS $SSE2_FLAGS" 193*b2055c35SXin Li AC_CHECK_HEADER([emmintrin.h], 194*b2055c35SXin Li [AC_DEFINE(WEBP_HAVE_SSE2, [1], 195*b2055c35SXin Li [Set to 1 if SSE2 is supported])], 196*b2055c35SXin Li [SSE2_FLAGS=""]) 197*b2055c35SXin Li CFLAGS=$SAVED_CFLAGS]) 198*b2055c35SXin Li AC_SUBST([SSE2_FLAGS])]) 199*b2055c35SXin Li 200*b2055c35SXin LiAC_ARG_ENABLE([neon], 201*b2055c35SXin Li AS_HELP_STRING([--disable-neon], 202*b2055c35SXin Li [Disable detection of NEON support 203*b2055c35SXin Li @<:@default=auto@:>@])) 204*b2055c35SXin Li 205*b2055c35SXin LiAC_ARG_ENABLE([neon_rtcd], 206*b2055c35SXin Li AS_HELP_STRING([--disable-neon-rtcd], 207*b2055c35SXin Li [Disable runtime detection of NEON support via 208*b2055c35SXin Li /proc/cpuinfo on Linux hosts 209*b2055c35SXin Li @<:@default=auto@:>@])) 210*b2055c35SXin Li# For ARM(7) hosts: 211*b2055c35SXin Li# Both NEON flags unset and NEON support detected = build all modules with NEON 212*b2055c35SXin Li# NEON detected with the use of -mfpu=neon = build only NEON modules with NEON 213*b2055c35SXin LiAS_IF([test "x$enable_neon" != "xno"], [ 214*b2055c35SXin Li case "$host_cpu" in 215*b2055c35SXin Li arm|armv7*) 216*b2055c35SXin Li # Test for NEON support without flags before falling back to -mfpu=neon 217*b2055c35SXin Li for flag in '' '-mfpu=neon'; do 218*b2055c35SXin Li LOCAL_NEON_FLAGS="$INTRINSICS_CFLAGS $NEON_FLAGS" 219*b2055c35SXin Li TEST_AND_ADD_CFLAGS([LOCAL_NEON_FLAGS], [$flag]) 220*b2055c35SXin Li SAVED_CFLAGS=$CFLAGS 221*b2055c35SXin Li CFLAGS="$CFLAGS $LOCAL_NEON_FLAGS" 222*b2055c35SXin Li 223*b2055c35SXin Li dnl Note AC_LANG_PROGRAM([]) uses an old-style main definition. 224*b2055c35SXin Li AC_COMPILE_IFELSE([AC_LANG_SOURCE([ 225*b2055c35SXin Li #include <arm_neon.h> 226*b2055c35SXin Li int main(void) { 227*b2055c35SXin Li int8x8_t v = vdup_n_s8(0); 228*b2055c35SXin Li (void)v; 229*b2055c35SXin Li return 0; 230*b2055c35SXin Li }])], 231*b2055c35SXin Li [NEON_FLAGS="$(echo $LOCAL_NEON_FLAGS | $SED 's/^ *//')" 232*b2055c35SXin Li AS_IF([test -n "$NEON_FLAGS"], [ 233*b2055c35SXin Li AS_IF([test "${host_os%%-*}" = "linux" -o \ 234*b2055c35SXin Li "x$enable_neon_rtcd" = "xno"], [ 235*b2055c35SXin Li CFLAGS=$SAVED_CFLAGS 236*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_NEON, [1], [Set to 1 if NEON is supported]) 237*b2055c35SXin Li break 238*b2055c35SXin Li ],[ 239*b2055c35SXin Li AC_MSG_WARN(m4_normalize([NEON runtime cpu-detection is 240*b2055c35SXin Li unavailable for ${host_os%%-*}. Force 241*b2055c35SXin Li with CFLAGS=-mfpu=neon or 242*b2055c35SXin Li --disable-neon-rtcd.])) 243*b2055c35SXin Li enable_neon_rtcd=no 244*b2055c35SXin Li NEON_FLAGS="" 245*b2055c35SXin Li ]) 246*b2055c35SXin Li ],[ 247*b2055c35SXin Li CFLAGS=$SAVED_CFLAGS 248*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_NEON, [1], [Set to 1 if NEON is supported]) 249*b2055c35SXin Li break 250*b2055c35SXin Li ])]) 251*b2055c35SXin Li CFLAGS=$SAVED_CFLAGS 252*b2055c35SXin Li done 253*b2055c35SXin Li 254*b2055c35SXin Li AS_IF([test -n "$NEON_FLAGS"], [ 255*b2055c35SXin Li # If NEON is available and rtcd is disabled apply NEON_FLAGS globally. 256*b2055c35SXin Li AS_IF([test "x$enable_neon_rtcd" = "xno"], [ 257*b2055c35SXin Li AM_CFLAGS="$AM_CFLAGS $NEON_FLAGS" 258*b2055c35SXin Li NEON_FLAGS=""], 259*b2055c35SXin Li [AC_DEFINE(WEBP_HAVE_NEON_RTCD, [1], 260*b2055c35SXin Li [Set to 1 if runtime detection of NEON is enabled])])]) 261*b2055c35SXin Li 262*b2055c35SXin Li case "$host_os" in 263*b2055c35SXin Li *android*) AC_CHECK_HEADERS([cpu-features.h]) ;; 264*b2055c35SXin Li esac 265*b2055c35SXin Li ;; 266*b2055c35SXin Li aarch64*|arm64*) 267*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_NEON, [1], [Set to 1 if NEON is supported]) 268*b2055c35SXin Li ;; 269*b2055c35SXin Li esac 270*b2055c35SXin Li AC_SUBST([NEON_FLAGS])]) 271*b2055c35SXin Li 272*b2055c35SXin Lidnl === CLEAR_LIBVARS([var_pfx]) 273*b2055c35SXin Lidnl === Clears <var_pfx>_{INCLUDES,LIBS}. 274*b2055c35SXin LiAC_DEFUN([CLEAR_LIBVARS], [$1_INCLUDES=""; $1_LIBS=""]) 275*b2055c35SXin Li 276*b2055c35SXin Lidnl === WITHLIB_OPTION([opt_pfx], [outvar_pfx]) 277*b2055c35SXin Lidnl === Defines --with-<opt_pfx>{include,lib}dir options which set 278*b2055c35SXin Lidnl === the variables <outvar_pfx>_{INCLUDES,LIBS}. 279*b2055c35SXin LiAC_DEFUN([WITHLIB_OPTION], 280*b2055c35SXin Li [AC_ARG_WITH([$1includedir], 281*b2055c35SXin Li AS_HELP_STRING([--with-$1includedir=DIR], 282*b2055c35SXin Li [use $2 includes from DIR]), 283*b2055c35SXin Li $2_INCLUDES="-I$withval") 284*b2055c35SXin Li AC_ARG_WITH([$1libdir], 285*b2055c35SXin Li AS_HELP_STRING([--with-$1libdir=DIR], 286*b2055c35SXin Li [use $2 libraries from DIR]), 287*b2055c35SXin Li [$2_LIBS="-L$withval"])]) 288*b2055c35SXin Li 289*b2055c35SXin Lidnl === LIBCHECK_PROLOGUE([var_pfx]) 290*b2055c35SXin Lidnl === Caches the current values of CPPFLAGS/LIBS in SAVED_* then 291*b2055c35SXin Lidnl === prepends the current values with <var_pfx>_{INCLUDES,LIBS}. 292*b2055c35SXin LiAC_DEFUN([LIBCHECK_PROLOGUE], 293*b2055c35SXin Li [SAVED_CPPFLAGS=$CPPFLAGS 294*b2055c35SXin Li SAVED_LIBS=$LIBS 295*b2055c35SXin Li CPPFLAGS="$$1_INCLUDES $CPPFLAGS" 296*b2055c35SXin Li LIBS="$$1_LIBS $LIBS"]) 297*b2055c35SXin Li 298*b2055c35SXin Lidnl === LIBCHECK_EPILOGUE([var_pfx]) 299*b2055c35SXin Lidnl === Restores the values of CPPFLAGS/LIBS from SAVED_* and exports 300*b2055c35SXin Lidnl === <var_pfx>_{INCLUDES,LIBS} with AC_SUBST. 301*b2055c35SXin LiAC_DEFUN([LIBCHECK_EPILOGUE], 302*b2055c35SXin Li [AC_SUBST($1_LIBS) 303*b2055c35SXin Li AC_SUBST($1_INCLUDES) 304*b2055c35SXin Li CPPFLAGS=$SAVED_CPPFLAGS 305*b2055c35SXin Li LIBS=$SAVED_LIBS]) 306*b2055c35SXin Li 307*b2055c35SXin Lidnl === Check for gcc builtins 308*b2055c35SXin Li 309*b2055c35SXin Lidnl === CHECK_FOR_BUILTIN([builtin], [param], [define]) 310*b2055c35SXin Lidnl === links a C AC_LANG_PROGRAM, with <builtin>(<param>) 311*b2055c35SXin Lidnl === AC_DEFINE'ing <define> if successful. 312*b2055c35SXin LiAC_DEFUN([CHECK_FOR_BUILTIN], 313*b2055c35SXin Li [AC_LANG_PUSH([C]) 314*b2055c35SXin Li AC_MSG_CHECKING([for $1]) 315*b2055c35SXin Li AC_LINK_IFELSE([AC_LANG_PROGRAM([], [(void)$1($2)])], 316*b2055c35SXin Li [AC_MSG_RESULT([yes]) 317*b2055c35SXin Li AC_DEFINE([$3], [1], 318*b2055c35SXin Li [Set to 1 if $1 is available])], 319*b2055c35SXin Li [AC_MSG_RESULT([no])]), 320*b2055c35SXin Li AC_LANG_POP]) 321*b2055c35SXin Li 322*b2055c35SXin Lidnl AC_CHECK_FUNC doesn't work with builtin's. 323*b2055c35SXin LiCHECK_FOR_BUILTIN([__builtin_bswap16], [1u << 15], [HAVE_BUILTIN_BSWAP16]) 324*b2055c35SXin LiCHECK_FOR_BUILTIN([__builtin_bswap32], [1u << 31], [HAVE_BUILTIN_BSWAP32]) 325*b2055c35SXin LiCHECK_FOR_BUILTIN([__builtin_bswap64], [1ull << 63], [HAVE_BUILTIN_BSWAP64]) 326*b2055c35SXin Li 327*b2055c35SXin Lidnl === Check for pthread support 328*b2055c35SXin LiAC_ARG_ENABLE([threading], 329*b2055c35SXin Li AS_HELP_STRING([--disable-threading], 330*b2055c35SXin Li [Disable detection of thread support]),, 331*b2055c35SXin Li [enable_threading=yes]) 332*b2055c35SXin Liif test "$enable_threading" = "yes"; then 333*b2055c35SXin Li AC_MSG_NOTICE([checking for threading support...]) 334*b2055c35SXin Li AX_PTHREAD([AC_DEFINE([WEBP_USE_THREAD], [1], 335*b2055c35SXin Li [Undefine this to disable thread support.]) 336*b2055c35SXin Li LIBS="$PTHREAD_LIBS $LIBS" 337*b2055c35SXin Li CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 338*b2055c35SXin Li CC="$PTHREAD_CC" 339*b2055c35SXin Li ], 340*b2055c35SXin Li [AC_CHECK_FUNC([_beginthreadex], 341*b2055c35SXin Li [AC_DEFINE([WEBP_USE_THREAD], [1], 342*b2055c35SXin Li [Undefine this to disable thread 343*b2055c35SXin Li support.])], 344*b2055c35SXin Li [enable_threading=no])]) 345*b2055c35SXin Lifi 346*b2055c35SXin LiAC_MSG_NOTICE([checking if threading is enabled... ${enable_threading-no}]) 347*b2055c35SXin Li 348*b2055c35SXin Lidnl === check for OpenGL/GLUT support === 349*b2055c35SXin Li 350*b2055c35SXin LiAC_ARG_ENABLE([gl], AS_HELP_STRING([--disable-gl], 351*b2055c35SXin Li [Disable detection of OpenGL support 352*b2055c35SXin Li @<:@default=auto@:>@])) 353*b2055c35SXin LiAS_IF([test "x$enable_gl" != "xno"], [ 354*b2055c35SXin Li CLEAR_LIBVARS([GL]) 355*b2055c35SXin Li WITHLIB_OPTION([gl], [GL]) 356*b2055c35SXin Li 357*b2055c35SXin Li LIBCHECK_PROLOGUE([GL]) 358*b2055c35SXin Li 359*b2055c35SXin Li glut_cflags="none" 360*b2055c35SXin Li glut_ldflags="none" 361*b2055c35SXin Li case $host_os in 362*b2055c35SXin Li darwin*) 363*b2055c35SXin Li # Special case for OSX builds. Append these to give the user a chance to 364*b2055c35SXin Li # override with --with-gl* 365*b2055c35SXin Li glut_cflags="$glut_cflags|-framework GLUT -framework OpenGL" 366*b2055c35SXin Li glut_ldflags="$glut_ldflags|-framework GLUT -framework OpenGL" 367*b2055c35SXin Li # quiet deprecation warnings for glut 368*b2055c35SXin Li TEST_AND_ADD_CFLAGS([AM_CFLAGS], [-Wno-deprecated-declarations]) 369*b2055c35SXin Li ;; 370*b2055c35SXin Li esac 371*b2055c35SXin Li 372*b2055c35SXin Li GLUT_SAVED_CPPFLAGS="$CPPFLAGS" 373*b2055c35SXin Li SAVED_IFS="$IFS" 374*b2055c35SXin Li IFS="|" 375*b2055c35SXin Li for flag in $glut_cflags; do 376*b2055c35SXin Li # restore IFS immediately as the autoconf macros may need the default. 377*b2055c35SXin Li IFS="$SAVED_IFS" 378*b2055c35SXin Li unset ac_cv_header_GL_glut_h 379*b2055c35SXin Li unset ac_cv_header_OpenGL_glut_h 380*b2055c35SXin Li 381*b2055c35SXin Li case $flag in 382*b2055c35SXin Li none) ;; 383*b2055c35SXin Li *) CPPFLAGS="$flag $CPPFLAGS";; 384*b2055c35SXin Li esac 385*b2055c35SXin Li AC_CHECK_HEADERS([GL/glut.h GLUT/glut.h OpenGL/glut.h], 386*b2055c35SXin Li [glut_headers=yes; 387*b2055c35SXin Li test "$flag" = "none" || GL_INCLUDES="$CPPFLAGS"; 388*b2055c35SXin Li break]) 389*b2055c35SXin Li CPPFLAGS="$GLUT_SAVED_CPPFLAGS" 390*b2055c35SXin Li test "$glut_headers" = "yes" && break 391*b2055c35SXin Li done 392*b2055c35SXin Li IFS="$SAVED_IFS" 393*b2055c35SXin Li 394*b2055c35SXin Li if test "$glut_headers" = "yes"; then 395*b2055c35SXin Li AC_LANG_PUSH([C]) 396*b2055c35SXin Li GLUT_SAVED_LDFLAGS="$LDFLAGS" 397*b2055c35SXin Li SAVED_IFS="$IFS" 398*b2055c35SXin Li IFS="|" 399*b2055c35SXin Li for flag in $glut_ldflags; do 400*b2055c35SXin Li # restore IFS immediately as the autoconf macros may need the default. 401*b2055c35SXin Li IFS="$SAVED_IFS" 402*b2055c35SXin Li unset ac_cv_search_glBegin 403*b2055c35SXin Li 404*b2055c35SXin Li case $flag in 405*b2055c35SXin Li none) ;; 406*b2055c35SXin Li *) LDFLAGS="$flag $LDFLAGS";; 407*b2055c35SXin Li esac 408*b2055c35SXin Li 409*b2055c35SXin Li # find libGL 410*b2055c35SXin Li GL_SAVED_LIBS="$LIBS" 411*b2055c35SXin Li AC_SEARCH_LIBS([glBegin], [GL OpenGL opengl32]) 412*b2055c35SXin Li LIBS="$GL_SAVED_LIBS" 413*b2055c35SXin Li 414*b2055c35SXin Li # A direct link to libGL may not be necessary on e.g., linux. 415*b2055c35SXin Li GLUT_SAVED_LIBS="$LIBS" 416*b2055c35SXin Li for lib in "" "-lglut" "-lglut $ac_cv_search_glBegin"; do 417*b2055c35SXin Li LIBS="$lib" 418*b2055c35SXin Li AC_LINK_IFELSE( 419*b2055c35SXin Li [AC_LANG_PROGRAM([ 420*b2055c35SXin Li #ifdef __cplusplus 421*b2055c35SXin Li # define EXTERN_C extern "C" 422*b2055c35SXin Li #else 423*b2055c35SXin Li # define EXTERN_C 424*b2055c35SXin Li #endif 425*b2055c35SXin Li EXTERN_C char glOrtho(); 426*b2055c35SXin Li EXTERN_C char glutMainLoop(); 427*b2055c35SXin Li ],[ 428*b2055c35SXin Li glOrtho(); 429*b2055c35SXin Li glutMainLoop(); 430*b2055c35SXin Li ]) 431*b2055c35SXin Li ], 432*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_GL, [1], 433*b2055c35SXin Li [Set to 1 if OpenGL is supported]) 434*b2055c35SXin Li [glut_support=yes], [] 435*b2055c35SXin Li ) 436*b2055c35SXin Li if test "$glut_support" = "yes"; then 437*b2055c35SXin Li GL_LIBS="$LDFLAGS $lib" 438*b2055c35SXin Li break 439*b2055c35SXin Li fi 440*b2055c35SXin Li done 441*b2055c35SXin Li LIBS="$GLUT_SAVED_LIBS" 442*b2055c35SXin Li LDFLAGS="$GLUT_SAVED_LDFLAGS" 443*b2055c35SXin Li test "$glut_support" = "yes" && break 444*b2055c35SXin Li done 445*b2055c35SXin Li IFS="$SAVED_IFS" 446*b2055c35SXin Li AC_LANG_POP 447*b2055c35SXin Li fi 448*b2055c35SXin Li 449*b2055c35SXin Li LIBCHECK_EPILOGUE([GL]) 450*b2055c35SXin Li 451*b2055c35SXin Li if test "$glut_support" = "yes" -a "$enable_libwebpdemux" = "yes"; then 452*b2055c35SXin Li build_vwebp=yes 453*b2055c35SXin Li else 454*b2055c35SXin Li AC_MSG_NOTICE( 455*b2055c35SXin Li m4_normalize([Not building vwebp. 456*b2055c35SXin Li OpenGL libraries and --enable-libwebpdemux are required.])) 457*b2055c35SXin Li fi 458*b2055c35SXin Li]) 459*b2055c35SXin LiAM_CONDITIONAL([BUILD_VWEBP], [test "$build_vwebp" = "yes"]) 460*b2055c35SXin Li 461*b2055c35SXin Lidnl === check for SDL support === 462*b2055c35SXin Li 463*b2055c35SXin LiAC_ARG_ENABLE([sdl], 464*b2055c35SXin Li AS_HELP_STRING([--disable-sdl], 465*b2055c35SXin Li [Disable detection of SDL support 466*b2055c35SXin Li @<:@default=auto@:>@])) 467*b2055c35SXin LiAS_IF([test "x$enable_sdl" != "xno"], [ 468*b2055c35SXin Li CLEAR_LIBVARS([SDL]) 469*b2055c35SXin Li AC_PATH_PROGS([LIBSDL_CONFIG], [sdl2-config]) 470*b2055c35SXin Li if test -n "$LIBSDL_CONFIG"; then 471*b2055c35SXin Li SDL_INCLUDES=`$LIBSDL_CONFIG --cflags` 472*b2055c35SXin Li SDL_LIBS="`$LIBSDL_CONFIG --libs`" 473*b2055c35SXin Li fi 474*b2055c35SXin Li 475*b2055c35SXin Li WITHLIB_OPTION([sdl], [SDL]) 476*b2055c35SXin Li 477*b2055c35SXin Li sdl_header="no" 478*b2055c35SXin Li LIBCHECK_PROLOGUE([SDL]) 479*b2055c35SXin Li AC_CHECK_HEADER([SDL2/SDL.h], [sdl_header="SDL2/SDL.h"], 480*b2055c35SXin Li [AC_MSG_WARN(SDL2 library not available - no SDL.h)]) 481*b2055c35SXin Li if test x"$sdl_header" != "xno"; then 482*b2055c35SXin Li AC_LANG_PUSH(C) 483*b2055c35SXin Li SDL_SAVED_LIBS="$LIBS" 484*b2055c35SXin Li for lib in "" "-lSDL2" "-lSDL2main -lSDL2"; do 485*b2055c35SXin Li LIBS="$SDL_SAVED_LIBS $lib" 486*b2055c35SXin Li # Perform a full link to ensure SDL_main is resolved if needed. 487*b2055c35SXin Li AC_LINK_IFELSE( 488*b2055c35SXin Li [AC_LANG_SOURCE([ 489*b2055c35SXin Li #include <$sdl_header> 490*b2055c35SXin Li int main(int argc, char** argv) { 491*b2055c35SXin Li SDL_Init(0); 492*b2055c35SXin Li return 0; 493*b2055c35SXin Li }])], 494*b2055c35SXin Li [SDL_LIBS="$LDFLAGS $LIBS" 495*b2055c35SXin Li SDL_INCLUDES="$SDL_INCLUDES -DWEBP_HAVE_SDL" 496*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_SDL, [1], 497*b2055c35SXin Li [Set to 1 if SDL library is installed]) 498*b2055c35SXin Li sdl_support=yes] 499*b2055c35SXin Li ) 500*b2055c35SXin Li if test x"$sdl_support" = "xyes"; then 501*b2055c35SXin Li break 502*b2055c35SXin Li fi 503*b2055c35SXin Li done 504*b2055c35SXin Li # LIBS is restored by LIBCHECK_EPILOGUE 505*b2055c35SXin Li AC_LANG_POP 506*b2055c35SXin Li if test x"$sdl_header" = "xSDL.h"; then 507*b2055c35SXin Li SDL_INCLUDES="$SDL_INCLUDES -DWEBP_HAVE_JUST_SDL_H" 508*b2055c35SXin Li fi 509*b2055c35SXin Li fi 510*b2055c35SXin Li LIBCHECK_EPILOGUE([SDL]) 511*b2055c35SXin Li 512*b2055c35SXin Li if test x"$sdl_support" = "xyes"; then 513*b2055c35SXin Li build_vwebp_sdl=yes 514*b2055c35SXin Li else 515*b2055c35SXin Li AC_MSG_NOTICE([Not building vwebp-sdl. SDL library is required.]) 516*b2055c35SXin Li fi 517*b2055c35SXin Li]) 518*b2055c35SXin Li 519*b2055c35SXin LiAM_CONDITIONAL([BUILD_VWEBP_SDL], [test "$build_vwebp_sdl" = "yes"]) 520*b2055c35SXin Li 521*b2055c35SXin Lidnl === check for PNG support === 522*b2055c35SXin Li 523*b2055c35SXin LiAC_ARG_ENABLE([png], AS_HELP_STRING([--disable-png], 524*b2055c35SXin Li [Disable detection of PNG format support 525*b2055c35SXin Li @<:@default=auto@:>@])) 526*b2055c35SXin LiAS_IF([test "x$enable_png" != "xno"], [ 527*b2055c35SXin Li CLEAR_LIBVARS([PNG]) 528*b2055c35SXin Li AC_PATH_PROGS([LIBPNG_CONFIG], 529*b2055c35SXin Li [libpng-config libpng16-config libpng15-config libpng14-config \ 530*b2055c35SXin Li libpng12-config]) 531*b2055c35SXin Li if test -n "$LIBPNG_CONFIG"; then 532*b2055c35SXin Li PNG_INCLUDES=`$LIBPNG_CONFIG --cflags` 533*b2055c35SXin Li PNG_LIBS="`$LIBPNG_CONFIG --ldflags`" 534*b2055c35SXin Li fi 535*b2055c35SXin Li 536*b2055c35SXin Li WITHLIB_OPTION([png], [PNG]) 537*b2055c35SXin Li 538*b2055c35SXin Li LIBCHECK_PROLOGUE([PNG]) 539*b2055c35SXin Li AC_CHECK_HEADER(png.h, 540*b2055c35SXin Li AC_SEARCH_LIBS(png_get_libpng_ver, [png], 541*b2055c35SXin Li [test "$ac_cv_search_png_get_libpng_ver" = "none required" \ 542*b2055c35SXin Li || PNG_LIBS="$PNG_LIBS $ac_cv_search_png_get_libpng_ver" 543*b2055c35SXin Li PNG_INCLUDES="$PNG_INCLUDES -DWEBP_HAVE_PNG" 544*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_PNG, [1], 545*b2055c35SXin Li [Set to 1 if PNG library is installed]) 546*b2055c35SXin Li png_support=yes 547*b2055c35SXin Li ], 548*b2055c35SXin Li [AC_MSG_WARN(Optional png library not found) 549*b2055c35SXin Li PNG_LIBS="" 550*b2055c35SXin Li PNG_INCLUDES="" 551*b2055c35SXin Li ], 552*b2055c35SXin Li [$MATH_LIBS]), 553*b2055c35SXin Li [AC_MSG_WARN(png library not available - no png.h) 554*b2055c35SXin Li PNG_LIBS="" 555*b2055c35SXin Li PNG_INCLUDES="" 556*b2055c35SXin Li ], 557*b2055c35SXin Li ) 558*b2055c35SXin Li LIBCHECK_EPILOGUE([PNG]) 559*b2055c35SXin Li]) 560*b2055c35SXin Li 561*b2055c35SXin Lidnl === check for JPEG support === 562*b2055c35SXin Li 563*b2055c35SXin LiAC_ARG_ENABLE([jpeg], 564*b2055c35SXin Li AS_HELP_STRING([--disable-jpeg], 565*b2055c35SXin Li [Disable detection of JPEG format support 566*b2055c35SXin Li @<:@default=auto@:>@])) 567*b2055c35SXin LiAS_IF([test "x$enable_jpeg" != "xno"], [ 568*b2055c35SXin Li CLEAR_LIBVARS([JPEG]) 569*b2055c35SXin Li WITHLIB_OPTION([jpeg], [JPEG]) 570*b2055c35SXin Li 571*b2055c35SXin Li LIBCHECK_PROLOGUE([JPEG]) 572*b2055c35SXin Li AC_CHECK_HEADER(jpeglib.h, 573*b2055c35SXin Li AC_CHECK_LIB(jpeg, jpeg_set_defaults, 574*b2055c35SXin Li [JPEG_LIBS="$JPEG_LIBS -ljpeg" 575*b2055c35SXin Li JPEG_INCLUDES="$JPEG_INCLUDES -DWEBP_HAVE_JPEG" 576*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_JPEG, [1], 577*b2055c35SXin Li [Set to 1 if JPEG library is installed]) 578*b2055c35SXin Li jpeg_support=yes 579*b2055c35SXin Li ], 580*b2055c35SXin Li AC_MSG_WARN(Optional jpeg library not found), 581*b2055c35SXin Li [$MATH_LIBS]), 582*b2055c35SXin Li AC_MSG_WARN(jpeg library not available - no jpeglib.h) 583*b2055c35SXin Li ) 584*b2055c35SXin Li LIBCHECK_EPILOGUE([JPEG]) 585*b2055c35SXin Li]) 586*b2055c35SXin Li 587*b2055c35SXin Lidnl === check for TIFF support === 588*b2055c35SXin Li 589*b2055c35SXin LiAC_ARG_ENABLE([tiff], 590*b2055c35SXin Li AS_HELP_STRING([--disable-tiff], 591*b2055c35SXin Li [Disable detection of TIFF format support 592*b2055c35SXin Li @<:@default=auto@:>@])) 593*b2055c35SXin LiAS_IF([test "x$enable_tiff" != "xno"], [ 594*b2055c35SXin Li CLEAR_LIBVARS([TIFF]) 595*b2055c35SXin Li WITHLIB_OPTION([tiff], [TIFF]) 596*b2055c35SXin Li 597*b2055c35SXin Li LIBCHECK_PROLOGUE([TIFF]) 598*b2055c35SXin Li AC_CHECK_HEADER(tiffio.h, 599*b2055c35SXin Li AC_CHECK_LIB(tiff, TIFFGetVersion, 600*b2055c35SXin Li [TIFF_LIBS="$TIFF_LIBS -ltiff" 601*b2055c35SXin Li TIFF_INCLUDES="$TIFF_INCLUDES -DWEBP_HAVE_TIFF" 602*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_TIFF, [1], 603*b2055c35SXin Li [Set to 1 if TIFF library is installed]) 604*b2055c35SXin Li tiff_support=yes 605*b2055c35SXin Li ], 606*b2055c35SXin Li AC_MSG_WARN(Optional tiff library not found), 607*b2055c35SXin Li [$MATH_LIBS]), 608*b2055c35SXin Li AC_MSG_WARN(tiff library not available - no tiffio.h) 609*b2055c35SXin Li ) 610*b2055c35SXin Li LIBCHECK_EPILOGUE([TIFF]) 611*b2055c35SXin Li]) 612*b2055c35SXin Li 613*b2055c35SXin Lidnl === check for GIF support === 614*b2055c35SXin Li 615*b2055c35SXin LiAC_ARG_ENABLE([gif], AS_HELP_STRING([--disable-gif], 616*b2055c35SXin Li [Disable detection of GIF format support 617*b2055c35SXin Li @<:@default=auto@:>@])) 618*b2055c35SXin LiAS_IF([test "x$enable_gif" != "xno"], [ 619*b2055c35SXin Li CLEAR_LIBVARS([GIF]) 620*b2055c35SXin Li WITHLIB_OPTION([gif], [GIF]) 621*b2055c35SXin Li 622*b2055c35SXin Li LIBCHECK_PROLOGUE([GIF]) 623*b2055c35SXin Li AC_CHECK_HEADER(gif_lib.h, 624*b2055c35SXin Li AC_CHECK_LIB([gif], [DGifOpenFileHandle], 625*b2055c35SXin Li [GIF_LIBS="$GIF_LIBS -lgif" 626*b2055c35SXin Li AC_DEFINE(WEBP_HAVE_GIF, [1], 627*b2055c35SXin Li [Set to 1 if GIF library is installed]) 628*b2055c35SXin Li gif_support=yes 629*b2055c35SXin Li ], 630*b2055c35SXin Li AC_MSG_WARN(Optional gif library not found), 631*b2055c35SXin Li [$MATH_LIBS]), 632*b2055c35SXin Li AC_MSG_WARN(gif library not available - no gif_lib.h) 633*b2055c35SXin Li ) 634*b2055c35SXin Li LIBCHECK_EPILOGUE([GIF]) 635*b2055c35SXin Li 636*b2055c35SXin Li if test "$gif_support" = "yes" -a \ 637*b2055c35SXin Li "$enable_libwebpdemux" = "yes"; then 638*b2055c35SXin Li build_anim_diff=yes 639*b2055c35SXin Li else 640*b2055c35SXin Li AC_MSG_NOTICE( 641*b2055c35SXin Li [Not building anim_diff. libgif and --enable-libwebpdemux are required.]) 642*b2055c35SXin Li fi 643*b2055c35SXin Li 644*b2055c35SXin Li if test "$gif_support" = "yes" -a \ 645*b2055c35SXin Li "$enable_libwebpmux" = "yes"; then 646*b2055c35SXin Li build_gif2webp=yes 647*b2055c35SXin Li else 648*b2055c35SXin Li AC_MSG_NOTICE( 649*b2055c35SXin Li [Not building gif2webp. libgif and --enable-libwebpmux are required.]) 650*b2055c35SXin Li fi 651*b2055c35SXin Li]) 652*b2055c35SXin LiAM_CONDITIONAL([BUILD_ANIMDIFF], [test "${build_anim_diff}" = "yes"]) 653*b2055c35SXin LiAM_CONDITIONAL([BUILD_GIF2WEBP], [test "${build_gif2webp}" = "yes"]) 654*b2055c35SXin Li 655*b2055c35SXin Liif test "$enable_libwebpdemux" = "yes" -a "$enable_libwebpmux" = "yes"; then 656*b2055c35SXin Li build_img2webp=yes 657*b2055c35SXin Lielse 658*b2055c35SXin Li AC_MSG_NOTICE( 659*b2055c35SXin Li m4_normalize([Not building img2webp. 660*b2055c35SXin Li --enable-libwebpdemux & --enable-libwebpmux are required.])) 661*b2055c35SXin Lifi 662*b2055c35SXin LiAM_CONDITIONAL([BUILD_IMG2WEBP], [test "${build_img2webp}" = "yes"]) 663*b2055c35SXin Li 664*b2055c35SXin Liif test "$enable_libwebpmux" = "yes"; then 665*b2055c35SXin Li build_webpinfo=yes 666*b2055c35SXin Lielse 667*b2055c35SXin Li AC_MSG_NOTICE([Not building webpinfo. --enable-libwebpdemux is required.]) 668*b2055c35SXin Lifi 669*b2055c35SXin LiAM_CONDITIONAL([BUILD_WEBPINFO], [test "${build_webpinfo}" = "yes"]) 670*b2055c35SXin Li 671*b2055c35SXin Lidnl === check for WIC support === 672*b2055c35SXin Li 673*b2055c35SXin LiAC_ARG_ENABLE([wic], 674*b2055c35SXin Li AS_HELP_STRING([--disable-wic], 675*b2055c35SXin Li [Disable Windows Imaging Component (WIC) detection. 676*b2055c35SXin Li @<:@default=auto@:>@]),, 677*b2055c35SXin Li [enable_wic=yes]) 678*b2055c35SXin Li 679*b2055c35SXin Licase $host_os in 680*b2055c35SXin Limingw*) 681*b2055c35SXin Liif test "$enable_wic" = "yes"; then 682*b2055c35SXin Li AC_CHECK_HEADERS([wincodec.h shlwapi.h windows.h]) 683*b2055c35SXin Li if test "$ac_cv_header_wincodec_h" = "yes"; then 684*b2055c35SXin Li AC_MSG_CHECKING(for Windows Imaging Component support) 685*b2055c35SXin Li SAVED_LIBS=$LIBS 686*b2055c35SXin Li LIBS="-lshlwapi -lole32 $LIBS" 687*b2055c35SXin Li # match include structure from [cd]webp.c 688*b2055c35SXin Li wic_headers=" 689*b2055c35SXin Li #define INITGUID 690*b2055c35SXin Li #define CINTERFACE 691*b2055c35SXin Li #define COBJMACROS 692*b2055c35SXin Li #define _WIN32_IE 0x500 693*b2055c35SXin Li 694*b2055c35SXin Li #include <shlwapi.h> 695*b2055c35SXin Li #include <windows.h> 696*b2055c35SXin Li #include <wincodec.h> 697*b2055c35SXin Li " 698*b2055c35SXin Li # test for functions from each lib and the GUID is created properly 699*b2055c35SXin Li wic_main=" 700*b2055c35SXin Li int main(void) { 701*b2055c35SXin Li CLSID_WICImagingFactory; 702*b2055c35SXin Li CoInitialize(NULL); 703*b2055c35SXin Li SHCreateStreamOnFile(NULL, 0, NULL); 704*b2055c35SXin Li return 0; 705*b2055c35SXin Li } 706*b2055c35SXin Li " 707*b2055c35SXin Li AC_LANG_PUSH(C) 708*b2055c35SXin Li AC_LINK_IFELSE( 709*b2055c35SXin Li [AC_LANG_SOURCE([ 710*b2055c35SXin Li $wic_headers 711*b2055c35SXin Li $wic_main])], 712*b2055c35SXin Li [wic_support=yes], 713*b2055c35SXin Li [wic_support=no] 714*b2055c35SXin Li ) 715*b2055c35SXin Li AC_LANG_POP 716*b2055c35SXin Li 717*b2055c35SXin Li test "$wic_support" = "yes" || LIBS=$SAVED_LIBS 718*b2055c35SXin Li AC_MSG_RESULT(${wic_support-no}) 719*b2055c35SXin Li fi 720*b2055c35SXin Lifi 721*b2055c35SXin Liesac 722*b2055c35SXin Li 723*b2055c35SXin Lidnl === If --enable-swap-16bit-csp is defined, add -DWEBP_SWAP_16BIT_CSP=1 724*b2055c35SXin Li 725*b2055c35SXin LiUSE_SWAP_16BIT_CSP="" 726*b2055c35SXin LiAC_MSG_CHECKING(if --enable-swap-16bit-csp option is specified) 727*b2055c35SXin LiAC_ARG_ENABLE([swap-16bit-csp], 728*b2055c35SXin Li AS_HELP_STRING([--enable-swap-16bit-csp], 729*b2055c35SXin Li [Enable byte swap for 16 bit colorspaces])) 730*b2055c35SXin Liif test "$enable_swap_16bit_csp" = "yes"; then 731*b2055c35SXin Li USE_SWAP_16BIT_CSP="-DWEBP_SWAP_16BIT_CSP=1" 732*b2055c35SXin Lifi 733*b2055c35SXin LiAC_MSG_RESULT(${enable_swap_16bit_csp-no}) 734*b2055c35SXin LiAC_SUBST(USE_SWAP_16BIT_CSP) 735*b2055c35SXin Li 736*b2055c35SXin Lidnl === If --disable-near-lossless is defined, add -DWEBP_NEAR_LOSSLESS=0 737*b2055c35SXin Li 738*b2055c35SXin LiAC_DEFINE(WEBP_NEAR_LOSSLESS, [1], [Enable near lossless encoding]) 739*b2055c35SXin LiAC_MSG_CHECKING(if --disable-near-lossless option is specified) 740*b2055c35SXin LiAC_ARG_ENABLE([near_lossless], 741*b2055c35SXin Li AS_HELP_STRING([--disable-near-lossless], 742*b2055c35SXin Li [Disable near lossless encoding]), 743*b2055c35SXin Li [], [enable_near_lossless=yes]) 744*b2055c35SXin Liif test "$enable_near_lossless" = "no"; then 745*b2055c35SXin Li AC_DEFINE(WEBP_NEAR_LOSSLESS, [0], [Enable near lossless encoding]) 746*b2055c35SXin Li AC_MSG_RESULT([yes]) 747*b2055c35SXin Lielse 748*b2055c35SXin Li AC_MSG_RESULT([no]) 749*b2055c35SXin Lifi 750*b2055c35SXin Li 751*b2055c35SXin Lidnl ========================= 752*b2055c35SXin Li 753*b2055c35SXin Lidnl Add an empty webp_libname_prefix variable for use in *.pc.in. 754*b2055c35SXin LiAC_SUBST([webp_libname_prefix]) 755*b2055c35SXin LiAC_CONFIG_MACRO_DIR([m4]) 756*b2055c35SXin LiAC_CONFIG_HEADERS([src/webp/config.h]) 757*b2055c35SXin LiAC_CONFIG_FILES([Makefile src/Makefile man/Makefile \ 758*b2055c35SXin Li examples/Makefile extras/Makefile imageio/Makefile \ 759*b2055c35SXin Li sharpyuv/Makefile sharpyuv/libsharpyuv.pc \ 760*b2055c35SXin Li src/dec/Makefile src/enc/Makefile src/dsp/Makefile \ 761*b2055c35SXin Li src/demux/Makefile src/mux/Makefile \ 762*b2055c35SXin Li src/utils/Makefile \ 763*b2055c35SXin Li src/libwebp.pc src/libwebpdecoder.pc \ 764*b2055c35SXin Li src/demux/libwebpdemux.pc src/mux/libwebpmux.pc]) 765*b2055c35SXin Li 766*b2055c35SXin Lidnl fix exports from MinGW builds 767*b2055c35SXin LiAC_CONFIG_COMMANDS_POST([$SED -i 's/-DDLL_EXPORT/-DWEBP_DLL/' config.status]) 768*b2055c35SXin LiAC_OUTPUT 769*b2055c35SXin Li 770*b2055c35SXin LiAC_MSG_NOTICE([ 771*b2055c35SXin LiWebP Configuration Summary 772*b2055c35SXin Li-------------------------- 773*b2055c35SXin Li 774*b2055c35SXin LiShared libraries: ${enable_shared} 775*b2055c35SXin LiStatic libraries: ${enable_static} 776*b2055c35SXin LiThreading support: ${enable_threading-no} 777*b2055c35SXin Lilibwebp: yes 778*b2055c35SXin Lilibwebpdecoder: ${enable_libwebpdecoder-no} 779*b2055c35SXin Lilibwebpdemux: ${enable_libwebpdemux-no} 780*b2055c35SXin Lilibwebpmux: ${enable_libwebpmux-no} 781*b2055c35SXin Lilibwebpextras: ${enable_libwebpextras-no} 782*b2055c35SXin Li 783*b2055c35SXin LiTools: 784*b2055c35SXin Licwebp : ${enable_libwebpdemux-no} 785*b2055c35SXin Li Input format support 786*b2055c35SXin Li ==================== 787*b2055c35SXin Li JPEG : ${jpeg_support-no} 788*b2055c35SXin Li PNG : ${png_support-no} 789*b2055c35SXin Li TIFF : ${tiff_support-no} 790*b2055c35SXin Li WIC : ${wic_support-no} 791*b2055c35SXin Lidwebp : ${enable_libwebpdemux-no} 792*b2055c35SXin Li Output format support 793*b2055c35SXin Li ===================== 794*b2055c35SXin Li PNG : ${png_support-no} 795*b2055c35SXin Li WIC : ${wic_support-no} 796*b2055c35SXin LiGIF support : ${gif_support-no} 797*b2055c35SXin Lianim_diff : ${build_anim_diff-no} 798*b2055c35SXin Ligif2webp : ${build_gif2webp-no} 799*b2055c35SXin Liimg2webp : ${build_img2webp-no} 800*b2055c35SXin Liwebpmux : ${enable_libwebpmux-no} 801*b2055c35SXin Livwebp : ${build_vwebp-no} 802*b2055c35SXin Liwebpinfo : ${build_webpinfo-no} 803*b2055c35SXin LiSDL support : ${sdl_support-no} 804*b2055c35SXin Livwebp_sdl : ${build_vwebp_sdl-no} 805*b2055c35SXin Li]) 806