Skip to content
Snippets Groups Projects
configure.ac 133 KiB
Newer Older
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Autoconf settings for vlc
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
AC_COPYRIGHT([Copyright 2002-2011 the VideoLAN team])
AC_INIT(vlc, 1.2.0-pre2)
VERSION_MAJOR=1
VERSION_MINOR=2
VERSION_REVISION=0
VERSION_EXTRA=0
VERSION_DEV=pre1
PKGDIR="vlc"
AC_SUBST(PKGDIR)
CONFIGURE_LINE="`echo "$0 $ac_configure_args" | sed -e 's/\\\/\\\\\\\/g'`"
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
COPYRIGHT_YEARS="1996-2011"
AC_CONFIG_MACRO_DIR(m4)
AC_CANONICAL_BUILD
AC_PRESERVE_HELP_ORDER
AM_INIT_AUTOMAKE(tar-ustar color-tests)
# Disable with "./configure --disable-silent-rules" or "make V=1"
AM_SILENT_RULES([yes])
dnl Too many people are not aware of maintainer mode:
dnl If you want to use it, you definitely know what you are doing, so
dnl you can specify "--disable-maintainer-mode". But if you want the default
dnl automake behavior, you've likely never heard of maintainer mode, so we
dnl can't expect you to enable it manually.
AS_IF([test "x${enable_maintainer_mode}" != "xno"],
    [enable_maintainer_mode="yes"])
dnl
dnl Directories
dnl
dnl vlcincludedir="\${includedir}/\${PKGDIR}"
dnl AC_SUBST(vlcincludedir)
vlcdatadir="\${datadir}/\${PKGDIR}"
AC_SUBST(vlcdatadir)
vlclibdir="\${libdir}/\${PKGDIR}"
AC_SUBST(vlclibdir)

Samuel Hocevar's avatar
Samuel Hocevar committed
dnl
dnl Check for tools
Samuel Hocevar's avatar
Samuel Hocevar committed
dnl
AC_PROG_CC_C99
AC_USE_SYSTEM_EXTENSIONS
AC_DEFINE([_FORTIFY_SOURCE], 2, [Define to 2 to get glibc warnings.])
AC_DEFINE([_FILE_OFFSET_BITS], 64, [Define to 64 for large files support.])
AC_DEFINE([_REENTRANT],, [Define to expose reentrant functions.])
AC_DEFINE([_THREAD_SAFE],, [Same as _REENTANT for some other OSes.])
AC_DEFINE([__LIBVLC__],, [Define within the LibVLC source code tree.])
AC_PROG_OBJC
_AM_DEPENDENCIES([OBJC])
AC_PROG_EGREP
AC_ARG_VAR([DESKTOP_FILE_VALIDATE], [Validator for desktop entry files])
AC_CHECK_PROGS(DESKTOP_FILE_VALIDATE, [${DESKTOP_FILE_VALIDATE} desktop-file-validate], :)

dnl Check for compiler properties
AC_C_CONST
AC_C_INLINE
dnl Extend the --help string at the current spot.
AC_DEFUN([EXTEND_HELP_STRING], [m4_divert_once([HELP_ENABLE], [$1])])

dnl Allow binary package maintainer to pass a custom string to avoid
AC_ARG_WITH(binary-version,
    AS_HELP_STRING([--with-binary-version=STRING],
         [To avoid plugins cache problem between binary version]),[],[])
AS_IF([test -n "${with_binary_version}"],[
    AC_DEFINE_UNQUOTED([DISTRO_VERSION],["${with_binary_version}"],
         [Binary specific version])
])
gbazin's avatar
 
gbazin committed
dnl
dnl  Check the operating system
dnl
case "${host_os}" in
  linux*)
  bsdi*)
    SYS=bsdi
    CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
impulze's avatar
impulze committed
    VLC_ADD_LIBS([vcd cdda vcdx],[-ldvd])
  *bsd*)
    SYS="${host_os}"
    CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
    case "${host_os}" in
      freebsd*)
        CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include"
        CPPFLAGS="${CPPFLAGS_save}"
        LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib"
hartman's avatar
hartman committed
        LDFLAGS="${LDFLAGS_save}"
      openbsd*)
        CPPFLAGS_save="${CPPFLAGS_save} -I/usr/local/include -I/usr/X11R6/include"
        CPPFLAGS="${CPPFLAGS_save}"
        LDFLAGS_save="${LDFLAGS_save} -L/usr/local/lib -L/usr/X11R6/lib/"
        LDFLAGS="${LDFLAGS_save}"
        ;;

    dnl Force gcc "-arch" flag
    ARCH_flag=""
    case "${host}" in
      i386*)
        ARCH_flag="-arch i386"
      ;;
      ppc64*)
        ARCH_flag="-arch ppc64"
      ;;
      ppc*)
        ARCH_flag="-arch ppc"
      ;;
      x86_64*)
        ARCH_flag="-arch x86_64"
      ;;
    esac

    CFLAGS_save="${CFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="${CXXFLAGS_save} -D_INTL_REDIRECT_MACROS ${ARCH_flag}"; CXXFLAGS="${CXXFLAGS_save}"
    CPPFLAGS_save="${CPPFLAGS_save} ${ARCH_flag}"; CPPFLAGS="${CPPFLAGS_save}"
    OBJCFLAGS_save="${OBJCFLAGS_save} -D_INTL_REDIRECT_MACROS -std=gnu99 ${ARCH_flag}"; OBJCFLAGS="${OBJCFLAGS_save}"
    LDFLAGS_save="${LDFLAGS_save} -Wl,-headerpad_max_install_names ${ARCH_flag}"; LDFLAGS="${LDFLAGS_save}"
    VLC_ADD_LIBS([mkv mp4 motion], [-Wl,-framework,IOKit,-framework,CoreFoundation])
    VLC_ADD_LIBS([libvlc vlc],[-Wl,-undefined,dynamic_lookup])
    VLC_ADD_LIBS([avcodec avformat access_avio swscale postproc i420_rgb_mmx x264],[-Wl,-read_only_relocs,suppress])
    VLC_ADD_CFLAGS([motion],[-fconstant-cfstrings])
    VLC_ADD_LIBS([libvlccore],[-Wl,-framework,CoreFoundation])
    AC_ARG_ENABLE(macosx-defaults,
      AS_HELP_STRING([--enable-macosx-defaults],[Build the default configuration on Mac OS X (default enabled)]))
    if test "x${enable_macosx_defaults}" != "xno"
    then
        echo ""
        echo "Building with Mac OS X defaults:"
        build_dir=`pwd`
        echo "  Assuming --prefix=${build_dir}/vlc_install_dir"
        ac_default_prefix="${build_dir}/vlc_install_dir"
        enable_faad="yes"
        echo "  Assuming --enable-faad"
        enable_flac="yes"
        echo "  Assuming --enable-flac"
        enable_theora="yes"
        echo "  Assuming --enable-theora"
        enable_shout="yes"
        echo "  Assuming --enable-shout"
        enable_vcdx="yes"
        echo "  Assuming --enable-vcdx"
        enable_caca="yes"
        echo "  Assuming --enable-caca"
        enable_ncurses="yes"
        echo "  Assuming --enable-ncurses"
        enable_twolame="yes"
        echo "  Assuming --enable-twolame"
        enable_realrtsp="yes"
        echo "  Assuming --enable-realrtsp"
        enable_libass="yes"
        echo "  Assuming --enable-libass"

        enable_skins2="no"
        echo "  Assuming --disable-skins2"
        enable_xcb="no"
        echo "  Assuming --disable-xcb"
    dnl
    dnl  Check for Mac OS X SDK settings
    dnl
    AC_ARG_WITH(macosx-sdk,
      [AS_HELP_STRING([--with-macosx-sdk=DIR],
        [compile using the SDK in DIR])])
    test "${with_macosx_sdk}" = "" && with_macosx_sdk=/Developer/SDKs/MacOSX10.5.sdk
    ! test -d "${with_macosx_sdk}" && AC_MSG_ERROR([SDK "${with_macosx_sdk}" not found])
    CPP="${CPP} -isysroot ${with_macosx_sdk}"
    CC="${CC} -isysroot ${with_macosx_sdk}"
    CXX="${CXX} -isysroot ${with_macosx_sdk}"
    OBJC="${OBJC} -isysroot ${with_macosx_sdk}"
    LD="${LD} -syslibroot ${with_macosx_sdk}"
      [AS_HELP_STRING([--with-macosx-version-min=VERSION],
        [compile for MacOS X VERSION and above])])
    if test "${with_macosx_version_min}" != "" ; then
        CPP="${CPP} -mmacosx-version-min=${with_macosx_version_min}"
        CC="${CC} -mmacosx-version-min=${with_macosx_version_min}"
        CXX="${CXX} -mmacosx-version-min=${with_macosx_version_min}"
        OBJC="${OBJC} -mmacosx-version-min=${with_macosx_version_min}"
        LD="${LD} -macosx_version_min=${with_macosx_version_min}"
        CFLAGS_save="${CFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CFLAGS="${CFLAGS_save}"
        CXXFLAGS_save="${CXXFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; CXXFLAGS="${CXXFLAGS_save}"
        OBJCFLAGS_save="${OBJCFLAGS_save} -DMACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}"; OBJCFLAGS="${OBJCFLAGS_save}"
        MACOSX_DEPLOYMENT_TARGET=${with_macosx_version_min}
        export MACOSX_DEPLOYMENT_TARGET
    fi
  *mingw32* | *cygwin* | *wince* | *mingwce*)
    AC_CHECK_TOOL(OBJCOPY, objcopy, :)
    AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows XP SP2 APIs.])
    AC_DEFINE([_WIN32_IE], 0x0600, [Define to '0x0600' for IE 6.0 (and shell) APIs.])
gbazin's avatar
 
gbazin committed

    case "${host_os}" in
      *wince* | *mingwce* | *mingw32ce*)
        SYS=mingwce
        dnl Sadly CeGCC still needs non-wince macros
      *mingw32*)
gbazin's avatar
 
gbazin committed
        SYS=mingw32
        ;;
      *cygwin*)
gbazin's avatar
 
gbazin committed
        dnl Check if we are using the mno-cygwin mode in which case we are
        dnl actually dealing with a mingw32 compiler.
        AC_EGREP_CPP(yes,
            [#ifdef WIN32
             yes
             #endif],
            SYS=mingw32, AC_MSG_ERROR([VLC requires -mno-cygwin]))
gbazin's avatar
 
gbazin committed
        ;;
    esac

    if test "${SYS}" = "mingw32"; then
        VLC_ADD_LIBS([libvlccore],[-lnetapi32 -lwinmm])
damienf's avatar
damienf committed
        VLC_ADD_LDFLAGS([vlc],[-mwindows])
Rafaël Carré's avatar
Rafaël Carré committed
        VLC_ADD_LIBS([win32text],[-lgdi32])
        VLC_ADD_LIBS([cdda vcdx sdl_image vout_sdl],[-lwinmm])
        AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
        ac_default_prefix="`pwd`/_win32"
        DESTDIR="`pwd`/_win32/"
        dnl NSIS Installer prefix and WIN64
        dnl
        case "${host}" in
                PROGRAMFILES="PROGRAMFILES64"
            ;;
            *)
                PROGRAMFILES="PROGRAMFILES"
            ;;
        esac
        AC_SUBST(PROGRAMFILES)

gbazin's avatar
 
gbazin committed
    fi
        AC_CHECK_PROGS(U2D, [unix2dos todos], unix2dos)
        ac_default_prefix="`pwd`/_wince"
        DESTDIR="`pwd`/_wince/"
  *nto*)
  solaris*)
  hpux*)
  symbian*)
    SYS=symbian
    ;;
  *os2*)
    SYS=os2
    LDFLAGS_save="${LDFLAGS_save} -Zomf -Zbin-files -Zargs-wild"; LDFLAGS="${LDFLAGS_save}"
    ;;
    SYS="${host_os}"
gbazin's avatar
 
gbazin committed
esac
ivoire's avatar
ivoire committed
AM_CONDITIONAL(HAVE_DARWIN,  test "${SYS}" = "darwin")
AM_CONDITIONAL(HAVE_LINUX,   test "${SYS}" = "linux")
AM_CONDITIONAL(HAVE_OS2,     test "${SYS}" = "os2")
AM_CONDITIONAL(HAVE_WIN32,   test "${SYS}" = "mingw32")
AM_CONDITIONAL(HAVE_WIN64,   test "${HAVE_WIN64}" = "1")
AM_CONDITIONAL(HAVE_WINCE,   test "${SYS}" = "mingwce")
AM_CONDITIONAL(HAVE_SYMBIAN, test "${SYS}" = "symbian")
dnl
dnl  Check for the contrib directory
dnl
AC_ARG_WITH(contrib,
  [AS_HELP_STRING([--with-contrib[=DIR]],
    [search for 3rd party libraries in DIR/include and DIR/lib])
])
AC_MSG_CHECKING([for 3rd party libraries path])
AS_IF([test -z "${with_contrib}" || test "${with_contrib}" = "yes"], [
  CONTRIB_DIR="${srcdir}/contrib/${host}"
  AS_IF([test ! -d "${CONTRIB_DIR}"], [
    echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
    CONTRIB_DIR="${srcdir}/contrib/`$CC -dumpmachine`"
    AS_IF([test ! -d "${CONTRIB_DIR}"], [
      echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
      CONTRIB_DIR="${srcdir}/extras/contrib/hosts/${host}"
      AS_IF([test ! -d "${CONTRIB_DIR}"], [
        echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
        CONTRIB_DIR="${srcdir}/extras/contrib/hosts/`$CC -dumpmachine`"
        AS_IF([test ! -d "${CONTRIB_DIR}"], [
          echo "${CONTRIB_DIR} not found" >&AS_MESSAGE_LOG_FD
          CONTRIB_DIR=""
          AC_MSG_RESULT([not found])
        ])
      ])
    ])
  ])
], [
  AS_IF([test "${with_contrib}" != "no"], [
    CONTRIB_DIR="${with_contrib}"
  ], [
    CONTRIB_DIR=""
    AC_MSG_RESULT([disabled])
  ])
])
AS_IF([test -n "${CONTRIB_DIR}"], [
  AS_IF([test -d "${CONTRIB_DIR}/lib"],[
    CONTRIB_DIR=`cd "${CONTRIB_DIR}" && pwd`
  ], [
    echo "${CONTRIB_DIR}/lib not found" >&AS_MESSAGE_LOG_FD
    CONTRIB_DIR=""
    AC_MSG_RESULT([not usable])
  ])

])
AS_IF([test -n "${CONTRIB_DIR}"], [
  AC_MSG_RESULT([${CONTRIB_DIR}])
  export PATH=${CONTRIB_DIR}/bin:$PATH
  CPPFLAGS="${CPPFLAGS} -I${CONTRIB_DIR}/include"
  CPPFLAGS_save="${CPPFLAGS_save} -I${CONTRIB_DIR}/include"
  CFLAGS="${CFLAGS} -I${CONTRIB_DIR}/include"
  CFLAGS_save="${CFLAGS_save} -I${CONTRIB_DIR}/include"
  CXXFLAGS="${CXXFLAGS} -I${CONTRIB_DIR}/include"
  CXXFLAGS_save="${CXXFLAGS_save} -I${CONTRIB_DIR}/include"
  OBJCFLAGS="${OBJCFLAGS} -I${CONTRIB_DIR}/include"
  OBJCFLAGS_save="${OBJCFLAGS_save} -I${CONTRIB_DIR}/include"
  AS_IF([test "$build" = "$host" -o "$PKG_CONFIG_LIBDIR"], [
    export PKG_CONFIG_PATH="${CONTRIB_DIR}/lib/pkgconfig:$PKG_CONFIG_PATH"
  ], [
    export PKG_CONFIG_LIBDIR="${CONTRIB_DIR}/lib/pkgconfig"
  ])
  LDFLAGS="${LDFLAGS} -L${CONTRIB_DIR}/lib"
  LDFLAGS_save="${LDFLAGS_save} -L${CONTRIB_DIR}/lib"

  AS_IF([test "${SYS}" = "darwin"], [
    export LD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$LD_LIBRARY_PATH"
    export DYLD_LIBRARY_PATH="${CONTRIB_DIR}/lib:$DYLD_LIBRARY_PATH"
  ])
], [
  AS_IF([test -n "${with_contrib}" && test "${with_contrib}" != "no"], [
    AC_MSG_ERROR([Third party libraries not found!])
  ])
])
AC_SUBST(CONTRIB_DIR)

Rafaël Carré's avatar
Rafaël Carré committed
dnl Sadly autoconf does not think about testing foo.exe when ask to test
dnl for program foo on win32

case "${build_os}" in
    cygwin|msys)
        ac_executable_extensions=".exe"
dnl Android is linux, but a bit different
AS_IF([test "$SYS" = linux],[
    AC_MSG_CHECKING([for an Android system])
    AC_PREPROC_IFELSE([AC_LANG_PROGRAM(
        [[#ifndef __ANDROID__
         # error Not Android
         #endif
        ]],[[;]])
    ],[
      HAVE_ANDROID="1"
      AC_MSG_RESULT([yes])
    ],[
      AC_MSG_RESULT([no])
    ])
])
AM_CONDITIONAL(HAVE_ANDROID, test "${HAVE_ANDROID}" = "1")

dnl  Libtool
dnl  It's very bad, but our former custom system was worst
dnl  -- Courmisch
dnl
damienf's avatar
damienf committed

dnl override platform specific check for dependent libraries
dnl otherwise libtool linking of shared libraries will
dnl fail on anything other than pass_all.
damienf's avatar
damienf committed
AC_CACHE_VAL(lt_cv_deplibs_check_method,
    [lt_cv_deplibs_check_method=pass_all])
LT_INIT([dlopen win32-dll shared disable-static])
LT_LANG([C++])
LT_LANG([Windows Resource])
damienf's avatar
damienf committed
m4_undefine([AC_DEPLIBS_CHECK_METHOD])
m4_defun([AC_DEPLIBS_CHECK_METHOD],[])

lt_cv_deplibs_check_method=pass_all

AS_IF([test "${enable_shared}" = "no" -a "${enable_vlc}" != "no"], [
  AC_MSG_ERROR([VLC is based on plugins. Shared libraries cannot be disabled.])
])

AM_GNU_GETTEXT_VERSION([0.18.1])
AM_GNU_GETTEXT([external])
gbazin's avatar
gbazin committed
dnl
dnl Iconv stuff
dnl
dnl Check for broken versions of mingw-runtime compatability library
AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
    AC_MSG_CHECKING(for broken mingw-runtime)
    AC_PREPROC_IFELSE([AC_LANG_SOURCE([
#if (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 15)
#ifndef __MINGW64_VERSION_MAJOR
# error Attempting to use mingw-runtime with broken vsnprintf support
        AC_MSG_ERROR([LibVLC requires mingw-runtime version 3.15 or higher!])
    dnl force use of mingw provided c99 *printf over msvcrt
    CPPFLAGS="${CPPFLAGS} -D__USE_MINGW_ANSI_STDIO=1"
    CPPFLAGS_save="${CPPFLAGS_save} -D__USE_MINGW_ANSI_STDIO=1"
gbazin's avatar
 
gbazin committed
dnl Check for the need to include the mingwex lib for mingw32
if test "${SYS}" = "mingw32" ; then
gbazin's avatar
 
gbazin committed
    AC_CHECK_LIB(mingwex,opendir,
        AC_CHECK_LIB(mingw32,opendir,,
            [VLC_ADD_LIBS([libvlccore],[-lmingwex])])
gbazin's avatar
 
gbazin committed
    )
fi

gbazin's avatar
 
gbazin committed
dnl Check for fnative-struct or mms-bitfields support for mingw32
if test "${SYS}" = "mingw32" ; then
gbazin's avatar
 
gbazin committed
    AC_CACHE_CHECK([if \$CC accepts -mms-bitfields],
        [ac_cv_c_mms_bitfields],
        [CFLAGS="${CFLAGS_save} -mms-bitfields"
         AC_TRY_COMPILE([],,ac_cv_c_mms_bitfields=yes, ac_cv_c_mms_bitfields=no)])
    if test "${ac_cv_c_mms_bitfields}" != "no"; then
        CFLAGS_save="${CFLAGS_save} -mms-bitfields";
        CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
gbazin's avatar
 
gbazin committed
    else
        AC_CACHE_CHECK([if \$CC accepts -fnative-struct],
            [ac_cv_c_fnative_struct],
            [CFLAGS="${CFLAGS_save} -fnative-struct"
             AC_TRY_COMPILE([],,ac_cv_c_fnative_struct=yes, ac_cv_c_fnative_struct=no)])
        if test "${ac_cv_c_fnative_struct}" != "no"; then
            CFLAGS_save="${CFLAGS_save} -fnative-struct";
            CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
        fi
gbazin's avatar
 
gbazin committed
    fi

gbazin's avatar
 
gbazin committed
    CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
fi

dnl
dnl Buggy glibc prevention. Purposedly not cached.
dnl See sourceware.org bugs 5058 and 5443.
dnl Ubuntu alone has 20 bug numbers for this...
dnl
AC_MSG_CHECKING(for buggy GNU/libc versions)
AC_PREPROC_IFELSE([AC_LANG_SOURCE([
#include <limits.h>
#if defined (__GLIBC__) && (__GLIBC__ == 2) \
  && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
# error GNU/libc with dcgettext killer bug!
#endif
  AC_MSG_RESULT([not present])
], [
  AC_MSG_RESULT([found])
  AS_IF([test "x${enable_nls}" != "xno"], [
    AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable
work-around for this. Check with your distribution vendor on how to update the
glibc run-time. Alternatively, build with --disable-nls.])
  ], [
    AC_DEFINE(DISABLE_BUGGY_GLIBC_CHECK, 1, [Disables runtime check for buggy glibc.])
dnl Plugin compilation stuff

VLC_LIBRARY_SUFFIX

dnl Check for system libs needed
AC_CHECK_DECLS([nanosleep],,,[#include <time.h>])
AC_CHECK_FUNCS([daemon fcntl fstatvfs fork getenv getpwuid_r if_nameindex if_nametoindex isatty lstat memalign mmap openat pread posix_fadvise posix_madvise setlocale stricmp strnicmp uselocale])
AC_REPLACE_FUNCS([asprintf atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r inet_pton lldiv localtime_r nrand48 rewind setenv strcasecmp strcasestr strdup strlcpy strncasecmp strndup strnlen strsep strtof strtok_r strtoll swab tdestroy vasprintf])
AC_CHECK_FUNCS(fdatasync,,
  [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.])
])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Rafaël Carré's avatar
Rafaël Carré committed
# Windows CE does not have strcoll()
AC_FUNC_STRCOLL

dnl Check for non-standard system calls
AC_CHECK_FUNCS([accept4 pipe2 eventfd vmsplice sched_getaffinity])
dnl Check for poll
AC_SEARCH_LIBS(poll, [poll], [
  AC_DEFINE(HAVE_POLL, 1, [Define to 1 if the OS has poll().])
], [
  AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce" -a "${SYS}" != "os2"], [
    AC_MSG_ERROR([poll() is required.])
Samuel Hocevar's avatar
Samuel Hocevar committed
  ])
])
dnl Check for struct pollfd
AC_CHECK_TYPES([struct pollfd],,,
[#include <sys/types.h>
#if HAVE_POLL
# include <poll.h>
#elif defined (WIN32)
# include <winsock2.h>
#endif
])

dnl Check for connect
LIBS_save="$LIBS"
SOCKET_LIBS=""
AC_SEARCH_LIBS(connect, [socket], [
  AS_IF([test "$ac_cv_search_connect" != "none required"], [
    SOCKET_LIBS="$ac_cv_search_connect"
  ])
], [
  AS_IF([test "${SYS}" = "mingw32"], [
    SOCKET_LIBS="-lws2_32"
  ])
  AS_IF([test "${SYS}" = "mingwce"], [
    SOCKET_LIBS="-lws2"
  ])
])
LIBS="$LIBS_save"
AS_IF([test -n "$SOCKET_LIBS"], [
  VLC_ADD_LIBS([access_http access_mms access_udp access_tcp access_ftp access_rtmp access_output_udp access_output_shout sap stream_out_select stream_out_standard stream_out_rtp stream_out_raop vod_rtsp access_realrtsp rtp oldrc netsync gnutls flac ts audioscrobbler lua remoteosd zvbi audiobargraph_a netsync],[${SOCKET_LIBS}])
])
AC_SUBST(SOCKET_LIBS)
dnl Check for socklen_t
AH_TEMPLATE(socklen_t, [Define to `int' if <sys/socket.h> does not define.])
AC_CACHE_CHECK([for socklen_t in sys/socket.h],
ac_cv_type_socklen_t,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
[#include <sys/types.h>
#ifdef WIN32
# include <winsock2.h>
# include <ws2tcpip.h>
#endif]], [[socklen_t len; len = 0;]])],
ac_cv_type_socklen_t=yes,
ac_cv_type_socklen_t=no)])
AS_IF([test "$ac_cv_type_socklen_t" = no],
 [AC_DEFINE(socklen_t, int)])
dnl Check for struct sockaddr_storage
AH_TEMPLATE(sockaddr_storage, [Define to `sockaddr' if <sys/socket.h> does not define.])
AH_TEMPLATE(ss_family, [Define to `sa_family' if <sys/socket.h> does not define.])
AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_struct_sockaddr_storage,
  [AC_TRY_COMPILE(
    [#include <sys/types.h>
     #if defined( UNDER_CE )
     # include <winsock2.h>
     #elif defined( WIN32 )
     # include <winsock2.h>
     #else
     # include <sys/socket.h>
     #endif], [struct sockaddr_storage addr;],
     ac_cv_struct_sockaddr_storage=yes,
     ac_cv_struct_sockaddr_storage=no)])
AS_IF([test "${ac_cv_struct_sockaddr_storage}" = no], [
  AC_DEFINE(sockaddr_storage, sockaddr)
  AC_DEFINE(ss_family, sa_family)
dnl getaddrinfo, getnameinfo and gai_strerror check
dnl  -lnsl and -lsocket are needed on Solaris;
dnl  we purposedly make the test fail on Windows
AC_SEARCH_LIBS([getaddrinfo], [nsl],,, [${SOCKET_LIBS}])
dnl FreeBSD has a gnugetopt library for this:
GNUGETOPT_LIBS=""
AC_CHECK_FUNC(getopt_long,, [
  AC_CHECK_LIB([gnugetopt],[getopt_long], [
    GNUGETOPT_LIBS="-lgnugetopt"
  ])
])
AC_SUBST(GNUGETOPT_LIBS)
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Samuel Hocevar's avatar
Samuel Hocevar committed
AC_CHECK_LIB(m,cos,[
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
  VLC_ADD_LIBS([adjust wave ripple psychedelic gradient a52tofloat32 dtstofloat32 x264 goom visual panoramix rotate noise grain scene kate flac lua chorus_flanger freetype avcodec avformat access_avio swscale postproc i420_rgb faad twolame equalizer spatializer param_eq samplerate freetype mod mpc dmo quicktime realvideo qt4 compressor headphone_channel_mixer normvol audiobargraph_a speex mono colorthres extract ball access_imem hotkeys mosaic gaussianblur dbus x264 hqdn3d],[-lm])
  LIBM="-lm"
], [
  LIBM=""
Samuel Hocevar's avatar
 
Samuel Hocevar committed

AC_CHECK_LIB(m,lrintf, [
  AC_DEFINE(HAVE_LRINTF, 1, [Define to 1 if you have the lrintf function])
  VLC_ADD_LIBS([skins2],[-lm])
])

Samuel Hocevar's avatar
Samuel Hocevar committed
dnl Check for dynamic plugins
LIBDL=""
have_dynamic_objects="no"
LIBS_save="$LIBS"
AC_SEARCH_LIBS(dlopen, [dl svld], [
  AS_IF([test "$ac_cv_search_dlopen" != "none required"], [
    LIBDL="$ac_cv_search_dlopen"
  ])
  have_dynamic_objects="yes"
])
LIBS="$LIBS_save"
Samuel Hocevar's avatar
Samuel Hocevar committed

# Windows
AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"], [
  LIBDL=""
  have_dynamic_objects="yes" #assume we can use shared objects
Rafaël Carré's avatar
Rafaël Carré committed
test "${enable_shared}" = "no" && have_dynamic_objects=no

AS_IF([test "${have_dynamic_objects}" != "no"], [
  AC_DEFINE(HAVE_DYNAMIC_PLUGINS, 1,
            [Define to 1 if dynamic plugins are supported.])
], [
  dnl Clear $LIBDL so as not to break linking
  LIBDL=""
])
Rafaël Carré's avatar
Rafaël Carré committed
AM_CONDITIONAL(HAVE_DYNAMIC_PLUGINS, [test "${have_dynamic_objects}" != "no"])

AC_SUBST(LIBDL)
VLC_ADD_LIBS([realvideo lua],[$LIBDL])
Samuel Hocevar's avatar
Samuel Hocevar committed

dnl Check for thread library
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
  dnl Check for pthreads - borrowed from XMMS
  THREAD_LIB=error
  if test "${THREAD_LIB}" = "error"; then
    AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
  fi
  if test "${THREAD_LIB}" = "error"; then
    AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
  fi
  if test "${THREAD_LIB}" = "error"; then
    AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
  fi
  if test "${THREAD_LIB}" = "error"; then
    AC_CHECK_FUNCS(pthread_mutex_lock)
    THREAD_LIB=""
  fi
Samuel Hocevar's avatar
 
Samuel Hocevar committed

  VLC_ADD_LIBS([libvlccore libvlc vlc plugin],[${THREAD_LIB}])
gbazin's avatar
 
gbazin committed

  AC_CHECK_LIB(rt, clock_nanosleep, [
    VLC_ADD_LIBS([libvlccore],[-lrt])
  ], [
    AC_CHECK_FUNC(nanosleep,,[
      AC_CHECK_LIB(rt,nanosleep, [
        VLC_ADD_LIBS([libvlccore],[-lrt])
      ], [
        AC_CHECK_LIB(posix4,nanosleep, [
          VLC_ADD_LIBS([libvlccore],[-lposix4])
        ])
      ])
    ])
    dnl HP/UX port
    AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LIBS([libvlccore],[-lrt])])
  ])
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
gbazin's avatar
 
gbazin committed

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for misc headers
AC_MSG_CHECKING(for strncasecmp in strings.h)
Samuel Hocevar's avatar
 
Samuel Hocevar committed
AC_EGREP_HEADER(strncasecmp,strings.h,[
            Define if <strings.h> defines strncasecmp.)],[
  AC_MSG_RESULT(no)])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for headers
AC_CHECK_HEADERS([search.h])
AC_CHECK_HEADERS(getopt.h strings.h locale.h xlocale.h)
AC_CHECK_HEADERS(fcntl.h sys/time.h sys/ioctl.h sys/stat.h)
AC_CHECK_HEADERS([arpa/inet.h netinet/udplite.h sys/eventfd.h])
AC_CHECK_HEADERS([net/if.h], [], [],
  [
    #include <sys/types.h>
AC_CHECK_HEADERS([sys/mount.h], [], [],
  [
    #include <sys/param.h>
  ])
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
  AC_CHECK_HEADERS(machine/param.h sys/shm.h)
  AC_CHECK_HEADERS([linux/version.h linux/dccp.h scsi/scsi.h linux/magic.h])
  AC_CHECK_HEADERS(syslog.h)
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl LP64 and LLP64 architectures had better define ssize_t by themselves...
AH_TEMPLATE(ssize_t, [Define to `int' if <stddef.h> does not define.])
AC_CHECK_TYPE(ssize_t,, [
  AC_DEFINE(ssize_t, int)
])

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for threads library
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
  AC_CHECK_HEADERS(pthread.h)
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
dnl It seems that autoconf detects pkg-config only during the first
dnl PKG_CHECK_MODULES from configure.ac - which makes sense. But in our case,
dnl it is nested within a conditional block, so it was not working right.
dnl Make PKG_CONFIG_PATH precious so that it appears in the help and get saved
AC_ARG_VAR(PKG_CONFIG_PATH,
       [Paths where to find .pc not at the default location])
PKG_PROG_PKG_CONFIG()

dnl On some OS we need static linking
AS_IF([test -n "${PKG_CONFIG}" ],[
KO Myung-Hun's avatar
KO Myung-Hun committed
    AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "darwin" -o "${SYS}" = "os2" ],[
        PKG_CONFIG="${PKG_CONFIG} --static"
    ])
])
dnl
dnl Check for zlib.h and -lz along with system -lminizip if available
AC_CHECK_HEADERS(zlib.h, [ have_zlib=yes ], [ have_zlib=no ])
AM_CONDITIONAL(HAVE_ZLIB, [ test "${have_zlib}" = "yes" ])
if test "${have_zlib}" = "yes"
then
  VLC_ADD_LIBS([access_http mp4 skins2 sap mkv unzip zip],[-lz])
  PKG_CHECK_MODULES([MINIZIP], [minizip] , [ have_minizip=yes ], [
    AC_CHECK_HEADERS([unzip.h], [
      have_minizip=yes
      MINIZIP_LIBS="-lminizip -lz"
    ], [
      have_minizip=no
      MINIZIP_CFLAGS="-I\\\${top_srcdir}/modules/access/zip/unzip"
      MINIZIP_LIBS="\\\${top_builddir}/modules/access/zip/unzip/libunzip.la"
    ])
  ])
  VLC_ADD_CPPFLAGS([skins2],[$MINIZIP_CFLAGS])
  VLC_ADD_LIBS([skins2],[$MINIZIP_LIBS])
AM_CONDITIONAL(HAVE_MINIZIP, [ test "${have_minizip}" = "yes" ])
dnl Manual switch for UTF-8
AC_ARG_ENABLE(non-utf8,
  [AS_HELP_STRING([--enable-non-utf8],
    [support legacy non-UTF-8 systems (default disabled)])],, [
  AS_IF([test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce" -o "${SYS}" = "os2"], [
    enable_non_utf8="no"
  ])
])
AS_IF([test "${enable_non_utf8}" != "no"], [
  AC_DEFINE([ASSUME_UTF8], [1],
            [Define to 1 if the operating system uses UTF-8 internally])
])


  [AS_HELP_STRING([--enable-dbus],
    [compile D-Bus message bus support (default enabled)])])
case "${SYS}" in
    linux*|*bsd*)
if test "${enable_dbus}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
  dnl api stable dbus
  PKG_CHECK_MODULES(DBUS, [dbus-1 >= 1.0.0],
    [ AC_DEFINE( HAVE_DBUS, 1, [Define if you have the D-BUS library] )
      VLC_ADD_LIBS([libvlccore],[$DBUS_LIBS])
      VLC_ADD_CFLAGS([libvlccore],[$DBUS_CFLAGS])
      dnl Check for dbus control interface
        AC_ARG_ENABLE(dbus-control,
          [AS_HELP_STRING([--disable-dbus-control],
            [D-Bus control interface (default enabled)])])
        if test "${enable_dbus_control}" != "no"
          VLC_ADD_PLUGIN([dbus])
          VLC_ADD_LIBS([dbus],[$DBUS_LIBS])
          VLC_ADD_CFLAGS([dbus],[$DBUS_CFLAGS])
Christophe Mutricy's avatar
Christophe Mutricy committed
        AC_ARG_ENABLE(telepathy,
          AS_HELP_STRING([--enable-telepathy],[Telepathy Presence plugin through DBus(default enabled)]))
        if test "${enable_telepathy}" != "no"; then
          VLC_ADD_PLUGIN([telepathy])
          VLC_ADD_LIBS([telepathy],[$DBUS_LIBS])
          VLC_ADD_CFLAGS([telepathy],[$DBUS_CFLAGS])
        VLC_ADD_PLUGIN([inhibit])
        VLC_ADD_LIBS([inhibit],[$DBUS_LIBS])
        VLC_ADD_CFLAGS([inhibit],[$DBUS_CFLAGS])
    [AC_MSG_ERROR([${DBUS_PKG_ERRORS}.])]
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for ntohl, etc.
AC_CACHE_CHECK([for ntohl in sys/param.h],
    [ac_cv_c_ntohl_sys_param_h],
    [CFLAGS="${CFLAGS_save} -Wall -Werror"
     AC_TRY_COMPILE([#include <sys/param.h>],
        ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
    AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)

EXTEND_HELP_STRING([Optimization options:])
VLC_RESTORE_FLAGS
dnl
dnl  Compiler warnings
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed

RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
RDC_PROG_CC_FLAGS([-pipe])
AC_LANG_PUSH([C++])
RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var])
AC_LANG_POP([C++])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl
dnl  Debugging mode
dnl
AC_ARG_ENABLE(debug,
  [AS_HELP_STRING([--enable-debug],
    [build with run-time assertions (default disabled)])],,
  [enable_debug="no"])
AH_TEMPLATE(NDEBUG,
            [Define to 1 if debug code should NOT be compiled])
AS_IF([test "${enable_debug}" != "no"], [
  AC_CHECK_HEADERS([valgrind/valgrind.h])
], [
  AC_DEFINE(NDEBUG)
])

dnl
dnl  Profiling
dnl
AC_ARG_ENABLE(gprof,
  [AS_HELP_STRING([--enable-gprof],[profile with gprof (default disabled)])],,
  [enable_gprof="no"])
AS_IF([test "${enable_gprof}" != "no"], [
  CFLAGS="${CFLAGS} -pg"
  CXXFLAGS="${CXXFLAGS} -pg"
  OBJCFLAGS="${OBJCFLAGS} -pg"
  LDFLAGS="${LDFLAGS} -pg"
])

AC_ARG_ENABLE(cprof,
  [AS_HELP_STRING([--enable-cprof],[profile with cprof (default disabled)])],,
  [enable_cprof="no"])
AS_IF([test "${enable_gprof}" != "no"], [
  CFLAGS="${CFLAGS} -finstrument-functions"
  CXXFLAGS="${CXXFLAGS} -finstrument-functions"
  OBJCFLAGS="${OBJCFLAGS} -finstrument-functions"
  LDFLAGS="${LDFLAGS} -finstrument-functions"
])

dnl
dnl  Test coverage
dnl
AC_ARG_ENABLE(coverage,
  [AS_HELP_STRING([--enable-coverage],
    [build for test coverage (default disabled)])],,
  [enable_coverage="no"])
AS_IF([test "${enable_coverage}" != "no"], [
  CFLAGS="-fprofile-arcs -ftest-coverage ${CFLAGS}"
  CXXFLAGS="-fprofile-arcs -ftest-coverage ${CXXFLAGS}"
  LDFLAGS="-lgcov ${LDFLAGS}"
])

VLC_SAVE_FLAGS

AS_IF([test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"], [
  AC_CACHE_CHECK([if $CC accepts -fvisibility=hidden],
                 [ac_cv_c_visibility_hidden], [
    CFLAGS="${CFLAGS_save} -fvisibility=hidden"
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
      ac_cv_c_visibility_hidden=yes
    ], [
      ac_cv_c_visibility_hidden=no
    ])
  ])
  AS_IF([test "${ac_cv_c_visibility_hidden}" != "no"], [
    VLC_RESTORE_FLAGS
    CFLAGS="${CFLAGS} -fvisibility=hidden"
    CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
    OBJCFLAGS="${OBJCFLAGS} -fvisibility=hidden"
    VLC_SAVE_FLAGS
dnl
dnl  Enable/disable optimizations
dnl
AC_ARG_ENABLE(optimizations,
  [AS_HELP_STRING([--disable-optimizations],
    [disable compiler optimizations (default enabled)])],,
  [enable_optimizations="yes"])

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for various optimization flags
AS_IF([test "${enable_optimizations}" != "no"], [

  C_O=""
  dnl -O4 and -O3 only in production builds
  AS_IF([test "{enable_debug}" = "no"], [
    AC_CACHE_CHECK([if $CC accepts -O4], [ac_cv_c_o4], [
      CFLAGS="${CFLAGS_save} -O4"
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
        ac_cv_c_o4=yes
      ], [
        ac_cv_c_o4=no
      ])
    ])
    AS_IF([test "${ac_cv_c_o4}" != "no"], [
      C_O="-O4"
    ], [
      AC_CACHE_CHECK([if $CC accepts -O3],  [ac_cv_c_o3], [
        CFLAGS="${CFLAGS_save} -O3"
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [
          ac_cv_c_o3=yes
        ], [
          ac_cv_c_o3=no
        ])
      ])
      AS_IF([test "${ac_cv_c_o3}" != "no"], [
        C_O="-O3"
      ])
    ])
  ])
  VLC_RESTORE_FLAGS
  CFLAGS="${CFLAGS} ${C_O}"
  CXXFLAGS="${CXXFLAGS} ${C_O}"
  OBJCFLAGS="${OBJCFLAGS} ${C_O}"