go-libwebp

Experimental translation from libwebp to Go source.
Log | Files | Refs | README | LICENSE

configure.ac (29850B)


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