configure.ac 142 KB
Newer Older
1
dnl Autoconf settings for vlc
2
dnl $Id$
Clément Stenac's avatar
Clément Stenac committed
3
 
4
AC_INIT(vlc,0.8.2-svn)
5

Sam Hocevar's avatar
Sam Hocevar committed
6
CONFIGURE_LINE="$0 $*"
7
CODENAME="Janus"
8

9 10
AC_PREREQ(2.50)
AC_CONFIG_SRCDIR(src/libvlc.c)
11
AC_CONFIG_AUX_DIR(autotools)
12 13
AC_CANONICAL_SYSTEM

14 15
dnl XXX: we don't put any flags here, because automake 1.5 doesn't support
dnl them. And we need the comma otherwize automake will choke on it.
16
AM_INIT_AUTOMAKE(vlc,0.8.2-svn)
17 18
AM_CONFIG_HEADER(config.h)

Sam Hocevar's avatar
Sam Hocevar committed
19 20 21
dnl
dnl  Save *FLAGS
dnl
22
VLC_SAVE_FLAGS
23

Sam Hocevar's avatar
Sam Hocevar committed
24
dnl
25
dnl Check for tools
Sam Hocevar's avatar
Sam Hocevar committed
26
dnl
27
AC_PROG_CC
28
AM_PROG_CC_C_O
29
AC_PROG_CPP
30
AC_PROG_CXX
31
eval "${CXX} --version" >/dev/null 2>&1 || CXX=""
32
if test "${CXX}" != ""; then
33 34
  AC_PROG_CXXCPP
fi
35 36
AC_PROG_MAKE_SET
AC_PROG_INSTALL
37

38 39
dnl AC_PROG_EGREP only exists in autoconf 2.54+, so we use AC_EGREP_CPP right
dnl now otherwise it might be set in an obscure if statement.
40
AC_EGREP_CPP(foo,foo)
41

42 43
dnl AC_PROG_OBJC doesn't seem to exist, this is the KDE workaround
AC_MSG_CHECKING(for an Objective-C compiler)
44
OBJC="${CXX}"
45 46 47 48 49 50 51 52 53
AC_SUBST(OBJC)
OBJCFLAGS="${CXXFLAGS} -fgnu-runtime -fconstant-string-class=NSConstantString"
AC_SUBST(OBJCFLAGS)
dnl _AM_DEPENDENCIES(OBJC) doesn't work, so hard code OBJCDEPMODE here
#OBJCDEPMODE="depmode=gcc3"
#AC_SUBST(OBJCDEPMODE)
_AM_DEPENDENCIES(OBJC)
AC_MSG_RESULT(not implemented yet)

54 55
dnl Find the right ranlib, even when cross-compiling
AC_CHECK_TOOL(RANLIB, ranlib, :)
56
AC_CHECK_TOOL(STRIP, strip, :)
57 58
AC_CHECK_TOOL(AR, ar, :)
AC_CHECK_TOOL(LD, ld, :)
59

60
dnl Sam, if you think I didn't see that... --Meuuh
61 62 63
dnl AM_PROG_LIBTOOL
AC_PROG_INSTALL

64 65 66 67
dnl Check for compiler properties
AC_C_CONST
AC_C_INLINE

68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
dnl
dnl  Check for the contrib directory
dnl
topdir="`pwd`"
if test -d ${topdir}/extras/contrib/lib; then
  export PATH=${topdir}/extras/contrib/bin:$PATH
  CPPFLAGS="${CPPFLAGS} -I${topdir}/extras/contrib/include"
  CPPFLAGS_save="${CPPFLAGS_save} -I${topdir}/extras/contrib/include"
  CFLAGS="${CFLAGS} -I${topdir}/extras/contrib/include"
  CFLAGS_save="${CFLAGS_save} -I${topdir}/extras/contrib/include"
  CXXFLAGS="${CXXFLAGS} -I${topdir}/extras/contrib/include"
  CXXFLAGS_save="${CXXFLAGS_save} -I${topdir}/extras/contrib/include"
  OBJCFLAGS="${OBJCFLAGS} -I${topdir}/extras/contrib/include"
  OBJCFLAGS_save="${OBJCFLAGS_save} -I${topdir}/extras/contrib/include"
  if test -d ${topdir}/extras/contrib/vlc-lib; then
    LDFLAGS="${LDFLAGS} -L${topdir}/extras/contrib/vlc-lib"
    LDFLAGS_save="${LDFLAGS_save} -L${topdir}/extras/contrib/vlc-lib"
  fi
  LDFLAGS="${LDFLAGS} -L${topdir}/extras/contrib/lib"
  LDFLAGS_save="${LDFLAGS_save} -L${topdir}/extras/contrib/lib"
88 89
  with_livedotcom_tree=${topdir}/extras/contrib/src/live
  with_goom_tree=${topdir}/extras/contrib/src/goom
90 91 92 93 94 95 96
  if test ".`uname -s`" = ".Darwin"; then
    export LD_LIBRARY_PATH=${topdir}/extras/contrib/lib:$LD_LIBRARY_PATH
    export DYLD_LIBRARY_PATH=${topdir}/extras/contrib/lib:$DYLD_LIBRARY_PATH
  elif test ".`uname -s`" = ".BeOS"; then
    export LIBRARY_PATH=${topdir}/extras/contrib/lib:$LIBRARY_PATH
    export BELIBRARIES=${topdir}/extras/contrib/lib:$BELIBRARIES
  fi
97 98
fi

Sam Hocevar's avatar
Sam Hocevar committed
99
dnl
100
dnl  Set default values
Sam Hocevar's avatar
Sam Hocevar committed
101
dnl
102
LDFLAGS_vlc="${LDFLAGS}"
Sam Hocevar's avatar
Sam Hocevar committed
103

104 105 106
dnl
dnl  Check the operating system
dnl
107 108
case "${target_os}" in
  "")
109 110
    SYS=unknown
    ;;
111
  linux*)
112 113
    SYS=linux
    ;;
114
  bsdi*)
115 116
    SYS=bsdi
    CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
117
    VLC_ADD_LDFLAGS([dvd dvdcss vcd cdda vcdx cddax],[-ldvd])
118
    ;;
119
  *bsd*)
120 121 122
    SYS="${target_os}"
    CFLAGS_save="${CFLAGS_save} -pthread"; CFLAGS="${CFLAGS_save}"
    ;;
123
  darwin*)
124
    SYS=darwin
125 126 127
    CFLAGS_save="${CFLAGS_save} -no-cpp-precomp -D_INTL_REDIRECT_MACROS"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="${CXXFLAGS_save} -no-cpp-precomp -D_INTL_REDIRECT_MACROS"; CXXFLAGS="${CXXFLAGS_save}"
    OBJCFLAGS_save="${OBJCFLAGS_save} -no-cpp-precomp -D_INTL_REDIRECT_MACROS"; OBJCFLAGS="${OBJCFLAGS_save}"
128
    VLC_ADD_LDFLAGS([vlc ffmpeg ffmpegaltivec],[-all_load])
129
    VLC_ADD_LDFLAGS([mp4], [-framework IOKit -framework CoreFoundation])
130
    VLC_ADD_CFLAGS([libvlc],[-x objective-c])
131
    VLC_ADD_CFLAGS([vlc],[-x objective-c])
132
    VLC_ADD_LDFLAGS([vlc],[-Wl,-multiply_defined,suppress])
133
    ;;
134
  *mingw32* | *cygwin* | *wince* | *mingwce* | *pe*)
135
    AC_CHECK_TOOL(WINDRES, windres, :)
136

137 138
    case "${target_os}" in
      *mingw32*)
139 140
        SYS=mingw32
        ;;
141
      *cygwin*)
142 143 144 145 146 147 148 149
        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, SYS=cygwin)
        ;;
150 151 152
      *wince* | *mingwce* | *pe*)
        SYS=mingwce
        ;;
153 154
    esac

155
    if test "${SYS}" = "mingw32"; then
156
        # add ws2_32 for closesocket, select, recv
Sam Hocevar's avatar
Sam Hocevar committed
157
        CPPFLAGS_save="${CPPFLAGS_save} -D_OFF_T_ -D_off_t=long"; CPPFLAGS="${CPPFLAGS_save}"
158 159 160
        VLC_ADD_LDFLAGS([vlc],[-lws2_32 -lnetapi32 -lwinmm -mwindows])
        VLC_ADD_LDFLAGS([vcdx cddax],[-lwinmm])
        VLC_ADD_LDFLAGS([ipv4 ipv6 access_http access_mms access_udp access_tcp access_ftp access_output_udp sap slp http stream_out_standard telnet netsync],[-lws2_32])
161
    fi
162 163 164
    if test "${SYS}" = "mingwce"; then
        # add ws2 for closesocket, select, recv
        CPPFLAGS_save="${CPPFLAGS_save} -D_OFF_T_ -D_off_t=long"; CPPFLAGS="${CPPFLAGS_save}"
165
        VLC_ADD_CPPFLAGS([vlc],[-Dmain(a,b)=maince(a,b)])
166 167 168
        VLC_ADD_LDFLAGS([vlc],[-lws2 -e WinMainCRTStartup])
        VLC_ADD_LDFLAGS([ipv4 ipv6 access_http access_mms access_udp access_tcp access_ftp access_output_udp sap http netsync],[-lws2])
    fi
169
    ;;
170
  *nto*)
171
    SYS=nto
172
    VLC_ADD_LDFLAGS([x11 xvideo],[-lsocket])
173
    ;;
174
  solaris*)
175
    SYS=solaris
176 177 178
    # _POSIX_PTHREAD_SEMANTICS is needed to get the POSIX ctime_r
    # Perhaps it is useful other places as well? 
    CFLAGS_save="${CFLAGS_save} -D_POSIX_PTHREAD_SEMANTICS"; CFLAGS="${CFLAGS_save}"
179
    ;;
180
  hpux*)
181 182
    SYS=hpux
    ;;
183
  beos)
184
    SYS=beos
185 186
    CFLAGS_save="${CFLAGS_save} -Wno-multichar"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="${CXXFLAGS_save} -Wno-multichar"; CXXFLAGS="${CXXFLAGS_save}"
187 188 189
    VLC_ADD_CXXFLAGS([beos],[])
    VLC_ADD_LDFLAGS([vlc beos],[-lbe])
    VLC_ADD_LDFLAGS([beos],[-lmedia -ltranslation -ltracker -lgame])
190
    VLC_ADD_LDFLAGS([access_file access_mms access_output_udp telnet netsync sap ipv4 vlc],[-lnet])
191

Eric Petit's avatar
Eric Petit committed
192
    dnl Ugly check for Zeta
193
    if test -f /boot/beos/system/lib/libzeta.so; then
194
        VLC_ADD_LDFLAGS([beos],[-lzeta])
195
    fi
196
    ;;
197
  *)
198 199
    SYS="${target_os}"
    ;;
200
esac
201 202 203
AM_CONDITIONAL(HAVE_BEOS, test "${SYS}" = "beos")
AM_CONDITIONAL(HAVE_DARWIN, test "${SYS}" = "darwin")
AM_CONDITIONAL(HAVE_WIN32, test "${SYS}" = "mingw32")
204
AM_CONDITIONAL(HAVE_WINCE, test "${SYS}" = "mingwce")
205

206 207 208
dnl
dnl Gettext stuff
dnl
209
ALL_LINGUAS="bn da de el en_GB es fr hi hu it ja my ne nl no pl ps pt_BR ru sv tet tl"
210
AM_GNU_GETTEXT_VERSION(0.11.5)
211 212 213
AM_GNU_GETTEXT
if test "${nls_cv_force_use_gnu_gettext}" = "yes"; then
  AC_DEFINE(HAVE_INCLUDED_GETTEXT, 1, Define if we use the local libintl)
Sam Hocevar's avatar
Sam Hocevar committed
214
  INCLUDES="${INCLUDES} -I\$(top_builddir)/intl"
215
else
216
  AC_CHECK_FUNCS(textdomain,,[
217
    AC_CHECK_LIB(intl,textdomain,
218
      VLC_ADD_LDFLAGS([vlc],[${LIBINTL}]),,
219
      ${LIBINTL}
220 221
    )
  ])
222 223
fi
AM_CONDITIONAL(BUILD_INTL, test "${nls_cv_force_use_gnu_gettext}" = "yes")
Derk-Jan Hartman's avatar
Derk-Jan Hartman committed
224
XGETTEXT="${XGETTEXT} --keyword=_NS --keyword=_ANS"
225

226 227 228 229 230 231 232 233
AC_ARG_ENABLE(utf8,
  [  --enable-utf8           unicode utf8 support (default enabled on darwin/beos/win32)])
if test "${enable_utf8}" = "yes" || (test "${enable_utf8}" != "no" && (test "${SYS}" = "mingw32" || test "${SYS}" = "beos" || test "${SYS}" = "darwin" ) )
then
  AC_DEFINE(ENABLE_UTF8, 1,
            Define if you want utf8 support)
fi

234 235 236 237 238 239
dnl
dnl Iconv stuff
dnl
VLC_ADD_CFLAGS([vlc],[${INCICONV}])
VLC_ADD_LDFLAGS([vlc],[${LIBICONV}])

240
dnl Check for the need to include the mingwex lib for mingw32
241
if test "${SYS}" = "mingw32"
242 243
then
    AC_CHECK_LIB(mingwex,opendir,
244 245
        AC_CHECK_LIB(mingw32,opendir,VLC_ADD_LDFLAGS([vlc],[]),
            [VLC_ADD_LDFLAGS([vlc gtk],[-lmingwex])])
246 247 248
    )
fi

249
dnl Check for fnative-struct or mms-bitfields support for mingw32
250
if test "${SYS}" = "mingw32"
251 252 253 254 255
then
    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)])
256
    if test "${ac_cv_c_mms_bitfields}" != "no"; then
257 258
        CFLAGS_save="${CFLAGS_save} -mms-bitfields";
        CXXFLAGS_save="${CXXFLAGS_save} -mms-bitfields";
259
    else
260 261 262 263
        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)])
264
        if test "${ac_cv_c_fnative_struct}" != "no"; then
265 266 267
            CFLAGS_save="${CFLAGS_save} -fnative-struct";
            CXXFLAGS_save="${CXXFLAGS_save} -fnative-struct";
        fi
268 269
    fi

270 271 272 273
    CFLAGS="${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
fi

dnl Check for fvtable-thunks support for mingw32
274
if test "${SYS}" = "mingw32" -a "${CXX}" != ""
275 276 277 278 279 280 281
then
AC_LANG_PUSH(C++)
    AC_CACHE_CHECK([if \$CXX accepts -fvtable-thunks],
        [ac_cv_cxx_fvtable_thunks],
        [CXXFLAGS="${CXXFLAGS_save} -Wall -Werror -fvtable-thunks"
         AC_TRY_COMPILE([],,ac_cv_cxx_fvtable_thunks=yes,
                        ac_cv_cxx_fvtable_thunks=no)])
282
    if test "${ac_cv_cxx_fvtable_thunks}" = "yes"; then
283 284 285
        CXXFLAGS_mingw32_special="-fvtable-thunks"
    fi

Sam Hocevar's avatar
Sam Hocevar committed
286
    CXXFLAGS_save="${CXXFLAGS_save} ${CXXFLAGS_mingw32_special}"; CXXFLAGS="${CXXFLAGS_save}"
287
AC_LANG_POP(C++)
288 289
fi

290 291 292 293
dnl Plugin compilation stuff

VLC_LIBRARY_SUFFIX

294 295
case "${SYS}" in
  mingw32|cygwin)
296 297 298
    VLC_ADD_CFLAGS([pic plugin mozilla activex],[${CFLAGS_mingw32_special}])
    VLC_ADD_CXXFLAGS([pic plugin mozilla activex],[${CFLAGS_mingw32_special} ${CXXFLAGS_mingw32_special}])
    VLC_ADD_OBJCFLAGS([pic plugin mozilla activex],[${CFLAGS_mingw32_special}])
299
    ;;
300 301
  mingwce)
    ;;
302
  *)
303 304 305 306
    VLC_ADD_CFLAGS([pic plugin mozilla],[-fpic -fPIC])
    VLC_ADD_CXXFLAGS([pic plugin mozilla],[-fpic -fPIC])
    VLC_ADD_OBJCFLAGS([pic plugin mozilla],[-fpic -fPIC])
    VLC_ADD_LDFLAGS([plugin mozilla],[-fpic -fPIC])
307 308
    ;;
esac
309 310

dnl The -DSYS_FOO flag
311
CPPFLAGS_save="${CPPFLAGS_save} -DSYS_`echo ${SYS} | sed -e 's/-.*//' | tr 'abcdefghijklmnopqrstuvwxyz.' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`"; CPPFLAGS="${CPPFLAGS_save}"
312

313
dnl Check for system libs needed
314
need_libc=false
315

316
AC_CHECK_FUNCS(gettimeofday select strerror strtod strtol strtof strtoll strtoull isatty vasprintf asprintf swab sigrelse getpwuid memalign posix_memalign gethostbyname2 if_nametoindex atoll getenv putenv setenv gmtime_r ctime_r localtime_r lrintf daemon)
317 318

dnl Check for usual libc functions
319
AC_CHECK_FUNCS(strdup strndup atof)
320 321
AC_CHECK_FUNCS(strcasecmp,,[AC_CHECK_FUNCS(stricmp)])
AC_CHECK_FUNCS(strncasecmp,,[AC_CHECK_FUNCS(strnicmp)])
322
AC_CHECK_FUNCS(strcasestr,,[AC_CHECK_FUNCS(stristr)])
323

324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
dnl Check for setlocal and langinfo
AC_CHECK_FUNCS(setlocale)
AC_CHECK_HEADERS(langinfo.h)
AC_CHECK_FUNCS(nl_langinfo)

AC_CACHE_CHECK([for nl_langinfo and CODESET], ac_cv_langinfo_codeset,
  [AC_TRY_LINK([#include <langinfo.h>],
    [char* cs = nl_langinfo(CODESET);],
    ac_cv_langinfo_codeset=yes,
    ac_cv_langinfo_codeset=no)
  ])
if test ${ac_cv_langinfo_codeset} = yes; then
  AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
    [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
fi

340
AC_CHECK_FUNCS(connect,,[
Sam Hocevar's avatar
Sam Hocevar committed
341
  AC_CHECK_LIB(socket,connect,[
342
    VLC_ADD_LDFLAGS([vlc ipv4 cddax],-lsocket)
Sam Hocevar's avatar
Sam Hocevar committed
343 344
  ])
])
345

346
AC_CHECK_FUNCS(send,,[
Sam Hocevar's avatar
Sam Hocevar committed
347
  AC_CHECK_LIB(socket,send,[
348
    VLC_ADD_LDFLAGS([access_http access_mms access_udp access_tcp access_ftp sap access_output_udp stream_out_standard],[-lsocket])
Sam Hocevar's avatar
Sam Hocevar committed
349 350
  ])
])
351

352
AC_CHECK_FUNCS(gethostbyname,,[
Sam Hocevar's avatar
Sam Hocevar committed
353
  AC_CHECK_LIB(nsl,gethostbyname,[
354
    VLC_ADD_LDFLAGS([cddax ipv4 vlc],[-lnsl])
Sam Hocevar's avatar
Sam Hocevar committed
355 356
  ],[
    AC_CHECK_LIB(bind,gethostbyname,[
357
      VLC_ADD_LDFLAGS([ipv4 access_mms],[-lbind])
Sam Hocevar's avatar
Sam Hocevar committed
358 359
    ])
  ])
360
])
361

362 363 364 365 366 367 368 369
dnl Check for socklen_t
AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t,
  [AC_TRY_COMPILE(
     [#include <sys/types.h>
      #include <sys/socket.h>],
     [socklen_t len = 42; return len;],
     ac_cv_type_socklen_t=yes,
     ac_cv_type_socklen_t=no)])
370
if test "${ac_cv_type_socklen_t}" != "no"; then
371 372 373
  AC_DEFINE(HAVE_SOCKLEN_T, 1, [Define if <sys/socket.h> defines socklen_t.])
fi

374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393
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 <winsock.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)])
if test $ac_cv_struct_sockaddr_storage = no; then
  AC_DEFINE(sockaddr_storage, sockaddr)
  AC_DEFINE(ss_family, sa_family)
fi

394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419
dnl getnameinfo, which implies {get,free}addrinfo, but not gai_strerror,
dnl -lws2_32 required with Mingw32, -lresolv NOT needed on Solaris.
dnl AC_SEARCH_LIBS won't work with Mingw32
AH_TEMPLATE(HAVE_GETNAMEINFO,
  [Define to 1 if you have the `getnameinfo' function.])
ac_func_getnameinfo_save_LIBS=$LIBS
AS_IF([test "${SYS}" = "mingw32"],
  [LIBS="-lws2_32 $LIBS"])
  AC_CACHE_CHECK([for getnameinfo], ac_cv_func_getnameinfo,
[AC_LINK_IFELSE([AC_LANG_PROGRAM([
[#include <sys/types.h>
#if defined( UNDER_CE )
# include <winsock.h>
#elif defined( WIN32 )
# include <winsock2.h>
#else
# include <sys/socket.h>
# include <netdb.h>
#endif]
], [[getnameinfo(0,0,0,0,0,0,0);]])],
ac_cv_func_getnameinfo=yes,
ac_cv_func_getnameinfo=no)])
AS_IF([test $ac_cv_func_getnameinfo = yes],
  [AC_DEFINE(HAVE_GETNAMEINFO)])
LIBS=$ac_func_getnameinfo_save_LIBS

420 421 422 423 424 425 426
dnl Check for va_copy
AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy,
  AC_TRY_LINK(
    [#include <stdarg.h>],
    [va_list ap1, ap2; va_copy(ap1,ap2);],
    [ac_cv_c_va_copy="yes"],
    [ac_cv_c_va_copy="no"]))
427
if test "${ac_cv_c_va_copy}" = "yes"; then
428 429 430 431 432 433 434 435
  AC_DEFINE(HAVE_VA_COPY, 1, [Define if <stdarg.h> defines va_copy.])
fi
AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy,
  AC_TRY_LINK(
    [#include <stdarg.h>],
    [va_list ap1, ap2; __va_copy(ap1,ap2);],
    [ac_cv_c___va_copy="yes"],
    [ac_cv_c___va_copy="no"]))
436
if test "${ac_cv_c___va_copy}" = "yes"; then
437
  AC_DEFINE(HAVE___VA_COPY, 1, [Define if <stdarg.h> defines __va_copy.])
438 439
fi

440
AC_CHECK_FUNCS(inet_aton,,[
Sam Hocevar's avatar
Sam Hocevar committed
441
  AC_CHECK_LIB(resolv,inet_aton,[
442
    VLC_ADD_LDFLAGS([ipv4 vlc],[-lresolv])
Sam Hocevar's avatar
Sam Hocevar committed
443
  ])
444
])
445

446
dnl Check for getopt (always use builtin one on win32)
447
if test "${SYS}" = "mingw32" -o "${SYS}" = "mingwce"; then
448 449
need_getopt=:
else
450
need_getopt=false
451
AC_CHECK_FUNCS(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
452
[ # FreeBSD has a gnugetopt library for this:
453
  AC_CHECK_LIB([gnugetopt],[getopt_long],
Sam Hocevar's avatar
Sam Hocevar committed
454
    [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support)
455
     VLC_ADD_LDFLAGS([vlc],[-lgnugetopt])],
456
    [need_getopt=:])])
457
fi
458
AM_CONDITIONAL(BUILD_GETOPT, ${need_getopt})
459

460
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
461
AC_TYPE_SIGNAL
Sam Hocevar's avatar
Sam Hocevar committed
462
AC_CHECK_LIB(m,cos,[
463
  VLC_ADD_LDFLAGS([adjust distort a52tofloat32 dtstofloat32 x264 goom],[-lm])
Sam Hocevar's avatar
Sam Hocevar committed
464 465
])
AC_CHECK_LIB(m,pow,[
466
  VLC_ADD_LDFLAGS([ffmpeg ffmpegaltivec stream_out_transrate i420_rgb faad toolame equalizer vlc freetype],[-lm])
Sam Hocevar's avatar
Sam Hocevar committed
467 468
])
AC_CHECK_LIB(m,sqrt,[
469
  VLC_ADD_LDFLAGS([headphone_channel_mixer normvol speex],[-lm])
Sam Hocevar's avatar
Sam Hocevar committed
470
])
471
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
472

Sam Hocevar's avatar
Sam Hocevar committed
473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489
dnl Check for dynamic plugins
ac_cv_have_plugins=no

# OS X style
AC_CHECK_HEADERS(mach-o/dyld.h,
  [AC_CHECK_FUNCS(NSLinkModule,
    [AC_DEFINE(HAVE_DL_DYLD, 1, [Define if you have the Darwin dyld API])
     ac_cv_have_plugins=yes])])

# HP-UX style
if test "${ac_cv_have_plugins}" = "no"; then
  AC_CHECK_HEADERS(dl.h)
  ac_cv_my_have_shl_load=no
  AC_CHECK_FUNC(shl_load,
   [ac_cv_my_have_shl_load=yes,
    AC_CHECK_LIB(dld, shl_load,
     [ac_cv_my_have_shl_load=yes
490
      VLC_ADD_LDFLAGS([vlc],[-ldld])])])
Sam Hocevar's avatar
Sam Hocevar committed
491 492 493 494 495 496 497 498 499
  if test "${ac_cv_my_have_shl_load}" = "yes"; then
    AC_DEFINE(HAVE_DL_SHL_LOAD, 1, [Define if you have the shl_load API])
    ac_cv_have_plugins=yes
  fi
fi

# Whatever style
if test "${ac_cv_have_plugins}" = "no"; then
  AC_CHECK_LIB(dld, dld_link,
500
   [VLC_ADD_LDFLAGS([vlc],[-ldld])
Sam Hocevar's avatar
Sam Hocevar committed
501 502 503 504 505 506
    AC_DEFINE(HAVE_DL_DLD_LINK, 1, [Define if you have the GNU dld library])
    ac_cv_have_plugins=yes])
fi

# Win32 style
if test "${ac_cv_have_plugins}" = "no"; then
507 508
  if test "${SYS}" = "mingw32" -o "${SYS}" = "cygwin"; then
    AC_CHECK_LIB(kernel32, main,
509
     [VLC_ADD_LDFLAGS([vlc],[-lkernel32])
510 511 512
      AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
      ac_cv_have_plugins=yes])
  fi
Sam Hocevar's avatar
Sam Hocevar committed
513 514
fi

515 516 517 518 519 520 521 522
# WinCE style
if test "${ac_cv_have_plugins}" = "no"; then
  if test "${SYS}" = "mingwce"; then
    AC_DEFINE(HAVE_DL_WINDOWS, 1, [Define if you have Windows' LoadLibrary])
    ac_cv_have_plugins=yes
  fi
fi

Sam Hocevar's avatar
Sam Hocevar committed
523 524
# BeOS style
if test "${ac_cv_have_plugins}" = "no"; then
Sam Hocevar's avatar
Sam Hocevar committed
525 526 527 528
  AC_CHECK_HEADERS(image.h)
  AC_CHECK_FUNCS(load_add_on,
   [AC_DEFINE(HAVE_DL_BEOS, 1, [Define if you have the BeOS dl])
    ac_cv_have_plugins=yes])
Sam Hocevar's avatar
Sam Hocevar committed
529 530 531 532 533 534 535 536 537 538
fi

# Only test for dlopen() if the others didn't work
if test "${ac_cv_have_plugins}" = "no"; then
  AC_CHECK_HEADERS(dlfcn.h sys/dl.h)
  ac_cv_my_have_dlopen=no
  AC_CHECK_FUNC(dlopen,
    ac_cv_my_have_dlopen=yes,
    AC_CHECK_LIB(dl, dlopen,
      ac_cv_my_have_dlopen=yes
539
      VLC_ADD_LDFLAGS([vlc],[-ldl]),
Sam Hocevar's avatar
Sam Hocevar committed
540 541
      AC_CHECK_LIB(svld, dlopen,
        ac_cv_my_have_dlopen=yes
542
        VLC_ADD_LDFLAGS([vlc],[-lsvld]))))
Sam Hocevar's avatar
Sam Hocevar committed
543 544 545 546 547 548
  if test "${ac_cv_my_have_dlopen}" = "yes"; then
    AC_DEFINE(HAVE_DL_DLOPEN, 1, [Define if you have the dlopen API])
    ac_cv_have_plugins=yes
  fi
fi

549
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
550
dnl Check for pthreads - borrowed from XMMS
551
THREAD_LIB=error
552
if test "${THREAD_LIB}" = "error"; then
553
  AC_CHECK_LIB(pthread,main,THREAD_LIB="-lpthread")
554
fi
555
if test "${THREAD_LIB}" = "error"; then
556
  AC_CHECK_LIB(pthreads,main,THREAD_LIB="-lpthreads")
557
fi
558
if test "${THREAD_LIB}" = "error"; then
559
  AC_CHECK_LIB(c_r,main,THREAD_LIB="-lc_r")
560
fi
561
if test "${THREAD_LIB}" = "error"; then
562
  AC_CHECK_FUNCS(pthread_mutex_lock)
563
  THREAD_LIB=""
564
fi
565 566 567

dnl Check for cthreads under GNU/Hurd for instance
AC_CHECK_LIB(threads,cthread_fork,THREAD_LIB="-lthreads")
568

569 570 571 572 573
dnl
dnl  GNU portable threads
dnl
AC_ARG_ENABLE(pth,
  [  --enable-pth            GNU Pth support (default disabled)],
574
  [ if test "${enable_pth}" = "yes"; then
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592
    AC_CHECK_LIB(pth,pth_init)
    AC_MSG_CHECKING(for pth_init in pth.h)
    AC_EGREP_HEADER(pth_init,pth.h,[
      AC_MSG_RESULT(yes)
      AC_DEFINE(PTH_INIT_IN_PTH_H, 1,
                Define if <pth.h> defines pth_init)
      THREAD_LIB="-lpth"
    ],[
      AC_MSG_RESULT(no)
    ])
    fi
])

dnl
dnl  State Threads
dnl
AC_ARG_ENABLE(st,
  [  --enable-st             State Threads (default disabled)],
593
  [ if test "${enable_st}" = "yes"; then
594 595 596 597 598 599 600 601 602 603 604 605 606
    AC_CHECK_LIB(st,st_init)
    AC_MSG_CHECKING(for st_init in st.h)
    AC_EGREP_HEADER(st_init,st.h,[
      AC_MSG_RESULT(yes)
      AC_DEFINE(ST_INIT_IN_ST_H, 1,
                Define if <st.h> defines st_init)
      THREAD_LIB="-lst"
    ],[
      AC_MSG_RESULT(yes)
    ])
    fi
])

607
VLC_ADD_LDFLAGS([vlc plugin],[${THREAD_LIB}])
608 609

dnl Don't link with rt when using GNU-pth
610
if test "${THREAD_LIB}" != "-lpth" && test "${THREAD_LIB}" != "-lst"; then
611
  dnl HP/UX port
612
  AC_CHECK_LIB(rt,sem_init, [VLC_ADD_LDFLAGS([vlc],[-lrt])])
613 614 615 616

  have_nanosleep=false
  AC_CHECK_FUNCS(nanosleep,have_nanosleep=:,[
    AC_CHECK_LIB(rt,nanosleep,
617
      [VLC_ADD_LDFLAGS([vlc],[-lrt]) have_nanosleep=:],
618
      [AC_CHECK_LIB(posix4,nanosleep,
619
          [VLC_ADD_LDFLAGS([vlc],[-lposix4]) have_nanosleep=:])]
620 621 622 623 624 625 626 627
    )
  ])
  if ${have_nanosleep}; then
    AC_DEFINE(HAVE_NANOSLEEP, 1,
              Define if nanosleep is available.)
  fi
fi

628
dnl Check for misc headers
629
AC_MSG_CHECKING(for pthread_cond_t in pthread.h)
630
AC_EGREP_HEADER(pthread_cond_t,pthread.h,[
631
  AC_MSG_RESULT(yes)
632
  AC_DEFINE(PTHREAD_COND_T_IN_PTHREAD_H, 1,
633 634 635 636
            Define if <pthread.h> defines pthread_cond_t.)],[
  AC_MSG_RESULT(no)])

AC_MSG_CHECKING(for pthread_once in pthread.h)
Sam Hocevar's avatar
Sam Hocevar committed
637
AC_EGREP_HEADER(pthread_once,pthread.h,[
638
  AC_MSG_RESULT(yes)
639
  AC_DEFINE(PTHREAD_ONCE_IN_PTHREAD_H, 1,
640 641
            Define if <pthread.h> defines pthread_once.)],[
  AC_MSG_RESULT(no)])
642
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
643 644

AC_MSG_CHECKING(for strncasecmp in strings.h)
645
AC_EGREP_HEADER(strncasecmp,strings.h,[
646
  AC_MSG_RESULT(yes)
647
  AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
648 649
            Define if <strings.h> defines strncasecmp.)],[
  AC_MSG_RESULT(no)])
650

651
dnl Check for headers
652
AC_CHECK_HEADERS(signal.h time.h errno.h stdint.h stdbool.h getopt.h strings.h inttypes.h sys/int_types.h wchar.h)
653
AC_CHECK_HEADERS(sys/sockio.h fcntl.h sys/types.h sys/time.h sys/times.h sys/ioctl.h sys/stat.h)
654
AC_CHECK_HEADERS(arpa/inet.h net/if.h netinet/in.h sys/socket.h)
655
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
Sam Hocevar's avatar
Sam Hocevar committed
656
AC_CHECK_HEADERS(machine/param.h sys/shm.h altivec.h)
657
AC_CHECK_HEADERS(linux/version.h)
658
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
659

Sam Hocevar's avatar
Sam Hocevar committed
660 661
AC_HEADER_TIME

662 663
dnl Check for dirent
need_dirent=false
664
AC_CHECK_HEADERS(dirent.h,,[need_dirent=:])
665 666
AM_CONDITIONAL(BUILD_DIRENT, ${need_dirent})

667
dnl Mac OS X and other OSes don't have declaration for nanosleep
668
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
669
AC_MSG_CHECKING(for nanosleep in time.h)
670
AC_EGREP_HEADER(nanosleep,time.h,[
671
  AC_MSG_RESULT(yes)
672 673
  AC_DEFINE(HAVE_DECL_NANOSLEEP, 1,
            Define if <time.h> defines nanosleep.)
674 675
],[
  AC_MSG_RESULT(no)
676
])
677
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
678 679

dnl Make sure we have timespecs
680
AC_MSG_CHECKING(for timespec in sys/time.h)
681
AC_EGREP_HEADER(timespec,sys/time.h,[
682
  AC_MSG_RESULT(yes)
683 684
  AC_DEFINE(HAVE_STRUCT_TIMESPEC, 1,
            Define if <sys/time.h> defines struct timespec.)
685 686
],[
  AC_MSG_RESULT(no)
687
])
688

689
dnl Check for threads library
690
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
691
AC_CHECK_HEADERS(cthreads.h pthread.h kernel/scheduler.h kernel/OS.h)
692
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
693

694
dnl Default X headers and libraries
695
if test "${x_includes}" = "NONE"; then
696
  x_includes="/usr/X11R6/include"
697
fi
698
if test "${x_libraries}" = "NONE"; then
699
  x_libraries="/usr/X11R6/lib"
700 701
fi

702
dnl Check for hal
703 704 705 706 707 708 709 710 711 712 713 714
AC_ARG_ENABLE(hal,
  [  --enable-hal            Linux HAL services discovery (default enabled)])
 
if test "${enable_hal}" != "no"
then
  PKG_CHECK_MODULES(HAL, hal >= 0.2.97,
    [AC_DEFINE(HAVE_HAL, [], [Define if you have the HAL library])
     VLC_ADD_PLUGINS([hal])
     VLC_ADD_LDFLAGS([vlc hal],[$HAL_LIBS])
     VLC_ADD_CFLAGS([vlc hal],[$HAL_CFLAGS])],
    [AC_MSG_WARN(HAL library not found)])
fi
715

716
dnl Build the gtk_main plugins?
717
NEED_GTK_MAIN=no
718
NEED_GNOME_MAIN=no
719 720
NEED_GTK2_MAIN=no
NEED_GNOME2_MAIN=no
721

722 723 724
dnl build the qte plugin ?
NEED_QTE_MAIN=no

725
dnl Check for ntohl, etc.
726
AC_CACHE_CHECK([for ntohl in sys/param.h],
727 728 729 730 731
    [ac_cv_c_ntohl_sys_param_h],
    [CFLAGS="${CFLAGS_save} -Wall -Werror"
     AC_TRY_COMPILE([#include <sys/param.h>],
        [void foo() { int meuh; ntohl(meuh); }],
        ac_cv_c_ntohl_sys_param_h=yes, ac_cv_c_ntohl_sys_param_h=no)])
732
if test "${ac_cv_c_ntohl_sys_param_h}" != "no"; then
733
    AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
734
fi
735

736 737 738 739 740 741 742 743
# XXX: do this with an M4 macro?
#dnl Check for various -W flags
#for flag in "" all unreachable-code conversion sign-compare disabled-optimization
#do
#    AC_CACHE_CHECK([if \$CC accepts -W${flag}],
#        [ac_cv_c_W${flag}],
#        [CFLAGS="-W${flag} ${CFLAGS_save}"
#         AC_TRY_COMPILE([],,ac_cv_c_W${flag}=yes, ac_cv_c_W${flag}=no)])
744
#    if test "${ac_cv_c_W${flag}}" != "no"; then
745 746 747 748 749 750
#        CFLAGS_save="-W${flag} ${CFLAGS_save}"; CFLAGS="${CFLAGS_save}"
#        CXXFLAGS_save="-W${flag} ${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
#        OBJCFLAGS_save="-W${flag} ${OBJCFLAGS_save}"; OBJCFLAGS="${OBJCFLAGS_save}"
#    fi
#done

751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770
AC_CACHE_CHECK([if \$CC accepts -Wall],
    [ac_cv_c_Wall],
    [CFLAGS="-Wall ${CFLAGS_save}"
     AC_TRY_COMPILE([],,ac_cv_c_Wall=yes, ac_cv_c_Wall=no)])

AC_CACHE_CHECK([if \$CC accepts -Wconversion],
    [ac_cv_c_Wconversion],
    [CFLAGS="-Wconversion ${CFLAGS_save}"
     AC_TRY_COMPILE([],,ac_cv_c_Wconversion=yes, ac_cv_c_Wconversion=no)])

AC_CACHE_CHECK([if \$CC accepts -Wunreachable-code],
    [ac_cv_c_Wunreachable_code],
    [CFLAGS="-Wunreachable-code ${CFLAGS_save}"
     AC_TRY_COMPILE([],,ac_cv_c_Wunreachable_code=yes, ac_cv_c_Wunreachable_code=no)])

AC_CACHE_CHECK([if \$CC accepts -Wsign-compare],
    [ac_cv_c_Wsign_compare],
    [CFLAGS="-Wsign-compare ${CFLAGS_save}"
     AC_TRY_COMPILE([],,ac_cv_c_Wsign_compare=yes, ac_cv_c_Wsign_compare=no)])

771
if test "${ac_cv_c_Wall}" != "no"; then
772 773 774 775
    CFLAGS_save="-Wall ${CFLAGS_save}"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="-Wall ${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
    OBJCFLAGS_save="-Wall ${OBJCFLAGS_save}"; OBJCFLAGS="${OBJCFLAGS_save}"
fi
776

777
if test "${ac_cv_c_Wsign_compare}" != "no"; then
778 779 780 781 782
    CFLAGS_save="-Wsign-compare ${CFLAGS_save}"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="-Wsign-compare ${CFLAGS_save}"; CXXFLAGS="${CXXFLAGS_save}"
    OBJCFLAGS_save="-Wsign-compare ${OBJCFLAGS_save}"; OBJCFLAGS="${OBJCFLAGS_save}"
fi

783 784
dnl Check for -pipe
AC_CACHE_CHECK([if \$CC accepts -pipe],
785 786 787
    [ac_cv_c_pipe],
    [CFLAGS="${CFLAGS_save} -pipe"
     AC_TRY_COMPILE([],,ac_cv_c_pipe=yes, ac_cv_c_pipe=no)])
788
if test "${ac_cv_c_pipe}" != "no"; then
789 790 791
    CFLAGS_save="${CFLAGS_save} -pipe"; CFLAGS="${CFLAGS_save}"
    CXXFLAGS_save="${CXXFLAGS_save} -pipe"; CXXFLAGS="${CXXFLAGS_save}"
    OBJCFLAGS_save="${OBJCFLAGS_save} -pipe"; OBJCFLAGS="${OBJCFLAGS_save}"
792 793 794
fi

dnl Check for various optimization flags
795 796 797 798 799 800 801 802
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" -a "${target_cpu}" = "mipsel"; then
    CFLAGS_OPTIM="${CFLAGS_OPTIM} -Os"
fi

803
AC_CACHE_CHECK([if \$CC accepts -O3],
804 805 806
    [ac_cv_c_o3],
    [CFLAGS="${CFLAGS_save} -O3"
     AC_TRY_COMPILE([],,ac_cv_c_o3=yes, ac_cv_c_o3=no)])
807
if test "${ac_cv_c_o3}" != "no" -a "${target_cpu}" != "mipsel"; then
808
    CFLAGS_OPTIM="${CFLAGS_OPTIM} -O3"
809 810 811 812 813 814
fi

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)])
815
if test "${ac_cv_c_o2}" != "no" -a "${target_cpu}" != "mipsel"; then
816
    if test "${ac_cv_c_o3}" = "no"; then
817
        CFLAGS_OPTIM="${CFLAGS_OPTIM} -O2"
818 819
    fi
    CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O2"
820
else 
821 822 823 824
    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)])
825
    if test "${ac_cv_c_o}" != "no" -a "${target_cpu}" != "mipsel"; then
826
        if test "${ac_cv_c_o3}" = "no"; then
827
            CFLAGS_OPTIM="${CFLAGS_OPTIM} -O"
828 829
	fi
        CFLAGS_NOOPTIM="${CFLAGS_NOOPTIM} -O"
830 831 832 833 834
    fi
fi

dnl Check for -ffast-math
AC_CACHE_CHECK([if \$CC accepts -ffast-math],
835 836 837
    [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)])
838
if test "${ac_cv_c_fast_math}" != "no"; then
839
    CFLAGS_OPTIM="${CFLAGS_OPTIM} -ffast-math"
840 841 842
fi

dnl Check for -funroll-loops
843
dnl Disabled on BeOS because BeOS' gcc is buggy and may crash with it
844
if test "${SYS}" != "beos"
845 846 847 848 849
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)])
850
  if test "${ac_cv_c_unroll_loops}" != "no"; then
851 852
      CFLAGS_OPTIM="${CFLAGS_OPTIM} -funroll-loops"
  fi
853 854 855 856
fi

dnl Check for -fomit-frame-pointer
AC_CACHE_CHECK([if \$CC accepts -fomit-frame-pointer],
857 858 859
    [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)])
860
if test "${ac_cv_c_omit_frame_pointer}" != "no"; then
861 862
    CFLAGS_OPTIM_NODEBUG="${CFLAGS_OPTIM_NODEBUG} -fomit-frame-pointer"
    # this plugin does not compile without -fomit-frame-pointer, damn gcc!
863
    VLC_ADD_CFLAGS([i420_yuy2_mmx],[-fomit-frame-pointer])
864 865
fi

866 867 868 869 870
dnl Check for -mdynamic-no-pic
AC_CACHE_CHECK([if \$CC accepts -mdynamic-no-pic],
    [ac_cv_c_dynamic_no_pic],
    [CFLAGS="${CFLAGS_save} -mdynamic-no-pic"
     AC_TRY_COMPILE([],,ac_cv_c_dynamic_no_pic=yes, ac_cv_c_dynamic_no_pic=no)])
871
if test "${ac_cv_c_dynamic_no_pic}" != "no"; then
872 873
    VLC_ADD_CFLAGS([builtin],[-mdynamic-no-pic])
    VLC_ADD_CFLAGS([libvlc],[-mdynamic-no-pic])
874 875
fi

Sam Hocevar's avatar
Sam Hocevar committed
876
dnl Check for Darwin plugin linking flags
877
AC_CACHE_CHECK([if \$CC accepts -bundle -undefined error -lcc_dynamic],
878 879 880
    [ac_cv_ld_darwin],
    [CFLAGS="${CFLAGS_save} -bundle -undefined error -lcc_dynamic"
     AC_TRY_COMPILE([],,ac_cv_ld_darwin=yes, ac_cv_ld_darwin=no)])
881
if test "${ac_cv_ld_darwin}" != "no"; then
882
    VLC_ADD_LDFLAGS([plugin],[-bundle -undefined error -lcc_dynamic])
883
fi
Sam Hocevar's avatar
Sam Hocevar committed
884 885

dnl Check for standard plugin linking flags
886
dnl BeOS' gcc needs -nostart instead of -shared, even if -shared isn't harmful (just a warning)
887
if test "${SYS}" = "beos"; then
888
  VLC_ADD_LDFLAGS([plugin mozilla],[-nostart])
889
else
Sam Hocevar's avatar
Sam Hocevar committed
890 891 892 893 894
  AC_CACHE_CHECK([if \$CC accepts -shared],
      [ac_cv_ld_plugins],
      [CFLAGS="${CFLAGS_save} -shared"
       AC_TRY_COMPILE([],, ac_cv_ld_plugins=yes, ac_cv_ld_plugins=no)])
  if test "${ac_cv_ld_plugins}" != "no"; then
895
    VLC_ADD_LDFLAGS([plugin mozilla],[-shared])
Sam Hocevar's avatar
Sam Hocevar committed
896
  fi
897
fi
898

899 900
dnl Check for variadic macros
AC_CACHE_CHECK([for variadic cpp macros],
901 902 903 904 905 906 907 908
    [ac_cv_cpp_variadic_macros],
    [CFLAGS="${CFLAGS_save}"
     AC_TRY_COMPILE(
         [#include <stdio.h>
          #define a(b,c...) printf(b,##c)],
         [a("foo");a("%s","bar");a("%s%s","baz","quux");],
         ac_cv_cpp_variadic_macros=yes,
         ac_cv_cpp_variadic_macros=no)])
909
if test "${ac_cv_cpp_variadic_macros}" != "no"; then
910
    AC_DEFINE(HAVE_VARIADIC_MACROS, 1, Support for variadic macros)
911 912
fi

913 914
dnl Checks for __attribute__(aligned()) directive
AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
915 916 917 918 919 920 921 922 923
    [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}"])
924
if test "${ac_cv_c_attribute_aligned}" != "0"; then
925 926
    AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
        [${ac_cv_c_attribute_aligned}],[Maximum supported data alignment])
927 928
fi

929 930 931 932 933 934 935 936 937
dnl Checks for __attribute__(format()) directive
AC_CACHE_CHECK([__attribute__ ((format ())) support with function pointers],
    [ac_cv_c_attribute_format],
    [ac_cv_c_attribute_format=no
        CFLAGS="${CFLAGS_save} -Werror"
        AC_TRY_COMPILE([],
        [static void (*pf_printf)(const char *, ...) __attribute__ ((format(printf,1,2)));(void)pf_printf;],
        [ac_cv_c_attribute_format=yes])
        CFLAGS="${CFLAGS_save}"])
938
if test "${ac_cv_c_attribute_format}" != "no"; then
939 940 941
    AC_DEFINE(HAVE_ATTRIBUTE_FORMAT, 1, Support for __attribute__((format())) with function pointers)
fi

942 943 944 945 946 947
dnl Check for __attribute__(())
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])])
948
if test "${ac_cv_c_attribute_packed}" != "no"; then
949 950 951
  AC_DEFINE(HAVE_ATTRIBUTE_PACKED, 1, Support for __attribute__((packed)) for structs)
fi

952 953 954
dnl
dnl  Check the CPU
dnl
955 956
case "${target_cpu}" in
  "")
957 958 959 960 961 962 963
    ARCH=unknown
    ;;
  *)
    ARCH="${target_cpu}"
    ;;
esac

964 965 966 967 968 969 970
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)])
Sam Hocevar's avatar
Sam Hocevar committed
971 972
test "${enable_gprof}" != "yes" && enable_gprof="no"
test "${enable_cprof}" != "yes" && enable_cprof="no"
973

974 975 976
dnl
dnl  default modules
dnl
977
VLC_ADD_PLUGINS([dummy logger memcpy])
978
VLC_ADD_PLUGINS([mpgv mpga m4v m4a h264 ps pva avi asf aac mp4 rawdv nsv real aiff mjpeg demuxdump])
979
VLC_ADD_PLUGINS([cvdsub svcdsub spudec subsdec dvbsub mpeg_audio lpcm a52 dts cinepak])
980
VLC_ADD_PLUGINS([deinterlace invert adjust transform distort clone crop motionblur])
981
VLC_ADD_PLUGINS([float32tos16 float32tos8 float32tou16 float32tou8 a52tospdif dtstospdif fixed32tofloat32 fixed32tos16 s16tofixed32 s16tofloat32 s16tofloat32swab s8tofloat32 u8tofixed32 u8tofloat32 audio_format])
982 983
VLC_ADD_PLUGINS([trivial_resampler ugly_resampler])
VLC_ADD_PLUGINS([trivial_channel_mixer simple_channel_mixer])
984
VLC_ADD_PLUGINS([trivial_mixer spdif_mixer float32_mixer])
985
VLC_ADD_PLUGINS([id3 playlist export sgimb m3u xtag])
986
VLC_ADD_PLUGINS([i420_rgb rawvideo blend scale image logo])
987
VLC_ADD_PLUGINS([wav araw subtitle vobsub adpcm a52sys dtssys au])
Clément Stenac's avatar
Clément Stenac committed
988
VLC_ADD_PLUGINS([access_directory access_file access_udp access_tcp access_http access_mms])
989 990 991
VLC_ADD_PLUGINS([access_ftp ipv4])

if test "${SYS}" != "mingwce"; then
992
  VLC_ADD_PLUGINS([gestures rc telnet hotkeys netsync showintf time marq sap])
993 994 995 996
  VLC_ADD_PLUGINS([picture mosaic wall motiondetect])
  VLC_ADD_PLUGINS([i420_yuy2 i422_yuy2 i420_ymga])
  VLC_ADD_PLUGINS([aout_file linear_resampler bandlimited_resampler])
  VLC_ADD_PLUGINS([headphone_channel_mixer normvol equalizer])
997
fi
998

999 1000 1001 1002 1003
dnl
dnl  Switch to enable a version of VLC where most modules will be builtin
dnl
AC_ARG_ENABLE(mostly-builtin,
[  --enable-mostly-builtin most modules will be built-in (default disabled)])
1004
if test "${enable_mostly_builtin}" = "yes"; then
1005
  VLC_ADD_BUILTINS([${PLUGINS}])
1006 1007 1008
  PLUGINS=""
fi

1009 1010 1011
dnl
dnl Some plugins aren't useful on some platforms
dnl
1012
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
1013
    VLC_ADD_PLUGINS([screensaver])
1014
elif test "${SYS}" != "mingwce"; then
1015
    VLC_ADD_PLUGINS([ntservice access_smb dmo])
1016
    VLC_ADD_LDFLAGS([dmo],[-lole32])
1017
fi
1018

1019 1020 1021
dnl
dnl  Accelerated modules
dnl
1022 1023 1024 1025
MMX_MODULES="memcpymmx i420_rgb_mmx i422_yuy2_mmx i420_ymga_mmx"
#MMX_MODULES="${MMX_MODULES} idctmmx motionmmx"
MMXEXT_MODULES="memcpymmxext"
#MMXEXT_MODULES="${MMXEXT_MODULES} idctmmxext motionmmxext"
1026 1027
THREEDNOW_MODULES="memcpy3dn"
SSE_MODULES=""
1028
ALTIVEC_MODULES="memcpyaltivec i420_yuy2_altivec"
1029
#ALTIVEC_MODULES="${ALTIVEC_MODULES} idctaltivec motionaltivec"
1030

1031 1032 1033 1034 1035
if test "${enable_gprof}" != "yes"
then
  MMX_MODULES="${MMX_MODULES} i420_yuy2_mmx"
fi

1036 1037
AC_CACHE_CHECK([if \$CC groks MMX inline assembly],
    [ac_cv_mmx_inline],
1038
    [CFLAGS="${CFLAGS_save}"
Sam Hocevar's avatar
Sam Hocevar committed
1039
     AC_TRY_COMPILE(,[void *p;asm volatile("packuswb %%mm1,%%mm2"::"r"(p));],
1040
                    ac_cv_mmx_inline=yes, ac_cv_mmx_inline=no)])
1041
if test "${ac_cv_mmx_inline}" != "no"; then
Sigmund Augdal Helberg's avatar
Sigmund Augdal Helberg committed
1042
  AC_DEFINE(CAN_COMPILE_MMX, 1, Define if \$CC groks MMX inline assembly.)
1043
  ACCEL_MODULES="${ACCEL_MODULES} ${MMX_MODULES}"
1044
fi
1045

1046 1047
AC_CACHE_CHECK([if \$CC groks MMX EXT inline assembly],
    [ac_cv_mmxext_inline],
1048
    [CFLAGS="${CFLAGS_save}"
Sam Hocevar's avatar
Sam Hocevar committed
1049
     AC_TRY_COMPILE(,[void *p;asm volatile("maskmovq %%mm1,%%mm2"::"r"(p));],
1050
                    ac_cv_mmxext_inline=yes, ac_cv_mmxext_inline=no)])
1051
if test "${ac_cv_mmxext_inline}" != "no"; then
Sigmund Augdal Helberg's avatar
Sigmund Augdal Helberg committed
1052
  AC_DEFINE(CAN_COMPILE_MMXEXT, 1, Define if \$CC groks MMX EXT inline assembly.)
1053
  ACCEL_MODULES="${ACCEL_MODULES} ${MMXEXT_MODULES}"
1054
fi
1055

1056 1057
AC_CACHE_CHECK([if \$CC groks 3D Now! inline assembly],
    [ac_cv_3dnow_inline],
1058
    [CFLAGS="${CFLAGS_save}"
Sam Hocevar's avatar
Sam Hocevar committed
1059
     AC_TRY_COMPILE(,[void *p;asm volatile("pfadd %%mm1,%%mm2"::"r"(p));],
1060
                    ac_cv_3dnow_inline=yes, ac_cv_3dnow_inline=no)])
1061
if test "${ac_cv_3dnow_inline}" != "no"; then
1062
  AC_DEFINE(CAN_COMPILE_3DNOW, 1, Define if \$CC groks 3D Now! inline assembly.)
1063
  ACCEL_MODULES="${ACCEL_MODULES} ${THREEDNOW_MODULES}"
1064
fi
1065

1066 1067
AC_CACHE_CHECK([if \$CC groks SSE inline assembly],
    [ac_cv_sse_inline],
1068
    [CFLAGS="${CFLAGS_save}"
Sam Hocevar's avatar
Sam Hocevar committed
1069
     AC_TRY_COMPILE(,[void *p;asm volatile("xorps %%xmm1,%%xmm2"::"r"(p));],
1070
                    ac_cv_sse_inline=yes, ac_cv_sse_inline=no)])
1071
if test "${ac_cv_sse_inline}" != "no" -a "${SYS}" != "mingw32" -a "${SYS}" != "solaris"; then
1072
  AC_DEFINE(CAN_COMPILE_SSE, 1, Define if \$CC groks SSE inline assembly.)
1073
  ACCEL_MODULES="${ACCEL_MODULES} ${SSE_MODULES}"
1074
fi
1075

1076
if test "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"; then
Sam Hocevar's avatar
Sam Hocevar committed
1077
AC_CACHE_CHECK([if \$CC groks AltiVec inline assembly],
1078
    [ac_cv_altivec_inline],
1079
    [CFLAGS="${CFLAGS_save}"
Sam Hocevar's avatar
Sam Hocevar committed
1080
     AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1081
         ac_cv_altivec_inline=yes,
1082
         [CFLAGS="${CFLAGS_save} -Wa,-m7400"
1083
          AC_TRY_COMPILE(,[asm volatile("vperm 0,1,2,3");],
1084
            [ac_cv_altivec_inline="-Wa,-m7400"],
1085
            ac_cv_altivec_inline=no)
1086
         ])])
1087
if test "${ac_cv_altivec_inline}" != "no"; then
Sam Hocevar's avatar
Sam Hocevar committed
1088
  AC_DEFINE(CAN_COMPILE_ALTIVEC, 1, Define if \$CC groks AltiVec inline assembly.)
1089
  if test "${ac_cv_altivec_inline}" != "yes"; then
1090 1091 1092 1093 1094
    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([vlc],[${ac_cv_altivec_inline}])
1095
  fi
1096
  ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
1097
fi
1098

Sam Hocevar's avatar
Sam Hocevar committed
1099
AC_CACHE_CHECK([if \$CC groks AltiVec C extensions],
1100
    [ac_cv_c_altivec],
Sam Hocevar's avatar
Sam Hocevar committed
1101 1102 1103
    [# Darwin test
     CFLAGS="${CFLAGS_save} -faltivec"
     AC_TRY_COMPILE([],
Sam Hocevar's avatar
Sam Hocevar committed
1104
       [vec_ld(0, (unsigned char *)0);],
Sam Hocevar's avatar
Sam Hocevar committed
1105
       [ac_cv_c_altivec="-faltivec"],
1106
       [# Linux/PPC test (no flags)
1107
        CFLAGS="${CFLAGS_save} ${CFLAGS_idctaltivec} -maltivec -mabi=altivec"
Sam Hocevar's avatar
Sam Hocevar committed
1108 1109 1110 1111
        AC_TRY_COMPILE([#ifdef HAVE_ALTIVEC_H
                        #include <altivec.h>
                        #endif],
          [vec_ld(0, (unsigned char *)0);],
1112 1113
          [ac_cv_c_altivec=""
           ac_cv_c_altivec_abi="-maltivec -mabi=altivec"],
Sam Hocevar's avatar
Sam Hocevar committed
1114 1115
          [# Linux/PPC test (old GCC versions)
           CFLAGS="${CFLAGS_save} ${CFLAGS_idctaltivec} -fvec"
Sam Hocevar's avatar
Sam Hocevar committed
1116 1117 1118 1119
           AC_TRY_COMPILE([#ifdef HAVE_ALTIVEC_H
                           #include <altivec.h>
                           #endif],
             [vec_ld(0, (unsigned char *)0);],
Sam Hocevar's avatar
Sam Hocevar committed
1120 1121 1122
             [ac_cv_c_altivec="-fvec"],
             [ac_cv_c_altivec=no])
           ])
1123
        ])
1124
     CFLAGS="${CFLAGS_save}"])
1125
if test "${ac_cv_c_altivec}" != "no"; then
Sam Hocevar's avatar
Sam Hocevar committed
1126
  AC_DEFINE(CAN_COMPILE_C_ALTIVEC, 1, Define if your compiler groks C AltiVec extensions.)
1127
  VLC_ADD_CFLAGS([vlc],[${ac_cv_c_altivec}])
Sam Hocevar's avatar
Sam Hocevar committed
1128 1129
  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}])
1130
  ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
1131 1132 1133 1134
fi

AC_CACHE_CHECK([if linker needs -framework vecLib],
    [ac_cv_ld_altivec],
1135
    [LDFLAGS="${LDFLAGS_vlc} -framework vecLib"
1136
     AC_TRY_LINK([],,ac_cv_ld_altivec=yes,ac_cv_ld_altivec=no)
1137
     LDFLAGS="${LDFLAGS_save}"
1138
    ])
1139
if test "${ac_cv_ld_altivec}" != "no"; then
1140
  VLC_ADD_LDFLAGS([vlc idctaltivec motionaltivec memcpyaltivec],[-framework vecLib])
1141
fi
1142
fi # end "${SYS}" != "mingw32" -a "${SYS}" != "mingwce"
1143

1144 1145 1146
AC_ARG_WITH(,[])
AC_ARG_WITH(,[Optimization options:])

1147
dnl
1148
dnl  Special arch tuning
1149
dnl
1150
AC_ARG_WITH(tuning,
1151
[  --with-tuning=ARCH      enable special tuning for an architecture
1152
                          (default i686 on IA-32 and 750 on PPC)])
Sam Hocevar's avatar
Sam Hocevar committed
1153
if test -n "${with_tuning}"; then
1154
    if test "${target_cpu}" = "powerpc"; then
1155 1156 1157 1158
        CFLAGS_TUNING="-mtune=${with_tuning}"
    else
        CFLAGS_TUNING="-mcpu=${with_tuning}"
    fi
1159
else
1160 1161
    if test "${target_cpu}" = "i686" -o "${target_cpu}" = "i586" -o "${target_cpu}" = "i486" -o "${target_cpu}" = "i386"; then
        CFLAGS_TUNING="-mcpu=pentiumpro"
1162
    else
1163
        if test "${target_cpu}" = "powerpc"; then CFLAGS_TUNING="-mtune=750"; fi
1164 1165
    fi
fi
1166 1167

dnl
1168
dnl  x86 accelerations
1169
dnl
1170
if test "${target_cpu}" = "i686" -o "${target_cpu}" = "i586" -o "${target_cpu}" = "x86" -o "${target_cpu}" = "i386"
1171 1172
then
    ARCH="${ARCH} mmx"
1173
    VLC_ADD_BUILTINS([${ACCEL_MODULES}])
1174
fi
1175

1176 1177 1178 1179
dnl
dnl  Enable/disable optimizations
dnl
AC_ARG_ENABLE(optimizations,
1180
[  --disable-optimizations disable compiler optimizations (default enabled)])
Sam Hocevar's avatar
Sam Hocevar committed
1181
test "${enable_optimizations}" != "no" && enable_optimizations="yes"
1182

1183 1184 1185
dnl
dnl  AltiVec acceleration
dnl
1186
AC_ARG_ENABLE(altivec,
Sam Hocevar's avatar
Sam Hocevar committed
1187
[  --disable-altivec       disable AltiVec optimizations (default enabled on PPC)],
1188
[ if test "${enable_altivec}" = "yes"; then ARCH="${ARCH} altivec";
1189
    VLC_ADD_BUILTINS([${ACCEL_MODULES}]) fi ],
1190
[ if test "${target_cpu}" = "powerpc"; then ARCH="${ARCH} altivec";
1191
    VLC_ADD_BUILTINS([${ACCEL_MODULES}]) fi ])
1192 1193 1194 1195

dnl
dnl  Debugging mode
dnl
1196
AC_ARG_ENABLE(debug,
1197
[  --enable-debug          debug mode (default disabled)])
Sam Hocevar's avatar
Sam Hocevar committed
1198
test "${enable_debug}" != "yes" && enable_debug="no"
1199

1200
dnl
1201
dnl  Enable release-specific flags
1202
dnl
1203
AC_ARG_ENABLE(release,
1204
[  --enable-release        activate extra optimizations (default disabled)])
Sam Hocevar's avatar
Sam Hocevar committed
1205
test "${enable_release}" != "yes" && enable_release="no"
1206

1207 1208 1209 1210 1211
dnl
dnl Stream output
dnl
AC_ARG_ENABLE(sout,
  [  --enable-sout           Stream output modules (default enabled)])
1212
if test "${enable_sout}" != "no"
1213
then
1214
  VLC_ADD_PLUGINS([access_output_dummy access_output_udp access_output_file access_output_http])
1215
  VLC_ADD_PLUGINS([mux_ps mux_avi mux_mp4 mux_asf mux_dummy mux_wav mux_mpjpeg])
1216 1217 1218
  VLC_ADD_PLUGINS([packetizer_mpegvideo packetizer_h264])
  VLC_ADD_PLUGINS([packetizer_mpeg4video packetizer_mpeg4audio])
  VLC_ADD_PLUGINS([packetizer_copy])
1219

1220
  VLC_ADD_PLUGINS([stream_out_dummy stream_out_standard stream_out_es stream_out_rtp stream_out_description vod_rtsp])
1221
  VLC_ADD_PLUGINS([stream_out_duplicate stream_out_gather stream_out_display stream_out_transcode])
1222
#  VLC_ADD_PLUGINS([stream_out_transrate])
1223