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 ])