]> git.sesse.net Git - vlc/blob - configure.in
* Altivec IDCT and motion compensation, based on Paul Mackerras's mpeg2dec
[vlc] / configure.in
1 dnl Autoconf settings for vlc and libdvdcss
2 AC_INIT(include/common.h)
3 AC_CONFIG_HEADER(include/defs.h)
4
5 AC_CANONICAL_HOST
6
7 HAVE_VLC=0
8 if test -r src/interface/main.c; then
9   HAVE_VLC=1
10   VLC_VERSION=0.2.83
11   AC_SUBST(VLC_VERSION)
12   VLC_CODENAME=Ourumov
13   AC_SUBST(VLC_CODENAME)
14 fi
15
16 HAVE_LIBDVDCSS=0
17 if test -r extras/libdvdcss/libdvdcss.c; then
18   HAVE_LIBDVDCSS=1
19   LIBDVDCSS_VERSION=0.0.3
20   AC_SUBST(LIBDVDCSS_VERSION)
21 fi
22
23 dnl Save CFLAGS and LDFLAGS
24 save_CFLAGS="${CFLAGS}"
25 save_LDFLAGS="${LDFLAGS}"
26
27 dnl Check for tools
28 AC_PROG_MAKE_SET
29 AC_PROG_CC
30 AC_PROG_CPP
31 AC_PROG_RANLIB
32
33 dnl AM_PROG_LIBTOOL
34 AC_PROG_INSTALL
35
36 dnl Check for endianness if not cross-compiling
37 if test x${cross_compiling} != xyes; then
38   AC_C_BIGENDIAN
39 fi
40
41 dnl Check for system libs needed
42 AC_CHECK_FUNCS(gettimeofday select strerror strtod strtol)
43 AC_CHECK_FUNCS(setenv putenv)
44 AC_CHECK_FUNC(connect,,[
45   AC_CHECK_LIB(socket,connect,LIB="${LIB} -lsocket")
46 ])
47 AC_CHECK_FUNC(gethostbyname,,[
48   AC_CHECK_LIB(nsl,gethostbyname,LIB="${LIB} -lnsl")
49 ])
50 AC_CHECK_FUNC(nanosleep,,[
51   AC_CHECK_LIB(rt,nanosleep,LIB="${LIB} -lrt",[
52     AC_CHECK_LIB(posix4,nanosleep,LIB="${LIB} -lposix4")
53   ])
54 ])
55 AC_CHECK_FUNCS(usleep)
56 AC_CHECK_FUNC(inet_aton,,[
57   AC_CHECK_LIB(resolv,inet_aton,LIB="${LIB} -lresolv")
58 ])
59 AC_CHECK_FUNCS(vasprintf)
60 AC_CHECK_FUNCS(swab)
61
62 AC_CHECK_FUNCS(sigrelse)
63
64 dnl Check for getopt
65 NEED_GETOPT=0
66 AC_CHECK_FUNC(getopt_long,[AC_DEFINE(HAVE_GETOPT_LONG,1,long getopt support)],
67 [ # FreeBSD has a gnugetopt library for this:
68   AC_CHECK_LIB([gnugetopt],[getopt_long],
69     [AC_DEFINE(HAVE_GETOPT_LONG,1,getopt support) LIB="${LIB} -lgnugetopt"],
70     [NEED_GETOPT=1])])
71
72 AC_FUNC_MMAP
73 AC_TYPE_SIGNAL
74 AC_CHECK_LIB(dl,dlopen,LIB="${LIB} -ldl")
75 AC_CHECK_LIB(m,pow,LIB_YUV="${LIB_YUV} -lm")
76
77 dnl Check for pthreads - borrowed from XMMS
78 THREAD_LIB=error
79 if test "x${THREAD_LIB}" = xerror; then
80   AC_CHECK_LIB(pthread,pthread_attr_init,THREAD_LIB="-lpthread")
81 fi
82 if test "x${THREAD_LIB}" = xerror; then
83   AC_CHECK_LIB(pthreads,pthread_attr_init,THREAD_LIB="-lpthreads")
84 fi
85 if test "x${THREAD_LIB}" = xerror; then
86   AC_CHECK_LIB(c_r,pthread_attr_init,THREAD_LIB="-lc_r")
87 fi
88 if test "x${THREAD_LIB}" = xerror; then
89   AC_CHECK_FUNC(pthread_attr_init)
90   THREAD_LIB=""
91 fi
92
93 dnl Check for cthreads under GNU/Hurd for instance
94 AC_CHECK_LIB(threads,cthread_fork,THREAD_LIB="-lthreads")
95
96 dnl Check for misc headers
97 AC_EGREP_HEADER(pthread_cond_t,pthread.h,[
98   AC_DEFINE(PTHREAD_COND_T_IN_PTHREAD_H, 1,
99             Define if <pthread.h> defines pthread_cond_t.)])
100 AC_EGREP_HEADER(strncasecmp,strings.h,[
101   AC_DEFINE(STRNCASECMP_IN_STRINGS_H, 1,
102             Define if <strings.h> defines strncasecmp.)])
103
104 dnl Check for headers
105 AC_CHECK_HEADERS(stddef.h getopt.h strings.h)
106 AC_CHECK_HEADERS(sys/sockio.h fcntl.h sys/time.h)
107 AC_CHECK_HEADERS(sys/soundcard.h machine/soundcard.h)
108 AC_CHECK_HEADERS(dlfcn.h image.h)
109 AC_CHECK_HEADERS(arpa/inet.h net/if.h netinet/in.h sys/socket.h)
110 AC_CHECK_HEADERS(machine/param.h)
111
112 dnl Check for threads library
113 AC_CHECK_HEADERS(cthreads.h pthread.h kernel/scheduler.h kernel/OS.h)
114
115 dnl Check for ntohl, etc.
116 CFLAGS="${save_CFLAGS} -Wall -Werror"
117 AC_MSG_CHECKING([for ntohl in sys/param.h])
118 AC_TRY_COMPILE([#include <sys/param.h>
119 void foo() { int meuh; ntohl(meuh); }],,
120  AC_DEFINE(NTOHL_IN_SYS_PARAM_H, 1, Define if <sys/param.h> defines ntohl.)
121  AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
122
123 dnl Check for inline function size limit
124 CFLAGS="${save_CFLAGS} -finline-limit-20000"
125 AC_MSG_CHECKING([if \$CC accepts -finline-limit])
126 AC_TRY_COMPILE([],,
127  save_CFLAGS="${save_CFLAGS} -finline-limit-20000"; AC_MSG_RESULT(yes),
128  AC_MSG_RESULT(no))
129
130 dnl Check for Darwin plugin linking flags
131 CFLAGS="${save_CFLAGS} -bundle -undefined suppress"
132 AC_MSG_CHECKING([if \$CC accepts -bundle -undefined suppress])
133 AC_TRY_COMPILE([],,
134  PLCFLAGS="${PLCFLAGS} -bundle -undefined suppress"; AC_MSG_RESULT(yes),
135  AC_MSG_RESULT(no))
136
137 dnl Check for standard plugin linking flags
138 CFLAGS="${save_CFLAGS} -shared"
139 AC_MSG_CHECKING([if \$CC accepts -shared])
140 AC_TRY_COMPILE([],,
141  PLCFLAGS="${PLCFLAGS} -shared"; AC_MSG_RESULT(yes),
142  AC_MSG_RESULT(no))
143
144 dnl Check for standard soname setting
145 if test x"${SOFLAGS}" = x; then
146   try_SOFLAGS="-Wl,-soname -Wl,"
147   LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
148   AC_MSG_CHECKING([if linker accepts ${try_SOFLAGS}foo.so.0])
149   AC_TRY_LINK([],,
150    SOFLAGS="${try_SOFLAGS}"; AC_MSG_RESULT(yes),
151    AC_MSG_RESULT(no))
152 fi
153
154 dnl Check for SunOS soname setting
155 if test x"${SOFLAGS}" = x; then
156   try_SOFLAGS="-Wl,-h -Wl,"
157   LDFLAGS="${save_LDFLAGS} ${try_SOFLAGS}foo.so.0"
158   AC_MSG_CHECKING([if linker accepts ${try_SOFLAGS}foo.so.0])
159   AC_TRY_LINK([],,
160    SOFLAGS="${try_SOFLAGS}"; AC_MSG_RESULT(yes),
161    AC_MSG_RESULT(no))
162 fi
163
164 dnl End of the bizarre compilation tests
165 CFLAGS="${save_CFLAGS}"
166 LDFLAGS="${save_LDFLAGS}"
167
168 dnl Check for boolean_t
169 AC_MSG_CHECKING([for boolean_t in sys/types.h])
170 AC_TRY_COMPILE([#include <sys/types.h>
171 void quux() { boolean_t foo; }],,
172  AC_DEFINE(BOOLEAN_T_IN_SYS_TYPES_H, 1, Define if <sys/types.h> defines boolean_t.)
173  AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
174 AC_MSG_CHECKING([for boolean_t in pthread.h])
175 AC_TRY_COMPILE([#include <pthread.h>
176 void quux() { boolean_t foo; }],,
177  AC_DEFINE(BOOLEAN_T_IN_PTHREAD_H, 1, Define if <pthread.h> defines boolean_t.)
178  AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
179 AC_MSG_CHECKING([for boolean_t in cthreads.h])
180 AC_TRY_COMPILE([#include <cthreads.h>
181 void quux() { boolean_t foo; }],,
182  AC_DEFINE(BOOLEAN_T_IN_CTHREADS_H, 1, Define if <cthreads.h> defines boolean_t.)
183  AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
184
185 dnl Checks for typedefs, structures, and compiler characteristics.
186 AC_C_CONST
187 AC_TYPE_SIZE_T
188 AC_HEADER_TIME
189
190 dnl Checks for __attribute__(aligned()) directive
191 AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
192     [ac_cv_c_attribute_aligned],
193     [ac_cv_c_attribute_aligned=0
194     for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
195         AC_TRY_COMPILE([],
196         [static char c __attribute__ ((aligned($ac_cv_c_attr_align_try))) = 0; return c;],
197         [ac_cv_c_attribute_aligned=$ac_cv_c_attr_align_try])
198     done])
199 if test x"$ac_cv_c_attribute_aligned" != x"0"; then
200     AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
201         [$ac_cv_c_attribute_aligned],[Maximum supported data alignment])
202 fi
203
204
205
206 ARCH=${host_cpu}
207
208 dnl
209 dnl  default modules
210 dnl
211 BUILTINS="${BUILTINS} es ps ts yuv idct idctclassic motion imdct downmix"
212 PLUGINS="${PLUGINS}"
213
214 dnl
215 dnl  Accelerated modules
216 dnl
217 MMX_MODULES="yuvmmx idctmmx motionmmx"
218 MMXEXT_MODULES="idctmmxext motionmmxext"
219 THREEDNOW_MODULES="imdct3dn downmix3dn"
220 SSE_MODULES="imdctsse downmixsse"
221
222 AC_MSG_CHECKING([if \$CC groks MMX inline assembly])
223 AC_TRY_COMPILE([void quux(){void *p;asm("packuswb %%mm1,%%mm2"::"r"(p));}],,
224   ACCEL_MODULES="${ACCEL_MODULES} ${MMX_MODULES}"
225   AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
226
227 AC_MSG_CHECKING([if \$CC groks MMX EXT inline assembly])
228 AC_TRY_COMPILE([void quux(){void *p;asm("maskmovq %%mm1,%%mm2"::"r"(p));}],,
229   ACCEL_MODULES="${ACCEL_MODULES} ${MMXEXT_MODULES}"
230   AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
231
232 AC_MSG_CHECKING([if \$CC groks 3D Now! inline assembly])
233 AC_TRY_COMPILE([void quux(){void *p;asm("pfadd %%mm1,%%mm2"::"r"(p));}],,
234   ACCEL_MODULES="${ACCEL_MODULES} ${THREEDNOW_MODULES}"
235   AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
236
237 AC_MSG_CHECKING([if \$CC groks SSE inline assembly])
238 AC_TRY_COMPILE([void quux(){void *p;asm("xorps %%xmm1,%%xmm2"::"r"(p));}],,
239   ACCEL_MODULES="${ACCEL_MODULES} ${SSE_MODULES}"
240   AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
241
242 AC_MSG_CHECKING([if \$CC groks Altivec inline assembly])
243 AC_TRY_COMPILE([void quux(){void *p;asm("mtspr 256,%0"::"r"(-1));}],,
244   ACCEL_MODULES="${ACCEL_MODULES} ${ALTIVEC_MODULES}"
245   AC_MSG_RESULT(yes), AC_MSG_RESULT(no))
246
247 dnl
248 dnl  libdvdcss: check for DVD ioctls
249 dnl
250
251 dnl  default is no
252 CAN_BUILD_LIBDVDCSS=0
253
254 dnl  for windoze
255 AC_CHECK_HEADERS(winioctl.h,[
256   CAN_BUILD_LIBDVDCSS="${HAVE_LIBDVDCSS}"
257 ])
258
259 dnl  for Un*x and BeOS
260 AC_CHECK_HEADERS(sys/ioctl.h,[
261   CAN_BUILD_LIBDVDCSS="${HAVE_LIBDVDCSS}"
262   AC_CHECK_HEADERS(sys/cdio.h sys/dvdio.h linux/cdrom.h dvd.h)
263   BSD_DVD_STRUCT=0
264   LINUX_DVD_STRUCT=0
265   dnl
266   dnl Old FreeBSD: sys/cdio.h
267   dnl
268   AC_EGREP_HEADER(dvd_struct,sys/dvdio.h,[
269     AC_DEFINE(DVD_STRUCT_IN_SYS_DVDIO_H, 1,
270               Define if <sys/dvdio.h> defines dvd_struct.)
271     BSD_DVD_STRUCT=1
272   ])
273   dnl
274   dnl Newer FreeBSD: sys/dvdio.h
275   dnl
276   AC_EGREP_HEADER(dvd_struct,sys/cdio.h,[
277     AC_DEFINE(DVD_STRUCT_IN_SYS_CDIO_H, 1,
278               Define if <sys/cdio.h> defines dvd_struct.)
279     BSD_DVD_STRUCT=1
280   ])
281   dnl
282   dnl Linux: linux/cdrom.h
283   dnl
284   AC_EGREP_HEADER(dvd_struct,linux/cdrom.h,[
285     AC_DEFINE(DVD_STRUCT_IN_LINUX_CDROM_H, 1,
286               Define if <linux/cdrom.h> defines DVD_STRUCT.)
287     LINUX_DVD_STRUCT=1
288   ])
289   dnl
290   dnl BSDI: dvd.h
291   dnl
292   NEED_BSDI_LIBDVD=0
293   AC_EGREP_HEADER(dvd_struct,dvd.h,[
294     AC_DEFINE(DVD_STRUCT_IN_DVD_H, 1,
295               Define if <dvd.h> defines DVD_STRUCT.)
296     LIB_LIBDVDCSS="${LIB_LIBDVDCSS} -ldvd"
297     LINUX_DVD_STRUCT=1
298   ],[
299     dnl
300     dnl BSDI: /sys/dev/scsi/scsi_ioctl.h, using our own libdvd
301     dnl
302     AC_CHECK_HEADERS(/sys/dev/scsi/scsi_ioctl.h,[
303       NEED_BSDI_LIBDVD=1
304       AC_DEFINE(DVD_STRUCT_IN_BSDI_DVDIOCTL_DVD_H, 1,
305                 Define if <extras/BSDI_dvdioctl/dvd.h> defines DVD_STRUCT.)
306       OBJ_LIBDVDCSS="${OBJ_LIBDVDCSS} bsdi_dvdioctl.o"
307       LINUX_DVD_STRUCT=1
308     ])
309   ])
310   dnl
311   dnl Solaris: sys/scsi/scsi_types.h, sys/scsi/impl/uscsi.h
312   dnl
313   AC_CHECK_HEADER(sys/scsi/scsi_types.h,[
314     AC_CHECK_HEADER(sys/scsi/impl/uscsi.h,[
315       AC_DEFINE(SOLARIS_USCSI, 1, Have userspace SCSI headers.)
316     ])
317   ])
318   dnl
319   dnl Final tests to check what was detected
320   dnl
321   if test x$LINUX_DVD_STRUCT = x1; then
322     AC_DEFINE(HAVE_LINUX_DVD_STRUCT, 1,
323               Define if Linux-like dvd_struct is defined.)
324   else
325     if test x$BSD_DVD_STRUCT = x1; then
326       AC_DEFINE(HAVE_BSD_DVD_STRUCT, 1,
327                 Define if BSD-like dvd_struct is defined.)
328     fi
329   fi
330 ])
331
332
333 dnl
334 dnl  Check the operating system
335 dnl
336 case ${host_os} in
337   bsdi*)
338     SYS=bsdi
339     ;;
340   darwin*)
341     SYS=darwin
342     ;;
343   *)
344     SYS=${host_os}
345     ;;
346 esac
347
348 dnl
349 dnl  PentiumPro acceleration
350 dnl
351 AC_ARG_ENABLE(ppro,
352   [  --disable-ppro          Disable PentiumPro optimizations (default enabled for x86)],
353 [ if test x$enableval = xyes; then ARCH="${ARCH} ppro"; fi ],
354 [ if test x${host_cpu} = xi686; then ARCH="${ARCH} ppro"; fi ])
355
356 dnl
357 dnl  MMX acceleration
358 dnl
359 AC_ARG_ENABLE(mmx,
360 [  --disable-mmx           Disable MMX optimizations (default enabled for x86)],
361 [ if test x$enableval = xyes; then ARCH="${ARCH} mmx";
362     BUILTINS="${BUILTINS} ${ACCEL_MODULES}"; fi ],
363 [ if test x${host_cpu} = xi686 -o x${host_cpu} = xi586 -o x${host_cpu} = xx86 -o x${host_cpu} = xi386; then ARCH="${ARCH} mmx";
364     BUILTINS="${BUILTINS} ${ACCEL_MODULES}"; fi ])
365
366 dnl
367 dnl  AltiVec acceleration
368 dnl
369 AC_ARG_ENABLE(altivec,
370 [  --disable-altivec       Disable altivec optimizations (default enabled on PPC)],
371 [ if test x$enableval = xyes; then ARCH="${ARCH} altivec";
372     BUILTINS="${BUILTINS} ${ACCEL_MODULES}"; fi ],
373 [ if test x${host_cpu} = xpowerpc; then ARCH="${ARCH} altivec";
374     BUILTINS="${BUILTINS} ${ACCEL_MODULES}"; fi ])
375
376 dnl
377 dnl  Debugging mode
378 dnl
379 DEBUG=0
380 AC_ARG_ENABLE(debug,
381 [  --enable-debug          Enable debug mode (default disabled)],
382 [ if test x$enableval = xyes; then DEBUG=1; fi ])
383
384 dnl
385 dnl  Enable/disable statistics
386 dnl
387 STATS=0
388 AC_ARG_ENABLE(stats,
389 [  --enable-stats          Enable printing of statistics (default disabled)],
390 [ if test x$enableval = xyes; then STATS=1; fi ])
391
392 dnl
393 dnl  Trace mode
394 dnl
395 TRACE=0
396 AC_ARG_ENABLE(trace,
397 [  --enable-trace          Enable trace mode (default disabled)],
398 [ if test x$enableval = xyes; then TRACE=1; fi ])
399
400 dnl
401 dnl  Profiling
402 dnl
403 GPROF=0
404 AC_ARG_ENABLE(gprof,
405 [  --enable-gprof          Enable gprof profiling (default disabled)],
406 [ if test x$enableval = xyes; then GPROF=1; fi ])
407
408 CPROF=0
409 AC_ARG_ENABLE(cprof,
410 [  --enable-cprof          Enable cprof profiling (default disabled)],
411 [ if test x$enableval = xyes;
412   then
413     LIB="${LIB} -lcprof"
414     CPROF=1
415   fi
416 ])
417
418 dnl
419 dnl  Enable/disable optimizations
420 dnl
421 AC_ARG_ENABLE(optimizations,
422 [  --disable-optimizations Disable compiler optimizations (default enabled)],
423 [ if test x$enableval = xno; then OPTIMS=0; fi ],
424 [ OPTIMS=1 ])
425
426 dnl
427 dnl  GNU portable threads
428 dnl
429 AC_ARG_ENABLE(pth,
430   [  --enable-pth            Enable GNU Pth support (default disabled)],
431   [ if test x$enableval = xyes; then
432     AC_CHECK_LIB(pth,pth_init)
433     AC_EGREP_HEADER(pth_init,pth.h,[
434       AC_DEFINE(PTH_INIT_IN_PTH_H, 1,
435                 Define if <pth.h> defines pth_init)
436     THREAD_LIB="-lpth"
437     fi])
438 ])
439
440 LIB="${LIB} ${THREAD_LIB}"
441
442 dnl
443 dnl  DVD module: check for installed libdvdcss or local libdvdcss
444 dnl
445 NEED_LIBDVDCSS=0
446 STATIC_LIBDVDCSS=0
447 DUMMY_LIBDVDCSS=0
448 AC_ARG_WITH(dvdcss,
449   [  --with-dvdcss[=name]    way to use libdvdcss, either 'yes' or 'no', or 'local-static', 'local-shared', or a path to another libdvdcss such as '/usr/local' (default 'local-static')],
450   [ case "x${withval}" in
451     xlocal-static|xyes)
452       # local libdvdcss, statically linked
453       if test x${CAN_BUILD_LIBDVDCSS} = x1
454       then
455         NEED_LIBDVDCSS=1
456         STATIC_LIBDVDCSS=1
457         BUILTINS="${BUILTINS} dvd"
458         CFLAGS_DVD="${CFLAGS_DVD} -I../../extras/libdvdcss"
459         LIB_DVD="${LIB_DVD} lib/libdvdcss.a ${LIB_LIBDVDCSS}"
460         LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} ../../lib/libdvdcss.a ${LIB_LIBDVDCSS}"
461       fi
462     ;;
463     xlocal-shared)
464       # local libdvdcss, dynamically linked
465       if test x${CAN_BUILD_LIBDVDCSS} = x1
466       then
467         NEED_LIBDVDCSS=1
468         BUILTINS="${BUILTINS} dvd"
469         CFLAGS_DVD="${CFLAGS_DVD} -I../../extras/libdvdcss"
470         LIB_DVD="${LIB_DVD} -Llib -ldvdcss"
471         LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} -L../../lib -ldvdcss"
472       fi
473     ;;
474     xno)
475       # don't use libdvdcss at all, build a DVD module that can dlopen() it
476       DUMMY_LIBDVDCSS=1
477       BUILTINS="${BUILTINS} dvd"
478       OBJ_DVD="${OBJ_DVD} dummy_dvdcss.o"
479       CFLAGS_DVD="${CFLAGS_DVD} -DGOD_DAMN_DMCA"
480       CFLAGS_DVD="${CFLAGS_DVD} -DLIBDVDCSS_VERSION=\"${LIBDVDCSS_VERSION}\""
481       LIB_DVD="${LIB_DVD} -ldl"
482       LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} -ldl"
483     ;;
484     *)
485       # existing libdvdcss
486       BUILTINS="${BUILTINS} dvd"
487       if test "x$withval" != "xyes"
488       then
489         LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} -L"$withval"/lib"
490         CFLAGS_DVD="${CFLAGS_DVD} -I"$withval"/include"
491       fi
492       LIB_DVD="${LIB_DVD} -ldvdcss"
493       LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} -ldvdcss"
494     esac ],
495   # user didn't decide, we choose to use local libdvdcss and link statically
496   # if libdvdcss is in the archive, or to use the dummy replacement otherwise.
497   [ if test x${CAN_BUILD_LIBDVDCSS} = x1
498     then
499       NEED_LIBDVDCSS=1
500       STATIC_LIBDVDCSS=1
501       BUILTINS="${BUILTINS} dvd"
502       CFLAGS_DVD="${CFLAGS_DVD} -I../../extras/libdvdcss"
503       LIB_DVD="${LIB_DVD} lib/libdvdcss.a ${LIB_LIBDVDCSS}"
504       LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} ../../lib/libdvdcss.a ${LIB_LIBDVDCSS}"
505     else
506       # XXX: no check for libdl is done, don't try this at home !
507       DUMMY_LIBDVDCSS=1
508       BUILTINS="${BUILTINS} dvd"
509       OBJ_DVD="${OBJ_DVD} dummy_dvdcss.o"
510       CFLAGS_DVD="${CFLAGS_DVD} -DGOD_DAMN_DMCA"
511       LIB_DVD="${LIB_DVD} -ldl"
512       LIB_DVD_PLUGIN="${LIB_DVD_PLUGIN} -ldl"
513     fi ])
514
515 dnl
516 dnl  dummy plugin
517 dnl
518 AC_ARG_ENABLE(dummy,
519   [  --disable-dummy         dummy module (default enabled)])
520
521 if test x$enable_dummy != xno
522 then
523   BUILTINS="${BUILTINS} dummy"
524 fi
525
526 dnl
527 dnl  null plugin
528 dnl
529 AC_ARG_ENABLE(null,
530   [  --disable-null          Null module (default enabled)])
531
532 if test x$enable_null != xno
533 then
534   BUILTINS="${BUILTINS} null"
535 fi
536
537 dnl
538 dnl  rc plugin
539 dnl
540 AC_ARG_ENABLE(rc,
541   [  --disable-rc            rc module (default enabled)])
542
543 if test x$enable_rc != xno
544 then
545   BUILTINS="${BUILTINS} rc"
546 fi
547
548 dnl special case for BeOS
549 if test x$SYS = xbeos
550 then
551     BUILTINS="${BUILTINS} beos"
552     LIB_BEOS="-lbe -lgame -lroot -ltracker"
553     PLCFLAGS="${PLCFLAGS} -nostart"
554
555 dnl default case
556 else
557
558 dnl
559 dnl  OSS /dev/dsp module
560 dnl
561 AC_ARG_ENABLE(dsp,
562   [  --disable-dsp           Linux /dev/dsp support (default enabled)])
563
564 if test x$enable_dsp != xno
565 then
566   if test -c /dev/dsp
567   then
568     PLUGINS="${PLUGINS} dsp"
569   fi
570 fi
571
572 dnl
573 dnl  Esound module
574 dnl
575 AC_ARG_ENABLE(esd,
576   [  --enable-esd            Esound library support (default disabled)],
577   [if test x$enable_esd = xyes
578    then
579      AC_PATH_PROG(ESD_CONFIG, esd-config, no)
580      if test x${ESD_CONFIG} != xno
581      then
582        PLUGINS="${PLUGINS} esd"
583        LIB_ESD="`${ESD_CONFIG} --libs`"
584      fi
585    fi])
586
587 dnl
588 dnl  Darwin module
589 dnl
590 AC_ARG_ENABLE(darwin,
591   [  --enable-darwin         Darwin sound support (default disabled)],
592   [if test x$enable_darwin = xyes; then
593      PLUGINS="${PLUGINS} darwin"
594      LIB_DARWIN="-framework CoreAudio"
595    fi])
596
597 dnl
598 dnl  MacOS X module
599 dnl
600 AC_ARG_ENABLE(macosx,
601   [  --enable-macosx         Mac OS X interface support (default enabled in Mac OS X)],
602   [if test x$enable_macosx = xyes
603    then
604      BUILTINS="${BUILTINS} macosx"
605      LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL"
606      LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
607      LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
608          LIB_ALTIVEC="-framework vecLib"
609    fi],
610   [AC_CHECK_HEADERS(Carbon/Carbon.h,
611      BUILTINS="${BUILTINS} macosx"
612      LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL"
613      LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
614      LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
615          LIB_ALTIVEC="-framework vecLib"
616    )])
617
618 dnl
619 dnl  QNX RTOS module
620 dnl
621 AC_ARG_ENABLE(qnx,
622   [  --disable-qnx           QNX RTOS support (default enabled in QNX RTOS)])
623     if test x$enable_qnx != xno
624     then
625       AC_CHECK_HEADERS(Ph.h, [
626         PLUGINS="${PLUGINS} qnx"
627         LIB_QNX="-lasound -lph"
628       ])
629     fi
630
631 dnl
632 dnl  Linux framebuffer module
633 dnl
634 AC_ARG_ENABLE(fb,
635   [  --enable-fb             Linux framebuffer support (default disabled)],
636   [ if test x$enable_fb = xyes
637     then
638       PLUGINS="${PLUGINS} fb"
639     fi ])
640
641 dnl
642 dnl  GGI module
643 dnl
644 AC_ARG_WITH(ggi,
645   [  --with-ggi[=name]       GGI support (default disabled)],
646   [ if test "x$withval" != "xno"
647     then
648       PLUGINS="${PLUGINS} ggi"
649       if test "x$withval" != "xyes"
650       then
651         LIB_GGI="-l"$withval
652       else
653         LIB_GGI="-lggi"
654       fi
655     fi ])
656
657 dnl
658 dnl  SDL module
659 dnl
660 AC_ARG_ENABLE(sdl,
661   [  --disable-sdl           SDL support (default enabled)])
662 if test "x$enable_sdl" != "xno"
663 then
664   SDL_PATH=$PATH
665   AC_ARG_WITH(sdl-config-path,
666     [  --with-sdl-config-path=path sdl-config path (default search in \$PATH)],
667     [ if test "x$withval" != "xno"
668       then
669         SDL_PATH=$withval:$PATH
670       fi ])
671   AC_PATH_PROG(SDL12_CONFIG, sdl12-config, no, $SDL_PATH)
672   SDL_CONFIG=${SDL12_CONFIG}
673   SDL_HEADER="SDL12/SDL.h"
674   if test x${SDL_CONFIG} = xno
675   then
676     AC_PATH_PROG(SDL11_CONFIG, sdl11-config, no, $SDL_PATH)
677     SDL_CONFIG=${SDL11_CONFIG}
678     SDL_HEADER="SDL11/SDL.h"
679   fi
680   if test x${SDL_CONFIG} = xno
681   then
682     AC_PATH_PROG(SDL_CONFIG, sdl-config, no, $SDL_PATH)
683     SDL_HEADER="SDL/SDL.h"
684   fi
685   if test x${SDL_CONFIG} != xno
686   then
687     PLUGINS="${PLUGINS} sdl"
688     CFLAGS_SDL="`${SDL_CONFIG} --cflags`"
689     LIB_SDL="`${SDL_CONFIG} --libs | sed 's,-rdynamic,,'`"
690     save_CPPFLAGS=$CPPFLAGS
691     CPPFLAGS="$CPPFLAGS $CFLAGS_SDL"
692     AC_CHECK_HEADERS(${SDL_HEADER}, AC_DEFINE_UNQUOTED(SDL_INCLUDE_FILE,
693       <${SDL_HEADER}>, Indicate whether we should use SDL/SDL.h or SDL11/SDL.h),
694       [ echo "The development package for SDL is not installed. Please install it"
695         echo "and try again. Alternatively you can also configure with --disable-sdl."
696         exit 1 ])
697     CPPFLAGS=$save_CPPFLAGS
698     if expr 1.1.5 \> `$SDL_CONFIG --version` >/dev/null
699     then
700       echo "You need SDL version 1.1.5 or later. Install it and try again."
701       echo "Alternatively, you can also configure with --disable-sdl."
702       exit 1
703     fi
704   elif test "x$enable_sdl" =  "xyes"
705   then
706     echo "I couldn't find the SDL package. You can download libSDL from"
707     echo "http://www.libsdl.org/, or configure with --disable-sdl. Have a"
708     echo "nice day."
709     exit 1
710   fi
711 fi
712
713 dnl
714 dnl  Windows DirectX module
715 dnl
716 AC_ARG_WITH(directx,
717   [  --with-directx[=name]   Windows DirectX support (default enabled)],
718   [ if test "x$withval" != "xno"
719     then
720       PLUGINS="${PLUGINS} directx"
721       if test "x$withval" != "xyes"
722       then
723         LIB_DIRECTX="${LIB_DIRECTX} -L"$withval"/lib -lgdi32 -ldxguid"
724         INCLUDE="${INCLUDE} -I"$withval"/include"
725       else
726         AC_CHECK_HEADERS(directx.h, , [echo "Cannot find DirectX headers !"; exit])
727         LIB_DIRECTX="${LIB_DIRECTX} -L/usr/lib -lgdi32 -ldxguid"
728       fi
729     fi ])
730     if test "x$withval" = "x"
731     then
732       AC_CHECK_HEADERS(directx.h,
733       [PLUGINS="${PLUGINS} directx"
734        LIB_DIRECTX="${LIB_DIRECTX} -L/usr/lib -lgdi32 -ldxguid"])
735     fi
736
737 dnl
738 dnl  Glide module
739 dnl
740 AC_ARG_WITH(glide,
741   [  --with-glide[=name]     Glide (3dfx) support (default disabled)],
742   [ if test "x$withval" != "xno"
743     then
744       PLUGINS="${PLUGINS} glide"
745       if test "x$withval" != "xyes"
746       then
747         LIB_GLIDE="-l"$withval" -lm"
748       else
749         LIB_GLIDE="-lglide2x -lm"
750       fi
751     fi ])
752
753 dnl
754 dnl  ncurses module
755 dnl
756 AC_ARG_ENABLE(ncurses,
757   [  --enable-ncurses        ncurses interface support (default disabled)],
758   [if test x$enable_ncurses = xyes; then
759      PLUGINS="${PLUGINS} ncurses"
760      LIB_NCURSES="-lncurses"
761    fi])
762
763 dnl
764 dnl  Qt module
765 dnl
766 AC_ARG_ENABLE(qt,
767   [  --enable-qt             Qt interface support (default disabled)],
768   [if test x$enable_qt = xyes; then
769      PLUGINS="${PLUGINS} qt"
770      ALIASES="${ALIASES} qvlc"
771      LIB_QT="-lqt -L${QTDIR}/lib"
772      if test -x ${QTDIR}/bin/moc
773      then
774        MOC=${QTDIR}/bin/moc
775      else
776        MOC=moc
777      fi
778    fi])
779
780 dnl 
781 dnl  KDE module
782 dnl
783 AC_ARG_ENABLE(kde,
784   [  --enable-kde            KDE interface support (default disabled)],
785   [if test x$enable_kde = xyes; then
786      PLUGINS="${PLUGINS} kde"
787      ALIASES="${ALIASES} kvlc"
788      LIB_KDE="-L${KDEDIR}/lib -lkfile"
789      if test -x ${QTDIR}/bin/moc
790      then
791        MOC=${QTDIR}/bin/moc
792      else
793        MOC=moc
794      fi
795    fi])
796
797 dnl
798 dnl  Gnome module
799 dnl
800 AC_ARG_ENABLE(gnome,
801   [  --enable-gnome          Gnome interface support (default disabled)],
802   [if test x$enable_gnome = xyes; then
803      PLUGINS="${PLUGINS} gnome"
804      ALIASES="${ALIASES} gnome-vlc"
805      LIB_GNOME="`gnome-config --libs gnomeui | sed 's,-rdynamic,,'`"
806    fi])
807
808 dnl
809 dnl  Gtk+ module
810 dnl
811 AC_ARG_ENABLE(gtk,
812   [  --disable-gtk           Gtk+ support (default enabled)])
813 if test x$enable_gtk != xno
814 then
815   # look for gtk-config
816   AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
817   if test -x ${GTK_CONFIG}
818   then
819     CFLAGS_GTK="`${GTK_CONFIG} --cflags gtk`"
820     LIB_GTK="`${GTK_CONFIG} --libs gtk | sed 's,-rdynamic,,'`"
821   fi
822   # now look for the gtk.h header
823   saved_CPPFLAGS=$CPPFLAGS
824   CPPFLAGS="$CPPFLAGS $CFLAGS_GTK"
825   AC_CHECK_HEADERS(gtk/gtk.h, [
826     PLUGINS="${PLUGINS} gtk"
827     ALIASES="${ALIASES} gvlc"
828   ])
829   CPPFLAGS=$saved_CPPFLAGS
830 fi
831
832 dnl
833 dnl  X11 module
834 dnl
835 AC_ARG_ENABLE(x11,
836   [  --disable-x11           X11 support (default enabled)])
837 if test x$enable_x11 != xno; then
838   if test x$x_includes = xNONE; then
839     x_includes=/usr/X11R6/include
840   fi
841   if test x$x_libraries = xNONE; then
842     x_libraries=/usr/X11R6/lib
843   fi
844   saved_CPPFLAGS=$CPPFLAGS
845   CPPFLAGS="$CPPFLAGS -I$x_includes"
846   AC_CHECK_HEADERS(X11/Xlib.h, [
847     PLUGINS="${PLUGINS} x11"
848     LIB_X11="-L$x_libraries -lX11 -lXext"
849     CFLAGS_X11="-I$x_includes"
850   ]
851   CPPFLAGS=$saved_CPPFLAGS)
852 fi
853
854 dnl
855 dnl  XVideo module
856 dnl
857 AC_ARG_ENABLE(xvideo,
858   [  --disable-xvideo        XVideo support (default enabled)])
859 if test x$enable_xvideo != xno; then
860   if test x$x_includes = xNONE; then
861     x_includes=/usr/X11R6/include
862   fi
863   if test x$x_libraries = xNONE; then
864     x_libraries=/usr/X11R6/lib
865   fi
866   saved_CPPFLAGS=$CPPFLAGS
867   CPPFLAGS="$CPPFLAGS -I$x_includes"
868   AC_CHECK_HEADERS(X11/extensions/Xv.h, [
869     PLUGINS="${PLUGINS} xvideo"
870     LIB_XVIDEO="-L$x_libraries -lX11 -lXext -lXv"
871     CFLAGS_X11="-I$x_includes"
872   ]
873   CPPFLAGS=$saved_CPPFLAGS)
874 fi
875
876 dnl
877 dnl  ALSA module
878 dnl
879 AC_ARG_ENABLE(alsa,
880   [  --enable-alsa           Alsa sound drivers support (Only for linux) (default disabled)],
881   [if test x$enable_alsa = xyes
882    then
883      AC_CHECK_HEADER(sys/asoundlib.h, AC_CHECK_LIB(asound, main, have_alsa="true", have_alsa="false"),have_alsa="false")
884      if test x$have_alsa = xtrue
885      then
886        PLUGINS="${PLUGINS} alsa"
887        LIB_ALSA="-lasound"
888      fi
889    fi])
890
891 dnl  end of non-BeOS stuff
892 fi
893
894 dnl 
895 dnl  Configuration is finished
896 dnl
897 AC_SUBST(SYS)
898 AC_SUBST(ARCH)
899 AC_SUBST(PLUGINS)
900 AC_SUBST(BUILTINS)
901 AC_SUBST(ALIASES)
902 AC_SUBST(DEFINE)
903 AC_SUBST(INCLUDE)
904 AC_SUBST(DEBUG)
905 AC_SUBST(STATS)
906 AC_SUBST(ASM)
907 AC_SUBST(TRACE)
908 AC_SUBST(CPROF)
909 AC_SUBST(GPROF)
910 AC_SUBST(OPTIMS)
911 AC_SUBST(NEED_GETOPT)
912 AC_SUBST(MOC)
913 AC_SUBST(WINDRES)
914
915 AC_SUBST(LCFLAGS)
916 AC_SUBST(PLCFLAGS)
917 AC_SUBST(SOFLAGS)
918
919 AC_SUBST(LIB)
920 AC_SUBST(LIB_ALSA)
921 AC_SUBST(LIB_BEOS)
922 AC_SUBST(LIB_DARWIN)
923 AC_SUBST(LIB_DVD)
924 AC_SUBST(LIB_DVD_PLUGIN)
925 AC_SUBST(LIB_ESD)
926 AC_SUBST(LIB_GGI)
927 AC_SUBST(LIB_GLIDE)
928 AC_SUBST(LIB_GNOME)
929 AC_SUBST(LIB_GTK)
930 AC_SUBST(LIB_ALTIVEC)
931 AC_SUBST(LIB_LIBDVDCSS)
932 AC_SUBST(LIB_KDE)
933 AC_SUBST(LIB_MACOSX)
934 AC_SUBST(LIB_QNX)
935 AC_SUBST(LIB_NCURSES)
936 AC_SUBST(LIB_QT)
937 AC_SUBST(LIB_TS)
938 AC_SUBST(LIB_SDL)
939 AC_SUBST(LIB_DIRECTX)
940 AC_SUBST(LIB_X11)
941 AC_SUBST(LIB_XVIDEO)
942 AC_SUBST(LIB_YUV)
943
944 AC_SUBST(CFLAGS_VLC)
945 AC_SUBST(CFLAGS_DVD)
946 AC_SUBST(CFLAGS_LIBDVDCSS)
947 AC_SUBST(CFLAGS_GTK)
948 AC_SUBST(CFLAGS_SDL)
949 AC_SUBST(CFLAGS_X11)
950
951 AC_SUBST(OBJ_DVD)
952 AC_SUBST(OBJ_LIBDVDCSS)
953
954 AC_SUBST(NEED_LIBDVDCSS)
955
956 AC_OUTPUT([Makefile.opts include/config.h])
957
958 echo "
959 global configuration
960 --------------------
961 system                : ${SYS}
962 architecture          : ${ARCH}
963 optimizations         : ${OPTIMS}"
964
965 if test x${HAVE_VLC} = x1
966 then
967   echo "
968 vlc configuration
969 -----------------
970 vlc version           : ${VLC_VERSION}
971 debug mode            : ${DEBUG}
972 statistics            : ${STATS}
973 trace mode            : ${TRACE}
974 cprof/gprof support   : ${CPROF}/${GPROF}
975 need builtin getopt   : ${NEED_GETOPT}
976 built-in modules      :${BUILTINS}
977 plugin modules        :${PLUGINS}
978 vlc aliases           :${ALIASES}"
979 fi
980
981 echo "
982 libdvdcss configuration
983 -----------------------
984 can be built          : ${CAN_BUILD_LIBDVDCSS}
985 will be built         : ${NEED_LIBDVDCSS}"
986 if test x${NEED_LIBDVDCSS} = x1
987 then
988   echo "need BSDI libdvd      : ${NEED_BSDI_LIBDVD}"
989   echo "link statically       : ${STATIC_LIBDVDCSS}"
990 else
991   echo "use dummy replacement : ${DUMMY_LIBDVDCSS}"
992 fi
993
994 echo "
995 You may now tune Makefile.opts at your convenience, for instance to choose
996 which modules get compiled as plugins.
997 "
998 if test x${HAVE_VLC} = x1
999 then
1000   echo "To build vlc and its plugins, type \`make vlc'."
1001 fi
1002 if test x${HAVE_LIBDVDCSS} = x1
1003 then
1004   echo "To build libdvdcss only, type \`make libdvdcss'."
1005 fi
1006 echo ""
1007