Skip to content
Snippets Groups Projects
configure.ac 135 KiB
Newer Older
dnl
dnl libfluidsynth (MIDI synthetizer) plugin
dnl
PKG_ENABLE_MODULES_VLC([FLUIDSYNTH], [], [fluidsynth >= 1.1.2], [MIDI synthetiser with libfluidsynth], [auto])
PKG_ENABLE_MODULES_VLC([FLUIDLITE], [fluidsynth], [fluidlite], [MIDI synthetiser with libfluidsynth], [auto])
AC_CHECK_HEADERS([fluidlite.h], [AC_SUBST([FLUIDSYNTH_LIBS], ${FLUIDLITE_LIBS})])
  AS_HELP_STRING([--enable-zvbi],[VBI (inc. Teletext) decoding support with
                  libzvbi (default enabled)]))
  AS_HELP_STRING([--enable-telx],[Teletext decoding module (conflicting with
                  zvbi) (default enabled if zvbi is absent)]))
    PKG_CHECK_MODULES(ZVBI, [zvbi-0.2 >= 0.2.28],
          VLC_ADD_PLUGIN([zvbi])
          AC_DEFINE(ZVBI_COMPILED, 1, [Define if the zvbi module is built])
          AS_IF( [test "${enable_telx}" = "yes"],[
                  AC_MSG_WARN([The zvbi and telx modules are incompatible. Using zvbi.])
          AC_MSG_WARN([${ZVBI_PKG_ERRORS}. Enabling the telx module instead.])
AM_CONDITIONAL([HAVE_ZVBI], [test "x${have_zvbi}" = x"yes"])

AS_IF( [test "${enable_telx}" != "no" ],[
  VLC_ADD_PLUGIN([telx])
  have_telx="yes"
  AC_DEFINE(TELX_COMPILED, 1, [Define if the telx module is built])
AM_CONDITIONAL([HAVE_TELX], [test "x${have_telx}" = x"yes"])
dnl
dnl ARIB caption rendering module
dnl
PKG_ENABLE_MODULES_VLC([ARIBCAPTION], [], [libaribcaption], [ARIB caption decoder/renderer], [auto])

dnl
dnl ARIB subtitles rendering module
dnl
AC_ARG_ENABLE([aribsub],
  AS_HELP_STRING([--enable-aribsub],[ARIB Subtitles support (default enabled)]))
AS_IF( [test "${enable_aribsub}" != "no" ],[
  PKG_CHECK_MODULES(ARIBB24, [aribb24 >= 1.0.1], [
      have_aribb24="yes"
      VLC_ADD_PLUGIN([aribsub])
      VLC_ADD_LIBS([aribsub],[-laribb24])
      AC_DEFINE(HAVE_ARIBB24, 1, [Define if libaribb24 is available.])
    ],[
      AC_MSG_WARN(Library [aribb24] needed for [aribsub] was not found)
      have_aribb24="no"
  ])
])
AM_CONDITIONAL([HAVE_ARIBB24], [test "${have_aribb24}" = "yes"])
dnl
dnl ARIB B25
dnl
PKG_ENABLE_MODULES_VLC([ARIBB25], [aribcam], [aribb25 >= 0.2.6], [ARIB STD-B25], [auto])

dnl
dnl  kate decoder plugin
dnl
PKG_ENABLE_MODULES_VLC([KATE], [], [kate >= 0.3.0], [kate codec], [auto])
dnl  tiger rendering for kate decoder plugin
dnl
AC_ARG_ENABLE([tiger],
AS_HELP_STRING([--enable-tiger], [Tiger rendering library for Kate streams (default auto)]))
AS_IF([test "${enable_tiger}" != "no"], [
  PKG_CHECK_MODULES(TIGER,[tiger >= 0.3.1], [
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
      AC_DEFINE(HAVE_TIGER, 1, [Define if libtiger is available.])],[
        AS_IF([test -n "${enable_tiger}"], [
          AC_MSG_ERROR([${TIGER_PKG_ERRORS}.])
David's avatar
David committed
dnl  check if we can build the css selector engine
AS_HELP_STRING([--enable-css], [CSS selector engine (default auto)]))
AS_IF([test "${enable_css}" != "no"], [
  with_css="yes"
  AC_DEFINE(HAVE_CSS, 1, [Define if CSS engine is built])
])
AM_CONDITIONAL([ENABLE_CSS], [test "${with_css}" = "yes"])

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl  Video plugins
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl

EXTEND_HELP_STRING([Video plugins:])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl
dnl  libplacebo support
dnl
AC_ARG_ENABLE([libplacebo],
  AS_HELP_STRING([--disable-libplacebo],
      [disable libplacebo support (default auto)]))

have_libplacebo_glscale="no"
AS_IF([test "$enable_libplacebo" != "no"], [
  PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 4.157], [
    AC_DEFINE([HAVE_LIBPLACEBO], [1], [Define to 1 if libplacebo is enabled.])
    AC_CHECK_HEADER([libplacebo/vulkan.h], [VLC_ADD_PLUGIN([placebo_vk])])
    AC_CHECK_HEADER([libplacebo/opengl.h], [
        VLC_ADD_PLUGIN([placebo_gl])
        VLC_ADD_PLUGIN([placebo_gles2])
        dnl Minimum version that the OpenGL filter pl_scale is compatible with
        PKG_CHECK_MODULES([LIBPLACEBO], [libplacebo >= 4.167],
            [have_libplacebo_glscale="yes"],
            [have_libplacebo_glscale="no"])
  ], [
    AS_IF([test -n "${enable_libplacebo}"], [
      AC_MSG_ERROR([${LIBPLACEBO_PKG_ERRORS}.])
    ])
    enable_libplacebo="no"
  ])
])
AM_CONDITIONAL([HAVE_LIBPLACEBO], [test "$enable_libplacebo" != "no"])
AM_CONDITIONAL([HAVE_LIBPLACEBO_SCALE], [test "$have_libplacebo_glscale" = "yes"])
dnl
dnl  OpenGL
dnl
PKG_CHECK_MODULES([EGL], [egl], [
  have_egl="yes"
], [
  have_egl="no"
])
AM_CONDITIONAL([HAVE_EGL], [test "${have_egl}" = "yes"])

PKG_CHECK_MODULES([GL], [gl], [
  have_gl="yes"
], [
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#ifdef _WIN32
# include <GL/glew.h>
#endif
#include <GL/gl.h>
]], [
    [int t0 = GL_TEXTURE0;]])
  ], [
    GL_CFLAGS=""
    AS_IF([test "${SYS}" != "mingw32"], [
      AC_CHECK_LIB([GL], [glTexture2D], [
        have_gl="yes"
        GL_LIBS="-lGL"
      ])
      have_gl="yes"
  AC_MSG_CHECKING([for OpenGL])
  AC_MSG_RESULT([${have_gl}])
AM_CONDITIONAL([HAVE_GL], [test "${have_gl}" = "yes"])
AS_IF([test "${have_gl}" = "yes"], [
  AC_DEFINE([HAVE_GL], 1, [Defined if having OpenGL])
])
dnl OpenGL ES 2: depends on EGL 1.1
have_gles2="no"
AC_ARG_ENABLE(gles2,
  [AS_HELP_STRING([--enable-gles2],
      [enable GLES2 support (default disabled)])])
AS_IF([test "$enable_gles2" = "yes"], [
  PKG_CHECK_MODULES([GLES2], [glesv2], [have_gles2="yes"], [])
  ])
AM_CONDITIONAL([HAVE_GLES2], [test "${have_gles2}" = "yes"])
dnl
dnl Vulkan
dnl
AC_ARG_ENABLE(vulkan,
  [AS_HELP_STRING([--disable-vulkan],
      [disable Vulkan support (default auto)])])

AS_IF([test "$enable_vulkan" != "no"], [
  PKG_CHECK_MODULES([VULKAN], [vulkan >= 1.0.26], [
    AC_DEFINE([HAVE_VULKAN], [1], [Define to 1 if vulkan is enabled.])
  ], [
    AS_IF([test -n "${enable_vulkan}"], [
      AC_MSG_ERROR([${VULKAN_PKG_ERRORS}.])
    ])
    enable_vulkan="no"
  ])
])
AM_CONDITIONAL(HAVE_VULKAN, [test "$enable_vulkan" != "no"])

dnl
dnl  X C Bindings modules
dnl
  AS_HELP_STRING([--enable-xcb], [X11 support with XCB (default enabled)]),, [
  AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
have_xcb="no"
have_xkbcommon_x11="no"
have_xcb_keysyms="no"
have_xcb_damage="no"
Pierre Lamot's avatar
Pierre Lamot committed
have_xcb_xfixes="no"
AS_IF([test "${enable_xcb}" != "no"], [
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed

  PKG_CHECK_MODULES([XCB], [xcb >= 1.8],, [
    xcb_err="$xcb_err ${XCB_PKG_ERRORS}."])
  PKG_CHECK_MODULES([XCB_COMPOSITE], [xcb-composite],, [
    xcb_err="$xcb_err ${XCB_COMPOSITE_PKG_ERRORS}."])
  PKG_CHECK_MODULES([XCB_RANDR], [xcb-randr >= 1.3],, [
    xcb_err="$xcb_err ${XCB_RANDR_PKG_ERRORS}."])
  PKG_CHECK_MODULES([XCB_RENDER], [xcb-render],, [
    xcb_err="$xcb_err ${XCB_RENDER_PKG_ERRORS}."])
  PKG_CHECK_MODULES([XCB_SHM], [xcb-shm >= 1.9.2],, [
    xcb_err="$xcb_err ${XCB_SHM_PKG_ERRORS}."])
  PKG_CHECK_MODULES([XCB_XKB], [xcb-xkb],, [
    xcb_err="$xcb_err ${XCB_XKB_PKG_ERRORS}."])

  dnl xproto
  PKG_CHECK_MODULES(XPROTO, [xproto],, [
    xcb_err="$xcb_err ${XPROTO_PKG_ERRORS}."])

  AS_IF([test -n "$xcb_err"], [
    AC_MSG_ERROR([$xcb_err Pass --disable-xcb to skip X11 support.])
  ])

  dnl xkbcommon
  PKG_CHECK_MODULES([XKBCOMMON_X11], [xkbcommon-x11], [
    have_xkbcommon_x11="yes"
    AC_MSG_WARN([${XKBCOMMON_X11_PKG_ERRORS}. Hotkeys are disabled.])
  dnl xcb-utils
  PKG_CHECK_MODULES([XCB_KEYSYMS], [xcb-keysyms >= 0.3.4], [
    have_xcb_keysyms="yes"
  ], [
    AC_MSG_WARN([${XCB_KEYSYMS_PKG_ERRORS}. Global hotkeys are disabled.])
  dnl xcb-damage
  PKG_CHECK_MODULES([XCB_DAMAGE], [xcb-damage], [
      have_xcb_damage="yes"
  ], [
    AC_MSG_WARN([${XCB_DAMAGE_PKG_ERRORS}. Qt X11 composition disabled.])
  ])

Pierre Lamot's avatar
Pierre Lamot committed
  dnl xcb-fixes
  PKG_CHECK_MODULES([XCB_XFIXES], [xcb-xfixes], [
      have_xcb_xfixes="yes"
  ], [
    AC_MSG_WARN([${XCB_XFIXES_PKG_ERRORS}. Qt X11 composition disabled.])
  ])


  have_xcb="yes"
AM_CONDITIONAL([HAVE_XCB], [test "${have_xcb}" = "yes"])
AM_CONDITIONAL([HAVE_XKBCOMMON_X11], [test "${have_xkbcommon_x11}" = "yes"])
AM_CONDITIONAL([HAVE_XCB_KEYSYMS], [test "${have_xcb_keysyms}" = "yes"])
AM_CONDITIONAL([HAVE_XCB_DAMAGE], [test "${have_xcb_damage}" = "yes"])
Pierre Lamot's avatar
Pierre Lamot committed
AM_CONDITIONAL([HAVE_XCB_XFIXES], [test "${have_xcb_xfixes}" = "yes"])
AC_ARG_ENABLE([vdpau],
  [AS_HELP_STRING([--enable-vdpau], [VDPAU hardware support (default auto)])])
AS_IF([test "${enable_vdpau}" != "no"], [
  PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.6], [
    AS_IF([test "${no_x}" = "yes"], [
      AC_MSG_ERROR([VDPAU requires Xlib (X11).])
    ])
  ], [
    AS_IF([test -n "${enable_vdpau}"], [
      AC_MSG_ERROR([${VDPAU_PKG_ERRORS}.])
    ])
  ])
])
AM_CONDITIONAL([HAVE_VDPAU], [test "${have_vdpau}" = "yes"])
AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [
  PKG_CHECK_EXISTS([libavcodec >= 56.19.100], [
    have_avcodec_vdpau="yes"
    AC_MSG_NOTICE([VDPAU decoding acceleration activated])
  ], [
    AS_IF([test -n "${enable_vdpau}"], [
      AC_MSG_ERROR([libavcodec >= 56.10.0 is required for VDPAU decoding.])
      AC_MSG_WARN([libavcodec >= 56.10.0 are required for VDPAU decoding.])
    ])
  ])
])
AM_CONDITIONAL([HAVE_AVCODEC_VDPAU], [test "${have_avcodec_vdpau}" = "yes"])


AC_ARG_ENABLE([wayland],
  AS_HELP_STRING([--enable-wayland], [Wayland support (default auto)]))
have_wayland="no"
AS_IF([test "${enable_wayland}" != "no"], [
  PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= 1.19.91],, [
    wl_err="$wl_err ${WAYLAND_CLIENT_PKG_ERRORS}."
  ])
  PKG_CHECK_MODULES([WAYLAND_CURSOR], [wayland-cursor],, [
    wl_err="$wl_err ${WAYLAND_CURSOR_PKG_ERRORS}."
  ])
  PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],, [
    wl_err="$wl_err ${WAYLAND_EGL_PKG_ERRORS}."
  ])
  PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner >= 1.15], [
    WAYLAND_SCANNER="$(${PKG_CONFIG} wayland-scanner --variable wayland_scanner)"
  ], [
    wl_err="$wl_err ${WAYLAND_SCANNER_PKG_ERRORS}."
  ])

  dnl wayland-protocols
  PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= 1.15], [
    WAYLAND_PROTOCOLS="$(${PKG_CONFIG} wayland-protocols --variable pkgdatadir)"
  ], [
    wl_err="$wl_err ${WAYLAND_PROTOCOLS_PKG_ERRORS}."
  ])
  AS_IF([test -n "$wl_err"], [
    AS_IF([test -n "$enable_wayland"], [
      AC_MSG_ERROR([$wl_err])
      AC_MSG_WARN([$wl_err])
  dnl xkbcommon
  PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon], [
    have_xkbcommon="yes"
    AC_MSG_WARN([${XKBCOMMON_PKG_ERRORS}. Hotkeys are disabled.])
AM_CONDITIONAL([HAVE_WAYLAND], [test "${have_wayland}" = "yes"])
AC_SUBST([WAYLAND_PROTOCOLS])
AC_SUBST([WAYLAND_SCANNER])
AM_CONDITIONAL([HAVE_XKBCOMMON], [test "${have_xkbcommon}" = "yes"])
AC_ARG_ENABLE([freetype],
  AS_HELP_STRING([--enable-freetype],   [freetype support   (default auto)]))
AC_ARG_ENABLE([fribidi],
  AS_HELP_STRING([--enable-fribidi],    [fribidi support    (default auto)]))
AC_ARG_ENABLE([harfbuzz],
  AS_HELP_STRING([--enable-harfbuzz],   [harfbuzz support   (default auto)]))
AC_ARG_ENABLE([fontconfig],
  AS_HELP_STRING([--enable-fontconfig], [fontconfig support (default auto)]))
AC_ARG_WITH([default-font],
    AS_HELP_STRING([--with-default-font=PATH],
        [Path to the default font]),
        [AC_DEFINE_UNQUOTED([DEFAULT_FONT_FILE],
            "$withval", [Default font])])
AC_ARG_WITH([default-monospace-font],
    AS_HELP_STRING([--with-default-monospace-font=PATH],
        [Path to the default font]),
        [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FONT_FILE],
            "$withval", [Default monospace font])])

AC_ARG_WITH([default-font-family],
    AS_HELP_STRING([--with-default-font-family=NAME],
        [Name of the default font family]),
        [AC_DEFINE_UNQUOTED([DEFAULT_FAMILY],
            "$withval", [Default font family])])
AC_ARG_WITH([default-monospace-font-family],
    AS_HELP_STRING([--with-default-monospace-font-family=NAME],
        [Name of the default font family]),
        [AC_DEFINE_UNQUOTED([DEFAULT_MONOSPACE_FAMILY],
            "$withval", [Default monospace font family])])

have_freetype="no"
have_fontconfig="no"
have_fribidi="no"
have_harfbuzz="no"
if test "${enable_freetype}" != "no"; then
   PKG_CHECK_MODULES(FREETYPE, freetype2, [
      have_freetype="yes"
      VLC_ADD_CPPFLAGS([skins2],[${FREETYPE_CFLAGS}])
      VLC_ADD_LIBS([skins2],[${FREETYPE_LIBS}])
    dnl fontconfig support
    AS_IF([test "${enable_fontconfig}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "darwin"], [
      PKG_CHECK_MODULES(FONTCONFIG, [fontconfig >= 2.11], [
        have_fontconfig="yes"
      ], [
        AC_MSG_WARN([${FONTCONFIG_PKG_ERRORS}. Styles will be disabled in FreeType.])
      ])
    ])
      if test "${enable_fribidi}" != "no"; then
        PKG_CHECK_MODULES(FRIBIDI, fribidi, [
          have_fribidi="yes"
          VLC_ADD_CPPFLAGS([skins2], [${FRIBIDI_CFLAGS} -DHAVE_FRIBIDI])
          VLC_ADD_LIBS([skins2], [${FRIBIDI_LIBS}])
        ],[AC_MSG_WARN([${FRIBIDI_PKG_ERRORS}. Bidirectional text and complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
      fi

      dnl harfbuzz support
      if test "${have_fribidi}" != "no"; then
        if test "${enable_harfbuzz}" != "no"; then
          PKG_CHECK_MODULES(HARFBUZZ, harfbuzz, [
            have_harfbuzz="yes"
            VLC_ADD_CPPFLAGS([skins2], [${HARFBUZZ_CFLAGS} -DHAVE_HARFBUZZ])
            VLC_ADD_LIBS([skins2], [${HARFBUZZ_LIBS}])
          ],[AC_MSG_WARN([${HARFBUZZ_PKG_ERRORS}. Support for complex scripts (Arabic, Farsi, Thai...) will be disabled in FreeType.])])
        fi
  AS_IF([test -n "${enable_freetype}"],[
    AC_MSG_ERROR([${FREETYPE_PKG_ERRORS}. Install FreeType2 development or configure with --disable-freetype.])
AM_CONDITIONAL([HAVE_FREETYPE], [test "${have_freetype}" = "yes"])
AM_CONDITIONAL([HAVE_FONTCONFIG], [test "${have_fontconfig}" = "yes"])
AM_CONDITIONAL([HAVE_FRIBIDI], [test "${have_fribidi}" = "yes"])
AM_CONDITIONAL([HAVE_HARFBUZZ], [test "${have_harfbuzz}" = "yes"])
dnl
dnl libass subtitle rendering module
dnl
AC_ARG_ENABLE([libass],
  AS_HELP_STRING([--enable-libass], [Subtitle support using libass (default enabled)]))
AS_IF( [test "${enable_libass}" != "no"], [
  PKG_CHECK_MODULES(LIBASS, [libass >= 0.9.8],
      [
        VLC_ADD_PLUGIN([libass])

        if test "${have_fontconfig}" != "no"; then
            VLC_ADD_CPPFLAGS([libass],[-DHAVE_FONTCONFIG])
            VLC_ADD_LIBS([libass],[${FONTCONFIG_LIBS}])
        fi
      ],[
        AC_MSG_WARN([${LIBASS_PKG_ERRORS}.])
      ])
  ])

dnl
dnl SAPI (text to Speech renderer for Windows)
dnl
AC_CHECK_TYPES([ISpObjectToken],[
              have_sapi="yes"
            ],[AC_MSG_WARN([sapi.h not found. Text to Speech renderer for Windows disabled])],
              [#include <windows.h>
               #include <sapi.h>
               #include <sphelper.h>])
AM_CONDITIONAL([HAVE_SAPI], [test "${have_sapi}" = "yes"])
Jean-Paul Saman's avatar
Jean-Paul Saman committed
dnl  SVG module (text rendering and image decoding)
PKG_ENABLE_MODULES_VLC([SVG], [], [librsvg-2.0 >= 2.9.0], [SVG rendering library],[auto])
Jean-Paul Saman's avatar
Jean-Paul Saman committed
PKG_ENABLE_MODULES_VLC([SVGDEC], [], [librsvg-2.0 >= 2.9.0 cairo >= 1.13.1], [SVG image decoder library],[auto])
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Windows DirectX module
dnl
AC_ARG_ENABLE([directx],
  AS_HELP_STRING([--enable-directx],
    [Microsoft DirectX support (default enabled on Windows)]),, [
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
  AS_IF([test "${SYS}" = "mingw32"], [
    enable_directx="yes"
  ], [
    enable_directx="no"
  ])
])
AS_IF([test "${enable_directx}" != "no"], [
  dnl OpenGL
  AC_CHECK_HEADERS([GL/glew.h], [
    AC_CHECK_HEADERS([GL/wglew.h], [
        VLC_ADD_PLUGIN([glwin32 wgl])
      ],, [
        #include <windows.h>
        #include <GL/glew.h>
      ])],, [
      #include <windows.h>
   ])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Martell Malone's avatar
Martell Malone committed
  dnl Direct3D11
  AC_CHECK_HEADERS([d3d11.h], [
    VLC_ADD_PLUGIN([direct3d11 direct3d11_filters])
Martell Malone's avatar
Martell Malone committed
  ])

  dnl Direct3D9
  AC_CHECK_HEADERS([d3d9.h], [
    VLC_ADD_PLUGIN([direct3d9])
    AC_CHECK_HEADERS([d3dx9effect.h])
    AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
        [[#define COBJMACROS
          #include <d3d9.h>
          #include <dxva2api.h>
          #ifndef IDirectXVideoProcessorService_GetVideoProcessorDeviceGuids
          # error dxva2 too old
          #endif
        ]],[[;]])
      ],[
        VLC_ADD_PLUGIN([direct3d9_filters])
      [AC_MSG_WARN([Could not find required IDirectXVideoDecoder in dxva2api.h])])
dnl  Direct Rendering Manager (DRM) plugins
AC_CHECK_HEADER([drm/drm_mode.h], [
  have_drm="yes"
], [
  have_drm="no"
])
AM_CONDITIONAL([HAVE_DRM], [test "$have_drm" = "yes"])

PKG_HAVE_WITH_MODULES([LIBDRM], [libdrm >= 2.4.83], [Linux kernel mode setting output], [auto])
Samuel Hocevar's avatar
Samuel Hocevar committed
dnl
dnl  libcaca plugin
dnl
PKG_ENABLE_MODULES_VLC([CACA], [], [caca >= 0.99.beta14], [libcaca output],[auto])
dnl
dnl  OS/2 KVA plugin
dnl
  AS_HELP_STRING([--enable-kva],
    [support the K Video Accelerator KVA (default enabled on OS/2)]),, [
  AS_IF([test "$SYS" = "os2"], [
    enable_kva="yes"
  ])
])
have_kva="no"
KVA_LIBS=""
AS_IF([test "$enable_kva" != "no"], [
  AC_CHECK_HEADERS([kva.h], [
    have_kva="yes"
    AC_CHECK_LIB([kva], [main], [
AC_SUBST([KVA_LIBS])
AM_CONDITIONAL([HAVE_KVA], [test "${have_kva}" = "yes"])

  AS_HELP_STRING([--enable-mmal],
    [Multi-Media Abstraction Layer (MMAL) hardware plugin (default enable)]))
if test "${enable_mmal}" != "no"; then
Julian Scheel's avatar
Julian Scheel committed
  LDFLAGS="${LDFLAGS} -L/opt/vc/lib -lvchostif"
  CPPFLAGS="${CPPFLAGS} -isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
  AC_CHECK_HEADERS([interface/mmal/mmal.h],
    [ AC_CHECK_LIB([bcm_host], [vc_tv_unregister_callback_full], [
        MMAL_CFLAGS="-isystem /opt/vc/include -isystem /opt/vc/include/interface/vcos/pthreads -isystem /opt/vc/include/interface/vmcs_host/linux"
        MMAL_LIBS="-L/opt/vc/lib -lbcm_host -lmmal -lmmal_core -lmmal_components -lmmal_util -lvchostif -lvcsm -lvchiq_arm"
        ],[
        AS_IF([test "${enable_mmal}" = "yes"],
            [ AC_MSG_ERROR([Cannot find bcm library...]) ],
            [ AC_MSG_WARN([Cannot find bcm library...]) ])
          ],
        [])
    ] , [ AS_IF([test "${enable_mmal}" = "yes"],
      [ AC_MSG_ERROR([Cannot find development headers for mmal...]) ],
      [ AC_MSG_WARN([Cannot find development headers for mmal...]) ]) ])
  VLC_RESTORE_FLAGS
fi
AC_SUBST([MMAL_CFLAGS])
AC_SUBST([MMAL_LIBS])
AM_CONDITIONAL([HAVE_MMAL], [test "${have_mmal}" = "yes"])
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl  Audio plugins
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed

EXTEND_HELP_STRING([Audio plugins:])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

AC_ARG_ENABLE([pulse],
  AS_HELP_STRING([--enable-pulse],
    [use the PulseAudio client library (default auto)]))
have_pulse="no"
AS_IF([test "${enable_pulse}" != "no"], [
  PKG_CHECK_MODULES([PULSE], [libpulse >= 6.0], [
    have_pulse="yes"
  ], [
    AS_IF([test "x${enable_pulse}" != "x"], [
      AC_MSG_ERROR([$PULSE_PKG_ERRORS. PulseAudio 6.0 or later required.])
    ])
  ])
])
AM_CONDITIONAL([HAVE_PULSE], [test "${have_pulse}" = "yes"])
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl  ALSA module
dnl
  AS_HELP_STRING([--enable-alsa],
    [support the Advanced Linux Sound Architecture (default auto)]),, [
  AS_IF([test "$SYS" = "linux" -a "${have_pulse}" = "no"], [
    enable_alsa="yes"
  ])
])
have_alsa="no"
AS_IF([test "${enable_alsa}" != "no"], [
  PKG_CHECK_MODULES([ALSA], [alsa >= 1.0.24], [
    have_alsa="yes"
  ], [
    AS_IF([test "x${enable_alsa}" != "x"], [
      AC_MSG_ERROR([$ALSA_PKG_ERRORS. alsa-lib 1.0.24 or later required. Pass --disable-alsa to ignore this error.])
    ])
  ])
])
AM_CONDITIONAL([HAVE_ALSA], [test "${have_alsa}" = "yes"])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

  AS_HELP_STRING([--enable-oss],
    [support the Open Sound System OSS (default enabled on FreeBSD/NetBSD/DragonFlyBSD)]),, [
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
  AS_IF([test "$SYS" = "mingw32" -o "$SYS" = "linux" -o "$SYS" = "openbsd"], [
    enable_oss="no"
  ])
])
have_oss="no"
OSS_LIBS=""
AS_IF([test "$enable_oss" != "no"], [
  AC_CHECK_HEADERS([soundcard.h sys/soundcard.h], [
    have_oss="yes"
    AC_CHECK_LIB([ossaudio], [main], [
AC_SUBST([OSS_LIBS])
AM_CONDITIONAL([HAVE_OSS], [test "${have_oss}" = "yes"])

dnl
dnl  OpenBSD sndio module
dnl
AC_ARG_ENABLE([sndio],
  AS_HELP_STRING([--disable-sndio],
    [support the OpenBSD sndio (default auto)]),, [
Alexandre Ratchov's avatar
Alexandre Ratchov committed
  AS_IF([test "$SYS" = "openbsd"], [
    enable_sndio="yes"
  ])
])
have_sndio="no"
AS_IF([test "$enable_sndio" != "no"], [
  PKG_CHECK_MODULES([SNDIO], [sndio], [
    have_sndio="yes"
  ], [
    AS_IF([test -n "$enable_sndio"], [
      AC_MSG_ERROR([${SNDIO_PKG_ERRORS}.)])
  ])
])
AM_CONDITIONAL([HAVE_SNDIO], [test "${have_sndio}" = "yes"])

dnl
dnl  Windows Audio Session plugin
dnl
AC_ARG_ENABLE([wasapi],
  AS_HELP_STRING([--enable-wasapi],
    [use the Windows Audio Session API (default auto)])
have_wasapi="no"
AS_IF([test "$enable_wasapi" != "no"], [
  AC_CHECK_HEADER([audioclient.h], [
    have_wasapi="yes"
  ], [
    AS_IF([test "x${enable_wasapi}" != "x"], [
      AC_MSG_ERROR([Windows Audio Session API not found.])
    ])
  ])
])
AM_CONDITIONAL([HAVE_WASAPI], [test "${have_wasapi}" = "yes"])

  AS_HELP_STRING([--disable-jack],
    [do not use jack (default auto)]))
have_jack="no"
AS_IF([test "${enable_jack}" != "no"], [
    PKG_CHECK_MODULES(JACK, jack >= 1.9.7,
      [ have_jack=yes ],
      [
      AC_MSG_WARN([${JACK_PKG_ERRORS}, trying jack1 instead])

      PKG_CHECK_MODULES(JACK, jack >= 0.120.1 jack < 1.0,
      [ have_jack=yes ],
      [
      AS_IF([test -n "${enable_jack}"],
         [AC_MSG_ERROR([${JACK_PKG_ERRORS}.])],
         [AC_MSG_WARN([${JACK_PKG_ERRORS}.])])
      ])
    ])
])
AM_CONDITIONAL([HAVE_JACK], [test "${have_jack}" != "no"])
dnl
dnl  OpenSLES Android
dnl
AC_ARG_ENABLE([opensles],
  AS_HELP_STRING([--enable-opensles], [Android OpenSL ES audio module (default disabled)]))
if test "${HAVE_ANDROID}" = "1"; then
  if test "${enable_opensles}" = "yes"; then
      AC_CHECK_HEADERS([SLES/OpenSLES.h],
        [ VLC_ADD_PLUGIN([opensles_android]) ],
        [ AC_MSG_ERROR([cannot find OpenSLES headers])] )
  fi
fi

PKG_ENABLE_MODULES_VLC([SAMPLERATE], [], [samplerate], [Resampler with libsamplerate], [auto])
PKG_ENABLE_MODULES_VLC([SOXR], [], [soxr >= 0.1.2], [SoX Resampler library], [auto])
dnl
dnl  libebur128 module
dnl
PKG_ENABLE_MODULES_VLC([EBUR128], [], [libebur128 >= 1.2.4], [EBU R 128 standard for loudness normalisation], [auto])

dnl
dnl  OS/2 KAI plugin
dnl
  AS_HELP_STRING([--enable-kai],
    [support the K Audio Interface KAI (default enabled on OS/2)]),, [
  AS_IF([test "$SYS" = "os2"], [
    enable_kai="yes"
  ])
])
have_kai="no"
KAI_LIBS=""
AS_IF([test "$enable_kai" != "no"], [
  AC_CHECK_HEADERS([kai.h], [
    have_kai="yes"
    AC_CHECK_LIB([kai], [main], [
AC_SUBST([KAI_LIBS])
AM_CONDITIONAL([HAVE_KAI], [test "${have_kai}" = "yes"])

dnl
dnl  chromaprint audio track fingerprinter
dnl
PKG_ENABLE_MODULES_VLC([CHROMAPRINT], [stream_out_chromaprint], [libchromaprint >= 0.6.0], [Chromaprint audio fingeprinter], [auto])
AC_ARG_VAR(PROTOC, [protobuf compiler])
dnl Intentionally using prefixed binaries for native tool in contribs
AC_CHECK_TOOL(PROTOC, protoc, no)
AS_IF([test "${PROTOC}" != "no"], [
    protoc_ver="$(eval ${PROTOC} --version 2>/dev/null | head -1 | sed s/'.* '//)"
],[
    protoc_ver="3.1.0"
])
m4_pushdef([protobuf_lite_version], ${protoc_ver})
PKG_WITH_MODULES([CHROMECAST],[protobuf-lite = protobuf_lite_version], [
    AS_IF([test "${PROTOC}" != "no"], [
        build_chromecast="yes"
    ], [
    AC_MSG_ERROR(protoc compiler needed for [chromecast] was not found)
    ])
], [
    AS_IF([test "${enable_chromecast}" = "yes"],
        AC_MSG_ERROR(Library [protobuf-lite = protobuf_lite_version] needed for [chromecast] was not found),
        AC_MSG_WARN(Library [protobuf-lite = protobuf_lite_version] needed for [chromecast] was not found)
    )
    enable_chromecast="no"
], [(Chromecast streaming support)], [auto])
AM_CONDITIONAL([BUILD_CHROMECAST], [test "${build_chromecast}" = "yes"])
m4_popdef([protobuf_lite_version])

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Interface plugins
dnl

EXTEND_HELP_STRING([Interface plugins:])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

zorglub's avatar
zorglub committed
dnl
zorglub's avatar
zorglub committed
dnl
AC_ARG_ENABLE([qt],
  AS_HELP_STRING([--disable-qt], [Qt UI support (default enabled)]),, [
  AS_IF([test "${enable_vlc}" != "no"], [enable_qt="yes"])
  AS_IF([test "${SYS}" = "darwin"], [
    enable_qt="no"
  ])
])
AS_IF([test "${enable_qt}" != "no"], [
  PKG_CHECK_MODULES([QT], [Qt5Core >= 5.11.0 Qt5Widgets Qt5Gui Qt5Quick Qt5QuickWidgets Qt5QuickControls2 Qt5Svg], [
      PKG_CHECK_MODULES([QT5_X11], [Qt5X11Extras], [
          have_qt5_x11="yes"
      ],[
          AC_MSG_WARN([Not building Qt Interface with X11 helpers.])
      dnl TODO
      PKG_CHECK_MODULES([QT5_WAYLAND], [Qt5WaylandClient], [
          have_qt5_wayland="yes"
      ],[
          AC_MSG_WARN([Not building Qt Interface with wayland support.])
      ])

      QT_PATH="$(eval $PKG_CONFIG --variable=exec_prefix Qt5Core)"
      QT_HOST_PATH="$(eval $PKG_CONFIG --variable=host_bins Qt5Core)"
      QT_VERSION="$(eval $PKG_CONFIG --modversion Qt5Gui)"
      AC_PATH_PROGS(MOC, [moc-qt5 moc], moc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
      AC_PATH_PROGS(RCC, [rcc-qt5 rcc], rcc, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
      AC_PATH_PROGS(UIC, [uic-qt5 uic], uic, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
      AC_PATH_PROGS(QMLCACHE, [qmlcachegen-qt5 qmlcachegen], no, ["${QT_HOST_PATH}" "${QT_PATH}/bin"])
      AS_IF([test "${QMLCACHE}" = "no"], [
          AC_MSG_WARN([qmlcachegen not found])
      ])

      VLC_SAVE_FLAGS
      CPPFLAGS="${CPPFLAGS} ${QT_CFLAGS}"
      AC_COMPILE_IFELSE(
        [AC_LANG_PROGRAM([[#include <qconfig.h>]],[[QT_STATIC]])],
        [have_qt_static=yes],[have_qt_static=no])
      VLC_RESTORE_FLAGS

      AS_IF([test "${have_qt_static}" = "yes"],[
        PKG_CHECK_MODULES([QT5_PLUGINS], [
          qtgraphicaleffectsplugin qtquick2plugin qtquickcontrols2plugin
          qtquicktemplates2plugin qquicklayoutsplugin windowplugin
          qmlshapesplugin qmlplugin modelsplugin qsvg qsvgicon
          qtgraphicaleffectsprivate qjpeg ])

        PKG_CHECK_MODULES([QT5_XCB_PLUGINS], [
          qxcb-glx-integration qxcb
        ], [VLC_ADD_LIBS([qt],[${QT5_XCB_PLUGINS_LIBS}])], [:])

        PKG_CHECK_MODULES([QT5_WAYLAND_PLUGINS], [
          qwayland-generic qwayland-egl xdg-shell
        ], [VLC_ADD_LIBS([qt],[${QT5_WAYLAND_PLUGINS_LIBS}])], [:])

        dnl Platform plugins are mandatory on those platforms, as opposed to
        dnl the previous integration for linux which are optional

        AS_IF([test "${SYS}" = "mingw32"], [
          PKG_CHECK_MODULES([QT5_PLATFORM_PLUGINS], [qwindows qwindowsvistastyle])
        ])

        AS_IF([test "${SYS}" = "darwin" -a "${HAVE_OSX}" = 1], [
          PKG_CHECK_MODULES([QT5_PLATFORM_PLUGINS], [qcocoa])
        ])
      ])
      AS_IF([test -n "${enable_qt}"],[
        AC_MSG_ERROR([${QT_PKG_ERRORS}. If you want to build VLC without GUI, pass --disable-qt.])
      ],[
        AC_MSG_WARN([${QT_PKG_ERRORS}.])
AC_ARG_ENABLE([qt-qml-cache],
  AS_HELP_STRING([--enable-qt-qml-cache],
    [enable qml cache generation]))
AM_CONDITIONAL([HAVE_QMLCACHE], [test "${enable_qt_qml_cache}" = "yes" && test "$QMLCACHE" != "no"])
AC_ARG_ENABLE([qt-qml-debug],
Johannes Kauffmann's avatar
Johannes Kauffmann committed
  AS_HELP_STRING([--enable-qt-qml-debug], [enable qml debugger]))
AM_CONDITIONAL(QT_QML_DEBUG, [test "${enable_qt_qml_debug}" = "yes"])

AS_IF([test "${enable_qt}" != "no"], [
  ALIASES="${ALIASES} qvlc"
AC_SUBST([QT_VERSION])
AM_CONDITIONAL([ENABLE_QT], [test "$enable_qt" != "no"])
AM_CONDITIONAL([HAVE_QT5_X11], [test "${have_qt5_x11}" = "yes"])
AM_CONDITIONAL([HAVE_QT5_WAYLAND], [test "${have_qt5_wayland}" = "yes"])
zorglub's avatar
zorglub committed

dnl detect kde4-config patch (used for kde solids).
dnl
AC_ARG_VAR([KDE4_CONFIG], [kde4-config utility])
AS_IF([test "x$KDE4_CONFIG" = "x"], [
  KDE4_CONFIG="kde4-config"
])

AS_IF([test "$enable_qt" = "no"], [
  AS_IF([test "${enable_skins2}" = "yes"], [
    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.])
  ], [
    enable_skins2="no"
    AC_MSG_WARN([The skins2 module depends on the Qt interface, Qt is not built so skins2 is disabled.])
AC_ARG_ENABLE([skins2],
  AS_HELP_STRING([--enable-skins2], [skins interface module (default auto)]))
AS_IF([test "${enable_skins2}" != "no"], [
  have_skins_deps="yes"

  dnl Win32
  AS_IF([test "${SYS}" = "mingw32"], [
    VLC_ADD_CPPFLAGS([skins2],[-U_OFF_T_ -U_off_t -DWIN32_SKINS])
    VLC_ADD_LIBS([skins2],[-lgdi32 -lole32 -luuid -lmsimg32])
KO Myung-Hun's avatar
KO Myung-Hun committed
  dnl OS/2
  ], [test "${SYS}" = "os2"], [
    VLC_ADD_CPPFLAGS([skins2],[ -DOS2_SKINS])
  dnl Linux/Unix
  ], [
    PKG_CHECK_MODULES([XPM], [xpm],, [have_skins_deps="no"])
    PKG_CHECK_MODULES([XINERAMA], [xinerama],, [have_skins_deps="no"])
    PKG_CHECK_MODULES([XCURSOR], [xcursor],, [have_skins_deps="no"])
    PKG_CHECK_MODULES([XEXT], [xext],, [have_skins_deps="no"])
    VLC_ADD_CPPFLAGS([skins2],[${X_CFLAGS} ${XEXT_CFLAGS} ${XPM_CFLAGS} -DX11_SKINS])
    VLC_ADD_LIBS([skins2],[${X_LIBS} ${X_PRE_LIBS} ${XEXT_LIBS} ${XPM_LIBS} ${XINERAMA_LIBS} ${XCURSOR_LIBS} -lX11])
  ])

  dnl we need freetype
  AS_IF([test "${have_freetype}" != "yes"], [
    have_skins_deps="no"