1dnl Autoconf settings for vlc 2 3AC_COPYRIGHT([Copyright 1999-2021 VLC authors and VideoLAN]) 4 5AC_INIT(vlc, 3.0.16) 6VERSION_MAJOR=3 7VERSION_MINOR=0 8VERSION_REVISION=16 9VERSION_EXTRA=0 10VERSION_DEV= 11 12PKGDIR="vlc" 13AC_SUBST(PKGDIR) 14 15CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`" 16CODENAME="Vetinari" 17COPYRIGHT_YEARS="1996-2021" 18 19AC_CONFIG_SRCDIR(src/libvlc.c) 20AC_CONFIG_AUX_DIR(autotools) 21AC_CONFIG_MACRO_DIR(m4) 22AC_CONFIG_LIBOBJ_DIR(compat) 23AC_CANONICAL_BUILD 24AC_CANONICAL_HOST 25AC_PRESERVE_HELP_ORDER 26 27AM_INIT_AUTOMAKE(tar-ustar color-tests foreign) 28AC_CONFIG_HEADERS([config.h]) 29 30AM_SILENT_RULES([yes]) 31AM_MAINTAINER_MODE([enable]) 32 33dnl 34dnl Directories 35dnl 36dnl vlcincludedir="\${includedir}/\${PKGDIR}" 37dnl AC_SUBST(vlcincludedir) 38vlcdatadir="\${datadir}/\${PKGDIR}" 39AC_SUBST(vlcdatadir) 40vlclibdir="\${libdir}/\${PKGDIR}" 41AC_SUBST(vlclibdir) 42 43dnl 44dnl Check for tools 45dnl 46AC_PROG_CC 47AC_USE_SYSTEM_EXTENSIONS 48VLC_PROG_CC_C11 49AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.]) 50AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.]) 51AH_TOP([ 52#ifndef _REENTRANT 53# define _REENTRANT 54#endif 55]) 56AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.]) 57AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.]) 58AC_DEFINE([WIN32_LEAN_AND_MEAN],, [Define to limit the scope of <windows.h>.]) 59 60AM_PROG_CC_C_O 61AC_PROG_CXX 62AC_PROG_CPP 63AC_PROG_OBJC 64AC_PROG_EGREP 65AC_PROG_MAKE_SET 66AC_PROG_INSTALL 67AM_PROG_AS 68AC_PROG_LEX 69AC_PROG_YACC 70 71AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files]) 72AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :) 73AC_ARG_VAR([BUILDCC], [Build system C11 or C99 compiler command]) 74AC_CHECK_PROGS(BUILDCC, [c11-gcc c11 c99-gcc c99], [false]) 75AS_IF([test "$BUILDCC" = "false"], [ 76 AC_MSG_ERROR([Cannot find native C99 compiler: please define BUILDCC.]) 77]) 78 79dnl Check for compiler properties 80AC_C_CONST 81AC_C_INLINE 82AC_C_RESTRICT 83AX_CXX_COMPILE_STDCXX_11(noext, mandatory) 84 85dnl Extend the --help string at the current spot. 86AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])]) 87 88dnl Allow binary package maintainer to pass a custom string to avoid 89dnl cache problem 90AC_ARG_WITH(binary-version, 91 AS_HELP_STRING([--with-binary-version=STRING], 92 [To avoid plugins cache problem between binary version]),[],[]) 93AS_IF([test -n "${with_binary_version}"],[ 94 AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"], 95 [Binary specific version]) 96]) 97 98dnl Prevent clang from accepting unknown flags with a mere warning 99AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CFLAGS]) 100AX_APPEND_COMPILE_FLAGS([-Werror=unknown-warning-option -Werror=invalid-command-line-argument], [CXXFLAGS]) 101 102dnl 103dnl Check the operating system 104dnl 105HAVE_WIN64="0" 106HAVE_IOS="0" 107HAVE_OSX="0" 108HAVE_TVOS="0" 109 110case "${host_os}" in 111 "") 112 SYS=unknown 113 ;; 114 linux*) 115 SYS=linux 116 ;; 117 bsdi*) 118 SYS=bsdi 119 CFLAGS="${CFLAGS} -pthread" 120 ;; 121 freebsd*) 122 SYS=freebsd 123 CFLAGS="${CFLAGS} -pthread" 124 CPPFLAGS="${CPPFLAGS} -I/usr/local/include" 125 LDFLAGS="${LDFLAGS} -L/usr/local/lib" 126 ac_cv_ld_z_defs=no 127 ;; 128 openbsd*) 129 SYS=openbsd 130 CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/X11R6/include" 131 LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/X11R6/lib/" 132 ;; 133 netbsd*) 134 SYS=netbsd 135 ;; 136 dragonfly*) 137 SYS=dragonfly 138 ;; 139 darwin*) 140 dnl Workaround possible Xcode 11 bug 141 CFLAGS="${CFLAGS} -fno-stack-check" 142 CXXFLAGS="${CXXFLAGS} -fno-stack-check" 143 OBJCFLAGS="${OBJCFLAGS} -fno-stack-check" 144 145 dnl Force gcc "-arch" flag 146 ARCH_flag="" 147 case "${host}" in 148 i?86*) 149 ARCH_flag="-arch i386" 150 ;; 151 ppc64*) 152 ARCH_flag="-arch ppc64" 153 ;; 154 ppc*) 155 ARCH_flag="-arch ppc" 156 ;; 157 x86_64*) 158 ARCH_flag="-arch x86_64" 159 ;; 160 arm*) 161 ac_cv_c_bigendian="no" 162 ac_cv_c_attribute_packed="no" 163 ;; 164 esac 165 166 SYS=darwin 167 CFLAGS="${CFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag}" 168 CXX="${CXX} -stdlib=libc++ -std=c++11" 169 CXXFLAGS="${CXXFLAGS} -D_INTL_REDIRECT_MACROS ${ARCH_flag}" 170 CPPFLAGS="${CPPFLAGS} ${ARCH_flag}" 171 OBJCFLAGS="${OBJCFLAGS} -D_INTL_REDIRECT_MACROS -std=gnu11 ${ARCH_flag} -Werror=partial-availability" 172 LDFLAGS="${LDFLAGS} -Wl,-headerpad_max_install_names ${ARCH_flag}" 173 VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup,-framework,AppKit]) 174 VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation,-framework,CoreServices]) 175 176 AC_EGREP_CPP(yes, 177 [#import <TargetConditionals.h> 178 #if TARGET_OS_IPHONE 179 yes 180 #endif], 181 [HAVE_IOS="1"], 182 [HAVE_OSX="1"]) 183 184 AC_EGREP_CPP(yes, 185 [#import <TargetConditionals.h> 186 #if TARGET_OS_TV 187 yes 188 #endif], 189 [HAVE_TVOS="1" 190 HAVE_IOS="0" 191 HAVE_OSX="0" 192 ],) 193 194 dnl 195 dnl Handle Mac OS X SDK flags 196 dnl 197 AC_ARG_WITH(macosx-sdk, 198 [AS_HELP_STRING([--with-macosx-sdk=DIR], 199 [compile using the SDK in DIR])]) 200 if test "${with_macosx_sdk}" != "" ; then 201 test ! -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found]) 202 CPP="${CPP} -isysroot ${with_macosx_sdk}" 203 CC="${CC} -isysroot ${with_macosx_sdk}" 204 CXX="${CXX} -isysroot ${with_macosx_sdk}" 205 OBJC="${OBJC} -isysroot ${with_macosx_sdk}" 206 LD="${LD} -syslibroot ${with_macosx_sdk}" 207 fi 208 AC_ARG_WITH(macosx-version-min, 209 [AS_HELP_STRING([--with-macosx-version-min=VERSION], 210 [compile for Mac OS X VERSION and above])]) 211 if test "${with_macosx_version_min}" != "" ; then 212 CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}" 213 CC="${CC} -mmacosx-version-min=${with_macosx_version_min}" 214 CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}" 215 OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}" 216 LD="${LD} -mmacosx_version_min=${with_macosx_version_min}" 217 fi 218 ;; 219 *mingw32* | *cygwin* | *wince* | *mingwce*) 220 dnl Force libtool to not link to (shared) libgcc_s when detecting C++ dependencies 221 dnl When doing this test with -static-libgcc it will link on (static) libgcc_eh 222 CXXFLAGS="${CXXFLAGS} -static-libgcc" 223 AC_CHECK_TOOL(WINDRES, windres, :) 224 AC_CHECK_TOOL(OBJCOPY, objcopy, :) 225 AC_PREPROC_IFELSE([AC_LANG_PROGRAM( 226 [[#ifdef _WIN32_WINNT 227 # error _WIN32_WINNT already defined 228 #else 229 # include <windows.h> 230 # if defined(_WIN32_WINNT) && _WIN32_WINNT >= 0x0502 231 # error _WIN32_WINNT toolchain default high enough 232 # endif 233 #endif 234 ]],[[;]]) 235 ],[ 236 AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows XP SP2 APIs.]) 237 ]) 238 AC_MSG_CHECKING([if libsynchronization is needed]) 239 AC_PREPROC_IFELSE([AC_LANG_PROGRAM( 240 [[#if _WIN32_WINNT >= 0x0602 241 # error building for Win8+ and above 242 #endif 243 ]],[[;]]) 244 ],[ 245 AC_MSG_RESULT([no]) 246 ],[ 247 AC_MSG_RESULT([yes]) 248 VLC_ADD_LIBS([libvlccore], [-lsynchronization]) 249 ]) 250 AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.]) 251 AC_DEFINE([_UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.]) 252 AC_DEFINE([UNICODE], [1], [Define to 1 for Unicode (Wide Chars) APIs.]) 253 AC_DEFINE([_ISOC99_SOURCE], [1], [Extensions to ISO C89 from ISO C99.]) 254 AC_DEFINE([_ISOC11_SOURCE], [1], [Extensions to ISO C99 from ISO C11.]) 255 AC_DEFINE([_POSIX_SOURCE], [1], [IEEE Std 1003.1.]) 256 AC_DEFINE([_POSIX_C_SOURCE], [200809L], [IEEE Std 1003.1.]) 257 AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition]) 258 AC_DEFINE([_XOPEN_SOURCE_EXTENDED], [1], [XPG things and X/Open Unix extensions.]) 259 AC_DEFINE([_BSD_SOURCE], [1], [ISO C, POSIX, and 4.3BSD things.]) 260 AC_DEFINE([_SVID_SOURCE], [1], [ISO C, POSIX, and SVID things.]) 261 262 case "${host_os}" in 263 *mingw32*) 264 SYS=mingw32 265 ;; 266 *cygwin*) 267 dnl Check if we are using the mno-cygwin mode in which case we are 268 dnl actually dealing with a mingw32 compiler. 269 AC_EGREP_CPP(yes, 270 [#ifdef _WIN32 271 yes 272 #endif], 273 SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin])) 274 ;; 275 esac 276 277 if test "${SYS}" = "mingw32"; then 278 # DEP, ASLR, NO SEH 279 LDFLAGS="${LDFLAGS} -Wl,--nxcompat -Wl,--no-seh -Wl,--dynamicbase" 280 281 AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos) 282 ac_default_prefix="`pwd`/_win32" 283 DESTDIR="`pwd`/_win32/" 284 285 dnl 286 dnl NSIS/MSI Installer prefix and WIN64 287 dnl 288 case "${host}" in 289 amd64*|x86_64*) 290 HAVE_WIN64="1" 291 WINDOWS_ARCH="x64" 292 PROGRAMFILES="PROGRAMFILES64" 293 LDFLAGS="${LDFLAGS} -Wl,--high-entropy-va -Wl,--image-base,0x140000000" 294 ;; 295 *) 296 WINDOWS_ARCH="x86" 297 PROGRAMFILES="PROGRAMFILES" 298 ;; 299 esac 300 AC_SUBST(WINDOWS_ARCH) 301 AC_SUBST(PROGRAMFILES) 302 303 fi 304 ;; 305 *nto*) 306 SYS=nto 307 ;; 308 solaris*) 309 SYS=solaris 310 ;; 311 hpux*) 312 SYS=hpux 313 ;; 314 *os2*) 315 SYS=os2 316 LDFLAGS="${LDFLAGS} -Zomf -Zbin-files -Zargs-wild -Zhigh-mem" 317 AC_LIBOBJ([freeaddrinfo]) 318 AC_LIBOBJ([gai_strerror]) 319 AC_CHECK_FUNCS([if_nametoindex]) 320 ;; 321 *nacl*) 322 SYS=nacl 323 AC_DEFINE([_XOPEN_SOURCE], [700], [POSIX and XPG 7th edition]) 324 AC_LIBOBJ([sigwait]) 325 AC_LIBOBJ([recvmsg]) 326 AC_LIBOBJ([sendmsg]) 327 ;; 328 *) 329 SYS="${host_os}" 330 ;; 331esac 332 333dnl WinRT 334AC_ARG_ENABLE(winstore_app, 335 AS_HELP_STRING([--enable-winstore-app], 336 [Build targetted for Windows Store apps (default disabled)])) 337 338vlc_winstore_app=0 339AS_IF([test "${SYS}" = "mingw32"],[ 340 LIBCOM="-lole32" 341 AS_IF([test "${enable_winstore_app}" = "yes"], [ 342 vlc_winstore_app=1 343 LIBCOM="" 344 VLC_ADD_LIBS([libvlccore], [-lruntimeobject]) 345 AC_LIBOBJ([gai_strerror]) 346 ],[]) 347 AC_SUBST(LIBCOM) 348 ]) 349AC_DEFINE_UNQUOTED(VLC_WINSTORE_APP, ${vlc_winstore_app}, [Define to 1 if you want to build for Windows Store apps]) 350 351vlc_build_pdb=0 352AC_ARG_ENABLE([pdb], 353 AS_HELP_STRING([--enable-pdb], 354 [Build PDB files for windows targets (default off)])) 355AS_IF([test "${SYS}" = "mingw32"],[ 356 AS_IF([test "${enable_pdb}" = "yes"], [ 357 vlc_build_pdb=1 358 AX_APPEND_FLAG([-g -gcodeview],[CFLAGS]) 359 AX_APPEND_FLAG([-g -gcodeview],[CXXFLAGS]) 360 LDFLAGS="${LDFLAGS} -Wl,-pdb=" 361 ],[]) 362]) 363 364AM_CONDITIONAL(HAVE_LINUX, test "${SYS}" = "linux") 365AM_CONDITIONAL(HAVE_OS2, test "${SYS}" = "os2") 366 367AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin") 368AM_CONDITIONAL(HAVE_IOS, test "${HAVE_IOS}" = "1") 369AM_CONDITIONAL(HAVE_OSX, test "${HAVE_OSX}" = "1") 370AM_CONDITIONAL(HAVE_TVOS, test "${HAVE_TVOS}" = "1") 371 372AM_CONDITIONAL(HAVE_NACL, test "${SYS}" = "nacl") 373AM_CONDITIONAL(HAVE_LIBANL, test "${HAVE_LIBANL}" = "1") 374 375AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32") 376AM_CONDITIONAL(HAVE_WIN64, test "${HAVE_WIN64}" = "1") dnl Only used for the packaging 377AM_CONDITIONAL([HAVE_WINSTORE], [test "$vlc_winstore_app" = "1"]) 378AM_CONDITIONAL([HAVE_WIN32_DESKTOP], [test "${SYS}" = "mingw32" -a "$vlc_winstore_app" = "0"]) 379AM_CONDITIONAL([ENABLE_PDB], [test "$vlc_build_pdb" = "1"]) 380 381dnl 382dnl Sadly autoconf does not think about testing foo.exe when ask to test 383dnl for program foo on win32 384case "${build_os}" in 385 cygwin|msys|mingw32) 386 ac_executable_extensions=".exe" 387 BUILDEXEEXT=".exe" 388 ;; 389 os2*) 390 BUILDEXEEXT=".exe" 391 ;; 392 *) 393 ;; 394esac 395AC_SUBST(BUILDEXEEXT) 396 397dnl Android is linux, but a bit different 398AS_IF([test "$SYS" = linux],[ 399 AC_MSG_CHECKING([for an Android system]) 400 AC_PREPROC_IFELSE([AC_LANG_PROGRAM( 401 [[#ifndef __ANDROID__ 402 # error Not Android 403 #endif 404 ]],[[;]]) 405 ],[ 406 HAVE_ANDROID="1" 407 AC_MSG_RESULT([yes]) 408 ],[ 409 AC_MSG_RESULT([no]) 410 ]) 411]) 412AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1") 413 414dnl Tizen (minimum SDK version: 2.3) 415AS_IF([test "$SYS" = linux],[ 416 AC_MSG_CHECKING([for Tizen]) 417 AC_PREPROC_IFELSE([AC_LANG_PROGRAM( 418 [[#include <tizen.h> 419 ]],[[;]]) 420 ],[ 421 HAVE_TIZEN="1" 422 AC_DEFINE([HAVE_TIZEN_SDK], [1], [Define to 1 if vlc is built against Tizen SDK]) 423 AC_MSG_RESULT([yes]) 424 ],[ 425 AC_MSG_RESULT([no]) 426 ]) 427]) 428AM_CONDITIONAL(HAVE_TIZEN, test "${HAVE_TIZEN}" = "1") 429 430dnl 431dnl Check for the contrib directory 432dnl 433AC_ARG_WITH(contrib, 434 [AS_HELP_STRING([--with-contrib[=DIR]], 435 [search for 3rd party libraries in DIR/include and DIR/lib]) 436]) 437AC_MSG_CHECKING([for 3rd party libraries path]) 438AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [ 439 CONTRIB_DIR="${srcdir}/contrib/${host}" 440 AS_IF([test ! -d "${CONTRIB_DIR}"], [ 441 echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD 442 CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`" 443 AS_IF([test ! -d "${CONTRIB_DIR}"], [ 444 echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD 445 CONTRIB_DIR="" 446 AC_MSG_RESULT([not found]) 447 ]) 448 ]) 449], [ 450 AS_IF([test "${with_contrib}" != "no"], [ 451 CONTRIB_DIR="${with_contrib}" 452 ], [ 453 CONTRIB_DIR="" 454 AC_MSG_RESULT([disabled]) 455 ]) 456]) 457AS_IF([test -n "${CONTRIB_DIR}"], [ 458 AS_IF([test -d "${CONTRIB_DIR}/lib"],[ 459 CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd` 460 ], [ 461 echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD 462 CONTRIB_DIR="" 463 AC_MSG_RESULT([not usable]) 464 ]) 465 466]) 467AS_IF([test -n "${CONTRIB_DIR}"], [ 468 AC_MSG_RESULT([${CONTRIB_DIR}]) 469 CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include" 470 CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include" 471 CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include" 472 OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include -F${CONTRIB_DIR} -F${CONTRIB_DIR}/Frameworks" 473 export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH" 474 LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib" 475 476 AS_IF([test -z "$LUAC"], [ 477 dnl Old contribs mixed cross-tools and cross-compiled executables 478 AS_IF([test -x "${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}"], [ 479 LUAC="${CONTRIB_DIR}/bin/luac${BUILDEXEEXT}" 480 ]) 481 482 dnl Newer contribs follow usual name space rules 483 AS_IF([test -x "${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}"], [ 484 LUAC="${CONTRIB_DIR}/../bin/${host_alias}-luac${BUILDEXEEXT}" 485 ]) 486 ]) 487 488 AS_IF([test "${SYS}" = "darwin"], [ 489 export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH" 490 export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH" 491 ]) 492], [ 493 AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [ 494 AC_MSG_ERROR([Third party libraries not found!]) 495 ]) 496]) 497AC_SUBST(CONTRIB_DIR) 498 499dnl Add extras/tools to the PATH 500TOOLS_DIR="${srcdir}/extras/tools/build/bin" 501AS_IF([test -d "${TOOLS_DIR}"], [ 502 TOOLS_DIR=`cd "${TOOLS_DIR}" && pwd` 503 export PATH="${TOOLS_DIR}":$PATH 504]) 505 506dnl 507dnl Libtool 508dnl It's very bad, but our former custom system was worst 509dnl -- Courmisch 510dnl 511 512dnl override platform specific check for dependent libraries 513dnl otherwise libtool linking of shared libraries will 514dnl fail on anything other than pass_all. 515AC_CACHE_VAL(lt_cv_deplibs_check_method, 516 [lt_cv_deplibs_check_method=pass_all]) 517 518LT_INIT([dlopen win32-dll shared disable-static]) 519LT_LANG([C++]) 520LT_LANG([Windows Resource]) 521 522DOLT 523 524lt_cv_deplibs_check_method=pass_all 525 526AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [ 527 AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.]) 528]) 529 530dnl 531dnl Gettext stuff 532dnl 533AM_GNU_GETTEXT_VERSION([0.19.8]) 534AM_GNU_GETTEXT([external], [need-formatstring-macros]) 535 536dnl 537dnl Iconv stuff 538dnl 539AM_ICONV 540 541dnl 542dnl checks for mingw 543AS_IF([test "${SYS}" = "mingw32"], [ 544 545AC_PREPROC_IFELSE([AC_LANG_SOURCE([ 546#if !defined(__MINGW32__) 547# error Not compiling with mingw 548#endif 549 ])], [ 550 551dnl Check for broken versions of mingw-runtime compatability library 552 AC_MSG_CHECKING(for broken mingw-runtime) 553 AC_PREPROC_IFELSE([AC_LANG_SOURCE([ 554#include <_mingw.h> 555#if defined(__MINGW64_VERSION_MAJOR) 556# if __MINGW64_VERSION_MAJOR < 3 557# error Attempting to use mingw-runtime with broken vsnprintf support 558# endif 559#elif __MINGW32_MAJOR_VERSION == 3 && __MINGW32_MINOR_VERSION < 15 560# error Attempting to use mingw-runtime with broken vsnprintf support 561#endif 562 ])], [ 563 AC_MSG_RESULT([ok]) 564 ], [ 565 AC_MSG_RESULT([present]) 566 AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher, or mingw-w64 version 3.0 or higher!]) 567 ]) 568 569 dnl force use of mingw provided c99 *printf over msvcrt 570 CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1" 571 572 dnl Check for the need to include the mingwex lib for mingw32 573 VLC_SAVE_FLAGS 574 AC_CHECK_LIB(mingwex,opendir, 575 AC_CHECK_LIB(mingw32,opendir,, 576 [VLC_ADD_LIBS([libvlccore],[-lmingwex])]) 577 ) 578 VLC_RESTORE_FLAGS 579 ], [ 580 AC_MSG_RESULT([Not compiling with mingw]) 581 ]) 582 583 dnl Check for fnative-struct or mms-bitfields support for mingw32 584 AX_CHECK_COMPILE_FLAG([-mms-bitfields], [ 585 AX_APPEND_FLAG([-mms-bitfields], [CFLAGS]) 586 AX_APPEND_FLAG([-mms-bitfields], [CXXFLAGS]) 587 # Check for the warning flag without "-Wno-", GCC accepts 588 # -Wno-<anything> for unsupported warnings, which can trigger 589 # other warnings instead. 590 AX_CHECK_COMPILE_FLAG([-Wincompatible-ms-struct], [ 591 AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CFLAGS]) 592 AX_APPEND_FLAG([-Wno-incompatible-ms-struct], [CXXFLAGS]) 593 ]) 594 ], [ 595 AX_CHECK_COMPILE_FLAG([-fnative-struct], [ 596 AX_APPEND_FLAG([-fnative-struct], [CFLAGS]) 597 AX_APPEND_FLAG([-fnative-struct], [CXXFLAGS]) 598 ]) 599 ]) 600]) 601 602 603dnl 604dnl Buggy glibc prevention. Purposedly not cached. 605dnl See sourceware.org bugs 5058 and 5443. 606dnl Ubuntu alone has 20 bug numbers for this... 607dnl 608AC_MSG_CHECKING(for buggy GNU/libc versions) 609AC_PREPROC_IFELSE([AC_LANG_SOURCE([ 610#include <limits.h> 611#if defined (__GLIBC__) && (__GLIBC__ == 2) \ 612 && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7) 613# error GNU/libc with dcgettext killer bug! 614#endif 615])], [ 616 AC_MSG_RESULT([not present]) 617], [ 618 AC_MSG_RESULT([found]) 619 AS_IF([test "x${enable_nls}" != "xno"], [ 620 AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable 621work-around for this. Check with your distribution vendor on how to update the 622glibc run-time. Alternatively, build with --disable-nls.]) 623 ]) 624]) 625 626dnl Plugin compilation stuff 627 628VLC_LIBRARY_SUFFIX 629 630dnl Check for system libs needed 631need_libc=false 632 633dnl Check for usual libc functions 634AC_CHECK_FUNCS([accept4 daemon fcntl flock fstatvfs fork getenv getmntent_r getpwuid_r isatty lstat memalign mkostemp mmap newlocale open_memstream openat pipe2 pread posix_fadvise posix_madvise posix_memalign setlocale stricmp strnicmp strptime uselocale]) 635AC_REPLACE_FUNCS([aligned_alloc atof atoll dirfd fdopendir ffsll flockfile fsync getdelim getpid lfind lldiv memrchr nrand48 poll recvmsg rewind sendmsg setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strnstr strsep strtof strtok_r strtoll swab tdestroy tfind timegm timespec_get strverscmp pathconf]) 636AC_REPLACE_FUNCS([gettimeofday]) 637AC_CHECK_FUNC(fdatasync,, 638 [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) 639]) 640 641VLC_REPLACE_DECL([realpath], [#include <stdlib.h>]) 642 643dnl mingw64 implements those as static inline, not functions with C linkage 644VLC_REPLACE_DECL([asprintf], [#include <stdio.h>]) 645VLC_REPLACE_DECL([vasprintf], [#include <stdio.h>]) 646VLC_REPLACE_DECL([gmtime_r], [#include <time.h>]) 647VLC_REPLACE_DECL([localtime_r], [#include <time.h>]) 648 649dnl C11 static_assert() 650AC_MSG_CHECKING([for static_assert in assert.h]) 651AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <assert.h>], [ 652static_assert(1, "The impossible happened."); 653])], [ 654 AC_MSG_RESULT([yes]) 655 AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Define to 1 if <assert.h> defines static_assert.]) 656], [ 657 AC_MSG_RESULT([no]) 658]) 659 660# Windows CE does not have strcoll() 661AC_FUNC_STRCOLL 662 663dnl Check for non-standard system calls 664case "$SYS" in 665 "linux") 666 AC_CHECK_FUNCS([eventfd vmsplice sched_getaffinity recvmmsg]) 667 ;; 668 "mingw32") 669 AC_CHECK_FUNCS([_lock_file]) 670 ;; 671esac 672 673AH_BOTTOM([#include <vlc_fixups.h>]) 674 675dnl Check for struct pollfd 676AC_CHECK_TYPES([struct pollfd],,, 677[#include <sys/types.h> 678#if HAVE_POLL 679# include <poll.h> 680#elif defined (_WIN32) 681# include <winsock2.h> 682#endif 683]) 684 685dnl Check for struct timespec 686AC_CHECK_TYPES([struct timespec],,, 687[#include <time.h>]) 688 689dnl Check for max_align_t 690AC_CHECK_TYPES([max_align_t],,, 691[#include <stddef.h>]) 692 693dnl Check for socklen_t 694AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.]) 695AC_CACHE_CHECK([for socklen_t in sys/socket.h], dnl ` (fix VIM syntax highlight 696ac_cv_type_socklen_t, 697[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 698[#include <sys/types.h> 699#ifdef _WIN32 700# include <winsock2.h> 701# include <ws2tcpip.h> 702#else 703# include <sys/socket.h> 704#endif]], [[socklen_t len; len = 0;]])], 705ac_cv_type_socklen_t=yes, 706ac_cv_type_socklen_t=no)]) 707AS_IF([test "$ac_cv_type_socklen_t" = no], 708 [AC_DEFINE(socklen_t, int)]) 709 710dnl Check for struct sockaddr_storage 711AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight 712AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.]) dnl ` (fix VIM syntax highlight 713AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage, 714 [AC_TRY_COMPILE( 715 [#include <sys/types.h> 716 #if defined( _WIN32 ) 717 # include <winsock2.h> 718 #else 719 # include <sys/socket.h> 720 #endif], [struct sockaddr_storage addr;], 721 ac_cv_struct_sockaddr_storage=yes, 722 ac_cv_struct_sockaddr_storage=no)]) 723AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [ 724 AC_DEFINE(sockaddr_storage, sockaddr) 725 AC_DEFINE(ss_family, sa_family) 726]) 727 728dnl FreeBSD has a gnugetopt library for this: 729GNUGETOPT_LIBS="" 730AC_CHECK_FUNC(getopt_long,, [ 731 AC_CHECK_LIB([gnugetopt],[getopt_long], [ 732 GNUGETOPT_LIBS="-lgnugetopt" 733 ]) 734]) 735AC_SUBST(GNUGETOPT_LIBS) 736 737AC_CHECK_LIB(m,cos,[ 738 LIBM="-lm" 739], [ 740 LIBM="" 741]) 742AC_SUBST(LIBM) 743 744AC_CHECK_LIB(m,lrintf, [ 745 AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function]) 746 VLC_ADD_LIBS([skins2],[-lm]) 747]) 748AC_CHECK_LIB(m,nanf, 749 AC_DEFINE(HAVE_NANF, 1, [Define to 1 if you have the NANF function]) 750) 751AC_CHECK_LIB(m,sincos, [ 752 AC_DEFINE(HAVE_SINCOS, 1, [Define to 1 if you have the sincos function.]) 753], [ 754 AC_LIBOBJ([sincos]) 755]) 756 757AC_MSG_CHECKING([_Thread_local support]) 758AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Thread_local int foo = 0; 759 int main() {}])], [ 760 AC_MSG_RESULT([ok]) 761 AC_DEFINE(HAVE_THREAD_LOCAL, 1, [Defined to 1 if C11 _Thread_local storage qualifier is supported]) 762],[ AC_MSG_RESULT([no])]) 763 764dnl __STDC_NO_THREADS__ can't be trusted on some platforms. 765dnl check for its availability explicitely 766AC_CHECK_HEADERS([threads.h]) 767 768AC_CHECK_LIB([anl],[getaddrinfo_a],[ 769 AC_DEFINE(HAVE_LIBANL, 1, [Define to 1 if you have the anl library]) 770]) 771 772dnl Check for dynamic plugins 773LIBDL="" 774have_dynamic_objects="no" 775VLC_SAVE_FLAGS 776AC_SEARCH_LIBS(dlsym, [dl svld], [ 777 AS_IF([test "$ac_cv_search_dlsym" != "none required"], [ 778 LIBDL="$ac_cv_search_dlsym" 779 ]) 780 have_dynamic_objects="yes" 781]) 782VLC_RESTORE_FLAGS 783 784# Windows 785AS_IF([test "${SYS}" = "mingw32"], [ 786 LIBDL="" 787 have_dynamic_objects="yes" #assume we can use shared objects 788]) 789 790AC_ARG_WITH([libfuzzer], 791 [AS_HELP_STRING([--with-libfuzzer=DIR], 792 [use libFuzzer library from DIR and triggers sanitize coverage (default disabled)])], 793 [], 794 [with_libfuzzer=no]) 795AS_VAR_IF(with_libfuzzer, no, [], [ 796 enable_shared=no 797 enable_static=yes 798 enable_vlc=no 799]) 800AM_CONDITIONAL(HAVE_LIBFUZZER, [test "${with_libfuzzer}" != "no"]) 801 802AS_IF([test "${enable_shared}" = "no"], [ 803 have_dynamic_objects=no 804]) 805AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"]) 806 807AC_SUBST(LIBDL) 808 809dnl Check for thread library 810LIBPTHREAD="" 811AS_IF([test "${SYS}" != "mingw32"], [ 812 VLC_SAVE_FLAGS 813 LIBS="" 814 AC_SEARCH_LIBS(pthread_rwlock_init, pthread pthreads c_r, [ 815 AS_IF([test "$ac_cv_search_pthread_rwlock_init" != "none required"], [ 816 LIBPTHREAD="$ac_cv_search_pthread_rwlock_init" 817 ]) 818 ]) 819 VLC_RESTORE_FLAGS 820]) 821AC_SUBST(LIBPTHREAD) 822 823AC_SEARCH_LIBS([clock_nanosleep], [rt pthread], [ 824 AS_IF([test "$ac_cv_search_clock_nanosleep" != "none required"], [ 825 LIBRT="$ac_cv_search_clock_nanosleep" 826 ]) 827], [ 828 AC_SEARCH_LIBS([nanosleep], [rt pthread posix4], [ 829 AS_IF([test "$ac_cv_search_nanosleep" != "none required"], [ 830 LIBRT="$ac_cv_search_nanosleep" 831 ]) 832 ]) 833]) 834AC_SUBST(LIBRT) 835 836dnl 837dnl Check for headers 838dnl 839 840dnl POSIX 841AC_CHECK_HEADERS([arpa/inet.h pthread.h search.h sys/shm.h sys/socket.h sys/uio.h]) 842AC_CHECK_HEADERS([net/if.h], [], [], 843[ 844#include <sys/types.h> 845#include <sys/socket.h> 846]) 847AC_CHECK_HEADER([syslog.h], [have_syslog="yes"], [have_syslog="no"]) 848AM_CONDITIONAL([HAVE_SYSLOG], [test "$have_syslog" = "yes"]) 849 850dnl BSD 851AC_CHECK_HEADERS([netinet/tcp.h netinet/udplite.h sys/param.h sys/mount.h]) 852 853dnl GNU/Linux 854AC_CHECK_HEADERS([features.h getopt.h linux/dccp.h linux/magic.h sys/eventfd.h]) 855 856dnl MacOS 857AC_CHECK_HEADERS([xlocale.h]) 858 859dnl Check if C++ headers define locale_t 860AC_LANG_PUSH(C++) 861AC_CACHE_CHECK([if C++ headers define locale_t], 862 [ac_cv_cxx_locale_t], 863 [ac_cv_cxx_locale_t=no 864 AC_TRY_COMPILE([#include <locale>], [locale_t loc;], 865 [ac_cv_cxx_locale_t=yes])]) 866if test "${ac_cv_cxx_locale_t}" != "no"; then 867 AC_DEFINE(HAVE_CXX_LOCALE_T, 1, Define to 1 if C++ headers define locale_t) 868fi 869AC_LANG_POP(C++) 870 871dnl LP64 and LLP64 architectures had better define ssize_t by themselves... 872AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.]) dnl ` (fix VIM syntax highlight 873AC_CHECK_TYPE(ssize_t,, [ 874 AC_DEFINE(ssize_t, int) 875]) 876 877dnl It seems that autoconf detects pkg-config only during the first 878dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case, 879dnl it is nested within a conditional block, so it was not working right. 880dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved 881AC_ARG_VAR(PKG_CONFIG_PATH, 882 [Paths where to find .pc not at the default location]) 883PKG_PROG_PKG_CONFIG() 884 885dnl On some OS we need static linking 886AS_IF([test -n "${PKG_CONFIG}" ],[ 887 AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[ 888 PKG_CONFIG="${PKG_CONFIG} --static" 889 ]) 890]) 891 892 893dnl 894dnl Check for zlib.h and -lz along with system -lminizip if available 895dnl 896AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ]) 897AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ]) 898if test "${have_zlib}" = "yes" 899then 900 VLC_ADD_LIBS([sap],[-lz]) 901 PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [ 902 AC_CHECK_HEADERS([unzip.h], [ 903 have_minizip=yes 904 MINIZIP_LIBS="-lminizip -lz" 905 ], [ 906 have_minizip=no 907 ]) 908 ]) 909fi 910AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ]) 911 912 913dnl 914dnl Domain name i18n support via GNU libidn 915dnl 916PKG_CHECK_MODULES([IDN], [libidn], [ 917 have_libidn="yes" 918 AC_DEFINE([HAVE_IDN], 1, [Define to 1 if you have GNU libidn.]) 919], [ 920 have_libidn="no" 921]) 922 923 924dnl Check for dbus 925AC_ARG_ENABLE(dbus, 926 [AS_HELP_STRING([--enable-dbus], 927 [compile D-Bus message bus support (default enabled)])]) 928have_dbus="no" 929AS_IF([test "${enable_dbus}" != "no"], [ 930 PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.6.0], [ 931 have_dbus="yes" 932 ], [ 933 AS_IF([test -n "${enable_dbus}"], [ 934 AC_MSG_ERROR([${DBUS_PKG_ERRORS}.]) 935 ], [ 936 AC_MSG_WARN([${DBUS_PKG_ERRORS}.]) 937 ]) 938 ]) 939]) 940AM_CONDITIONAL([HAVE_DBUS], [test "${have_dbus}" = "yes"]) 941 942 943dnl Check for systemd 944PKG_CHECK_MODULES([SYSTEMD], [libsystemd], [ 945 have_systemd="yes" 946], [ 947 AC_MSG_WARN([${SYSTEMD_PKG_ERRORS}.]) 948]) 949AM_CONDITIONAL([HAVE_SYSTEMD], [test "${have_systemd}" = "yes"]) 950 951 952EXTEND_HELP_STRING([Optimization options:]) 953dnl 954dnl Compiler warnings 955dnl 956 957AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CFLAGS]) 958AX_APPEND_COMPILE_FLAGS([-Wall -Wextra -Wsign-compare -Wundef -Wpointer-arith -Wvolatile-register-var -Wformat -Wformat-security], [CXXFLAGS]) 959 960dnl -Werror-implicit-function-declaration is used for the if_nametoindex detection with winstore 961AX_APPEND_COMPILE_FLAGS([-Wbad-function-cast -Wwrite-strings -Wmissing-prototypes -Werror-implicit-function-declaration -Winit-self -Wlogical-op -Wshadow=local], [CFLAGS]) 962AX_APPEND_COMPILE_FLAGS([-pipe], [CFLAGS]) 963 964dnl Checks for socket stuff 965VLC_SAVE_FLAGS 966SOCKET_LIBS="" 967AC_SEARCH_LIBS(connect, [socket], [ 968 AS_IF([test "$ac_cv_search_connect" != "none required"], [ 969 SOCKET_LIBS="$ac_cv_search_connect" 970 ]) 971], [ 972 AS_IF([test "${SYS}" = "mingw32"], [ 973 SOCKET_LIBS="-lws2_32 -liphlpapi" 974 ]) 975]) 976 977AC_SEARCH_LIBS([inet_pton], [nsl], [ 978 AS_IF([test "$ac_cv_search_inet_pton" != "none required"], [ 979 SOCKET_LIBS="$ac_cv_search_inet_pton $SOCKET_LIBS" 980 ]) 981],, [${SOCKET_LIBS}]) 982 983LIBS="${LIBS} ${SOCKET_LIBS}" 984CFLAGS="${CFLAGS} -Werror-implicit-function-declaration" 985AC_LINK_IFELSE([ 986 AC_LANG_PROGRAM([#ifdef _WIN32 987 #include <ws2tcpip.h> 988 #include <windows.h> 989 # if _WIN32_WINNT < 0x600 990 # error Needs vista+ 991 # endif 992 #else 993 #include <sys/socket.h> 994 #include <arpa/inet.h> 995 #endif], [ 996 char dst[[sizeof(struct in_addr)]]; 997 inet_pton(AF_INET, "127.0.0.1", dst); 998 ])],[AC_DEFINE([HAVE_INET_PTON],[1],[Define to 1 if you have inet_pton function])],[AC_LIBOBJ([inet_pton])]) 999AC_LINK_IFELSE([ 1000 AC_LANG_PROGRAM([#ifdef _WIN32 1001 #include <iphlpapi.h> 1002 #else 1003 #include <sys/types.h> 1004 #include <sys/socket.h> 1005 #include <net/if.h> 1006 #endif], [ 1007 if_nametoindex(""); 1008 ])],[AC_DEFINE([HAVE_IF_NAMETOINDEX],[1],[Define to 1 if you have if_nametoindex function])]) 1009AC_CHECK_TYPES([struct if_nameindex],,,[#include <net/if.h>]) 1010AC_CHECK_FUNCS([if_nameindex]) 1011VLC_RESTORE_FLAGS 1012AC_SUBST(SOCKET_LIBS) 1013 1014dnl 1015dnl Debugging mode 1016dnl 1017AC_ARG_ENABLE(debug, 1018 [AS_HELP_STRING([--enable-debug], 1019 [build with run-time assertions (default disabled)])],, 1020 [enable_debug="no"]) 1021AH_TEMPLATE(NDEBUG, 1022 [Define to 1 if debug code should NOT be compiled]) 1023AS_IF([test "${enable_debug}" != "no"], [ 1024 AC_CHECK_HEADERS([valgrind/valgrind.h]) 1025], [ 1026 AC_DEFINE(NDEBUG) 1027]) 1028 1029dnl 1030dnl Profiling 1031dnl 1032AC_ARG_ENABLE(gprof, 1033 [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],, 1034 [enable_gprof="no"]) 1035AS_IF([test "${enable_gprof}" != "no"], [ 1036 CFLAGS="${CFLAGS} -pg" 1037 CXXFLAGS="${CXXFLAGS} -pg" 1038 OBJCFLAGS="${OBJCFLAGS} -pg" 1039 LDFLAGS="${LDFLAGS} -pg" 1040]) 1041 1042AC_ARG_ENABLE(cprof, 1043 [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],, 1044 [enable_cprof="no"]) 1045AS_IF([test "${enable_gprof}" != "no"], [ 1046 CFLAGS="${CFLAGS} -finstrument-functions" 1047 CXXFLAGS="${CXXFLAGS} -finstrument-functions" 1048 OBJCFLAGS="${OBJCFLAGS} -finstrument-functions" 1049 LDFLAGS="${LDFLAGS} -finstrument-functions" 1050]) 1051 1052dnl 1053dnl Test coverage 1054dnl 1055AC_ARG_ENABLE(coverage, 1056 [AS_HELP_STRING([--enable-coverage], 1057 [build for test coverage (default disabled)])],, 1058 [enable_coverage="no"]) 1059AS_IF([test "${enable_coverage}" != "no"], [ 1060 CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}" 1061 CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}" 1062 LDFLAGS="-lgcov ${LDFLAGS}" 1063]) 1064 1065AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "os2"], [ 1066 VLC_SAVE_FLAGS 1067 CFLAGS="${CFLAGS} -fvisibility=hidden" 1068 CXXFLAGS="${CXXFLAGS} -fvisibility=hidden" 1069 OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden" 1070 AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden], 1071 [ac_cv_c_visibility_hidden], [ 1072 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ 1073 ac_cv_c_visibility_hidden=yes 1074 ], [ 1075 ac_cv_c_visibility_hidden=no 1076 ]) 1077 ]) 1078 AS_IF([test "${ac_cv_c_visibility_hidden}" = "no"], [VLC_RESTORE_FLAGS]) 1079]) 1080 1081dnl 1082dnl Sanitizer flags 1083dnl 1084AC_ARG_WITH([sanitizer], 1085 [AS_HELP_STRING([--with-sanitizer=(address/memory/undefined/thread)], 1086 [build with sanitizer flags (default disabled)])], 1087 [], 1088 [with_sanitizer=no]) 1089 1090AS_VAR_IF(with_sanitizer, no, [], [ 1091 AX_CHECK_COMPILE_FLAG([-fsanitize=${with_sanitizer}], [ 1092 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}]) 1093 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [CXXFLAGS]) 1094 AX_APPEND_FLAG([-fsanitize=${with_sanitizer}], [LDFLAGS]) 1095 ], [ 1096 AC_MSG_ERROR(["-fsanitize=${with_sanitizer} not supported!"]) 1097 ]) 1098 AX_APPEND_FLAG([-g]) 1099 AX_APPEND_FLAG([-g], [CXXFLAGS]) 1100 1101 AS_IF([test -z "${with_sanitizer##*address*}" ], [ 1102 AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer]) 1103 AX_APPEND_COMPILE_FLAGS([-fsanitize-address-use-after-scope -fno-omit-frame-pointer], [CXXFLAGS]) 1104 ]) 1105 AS_IF([test -z "${with_sanitizer##*memory*}" ], [ 1106 AX_APPEND_COMPILE_FLAGS([-fPIE -pie]) 1107 AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS]) 1108 ]) 1109 AS_IF([test -z "${with_sanitizer##*thread*}" ], [ 1110 AX_APPEND_COMPILE_FLAGS([-fPIE -pie]) 1111 AX_APPEND_COMPILE_FLAGS([-fPIE -pie], [CXXFLAGS]) 1112 ]) 1113]) 1114 1115dnl 1116dnl Enable/disable optimizations 1117dnl 1118AC_ARG_ENABLE(optimizations, 1119 [AS_HELP_STRING([--disable-optimizations], 1120 [disable compiler optimizations (default enabled)])],, 1121 [enable_optimizations="yes"]) 1122 1123dnl Check for various optimization flags 1124AS_IF([test "${enable_optimizations}" != "no"], [ 1125 1126 dnl -O3 only in production builds 1127 AS_IF([test "${enable_debug}" = "no"], [ 1128 VLC_SAVE_FLAGS 1129 CFLAGS="${CFLAGS} -O3" 1130 CXXFLAGS="${CXXFLAGS} -O3" 1131 OBJCFLAGS="${OBJCFLAGS} -O3" 1132 AC_CACHE_CHECK([if $CC accepts -O3], [ac_cv_c_o3], [ 1133 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ 1134 ac_cv_c_o3=yes 1135 ], [ 1136 ac_cv_c_o3=no 1137 ]) 1138 ]) 1139 AS_IF([test "${ac_cv_c_o3}" = "no"], [VLC_RESTORE_FLAGS]) 1140 ]) 1141 1142 dnl Check for fast maths 1143 AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CFLAGS]) 1144 AX_APPEND_COMPILE_FLAGS([-fno-math-errno -funsafe-math-optimizations -fno-rounding-math -fno-signaling-nans -fcx-limited-range], [CXXFLAGS]) 1145 1146AH_BOTTOM([ 1147#if defined(_MSC_VER) && !defined(__clang__) 1148# pragma fenv_access(off) 1149# pragma fp_contract(on) 1150#elif defined(__GNUC__) 1151/* Not supported so far */ 1152#else 1153# pragma STDC FENV_ACCESS OFF 1154# pragma STDC FP_CONTRACT ON 1155#endif 1156]) 1157 1158 dnl Check for -funroll-loops 1159 VLC_SAVE_FLAGS 1160 CFLAGS="${CFLAGS} -funroll-loops" 1161 CXXFLAGS="${CXXFLAGS} -funroll-loops" 1162 OBJCFLAGS="${OBJCFLAGS} -funroll-loops" 1163 AC_CACHE_CHECK([if $CC accepts -funroll-loops], [ac_cv_c_unroll_loops], [ 1164 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ 1165 ac_cv_c_unroll_loops=yes 1166 ], [ 1167 ac_cv_c_unroll_loops=no 1168 ]) 1169 ]) 1170 AS_IF([test "${ac_cv_c_unroll_loops}" = "no"], [VLC_RESTORE_FLAGS]) 1171 1172 AS_IF([test "$enable_debug" = "no"], [ 1173 dnl Check for -fomit-frame-pointer 1174 VLC_SAVE_FLAGS 1175 CFLAGS="${CFLAGS} -fomit-frame-pointer" 1176 CXXFLAGS="${CXXFLAGS} -fomit-frame-pointer" 1177 OBJCFLAGS="${OBJCFLAGS} -fomit-frame-pointer" 1178 AC_CACHE_CHECK([if $CC accepts -fomit-frame-pointer], 1179 [ac_cv_c_omit_frame_pointer], [ 1180 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ 1181 ac_cv_c_omit_frame_pointer=yes 1182 ], [ 1183 ac_cv_c_omit_frame_pointer=no 1184 ]) 1185 ]) 1186 AS_IF([test "${ac_cv_c_omit_frame_pointer}" = "no"], [VLC_RESTORE_FLAGS]) 1187 ]) 1188 1189 AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong]) 1190 AX_APPEND_COMPILE_FLAGS([-fstack-protector-strong], [CXXFLAGS]) 1191 dnl Win32 requires linking to ssp for stack-protection 1192 AS_IF([test "${SYS}" = "mingw32"], [ 1193 LDFLAGS="${LDFLAGS} -lssp" 1194 AS_IF([test "${vlc_winstore_app}" != 1], [LDFLAGS="${LDFLAGS} -ladvapi32"]) 1195 ]) 1196]) 1197 1198VLC_SAVE_FLAGS 1199LDFLAGS="${LDFLAGS} -Wl,-Bsymbolic" 1200AC_CACHE_CHECK([if linker supports -Bsymbolic], [ac_cv_ld_bsymbolic], [ 1201 AC_TRY_LINK([],, [ 1202 ac_cv_ld_bsymbolic="-Wl,-Bsymbolic" 1203 ], [ 1204 ac_cv_ld_bsymbolic="" 1205 ]) 1206]) 1207VLC_RESTORE_FLAGS 1208SYMBOLIC_LDFLAGS="${ac_cv_ld_bsymbolic}" 1209AC_SUBST(SYMBOLIC_LDFLAGS) 1210 1211VLC_SAVE_FLAGS 1212LDFLAGS="${LDFLAGS} -Wl,-z,defs" 1213AC_CACHE_CHECK([if linker supports -z,defs], [ac_cv_ld_z_defs], [ 1214 AC_TRY_LINK([],, [ 1215 ac_cv_ld_z_defs="yes" 1216 ], [ 1217 ac_cv_ld_z_defs="no" 1218 ]) 1219]) 1220AS_IF([test "${ac_cv_ld_z_defs}" = "no"], [VLC_RESTORE_FLAGS]) 1221 1222dnl Check for __attribute__((packed)) 1223AC_CACHE_CHECK([for __attribute__((packed))], 1224 [ac_cv_c_attribute_packed], 1225 [ac_cv_c_attribute_packed=no 1226 AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b; (void)b;], 1227 [ac_cv_c_attribute_packed=yes])]) 1228if test "${ac_cv_c_attribute_packed}" != "no"; then 1229 AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs) 1230fi 1231 1232dnl 1233dnl Check the CPU 1234dnl 1235case "${host_cpu}" in 1236 "") 1237 ARCH=unknown 1238 ;; 1239 armv*) 1240 ARCH="arm" 1241 host_cpu="arm" 1242 ;; 1243 *) 1244 ARCH="${host_cpu}" 1245 ;; 1246esac 1247 1248dnl Check for backtrace() support 1249AC_CHECK_HEADERS(execinfo.h) 1250AC_CHECK_FUNCS(backtrace) 1251 1252dnl 1253dnl default modules 1254dnl 1255ALIASES="${ALIASES} cvlc rvlc" 1256 1257dnl 1258dnl Accelerated modules 1259dnl 1260 1261dnl Check for fully working MMX intrinsics 1262dnl We need support for -mmmx, we need <mmintrin.h>, and we also need a 1263dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963) 1264AC_ARG_ENABLE(mmx, 1265 [AS_HELP_STRING([--disable-mmx], 1266 [disable MMX optimizations (default auto)])],,[ 1267 case "${host_cpu}" in 1268 i?86|x86_64) 1269 enable_mmx="yes" 1270 ;; 1271 *) 1272 enable_mmx="no" 1273 ;; 1274 esac 1275]) 1276have_mmx="no" 1277have_mmxext="no" 1278AS_IF([test "${enable_mmx}" != "no"], [ 1279 ARCH="${ARCH} mmx" 1280 VLC_SAVE_FLAGS 1281 CFLAGS="${CFLAGS} -mmmx" 1282 AC_CACHE_CHECK([if $CC groks MMX intrinsics], [ac_cv_c_mmx_intrinsics], [ 1283 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 1284[#include <mmintrin.h> 1285#include <stdint.h> 1286uint64_t frobzor;]], [ 1287[__m64 a, b, c; 1288a = b = c = (__m64)frobzor; 1289a = _mm_slli_pi16(a, 3); 1290a = _mm_adds_pi16(a, b); 1291c = _mm_srli_pi16(c, 8); 1292c = _mm_slli_pi16(c, 3); 1293b = _mm_adds_pi16(b, c); 1294a = _mm_unpacklo_pi8(a, b); 1295frobzor = (uint64_t)a;]])], [ 1296 ac_cv_c_mmx_intrinsics=yes 1297 ], [ 1298 ac_cv_c_mmx_intrinsics=no 1299 ]) 1300 ]) 1301 VLC_RESTORE_FLAGS 1302 AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [ 1303 AC_DEFINE(HAVE_MMX_INTRINSICS, 1, [Define to 1 if MMX intrinsics are available.]) 1304 ]) 1305 1306 VLC_SAVE_FLAGS 1307 CFLAGS="${CFLAGS} -mmmx" 1308 AC_CACHE_CHECK([if $CC groks MMX inline assembly], [ac_cv_mmx_inline], [ 1309 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1310void *p; 1311asm volatile("packuswb %%mm1,%%mm2"::"r"(p):"mm1", "mm2"); 1312]]) 1313 ], [ 1314 ac_cv_mmx_inline=yes 1315 ], [ 1316 ac_cv_mmx_inline=no 1317 ]) 1318 ]) 1319 AS_IF([test "${ac_cv_mmx_inline}" != "no"], [ 1320 AC_DEFINE(CAN_COMPILE_MMX, 1, [Define to 1 inline MMX assembly is available.]) 1321 have_mmx="yes" 1322 ]) 1323 1324 AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly], 1325 [ac_cv_mmxext_inline], [ 1326 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1327void *p; 1328asm volatile("maskmovq %%mm1,%%mm2"::"r"(p):"mm1", "mm2"); 1329]]) 1330 ], [ 1331 ac_cv_mmxext_inline=yes 1332 ], [ 1333 ac_cv_mmxext_inline=no 1334 ]) 1335 ]) 1336 VLC_RESTORE_FLAGS 1337 AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [ 1338 AC_DEFINE(CAN_COMPILE_MMXEXT, 1, [Define to 1 if MMX EXT inline assembly is available.]) 1339 have_mmxext="yes" 1340 ]) 1341]) 1342AM_CONDITIONAL([HAVE_MMX], [test "${have_mmx}" = "yes"]) 1343AM_CONDITIONAL([HAVE_MMXEXT], [test "${have_mmxext}" = "yes"]) 1344 1345dnl Check for fully workin SSE2 intrinsics 1346dnl We need support for -mmmx, we need <emmintrin.h>, and we also need a 1347dnl working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963) 1348AC_ARG_ENABLE(sse, 1349 [AS_HELP_STRING([--disable-sse], 1350 [disable SSE (1-4) optimizations (default auto)])],, [ 1351 case "${host_cpu}" in 1352 i?86|x86_64) 1353 enable_sse=yes 1354 ;; 1355 *) 1356 enable_sse=no 1357 ;; 1358 esac 1359]) 1360have_sse2="no" 1361AS_IF([test "${enable_sse}" != "no"], [ 1362 ARCH="${ARCH} sse sse2" 1363 1364 VLC_SAVE_FLAGS 1365 CFLAGS="${CFLAGS} -msse2" 1366 AC_CACHE_CHECK([if $CC groks SSE2 intrinsics], [ac_cv_c_sse2_intrinsics], [ 1367 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 1368[#include <emmintrin.h> 1369#include <stdint.h> 1370uint64_t frobzor;]], [ 1371[__m128i a, b, c; 1372a = b = c = _mm_set1_epi64((__m64)frobzor); 1373a = _mm_slli_epi16(a, 3); 1374a = _mm_adds_epi16(a, b); 1375c = _mm_srli_epi16(c, 8); 1376c = _mm_slli_epi16(c, 3); 1377b = _mm_adds_epi16(b, c); 1378a = _mm_unpacklo_epi8(a, b); 1379frobzor = (uint64_t)_mm_movepi64_pi64(a);]])], [ 1380 ac_cv_c_sse2_intrinsics=yes 1381 ], [ 1382 ac_cv_c_sse2_intrinsics=no 1383 ]) 1384 ]) 1385 VLC_RESTORE_FLAGS 1386 AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [ 1387 AC_DEFINE(HAVE_SSE2_INTRINSICS, 1, [Define to 1 if SSE2 intrinsics are available.]) 1388 ]) 1389 1390 VLC_SAVE_FLAGS 1391 CFLAGS="${CFLAGS} -msse" 1392 AC_CACHE_CHECK([if $CC groks SSE inline assembly], [ac_cv_sse_inline], [ 1393 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1394void *p; 1395asm volatile("xorps %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2"); 1396]]) 1397 ], [ 1398 ac_cv_sse_inline=yes 1399 ], [ 1400 ac_cv_sse_inline=no 1401 ]) 1402 ]) 1403 1404 AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [ 1405 AC_DEFINE(CAN_COMPILE_SSE, 1, [Define to 1 if SSE inline assembly is available.]) 1406 ]) 1407 1408 AC_CACHE_CHECK([if $CC groks SSE2 inline assembly], [ac_cv_sse2_inline], [ 1409 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1410void *p; 1411asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p):"xmm1", "xmm2"); 1412]]) 1413 ], [ 1414 ac_cv_sse2_inline=yes 1415 ], [ 1416 ac_cv_sse2_inline=no 1417 ]) 1418 ]) 1419 AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [ 1420 AC_DEFINE(CAN_COMPILE_SSE2, 1, [Define to 1 if SSE2 inline assembly is available.]) 1421 have_sse2="yes" 1422 ]) 1423 1424 # SSE3 1425 AC_CACHE_CHECK([if $CC groks SSE3 inline assembly], [ac_cv_sse3_inline], [ 1426 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1427void *p; 1428asm volatile("movsldup %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1"); 1429]]) 1430 ], [ 1431 ac_cv_sse3_inline=yes 1432 ], [ 1433 ac_cv_sse3_inline=no 1434 ]) 1435 ]) 1436 1437 AS_IF([test "${ac_cv_sse3_inline}" != "no"], [ 1438 AC_DEFINE(CAN_COMPILE_SSE3, 1, [Define to 1 if SSE3 inline assembly is available.]) ]) 1439 # SSSE3 1440 AC_CACHE_CHECK([if $CC groks SSSE3 inline assembly], [ac_cv_ssse3_inline], [ 1441 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1442void *p; 1443asm volatile("pabsw %%xmm0,%%xmm0"::"r"(p):"xmm0"); 1444]]) 1445 ], [ 1446 ac_cv_ssse3_inline=yes 1447 ], [ 1448 ac_cv_ssse3_inline=no 1449 ]) 1450 ]) 1451 1452 AS_IF([test "${ac_cv_ssse3_inline}" != "no"], [ 1453 AC_DEFINE(CAN_COMPILE_SSSE3, 1, [Define to 1 if SSSE3 inline assembly is available.]) ]) 1454 1455 # SSE4.1 1456 AC_CACHE_CHECK([if $CC groks SSE4.1 inline assembly], 1457 [ac_cv_sse4_1_inline], [ 1458 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1459void *p; 1460asm volatile("pmaxsb %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1"); 1461]]) 1462 ], [ 1463 ac_cv_sse4_1_inline=yes 1464 ], [ 1465 ac_cv_sse4_1_inline=no 1466 ]) 1467 ]) 1468 1469 AS_IF([test "${ac_cv_sse4_1_inline}" != "no"], [ 1470 AC_DEFINE(CAN_COMPILE_SSE4_1, 1, [Define to 1 if SSE4_1 inline assembly is available.]) ]) 1471 1472 # SSE4.2 1473 AC_CACHE_CHECK([if $CC groks SSE4.2 inline assembly], 1474 [ac_cv_sse4_2_inline], [ 1475 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1476void *p; 1477asm volatile("pcmpgtq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1"); 1478]]) 1479 ], [ 1480 ac_cv_sse4_2_inline=yes 1481 ], [ 1482 ac_cv_sse4_2_inline=no 1483 ]) 1484 ]) 1485 1486 AS_IF([test "${ac_cv_sse4_2_inline}" != "no"], [ 1487 AC_DEFINE(CAN_COMPILE_SSE4_2, 1, [Define to 1 if SSE4_2 inline assembly is available.]) ]) 1488 1489 # SSE4A 1490 AC_CACHE_CHECK([if $CC groks SSE4A inline assembly], [ac_cv_sse4a_inline], [ 1491 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1492void *p; 1493asm volatile("insertq %%xmm1,%%xmm0"::"r"(p):"xmm0", "xmm1"); 1494]]) 1495 ], [ 1496 ac_cv_sse4a_inline=yes 1497 ], [ 1498 ac_cv_sse4a_inline=no 1499 ]) 1500 ]) 1501 VLC_RESTORE_FLAGS 1502 AS_IF([test "${ac_cv_sse4a_inline}" != "no"], [ 1503 AC_DEFINE(CAN_COMPILE_SSE4A, 1, [Define to 1 if SSE4A inline assembly is available.]) ]) 1504]) 1505AM_CONDITIONAL([HAVE_SSE2], [test "$have_sse2" = "yes"]) 1506 1507VLC_SAVE_FLAGS 1508CFLAGS="${CFLAGS} -mmmx" 1509have_3dnow="no" 1510AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly], [ac_cv_3dnow_inline], [ 1511 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[[ 1512void *p; 1513asm volatile("pfadd %%mm1,%%mm2"::"r"(p):"mm1", "mm2"); 1514]]) 1515 ], [ 1516 ac_cv_3dnow_inline=yes 1517 ], [ 1518 ac_cv_3dnow_inline=no 1519 ]) 1520]) 1521VLC_RESTORE_FLAGS 1522AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [ 1523 AC_DEFINE(CAN_COMPILE_3DNOW, 1, 1524 [Define to 1 if 3D Now! inline assembly is available.]) 1525 have_3dnow="yes" 1526]) 1527AM_CONDITIONAL([HAVE_3DNOW], [test "$have_3dnow" = "yes"]) 1528 1529 1530AC_ARG_ENABLE(neon, 1531 [AS_HELP_STRING([--disable-neon], 1532 [disable NEON optimizations (default auto)])],, [ 1533 AS_IF([test "${host_cpu}" = "arm"], [enable_neon="yes"] ,[enable_neon="no"]) 1534]) 1535AS_IF([test "${enable_neon}" != "no"], [ 1536 VLC_SAVE_FLAGS 1537 CFLAGS="${CFLAGS} -mfpu=neon -mhard-float" 1538 AC_CACHE_CHECK([if $CCAS groks ARM NEON assembly], [ac_cv_arm_neon], [ 1539 AC_COMPILE_IFELSE([ 1540 AC_LANG_PROGRAM(,[[ 1541asm volatile("vqmovun.s64 d0, q1":::"d0"); 1542]]) 1543 ], [ 1544 ac_cv_arm_neon="yes" 1545 ], [ 1546 ac_cv_arm_neon="no" 1547 ]) 1548 ]) 1549 VLC_RESTORE_FLAGS 1550]) 1551AM_CONDITIONAL(HAVE_NEON, [test "${ac_cv_arm_neon}" = "yes"]) 1552 1553AC_ARG_ENABLE(arm64, 1554 [AS_HELP_STRING([--disable-arm64], 1555 [disable arm 64-bit optimizations (default auto)])],, [ 1556 AS_IF([test "${host_cpu}" = "aarch64"], [enable_arm64="yes"] ,[enable_arm64="no"]) 1557]) 1558AS_IF([test "${enable_arm64}" != "no"], [ 1559 AC_CACHE_CHECK([if $CCAS groks ARM 64 SIMD assembly], [ac_cv_arm64], [ 1560 AC_COMPILE_IFELSE([ 1561 AC_LANG_PROGRAM(,[[ 1562asm volatile("uhadd v0.8b, v0.8b, v1.8b":::"v0"); 1563]]) 1564 ], [ 1565 ac_cv_arm64="yes" 1566 ], [ 1567 ac_cv_arm64="no" 1568 ]) 1569 ]) 1570]) 1571AM_CONDITIONAL(HAVE_ARM64, [test "${ac_cv_arm64}" = "yes"]) 1572 1573 1574AC_ARG_ENABLE(altivec, 1575 [AS_HELP_STRING([--disable-altivec], 1576 [disable AltiVec optimizations (default auto)])],, [ 1577 AS_CASE("${host_cpu}", [powerpc*], 1578 [enable_altivec=yes], [enable_altivec=no]) 1579]) 1580have_altivec="no" 1581ALTIVEC_CFLAGS="" 1582AS_IF([test "${enable_altivec}" = "yes"], [ 1583 ARCH="${ARCH} altivec"; 1584 VLC_SAVE_FLAGS 1585 AC_CACHE_CHECK([if $CC groks AltiVec inline assembly], 1586 [ac_cv_altivec_inline], 1587 [AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");], 1588 ac_cv_altivec_inline="yes", 1589 [CFLAGS="${CFLAGS} -Wa,-maltivec" 1590 AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");], 1591 [ac_cv_altivec_inline="-Wa,-maltivec"], 1592 ac_cv_altivec_inline=no) 1593 ])]) 1594 VLC_RESTORE_FLAGS 1595 AS_IF([test "${ac_cv_altivec_inline}" != "no"], [ 1596 AC_DEFINE(CAN_COMPILE_ALTIVEC, 1, 1597 [Define to 1 if AltiVec inline assembly is available.]) 1598 AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [ 1599 ALTIVEC_CFLAGS="${ac_cv_altivec_inline}" 1600 VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}]) 1601 ]) 1602 have_altivec="yes" 1603 ]) 1604 1605 VLC_SAVE_FLAGS 1606 AC_CACHE_CHECK([if \$CC groks AltiVec C extensions], 1607 [ac_cv_c_altivec], [ 1608 CFLAGS="${CFLAGS} -maltivec" 1609 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 1610[#include <altivec.h>]], [ 1611[vec_ld(0, (unsigned char *)0);]])], [ 1612 ac_cv_c_altivec="-maltivec" 1613 ], [ 1614 ac_cv_c_altivec="no" 1615 ]) 1616 ]) 1617 VLC_RESTORE_FLAGS 1618 AS_IF([test "${ac_cv_c_altivec}" != "no"], [ 1619 CPPFLAGS="${CPPFLAGS} ${ac_cv_c_altivec}" 1620 AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, [Define to 1 if C AltiVec extensions are available.]) 1621 VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}]) 1622 ALTIVEC_CFLAGS="$ALTIVEC_CFLAGS ${ac_cv_c_altivec}" 1623 VLC_ADD_CFLAGS([deinterlace],[${ac_cv_c_altivec}]) 1624 have_altivec="yes" 1625 ]) 1626 AC_CHECK_HEADERS(altivec.h) 1627 1628 VLC_SAVE_FLAGS 1629 LDFLAGS="${LDFLAGS} -Wl,-framework,vecLib" 1630 AC_CACHE_CHECK([if linker needs -framework vecLib], 1631 [ac_cv_ld_altivec], 1632 [AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)]) 1633 VLC_RESTORE_FLAGS 1634 AS_IF([test "${ac_cv_ld_altivec}" != "no"], [ 1635 VLC_ADD_LIBS([libvlccore],[-Wl,-framework,vecLib]) 1636 ]) 1637]) 1638AC_SUBST(ALTIVEC_CFLAGS) 1639AM_CONDITIONAL([HAVE_ALTIVEC], [test "$have_altivec" = "yes"]) 1640 1641dnl 1642dnl Memory usage 1643dnl 1644AC_ARG_ENABLE(optimize-memory, 1645 [AS_HELP_STRING([--enable-optimize-memory], 1646 [optimize memory usage over performance])]) 1647if test "${enable_optimize_memory}" = "yes"; then 1648 AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance) 1649fi 1650 1651dnl 1652dnl Allow running as root (useful for people running on embedded platforms) 1653dnl 1654AC_ARG_ENABLE(run-as-root, 1655 [AS_HELP_STRING([--enable-run-as-root], 1656 [allow running VLC as root (default disabled)])]) 1657AS_IF([test "${enable_run_as_root}" = "yes"],[ 1658 AC_DEFINE(ALLOW_RUN_AS_ROOT, 1, 1659 [Define to 1 to allow running VLC as root (uid 0).]) 1660]) 1661 1662dnl 1663dnl Stream output 1664dnl 1665AC_ARG_ENABLE(sout, 1666 [AS_HELP_STRING([--disable-sout], 1667 [disable streaming output (default enabled)])]) 1668AS_IF([test "${enable_sout}" != "no"], [ 1669 AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.]) 1670]) 1671AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"]) 1672 1673dnl Lua modules 1674AC_ARG_ENABLE(lua, 1675 [AS_HELP_STRING([--disable-lua], 1676 [disable LUA scripting support (default enabled)])]) 1677if test "${enable_lua}" != "no" 1678then 1679 PKG_CHECK_MODULES(LUA, lua5.2, 1680 [ have_lua=yes ], 1681 [ 1682 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua 5.1 instead]) 1683 1684 PKG_CHECK_MODULES(LUA, lua5.1, 1685 [ have_lua=yes ], 1686 [ 1687 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying lua >= 5.1 instead]) 1688 PKG_CHECK_MODULES(LUA, lua >= 5.1, 1689 [ have_lua=yes ], 1690 [ 1691 AC_MSG_WARN([${LUA_PKG_ERRORS}, trying manual detection instead]) 1692 have_lua=yes 1693 AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h], 1694 [], 1695 [ have_lua=no ] ) 1696 AC_CHECK_LIB( lua5.2 , luaL_newstate, 1697 [LUA_LIBS="-llua5.2"], 1698 AC_CHECK_LIB( lua5.1 , luaL_newstate, 1699 [LUA_LIBS="-llua5.1"], 1700 AC_CHECK_LIB( lua51 , luaL_newstate, 1701 [LUA_LIBS="-llua51"], 1702 AC_CHECK_LIB( lua , luaL_newstate, 1703 [LUA_LIBS="-llua"], 1704 [ have_lua=no 1705 ], [-lm]) 1706 ))) 1707 ]) 1708 ]) 1709 ]) 1710 if test "x${have_lua}" != "xyes" ; then 1711 AC_MSG_ERROR([Could not find lua. Lua is needed for some interfaces (rc, telnet, http) as well as many other custom scripts. Use --disable-lua to ignore this error.]) 1712 fi 1713 AC_ARG_VAR([LUAC], [LUA byte compiler]) 1714 AS_IF([test -z "$LUAC"], [ 1715 AC_CHECK_TOOL(LUAC, [luac], [false]) 1716 ]) 1717 AS_IF([test "${LUAC}" = "false"], [ 1718 AC_MSG_ERROR([Could not find the LUA byte compiler.]) 1719 ]) 1720 AS_IF([test -d "${CONTRIB_DIR}" -a -f "${CONTRIB_DIR}/lib/liblua.a" -a `echo|${LUAC} -o - -|od -j 8 -N 2 -t x2|head -n 1|tr -s ' '|cut -d' ' -f2` != 0404], [ 1721 AC_MSG_ERROR([You need 32-bits luac when using lua from contrib.]) 1722 ]) 1723fi 1724AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"]) 1725 1726 1727dnl 1728dnl VideoLAN manager 1729dnl 1730AC_ARG_ENABLE(vlm, 1731 [AS_HELP_STRING([--disable-vlm], 1732 [disable the stream manager (default enabled)])],, 1733 [enable_vlm="${enable_sout}"]) 1734AS_IF([test "${enable_vlm}" != "no"], [ 1735 AS_IF([test "${enable_sout}" = "no"], [ 1736 AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.]) 1737 ]) 1738 AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support]) 1739]) 1740AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"]) 1741 1742 1743dnl 1744dnl Addons manager storage and repositories modules 1745dnl 1746AC_ARG_ENABLE(addonmanagermodules, 1747 [AS_HELP_STRING([--disable-addonmanagermodules], 1748 [disable the addons manager modules (default enabled)])]) 1749if test "${enable_addonmanagermodules}" != "no" 1750then 1751 AC_DEFINE(ENABLE_ADDONMANAGERMODULES, 1, [Define if you want the addons manager modules]) 1752fi 1753AM_CONDITIONAL([ENABLE_ADDONMANAGERMODULES], [test "${enable_addonmanagermodules}" != "no"]) 1754 1755 1756dnl 1757dnl Input plugins 1758dnl 1759 1760EXTEND_HELP_STRING([Input plugins:]) 1761 1762dnl 1763dnl libarchive access module 1764dnl 1765PKG_ENABLE_MODULES_VLC([ARCHIVE], [archive], [libarchive >= 3.1.0], (libarchive support), [auto]) 1766 1767dnl 1768dnl live555 input 1769dnl 1770AC_ARG_ENABLE(live555, 1771 [AS_HELP_STRING([--enable-live555], 1772 [enable RTSP input through live555 (default enabled)])]) 1773 1774AS_IF([test "${enable_live555}" != "no" -a -n "${CXX}"], [ 1775 PKG_CHECK_MODULES(LIVE555, live555, [ 1776 VLC_ADD_PLUGIN([live555]) 1777 VLC_ADD_CXXFLAGS([live555], [$LIVE555_CFLAGS]) 1778 VLC_ADD_LIBS([live555],[$LIVE555_LIBS]) 1779 ], [ 1780 AC_MSG_WARN([${LIVE555_PKG_ERRORS}.]) 1781 1782 AC_LANG_PUSH(C++) 1783 VLC_SAVE_FLAGS 1784 1785 dnl detect include paths 1786 AS_IF([test -f "${CONTRIB_DIR}/include/UsageEnvironment/UsageEnvironment.hh"], [ 1787 CPPFLAGS_live555="-I${CONTRIB_DIR}/include/liveMedia -I${CONTRIB_DIR}/include/groupsock -I${CONTRIB_DIR}/include/BasicUsageEnvironment -I${CONTRIB_DIR}/include/UsageEnvironment" 1788 ], [ 1789 AS_IF([test "${SYS}" != "os2"], [ 1790 LIVE555_PREFIX=${LIVE555_PREFIX-"/usr"} 1791 CPPFLAGS_live555="-I${LIVE555_PREFIX}/include/liveMedia -I${LIVE555_PREFIX}/include/groupsock -I${LIVE555_PREFIX}/include/BasicUsageEnvironment -I${LIVE555_PREFIX}/include/UsageEnvironment" 1792 ], [ 1793 LIVE555_PREFIX=${LIVE555_PREFIX-"/usr/lib/live"} 1794 CPPFLAGS_live555="-I${LIVE555_PREFIX}/liveMedia/include -I${LIVE555_PREFIX}/groupsock/include -I${LIVE555_PREFIX}/BasicUsageEnvironment/include -I${LIVE555_PREFIX}/UsageEnvironment/include" 1795 LDFLAGS_live555="-L${LIVE555_PREFIX}/liveMedia -L${LIVE555_PREFIX}/groupsock -L${LIVE555_PREFIX}/BasicUsageEnvironment -L${LIVE555_PREFIX}/UsageEnvironment" 1796 ]) 1797 ]) 1798 1799 dnl CPP Flags 1800 AS_IF([test "${SYS}" = "solaris"], [ 1801 CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS" 1802 ]) 1803 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}" 1804 LDFLAGS="${LDFLAGS} ${LDFLAGS_live555}" 1805 1806 dnl version check 1807 AC_CACHE_CHECK([for live555 version 1324598400 or later], [ac_cv_live555], [ 1808 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ 1809[#include <liveMedia_version.hh> 1810#if !defined (LIVEMEDIA_LIBRARY_VERSION_INT) || (LIVEMEDIA_LIBRARY_VERSION_INT < 1324598400) 1811# error BOOM 1812#endif]]) 1813 ], [ 1814 ac_cv_live555="yes" 1815 ], [ 1816 ac_cv_live555="no" 1817 ]) 1818 ]) 1819 1820 AS_IF([test "$ac_cv_live555" = "no"], [ 1821 AC_MSG_WARN([live555 is missing or its installed version is too old: 1822Version 2011.12.23 or later is required to proceed. 1823You can get an updated one from http://www.live555.com/liveMedia .]) 1824 AS_IF([test -n "${enable_live555}"], [ 1825 AC_MSG_ERROR([Update live555 or pass --disable-live555 to disable RTSP input support.]) 1826 ]) 1827 ], [ 1828 other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment" 1829 other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic" 1830 AS_IF([test "${SYS}" = "mingw32"], [ 1831 # add ws2_32 for closesocket, select, recv 1832 other_libs="$other_libs -lws2_32" 1833 ]) 1834 1835 dnl We need to check for pic because live555 don't provide shared libs 1836 dnl and we want to build a plugins so we need -fPIC on some arch. 1837 VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}]) 1838 VLC_ADD_LDFLAGS([live555], [${LDFLAGS_live555}]) 1839 AC_CHECK_LIB(liveMedia_pic, main, [ 1840 VLC_ADD_PLUGIN([live555]) 1841 VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}]) 1842 ],[ 1843 AC_CHECK_LIB(liveMedia, main, [ 1844 VLC_ADD_PLUGIN([live555]) 1845 VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}]) 1846 ],[],[${other_libs}]) 1847 ],[${other_libs_pic}]) 1848 ]) 1849 VLC_RESTORE_FLAGS 1850 AC_LANG_POP(C++) 1851 ]) 1852]) 1853 1854dnl 1855dnl IIDC and DV FireWire input modules 1856dnl 1857PKG_ENABLE_MODULES_VLC([DC1394], [], [libdc1394-2 >= 2.1.0], [IIDC FireWire input module], [auto]) 1858PKG_ENABLE_MODULES_VLC([DV1394], [], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV FireWire input module], [auto]) 1859 1860dnl 1861dnl - linsys modules: access module check for libzvbi 1862dnl 1863AC_ARG_ENABLE(linsys, 1864 [AS_HELP_STRING([--enable-linsys], 1865 [Linux Linear Systems Ltd. SDI and HD-SDI input cards (default enabled)])]) 1866AS_IF([test "$SYS" = "linux" -a "${enable_linsys}" != "no"], [ 1867 VLC_ADD_PLUGIN([linsys_hdsdi]) 1868 PKG_CHECK_MODULES(LINSYS_SDI, [zvbi-0.2 >= 0.2.28], [ 1869 VLC_ADD_PLUGIN([linsys_sdi]) 1870 ], [ 1871 AC_MSG_WARN([${LINSYS_SDI_PKG_ERRORS}.]) 1872 ]) 1873]) 1874 1875dnl 1876dnl dvdread module: check for libdvdread 1877dnl 1878PKG_ENABLE_MODULES_VLC([DVDREAD], [], [dvdread > 4.9.0], [dvdread input module], [auto]) 1879 1880dnl 1881dnl libdvdnav plugin 1882dnl 1883PKG_ENABLE_MODULES_VLC([DVDNAV], [], [dvdnav > 4.9.0], [DVD with navigation input module (dvdnav)], [auto]) 1884AS_IF([test "${enable_dvdnav}" != "no"], [ 1885 AC_MSG_CHECKING(for dvdnav_stream_cb in dvdnav/dvdnav.h) 1886 AC_EGREP_HEADER(dvdnav_stream_cb,dvdnav/dvdnav.h,[ 1887 AC_MSG_RESULT(yes) 1888 AC_DEFINE(HAVE_STREAM_CB_IN_DVDNAV_H, 1, For dvdnav demux support) 1889 ],[ 1890 AC_MSG_RESULT(no) 1891 ]) 1892]) 1893 1894dnl 1895dnl Blu-ray Disc Support with libbluray 1896dnl 1897PKG_ENABLE_MODULES_VLC([BLURAY], [libbluray], [libbluray >= 0.6.2], (libbluray for Blu-ray disc support ) ) 1898 1899dnl 1900dnl OpenCV wrapper and example filters 1901dnl 1902PKG_ENABLE_MODULES_VLC([OPENCV], [opencv_example opencv_wrapper], [opencv > 2.0], (OpenCV (computer vision) filter), [auto]) 1903 1904 1905dnl 1906dnl libsmbclient plugin 1907dnl 1908PKG_ENABLE_MODULES_VLC([SMBCLIENT], [smb], [smbclient], (SMB/CIFS support), [auto]) 1909AS_IF([test "${SYS}" = "mingw32" -a "${enable_winstore_app}" != "yes"], [ VLC_ADD_PLUGIN([smb]) ]) 1910 1911dnl 1912dnl liBDSM access module 1913dnl 1914AM_CONDITIONAL(HAVE_DSM, [test "$AS_TR_SH(with_dsm)" = "yes"]) 1915PKG_WITH_MODULES([DSM], [libdsm >= 0.2.0], [ 1916 VLC_ADD_PLUGIN([dsm]) 1917 VLC_ADD_CFLAGS([dsm], [$DSM_CFLAGS]) 1918 VLC_ADD_LIBS([dsm], [$DSM_LIBS]) 1919 have_dsm="yes" 1920 ],,[libdsm SMB/CIFS access/sd module], [auto]) 1921AM_CONDITIONAL([HAVE_DSM], [test "${have_dsm}" = "yes"]) 1922 1923dnl 1924dnl sftp access support 1925dnl 1926PKG_ENABLE_MODULES_VLC([SFTP], [sftp], [libssh2], (support SFTP file transfer via libssh2), [auto]) 1927 1928dnl 1929dnl nfs access support 1930dnl 1931PKG_ENABLE_MODULES_VLC([NFS], [nfs], [libnfs >= 1.10.0], (support nfs protocol via libnfs), [auto]) 1932 1933dnl 1934dnl smb2 access support 1935dnl Disabled by default, since it was added after the initial VLC 3.0 release 1936dnl 1937PKG_ENABLE_MODULES_VLC([SMB2], [smb2], [libsmb2 >= 3.0.0], (support smb2 protocol via libsmb2), [disabled]) 1938 1939dnl 1940dnl Video4Linux 2 1941dnl 1942AC_ARG_ENABLE(v4l2, [AS_HELP_STRING([--disable-v4l2], 1943 [disable Video4Linux version 2 (default auto)])]) 1944have_v4l2="no" 1945AS_IF([test "$enable_v4l2" != "no"], [ 1946 AC_CHECK_HEADERS([linux/videodev2.h sys/videoio.h], [ 1947 have_v4l2="yes" 1948 ]) 1949]) 1950AM_CONDITIONAL(HAVE_V4L2, [test "${have_v4l2}" != "no"]) 1951 1952dnl 1953dnl special access module for Blackmagic SDI cards 1954dnl 1955AC_ARG_ENABLE(decklink, 1956 [AS_HELP_STRING([--disable-decklink], 1957 [disable Blackmagic DeckLink SDI input (default auto)])]) 1958AC_ARG_WITH(decklink_sdk, 1959 [AS_HELP_STRING[--with-decklink-sdk=DIR], 1960 [ location of Blackmagic DeckLink SDI SDK])]) 1961have_decklink=no 1962if test "${enable_decklink}" != "no" 1963then 1964 if test "${with_decklink_sdk}" != "no" -a -n "${with_decklink_sdk}" 1965 then 1966 VLC_ADD_CPPFLAGS([decklink decklinkoutput],[-I${with_decklink_sdk}/include]) 1967 fi 1968 VLC_SAVE_FLAGS 1969 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_decklink}" 1970 AC_LANG_PUSH(C++) 1971 AC_CHECK_HEADERS(DeckLinkAPIDispatch.cpp, [ 1972 have_decklink=yes 1973 ], [ 1974 AC_MSG_WARN(Blackmagic DeckLink SDI include files not found, decklink disabled) 1975 ]) 1976 AC_LANG_POP(C++) 1977 VLC_RESTORE_FLAGS 1978fi 1979AM_CONDITIONAL(HAVE_DECKLINK, [ test "${have_decklink}" != "no" ]) 1980 1981 1982dnl 1983dnl Built-in CD-DA and VCD module 1984dnl 1985AC_ARG_ENABLE(vcd, 1986 [AS_HELP_STRING([--disable-vcd], 1987 [disable built-in VCD and CD-DA support (default enabled)])]) 1988 1989AC_ARG_ENABLE(libcddb, 1990 [AS_HELP_STRING([--disable-libcddb], 1991 [disable CDDB for Audio CD (default enabled)])]) 1992 1993if test "${enable_vcd}" != "no" 1994then 1995 AC_MSG_CHECKING(for cdrom_msf0 in linux/cdrom.h) 1996 AC_EGREP_HEADER(cdrom_msf0,linux/cdrom.h,[ 1997 AC_MSG_RESULT(yes) 1998 VLC_ADD_PLUGIN([vcd cdda]) 1999 ],[ 2000 AC_MSG_RESULT(no) 2001 ]) 2002 2003 AC_MSG_CHECKING(for scsireq in sys/scsiio.h) 2004 AC_EGREP_HEADER(scsireq,sys/scsiio.h,[ 2005 AC_MSG_RESULT(yes) 2006 VLC_ADD_PLUGIN([vcd cdda]) 2007 AC_DEFINE(HAVE_SCSIREQ_IN_SYS_SCSIIO_H, 1, For NetBSD VCD support) 2008 ],[ 2009 AC_MSG_RESULT(no) 2010 ]) 2011 2012 AC_MSG_CHECKING(for ioc_toc_header in sys/cdio.h) 2013 AC_EGREP_HEADER(ioc_toc_header ,sys/cdio.h,[ 2014 AC_MSG_RESULT(yes) 2015 VLC_ADD_PLUGIN([vcd cdda]) 2016 AC_DEFINE(HAVE_IOC_TOC_HEADER_IN_SYS_CDIO_H, 1, For FreeBSD VCD support) 2017 ],[ 2018 AC_MSG_RESULT(no) 2019 ]) 2020 2021 if test "${SYS}" = "bsdi" -o "${SYS}" = "mingw32" -o "${SYS}" = "os2" -o "${SYS}" = "darwin" 2022 then 2023 VLC_ADD_PLUGIN([vcd cdda]) 2024 fi 2025 2026 if test "$enable_libcddb" != "no"; then 2027 PKG_CHECK_MODULES(LIBCDDB, [libcddb >= 0.9.5], [ 2028 HAVE_LIBCDDB=yes 2029 AC_DEFINE(HAVE_LIBCDDB, 1, [Define this if you have libcddb installed]) 2030 VLC_ADD_LIBS([cdda],[$LIBCDDB_LIBS]) 2031 VLC_ADD_CFLAGS([cdda],[$LIBCDDB_CFLAGS]) 2032 ],: 2033 [AC_MSG_WARN([${LIBCDDB_PKG_ERRORS}: CDDB access disabled.]) 2034 HAVE_LIBCDDB=no]) 2035 fi 2036fi 2037 2038dnl 2039dnl Linux DVB 2040dnl 2041AC_CACHE_CHECK([for Linux DVB version 5.1], [ac_cv_linux_dvb_5_1], [ 2042 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([ 2043[#include <linux/dvb/version.h> 2044#if (DVB_API_VERSION < 5) 2045# error Linux DVB API v3.2 and older are not supported. 2046#endif 2047#if (DVB_API_VERSION == 5 && DVB_API_VERSION_MINOR < 1) 2048# error Linux DVB API v5.0 is unsupported. Please update. 2049#endif 2050]])], [ 2051 ac_cv_linux_dvb_5_1=yes 2052], [ 2053 ac_cv_linux_dvb_5_1=no 2054])]) 2055AM_CONDITIONAL([HAVE_LINUX_DVB], [test "$ac_cv_linux_dvb_5_1" = "yes"]) 2056 2057dnl 2058dnl Screen capture module 2059dnl 2060AC_ARG_ENABLE(screen, 2061 [AS_HELP_STRING([--enable-screen], 2062 [disable screen capture (default enabled)])]) 2063if test "${enable_screen}" != "no"; then 2064 if test "${SYS}" = "darwin"; then 2065 AC_CHECK_HEADERS(ApplicationServices/ApplicationServices.h, [ 2066 VLC_ADD_PLUGIN([screen]) 2067 ]) 2068 fi 2069fi 2070AM_CONDITIONAL(HAVE_MAC_SCREEN, [test "${SYS}" = "darwin" -a "x${enable_screen}" != "xno"]) 2071 2072dnl 2073dnl VNC/RFB access module 2074dnl 2075PKG_ENABLE_MODULES_VLC([VNC], [vnc], [libvncclient >= 0.9.9], (VNC/rfb client support), [auto]) 2076 2077dnl RDP/Remote Desktop access module 2078dnl 2079PKG_ENABLE_MODULES_VLC([FREERDP], [rdp], [freerdp >= 1.0.1], (RDP/Remote Desktop client support) ) 2080 2081dnl 2082dnl Real RTSP plugin 2083dnl 2084AC_ARG_ENABLE(realrtsp, 2085 [ --enable-realrtsp Real RTSP module (default disabled)]) 2086if test "${enable_realrtsp}" = "yes"; then 2087 VLC_ADD_PLUGIN([access_realrtsp]) 2088fi 2089 2090dnl AVFoundation 2091AC_SUBST(have_avfoundation, ["no"]) 2092AC_ARG_ENABLE(macosx-avfoundation, 2093 [ --enable-macosx-avfoundation Mac OS X avcapture (video) module (default enabled on Mac OS X)]) 2094if test "x${enable_macosx_avfoundation}" != "xno" && 2095 (test "${SYS}" = "darwin" || test "${enable_macosx_avfoundation}" = "yes") 2096then 2097 SAVED_LIBS="${LIBS}" 2098 LIBS="-framework AVFoundation" 2099 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [])],[have_avfoundation=yes],[have_avfoundation=no]) 2100 LIBS="${SAVED_LIBS}" 2101 if test "${have_avfoundation}" != "no" 2102 then 2103 VLC_ADD_PLUGIN([avcapture]) 2104 fi 2105fi 2106AM_CONDITIONAL(HAVE_AVFOUNDATION, [test "${have_avfoundation}" != "no"]) 2107 2108dnl 2109dnl DCP plugin (using asdcplib) 2110dnl 2111PKG_WITH_MODULES([ASDCP], [asdcplib], [have_asdcp="yes"]) 2112AM_CONDITIONAL(HAVE_ASDCP, [test "${have_asdcp}" = "yes"]) 2113 2114dnl 2115dnl Demux plugins 2116dnl 2117 2118EXTEND_HELP_STRING([Mux/Demux plugins:]) 2119 2120dnl 2121dnl libdvbpsi check for ts mux/demux 2122dnl 2123have_dvbpsi="no" 2124PKG_WITH_MODULES([DVBPSI], [libdvbpsi >= 1.2.0], [have_dvbpsi="yes"]) 2125AM_CONDITIONAL(HAVE_DVBPSI, [test "${have_dvbpsi}" = "yes"]) 2126 2127 2128dnl 2129dnl GME demux plugin 2130dnl 2131AC_ARG_ENABLE(gme, 2132 [AS_HELP_STRING([--enable-gme], 2133 [use Game Music Emu (default auto)])]) 2134AS_IF([test "${enable_gme}" != "no"], [ 2135 AC_CHECK_HEADER([gme/gme.h], [ 2136 AC_CHECK_LIB([gme], [gme_identify_header], [ 2137 VLC_ADD_PLUGIN([gme]) 2138 ], [ 2139 AC_CHECK_LIB([gme], [gme_identify_extension], [ 2140 VLC_ADD_LIBS([gme], [-lstdc++ $LIBM]) 2141 VLC_ADD_PLUGIN([gme]) 2142 ],, [-lstdc++ $LIBM]) 2143 ]) 2144 VLC_ADD_LIBS([gme], [-lgme]) 2145 ], [ 2146 AS_IF([test "x${enable_gme}" != "x"], [ 2147 AC_MSG_ERROR([GME cannot be found. Please install the development files.]) 2148 ]) 2149 ]) 2150]) 2151 2152 2153dnl 2154dnl SIDPlay plugin 2155dnl 2156AC_ARG_ENABLE(sid, 2157 [AS_HELP_STRING([--enable-sid],[C64 sid demux support (default auto)])]) 2158AS_IF([test "${enable_sid}" != "no"], [ 2159 PKG_CHECK_MODULES(SID, [libsidplay2], [ 2160 AC_LANG_PUSH(C++) 2161 oldCPPFLAGS="$CPPFLAGS" 2162 CPPFLAGS="$CPPFLAGS $SID_CFLAGS" 2163 AC_CHECK_HEADER([sidplay/builders/resid.h], [ 2164 VLC_ADD_PLUGIN([sid]) 2165 VLC_ADD_CFLAGS([sid], [$SID_CFLAGS]) 2166 VLC_ADD_LIBS([sid], [$SID_LIBS] [-lresid-builder]) 2167 ], [ 2168 AS_IF([test -n "${enable_sid}"], 2169 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])], 2170 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])] 2171 ) 2172 ]) 2173 CPPFLAGS="$oldCPPFLAGS" 2174 AC_LANG_POP(C++) 2175 ], [ 2176 AS_IF([test "x${enable_sid}" = "xyes"], 2177 [AC_MSG_ERROR([${SID_PKG_ERRORS} (required for sid).])], 2178 [AC_MSG_WARN([${SID_PKG_ERRORS} (required for sid).])] 2179 ) 2180 ]) 2181]) 2182 2183 2184dnl 2185dnl ogg demux plugin 2186dnl 2187PKG_ENABLE_MODULES_VLC([OGG], [mux_ogg], [ogg >= 1.0], [Ogg demux support], [auto]) 2188PKG_CHECK_MODULES(LIBVORBIS, [vorbis >= 1.1], [ 2189 AC_DEFINE(HAVE_LIBVORBIS, 1, [Define to 1 if you have the libvorbis]) 2190],[true]) 2191PKG_ENABLE_MODULES_VLC([OGG], [], [ogg >= 1.0], [Ogg demux support], [auto], [${LIBVORBIS_CFLAGS}], [${LIBVORBIS_LIBS}]) 2192if test "${enable_sout}" != "no"; then 2193dnl Check for libshout 2194 PKG_ENABLE_MODULES_VLC([SHOUT], [access_output_shout], [shout >= 2.1], [libshout output plugin], [auto]) 2195fi 2196 2197dnl 2198dnl matroska demux plugin 2199dnl 2200PKG_ENABLE_MODULES_VLC([MATROSKA], [mkv], [libebml >= 1.3.6 libmatroska], [MKV format support], [auto]) 2201 2202dnl 2203dnl modplug demux plugin 2204dnl 2205AC_ARG_ENABLE(mod, 2206 [AS_HELP_STRING([--disable-mod], 2207 [do not use libmodplug (default auto)])]) 2208if test "${enable_mod}" != "no" ; then 2209 PKG_CHECK_MODULES(LIBMODPLUG, [libmodplug >= 0.8.9.0], [ 2210 VLC_ADD_PLUGIN([mod]) 2211 VLC_ADD_CXXFLAGS([mod],[$LIBMODPLUG_CFLAGS]) 2212 VLC_ADD_CFLAGS([mod],[$LIBMODPLUG_CFLAGS]) #modules/demux/mod.c needs CFLAGS_mod, not CXXFLAGS_mod 2213 VLC_ADD_LIBS([mod],[$LIBMODPLUG_LIBS]) 2214 ],[ 2215 AS_IF([test -n "${enable_mod}"], 2216 [AC_MSG_ERROR([${LIBMODPLUG_PKG_ERRORS}.])], 2217 [AC_MSG_WARN([${LIBMODPLUG_PKG_ERRORS}.])]) 2218 ]) 2219fi 2220 2221dnl 2222dnl mpc demux plugin 2223dnl 2224AC_ARG_ENABLE(mpc, 2225 [AS_HELP_STRING([--disable-mpc], [do not use libmpcdec (default auto)])]) 2226if test "${enable_mpc}" != "no" 2227then 2228 AC_CHECK_HEADERS([mpc/mpcdec.h], [ 2229 VLC_ADD_PLUGIN([mpc]) 2230 VLC_ADD_LIBS([mpc],[-lmpcdec])], 2231 [AC_CHECK_HEADERS([mpcdec/mpcdec.h], [ 2232 VLC_ADD_PLUGIN([mpc]) 2233 VLC_ADD_LIBS([mpc],[-lmpcdec])])]) 2234fi 2235 2236dnl 2237dnl Codec plugins 2238dnl 2239 2240EXTEND_HELP_STRING([Codec plugins:]) 2241 2242dnl 2243dnl wmafixed plugin 2244dnl 2245AC_ARG_ENABLE(wma-fixed, 2246 [ --enable-wma-fixed libwma-fixed module (default disabled)]) 2247if test "${enable_wma_fixed}" = "yes" 2248then 2249 VLC_ADD_PLUGIN([wma_fixed]) 2250fi 2251 2252dnl 2253dnl shine encoder plugin 2254dnl 2255PKG_ENABLE_MODULES_VLC([SHINE], [], [shine >= 3.0.0], [MPEG Audio Layer 3 encoder], [auto], [], [], []) 2256 2257 2258dnl 2259dnl openmax il codec plugin 2260dnl 2261AC_ARG_ENABLE(omxil, 2262 [ --enable-omxil openmax il codec module (default disabled)]) 2263if test "${enable_omxil}" = "yes" 2264then 2265 VLC_ADD_PLUGIN([omxil]) 2266fi 2267 2268dnl 2269dnl openmax il vout plugin 2270dnl 2271AC_ARG_ENABLE(omxil-vout, 2272 [ --enable-omxil-vout openmax il video output module (default disabled)]) 2273if test "${enable_omxil_vout}" = "yes" 2274then 2275 VLC_ADD_PLUGIN([omxil_vout]) 2276fi 2277 2278dnl 2279dnl raspberry pi openmax il configuration 2280dnl 2281AC_ARG_ENABLE(rpi-omxil, 2282 [ --enable-rpi-omxil openmax il configured for raspberry pi (default disabled)]) 2283if test "${enable_rpi_omxil}" = "yes" 2284then 2285 VLC_ADD_PLUGIN([omxil omxil_vout]) 2286 VLC_ADD_CFLAGS([omxil omxil_vout],[-DRPI_OMX]) 2287fi 2288 2289dnl 2290dnl CrystalHD codec plugin 2291dnl 2292AC_ARG_ENABLE(crystalhd, 2293 [ --enable-crystalhd crystalhd codec plugin (default auto)]) 2294if test "${enable_crystalhd}" != "no"; then 2295 AC_CHECK_HEADER(libcrystalhd/libcrystalhd_if.h, [ 2296 VLC_ADD_PLUGIN([crystalhd]) 2297 VLC_ADD_LIBS([crystalhd], [-lcrystalhd]) 2298 ],[ 2299 if test "${SYS}" = "mingw32" ; then 2300 AC_CHECK_HEADERS(libcrystalhd/bc_dts_defs.h, [ 2301 VLC_ADD_PLUGIN([crystalhd]) 2302 AC_CHECK_HEADERS(libcrystalhd/bc_drv_if.h, [ 2303 VLC_ADD_LIBS([crystalhd], [-lbcmDIL]) 2304 ]) 2305 ],[ 2306 AS_IF([test x"${enable_crystalhd}" = "xyes"], 2307 [AC_MSG_ERROR("Could not find CrystalHD development headers")], 2308 [AC_MSG_WARN("Could not find CrystalHD development headers")]) 2309 ],[#define __LINUX_USER__ 2310 #include <libcrystalhd/bc_dts_types.h> 2311 ]) 2312 fi 2313 ],[ 2314 #include <libcrystalhd/bc_dts_types.h> 2315 ]) 2316fi 2317 2318dnl 2319dnl mad plugin 2320dnl 2321have_mad="no" 2322MAD_CFLAGS="" 2323MAD_LIBS="" 2324 2325AC_ARG_WITH(mad, [ --with-mad=PATH path to libmad], [ 2326 enable_mad="yes" 2327], [ 2328 with_mad="no" 2329]) 2330AS_IF([test "${with_mad}" != "no"], [ 2331 MAD_CFLAGS="-I${with_mad}/include" 2332 MAD_LIBS="-L${with_mad}/lib" 2333]) 2334 2335AC_ARG_ENABLE(mad, 2336 [ --enable-mad libmad module (default enabled)]) 2337AS_IF([test "${enable_mad}" != "no"], [ 2338 VLC_SAVE_FLAGS 2339 CPPFLAGS="${CPPFLAGS} ${MAD_CFLAGS}" 2340 LDFLAGS="${LDFLAGS} ${MAD_LIBS}" 2341 AC_CHECK_HEADERS(mad.h, [ 2342 AC_CHECK_LIB(mad, mad_bit_init, [ 2343 have_mad="yes" 2344 MAD_LIBS="${MAD_LIBS} -lmad" 2345 ]) 2346 ]) 2347 VLC_RESTORE_FLAGS 2348 AS_IF([test -n "$enable_mad" -a "${have_mad}" = "no"], [ 2349 AC_MSG_ERROR([Could not find libmad. Install it or pass --disable-mad to disable it.]) 2350 ]) 2351]) 2352AC_SUBST(MAD_CFLAGS) 2353AC_SUBST(MAD_LIBS) 2354AM_CONDITIONAL([HAVE_MAD], [test "${have_mad}" = "yes"]) 2355 2356dnl mpg123 plugin 2357dnl 2358dnl 2359PKG_ENABLE_MODULES_VLC([MPG123], [mpg123], [libmpg123], [libmpg123 decoder support], [auto]) 2360 2361dnl 2362dnl gstreamer stuff 2363dnl 2364AC_ARG_ENABLE(gst-decode, 2365 [ --enable-gst-decode GStreamer based decoding support (currently supports only video decoding) (default auto)]) 2366 2367have_gst_decode="no" 2368AS_IF([test "${enable_gst_decode}" != "no"], [ 2369 PKG_CHECK_MODULES([GST_APP], [gstreamer-app-1.0], [ 2370 PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-1.0], [ 2371 have_gst_decode="yes" 2372 ], [ 2373 AC_MSG_WARN([${GST_VIDEO_PKG_ERRORS}. GStreamer decoder module will not be built.]) 2374 ]) 2375 ], [ 2376 AC_MSG_WARN([${GST_APP_PKG_ERRORS}. GStreamer modules will not be built.]) 2377 ]) 2378]) 2379AM_CONDITIONAL([HAVE_GST_DECODE], [test "${have_gst_decode}" = "yes"]) 2380 2381dnl 2382dnl avcodec decoder/encoder plugin 2383dnl 2384AC_ARG_ENABLE(merge-ffmpeg, 2385[ --enable-merge-ffmpeg merge FFmpeg-based plugins (default disabled)],, [ 2386 enable_merge_ffmpeg="no" 2387]) 2388AM_CONDITIONAL([MERGE_FFMPEG], [test "$enable_merge_ffmpeg" != "no"]) 2389 2390AC_MSG_CHECKING([for libavutil variant]) 2391PKG_CHECK_EXISTS([libavutil], [ 2392 libavutil_version="$(${PKG_CONFIG} --modversion libavutil)" 2393 libavutil_micro="${libavutil_version##*.}" 2394 AS_IF([test ${libavutil_micro} -le 99], [ 2395 avfork="libav" 2396 ], [ 2397 avfork="ffmpeg" 2398 ]) 2399], [ 2400 avfork="none" 2401]) 2402AC_MSG_RESULT([${avfork}]) 2403 2404AC_ARG_ENABLE(avcodec, 2405[ --enable-avcodec libavcodec codec (default enabled)]) 2406AS_IF([test "${enable_avcodec}" != "no"], [ 2407 dnl We need >=57.16.0 from libav or >=57.37.100 from ffmpeg 2408 case "${avfork}" in 2409 libav) av_codec_ver="57.16.0" ;; 2410 ffmpeg) av_codec_ver="57.37.100" ;; 2411 *) AC_MSG_ERROR([Missing libav or FFmpeg. Pass --disable-avcodec to ignore this error.]) 2412 esac 2413 PKG_CHECK_MODULES(AVCODEC,[libavcodec >= ${av_codec_ver} libavutil >= 52.0.0], [ 2414 VLC_SAVE_FLAGS 2415 CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" 2416 CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}" 2417 AC_CHECK_HEADERS(libavcodec/avcodec.h) 2418 AC_CHECK_HEADERS(libavutil/avutil.h) 2419 VLC_RESTORE_FLAGS 2420 have_avcodec="yes" 2421 ],[ 2422 AC_MSG_ERROR([${AVCODEC_PKG_ERRORS}. Pass --disable-avcodec to ignore this error.]) 2423 ]) 2424], [ 2425 have_avcodec="no" 2426]) 2427AM_CONDITIONAL([HAVE_AVCODEC], [test "${have_avcodec}" != "no"]) 2428 2429dnl 2430dnl libva needs avcodec 2431dnl 2432AC_ARG_ENABLE(libva, 2433 [ --enable-libva VAAPI GPU decoding support (libVA) (default auto)]) 2434 2435AS_IF([test "${enable_libva}" = "yes" -a "${have_avcodec}" != "yes" ], [ 2436 AC_MSG_ERROR([--enable-libva and --disable-avcodec options are mutually exclusive. Use --enable-avcodec.]) 2437]) 2438 2439have_vaapi="no" 2440have_vaapi_drm="no" 2441have_vaapi_x11="no" 2442have_vaapi_wl="no" 2443AS_IF([test "${enable_libva}" != "no"], [ 2444 PKG_CHECK_MODULES([LIBVA], [libva >= 0.38], [ 2445 have_vaapi="yes" 2446 ], [ 2447 AS_IF([test -n "${enable_libva}"], [ 2448 AC_MSG_ERROR([${LIBVA_PKG_ERRORS}.]) 2449 ], [ 2450 AC_MSG_WARN([${LIBVA_PKG_ERRORS}.]) 2451 ]) 2452 ]) 2453 PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm], [ 2454 have_vaapi_drm="yes" 2455 ], [ 2456 AC_MSG_WARN([${LIBVA_DRM_PKG_ERRORS}.]) 2457 ]) 2458 PKG_CHECK_MODULES(LIBVA_X11, [libva-x11], [ 2459 have_vaapi_x11="yes" 2460 ], [ 2461 AC_MSG_WARN([${LIBVA_X11_PKG_ERRORS}.]) 2462 ]) 2463 PKG_CHECK_MODULES(LIBVA_WL, [libva-wayland], [ 2464 have_vaapi_wl="yes" 2465 ], [ 2466 AC_MSG_WARN([${LIBVA_WL_PKG_ERRORS}.]) 2467 ]) 2468]) 2469AM_CONDITIONAL([HAVE_VAAPI], [test "${have_vaapi}" = "yes"]) 2470AM_CONDITIONAL([HAVE_VAAPI_DRM], [test "${have_vaapi_drm}" = "yes"]) 2471AM_CONDITIONAL([HAVE_VAAPI_X11], [test "${have_vaapi_x11}" = "yes"]) 2472AM_CONDITIONAL([HAVE_VAAPI_WL], [test "${have_vaapi_wl}" = "yes"]) 2473 2474have_avcodec_vaapi="no" 2475AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [ 2476 VLC_SAVE_FLAGS 2477 CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" 2478 CFLAGS="${CFLAGS} ${AVCODEC_CFLAGS}" 2479 AC_CHECK_HEADERS([libavcodec/vaapi.h], [ 2480 AC_MSG_NOTICE([VA API acceleration activated]) 2481 have_avcodec_vaapi="yes" 2482 ],[ 2483 AS_IF([test -n "${enable_libva}"], [ 2484 AC_MSG_ERROR([libva is present but libavcodec/vaapi.h is missing]) 2485 ], [ 2486 AC_MSG_WARN([libva is present but libavcodec/vaapi.h is missing ]) 2487 ]) 2488 ]) 2489 VLC_RESTORE_FLAGS 2490]) 2491AM_CONDITIONAL([HAVE_AVCODEC_VAAPI], [test "${have_avcodec_vaapi}" = "yes"]) 2492 2493dnl 2494dnl dxva2 needs avcodec 2495dnl 2496AC_ARG_ENABLE(dxva2, 2497 [ --enable-dxva2 DxVA2 GPU decoding support (default auto)]) 2498 2499have_avcodec_dxva2="no" 2500AS_IF([test "${enable_dxva2}" != "no"], [ 2501 if test "${SYS}" = "mingw32"; then 2502 AS_IF([test "x${have_avcodec}" = "xyes"], [ 2503 AC_CHECK_HEADERS(dxva2api.h, 2504 [ 2505 AC_CHECK_HEADERS(libavcodec/dxva2.h, [ 2506 AC_MSG_NOTICE([DxVA2 acceleration activated]) 2507 have_avcodec_dxva2="yes" 2508 ],[ 2509 AS_IF([test "${enable_dxva2}" = "yes"], 2510 [AC_MSG_ERROR([dxva2 is present but libavcodec/dxva2.h is missing])], 2511 [AC_MSG_WARN([dxva2 is present but libavcodec/dxva2.h is missing ])]) 2512 ], [#undef _WIN32_WINNT 2513 /* DXVA2 is only available in Vista and above */ 2514 #define _WIN32_WINNT 0x600]) 2515 ],[ 2516 AS_IF([test "${enable_dxva2}" = "yes"], 2517 [AC_MSG_ERROR([Could not find required dxva2api.h])], 2518 [AC_MSG_WARN([dxva2api.h not found])]) 2519 ],[#include <d3d9.h>]) 2520 ],[ 2521 AS_IF([test "x${enable_dxva2}" != "x"], [ 2522 AC_MSG_ERROR([--enable-dxva2 and --disable-avcodec options are mutually exclusive.]) 2523 ]) 2524 ]) 2525 fi 2526]) 2527AM_CONDITIONAL([HAVE_AVCODEC_DXVA2], [test "${have_avcodec_dxva2}" = "yes"]) 2528 2529dnl 2530dnl d3d11va needs avcodec 2531dnl 2532AC_ARG_ENABLE(d3d11va, 2533 [ --enable-d3d11va D3D11 GPU decoding support (default auto)]) 2534 2535have_avcodec_d3d11va="no" 2536AS_IF([test "${enable_d3d11va}" != "no"], [ 2537 if test "${SYS}" = "mingw32"; then 2538 AS_IF([test "x${have_avcodec}" = "xyes"], [ 2539 AC_CHECK_TYPES([ID3D11VideoDecoder], 2540 [ 2541 AC_CHECK_HEADERS(dxva2api.h, 2542 [ 2543 AC_CHECK_HEADERS(libavcodec/d3d11va.h, [ 2544 AC_MSG_NOTICE([D3D11 acceleration activated]) 2545 AC_DEFINE(HAVE_AVCODEC_D3D11VA, 1, [Define if the d3d11va module is built]) 2546 have_avcodec_d3d11va="yes" 2547 ],[ 2548 AS_IF([test "${enable_d3d11va}" = "yes"], 2549 [AC_MSG_ERROR([d3d11va is present but libavcodec/d3d11va.h is missing])], 2550 [AC_MSG_WARN([d3d11va is present but libavcodec/d3d11va.h is missing ])]) 2551 ], [#undef _WIN32_WINNT 2552 /* D3D11 is only available in Vista and above */ 2553 #define _WIN32_WINNT 0x600]) 2554 ],[ 2555 AS_IF([test "${enable_d3d11va}" = "yes"], 2556 [AC_MSG_ERROR([Could not find required dxva2api.h])], 2557 [AC_MSG_WARN([dxva2api.h not found])]) 2558 ],[#include <d3d9.h>]) 2559 ],[ 2560 AS_IF([test "${enable_d3d11va}" = "yes"], 2561 [AC_MSG_ERROR([Could not find required ID3D11VideoDecoder in d3d11.h])], 2562 [AC_MSG_WARN([ID3D11VideoDecoder not found])]) 2563 ], [#include <d3d11.h>]) 2564 ],[ 2565 AS_IF([test "x${enable_d3d11va}" != "x"], [ 2566 AC_MSG_ERROR([--enable-d3d11va and --disable-avcodec options are mutually exclusive.]) 2567 ]) 2568 ]) 2569 fi 2570]) 2571AM_CONDITIONAL([HAVE_AVCODEC_D3D11VA], [test "${have_avcodec_d3d11va}" = "yes"]) 2572 2573dnl 2574dnl DXGI debug 2575dnl 2576AC_CHECK_HEADERS(dxgidebug.h dxgi1_6.h d3d11_4.h) 2577 2578dnl 2579dnl avformat demuxer/muxer plugin 2580dnl 2581 2582AC_ARG_ENABLE(avformat, 2583[ --enable-avformat libavformat containers (default enabled)],, [ 2584 enable_avformat="${have_avcodec}" 2585]) 2586have_avformat="no" 2587AS_IF([test "${enable_avformat}" != "no"], [ 2588 PKG_CHECK_MODULES(AVFORMAT,[libavformat >= 53.21.0 libavcodec libavutil], [ 2589 have_avformat="yes" 2590 VLC_SAVE_FLAGS 2591 CPPFLAGS="${CPPFLAGS} ${AVFORMAT_CFLAGS}" 2592 CFLAGS="${CFLAGS} ${AVFORMAT_CFLAGS}" 2593 AC_CHECK_HEADERS(libavformat/avformat.h libavformat/avio.h) 2594 AC_CHECK_HEADERS(libavcodec/avcodec.h) 2595 AC_CHECK_HEADERS(libavutil/avutil.h) 2596 AS_IF([test "$enable_merge_ffmpeg" = "no"], [ 2597 have_avformat="no" 2598 ]) 2599 VLC_RESTORE_FLAGS 2600 ],[ 2601 AC_MSG_ERROR([${AVFORMAT_PKG_ERRORS}. Pass --disable-avformat to ignore this error.]) 2602 ]) 2603]) 2604AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"]) 2605 2606dnl 2607dnl swscale image scaling and conversion plugin 2608dnl 2609 2610AC_ARG_ENABLE(swscale, 2611 AS_HELP_STRING([--enable-swscale],[libswscale image scaling and conversion 2612 (default enabled)])) 2613if test "${enable_swscale}" != "no" 2614then 2615 PKG_CHECK_MODULES(SWSCALE,[libswscale], 2616 [ 2617 VLC_SAVE_FLAGS 2618 CPPFLAGS="${CPPFLAGS} ${SWSCALE_CFLAGS}" 2619 CFLAGS="${CFLAGS} ${SWSCALE_CFLAGS}" 2620 AC_CHECK_HEADERS(libswscale/swscale.h) 2621 AC_CHECK_HEADERS(libavutil/avutil.h) 2622 VLC_ADD_PLUGIN([swscale]) 2623 VLC_ADD_LIBS([swscale],[$SWSCALE_LIBS]) 2624 VLC_ADD_CFLAGS([swscale],[$SWSCALE_CFLAGS]) 2625 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [ 2626 VLC_ADD_LIBS([swscale],[${ac_cv_ld_bsymbolic}]) 2627 ]) 2628 VLC_RESTORE_FLAGS 2629 ],[ 2630 AC_MSG_ERROR([${SWSCALE_PKG_ERRORS}. Pass --disable-swscale to ignore this error. Proper software scaling and some video chroma conversion will be missing.]) 2631 ]) 2632fi 2633 2634dnl 2635dnl postproc plugin 2636dnl 2637 2638AC_ARG_ENABLE(postproc, 2639[ --enable-postproc libpostproc image post-processing (default auto)]) 2640if test "${enable_postproc}" != "no" 2641then 2642 PKG_CHECK_MODULES(POSTPROC,[libpostproc libavutil], 2643 [ 2644 VLC_SAVE_FLAGS 2645 CPPFLAGS="${CPPFLAGS} ${POSTPROC_CFLAGS}" 2646 CFLAGS="${CFLAGS} ${POSTPROC_CFLAGS}" 2647 AC_CHECK_HEADERS(postproc/postprocess.h) 2648 VLC_ADD_PLUGIN([postproc]) 2649 VLC_RESTORE_FLAGS 2650 ],[ 2651 AC_MSG_WARN([${POSTPROC_PKG_ERRORS}.]) 2652 ]) 2653fi 2654 2655dnl 2656dnl faad decoder plugin 2657dnl 2658AC_ARG_ENABLE(faad, 2659[ --enable-faad faad codec (default auto)]) 2660have_faad="no" 2661AS_IF([test "${enable_faad}" != "no"], [ 2662 AC_CHECK_HEADERS([neaacdec.h], [ 2663 AC_CHECK_LIB(faad, NeAACDecOpen, [have_faad="yes"],, [$LIBM]) 2664 2665 AS_IF([test "${have_faad}" = "yes"], [ 2666 VLC_ADD_PLUGIN([faad]) 2667 VLC_ADD_LIBS([faad],[-lfaad]) 2668 ], [ 2669 AS_IF([test "${enable_faad}" = "yes"], [ 2670 AC_MSG_ERROR([cannot find FAAD library]) 2671 ], [ 2672 AC_MSG_WARN([cannot find FAAD library]) 2673 ]) 2674 ]) 2675 ]) 2676]) 2677 2678dnl 2679dnl AOM decoder plugin 2680dnl 2681PKG_ENABLE_MODULES_VLC([AOM], [], [aom], [experimental AV1 codec (default auto)]) 2682 2683dnl 2684dnl Dav1d decoder plugin 2685dnl 2686PKG_ENABLE_MODULES_VLC([DAV1D], [], [dav1d], [AV1 decoder (default auto)]) 2687 2688dnl 2689dnl libvpx decoder plugin 2690dnl 2691AC_ARG_ENABLE(vpx, 2692 AS_HELP_STRING([--enable-vpx],[libvpx VP8/VP9 encoder and decoder (default auto)])) 2693AS_IF([test "${enable_vpx}" != "no"],[ 2694 PKG_CHECK_MODULES([VPX], [vpx >= 1.5.0], [ 2695 VLC_ADD_PLUGIN([vpx]) 2696 VLC_ADD_CPPFLAGS([vpx], [${VPX_CFLAGS}]) 2697 VLC_ADD_LIBS([vpx], [${VPX_LIBS}]) 2698 AC_CHECK_LIB([vpx],[vpx_codec_vp8_dx], [ 2699 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_DECODER]) 2700 ], [], [${VPX_LIBS}]) 2701 AC_CHECK_LIB([vpx],[vpx_codec_vp9_dx], [ 2702 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_DECODER]) 2703 ], [], [${VPX_LIBS}]) 2704 AC_CHECK_LIB([vpx],[vpx_codec_vp8_cx], [ 2705 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP8_ENCODER]) 2706 ], [], [${VPX_LIBS}]) 2707 AC_CHECK_LIB([vpx],[vpx_codec_vp9_cx], [ 2708 VLC_ADD_CPPFLAGS([vpx], [-DENABLE_VP9_ENCODER]) 2709 ], [], [${VPX_LIBS}]) 2710 ], [ 2711 AS_IF([test "${enable_vpx}" = "yes"],[ 2712 AC_MSG_ERROR([libvpx 1.5.0 or higher was not found]) 2713 ])]) 2714]) 2715 2716dnl 2717dnl twolame encoder plugin 2718dnl 2719PKG_ENABLE_MODULES_VLC([TWOLAME], [], [twolame], [MPEG Audio Layer 2 encoder], [auto], [], [], [ -DLIBTWOLAME_STATIC]) 2720 2721dnl 2722dnl fdk-aac encoder plugin 2723dnl 2724PKG_ENABLE_MODULES_VLC([FDKAAC], [], [fdk-aac], [FDK-AAC encoder], [disabled]) 2725 2726 2727dnl 2728dnl A52/AC3 decoder plugin 2729dnl 2730AC_ARG_ENABLE(a52, 2731 [ --enable-a52 A/52 support with liba52 (default enabled)]) 2732if test "${enable_a52}" != "no" 2733then 2734 AC_ARG_WITH(a52, 2735 [ --with-a52=PATH a52 headers and libraries]) 2736 if test -z "${with_a52}" 2737 then 2738 LDFLAGS_test="" 2739 CPPFLAGS_test="" 2740 else 2741 LDFLAGS_test="-L${with_a52}/lib" 2742 CPPFLAGS_test="-I${with_a52}/include" 2743 fi 2744 VLC_SAVE_FLAGS 2745 CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_test} ${CPPFLAGS_a52}" 2746 LDFLAGS="${LDFLAGS} ${LDFLAGS_test} ${LIBS_a52}" 2747 AC_CHECK_HEADERS(a52dec/a52.h, [ 2748 AC_CHECK_LIB(a52, a52_free, [ 2749 VLC_ADD_PLUGIN([a52]) 2750 VLC_ADD_LIBS([a52],[${LDFLAGS_test} -la52 $LIBM]) 2751 VLC_ADD_CPPFLAGS([a52],[${CPPFLAGS_test}]) 2752 ],[ 2753 AC_MSG_ERROR([Could not find liba52 on your system: you may get it from http://liba52.sf.net/. Alternatively you can use --disable-a52 to disable the a52 plugin.]) 2754 ], [$LIBM]) 2755 ],[ 2756 AC_MSG_ERROR([Could not find liba52 on your system: you may get it from http://liba52.sf.net/. Alternatively you can use --disable-a52 to disable the a52 plugin.]) 2757 ]) 2758 VLC_RESTORE_FLAGS 2759fi 2760 2761dnl 2762dnl DTS Coherent Acoustics decoder plugin 2763dnl 2764PKG_ENABLE_MODULES_VLC([DCA], [dca], [libdca >= 0.0.5], [DTS Coherent Acoustics support with libdca], [auto]) 2765 2766dnl 2767dnl Flac plugin 2768dnl 2769PKG_ENABLE_MODULES_VLC([FLAC], [], [flac], [libflac decoder/encoder support], [auto]) 2770 2771dnl 2772dnl Libmpeg2 plugin 2773dnl 2774PKG_ENABLE_MODULES_VLC([LIBMPEG2], [], [libmpeg2 > 0.3.2], [libmpeg2 decoder support], [auto]) 2775 2776dnl 2777dnl Vorbis plugin 2778dnl 2779PKG_ENABLE_MODULES_VLC([VORBIS], [], [ogg vorbis >= 1.1 vorbisenc >= 1.1], [Vorbis decoder and encoder], [auto]) 2780 2781dnl 2782dnl Tremor plugin 2783dnl 2784AC_ARG_ENABLE(tremor, 2785 [ --enable-tremor Tremor decoder support (default disabled)]) 2786if test "${enable_tremor}" = "yes" 2787then 2788 AC_CHECK_HEADERS(tremor/ivorbiscodec.h, [ 2789 VLC_ADD_PLUGIN([tremor]) 2790 ],[]) 2791fi 2792 2793dnl 2794dnl Speex plugins 2795dnl 2796PKG_ENABLE_MODULES_VLC([SPEEX], [], [ogg speex >= 1.0.5], [Speex support], [auto]) 2797have_speexdsp="no" 2798AS_IF([test "${enable_speex}" != "no"], [ 2799 PKG_CHECK_MODULES([SPEEXDSP], [speexdsp], [ 2800 have_speexdsp="yes" 2801 ], [ 2802 AC_MSG_WARN([${SPEEXDSP_PKG_ERRORS}.]) 2803 ]) 2804]) 2805AM_CONDITIONAL([HAVE_SPEEXDSP], [test "$have_speexdsp" = "yes"]) 2806 2807dnl 2808dnl Opus plugin 2809dnl 2810PKG_ENABLE_MODULES_VLC([OPUS], [], [ogg opus >= 1.0.3], [Opus support], [auto]) 2811 2812dnl 2813dnl Ambisonic channel mixer and binauralizer plugin 2814dnl 2815PKG_ENABLE_MODULES_VLC([SPATIALAUDIO], [], [spatialaudio], [Ambisonic channel mixer and binauralizer], [auto]) 2816 2817dnl 2818dnl theora decoder plugin 2819dnl 2820PKG_ENABLE_MODULES_VLC([THEORA], [], [ogg theoradec >= 1.0 theoraenc], [experimental theora codec], [auto]) 2821 2822dnl 2823dnl OggSpots decoder plugin 2824dnl 2825PKG_ENABLE_MODULES_VLC([OGGSPOTS], [], [ogg], [experimental OggSpots codec], [auto]) 2826 2827dnl 2828dnl Daala decoder plugin 2829dnl 2830PKG_ENABLE_MODULES_VLC([DAALA], [], [daaladec daalaenc], [experimental daala codec], [disabled]) 2831 2832dnl 2833dnl schroedinger decoder plugin (for dirac format video) 2834dnl 2835PKG_ENABLE_MODULES_VLC([SCHROEDINGER], [], [schroedinger-1.0 >= 1.0.10], [dirac decoder and encoder using schroedinger], [auto]) 2836 2837dnl 2838dnl PNG decoder module 2839dnl 2840AC_ARG_ENABLE(png, 2841 [ --enable-png PNG support (default enabled)]) 2842AS_IF([test "${enable_png}" != "no"], [ 2843AC_CHECK_HEADERS(png.h, [ 2844 VLC_SAVE_FLAGS 2845 LDFLAGS="${LDFLAGS} -lz $LIBM" 2846 AC_CHECK_LIB(png, png_set_alpha_mode, [ 2847 VLC_ADD_PLUGIN([png]) 2848 ], [], [-lz $LIBM]) 2849 VLC_RESTORE_FLAGS 2850 ]) 2851]) 2852 2853dnl 2854dnl JPEG decoder module 2855dnl 2856AC_ARG_ENABLE(jpeg, 2857 [ --enable-jpeg JPEG support (default enabled)]) 2858AS_IF([test "${enable_jpeg}" != "no"], [ 2859AC_CHECK_HEADERS(jpeglib.h, [ 2860 VLC_ADD_PLUGIN([jpeg]) 2861 ]) 2862]) 2863 2864dnl 2865dnl BPG decoder module 2866dnl 2867AC_ARG_ENABLE(bpg, 2868 [ --enable-bpg BPG support (default disabled)]) 2869AS_IF([test "${enable_bpg}" != "no"], [ 2870AC_CHECK_HEADERS(libbpg.h, [ 2871 VLC_ADD_PLUGIN([bpg]) 2872 ]) 2873]) 2874 2875dnl 2876dnl H262 encoder plugin (lib262) 2877dnl 2878AC_ARG_ENABLE(x262, 2879 [ --enable-x262 H262 encoding support with static libx262 (default disabled)]) 2880if test "${enable_x262}" != "no"; then 2881 PKG_CHECK_MODULES(X262, x262, [ 2882 VLC_ADD_PLUGIN([x262]) 2883 VLC_ADD_LDFLAGS([x262],[${X262_LIBS}]) 2884 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [ 2885 VLC_ADD_LIBS([x262],[${av_cv_ld_bsymbolic}]) 2886 ]) 2887 VLC_ADD_CFLAGS([x262],[${X262_CFLAGS}]) 2888 if echo ${X262_LIBS} |grep -q 'pthreadGC2'; then 2889 VLC_ADD_CFLAGS([x262], [-DPTW32_STATIC_LIB]) 2890 fi 2891 ], [ 2892 if test "${enable_x262}" = "yes"; then 2893 AC_MSG_ERROR([x262 module doesn't work without staticly compiled libx262.a]) 2894 fi 2895 ]) 2896fi 2897 2898dnl x265 encoder 2899PKG_ENABLE_MODULES_VLC([X265],, [x265], [HEVC/H.265 encoder], [auto]) 2900 2901dnl 2902dnl H264 encoder plugin (using libx264) 2903dnl 2904AC_ARG_ENABLE(x264, 2905 [ --enable-x264 H264 encoding support with libx264 (default enabled)]) 2906if test "${enable_x264}" != "no"; then 2907 PKG_CHECK_MODULES(X264,x264 >= 0.148, [ 2908 VLC_ADD_PLUGIN([x264]) 2909 VLC_ADD_LIBS([x264],[${X264_LIBS}]) 2910 2911 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [ 2912 VLC_ADD_LDFLAGS([x264],[${ac_cv_ld_bsymbolic}]) 2913 ]) 2914 2915 VLC_ADD_CFLAGS([x264],[${X264_CFLAGS}]) 2916 if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then 2917 VLC_ADD_CFLAGS([x264], [-DPTW32_STATIC_LIB]) 2918 fi 2919 ],[ 2920 if test "${enable_x264}" = "yes"; then 2921 AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html]) 2922 fi 2923 ]) 2924fi 2925 2926dnl 2927dnl H264 encoder plugin (libx264 > 153) 2928dnl 2929AC_ARG_ENABLE(x26410b, 2930 [ --enable-x26410b H264 10-bit encoding support with libx264 (default enabled)]) 2931if test "${enable_x26410b}" != "no"; then 2932 PKG_CHECK_MODULES(X26410b,x264 >= 0.153, [ 2933 VLC_ADD_PLUGIN([x26410b]) 2934 VLC_ADD_LIBS([x26410b],[${X264_LIBS}]) 2935 2936 AS_IF([test -n "${ac_cv_ld_bsymbolic}"], [ 2937 VLC_ADD_LDFLAGS([x26410b],[${ac_cv_ld_bsymbolic}]) 2938 ]) 2939 2940 VLC_ADD_CFLAGS([x26410b],[${X264_CFLAGS}]) 2941 if echo ${X264_LIBS} |grep -q 'pthreadGC2'; then 2942 VLC_ADD_CFLAGS([x26410b], [-DPTW32_STATIC_LIB]) 2943 fi 2944 ],[ 2945 if test "${enable_x26410b}" = "yes"; then 2946 AC_MSG_ERROR([${X264_PKG_ERRORS}: you may get it from http://www.videolan.org/x264.html]) 2947 fi 2948 ]) 2949fi 2950 2951 2952dnl 2953dnl Intel QuickSync (aka MediaSDK) H264/H262 encoder 2954dnl 2955PKG_ENABLE_MODULES_VLC([MFX], [qsv], [libmfx], [Intel QuickSync MPEG4-Part10/MPEG2 (aka H.264/H.262) encoder], [auto]) 2956 2957dnl 2958dnl libfluidsynth (MIDI synthetizer) plugin 2959dnl 2960PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto]) 2961PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto]) 2962AC_CHECK_HEADERS(fluidlite.h, [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})]) 2963 2964dnl 2965dnl Teletext Modules 2966dnl vbi decoder plugin (using libzbvi) 2967dnl telx module 2968dnl uncompatible 2969dnl 2970AC_ARG_ENABLE(zvbi, 2971 AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with 2972 libzvbi (default enabled)])) 2973AC_ARG_ENABLE(telx, 2974 AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with 2975 zvbi) (default enabled if zvbi is absent)])) 2976 2977AS_IF( [test "${enable_zvbi}" != "no"],[ 2978 PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28], 2979 [ 2980 VLC_ADD_PLUGIN([zvbi]) 2981 AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built]) 2982 AS_IF( [test "${enable_telx}" = "yes"],[ 2983 AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.]) 2984 ]) 2985 ],[ 2986 AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.]) 2987 ]) 2988 ]) 2989AS_IF( [test "${enable_telx}" != "no" ],[ 2990 VLC_ADD_PLUGIN([telx]) 2991 ]) 2992 2993dnl 2994dnl libass subtitle rendering module 2995dnl 2996AC_ARG_ENABLE(libass, 2997 [ --enable-libass Subtitle support using libass (default enabled)]) 2998AS_IF( [test "${enable_libass}" != "no"], [ 2999 PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8], 3000 [ 3001 VLC_ADD_PLUGIN([libass]) 3002 3003 AC_CHECK_HEADERS(fontconfig/fontconfig.h, 3004 [VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG]) 3005 VLC_ADD_LIBS([libass],[-lfontconfig]) 3006 ]) 3007 ],[ 3008 AC_MSG_WARN([${LIBASS_PKG_ERRORS}.]) 3009 ]) 3010 ]) 3011 3012dnl 3013dnl ARIB subtitles rendering module 3014dnl 3015AC_ARG_ENABLE(aribsub, 3016 [ --enable-aribsub ARIB Subtitles support (default enabled)]) 3017AS_IF( [test "${enable_aribsub}" != "no" ],[ 3018 PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [ 3019 have_aribb24="yes" 3020 VLC_ADD_PLUGIN([aribsub]) 3021 VLC_ADD_LIBS([aribsub],[-laribb24]) 3022 AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.]) 3023 ],[ 3024 AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found) 3025 have_aribb24="no" 3026 ]) 3027]) 3028AM_CONDITIONAL([HAVE_ARIBB24], [test x"${have_aribb24}" = x"yes"]) 3029 3030dnl 3031dnl ARIB B25 3032dnl 3033PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto]) 3034 3035dnl 3036dnl kate decoder plugin 3037dnl 3038PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto]) 3039 3040dnl 3041dnl tiger rendering for kate decoder plugin 3042dnl 3043AC_ARG_ENABLE(tiger, 3044[ --enable-tiger Tiger rendering library for Kate streams (default auto)]) 3045AS_IF([test "${enable_tiger}" != "no"], [ 3046 PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [ 3047 AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[ 3048 AS_IF([test -n "${enable_tiger}"], [ 3049 AC_MSG_ERROR([${TIGER_PKG_ERRORS}.]) 3050 ]) 3051 ]) 3052]) 3053 3054dnl 3055dnl check if we can build the css selector engine 3056dnl 3057AC_ARG_ENABLE(css, 3058[ --enable-css CSS selector engine (default auto)]) 3059AS_IF([test "${enable_css}" != "no"], [ 3060 with_css="yes" 3061 AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built]) 3062]) 3063AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"]) 3064 3065 3066dnl 3067dnl Video plugins 3068dnl 3069 3070EXTEND_HELP_STRING([Video plugins:]) 3071 3072dnl 3073dnl OpenGL 3074dnl 3075PKG_CHECK_MODULES([EGL], [egl], [ 3076 have_egl="yes" 3077], [ 3078 have_egl="no" 3079]) 3080AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"]) 3081 3082have_gl="no" 3083PKG_CHECK_MODULES([GL], [gl], [ 3084 have_gl="yes" 3085], [ 3086 AC_MSG_CHECKING([for OpenGL]) 3087 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 3088#ifdef _WIN32 3089# include <GL/glew.h> 3090#endif 3091#include <GL/gl.h> 3092]], [ 3093 [int t0 = GL_TEXTURE0;]]) 3094 ], [ 3095 GL_CFLAGS="" 3096 have_gl="yes" 3097 AS_IF([test "${SYS}" != "mingw32"], [ 3098 GL_LIBS="-lGL" 3099 ], [ 3100 GL_LIBS="-lopengl32" 3101 ]) 3102 ]) 3103 AC_MSG_RESULT([${have_gl}]) 3104]) 3105AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"]) 3106AS_IF([test "${have_gl}" = "yes"], [ 3107 AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL]) 3108]) 3109 3110dnl OpenGL ES 2: depends on EGL 1.1 3111PKG_ENABLE_MODULES_VLC([GLES2], [], [glesv2], [OpenGL ES v2 support], [disabled]) 3112 3113dnl 3114dnl Xlib 3115dnl 3116 3117AC_PATH_XTRA() 3118AC_CHECK_HEADERS(X11/Xlib.h) 3119 3120dnl 3121dnl X C Bindings modules 3122dnl 3123AC_ARG_ENABLE(xcb, 3124 [ --enable-xcb X11 support with XCB (default enabled)],, [ 3125 AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [ 3126 enable_xcb="yes" 3127 ], [ 3128 enable_xcb="no" 3129 ]) 3130]) 3131AC_ARG_ENABLE(xvideo, 3132 [ --enable-xvideo XVideo support (default enabled)],, [ 3133 enable_xvideo="$enable_xcb" 3134]) 3135 3136have_xcb="no" 3137have_xcb_keysyms="no" 3138have_xcb_randr="no" 3139have_xcb_xvideo="no" 3140AS_IF([test "${enable_xcb}" != "no"], [ 3141 dnl libxcb 3142 PKG_CHECK_MODULES(XCB, [xcb >= 1.6]) 3143 have_xcb="yes" 3144 PKG_CHECK_MODULES(XCB_SHM, [xcb-shm]) 3145 PKG_CHECK_MODULES(XCB_COMPOSITE, [xcb-composite]) 3146 PKG_CHECK_MODULES(XPROTO, [xproto]) 3147 3148 AS_IF([test "${enable_xvideo}" != "no"], [ 3149 PKG_CHECK_MODULES(XCB_XV, [xcb-xv >= 1.1.90.1], [have_xcb_xvideo="yes"]) 3150 ]) 3151 3152 PKG_CHECK_MODULES(XCB_RANDR, [xcb-randr >= 1.3], [have_xcb_randr="yes"]) 3153 3154 dnl xcb-utils 3155 PKG_CHECK_MODULES(XCB_KEYSYMS, [xcb-keysyms >= 0.3.4], [have_xcb_keysyms="yes"], [ 3156 AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Hotkeys will not work.]) 3157 ]) 3158]) 3159AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"]) 3160AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"]) 3161AM_CONDITIONAL([HAVE_XCB_RANDR], [test "${have_xcb_randr}" = "yes"]) 3162AM_CONDITIONAL([HAVE_XCB_XVIDEO], [test "${have_xcb_xvideo}" = "yes"]) 3163 3164 3165dnl 3166dnl VDPAU needs X11 3167dnl 3168AC_ARG_ENABLE(vdpau, 3169 [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])]) 3170have_vdpau="no" 3171AS_IF([test "${enable_vdpau}" != "no"], [ 3172 PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [ 3173 have_vdpau="yes" 3174 AS_IF([test "${no_x}" = "yes"], [ 3175 AC_MSG_ERROR([VDPAU requires Xlib (X11).]) 3176 ]) 3177 ], [ 3178 AS_IF([test -n "${enable_vdpau}"], [ 3179 AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.]) 3180 ]) 3181 ]) 3182]) 3183AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"]) 3184 3185have_avcodec_vdpau="no" 3186AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [ 3187 case "${avfork}" in 3188 libav) av_vdpau_ver="56.10.0" ;; 3189 ffmpeg) av_vdpau_ver="56.19.100" ;; 3190 esac 3191 PKG_CHECK_EXISTS([libavcodec >= ${av_vdpau_ver}], [ 3192 have_avcodec_vdpau="yes" 3193 AC_MSG_NOTICE([VDPAU decoding acceleration activated]) 3194 ], [ 3195 AS_IF([test -n "${enable_vdpau}"], [ 3196 AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.]) 3197 ], [ 3198 AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.]) 3199 ]) 3200 ]) 3201]) 3202AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"]) 3203 3204 3205dnl 3206dnl Wayland 3207dnl 3208AC_ARG_ENABLE(wayland, 3209 [AS_HELP_STRING([--enable-wayland], [Incomplete Wayland support (default disabled)])]) 3210have_wayland="no" 3211have_wayland_egl="no" 3212 3213AS_IF([test "${enable_wayland}" = "yes"], [ 3214 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.5.91], [ 3215 AC_MSG_CHECKING([for the Wayland protocols]) 3216 PKG_CHECK_EXISTS([wayland-protocols >= 1.4], [ 3217 WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)" 3218 AC_MSG_RESULT([${WAYLAND_PROTOCOLS}]) 3219 ], [ 3220 AC_MSG_RESULT([not found]) 3221 AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors 'wayland-protocols >= 1.4')]) 3222 ]) 3223 3224 AC_MSG_CHECKING([for the Wayland scanner]) 3225 PKG_CHECK_EXISTS([wayland-scanner], [ 3226 WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)" 3227 AC_MSG_RESULT([${WAYLAND_SCANNER}]) 3228 ], [ 3229 AC_MSG_RESULT([not found]) 3230 AC_MSG_ERROR([$(${PKG_CONFIG} --print-errors wayland-scanner)]) 3231 ]) 3232 3233 have_wayland="yes" 3234 3235 AS_IF([test "${have_egl}" = "yes"], [ 3236 PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl], [ 3237 have_wayland_egl="yes" 3238 ], [ 3239 AC_MSG_ERROR([${WAYLAND_EGL_PKG_ERRORS}.]) 3240 ]) 3241 ]) 3242 ], [ 3243 AS_IF([test -n "${enable_wayland}"], [ 3244 AC_MSG_ERROR([${WAYLAND_CLIENT_PKG_ERRORS}.]) 3245 ]) 3246 ]) 3247]) 3248AC_SUBST([WAYLAND_PROTOCOLS]) 3249AC_SUBST([WAYLAND_SCANNER]) 3250AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"]) 3251AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "${have_wayland_egl}" = "yes"]) 3252 3253 3254dnl 3255dnl SDL image decoder module 3256dnl 3257AC_ARG_ENABLE(sdl-image, 3258 [ --enable-sdl-image SDL image support (default enabled)]) 3259AS_IF([test "${enable_sdl_image}" != "no"],[ 3260 PKG_CHECK_MODULES(SDL_IMAGE, [SDL_image >= 1.2.10], [ 3261 VLC_ADD_PLUGIN([sdl_image]) 3262 ], [ 3263 AC_MSG_WARN([${SDL_IMAGE_PKG_ERRORS}. You should install it alongside your SDL package.]) 3264 ]) 3265]) 3266 3267dnl 3268dnl freetype module 3269dnl 3270AC_ARG_ENABLE(freetype, 3271 [ --enable-freetype freetype support (default auto)]) 3272AC_ARG_ENABLE(fribidi, 3273 [ --enable-fribidi fribidi support (default auto)]) 3274AC_ARG_ENABLE(harfbuzz, 3275 [ --enable-harfbuzz harfbuzz support (default auto)]) 3276AC_ARG_ENABLE(fontconfig, 3277 [ --enable-fontconfig fontconfig support (default auto)]) 3278 3279AC_ARG_WITH([default-font], 3280 AS_HELP_STRING([--with-default-font=PATH], 3281 [Path to the default font]), 3282 [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE], 3283 "$withval", [Default font])]) 3284AC_ARG_WITH([default-monospace-font], 3285 AS_HELP_STRING([--with-default-monospace-font=PATH], 3286 [Path to the default font]), 3287 [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE], 3288 "$withval", [Default monospace font])]) 3289 3290AC_ARG_WITH([default-font-family], 3291 AS_HELP_STRING([--with-default-font-family=NAME], 3292 [Path to the default font family]), 3293 [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY], 3294 "$withval", [Default font family])]) 3295AC_ARG_WITH([default-monospace-font-family], 3296 AS_HELP_STRING([--with-default-monospace-font-family=NAME], 3297 [Path to the default font family]), 3298 [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY], 3299 "$withval", [Default monospace font family])]) 3300 3301have_freetype="no" 3302have_fontconfig="no" 3303have_fribidi="no" 3304have_harfbuzz="no" 3305 3306if test "${enable_freetype}" != "no"; then 3307 PKG_CHECK_MODULES(FREETYPE, freetype2, [ 3308 have_freetype="yes" 3309 VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}]) 3310 VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}]) 3311 3312 dnl fontconfig support 3313 AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [ 3314 PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [ 3315 have_fontconfig="yes" 3316 ], [ 3317 AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.]) 3318 ]) 3319 ]) 3320 3321 dnl fribidi support 3322 if test "${enable_fribidi}" != "no"; then 3323 PKG_CHECK_MODULES(FRIBIDI, fribidi, [ 3324 have_fribidi="yes" 3325 VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI]) 3326 VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}]) 3327 ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])]) 3328 fi 3329 3330 dnl harfbuzz support 3331 if test "${have_fribidi}" != "no"; then 3332 if test "${enable_harfbuzz}" != "no"; then 3333 PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [ 3334 have_harfbuzz="yes" 3335 VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ]) 3336 VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}]) 3337 ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])]) 3338 fi 3339 fi 3340 ],[ 3341 AS_IF([test -n "${enable_freetype}"],[ 3342 AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.]) 3343 ]) 3344 ]) 3345fi 3346 3347AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"]) 3348AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"]) 3349AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"]) 3350AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"]) 3351 3352dnl 3353dnl SAPI (text to Speech renderer for Windows) 3354dnl 3355AC_LANG_PUSH([C++]) 3356AC_CHECK_TYPES([ISpObjectToken],[ 3357 have_sapi="yes" 3358 ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])], 3359 [#include <windows.h> 3360 #include <sapi.h> 3361 #include <sphelper.h>]) 3362AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"]) 3363AC_LANG_POP([C++]) 3364 3365dnl 3366dnl SVG module (text rendering and image decoding) 3367dnl 3368PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto]) 3369PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto]) 3370 3371dnl 3372dnl Windows DirectX module 3373dnl 3374 3375AC_ARG_ENABLE(directx, 3376 [AS_HELP_STRING([--enable-directx], 3377 [Microsoft DirectX support (default enabled on Windows)])],, [ 3378 AS_IF([test "${SYS}" = "mingw32"], [ 3379 enable_directx="yes" 3380 ], [ 3381 enable_directx="no" 3382 ]) 3383]) 3384AS_IF([test "${enable_directx}" != "no"], [ 3385 dnl DirectDraw 3386 AC_CHECK_HEADERS(ddraw.h, [ 3387 VLC_ADD_PLUGIN([directdraw]) 3388 ]) 3389 3390 dnl OpenGL 3391 AC_CHECK_HEADERS(GL/wglew.h, [ 3392 VLC_ADD_PLUGIN([glwin32 wgl]) 3393 ],, [ 3394 #include <windows.h> 3395 #include <GL/gl.h> 3396 ]) 3397 3398 dnl Direct3D11 3399 AC_CHECK_HEADERS(d3d11.h, [ 3400 VLC_ADD_PLUGIN([direct3d11 direct3d11_filters]) 3401 ]) 3402 3403 dnl Direct3D9 3404 AC_CHECK_HEADERS(d3d9.h, [ 3405 VLC_ADD_PLUGIN([direct3d9]) 3406 AC_CHECK_HEADERS(d3dx9effect.h) 3407 3408 AC_PREPROC_IFELSE([AC_LANG_PROGRAM( 3409 [[#define COBJMACROS 3410 #include <d3d9.h> 3411 #include <dxva2api.h> 3412 #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids 3413 # error dxva2 too old 3414 #endif 3415 ]],[[;]]) 3416 ],[ 3417 VLC_ADD_PLUGIN([direct3d9_filters]) 3418 ], 3419 [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])]) 3420 3421 ]) 3422]) 3423 3424dnl 3425dnl Linux framebuffer module 3426dnl 3427AC_CHECK_HEADER([linux/fb.h], [ 3428 VLC_ADD_PLUGIN([fb]) 3429]) 3430 3431 3432dnl 3433dnl AA plugin 3434dnl 3435AC_ARG_ENABLE(aa, 3436 [ --enable-aa aalib output (default disabled)]) 3437if test "${enable_aa}" = "yes" 3438then 3439 AC_CHECK_HEADER(aalib.h,have_aa="true",have_aa="false") 3440 if test "${have_aa}" = "true" 3441 then 3442 VLC_ADD_PLUGIN([aa]) 3443 fi 3444fi 3445 3446dnl 3447dnl libcaca plugin 3448dnl 3449PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto]) 3450 3451dnl 3452dnl OS/2 KVA plugin 3453dnl 3454AC_ARG_ENABLE(kva, 3455 [AS_HELP_STRING([--enable-kva], 3456 [support the K Video Accelerator KVA (default enabled on OS/2)])],, [ 3457 AS_IF([test "$SYS" = "os2"], [ 3458 enable_kva="yes" 3459 ]) 3460]) 3461have_kva="no" 3462KVA_LIBS="" 3463AS_IF([test "$enable_kva" != "no"], [ 3464 AC_CHECK_HEADERS([kva.h], [ 3465 have_kva="yes" 3466 AC_CHECK_LIB(kva, main, [ 3467 KVA_LIBS="-lkva" 3468 ]) 3469 ]) 3470]) 3471AC_SUBST(KVA_LIBS) 3472AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"]) 3473 3474dnl 3475dnl MMAL plugin 3476dnl 3477AC_ARG_ENABLE(mmal, 3478 AS_HELP_STRING([--enable-mmal], 3479 [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)])) 3480if test "${enable_mmal}" != "no"; then 3481 VLC_SAVE_FLAGS 3482 LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif" 3483 CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux" 3484 AC_CHECK_HEADERS(interface/mmal/mmal.h, 3485 [ AC_CHECK_LIB(bcm_host, vc_tv_unregister_callback_full, [ 3486 have_mmal="yes" 3487 VLC_ADD_PLUGIN([mmal]) 3488 VLC_ADD_LDFLAGS([mmal],[ -L/opt/vc/lib ]) 3489 VLC_ADD_CFLAGS([mmal],[ -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux ]) 3490 VLC_ADD_LIBS([mmal],[ -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif ]) ], [ 3491 AS_IF([test "${enable_mmal}" = "yes"], 3492 [ AC_MSG_ERROR([Cannot find bcm library...]) ], 3493 [ AC_MSG_WARN([Cannot find bcm library...]) ]) 3494 ], 3495 []) 3496 ] , [ AS_IF([test "${enable_mmal}" = "yes"], 3497 [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ], 3498 [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ]) 3499 VLC_RESTORE_FLAGS 3500fi 3501AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"]) 3502 3503dnl 3504dnl evas plugin 3505dnl 3506AC_ARG_ENABLE(evas, 3507 [AS_HELP_STRING([--enable-evas], 3508 [use evas output module (default disabled)])]) 3509have_evas="no" 3510AS_IF([test "${enable_evas}" = "yes"], [ 3511 PKG_CHECK_MODULES(EVAS, [evas >= 1.15.99 ecore >= 1.15.99], [ 3512 have_evas="yes" 3513 AC_DEFINE([HAVE_EVAS], [1], [Define to 1 if evas is enabled.]) 3514 ],[ 3515 AS_IF([test "x${enable_evas}" != "x"], [ 3516 AC_MSG_ERROR([$EVAS_PKG_ERRORS. libevas and libecore 1.15.99 or later required.]) 3517 ]) 3518 ]) 3519]) 3520AM_CONDITIONAL([HAVE_EVAS], [test "${have_evas}" = "yes"]) 3521 3522dnl 3523dnl Audio plugins 3524dnl 3525 3526EXTEND_HELP_STRING([Audio plugins:]) 3527 3528dnl 3529dnl Pulseaudio module 3530dnl 3531AC_ARG_ENABLE(pulse, 3532 [AS_HELP_STRING([--enable-pulse], 3533 [use the PulseAudio client library (default auto)])]) 3534have_pulse="no" 3535AS_IF([test "${enable_pulse}" != "no"], [ 3536 PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0], [ 3537 have_pulse="yes" 3538 ], [ 3539 AS_IF([test "x${enable_pulse}" != "x"], [ 3540 AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 1.0 or later required.]) 3541 ]) 3542 ]) 3543]) 3544AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"]) 3545 3546dnl 3547dnl ALSA module 3548dnl 3549AC_ARG_ENABLE(alsa, 3550 [AS_HELP_STRING([--enable-alsa], 3551 [support the Advanced Linux Sound Architecture (default auto)])],, [ 3552 AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [ 3553 enable_alsa="yes" 3554 ]) 3555]) 3556have_alsa="no" 3557AS_IF([test "${enable_alsa}" != "no"], [ 3558 PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [ 3559 have_alsa="yes" 3560 ], [ 3561 AS_IF([test "x${enable_alsa}" != "x"], [ 3562 AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.]) 3563 ]) 3564 ]) 3565]) 3566AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"]) 3567 3568dnl 3569dnl Open Sound System module 3570dnl 3571AC_ARG_ENABLE(oss, 3572 [AS_HELP_STRING([--enable-oss], 3573 [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)])],, [ 3574 AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [ 3575 enable_oss="no" 3576 ]) 3577]) 3578have_oss="no" 3579OSS_LIBS="" 3580AS_IF([test "$enable_oss" != "no"], [ 3581 AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [ 3582 have_oss="yes" 3583 AC_CHECK_LIB(ossaudio, main, [ 3584 OSS_LIBS="-lossaudio" 3585 ]) 3586 ]) 3587]) 3588AC_SUBST(OSS_LIBS) 3589AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"]) 3590 3591dnl 3592dnl OpenBSD sndio module 3593dnl 3594AC_ARG_ENABLE([sndio], 3595 [AS_HELP_STRING([--disable-sndio], 3596 [support the OpenBSD sndio (default auto)])],, [ 3597 AS_IF([test "$SYS" = "openbsd"], [ 3598 enable_sndio="yes" 3599 ]) 3600]) 3601have_sndio="no" 3602AS_IF([test "$enable_sndio" != "no"], [ 3603 AC_CHECK_HEADER([sndio.h], [ 3604 have_sndio="yes" 3605 ]) 3606]) 3607AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"]) 3608 3609dnl 3610dnl Windows Audio Session plugin 3611dnl 3612AC_ARG_ENABLE([wasapi], 3613 [AS_HELP_STRING([--enable-wasapi], 3614 [use the Windows Audio Session API (default auto)]) 3615]) 3616have_wasapi="no" 3617AS_IF([test "$enable_wasapi" != "no"], [ 3618 AC_CHECK_HEADER([audioclient.h], [ 3619 have_wasapi="yes" 3620 ], [ 3621 AS_IF([test "x${enable_wasapi}" != "x"], [ 3622 AC_MSG_ERROR([Windows Audio Session API not found.]) 3623 ]) 3624 ]) 3625]) 3626AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"]) 3627 3628dnl 3629dnl JACK modules 3630dnl 3631AC_ARG_ENABLE(jack, 3632 [AS_HELP_STRING([--disable-jack], 3633 [do not use jack (default auto)])]) 3634have_jack="no" 3635AS_IF([test "${enable_jack}" != "no"], [ 3636 PKG_CHECK_MODULES(JACK, jack >= 1.9.7, 3637 [ have_jack=yes ], 3638 [ 3639 AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead]) 3640 3641 PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0, 3642 [ have_jack=yes ], 3643 [ 3644 AS_IF([test -n "${enable_jack}"], 3645 [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])], 3646 [AC_MSG_WARN([${JACK_PKG_ERRORS}.])]) 3647 ]) 3648 ]) 3649]) 3650AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"]) 3651 3652dnl 3653dnl OpenSLES Android 3654dnl 3655AC_ARG_ENABLE(opensles, 3656 [ --enable-opensles Android OpenSL ES audio module (default disabled)]) 3657if test "${HAVE_ANDROID}" = "1"; then 3658 if test "${enable_opensles}" = "yes"; then 3659 AC_CHECK_HEADERS(SLES/OpenSLES.h, 3660 [ VLC_ADD_PLUGIN([opensles_android]) ], 3661 [ AC_MSG_ERROR([cannot find OpenSLES headers])] ) 3662 fi 3663fi 3664 3665dnl 3666dnl Tizen audio 3667dnl 3668AC_ARG_ENABLE(tizen_audio, 3669 [AS_HELP_STRING([--enable-tizen-audio], 3670 [Tizen audio module (default enabled on Tizen)])],, [ 3671 AS_IF([test "$HAVE_TIZEN" = "1"], [ 3672 enable_tizen_audio="yes" 3673 ]) 3674]) 3675if test "${enable_tizen_audio}" = "yes"; then 3676 AC_CHECK_HEADERS(audio_io.h, 3677 [ VLC_ADD_PLUGIN([tizen_audio]) ], 3678 [ AC_MSG_ERROR([cannot find Tizen audio_io headers])] ) 3679fi 3680 3681dnl 3682dnl libsamplerate plugin 3683dnl 3684PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto]) 3685 3686dnl 3687dnl soxr module 3688dnl 3689PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto]) 3690 3691dnl 3692dnl OS/2 KAI plugin 3693dnl 3694AC_ARG_ENABLE(kai, 3695 [AS_HELP_STRING([--enable-kai], 3696 [support the K Audio Interface KAI (default enabled on OS/2)])],, [ 3697 AS_IF([test "$SYS" = "os2"], [ 3698 enable_kai="yes" 3699 ]) 3700]) 3701have_kai="no" 3702KAI_LIBS="" 3703AS_IF([test "$enable_kai" != "no"], [ 3704 AC_CHECK_HEADERS([kai.h], [ 3705 have_kai="yes" 3706 AC_CHECK_LIB(kai, main, [ 3707 KAI_LIBS="-lkai" 3708 ]) 3709 ]) 3710]) 3711AC_SUBST(KAI_LIBS) 3712AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"]) 3713 3714dnl 3715dnl chromaprint audio track fingerprinter 3716dnl 3717m4_pushdef([libchromaprint_version], 0.6.0) 3718PKG_WITH_MODULES([CHROMAPRINT],[libchromaprint >= libchromaprint_version], 3719 VLC_ADD_PLUGIN([stream_out_chromaprint]), 3720 AS_IF([test "${enable_chromaprint}" = "yes"], 3721 [AC_MSG_ERROR(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)], 3722 [AC_MSG_WARN(Library [libchromaprint >= libchromaprint_version] needed for [chromaprint] was not found)] 3723 ), 3724 [(Chromaprint based audio fingerprinter)],[auto]) 3725m4_popdef([libchromaprint_version]) 3726 3727dnl 3728dnl Chromecast streaming support 3729dnl 3730m4_pushdef([protobuf_lite_version], 2.5.0) 3731AC_ARG_VAR(PROTOC, [protobuf compiler]) 3732AC_CHECK_PROGS(PROTOC, protoc, no) 3733PKG_WITH_MODULES([CHROMECAST],[protobuf-lite >= protobuf_lite_version], [ 3734 AS_IF([test "x${PROTOC}" != "xno"], [ 3735 build_chromecast="yes" 3736 ], [ 3737 AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found) 3738 ]) 3739], [ 3740 AS_IF([test "${enable_chromecast}" = "yes"], 3741 AC_MSG_ERROR(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found), 3742 AC_MSG_WARN(Library [protobuf-lite >= protobuf_lite_version] needed for [chromecast] was not found) 3743 ) 3744 enable_chromecast="no" 3745], [(Chromecast streaming support)], [auto]) 3746AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"]) 3747m4_popdef([protobuf_lite_version]) 3748 3749dnl 3750dnl Interface plugins 3751dnl 3752 3753EXTEND_HELP_STRING([Interface plugins:]) 3754 3755dnl 3756dnl QT 3757dnl 3758AC_ARG_ENABLE(qt, [ 3759 AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)])],, [ 3760 AS_IF([test "${SYS}" = "darwin"], [ 3761 enable_qt="no" 3762 ]) 3763]) 3764have_qt5_x11="no" 3765AS_IF([test "${enable_qt}" != "no"], [ 3766 PKG_CHECK_MODULES([QT], [Qt5Core >= 5.5.0 Qt5Widgets Qt5Gui Qt5Svg], [ 3767 PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [ 3768 have_qt5_x11="yes" 3769 ],[ 3770 AC_MSG_WARN([Not building Qt Interface with X11 helpers.]) 3771 ]) 3772 QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)" 3773 QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)" 3774 QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)" 3775 AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"]) 3776 AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"]) 3777 AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"]) 3778 ], [ 3779 AS_IF([test -n "${enable_qt}"],[ 3780 AC_MSG_ERROR([${QT_PKG_ERRORS}.]) 3781 ],[ 3782 AC_MSG_WARN([${QT_PKG_ERRORS}.]) 3783 ]) 3784 enable_qt="no" 3785 ]) 3786]) 3787 3788AS_IF([test "${enable_qt}" != "no"], [ 3789 ALIASES="${ALIASES} qvlc" 3790]) 3791AC_SUBST(QT_VERSION) 3792AM_CONDITIONAL(ENABLE_QT, [test "$enable_qt" != "no"]) 3793AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"]) 3794 3795dnl 3796dnl detect kde4-config patch (used for kde solids). 3797dnl 3798AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility]) 3799AS_IF([test "x$KDE4_CONFIG" = "x"], [ 3800 KDE4_CONFIG="kde4-config" 3801]) 3802 3803dnl 3804dnl Simple test for skins2 dependency 3805dnl 3806AS_IF([test "$enable_qt" = "no"], [ 3807 AS_IF([test "${enable_skins2}" = "yes"], [ 3808 AC_MSG_ERROR([The skins2 module depends on the Qt interface. Without it you will not be able to open any dialog box from the interface, which makes the skins2 interface rather useless. Install the Qt development package or alternatively you can also configure with: --disable-qt --disable-skins2.]) 3809 ], [ 3810 enable_skins2="no" 3811 AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.]) 3812 ]) 3813]) 3814 3815dnl 3816dnl Skins2 module 3817dnl 3818AC_ARG_ENABLE(skins2, 3819 [AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)])]) 3820AS_IF([test "${enable_skins2}" != "no"], [ 3821 have_skins_deps="yes" 3822 3823 dnl Win32 3824 AS_IF([test "${SYS}" = "mingw32"], [ 3825 VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS]) 3826 VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32]) 3827 dnl OS/2 3828 ], [test "${SYS}" = "os2"], [ 3829 VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS]) 3830 dnl Linux/Unix 3831 ], [ 3832 PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"]) 3833 PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"]) 3834 PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"]) 3835 VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS]) 3836 VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} -lX11]) 3837 ]) 3838 3839 dnl we need freetype 3840 AS_IF([test "${have_freetype}" != "yes"], [ 3841 have_skins_deps="no" 3842 ]) 3843 3844 AS_IF([test "${have_skins_deps}" = "no"], [ 3845 AS_IF([test "x${enable_skins2}" = "x"], [ 3846 AC_MSG_WARN([Skins2 interface disabled due to missing dependencies.]) 3847 ], [ 3848 AC_MSG_ERROR([Skins2 interface requires FreeType, libxpm, libxext and libxinerama]) 3849 ]) 3850 enable_skins2="no" 3851 ], [ 3852 ALIASES="${ALIASES} svlc" 3853 enable_skins2="yes" 3854 ]) 3855]) 3856AM_CONDITIONAL(BUILD_SKINS, [test "${enable_skins2}" = "yes"]) 3857 3858AC_ARG_ENABLE(libtar, 3859 [ --enable-libtar libtar support for skins2 (default auto)]) 3860AS_IF([test "${enable_skins2}" = "yes" && test "${enable_libtar}" != "no"], [ 3861 AC_CHECK_HEADERS(libtar.h, [ 3862 VLC_ADD_LIBS([skins2],[-ltar]) 3863 ]) 3864]) 3865 3866dnl 3867dnl MacOS X gui module 3868dnl 3869AC_ARG_ENABLE(macosx, 3870 [ --enable-macosx Mac OS X gui support (default enabled on Mac OS X)]) 3871if test "x${enable_macosx}" != "xno" -a "${SYS}" = "darwin" 3872then 3873 3874 dnl 3875 dnl If possible, use xcrun to find the right ibtool 3876 dnl 3877 3878 AC_PATH_PROG([XCRUN], [xcrun], [no]) 3879 AS_IF([test ! "x${XCRUN}" = "xno"], [ 3880 AC_MSG_CHECKING([for ibtool (using xcrun)]) 3881 XIB="$(eval $XCRUN -f ibtool 2>/dev/null || echo no)" 3882 AC_MSG_RESULT([${XIB}]) 3883 ], [ 3884 AC_MSG_WARN([Looking for tools without using xcrun]) 3885 ]) 3886 3887 AS_IF([test "x${XIB}" = "xno"], [ 3888 AC_PATH_PROG(XIB, [ibtool], [no]) 3889 AS_IF([test "x${XIB}" = "xno"], [ 3890 AC_MSG_ERROR([ibtool was not found, but is required for --enable-macosx]) 3891 ]) 3892 ]) 3893fi 3894AM_CONDITIONAL(ENABLE_MACOSX_UI, [test "$enable_macosx" != "no" -a "${SYS}" = "darwin"]) 3895 3896dnl 3897dnl MacOS X sparkle update support 3898dnl 3899AC_ARG_ENABLE(sparkle, 3900 [ --enable-sparkle Sparkle update support for OS X (default enabled on Mac OS X)]) 3901if test "x${enable_sparkle}" != "xno" -a "${HAVE_OSX}" = "1" 3902then 3903 if test ! -d ${CONTRIB_DIR}/Sparkle.framework -a ! -d ${CONTRIB_DIR}/Frameworks/Sparkle.framework 3904 then 3905 AC_MSG_ERROR([Sparkle framework is required and was not found in ${CONTRIB_DIR}]) 3906 fi 3907 3908 AC_DEFINE([HAVE_SPARKLE], [1], [Define to 1 if sparkle is enabled.]) 3909fi 3910AM_CONDITIONAL(HAVE_SPARKLE, [test "$enable_sparkle" != "no"]) 3911 3912dnl 3913dnl MacOS X breakpad creash reporter support 3914dnl 3915AC_ARG_WITH([breakpad], 3916 AS_HELP_STRING([--with-breakpad=URL], [Enable Breakpad reporter using given URL]), [], [with_breakpad=no]) 3917 3918AS_IF([test "$with_breakpad" != "no"], [ 3919 3920 AS_IF([test "$with_breakpad" = "yes"], [ 3921 AC_MSG_ERROR([You need to supply the CrashDragon Server URL as value for --with-breakpad]) 3922 ]) 3923 3924 AS_IF([test "$HAVE_OSX" = "1"], [ 3925 AC_MSG_CHECKING([for Breakpad framework]) 3926 AS_IF([test ! -d ${CONTRIB_DIR}/Breakpad.framework -a \ 3927 ! -d ${CONTRIB_DIR}/Frameworks/Breakpad.framework], [ 3928 AC_MSG_RESULT([no]) 3929 with_breakpad="no" 3930 AC_MSG_ERROR([Breakpad framework is required and was not found in ${CONTRIB_DIR}]) 3931 ], [ 3932 AC_MSG_RESULT([yes]) 3933 ]) 3934 ],[ 3935 PKG_CHECK_MODULES([BREAKPAD], [breakpad-client], [ 3936 LDFLAGS="${LDFLAGS} -Wl,--build-id" 3937 ], [ 3938 AC_MSG_ERROR(["breakpad not found"]) 3939 ]) 3940 ]) 3941]) 3942 3943AM_CONDITIONAL(HAVE_BREAKPAD, [test "$with_breakpad" != "no"]) 3944AS_IF([test "$with_breakpad" != "no"], [ 3945 AC_SUBST(BREAKPAD_URL, ["${with_breakpad}"]) 3946]) 3947 3948dnl 3949dnl Minimal Mac OS X module 3950dnl 3951AC_ARG_ENABLE(minimal-macosx, 3952 [ --enable-minimal-macosx Minimal Mac OS X support (default disabled)]) 3953if test "${enable_minimal_macosx}" = "yes" -a "${SYS}" = "darwin" 3954then 3955 VLC_ADD_PLUGIN([minimal_macosx]) 3956fi 3957 3958dnl 3959dnl Mac OS X fancy dmg build tool 3960dnl 3961if test "${HAVE_OSX}" = "1" 3962then 3963 AC_PATH_PROG(DMGBUILD, dmgbuild, no) 3964 AS_IF([test "x${DMGBUILD}" = "xno"], [ 3965 AC_MSG_WARN([dmgbuild not found -- unable to build fancy DMGs]) 3966 ]) 3967fi 3968AM_CONDITIONAL(HAVE_DMGBUILD, [test "x$DMGBUILD" != "xno" -a "${HAVE_OSX}" = "1"]) 3969 3970dnl 3971dnl VideoToolbox plugins 3972AC_CHECK_HEADERS(VideoToolbox/VideoToolbox.h, [ 3973 VLC_ADD_PLUGIN([videotoolbox]) 3974 VLC_ADD_PLUGIN([cvpx]) 3975 ]) 3976 3977dnl 3978dnl AudioToolbox MIDI plugin 3979AC_CHECK_HEADERS([AudioToolbox/AudioToolbox.h], [ 3980 VLC_ADD_PLUGIN([audiotoolboxmidi]) 3981]) 3982 3983dnl 3984dnl ncurses module 3985dnl 3986AC_ARG_ENABLE(ncurses, 3987[AS_HELP_STRING([--disable-ncurses],[ncurses text-based interface (default auto)])]) 3988have_ncurses="no" 3989AS_IF([test "${enable_ncurses}" != "no"] ,[ 3990 PKG_CHECK_MODULES([NCURSES], [ncursesw], [ 3991 have_ncurses="yes" 3992 ALIASES="${ALIASES} nvlc" 3993 ], [ 3994 AS_IF([test -n "${enable_ncurses}"], [ 3995 AC_MSG_ERROR([${NCURSES_PKG_ERRORS}.]) 3996 ]) 3997 ]) 3998]) 3999AM_CONDITIONAL([HAVE_NCURSES], [test "${have_ncurses}" = "yes"]) 4000 4001dnl 4002dnl Lirc plugin 4003dnl 4004AC_ARG_ENABLE(lirc, 4005 [ --enable-lirc lirc support (default disabled)]) 4006have_lirc="no" 4007AS_IF([test "${enable_lirc}" = "yes"], [ 4008 AC_CHECK_HEADER(lirc/lirc_client.h, [ 4009 AC_CHECK_LIB(lirc_client, lirc_init, [ 4010 have_lirc="yes" 4011 ]) 4012 ]) 4013]) 4014AM_CONDITIONAL([HAVE_LIRC], [test "${have_lirc}" = "yes"]) 4015 4016dnl 4017dnl SRT plugin 4018dnl 4019PKG_ENABLE_MODULES_VLC([SRT], [access_srt access_output_srt], [srt >= 1.2.2 srt < 1.3.0], [SRT input/output plugin], [auto], [], [], [-DENABLE_SRT]) 4020 4021EXTEND_HELP_STRING([Visualisations and Video filter plugins:]) 4022dnl 4023dnl goom visualization plugin 4024dnl 4025PKG_ENABLE_MODULES_VLC([GOOM], [], [libgoom2], [goom visualization plugin], [auto]) 4026 4027dnl 4028dnl libprojectM visualization plugin 4029dnl 4030AC_ARG_ENABLE(projectm, 4031 [ --enable-projectm projectM visualization plugin (default enabled)]) 4032AS_IF([test "${enable_projectm}" != "no"], 4033 [ 4034 PKG_CHECK_MODULES(PROJECTM, libprojectM, 4035 [ 4036 VLC_ADD_PLUGIN([projectm]) 4037 PKG_CHECK_EXISTS([libprojectM >= 2.0.0], 4038 [ AC_DEFINE([HAVE_PROJECTM2], 1, [Define to 1 if using libprojectM 2.x]) ], 4039 [ AC_MSG_WARN( [Using libprojectM version 1] ) 4040 ]) 4041 ],[ 4042 AC_MSG_WARN([${PROJECTM_PKG_ERRORS}.]) 4043 ]) 4044 ]) 4045 4046dnl 4047dnl Vovoid VSXu visualization plugin 4048dnl 4049AC_ARG_ENABLE(vsxu, 4050 [ --enable-vsxu Vovoid VSXu visualization plugin (default auto)]) 4051AS_IF([test "${enable_vsxu}" != "no"], 4052 [ 4053 PKG_CHECK_MODULES(VSXU, libvsxu, 4054 [ 4055 VLC_ADD_PLUGIN([vsxu]) 4056 ],[ 4057 AC_MSG_WARN([${VSXU_PKG_ERRORS}.]) 4058 ]) 4059 ]) 4060 4061EXTEND_HELP_STRING([Service Discovery plugins:]) 4062dnl 4063dnl Avahi-Zeroconf services discovery 4064PKG_ENABLE_MODULES_VLC([AVAHI], [], [avahi-client >= 0.6], [Zeroconf services discovery], [auto]) 4065 4066dnl 4067dnl libudev services discovery 4068PKG_ENABLE_MODULES_VLC([UDEV], [], [libudev >= 142], [Linux udev services discovery], [auto]) 4069 4070dnl 4071dnl MTP devices services discovery 4072PKG_ENABLE_MODULES_VLC([MTP], [mtp access_mtp], [libmtp >= 1.0.0], [MTP devices support], [auto]) 4073 4074dnl 4075dnl UPnP Plugin (Intel SDK) 4076dnl 4077PKG_ENABLE_MODULES_VLC([UPNP], [upnp], [libupnp], [Intel UPNP SDK],[auto]) 4078 4079dnl 4080dnl mDNS using libmicrodns 4081dnl 4082PKG_ENABLE_MODULES_VLC([MICRODNS], [], [microdns >= 0.1.2], [mDNS services discovery], [auto]) 4083 4084 4085EXTEND_HELP_STRING([Misc options:]) 4086 4087dnl 4088dnl libxml2 module 4089dnl 4090PKG_ENABLE_MODULES_VLC([LIBXML2], [xml], [libxml-2.0 >= 2.5], [libxml2 support],[auto]) 4091 4092 4093dnl 4094dnl libgcrypt 4095dnl 4096AC_ARG_ENABLE(libgcrypt, 4097 [ --disable-libgcrypt gcrypt support (default enabled)]) 4098AC_ARG_VAR([GCRYPT_CFLAGS], [C compiler flags for gcrypt]) 4099AC_ARG_VAR([GCRYPT_LIBS], [linker flags flags for gcrypt]) 4100 4101# require libgcrypt >= 1.6.0 4102AS_IF([test "${enable_libgcrypt}" != "no"], [ 4103 AC_CACHE_CHECK([for gcrypt 1.6.0 or later], [ac_cv_lib_gcrypt], [ 4104 VLC_SAVE_FLAGS 4105 CFLAGS="${CFLAGS} ${GCRYPT_CFLAGS}" 4106 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ 4107[#include <gcrypt.h> 4108#if GCRYPT_VERSION_NUMBER < 0x010600 4109#error 4110#endif]])], [ 4111 ac_cv_lib_gcrypt=yes 4112 ], [ 4113 ac_cv_lib_gcrypt=no 4114 ]) 4115 VLC_RESTORE_FLAGS 4116 ]) 4117 4118 AS_IF([test "${ac_cv_lib_gcrypt}" = "yes"], [ 4119 AC_DEFINE([HAVE_GCRYPT], 1, [Defined if having gcrypt]) 4120 ], [ 4121 AS_IF([test "${enable_libgcrypt}" = "yes"], [ 4122 AC_MSG_ERROR([libgcrypt version 1.6.0 or higher not found. Install libgcrypt or pass --disable-libgcrypt.]) 4123 ]) 4124 ]) 4125]) 4126 4127AS_IF([test -z "$GCRYPT_LIBS"], [ 4128 GCRYPT_LIBS="-lgcrypt -lgpg-error" 4129]) 4130 4131AC_SUBST(GCRYPT_CFLAGS) 4132AC_SUBST(GCRYPT_LIBS) 4133AM_CONDITIONAL([HAVE_GCRYPT], [test "${ac_cv_lib_gcrypt}" = "yes"]) 4134 4135dnl 4136dnl TLS/SSL 4137dnl 4138AC_ARG_ENABLE(gnutls, 4139 [ --enable-gnutls GNU TLS TLS/SSL support (default enabled)]) 4140AS_IF([test "${enable_gnutls}" != "no"], [ 4141 PKG_CHECK_MODULES(GNUTLS, [gnutls >= 3.3.6], [ 4142 VLC_ADD_PLUGIN([gnutls]) 4143 ], [ 4144 AS_IF([test -n "${enable_gnutls}"], [ 4145 AC_MSG_ERROR([${GNUTLS_PKG_ERRORS}.)]) 4146 ]) 4147 ]) 4148]) 4149 4150 4151dnl 4152dnl Taglib plugin 4153dnl 4154AC_ARG_ENABLE(taglib, 4155 [AS_HELP_STRING([--disable-taglib], 4156 [do not use TagLib (default enabled)])]) 4157AS_IF([test "${enable_taglib}" != "no"], [ 4158 PKG_CHECK_MODULES(TAGLIB, taglib >= 1.9, [ 4159 VLC_ADD_PLUGIN([taglib]) 4160 ], [ 4161 AC_MSG_WARN([${TAGLIB_PKG_ERRORS}.])]) 4162]) 4163 4164dnl 4165dnl libsecret 4166dnl 4167PKG_ENABLE_MODULES_VLC([SECRET], [], [libsecret-1 >= 0.18], [use libsecret for keystore], [auto]) 4168 4169dnl 4170dnl kwallet 4171dnl 4172AC_ARG_ENABLE(kwallet, 4173 [AS_HELP_STRING([--enable-kwallet], 4174 [use kwallet (via D-Bus) for keystore (default enabled)])]) 4175AS_IF([test "${enable_kwallet}" != "no" -a "${have_dbus}" = "yes"], [ 4176 VLC_ADD_PLUGIN([kwallet]) 4177]) 4178 4179dnl 4180dnl update checking system 4181dnl 4182AC_ARG_ENABLE(update-check, 4183 [ --enable-update-check update checking system (default disabled)]) 4184if test "${enable_update_check}" = "yes" 4185then 4186 AS_IF([test "${ac_cv_lib_gcrypt}" != "yes"],[ 4187 AC_MSG_ERROR([libgcrypt is required for update checking system]) ]) 4188fi 4189AM_CONDITIONAL(UPDATE_CHECK, [test "${enable_update_check}" = "yes"]) 4190 4191dnl 4192dnl OS X notification plugin 4193dnl 4194AC_ARG_ENABLE(osx_notifications, 4195 [ --enable-osx-notifications osx notification plugin (default disabled)],, 4196 [enable_osx_notifications=no]) 4197AS_IF([test "${enable_osx_notifications}" != "no"], [ 4198 if test -d ${CONTRIB_DIR}/Growl.framework -o -d ${CONTRIB_DIR}/Frameworks/Growl.framework 4199 then 4200 VLC_ADD_PLUGIN([osx_notifications]) 4201 VLC_ADD_LIBS([osx_notifications], [-Wl,-framework,Growl,-framework,Foundation]) 4202 VLC_ADD_OBJCFLAGS([osx_notifications], [-fobjc-exceptions] ) 4203 else 4204 enable_osx_notifications="no" 4205 fi 4206]) 4207AM_CONDITIONAL(HAVE_OSX_NOTIFICATIONS, [test "$enable_osx_notifications" != "no"]) 4208 4209dnl 4210dnl Libnotify notification plugin 4211dnl 4212PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify gtk+-3.0], [libnotify notification], [auto]) 4213 4214dnl 4215dnl libplacebo support 4216dnl 4217AC_ARG_ENABLE(libplacebo, 4218 [AS_HELP_STRING([--disable-libplacebo], 4219 [disable libplacebo support (default auto)])]) 4220 4221AS_IF([test "$enable_libplacebo" != "no"], [ 4222 PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 0.2.1], [ 4223 AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.]) 4224 ], [ 4225 AS_IF([test -n "${enable_libplacebo}"], [ 4226 AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.]) 4227 ]) 4228 enable_libplacebo="no" 4229 ]) 4230]) 4231AM_CONDITIONAL(HAVE_LIBPLACEBO, [test "$enable_libplacebo" != "no"]) 4232 4233 4234dnl 4235dnl Endianness check 4236dnl 4237AC_C_BIGENDIAN 4238AS_IF([test "${ac_cv_c_bigendian}" = "yes"], [ 4239 DEFS_BIGENDIAN="-DWORDS_BIGENDIAN=1" 4240], [ 4241 DEFS_BIGENDIAN="" 4242]) 4243AC_SUBST(DEFS_BIGENDIAN) 4244 4245dnl 4246dnl Where to install KDE solid .desktop 4247dnl 4248AC_ARG_WITH(kde-solid, 4249 AS_HELP_STRING([--with-kde-solid=PATH], 4250 [KDE Solid actions directory (auto)]),, [ 4251 4252if test "${SYS}" != "mingw32" -a "${SYS}" != "darwin" -a "${HAVE_ANDROID}" != "1" ; then 4253 with_kde_solid="yes" 4254fi 4255]) 4256soliddatadir="" 4257AS_IF([test "${with_kde_solid}" != "no"], [ 4258 AS_IF([test "${with_kde_solid}" = "yes"], [ 4259 kde4datadir="`${KDE4_CONFIG} --install data`" 4260 AS_IF([test "x$kde4datadir" = "x"], [kde4datadir='${datadir}/kde4/apps']) 4261 soliddatadir="${kde4datadir}/solid/actions" 4262 ], [ 4263 soliddatadir="${with_kde_solid}" 4264 ]) 4265]) 4266AC_SUBST(soliddatadir) 4267AM_CONDITIONAL(KDE_SOLID, [test "x${soliddatadir}" != "x"]) 4268 4269dnl 4270dnl Check wether we have the PROCESS_MITIGATION_IMAGE_LOAD_POLICY 4271dnl It should only be available when building for win10, but some SDKs define it unconditionnaly 4272dnl 4273if test "${SYS}" = "mingw32"; then 4274 AC_CHECK_TYPES([PROCESS_MITIGATION_IMAGE_LOAD_POLICY],,,[#include <windows.h>]) 4275fi 4276 4277EXTEND_HELP_STRING([Components:]) 4278 4279dnl 4280dnl the VLC binary 4281dnl 4282AC_ARG_ENABLE(vlc, 4283 [ --enable-vlc build the VLC media player (default enabled)]) 4284AM_CONDITIONAL(BUILD_VLC, [test "${enable_vlc}" != "no"]) 4285 4286dnl 4287dnl Fuzzer (at the end in order to don't mess dependencies FLAGS) 4288dnl 4289AS_VAR_IF(with_libfuzzer, no, [], [ 4290 LIBS="-lstdc++ ${LIBM} ${LIBPTHREAD} -L${with_libfuzzer} -lFuzzer" 4291 AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc-guard, [ 4292 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard]) 4293 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc-guard], [CXXFLAGS]) 4294 AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp]) 4295 AX_APPEND_COMPILE_FLAGS([-fsanitize-coverage=trace-cmp], [CXXFLAGS]) 4296 ], [ 4297 AX_CHECK_COMPILE_FLAG(-fsanitize-coverage=trace-pc, [ 4298 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc]) 4299 AX_APPEND_FLAG([-fsanitize-coverage=trace-pc], [CXXFLAGS]) 4300 ], [ 4301 AC_MSG_ERROR([Sanitizer coverage not supported by your compiler]) 4302 ]) 4303 ]) 4304]) 4305 4306dnl 4307dnl Stuff used by the program 4308dnl 4309VERSION_MESSAGE="${VERSION} ${CODENAME}" 4310COPYRIGHT_MESSAGE="Copyright © ${COPYRIGHT_YEARS} the VideoLAN team" 4311AC_DEFINE_UNQUOTED(VERSION_MESSAGE, "${VERSION_MESSAGE}", [Simple version string]) 4312AC_DEFINE_UNQUOTED(COPYRIGHT_MESSAGE, "${COPYRIGHT_MESSAGE}", [Copyright string]) 4313AC_DEFINE_UNQUOTED(COPYRIGHT_YEARS, "${COPYRIGHT_YEARS}", [The copyright years]) 4314AC_DEFINE_UNQUOTED(CONFIGURE_LINE, "${CONFIGURE_LINE}", [The ./configure command line]) 4315AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MAJOR,${VERSION_MAJOR}, [version major number]) 4316AC_DEFINE_UNQUOTED(PACKAGE_VERSION_MINOR,${VERSION_MINOR}, [version minor number]) 4317AC_DEFINE_UNQUOTED(PACKAGE_VERSION_REVISION,${VERSION_REVISION}, [version revision number]) 4318AC_DEFINE_UNQUOTED(PACKAGE_VERSION_EXTRA,${VERSION_EXTRA}, [version extra number]) 4319AC_DEFINE_UNQUOTED(PACKAGE_VERSION_DEV,"${VERSION_DEV}", [version development string]) 4320AC_SUBST(COPYRIGHT_MESSAGE) 4321AC_SUBST(VERSION_MESSAGE) 4322AC_SUBST(VERSION_MAJOR) 4323AC_SUBST(VERSION_MINOR) 4324AC_SUBST(VERSION_REVISION) 4325AC_SUBST(VERSION_EXTRA) 4326AC_SUBST(COPYRIGHT_YEARS) 4327AC_DEFINE_UNQUOTED(VLC_COMPILE_BY, "`whoami|sed -e 's/\\\/\\\\\\\/g'`", [user who ran configure]) 4328AC_DEFINE_UNQUOTED(VLC_COMPILE_HOST, "`hostname -f 2>/dev/null || hostname`", [host which ran configure]) 4329AC_DEFINE_UNQUOTED(VLC_COMPILER, "`$CC -v 2>&1 | tail -n 1 | sed -e 's/ *$//'`", [compiler]) 4330dnl 4331dnl Handle substvars that use $(top_srcdir) 4332dnl 4333CPPFLAGS="-I\$(top_srcdir)/include -I\$(top_builddir)/include ${CPPFLAGS}" 4334 4335dnl 4336dnl Configuration is finished 4337dnl 4338AC_SUBST(SYS) 4339AC_SUBST(ARCH) 4340AC_SUBST(ALIASES) 4341AC_SUBST(ASM) 4342AC_SUBST(MOC) 4343AC_SUBST(RCC) 4344AC_SUBST(UIC) 4345AC_SUBST(WINDRES) 4346AC_SUBST(WINE_SDK_PATH) 4347AC_SUBST(LIBEXT) 4348AC_SUBST(AM_CPPFLAGS) 4349AC_SUBST(MACOSX_DEPLOYMENT_TARGET) 4350AC_SUBST(FILE_LIBVLCCORE_DLL) 4351AC_SUBST(FILE_LIBVLC_DLL) 4352 4353AC_CONFIG_FILES([ 4354 Makefile 4355 doc/Makefile 4356 modules/Makefile 4357 m4/Makefile 4358 po/Makefile.in 4359 share/Makefile 4360 compat/Makefile 4361 src/Makefile 4362 lib/Makefile 4363 bin/Makefile 4364 test/Makefile 4365 modules/hw/mmal/Makefile 4366 share/vlc.appdata.xml.in 4367]) 4368 4369AM_COND_IF([HAVE_WIN32], [ 4370 AC_CONFIG_FILES([ 4371 extras/package/win32/NSIS/spad.nsi 4372 extras/package/win32/NSIS/vlc.win32.nsi 4373 extras/package/win32/msi/config.wxi 4374 ]) 4375]) 4376 4377AM_COND_IF([HAVE_DARWIN], [ 4378 AC_CONFIG_FILES([ 4379 share/macosx/Info.plist:share/Info.plist.in 4380 ]) 4381]) 4382 4383dnl Generate makefiles 4384AC_OUTPUT 4385 4386dnl Do we have to use make or gmake ? 4387if make --version 2>&1|grep -q GNU 4388then 4389 # GNU make, all seems good 4390 MAKE=make 4391else 4392 # Known GNU make alias (on BSD) 4393 MAKE=gmake 4394fi 4395dnl Shortcut to nice compile message 4396if test -n $SHELL; then 4397 SHELL=${CONFIG_SHELL-/bin/sh} 4398fi 4399rm -f compile 4400compile_top_srcdir=`sed -ne "s/^top_srcdir *= *//p" < Makefile` 4401echo "#! $SHELL 4402rm -f .error\$\$ 4403ERROR=0 4404export PATH=\"$PATH\" LANG=C 4405($MAKE V=1 \$@ 2>&1 || touch .error\$\$)| $compile_top_srcdir/extras/buildsystem/make.pl 4406test -f .error\$\$ && ERROR=1 4407rm -f .error\$\$ 4408exit \$ERROR" >compile 4409chmod a+x compile 4410 4411echo " 4412libvlc configuration 4413-------------------- 4414version : ${VERSION} 4415system : ${SYS} 4416architecture : ${ARCH} 4417optimizations : ${enable_optimizations}" 4418if test "${enable_vlc}" != "no"; then 4419echo "vlc aliases :${ALIASES}" 4420else 4421echo "build vlc executable : no" 4422fi 4423echo " 4424To build vlc and its plugins, type \`$MAKE', or \`./compile' if you like nice colors." 4425