Skip to content
Snippets Groups Projects
configure.ac 168 KiB
Newer Older
        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.)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
CFLAGS="${CFLAGS_save}"
Samuel Hocevar's avatar
 
Samuel Hocevar committed

RDC_PROG_CC_WFLAGS([all extra sign-compare undef pointer-arith bad-function-cast cast-align write-strings missing-prototypes volatile-register-var error-implicit-function-declaration])
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
RDC_PROG_CC_FLAGS_IFELSE([-pipe])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl Check for various optimization flags
AC_CACHE_CHECK([if \$CC accepts -Os],
    [ac_cv_c_os],
    [CFLAGS="${CFLAGS_save} -Os"
     AC_TRY_COMPILE([],,ac_cv_c_os=yes, ac_cv_c_os=no)])
if test "${ac_cv_c_os}" != "no"; then
    CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -Os"
    AC_CACHE_CHECK([if \$CC accepts -O],
        [ac_cv_c_o],
        [CFLAGS="${CFLAGS_save} -O"
         AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
    if test "${ac_cv_c_o}" != "no"; then
        if test "${ac_cv_c_o3}" = "no"; then
            CFLAGS_OPTIM_SIZE="${CFLAGS_OPTIM_SIZE} -O"
        fi
    fi
AC_CACHE_CHECK([if \$CC accepts -O4],
    [ac_cv_c_o4],
    [CFLAGS="${CFLAGS_save} -O4"
     AC_TRY_COMPILE([],,ac_cv_c_o4=yes, ac_cv_c_o4=no)])
if test "${ac_cv_c_o4}" != "no" -a "x${enable_debug}" = "xno"; then
    CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O4"
    AC_CACHE_CHECK([if \$CC accepts -O3],
        [ac_cv_c_o3],
        [CFLAGS="${CFLAGS_save} -O3"
         AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
    if test "${ac_cv_c_o3}" != "no" -a "x${enable_debug}" = "xno"; then
        CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O3"
        AC_CACHE_CHECK([if \$CC accepts -O2],
            [ac_cv_c_o2],
            [CFLAGS="${CFLAGS_save} -O2"
             AC_TRY_COMPILE([],,ac_cv_c_o2=yes, ac_cv_c_o2=no)])
        if test "${ac_cv_c_o2}" != "no"; then
            CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O2"
        else
            AC_CACHE_CHECK([if \$CC accepts -O],
                [ac_cv_c_o],
                [CFLAGS="${CFLAGS_save} -O"
                 AC_TRY_COMPILE([],,ac_cv_c_o=yes, ac_cv_c_o=no)])
            if test "${ac_cv_c_o}" != "no"; then
                CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -O"
            fi
AC_CACHE_CHECK([if \$CC accepts -O0],
    [ac_cv_c_o0],
    [CFLAGS="${CFLAGS_save} -O0"
     AC_TRY_COMPILE([],,ac_cv_c_o0=yes, ac_cv_c_o0=no)])
if test "${ac_cv_c_o0}" != "no"; then
    CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O0"
Samuel Hocevar's avatar
 
Samuel Hocevar committed
fi

dnl Check for -ffast-math
AC_CACHE_CHECK([if \$CC accepts -ffast-math],
    [ac_cv_c_fast_math],
    [CFLAGS="${CFLAGS_save} -ffast-math"
     AC_TRY_COMPILE([],,ac_cv_c_fast_math=yes, ac_cv_c_fast_math=no)])
if test "${ac_cv_c_fast_math}" != "no"; then
    CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -ffast-math"
Samuel Hocevar's avatar
 
Samuel Hocevar committed
fi

dnl Check for -funroll-loops
dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
if test "${SYS}" != "beos"
then
  AC_CACHE_CHECK([if \$CC accepts -funroll-loops],
      [ac_cv_c_unroll_loops],
      [CFLAGS="${CFLAGS_save} -funroll-loops"
       AC_TRY_COMPILE([],,ac_cv_c_unroll_loops=yes, ac_cv_c_unroll_loops=no)])
  if test "${ac_cv_c_unroll_loops}" != "no"; then
      CFLAGS_OPTIM_SPEED="${CFLAGS_OPTIM_SPEED} -funroll-loops"
Samuel Hocevar's avatar
 
Samuel Hocevar committed
fi

dnl Check for -fomit-frame-pointer
AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
    [ac_cv_c_omit_frame_pointer],
    [CFLAGS="${CFLAGS_save} -fomit-frame-pointer"
     AC_TRY_COMPILE([],,ac_cv_c_omit_frame_pointer=yes, ac_cv_c_omit_frame_pointer=no)])
if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
    CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
 else
    dnl On darwin we explicitely disable it.
    CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fno-omit-frame-pointer"
 fi
Samuel Hocevar's avatar
 
Samuel Hocevar committed
fi

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl Check for Darwin plugin linking flags
AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error],
    [CFLAGS="${CFLAGS_save} -bundle -undefined error"
     AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
if test "${ac_cv_ld_darwin}" != "no"; then
    VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl Checks for __attribute__(aligned()) directive
AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
    [ac_cv_c_attribute_aligned],
    [ac_cv_c_attribute_aligned=0
        CFLAGS="${CFLAGS_save} -Werror"
    for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
        AC_TRY_COMPILE([],
        [static char c __attribute__ ((aligned(${ac_cv_c_attr_align_try}))) = 0; return c;],
        [ac_cv_c_attribute_aligned="${ac_cv_c_attr_align_try}"])
    done
        CFLAGS="${CFLAGS_save}"])
if test "${ac_cv_c_attribute_aligned}" != "0"; then
    AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
        [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
AC_CACHE_CHECK([for __attribute__((packed))],
  [ac_cv_c_attribute_packed],
  [ac_cv_c_attribute_packed=no
   AC_TRY_COMPILE(, [struct __attribute__((__packed__)) foo { int a; } b;],
                    [ac_cv_c_attribute_packed=yes])])
if test "${ac_cv_c_attribute_packed}" != "no"; then
  AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
fi

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Check the CPU
dnl
case "${host_cpu}" in
    ARCH="${host_cpu}"
dnl Check for backtrace() support
AC_CHECK_HEADERS(execinfo.h)
AC_CHECK_FUNCS(backtrace)

dnl
dnl  Enable profiling
dnl
AC_ARG_ENABLE(gprof,
[  --enable-gprof          gprof profiling (default disabled)])
AC_ARG_ENABLE(cprof,
[  --enable-cprof          cprof profiling (default disabled)])
Samuel Hocevar's avatar
Samuel Hocevar committed
test "${enable_gprof}" != "yes" && enable_gprof="no"
test "${enable_cprof}" != "yes" && enable_cprof="no"
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  default modules
dnl
VLC_ADD_PLUGIN([deinterlace])
VLC_ADD_PLUGIN([yuvp])
VLC_ADD_PLUGIN([invert])
VLC_ADD_PLUGIN([mirror])
VLC_ADD_PLUGIN([adjust])
VLC_ADD_PLUGIN([transform])
VLC_ADD_PLUGIN([wave])
VLC_ADD_PLUGIN([ripple])
VLC_ADD_PLUGIN([psychedelic])
VLC_ADD_PLUGIN([gradient])
VLC_ADD_PLUGIN([motionblur])
VLC_ADD_PLUGIN([rv32])
VLC_ADD_PLUGIN([rotate])
VLC_ADD_PLUGIN([noise])
VLC_ADD_PLUGIN([grain])
VLC_ADD_PLUGIN([extract])
VLC_ADD_PLUGIN([sharpen])
VLC_ADD_PLUGIN([croppadd])
dionoea's avatar
dionoea committed
VLC_ADD_PLUGIN([canvas])
VLC_ADD_PLUGIN([blendbench])
VLC_ADD_PLUGIN([blend])
VLC_ADD_PLUGIN([scale])
VLC_ADD_PLUGIN([vmem])
VLC_ADD_PLUGIN([logo])
VLC_ADD_PLUGIN([magnify])
VLC_ADD_PLUGIN([puzzle])
VLC_ADD_PLUGIN([colorthres])
dnl
dnl default modules that need g++
dnl
AC_LANG_PUSH(C++)
VLC_ADD_PLUGIN([spatializer])
  VLC_ADD_PLUGIN([gestures])
  VLC_ADD_PLUGIN([rc])
  VLC_ADD_PLUGIN([hotkeys])
  VLC_ADD_PLUGIN([showintf])
  VLC_ADD_PLUGIN([marq])
  VLC_ADD_PLUGIN([podcast])
  VLC_ADD_PLUGIN([shout])
  VLC_ADD_PLUGIN([sap])
  VLC_ADD_PLUGIN([fake])
  VLC_ADD_PLUGIN([folder])
  VLC_ADD_PLUGIN([rss])
  VLC_ADD_PLUGIN([mosaic])
  VLC_ADD_PLUGIN([wall])
  VLC_ADD_PLUGIN([motiondetect])
  VLC_ADD_PLUGIN([clone])
  VLC_ADD_PLUGIN([crop])
  VLC_ADD_PLUGIN([erase])
  VLC_ADD_PLUGIN([bluescreen])
  VLC_ADD_PLUGIN([alphamask])
  VLC_ADD_PLUGIN([gaussianblur])
  VLC_ADD_PLUGIN([i420_yuy2])
  VLC_ADD_PLUGIN([i422_yuy2])
  VLC_ADD_PLUGIN([i420_ymga])
  VLC_ADD_PLUGIN([i422_i420])
  VLC_ADD_PLUGIN([yuy2_i422])
  VLC_ADD_PLUGIN([yuy2_i420])
  VLC_ADD_PLUGIN([chain])
  VLC_ADD_PLUGIN([aout_file])
  VLC_ADD_PLUGIN([linear_resampler])
  VLC_ADD_PLUGIN([bandlimited_resampler])
  VLC_ADD_PLUGIN([float32_mixer])
  VLC_ADD_PLUGIN([spdif_mixer])
  VLC_ADD_PLUGIN([simple_channel_mixer])
  VLC_ADD_PLUGIN([dolby_surround_decoder])
  VLC_ADD_PLUGIN([headphone_channel_mixer])
  VLC_ADD_PLUGIN([normvol])
  VLC_ADD_PLUGIN([equalizer])
  VLC_ADD_PLUGIN([param_eq])
Rov Juvano's avatar
Rov Juvano committed
  VLC_ADD_PLUGIN([scaletempo])
  VLC_ADD_PLUGIN([converter_float])
  VLC_ADD_PLUGIN([a52tospdif])
  VLC_ADD_PLUGIN([dtstospdif])
  VLC_ADD_PLUGIN([audio_format])
gbazin's avatar
 
gbazin committed

geal's avatar
geal committed
if test "${SYS}" = "mingwce"; then
  VLC_ADD_PLUGIN([chain])
  VLC_ADD_PLUGIN([aout_file])
  VLC_ADD_PLUGIN([linear_resampler])
  VLC_ADD_PLUGIN([bandlimited_resampler])
  VLC_ADD_PLUGIN([float32_mixer])
  VLC_ADD_PLUGIN([spdif_mixer])
  VLC_ADD_PLUGIN([simple_channel_mixer])
  VLC_ADD_PLUGIN([headphone_channel_mixer])
  VLC_ADD_PLUGIN([normvol])
  VLC_ADD_PLUGIN([converter_float])
  VLC_ADD_PLUGIN([a52tospdif])
  VLC_ADD_PLUGIN([dtstospdif])
  VLC_ADD_PLUGIN([audio_format])
  VLC_ADD_PLUGIN([i420_yuy2])
  VLC_ADD_PLUGIN([i422_yuy2])
  VLC_ADD_PLUGIN([i420_ymga])
  VLC_ADD_PLUGIN([i422_i420])
  VLC_ADD_PLUGIN([yuy2_i422])
  VLC_ADD_PLUGIN([yuy2_i420])
fi

gbazin's avatar
 
gbazin committed
dnl
dnl Some plugins aren't useful on some platforms
dnl
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
    VLC_ADD_PLUGIN([screensaver])
    VLC_ADD_PLUGIN([motion])
    VLC_ADD_PLUGIN([dynamicoverlay])
    VLC_ADD_PLUGIN([signals])
elif test "${SYS}" != "mingwce"; then
    VLC_ADD_PLUGIN([ntservice])
    VLC_ADD_PLUGIN([access_smb])
    VLC_ADD_PLUGIN([dmo])
    VLC_ADD_PLUGIN([msn])
    VLC_ADD_LIBS([dmo],[-lole32 -luuid])
ssbssa's avatar
ssbssa committed
    VLC_ADD_PLUGIN([globalhotkeys])
    VLC_ADD_PLUGIN([win32text])
gbazin's avatar
 
gbazin committed
fi
if test "${SYS}" = "darwin"; then
    VLC_ADD_PLUGIN([quartztext])
    VLC_ADD_LDFLAGS([quartztext],[-Wl,-framework,Carbon,-framework,ApplicationServices])
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Accelerated modules
dnl
AC_ARG_WITH(,[])
AC_ARG_WITH(,[Optimization options:])

dnl  Check for fully working MMX intrinsics
dnl  We need support for -mmmx, we need <mmintrin.h>, and we also need a
dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
Christophe Mutricy's avatar
Christophe Mutricy committed
[  --disable-mmx           disable MMX optimizations (default auto)],,[
  case "${host_cpu}" in
    i?86|x86_64)
      enable_mmx="yes"
      ;;
    *)
      enable_mmx="no"
      ;;
  esac
])
AS_IF([test "${enable_mmx}" != "no"], [
  ARCH="${ARCH} mmx"

  AC_CACHE_CHECK([if $CC groks MMX intrinsics],
    [ac_cv_c_mmx_intrinsics],
    [CFLAGS="${CFLAGS_save} -O -mmmx"
     AC_TRY_COMPILE([#include <mmintrin.h>
                     #include <stdint.h>
                     uint64_t frobzor;],
                    [__m64 a, b, c;
                     a = b = c = (__m64)frobzor;
                     a = _mm_slli_pi16(a, 3);
                     a = _mm_adds_pi16(a, b);
                     c = _mm_srli_pi16(c, 8);
                     c = _mm_slli_pi16(c, 3);
                     b = _mm_adds_pi16(b, c);
                     a = _mm_unpacklo_pi8(a, b);
                     frobzor = (uint64_t)a;],
                    [ac_cv_c_mmx_intrinsics=yes],
                    [ac_cv_c_mmx_intrinsics=no])])
  AS_IF([test "${ac_cv_c_mmx_intrinsics}" != "no"], [
    AC_DEFINE(HAVE_MMX_INTRINSICS, 1,
              [Define to 1 if MMX intrinsics are available.])
    VLC_ADD_CFLAGS([memcpymmx i420_rgb_mmx i420_yuy2_mmx i422_yuy2_mmx i420_ymga_mmx],[-mmmx])
  ])

  AC_CACHE_CHECK([if $CC groks MMX inline assembly],
    [ac_cv_mmx_inline],
    [CFLAGS="${CFLAGS_save}"
     AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
                    ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
  AS_IF([test "${ac_cv_mmx_inline}" != "no"], [
    AC_DEFINE(CAN_COMPILE_MMX, 1,
              [Define to 1 inline MMX assembly is available.])
    VLC_ADD_PLUGIN([memcpymmx])
    VLC_ADD_PLUGIN([i420_rgb_mmx])
    VLC_ADD_PLUGIN([i420_yuy2_mmx])
    VLC_ADD_PLUGIN([i422_yuy2_mmx])
    VLC_ADD_PLUGIN([i420_ymga_mmx])
  ])

  AC_CACHE_CHECK([if $CC groks MMX EXT inline assembly],
    [ac_cv_mmxext_inline],
    [CFLAGS="${CFLAGS_save}"
     AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
                    ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
  AS_IF([test "${ac_cv_mmxext_inline}" != "no"], [
    AC_DEFINE(CAN_COMPILE_MMXEXT, 1,
              [Define to 1 if MMX EXT inline assembly is available.])
    VLC_ADD_PLUGIN([memcpymmxext])
dnl  Check for fully workin SSE2 intrinsics
dnl  We need support for -mmmx, we need <emmintrin.h>, and we also need a
dnl  working compiler (http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23963)
Christophe Mutricy's avatar
Christophe Mutricy committed
[  --disable-sse           disable SSE (1 and 2) optimizations (default auto)]
,, [
  case "${host_cpu}" in
    i686|x86_64)
      enable_sse=yes
      ;;
    *)
      enable_sse=no
      ;;
  esac
])
AS_IF([test "${enable_sse}" != "no"], [
  ARCH="${ARCH} sse sse2"

  AC_CACHE_CHECK([if $CC groks SSE2 intrinsics],
    [ac_cv_c_sse2_intrinsics],
    [CFLAGS="${CFLAGS_save} -O -msse2"
     AC_TRY_COMPILE([#include <emmintrin.h>
                     #include <stdint.h>
                     uint64_t frobzor;],
                    [__m128i a, b, c;
                     a = b = c = _mm_set1_epi64((__m64)frobzor);
                     a = _mm_slli_epi16(a, 3);
                     a = _mm_adds_epi16(a, b);
                     c = _mm_srli_epi16(c, 8);
                     c = _mm_slli_epi16(c, 3);
                     b = _mm_adds_epi16(b, c);
                     a = _mm_unpacklo_epi8(a, b);
                     frobzor = (uint64_t)_mm_movepi64_pi64(a);],
                    [ac_cv_c_sse2_intrinsics=yes],
                    [ac_cv_c_sse2_intrinsics=no])])
  AS_IF([test "${ac_cv_c_sse2_intrinsics}" != "no"], [
    AC_DEFINE(HAVE_SSE2_INTRINSICS, 1,
              [Define to 1 if SSE2 intrinsics are available.])
    VLC_ADD_CFLAGS([i420_rgb_sse2 i420_yuy2_sse2 i422_yuy2_sse2],[-msse2])
  ])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

  AC_CACHE_CHECK([if $CC groks SSE inline assembly],
Samuel Hocevar's avatar
Samuel Hocevar committed
     AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
                    ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
  AS_IF([test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "solaris"], [
    AC_DEFINE(CAN_COMPILE_SSE, 1,
              [Define to 1 if SSE inline assembly is available.])
  ])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

  AC_CACHE_CHECK([if $CC groks SSE2 inline assembly],
    [ac_cv_sse2_inline],
    [CFLAGS="${CFLAGS_save}"
     AC_TRY_COMPILE(,[void *p;asm volatile("punpckhqdq %%xmm1,%%xmm2"::"r"(p));],
                    ac_cv_sse2_inline=yes, ac_cv_sse2_inline=no)])
  AS_IF([test "${ac_cv_sse2_inline}" != "no" -a "${SYS}" != "solaris"], [
    AC_DEFINE(CAN_COMPILE_SSE2, 1,
              [Define to 1 if SSE2 inline assembly is available.])
    VLC_ADD_PLUGIN([i420_rgb_sse2])
    VLC_ADD_PLUGIN([i420_yuy2_sse2])
    VLC_ADD_PLUGIN([i422_yuy2_sse2])
AC_CACHE_CHECK([if $CC groks 3D Now! inline assembly],
    [ac_cv_3dnow_inline],
    [CFLAGS="${CFLAGS_save}"
     AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
                    ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
AS_IF([test "${ac_cv_3dnow_inline}" != "no"], [
  AC_DEFINE(CAN_COMPILE_3DNOW, 1,
            [Define to 1 if 3D Now! inline assembly is available.])
  VLC_ADD_PLUGIN([memcpy3dn])
])

AC_ARG_ENABLE(altivec,
[  --disable-altivec       disable AltiVec optimizations (default auto)],, [
  AS_IF([test "${host_cpu}" = "powerpc"],
        [enable_altivec=yes], [enable_altivec=no])
])
AS_IF([test "${enable_altivec}" = "yes"], [
  ARCH="${ARCH} altivec";
  AC_CACHE_CHECK([if $CC groks AltiVec inline assembly],
Samuel Hocevar's avatar
Samuel Hocevar committed
     AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
         ac_cv_altivec_inline="yes",
Samuel Hocevar's avatar
 
Samuel Hocevar committed
          AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
            [ac_cv_altivec_inline="-Wa,-m7400"],
            ac_cv_altivec_inline=no)
  AS_IF([test "${ac_cv_altivec_inline}" != "no"], [
    AC_DEFINE(CAN_COMPILE_ALTIVEC, 1,
              [Define to 1 if AltiVec inline assembly is available.])
    AS_IF([test "${ac_cv_altivec_inline}" != "yes"], [
      VLC_ADD_CFLAGS([idctaltivec],[${ac_cv_altivec_inline}])
      VLC_ADD_CFLAGS([motionaltivec],[${ac_cv_altivec_inline}])
      VLC_ADD_CFLAGS([memcpyaltivec],[${ac_cv_altivec_inline}])
      VLC_ADD_CFLAGS([i420_yuy2_altivec],[${ac_cv_altivec_inline}])
      VLC_ADD_CFLAGS([libvlccore],[${ac_cv_altivec_inline}])
    VLC_ADD_PLUGIN([memcpyaltivec])
    VLC_ADD_PLUGIN([i420_yuy2_altivec])
dnl The AltiVec C extensions
dnl
dnl There are several possible cases:
dnl - OS X PPC, gcc 4.x: use -mpim-altivec -force_cpusubtype_ALL, don't
dnl                      need <altivec.h>
dnl - OS X PPC, gcc 3.x: need -faltivec, don't need <altivec.h>
dnl - Linux PPC, gcc 3.4, 4.x: need <altivec.h> which requires -maltivec
dnl - Linux PPC, gcc 3.3: need <altivec.h> and -maltivec -mabi=altivec
dnl - Linux PPC, gcc 3.x: need <altivec.h> and -fvec
dnl - Others: test should fail
  AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
  [# OS X/PPC test (gcc 4.x)
   CFLAGS="${CFLAGS_save} -mpim-altivec -force_cpusubtype_ALL"
   AC_TRY_COMPILE([vector unsigned char foo;],
     [vec_ld(0, (unsigned char *)0);],
     [ac_cv_c_altivec="-mpim-altivec -force_cpusubtype_ALL"],
     [# OS X/PPC test (gcc 3.x)
      CFLAGS="${CFLAGS_save} -faltivec"
      AC_TRY_COMPILE([vector unsigned char foo;],
        [vec_ld(1 * sizeof(vector float), (unsigned char *)0);],
        [ac_cv_c_altivec="-faltivec"],
        dnl Below this are the Linux tests
        [# Linux/PPC test (gcc 4.x)
         CFLAGS="${CFLAGS_save} -maltivec"
         AC_TRY_COMPILE([#include <altivec.h>],
           [vec_ld(0, (unsigned char *)0);],
           [ac_cv_c_altivec="-maltivec"],
           [# Linux/PPC test (gcc 3.3)
            CFLAGS="${CFLAGS_save} -maltivec -mabi=altivec"
            AC_TRY_COMPILE([#include <altivec.h>],
              [vec_ld(0, (unsigned char *)0);],
              [ac_cv_c_altivec=""
               ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
              [# Linux/PPC test (gcc 3.3)
               CFLAGS="${CFLAGS_save} -fvec"
               AC_TRY_COMPILE([#include <altivec.h>],
                 [vec_ld(0, (unsigned char *)0);],
                 [ac_cv_c_altivec="-fvec"],
                 [ac_cv_c_altivec=no])
              ])
           ])
        ])
     ])
   CFLAGS="${CFLAGS_save}"
  ])
  AS_IF([test "${ac_cv_c_altivec}" != "no"], [
    CPPFLAGS="${CPPFLAGS_save} ${ac_cv_c_altivec}"
  ])
  AC_CHECK_HEADERS(altivec.h)
  CPPFLAGS="${CPPFLAGS_save}"
  AS_IF([test "${ac_cv_c_altivec}" != "no"], [
    AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1,
              [Define to 1 if C AltiVec extensions are available.])
    VLC_ADD_CFLAGS([libvlccore],[${ac_cv_c_altivec}])
    VLC_ADD_CFLAGS([idctaltivec motionaltivec],[${ac_cv_c_altivec}])
    VLC_ADD_CFLAGS([i420_yuy2_altivec memcpyaltivec deinterlace],[${ac_cv_c_altivec} ${ac_cv_c_altivec_abi}])
    VLC_ADD_PLUGIN([memcpyaltivec])
    VLC_ADD_PLUGIN([i420_yuy2_altivec])
  AC_CACHE_CHECK([if linker needs -framework vecLib],
    [LDFLAGS="${LDFLAGS_vlc} -Wl,-framework,vecLib"
     AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
  AS_IF([test "${ac_cv_ld_altivec}" != "no"], [
    VLC_ADD_LDFLAGS([libvlccore idctaltivec motionaltivec memcpyaltivec],[-Wl,-framework,vecLib])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
[  --with-tuning=ARCH      enable special tuning for an architecture
                          (default Pentium 2 on IA-32 and G4 on PPC)])
Samuel Hocevar's avatar
Samuel Hocevar committed
if test -n "${with_tuning}"; then
    if test "${with_tuning}" != "no"; then
        CFLAGS_TUNING="-mtune=${with_tuning}"
    fi
    if test "${SYS}" = "darwin" -a "${host_cpu}" != "powerpc"; then
        CFLAGS_TUNING="-march=prescott -mtune=generic"
    elif test "${host_cpu}" = "i686" -o "${host_cpu}" = "i586" -o "${host_cpu}" = "i486" -o "${host_cpu}" = "i386"; then
        CFLAGS_TUNING="-mtune=pentium2"
    elif test "${host_cpu}" = "x86_64"; then
        CFLAGS_TUNING="-mtune=athlon64"
    elif test "${host_cpu}" = "powerpc"; then
dnl NOTE: this can't be cached cleanly
AS_IF([test "${CFLAGS_TUNING}"],
   [CFLAGS_save="${CFLAGS}"
    CFLAGS="${CFLAGS} ${CFLAGS_TUNING}"
    AC_MSG_CHECKING([whether $CC accepts ${CFLAGS_TUNING}])
    AC_COMPILE_IFELSE([ ],
                      [tuning="yes"],
                      [CFLAGS_TUNING=""; tuning="no"
                       AS_IF([test "${with_tuning}"],
                             [AC_MSG_ERROR([requested tuning not supported])])])
    AC_MSG_RESULT([$tuning])
    CFLAGS="${CFLAGS_save}"
])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl
dnl  Memory usage
dnl
AC_ARG_ENABLE(optimize-memory,
Rafaël Carré's avatar
Rafaël Carré committed
[  --enable-optimize-memory optimize memory usage over performance])
if test "${enable_optimize_memory}" = "yes"; then
  AC_DEFINE(OPTIMIZE_MEMORY, 1, Define if you want to optimize memory usage over performance)
fi

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Enable/disable optimizations
dnl
AC_ARG_ENABLE(optimizations,
[  --disable-optimizations disable compiler optimizations (default enabled)])
if test "${enable_optimizations}" != "no"; then
   if test "${enable_optimize_memory}" = "yes"; then
      enable_optimizations="size"
   else
      enable_optimizations="speed"
   fi
fi
Samuel Hocevar's avatar
 
Samuel Hocevar committed

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
dnl  Debugging mode
dnl
[  --enable-debug          debug mode (default disabled)])
Samuel Hocevar's avatar
Samuel Hocevar committed
test "${enable_debug}" != "yes" && enable_debug="no"
AH_TEMPLATE(NDEBUG,
            [Define to 1 if debug code should NOT be compiled])
AS_IF([test "x${enable_debug}" = "xno"], [
  AC_DEFINE(NDEBUG)
], [
  AC_CHECK_HEADERS([valgrind/valgrind.h])
])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl
dnl Allow runing as root (usefull for people runing on embedded platforms)
dnl
AC_ARG_ENABLE(run-as-root,
[  --enable-run-as-root    allow runing VLC as root (default disabled)])
AS_IF([test "${enable_run_as_root}" = "yes"],[
    AC_DEFINE(ALLOW_RUN_AS_ROOT, 1,
              [Define to 1 to allow runing VLC as root (uid 0).])
])

dnl
dnl  Test coverage
dnl
AC_ARG_ENABLE(coverage,
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
	[  --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}"
	dnl ugly...
	CFLAGS_save="${CFLAGS}"
	CXXFLAGS_save="${CXXFLAGS}"
	LDFLAGS_save="${LDFLAGS}"
])

Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl  Enable release-specific flags
Samuel Hocevar's avatar
 
Samuel Hocevar committed
dnl
Samuel Hocevar's avatar
 
Samuel Hocevar committed
AC_ARG_ENABLE(release,
[  --enable-release        activate extra optimizations (default disabled)])
Samuel Hocevar's avatar
Samuel Hocevar committed
test "${enable_release}" != "yes" && enable_release="no"
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl
dnl Stream output
dnl
AC_ARG_ENABLE(sout,
  [  --enable-sout           Stream output modules (default enabled)])
AS_IF([test "${enable_sout}" != "no"], [
  AC_DEFINE(ENABLE_SOUT, 1, [Define to 1 for stream output support.])
])
AM_CONDITIONAL(ENABLE_SOUT, [test "${enable_sout}" != "no"])
dnl Lua modules
AC_ARG_ENABLE(lua,
  AS_HELP_STRING([--enable-lua],[lua playlist, metafetcher and interface
Christophe Mutricy's avatar
Christophe Mutricy committed
		  plugins (default enabled)]))
if test "${enable_lua}" != "no"
then
  PKG_CHECK_MODULES(LUA, lua5.1,
    [ have_lua=yes ],
    [
    AC_MSG_WARN([lua5.1 not found, trying lua >= 5.1 instead])
    PKG_CHECK_MODULES(LUA, lua >= 5.1,
      [ have_lua=yes ],
Christophe Mutricy's avatar
Christophe Mutricy committed
          [LUA_LIBS="-llua5.1"],
dionoea's avatar
dionoea committed
            [LUA_LIBS="-llua51"],
            AC_CHECK_LIB( lua , luaL_newstate,
              [LUA_LIBS="-llua"],
              [ have_lua=no
dionoea's avatar
dionoea committed
                AC_MSG_WARN([lua >= 5.1 not found!])
              ])
  if test "x${have_lua}" = "xyes" ;  then
     AC_DEFINE(HAVE_LUA, 1, [Define if you have the lua library])
     VLC_ADD_LIBS([lua],[$LUA_LIBS])
     VLC_ADD_CFLAGS([lua],[$LUA_CFLAGS])
AM_CONDITIONAL(BUILD_LUA, [test "${have_lua}" = "yes"])
dnl
dnl HTTP daemon
dnl
AC_ARG_ENABLE(httpd,
  [  --enable-httpd          HTTP daemon (default enabled)])
if test "${enable_httpd}" != "no"
then
  VLC_ADD_PLUGIN([http])
  AC_DEFINE(ENABLE_HTTPD, 1, Define if you want the HTTP dameon support)
fi
AM_CONDITIONAL(BUILD_HTTPD, [test "${enable_httpd}" != "no"])
PKG_ENABLE_MODULES_VLC([LIBPROXY], [], [libproxy-1.0], [libproxy support], [auto])
dnl
dnl VideoLAN manager
dnl
AC_ARG_ENABLE(vlm,
  [  --enable-vlm            VideoLAN manager (default enabled)],,
  [enable_vlm="${enable_sout}"])
AS_IF([test "${enable_vlm}" != "no"], [
  AS_IF([test "${enable_sout}" = "no"], [
    AC_MSG_ERROR([VLM requires the stream output. Do not use --disable-sout.])
  ])
  AC_DEFINE(ENABLE_VLM, 1, [Define if you want the VideoLAN manager support])
  VLC_ADD_PLUGIN([telnet])
AM_CONDITIONAL([ENABLE_VLM], [test "${enable_vlm}" != "no"])
dnl
dnl Growl notification plugin
dnl
AC_ARG_ENABLE(growl,
  [  --enable-growl          growl notification plugin (default disabled)],,
  [enable_growl=no])
AS_IF([test "${enable_growl}" != "no"], [
    VLC_ADD_PLUGIN([growl_udp])
      VLC_ADD_PLUGIN([growl])
      VLC_ADD_LDFLAGS([growl], [-Wl,-framework,Growl,-framework,AppKit])
    ])
dnl
dnl Libnotify notification plugin
dnl
PKG_ENABLE_MODULES_VLC([NOTIFY], [], [libnotify], [libnotify notification], [auto])
  [  --disable-audioscrobbler Last.fm submission plugin (default enabled)])
AS_IF([test "${enable_audioscrobbler}" != "no"], [
        VLC_ADD_PLUGIN([audioscrobbler])
dnl
dnl Taglibplugin
dnl
AC_ARG_ENABLE(taglib,
  [  --disable-taglib        Taglib support (default enabled) ])
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
    PKG_CHECK_MODULES(TAGLIB, taglib >= 1.5,
      [ AC_DEFINE( HAVE_TAGLIB, 1, [Define if you have taglib plugin built] )
        VLC_ADD_PLUGIN([taglib])
        VLC_ADD_LIBS([taglib],[$TAGLIB_LIBS -lz])
       VLC_ADD_CXXFLAGS([taglib],[$TAGLIB_CFLAGS]) ],
      [AC_MSG_WARN(TagLib library not found)])
  ])

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

Samuel Hocevar's avatar
 
Samuel Hocevar committed
AC_ARG_WITH(,[Input plugins:])
Samuel Hocevar's avatar
 
Samuel Hocevar committed

dnl  live555 input
if test "${enable_livedotcom}"
then
  AC_MSG_WARN(--{en|dis}able-livedotcom is deprecated. Use --{en|dis}able-live555 instead.)
fi
if test "${enable_livedotcom}" = "no"
  enable_live555="no"
AC_ARG_ENABLE(live555,
[  --enable-live555        live555 RTSP input plugin (default enabled)])
if test "${enable_live555}" != "no"; then
  AC_ARG_WITH(live555-tree,
    [    --with-live555-tree=PATH live.com tree for static linking])
  dnl test for --with-live555-tree
  if test "${with_livedotcom_tree}"
  then
    AC_MSG_WARN(--with-livedotcom-tree is deprecated. Use --with-live555-tree instead.)
  with_live555_tree="${with_livedotcom_tree}"
  fi
  if test -z "${with_live555_tree}" -a "${CXX}" != ""; then
Samuel Hocevar's avatar
Samuel Hocevar committed
    AC_LANG_PUSH(C++)
    CPPFLAGS_save="${CPPFLAGS}"
    CPPFLAGS_live555="-I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment"
      CPPFLAGS_live555="${CPPFLAGS_live555} -DSOLARIS"
    CPPFLAGS="${CPPFLAGS} ${CPPFLAGS_live555}"

    AC_CHECK_HEADERS(liveMedia_version.hh, [
      AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
      AC_EGREP_CPP(yes,
        [#include <liveMedia_version.hh>
         #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
         #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
         yes
         #endif
         #endif],
        [AC_MSG_RESULT([no])
         AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
lternatively you can use --disable-live555 to disable the liveMedia plugin.])
      ],[
	 AC_MSG_RESULT([yes])
	 ])
     other_libs="-lgroupsock -lBasicUsageEnvironment -lUsageEnvironment"
     other_libs_pic="-lgroupsock_pic -lBasicUsageEnvironment_pic -lUsageEnvironment_pic"
      if test "${SYS}" = "mingw32"; then
        # add ws2_32 for closesocket, select, recv
        other_libs="$other_libs -lws2_32"
      fi
    dnl We need to check for pic because live555 don't provide shared libs
    dnl and we want to build a plugins so we need -fPIC on some arch.
Samuel Hocevar's avatar
Samuel Hocevar committed
    AC_CHECK_HEADERS(liveMedia.hh, [
      VLC_ADD_CXXFLAGS([live555], [${CPPFLAGS_live555}])
        AC_CHECK_LIB(liveMedia_pic, main, [
          VLC_ADD_PLUGIN([live555])
         VLC_ADD_LIBS([live555], [-lliveMedia_pic ${other_libs_pic}])
	 ],[
Samuel Hocevar's avatar
Samuel Hocevar committed
        AC_CHECK_LIB(liveMedia, main, [
          VLC_ADD_LIBS([live555], [-lliveMedia ${other_libs}])
        ],[],[${other_libs}]) ],[${other_libs_pic}])
    ],[
       AC_MSG_WARN([The development files for liveMedia (live555) can't be found])
Samuel Hocevar's avatar
Samuel Hocevar committed
    ])
    CPPFLAGS="${CPPFLAGS_save}"
    AC_LANG_POP(C++)
  else
    AC_MSG_CHECKING(for liveMedia/libliveMedia.a in ${with_live555_tree})
    real_live555_tree="`cd ${with_live555_tree} 2>/dev/null && pwd`"
    if test -z "${real_live555_tree}"; then
      dnl  The given directory can't be found
      AC_MSG_RESULT(no)
      AC_MSG_ERROR([cannot cd to ${with_live555_tree}])
    if test -f "${real_live555_tree}/liveMedia/libliveMedia.a"; then
      AC_MSG_RESULT(${real_live555_tree}/liveMedia/libliveMedia.a)
      AC_CHECK_HEADERS(${real_live555_tree}/liveMedia/include/liveMedia_version.hh,[
        AC_MSG_CHECKING(for liveMedia version >= 1214895600 )
        AC_EGREP_CPP(yes,
          [#include "${real_live555_tree}/liveMedia/include/liveMedia_version.hh"
           #ifdef LIVEMEDIA_LIBRARY_VERSION_INT
           #if LIVEMEDIA_LIBRARY_VERSION_INT < 1214895600
           yes
           #endif
           #endif],
          [AC_MSG_RESULT([no])
           AC_MSG_ERROR([Your version of liveMedia is too old: you may get a more recent one from http://www.live555.com/liveMedia.
lternatively you can use --disable-live555 to disable the liveMedia plugin.])
        ],[
	   AC_MSG_RESULT([yes])
	   ])
gbazin's avatar
 
gbazin committed
      if test "${SYS}" = "mingw32"; then
        # add ws2_32 for closesocket, select, recv
        VLC_ADD_LIBS([live555],[-lws2_32])
gbazin's avatar
 
gbazin committed
      fi

      VLC_ADD_LIBS([live555],[-L${real_live555_tree}/liveMedia -lliveMedia])
      VLC_ADD_LIBS([live555],[-L${real_live555_tree}/BasicUsageEnvironment -lBasicUsageEnvironment])
      VLC_ADD_LIBS([live555],[-L${real_live555_tree}/groupsock -lgroupsock])
      VLC_ADD_LIBS([live555],[-L${real_live555_tree}/UsageEnvironment -lUsageEnvironment])
gbazin's avatar
 
gbazin committed

      VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/BasicUsageEnvironment/include])
      VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/groupsock/include])
      VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/liveMedia/include])
      VLC_ADD_CXXFLAGS([live555],[-I${real_live555_tree}/UsageEnvironment/include ])
        VLC_ADD_CXXFLAGS([live555],[-DSOLARIS])
      dnl  The given live555 wasn't built
        AC_MSG_RESULT(no)
      if test "${enable_live555}" = "yes"; then
        AC_MSG_ERROR([cannot find ${real_live555_tree}/liveMedia/libliveMedia.a, make sure you compiled live555 in ${with_live555_tree}])
      fi	
dnl - special access module for dc1394 input
dnl - dv module: digital video module check for libraw1394
PKG_ENABLE_MODULES_VLC([dc1394], [], [libraw1394 >= 2.0.1 libdc1394 >= 1.0.0], [dc1394 access module], [auto])
PKG_ENABLE_MODULES_VLC([dv], [access_dv], [libraw1394 >= 2.0.1 libavc1394 >= 0.5.3], [DV input module], [auto])

dnl
dnl dvdread module: check for libdvdread
dnl
AC_ARG_ENABLE(dvdread,
[  --enable-dvdread        dvdread input module (default disabled)])
if test "${enable_dvdread}" != "no"
then
  AC_ARG_WITH(dvdread,
  [    --with-dvdread=PATH   libdvdread headers and libraries])
  AC_ARG_WITH(dvdread-tree,
  [    --with-dvdread-tree=PATH libdvdread tree for static linking])

  dnl Temporary hack (yeah, sure ;)
  if test "${SYS}" = "mingw32" || test "${SYS}" = "darwin" || test "${SYS}" = "beos" ; then
      VLC_ADD_LIBS([dvdread],[-ldvdcss])
  if test -z "${with_dvdread}"
  then
    if test -z "${with_dvdread_tree}"
    then
      AC_CHECK_HEADERS(dvdread/dvd_reader.h,
        [ VLC_ADD_PLUGIN([dvdread])
          VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
	  AC_CHECK_HEADERS(libdvdread/dvd_reader.h,
            [ VLC_ADD_PLUGIN([dvdread])
	      VLC_ADD_LIBS([dvdread],[-ldvdread ${LIBS_dvdcss}])
	    ],[
	      if test -n "${enable_dvdread}"
	      then
	      AC_MSG_ERROR([cannot find libdvdread headers])
	     fi
	   ])
	])
    else
      AC_MSG_CHECKING(for libdvdread.a in ${with_dvdread_tree})
      real_dvdread_tree="`cd ${with_dvdread_tree} 2>/dev/null && pwd`"
      if test -z "${real_dvdread_tree}"
      then
        dnl  The given directory can't be found
        AC_MSG_RESULT(no)
        AC_MSG_ERROR([cannot cd to ${with_dvdread_tree}])
      fi
      if test -f "${real_dvdread_tree}/dvdread/.libs/libdvdread.a"
      then
        dnl  Use a custom libdvdread
        AC_MSG_RESULT(${real_dvdread_tree}/dvdread/.libs/libdvdread.a)
        VLC_ADD_PLUGIN([dvdread])
        VLC_ADD_LIBS([dvdread],[-L${real_dvdread_tree}/dvdread/.libs -ldvdread ${LIBS_dvdcss}])
        VLC_ADD_CPPFLAGS([dvdread],[-I${real_dvdread_tree}])
      else
        dnl  The given libdvdread wasn't built
        AC_MSG_RESULT(no)
        AC_MSG_ERROR([cannot find ${real_dvdread_tree}/dvdread/.libs/libdvdread.a, make sure you compiled libdvdread in ${with_dvdread_tree}])
      fi
    fi
  else
    AC_MSG_CHECKING(for dvdread headers in ${with_dvdread})
    if test -f ${with_dvdread}/include/dvdread/dvd_reader.h
    then
      dnl  Use ${with_dvdread}/include/dvdread/dvd_reader.h
      AC_MSG_RESULT(yes)
      VLC_ADD_PLUGIN([dvdread])
      VLC_ADD_LIBS([dvdread],[-L${with_dvdread}/lib -ldvdread ${LIBS_dvdcss}])
      VLC_ADD_CPPFLAGS([dvdread],[-I${with_dvdread}/include])
    else
      dnl  No libdvdread could be found, sorry
      AC_MSG_RESULT(no)