Merge pull request #3061 from MartijnKaijser/xbox_legacy_dvd
[vuplus_xbmc] / configure.in
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ(2.59)
5 AC_INIT([xbmc], [12.9.7], [http://trac.xbmc.org])
6 AC_CONFIG_HEADERS([xbmc/config.h])
7 AH_TOP([#pragma once])
8 m4_include([m4/ax_python_devel.m4])
9
10 AC_CONFIG_AUX_DIR([build-aux])
11 AM_INIT_AUTOMAKE([foreign])
12 AC_CANONICAL_HOST
13
14 tolower(){
15   echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
16 }
17
18 # check for enabling additional players
19 AC_DEFUN([XB_ADD_PLAYER],
20 [
21   AC_MSG_CHECKING([for $2])
22   case $add_players in
23     *$2*)
24       AC_SUBST([USE_$1], 1)
25       AC_DEFINE([HAS_$1], 1, [using $2])
26       AC_MSG_RESULT([enabling $2])
27       ;;
28     *)
29       AC_MSG_RESULT([$2 is not enabled])
30   esac
31 ])
32
33 # check for enabling additional codecs
34 AC_DEFUN([XB_ADD_CODEC],
35 [
36   AC_MSG_CHECKING([for $2])
37   case $add_codecs in
38     *$2*)
39       AC_SUBST([USE_$1], 1)
40       AC_DEFINE([HAS_$1], 1, [using $2])
41       AC_MSG_RESULT([enabling $2])
42       ;;
43     *)
44       AC_MSG_RESULT([$2 is not enabled])
45   esac
46 ])
47
48 # check for library basenames
49 AC_DEFUN([XB_FIND_SONAME],
50 [
51   if echo "$host" | grep -q freebsd ; then
52     AC_MSG_CHECKING([for lib$2 soname])
53     $1_SONAME=[`ldconfig -r | sed -n "s;.* \(/.*lib$2\.so.*\)$;\1;p" | head -n 1`]
54     if test x$$1_SONAME != x ; then
55       $1_SONAME=[`basename $$1_SONAME`]
56     fi
57   elif [[ "$host_vendor" != "apple" ]]; then
58     AC_MSG_CHECKING([for lib$2 soname])
59     $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
60     if [[ -z $$1_FILENAME ]]; then
61       #try gold linker syntax
62       $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "lib$2")
63     fi
64     if [[ ! -z $$1_FILENAME ]]; then
65       $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
66     fi
67   else
68     AC_MSG_CHECKING([for lib$2 dylib])
69     gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
70     env_lib_path=[`echo $LDFLAGS | sed 's/-L[ ]*//g'`]
71     if test "$cross_compiling" = yes; then
72       host_lib_path=""
73     else
74       host_lib_path="/usr/lib /usr/local/lib"
75     fi
76     for path in $gcc_lib_path $env_lib_path $host_lib_path; do
77       lib=[`ls -- $path/lib$2.dylib 2>/dev/null`]
78       if test x$lib != x; then
79         # we want the path/name that is embedded in the dylib 
80         $1_SONAME=[`otool -L $lib | grep -v lib$2.dylib | grep lib$2 | awk '{V=1; print $V}'`]
81         $1_SONAME=[`basename $$1_SONAME`]
82       fi
83     done
84   fi
85   if [[ -z "$$1_SONAME" ]]; then
86     AC_MSG_RESULT([no])
87     if test -z "$3" || test "x${$3}" = "xyes"; then
88       AC_MSG_ERROR([Unable to determine soname of lib$2 library])
89     else
90       AC_MSG_WARN([Unable to determine soname of lib$2 library])
91       $3=no
92       AC_MSG_WARN([lib$2 support disabled])
93     fi
94   else
95     AC_MSG_RESULT([$$1_SONAME])
96     AC_SUBST($1_SONAME)
97   fi
98 ])
99
100 # Function to push and pop libs and includes for a command
101 AC_DEFUN([XB_PUSH_FLAGS], [
102   SAVE_LIBS="$LIBS"
103   SAVE_INCLUDES="$INCLUDES"
104   LIBS="[$2]"
105   INCLUDES="[$1]"
106   [$3]
107   LIBS="$SAVE_LIBS"
108   INCLUDES="$SAVE_INCLUDES"
109 ])
110
111 # General message strings
112 configure_debug="ERROR: this is a configure debug statement"
113 missing_library="Could not find a required library. Please see the README for your platform."
114 missing_headers="Could not find some required headers. Please see the README for your platform."
115 missing_program="Could not find a required program. Please see the README for your platform."
116 xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
117 xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
118 goom_enabled="== GOOM enabled. =="
119 goom_disabled="== GOOM disabled. =="
120 alsa_disabled="== ALSA support disabled. =="
121 rsxs_enabled="== RSXS enabled. =="
122 rsxs_disabled="== RSXS disabled. =="
123 fishbmc_enabled="== FishBMC enabled. =="
124 fishbmc_disabled="== FishBMC disabled. =="
125 projectm_enabled="== ProjectM enabled. =="
126 projectm_disabled="== ProjectM disabled. =="
127 x11_enabled="== X11 enabled. =="
128 x11_disabled="== X11 disabled. =="
129 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
130 pulse_disabled="== PulseAudio support manually disabled. =="
131 dvdcss_enabled="== DVDCSS support enabled. =="
132 dvdcss_disabled="== DVDCSS support disabled. =="
133 hal_not_found="== Could not find hal. HAL support disabled. =="
134 halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
135 hal_disabled="== HAL support disabled. =="
136 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
137 avahi_disabled="== Avahi support disabled. =="
138 mdnsembedded_not_found="== Could not find mDNSEmbedded. Might prevent zeroconf support. =="
139 mdnsembedded_disabled="== mDNSEmbedded support disabled. =="
140 vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
141 vdpau_disabled="== VDPAU support manually disabled. =="
142 vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
143 vaapi_disabled="== VAAPI support manually disabled. =="
144 crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
145 crystalhd_disabled="== CrystalHD support manually disabled. =="
146 vtbdecoder_enabled="== VTBDecoder support enabled. =="
147 vtbdecoder_disabled="== VTBDecoder support manually disabled. =="
148 openmax_disabled="== OpenMax support manually disabled. =="
149 openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
150 ssh_not_found="== Could not find libssh. =="
151 ssh_disabled="== SSH SFTP disabled. =="
152 librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
153 librtmp_disabled="== RTMP support disabled. =="
154 libnfs_not_found="== Could not find libnfs. NFS client support disabled. =="
155 libnfs_disabled="== NFS support disabled. =="
156 libafpclient_not_found="== Could not find libafpclient. AFP client support disabled. =="
157 libafpclient_disabled="== AFP support disabled. =="
158 libshairport_not_found="== Could not find libshairport. =="
159 libshairplay_not_found="== Could not find libshairplay. =="
160 samba_disabled="== SAMBA support disabled. =="
161 libplist_not_found="== Could not find libplist. AirPlay support disabled. =="
162 libplist_disabled="== AirPlay support disabled. =="
163 alsa_not_found="== Could not find ALSA. ALSA support disabled. =="
164 dbus_not_found="== Could not find DBUS. DBUS support disabled. =="
165 libcap_disabled="== Capabilities detection support disabled. =="
166 libcap_not_found="== Could not find libcap. Capabilities detection support disabled. =="
167 gtest_enabled="== Google Test Framework will be configured. =="
168 gtest_disabled="== Google Test Framework will not be configured. =="
169
170 libudev_not_found="== Could not find libudev. Will use polling to check for device changes. =="
171 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
172 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
173 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
174 libusb_disabled_udev_found="== libusb disabled. =="
175 libcec_enabled="== libcec enabled. =="
176 libcec_disabled="== libcec disabled. CEC adapter support will not be available. =="
177
178 # External library message strings
179 external_libraries_enabled="== Use of all supported external libraries enabled. =="
180 external_libraries_disabled="== Use of all supported external libraries disabled. =="
181 external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
182 external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
183 ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
184 dashes="------------------------"
185 final_message="\n  XBMC Configuration:"
186 final_message="\n$dashes$final_message\n$dashes"
187
188 AC_ARG_ENABLE([shared-lib],
189   [AS_HELP_STRING([--enable-shared-lib],
190   [build libxbmc. helpful for tests (default is no)])],
191   [build_shared_lib=$enableval],
192   [build_shared_lib=no])
193
194 AC_ARG_ENABLE([debug],
195   [AS_HELP_STRING([--enable-debug],
196   [enable debugging information (default is yes)])],
197   [use_debug=$enableval],
198   [use_debug=yes])
199
200 AC_ARG_WITH([arch],
201   [AS_HELP_STRING([--with-arch],
202   [build with given arch passing to internal ffmpeg (default is no, needed for crosscompiling)])],
203   [use_arch=$withval],
204   [use_arch=no])
205
206 AC_ARG_WITH([platform],
207   [AS_HELP_STRING([--with-platform],
208   [use a pre-configured config for common arm boards])],
209   [use_platform=$withval],
210   [use_platform=none])
211
212 AC_ARG_WITH([cpu],
213   [AS_HELP_STRING([--with-cpu],
214   [build with given cpu passing to ffmpeg (default is no)])],
215   [use_cpu=$withval],
216   [use_cpu=no])
217
218 AC_ARG_ENABLE([neon],
219   [AS_HELP_STRING([--enable-neon],
220   [enable neon passing to ffmpeg (default is no)])],
221   [use_neon=$enableval],
222   [use_neon=no])
223
224 AC_ARG_ENABLE([optimizations],
225   [AS_HELP_STRING([--enable-optimizations],
226   [enable optimization (default is yes)])],
227   [use_optimizations=$enableval],
228   [use_optimizations=yes])
229
230 AC_ARG_ENABLE([gl],
231   [AS_HELP_STRING([--enable-gl],
232   [enable OpenGL rendering (default is yes)])],
233   [use_gl=$enableval],
234   [use_gl=yes])
235
236 AC_ARG_ENABLE([gles],
237   [AS_HELP_STRING([--enable-gles],
238   [enable OpenGLES rendering (default is no)])],
239   [use_gles=$enableval],
240   [use_gles=no])
241
242 AC_ARG_ENABLE([sdl],
243   [AS_HELP_STRING([--enable-sdl],
244   [enable SDL (default is auto)])],
245   [use_sdl=$enableval],
246   [use_sdl=auto])
247
248 AC_ARG_ENABLE([vdpau],
249   [AS_HELP_STRING([--enable-vdpau],
250   [enable VDPAU decoding (default is auto)])],
251   [use_vdpau=$enableval],
252   [use_vdpau=auto])
253
254 AC_ARG_ENABLE([vaapi],
255   [AS_HELP_STRING([--enable-vaapi],
256   [enable VAAPI decoding (default is auto)])],
257   [use_vaapi=$enableval],
258   [use_vaapi=auto])
259
260 AC_ARG_ENABLE([crystalhd],
261   [AS_HELP_STRING([--enable-crystalhd],
262   [enable CrystalHD decoding (default is auto)])],
263   [use_crystalhd=$enableval],
264   [use_crystalhd=auto])
265
266 AC_ARG_ENABLE([vtbdecoder],
267   [AS_HELP_STRING([--enable-vtbdecoder],
268   [enable VTBDecoder decoding (default is auto)])],
269   [use_vtbdecoder=$enableval],
270   [use_vtbdecoder=auto])
271
272 AC_ARG_ENABLE([openmax],
273   [AS_HELP_STRING([--enable-openmax],
274   [enable OpenMax decoding (default is auto, requires OpenGLES)])],
275   [use_openmax=$enableval],
276   [use_openmax=auto])
277
278 AC_ARG_ENABLE([tegra],
279   [AS_HELP_STRING([--enable-tegra],
280   [enable Tegra2 arm (default is no)])],
281   [use_tegra=$enableval],
282   [use_tegra=no])
283
284 AC_ARG_ENABLE([profiling],
285   [AS_HELP_STRING([--enable-profiling],
286   [enable gprof profiling (default is no)])],
287   [use_profiling=$enableval],
288   [use_profiling=no])
289
290 AC_ARG_ENABLE([joystick],
291   [AS_HELP_STRING([--enable-joystick],
292   [enable SDL joystick support (default is yes)])],
293   [use_joystick=$enableval],
294   [use_joystick=yes])
295
296 AC_ARG_ENABLE([xrandr],
297   [AS_HELP_STRING([--enable-xrandr],
298   [enable XRandR support (default is yes)])],
299   [use_xrandr=$enableval],
300   [use_xrandr=yes])
301
302 AC_ARG_ENABLE([goom],
303   [AS_HELP_STRING([--enable-goom],
304   [enable GOOM visualisation (default is no)])],
305   [use_goom=$enableval],
306   [use_goom=no])
307
308 AC_ARG_ENABLE([rsxs],
309   [AS_HELP_STRING([--enable-rsxs],
310   [enable really slick X screensavers (default is yes)])],
311   [use_rsxs=$enableval],
312   [use_rsxs=yes])
313
314 AC_ARG_ENABLE([fishbmc],
315   [AS_HELP_STRING([--enable-fishbmc],
316   [enable FishBMC visualisation (default is yes)])],
317   [use_fishbmc=$enableval],
318   [use_fishbmc=yes])
319
320 AC_ARG_ENABLE([projectm],
321   [AS_HELP_STRING([--enable-projectm],
322   [enable ProjectM visualisation (default is yes)])],
323   [use_projectm=$enableval],
324   [use_projectm=yes])
325
326 AC_ARG_ENABLE([x11],
327   [AS_HELP_STRING([--enable-x11],
328   [enable x11 (default is yes) 'Linux Only'])],
329   [use_x11=$enableval],
330   [use_x11=yes])
331
332 AC_ARG_ENABLE([ccache],
333   [AS_HELP_STRING([--enable-ccache],
334   [enable building with ccache feature (default is auto)])],
335   [use_ccache=$enableval],
336   [use_ccache=auto])
337
338 AC_ARG_ENABLE([alsa],
339   [AS_HELP_STRING([--disable-alsa],
340   [disable ALSA support (only for linux/freebsd)])],
341   [use_alsa=$enableval],
342   [use_alsa=yes])
343
344 AC_ARG_ENABLE([pulse],
345   [AS_HELP_STRING([--enable-pulse],
346   [enable PulseAudio support (default is no)])],
347   [use_pulse=$enableval],
348   [use_pulse=no])
349
350 AC_ARG_ENABLE([ssh],
351   [AS_HELP_STRING([--disable-ssh],
352   [disable SSH SFTP support (default is enabled)])],
353   [use_ssh=$enableval],
354   [use_ssh=yes])
355
356 AC_ARG_ENABLE([rtmp],
357   [AS_HELP_STRING([--enable-rtmp],
358   [enable RTMP support via librtmp (default is auto)])],
359   [use_librtmp=$enableval],
360   [use_librtmp=auto])
361
362 AC_ARG_ENABLE([samba],
363   [AS_HELP_STRING([--disable-samba],
364   [disable SAMBA support (default is enabled)])],
365   [use_samba=$enableval],
366   [use_samba=yes])
367
368 AC_ARG_ENABLE([nfs],
369   [AS_HELP_STRING([--enable-nfs],
370   [enable NFS support via libnfs (default is auto)])],
371   [use_libnfs=$enableval],
372   [use_libnfs=auto])
373
374 AC_ARG_ENABLE([afpclient],
375   [AS_HELP_STRING([--enable-afpclient],
376   [enable AFP support via libafpclient (default is auto)])],
377   [use_libafpclient=$enableval],
378   [use_libafpclient=auto])
379
380 AC_ARG_ENABLE([airplay],
381   [AS_HELP_STRING([--enable-airplay],
382   [enable AirPlay support(default is auto)])],
383   [use_airplay=$enableval],
384   [use_airplay=auto])
385
386 AC_ARG_ENABLE([airtunes],
387   [AS_HELP_STRING([--enable-airtunes],
388   [enable AirTunes support(default is auto)])],
389   [use_airtunes=$enableval],
390   [use_airtunes=auto])
391
392 AC_ARG_ENABLE([upnp],
393   [AS_HELP_STRING([--disable-upnp],
394   [disable UPnP support (default is enabled)])],
395   [use_upnp=$enableval],
396   [use_upnp=yes])
397
398 AC_ARG_ENABLE([ffmpeg_libvorbis],
399   [AS_HELP_STRING([--enable-ffmpeg-libvorbis],
400   [enable FFmpeg vorbis encoding (default is no)])],
401   [use_ffmpeg_libvorbis=$enableval],
402   [use_ffmpeg_libvorbis=no])
403
404 AC_ARG_ENABLE([dvdcss],
405   [AS_HELP_STRING([--enable-dvdcss],
406   [enable DVDCSS support (default is yes)])],
407   [use_dvdcss=$enableval],
408   [use_dvdcss=yes])
409
410 AC_ARG_ENABLE([mid],
411   [AS_HELP_STRING([--enable-mid],
412   [enable MID support (default is no)])],
413   [use_mid=$enableval],
414   [use_mid=no])
415
416 AC_ARG_ENABLE([hal],
417   [AS_HELP_STRING([--disable-hal],
418   [disable HAL support (default is enabled if hal and hal-storage is found)])],
419   [use_hal=$enableval],
420   [use_hal=yes])
421
422 AC_ARG_ENABLE([avahi],
423   [AS_HELP_STRING([--disable-avahi],
424   [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
425   [use_avahi=$enableval],
426   [use_avahi=yes])
427   
428   AC_ARG_ENABLE([mdnsembedded],
429   [AS_HELP_STRING([--disable-mdnsembedded],
430   [disable mDNSEmbedded support (default is auto)])],
431   [use_mdnsembedded=$enableval],
432   [use_mdnsembedded=auto])
433
434 AC_ARG_ENABLE([non-free],
435   [AS_HELP_STRING([--disable-non-free],
436   [disable componentents with non-compliant licenses])],
437   [use_nonfree=$enableval],
438   [use_nonfree=yes])
439
440 AC_ARG_ENABLE([asap-codec],
441   [AS_HELP_STRING([--enable-asap-codec],
442   [enable ASAP ADPCM support])],
443   [use_asap=$enableval],
444   [use_asap=no])
445
446 AC_ARG_ENABLE([mysql],
447   [AS_HELP_STRING([--disable-mysql],
448   [disable mysql])],
449   [use_mysql=$enableval],
450   [use_mysql=yes])
451
452 AC_ARG_ENABLE([webserver],
453   [AS_HELP_STRING([--disable-webserver],
454   [disable webserver])],
455   [use_webserver=$enableval],
456   [use_webserver=yes])
457
458 AC_ARG_ENABLE([optical-drive],
459   [AS_HELP_STRING([--disable-optical-drive],
460   [disable optical drive])],
461   [use_optical_drive=$enableval],
462   [use_optical_drive=yes])
463
464 AC_ARG_ENABLE([libbluray],
465   [AS_HELP_STRING([--enable-libbluray],
466   [enable libbluray support])],
467   [use_libbluray=$enableval],
468   [use_libbluray=auto])
469
470 AC_ARG_ENABLE([texturepacker],
471   [AS_HELP_STRING([--enable-texturepacker],
472   [enable texturepacker support (default is yes)])],
473   [use_texturepacker=$enableval],
474   [use_texturepacker=auto])
475
476 AC_ARG_WITH([lirc-device],
477   [AS_HELP_STRING([--with-lirc-device=file],
478   [specify the default LIRC device (default is /dev/lircd)])],
479   [lirc_device=$withval],
480   [lirc_device=/dev/lircd])
481 AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device])
482
483 AC_ARG_ENABLE([udev],
484   [AS_HELP_STRING([--enable-udev],
485   [enable udev support (default is auto)])],
486   [use_libudev=$enableval],
487   [use_libudev=auto])
488
489 AC_ARG_ENABLE([libusb],
490   [AS_HELP_STRING([--enable-libusb],
491   [enable libusb support (default is auto)])],
492   [use_libusb=$enableval],
493   [use_libusb=auto])
494
495 AC_ARG_ENABLE([libcec],
496   [AS_HELP_STRING([--enable-libcec],
497   [enable libcec support (default is auto)])],
498   [use_libcec=$enableval],
499   [use_libcec=auto])
500
501 AC_ARG_ENABLE([libmp3lame],
502   [AS_HELP_STRING([--enable-libmp3lame],
503   [enable lame mp3 encoder support (default is auto)])],
504   [use_libmp3lame=$enableval],
505   [use_libmp3lame=auto])
506
507 AC_ARG_ENABLE([libvorbisenc],
508   [AS_HELP_STRING([--enable-libvorbisenc],
509   [enable vorbis encoder support (default is auto)])],
510   [use_libvorbisenc=$enableval],
511   [use_libvorbisenc=auto])
512
513 AC_ARG_ENABLE([libcap],
514   [AS_HELP_STRING([--enable-libcap],
515   [enable libcap support (default is auto)])],
516   [use_libcap=$enableval],
517   [use_libcap=auto])
518
519 AC_ARG_ENABLE([player],
520   [AS_HELP_STRING([--enable-player],
521   [enable additional players from a list of comma separated names, (default is none, choices are amlplayer, omxplayer)])],
522   [add_players=$enableval],
523   [add_players=no])
524
525 AC_ARG_ENABLE([gtest],
526   [AS_HELP_STRING([--enable-gtest],
527   [configure Google Test Framework (default is no)])],
528   [configure_gtest=$enableval],
529   [configure_gtest=no])
530
531 AC_ARG_ENABLE([codec],
532   [AS_HELP_STRING([--enable-codec],
533   [enable additional codecs from a list of comma separated names, (default is none, choices are amcodec, libstagefright)])],
534   [add_codecs=$enableval],
535   [add_codecs=no])
536
537 ### External libraries options
538 AC_ARG_ENABLE([external-libraries],
539   [AS_HELP_STRING([--enable-external-libraries],
540   [enable use of all supported external libraries (default is no) 'Linux only'])],
541   [use_external_libraries=$enableval],
542   [use_external_libraries=no])
543
544 AC_ARG_ENABLE([external-ffmpeg],
545   [AS_HELP_STRING([--enable-external-ffmpeg],
546   [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
547   [use_external_ffmpeg=$enableval],
548   [use_external_ffmpeg=$use_external_libraries])
549
550 AC_ARG_ENABLE([libav-compat],
551   [AS_HELP_STRING([--enable-libav-compat],
552   [build a wrapper around libav to provide the functions needed by XBMC. This is
553    *not* supported by XBMC developers and is provided only for convenience. (default is no) 'Linux only'])],
554   [use_libav_hacks=$enableval],
555   [use_libav_hacks=no])
556
557 ### End of external library options
558
559 if test "x$host_vendor" != "xapple"; then
560   DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
561   DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
562 fi
563
564 # Checks for programs.
565 PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
566 AC_PROG_CXX
567 CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
568 PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
569 AC_PROG_CC
570 AC_PROG_LIBTOOL
571 CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
572 AC_PROG_AWK
573 AC_PROG_LN_S
574 AC_PROG_MAKE_SET
575 MAKE="${MAKE:-make}"
576 OBJDUMP="${OBJDUMP:-objdump}"
577
578 # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
579 # there is no autoconf variable which will give
580 # the correct output format when doing cross compilation
581 # so we have to use our own var here
582 # defaults to the build side target_os
583 # and should be overridden for cross below (see android)
584 ffmpeg_target_os=$(tolower $(uname -s))
585
586 # host detection and setup
587 case $host in
588   i*86*-android-linux-gnu*)
589      target_platform=target_android
590      ARCH="i486-linux"
591      use_arch="x86"
592      use_cpu="i686"
593      ffmpeg_target_os=linux
594      ;;
595   i*86*-linux-gnu*)
596      ARCH="i486-linux"
597      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX")
598      ;;
599   x86_64-*-linux-gnu*)
600      ARCH="x86_64-linux"
601      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX")
602      ;;
603   i386-*-freebsd*)
604      ARCH="x86-freebsd"
605      MAKE="gmake"
606      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
607      ;;
608   amd64-*-freebsd*)
609      ARCH="x86_64-freebsd"
610      MAKE="gmake"
611      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_FREEBSD -D_LINUX")
612      ;;
613   arm-apple-darwin*)
614      use_joystick=no
615      use_neon=yes
616      use_libcec=no
617      use_crystalhd=no
618      use_vtbdecoder=yes
619      use_optical_drive=no
620      use_dvdcss=no
621      use_gles=yes
622      use_cpu=cortex-a8
623      use_texturepacker_native=yes
624      ARCH="arm-osx"
625      use_arch="arm"
626      PYTHON_VERSION="2.6"
627      PYTHON_LDFLAGS="-L${prefix}/lib -lpython2.6"
628      PYTHON_CPPFLAGS="-I${prefix}/include/python2.6"
629      PYTHON_SITE_PKG="${prefix}/lib/python2.6/site-packages"
630      PYTHON_NOVERSIONCHECK="no-check"
631      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_IOS -D_LINUX")
632      ;;
633   *86*-apple-darwin*)
634      use_joystick=no
635      use_vtbdecoder=no
636      use_texturepacker_native=yes
637      ARCH="x86-osx"
638      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
639      ;;
640   powerpc-apple-darwin*)
641      use_joystick=no
642      use_vtbdecoder=no
643      use_crystalhd=no
644      ARCH="powerpc-osx"
645      use_arch="ppc"
646      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_DARWIN -DTARGET_DARWIN_OSX -D_LINUX")
647      ;;
648   powerpc-*-linux-gnu*)
649      ARCH="powerpc-linux"
650      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_POWERPC")
651      ;;
652   powerpc64-*-linux-gnu*)
653      ARCH="powerpc64-linux"
654      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_POWERPC64")
655      ;;
656   arm*-*-linux-gnu*)
657      use_texturepacker=no
658      ARCH="arm"
659      use_arch="arm"
660      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX")
661      ffmpeg_target_os=linux
662      use_joystick=no
663      use_neon=yes
664      use_gles=yes
665      use_sdl=no
666      use_x11=no
667      ;;
668   arm*-*linux-android*)
669      target_platform=target_android
670      use_arch="arm"
671      use_cpu=cortex-a9
672      ARCH="arm"
673      ffmpeg_target_os=linux
674      use_joystick=no
675      use_neon=yes
676      use_gles=yes
677      use_optical_drive=no
678      use_sdl=no
679      use_x11=no
680      build_shared_lib=yes
681      ;;
682   *)
683      AC_MSG_ERROR(unsupported host ($host))
684 esac
685 AC_SUBST([ARCH])
686
687
688 check_sdl_arch=[`file $USE_TEXTUREPACKER_NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
689 if test "x$check_sdl_arch" = "xi386" ; then
690   DARWIN_NATIVE_ARCH=-m32
691 elif test "x$check_sdl_arch" = "xx86_64" ; then
692   DARWIN_NATIVE_ARCH=-m64
693 fi
694 AC_SUBST([DARWIN_NATIVE_ARCH])
695
696 if test "$target_platform" = "target_android" ; then
697   USE_ANDROID=1
698   use_texturepacker_native=yes
699   webserver_checkdepends=yes
700   AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID")
701   CFLAGS="$CFLAGS -Wno-psabi"
702   CXXFLAGS="$CXXFLAGS -Wno-psabi"
703   AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
704 fi
705
706 case $use_platform in
707   raspberry-pi)
708      target_platform=target_raspberry_pi
709      use_neon=no
710      use_texturepacker=yes
711      use_texturepacker_native=yes
712      use_arch="arm"
713      use_cpu=arm1176jzf-s
714      use_hardcoded_tables="yes"
715      use_alsa="no"
716      ARCH="arm"
717      AC_SUBST(ARCH_DEFINES, "-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -D_ARMEL -DTARGET_RASPBERRY_PI")
718      AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
719      USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
720      CFLAGS="$CFLAGS"
721      CXXFLAGS="$CXXFLAGS"
722      ffmpeg_target_os=linux
723      ;;
724 esac
725
726 # check for GIT_REV
727 AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
728 if test "$GIT_REV" = ""; then
729   if test -f VERSION ; then
730     GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
731   elif test "$HAVE_GIT" = "yes"; then
732     GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
733   else
734     GIT_REV="Unknown"
735   fi
736 fi
737 final_message="$final_message\n  git Rev.:\t${GIT_REV}"
738
739 if test "$host_vendor" = "apple"; then
740   echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
741 else
742   SDL_DEFINES="$SDL_DEFINES -D'GIT_REV=\"$GIT_REV\"'"
743 fi
744
745 if test "$build_shared_lib" = "yes"; then
746   final_message="$final_message\n Shared lib\tYes"
747   AC_SUBST(USE_LIBXBMC,1)
748 fi
749
750
751 # platform debug flags
752 if test "$use_debug" = "yes"; then
753   final_message="$final_message\n  Debugging:\tYes"
754   if test "$use_profiling" = "yes"; then
755     final_message="$final_message\n  Profiling:\tYes"
756     DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
757   else
758     final_message="$final_message\n  Profiling:\tNo"
759     DEBUG_FLAGS="-g -D_DEBUG -Wall"
760   fi
761 else
762   final_message="$final_message\n  Debugging:\tNo"
763   if test "$use_profiling" = "yes"; then
764     final_message="$final_message\n  Profiling:\tYes"
765     DEBUG_FLAGS="-pg -DNDEBUG=1"
766   else
767     final_message="$final_message\n  Profiling:\tNo"
768     DEBUG_FLAGS="-DNDEBUG=1"
769   fi
770 fi
771 CFLAGS="$CFLAGS $DEBUG_FLAGS"
772 CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"
773
774
775 if test "$use_optimizations" = "yes"; then
776   final_message="$final_message\n  Optimization:\tYes"
777   if test "$target_platform" = "target_raspberry_pi"; then
778     CXXFLAGS="$CXXFLAGS"
779     CFLAGS="$CFLAGS"
780   else
781     CXXFLAGS="-O2 $CXXFLAGS"
782     CFLAGS="-O2 $CFLAGS"
783   fi
784 else
785   final_message="$final_message\n  Optimization:\tNo"
786 fi
787
788
789 # platform specific flags
790 if echo "$ARCH" | grep -q "freebsd" ; then
791   LOCALBASE="${LOCALBASE:-/usr/local}"
792   CFLAGS="$CFLAGS -I$LOCALBASE/include"
793   CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
794   CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
795   LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
796   FFMPEG_EXTRACFLAGS="-I$LOCALBASE/include"
797 fi
798 if test "$host_vendor" = "apple" ; then
799   # standard xbmc paths
800   INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
801   if test "$use_arch" != "arm"; then
802     LIBS="$LIBS -framework ApplicationServices"
803     LIBS="$LIBS -framework AudioUnit"
804     LIBS="$LIBS -framework AudioToolbox"
805     LIBS="$LIBS -framework Cocoa"
806     LIBS="$LIBS -framework CoreAudio"
807     LIBS="$LIBS -framework CoreVideo"
808     LIBS="$LIBS -framework CoreServices"
809     LIBS="$LIBS -framework CoreFoundation"
810     LIBS="$LIBS -framework DiskArbitration"
811     LIBS="$LIBS -framework IOKit"
812     LIBS="$LIBS -framework IOSurface"
813     LIBS="$LIBS -framework QuartzCore"
814     LIBS="$LIBS -framework SystemConfiguration"
815   fi
816   USE_EXTERNAL_FFMPEG=1
817 elif test "$target_platform" = "target_raspberry_pi"; then
818   ARCH="arm"
819   use_arch="arm"
820 elif test "$use_arch" = "arm"; then
821   CFLAGS="$CFLAGS -mno-apcs-stack-check"
822   CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
823   FFMPEG_EXTRACFLAGS=""
824   if test "$use_tegra" = "yes"; then
825     # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support 
826     SAVE_CFLAGS="$CFLAGS"
827     CFLAGS="-mfpu=vfpv3-d16"
828     AC_COMPILE_IFELSE(
829       [AC_LANG_SOURCE([int foo;])],
830       [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
831         CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
832         FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mtune=cortex-a9 -mfpu=vfpv3-d16"
833         use_cpu=cortex-a9],
834       [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
835         CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"    
836         use_cpu=cortex-a8])
837   else
838     if test "$use_neon" = "yes"; then 
839       CFLAGS="$CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
840       CXXFLAGS="$CXXFLAGS -mfpu=neon -mvectorize-with-neon-quad"
841       FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mfpu=neon"
842     fi
843   fi
844 fi
845
846 # Checks for library functions.
847 AC_FUNC_ALLOCA
848 AC_FUNC_CHOWN
849 AC_FUNC_CLOSEDIR_VOID
850 AC_FUNC_ERROR_AT_LINE
851 AC_FUNC_FSEEKO
852 AC_PROG_GCC_TRADITIONAL
853 AC_FUNC_LSTAT
854 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
855 AC_FUNC_MEMCMP
856 AC_FUNC_MKTIME
857 AC_FUNC_MMAP
858 # Boxee is apparently having compile problems
859 # if HAVE_REALLOC is defined.  Sort this later.
860 #AC_FUNC_REALLOC
861 AC_FUNC_SELECT_ARGTYPES
862 AC_FUNC_SETVBUF_REVERSED
863 AC_TYPE_SIGNAL
864 AC_FUNC_STAT
865 AC_FUNC_STRCOLL
866 AC_FUNC_STRFTIME
867 AC_FUNC_STRTOD
868 AC_FUNC_UTIME_NULL
869 AC_FUNC_VPRINTF
870 AC_CHECK_FUNCS([atexit dup2 fdatasync floor fs_stat_dev ftime ftruncate getcwd gethostbyaddr gethostbyname gethostname getpagesize getpass gettimeofday inet_ntoa lchown localeconv memchr memmove memset mkdir modf munmap pow rmdir select setenv setlocale socket sqrt strcasecmp strchr strcspn strdup strerror strncasecmp strpbrk strrchr strspn strstr strtol strtoul sysinfo tzset utime posix_fadvise])
871
872 # Check for various sizes
873 AC_CHECK_SIZEOF([int])
874 AC_CHECK_SIZEOF([size_t])
875
876 # Check for intrinsics
877 AC_MSG_CHECKING([for __sync_add_and_fetch(temp, 1)])
878 AC_TRY_LINK([],[long* temp=0; long ret=__sync_add_and_fetch(temp, 1);],
879                 [have_builtin_sync_add_and_fetch=yes],
880                 [have_builtin_sync_add_and_fetch=no])
881 AC_MSG_RESULT($have_builtin_sync_add_and_fetch)
882 if test "x$have_builtin_sync_add_and_fetch" = "xyes"; then
883     AC_DEFINE(HAS_BUILTIN_SYNC_ADD_AND_FETCH, 1,
884         [Define to 1 if your compiler supports the __sync_add_and_fetch() intrinsic.])
885 fi
886
887 AC_MSG_CHECKING([for __sync_sub_and_fetch(temp, 1)])
888 AC_TRY_LINK([],[long* temp=0; long ret=__sync_sub_and_fetch(temp, 1);],
889                 [have_builtin_sync_sub_and_fetch=yes],
890                 [have_builtin_sync_sub_and_fetch=no])
891 AC_MSG_RESULT($have_builtin_sync_sub_and_fetch)
892 if test "x$have_builtin_sync_sub_and_fetch" = "xyes"; then
893     AC_DEFINE(HAS_BUILTIN_SYNC_SUB_AND_FETCH, 1,
894         [Define to 1 if your compiler supports the __sync_sub_and_fetch() intrinsic.])
895 fi
896
897 AC_MSG_CHECKING([for __sync_val_compare_and_swap(temp, 1, 1)])
898 AC_TRY_LINK([],[long *temp = 0; long ret=__sync_val_compare_and_swap(temp, 1, 1);],
899                 [have_builtin_sync_val_compare_and_swap=yes],
900                 [have_builtin_sync_val_compare_and_swap=no])
901 AC_MSG_RESULT($have_builtin_sync_val_compare_and_swap)
902 if test "x$have_builtin_sync_val_compare_and_swap" = "xyes"; then
903     AC_DEFINE(HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP, 1,
904         [Define to 1 if your compiler supports the __sync_val_compare_and_swap() intrinsic.])
905 fi
906
907 # Add top source directory for all builds so we can use config.h
908 INCLUDES="-I\$(abs_top_srcdir) $INCLUDES" 
909
910 # Check inotify availability
911 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
912
913 # Checks for boost headers using CXX instead of CC
914 AC_LANG_PUSH([C++])
915 AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
916 AC_LANG_POP([C++])
917
918 # Python
919 if test -z "$PYTHON_NOVERSIONCHECK"; then
920   AX_PYTHON_DEVEL([>= 2.4])
921   PYTHON_VERSION=$ac_python_version
922 fi
923
924 if test -z "$PYTHON_VERSION"; then
925   AC_MSG_ERROR([Can't find a Python version.])
926 else
927   LIBS="$LIBS $PYTHON_LDFLAGS"
928   AC_MSG_NOTICE([Using Python $PYTHON_VERSION])
929 fi
930
931 # Checks for platforms libraries.
932 if test "$use_gles" = "yes"; then
933   use_gl="no"
934   # GLES overwrites GL if both set to yes.
935   if test "$host_vendor" = "apple" ; then
936     AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
937     AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
938     AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
939   else
940     if test "$target_platform" = "target_raspberry_pi"; then
941       AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
942       AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
943       AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
944       LIBS="$LIBS -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
945     else
946       AC_CHECK_LIB([EGL],   [main],, AC_MSG_ERROR($missing_library))
947       AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
948     fi
949   fi
950 else
951   if test "$use_gl" = "yes"; then
952     if test "$host_vendor" = "apple" ; then
953       # linking to OpenGL.framework instead of libGL, libGLU so AC_CHECK_LIB will fail
954       LIBS="$LIBS -framework OpenGL"
955       AC_DEFINE([HAVE_LIBGL],[1],["Define to 1 if you have the `GL' library (-lGL)."])
956       AC_MSG_RESULT(== WARNING: OpenGL support is assumed.)
957       AC_DEFINE([HAVE_LIBGLU],[1],["Define to 1 if you have the `GLU' library (-lGLU)."])
958       AC_MSG_RESULT(== WARNING: OpenGLU support is assumed.)
959       AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
960     else
961       AC_CHECK_LIB([GL],  [main],, AC_MSG_ERROR($missing_library))
962       AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
963       AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
964     fi
965   else
966     AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
967     AC_CHECK_LIB([SDL_gfx],[main])
968   fi
969 fi
970
971 # platform common libraries
972 if test "$use_mysql" = "yes"; then
973   AC_PATH_PROG(MYSQL_CONFIG, mysql_config,"no")
974   if test "x$MYSQL_CONFIG" != "xno"; then
975     AC_DEFINE([HAVE_MYSQL],[1],["Define to 1 if you have the `mysql' library (-lmysqlclient)."])
976     INCLUDES="$INCLUDES `$MYSQL_CONFIG --include`"
977     MYSQL_LIBS=`$MYSQL_CONFIG --libs`
978     LIBS="$LIBS $MYSQL_LIBS"
979     AC_SUBST(MYSQL_LIBS)
980   else
981     AC_MSG_ERROR($missing_program)
982   fi
983 fi
984 AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
985 AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
986 AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
987   AC_INCLUDES_DEFAULT()
988   [#include <mpeg2dec/mpeg2.h>])
989 AC_CHECK_HEADER([mad.h],,            AC_MSG_ERROR($missing_library))
990 AC_CHECK_HEADER([jpeglib.h],,        AC_MSG_ERROR($missing_library))
991 AC_CHECK_HEADER([samplerate.h],,     AC_MSG_ERROR($missing_library))
992 AC_CHECK_HEADER([ogg/ogg.h],,        AC_MSG_ERROR($missing_library))
993 AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
994 AC_CHECK_HEADER([libmodplug/modplug.h],, AC_MSG_ERROR($missing_library))
995 AC_CHECK_HEADER([curl/curl.h],, AC_MSG_ERROR($missing_library))
996 AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
997
998 # we need to check for the header because if it exists we set the openssl
999 # and gcrypt MT callback hooks. This is mostly so that libcurl operates 
1000 # in MT manner correctly.
1001 AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
1002 AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
1003 if test "$gcrypt_headers_available" = "yes"; then
1004    # if we have the headers then we must have the lib
1005    AC_CHECK_LIB([gpg-error],[main],, AC_MSG_ERROR($missing_library))
1006    AC_CHECK_LIB([gcrypt],[gcry_control],, AC_MSG_ERROR($missing_library))
1007    AC_DEFINE([HAVE_GCRYPT],[1],[Define if we have gcrypt])
1008 fi
1009
1010 AC_CHECK_LIB([bz2],         [main],, AC_MSG_ERROR($missing_library))
1011 AC_CHECK_LIB([jpeg],        [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1012 AC_CHECK_LIB([tiff],        [main],, AC_MSG_ERROR($missing_library))
1013 if echo "$ARCH" | grep -q freebsd; then
1014 AC_CHECK_LIB([pthread],     [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
1015 AC_CHECK_LIB([pthread],     [pthread_set_name_np],
1016   AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
1017   AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
1018 else
1019 if test "$target_platform" != "target_android" ; then
1020   AC_CHECK_LIB([pthread],     [main],, AC_MSG_ERROR($missing_library))
1021   AC_CHECK_LIB([pthread],     [pthread_setname_np],
1022     AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
1023     AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
1024 fi
1025 fi
1026 AC_CHECK_LIB([lzo2],        [main],, AC_MSG_ERROR($missing_library))
1027 AC_CHECK_LIB([z],           [main],, AC_MSG_ERROR($missing_library))
1028 AC_CHECK_LIB([crypto],      [main],, AC_MSG_ERROR($missing_library))
1029 AC_CHECK_LIB([ssl],         [main],, AC_MSG_ERROR($missing_library))
1030 if test "$use_mysql" = "yes"; then
1031   AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
1032 fi
1033 AC_CHECK_LIB([bluetooth],   [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
1034 AC_CHECK_LIB([yajl],        [main],, AC_MSG_ERROR($missing_library))
1035 AC_CHECK_LIB([tinyxml],     [main],, AC_MSG_ERROR($missing_library))
1036 if test "$target_platform" = "target_android" ; then
1037   AC_CHECK_LIB([android],     [main],, AC_MSG_ERROR($missing_library))
1038   AC_CHECK_LIB([log],         [__android_log_vprint],, AC_MSG_ERROR($missing_library))
1039   AC_CHECK_LIB([jnigraphics],     [main],, AC_MSG_ERROR($missing_library))
1040 fi
1041 PKG_CHECK_MODULES([FRIBIDI],    [fribidi],
1042   [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
1043   AC_MSG_ERROR($missing_library))
1044 PKG_CHECK_MODULES([SQLITE3],    [sqlite3],
1045   [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
1046   AC_MSG_ERROR($missing_library))
1047 PKG_CHECK_MODULES([PNG],        [libpng],
1048   [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
1049   AC_MSG_ERROR($missing_library))
1050 PKG_CHECK_MODULES([PCRECPP],    [libpcrecpp],
1051   [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
1052   AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
1053   AC_MSG_ERROR($missing_library))
1054 PKG_CHECK_MODULES([PCRE],       [libpcre],
1055   [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
1056   AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
1057   AC_MSG_ERROR($missing_library))
1058 PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
1059   [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
1060   AC_MSG_ERROR($missing_library))
1061 PKG_CHECK_MODULES([FREETYPE2],  [freetype2],
1062   [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
1063   AC_MSG_ERROR($missing_library))
1064 PKG_CHECK_MODULES([TAGLIB],  [taglib >= 1.8],
1065   [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
1066   AC_MSG_ERROR($missing_library))
1067
1068 if test "$use_optical_drive" = "yes"; then
1069   PKG_CHECK_MODULES([CDIO],       [libcdio],
1070     [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
1071     AC_MSG_ERROR($missing_library))
1072 fi
1073
1074 if test "$target_platform" = "target_android" ; then
1075 PKG_CHECK_MODULES([ZIP],       [libzip],
1076   [INCLUDES="$INCLUDES $ZIP_CFLAGS"; LIBS="$LIBS $ZIP_LIBS"],
1077   AC_MSG_ERROR($missing_library))
1078 fi
1079
1080 # check for libbluray
1081 AS_CASE([x$use_libbluray],
1082   [xyes],[
1083     PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
1084   ],
1085   [xauto],[
1086     PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], [use_libbluray="no"])
1087   ])
1088
1089 AS_CASE([x$use_libbluray],
1090   [xyes],[
1091     INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
1092     XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
1093     AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
1094     AC_SUBST([HAVE_LIBBLURAY], 1)
1095     AC_CHECK_LIB([bluray], [bd_register_argb_overlay_proc],
1096       AC_CHECK_DECL([BD_EVENT_IDLE],
1097         AC_DEFINE([HAVE_LIBBLURAY_BDJ], 1, [System has libbluray library with bdj support]),,
1098         [[#include <libbluray/bluray.h>]]))
1099   ],[
1100     AC_SUBST([HAVE_LIBBLURAY], 0)
1101   ]
1102 )
1103
1104 #Check to see if libs are needed for functions that are often built-in to libc
1105 AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
1106 AC_SEARCH_LIBS([dlopen],dl)
1107 AC_SEARCH_LIBS([clock_gettime],rt)
1108 AC_SEARCH_LIBS([dn_expand],  resolv)
1109 AC_SEARCH_LIBS([_dn_expand], resolv)
1110 AC_SEARCH_LIBS([__dn_expand],resolv)
1111
1112 # platform dependent libraries
1113 if test "$host_vendor" = "apple" ; then
1114   if test "$use_arch" != "arm"; then
1115     AC_CHECK_LIB([SDL],      [main],, AC_MSG_ERROR($missing_library))
1116     AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1117   fi
1118 else
1119 if test "$target_platform" != "target_android" ; then
1120   AC_CHECK_LIB([jasper],     [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1121 fi
1122 if test "x$use_alsa" != "xno"; then
1123   PKG_CHECK_MODULES([ALSA],  [alsa],
1124     [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"; use_alsa=yes],
1125     AC_MSG_NOTICE($alsa_not_found); use_alsa=no)
1126 fi
1127   PKG_CHECK_MODULES([DBUS],    [dbus-1],
1128     [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"; use_dbus=yes]; \
1129     AC_DEFINE([HAVE_DBUS],[1],["Define to 1 if dbus is installed"]),
1130     AC_MSG_NOTICE($missing_library); use_dbus=no)
1131   if test "x$use_sdl" != "xno"; then
1132     PKG_CHECK_MODULES([SDL],   [sdl],
1133       [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
1134       AC_MSG_ERROR($missing_library))
1135     AC_CHECK_LIB([SDL_image],  [main],, AC_MSG_ERROR($missing_library))
1136     AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1137   fi
1138 fi
1139
1140 XB_FIND_SONAME([MAD],         [mad])
1141 XB_FIND_SONAME([OGG],         [ogg])
1142 XB_FIND_SONAME([CURL],        [curl])
1143 XB_FIND_SONAME([FLAC],        [FLAC])
1144 XB_FIND_SONAME([VORBIS],      [vorbis])
1145 XB_FIND_SONAME([VORBISFILE],  [vorbisfile])
1146 XB_FIND_SONAME([MODPLUG],     [modplug])
1147 XB_FIND_SONAME([ASS],         [ass])
1148 XB_FIND_SONAME([MPEG2],       [mpeg2])
1149
1150 # Audio encoders
1151 if test "x$use_libmp3lame" != "xno"; then
1152   XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1153   if test "x$use_libmp3lame" != "xno"; then
1154     AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1155   fi
1156 fi
1157 AS_CASE([x$use_libmp3lame],
1158   [xno],[
1159     AC_SUBST([HAVE_LIBMP3LAME], 0)
1160   ],
1161   [
1162     AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1163     AC_SUBST([HAVE_LIBMP3LAME], 1)
1164   ]
1165 )
1166 if test "x$use_libvorbisenc" != "xno"; then
1167   XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1168   if test "x$use_libvorbisenc" != "xno"; then
1169     AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1170   fi
1171 fi
1172 AS_CASE([x$use_libvorbisenc],
1173   [xno],[
1174     AC_SUBST([HAVE_LIBVORBISENC], 0)
1175   ],[
1176     AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1177     AC_SUBST([HAVE_LIBVORBISENC], 1)
1178   ]
1179 )
1180
1181 # WebServer
1182 if test "$use_webserver" = "yes"; then
1183   AC_CHECK_LIB([microhttpd],  [main],, AC_MSG_ERROR($missing_library))
1184 fi
1185
1186 # Optical
1187 if test "$use_optical_drive" = "yes"; then
1188   AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1189 fi
1190
1191 # Alsa
1192 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1193   PKG_CHECK_MODULES([ALSA],  [alsa],
1194     [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1195     AC_MSG_ERROR($missing_library))
1196   AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1197 else
1198   use_alsa="no"
1199   AC_MSG_RESULT($alsa_disabled)
1200 fi
1201
1202 # PulseAudio
1203 if test "x$use_pulse" != "xno"; then
1204   if test "$host_vendor" = "apple" ; then
1205     if test "x$use_pulse" = "xyes"; then
1206       AC_MSG_ERROR($pulse_disabled)
1207     else
1208       use_pulse="no"
1209       AC_MSG_RESULT($pulse_disabled)
1210     fi
1211     USE_PULSE=0
1212   else
1213     AC_CHECK_LIB([pulse],[main],,pulse_found="no")
1214     AC_CHECK_LIB([pulse-simple],[main],,pulse_found="no")
1215
1216     if test "x$pulse_found" != "xno"; then
1217       USE_PULSE=1
1218     elif test "x$use_pulse" = "xyes"; then
1219       AC_MSG_ERROR($pulse_not_found)
1220     else
1221       use_pulse=no
1222       USE_PULSE=0
1223       AC_MSG_RESULT($pulse_not_found)
1224     fi
1225   fi
1226 else
1227   AC_MSG_RESULT($pulse_disabled)
1228   USE_PULSE=0
1229 fi
1230
1231 # HAL
1232 if test "$host_vendor" = "apple" ; then
1233   use_hal="no"
1234   AC_MSG_RESULT($hal_disabled)
1235 else
1236   if test "$use_hal" = "yes"; then
1237     PKG_CHECK_MODULES([HAL], [hal],
1238       [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1239       use_hal=no;AC_MSG_RESULT($hal_not_found))
1240     PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1241       [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1242       use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1243   else
1244     AC_MSG_RESULT($hal_disabled)
1245   fi
1246   if test "$use_hal" = "yes"; then
1247     AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1248   fi
1249 fi
1250
1251 # avahi
1252 if test "$host_vendor" = "apple" ; then
1253   use_avahi="no"
1254   AC_MSG_RESULT($avahi_disabled)
1255 else
1256   if test "$use_avahi" = "yes"; then
1257     AC_CHECK_LIB([avahi-common], [main],,
1258       use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1259     if test "$use_avahi" = "yes"; then
1260       #either both libs or none
1261       AC_CHECK_LIB([avahi-client], [main],,
1262         use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1263     fi
1264   else
1265     AC_MSG_RESULT($avahi_disabled)
1266   fi
1267 fi
1268
1269 # mdnsembedded
1270 if test "$use_mdnsembedded" != "no"; then
1271   AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1272     [if test "$use_mdnsembedded" = "yes"; then
1273       AC_MSG_ERROR($mdnsembedded_not_found)
1274       USE_MDNSEMBEDDED=0
1275     elif test "$use_mdnsembedded" != "no"; then
1276       AC_MSG_NOTICE($mdnsembedded_not_found)
1277       use_mdnsembedded="no"
1278       USE_MDNSEMBEDDED=0
1279     fi
1280    ])
1281   if test $use_mdnsembedded != "no"; then
1282     USE_MDNSEMBEDDED=1
1283   fi
1284 else
1285   AC_MSG_RESULT($mdnsembedded_disabled)
1286   USE_MDNSEMBEDDED=0
1287 fi
1288 AC_SUBST(USE_MDNSEMBEDDED)
1289
1290 # X11
1291 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1292   AC_MSG_NOTICE($x11_enabled)
1293   PKG_CHECK_MODULES([X11],    [x11],
1294     [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1295     AC_MSG_ERROR($missing_library))
1296   PKG_CHECK_MODULES([XEXT],  [xext],
1297     [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1298     AC_MSG_ERROR($missing_library))
1299   AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1300 else
1301   AC_MSG_RESULT($x11_disabled)
1302 fi
1303
1304 # XRandR
1305 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1306   use_xrandr="no"
1307   AC_MSG_RESULT($xrandr_disabled)
1308 else
1309   if test "$use_xrandr" = "yes" ; then
1310     AC_CHECK_LIB([Xrandr], [main],,
1311       use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1312   else
1313     AC_MSG_RESULT($xrandr_disabled)
1314   fi
1315 fi
1316
1317 # GOOM
1318 if test "$host_vendor" = "apple" ; then
1319   AC_MSG_NOTICE($goom_disabled)
1320   DISABLE_GOOM=1
1321 else
1322   if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1323     AC_MSG_NOTICE($goom_enabled)
1324     DISABLE_GOOM=0
1325   else
1326     AC_MSG_NOTICE($goom_disabled)
1327     DISABLE_GOOM=1
1328   fi
1329 fi
1330
1331 # RSXS
1332 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1333   AC_MSG_NOTICE($rsxs_disabled)
1334   DISABLE_RSXS=1
1335 else
1336   AC_MSG_NOTICE($rsxs_enabled)
1337   DISABLE_RSXS=0
1338   # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1339   if test "$host_vendor" != "apple" ; then
1340     PKG_CHECK_MODULES([XT],    [xt],
1341       [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1342       AC_MSG_ERROR($missing_library))
1343     PKG_CHECK_MODULES([XMU],   [xmu],
1344       [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1345       AC_MSG_ERROR($missing_library))
1346   fi
1347 fi
1348
1349 # FISHBMC
1350 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1351   AC_MSG_NOTICE($fishbmc_disabled)   
1352   DISABLE_FISHBMC=1
1353   use_fishbmc="no"
1354 else
1355   AC_MSG_NOTICE($fishbmc_enabled)
1356   DISABLE_FISHBMC=0
1357 fi
1358
1359 # PROJECTM
1360 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1361   AC_MSG_NOTICE($projectm_disabled)
1362   DISABLE_PROJECTM=1
1363   use_projectm="no"
1364 else
1365   AC_MSG_NOTICE($projectm_enabled)
1366   DISABLE_PROJECTM=0
1367 fi
1368
1369 # skin touched
1370 use_skin_touched=no
1371 if [[ -f "addons/skin.touched/addon.xml" ]]; then 
1372   use_skin_touched=yes
1373   USE_SKIN_TOUCHED=1
1374   AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1375 else
1376   USE_SKIN_TOUCHED=0
1377 fi
1378
1379 # libssh
1380 if test "x$use_ssh" = "xno"; then
1381   AC_MSG_NOTICE($ssh_disabled)
1382   use_libssh="no"
1383 else
1384   AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1385   AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1386 fi
1387
1388 # libRTMP
1389 if test "$use_librtmp" != "no"; then
1390   AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1391    [if test "$use_librtmp" = "yes"; then
1392       AC_MSG_ERROR($librtmp_not_found)
1393     elif test "$use_librtmp" != "no"; then
1394       AC_MSG_NOTICE($librtmp_not_found)
1395       use_librtmp="no"
1396     fi
1397    ])
1398   if test "$use_librtmp" != "no"; then
1399     XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1400   fi
1401   if test "$use_librtmp" != "no"; then
1402     AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1403   fi
1404 else
1405   AC_MSG_NOTICE($librtmp_disabled)
1406 fi
1407
1408 # samba
1409 if test "x$use_samba" != "xno"; then
1410   AC_CHECK_LIB([smbclient], [main],,
1411     use_samba=no;AC_MSG_ERROR($missing_library))
1412     USE_LIBSMBCLIENT=0
1413 else
1414   AC_MSG_RESULT($samba_disabled)
1415   USE_LIBSMBCLIENT=0
1416 fi
1417
1418 if test "x$use_samba" != "xno"; then
1419   AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1420   USE_LIBSMBCLIENT=1
1421 fi
1422
1423 # libnfs
1424 if test "$use_libnfs" != "no"; then
1425   AC_CHECK_HEADERS([nfsc/libnfs.h],,
1426    [if test "$use_libnfs" = "yes"; then
1427       AC_MSG_ERROR($libnfs_not_found)
1428       USE_LIBNFS=0
1429     elif test "$use_libnfs" != "no"; then
1430       AC_MSG_NOTICE($libnfs_not_found)
1431       use_libnfs="no"
1432       USE_LIBNFS=0
1433     fi
1434    ])
1435   if test "$use_libnfs" != "no"; then
1436     XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1437   fi
1438   if test "$use_libnfs" != "no"; then
1439     AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1440     USE_LIBNFS=1
1441   fi
1442 else
1443   USE_LIBNFS=0
1444   AC_MSG_NOTICE($libnfs_disabled)
1445 fi
1446
1447 # libafpclient
1448 USE_LIBAFPCLIENT=0
1449 if test "x$use_libafpclient" != "xno"; then
1450   AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1451    [if test "x$use_libafpclient" = "xyes"; then
1452       AC_MSG_ERROR($libafpclient_not_found)
1453     elif test "x$use_libafpclient" != "xno"; then
1454       AC_MSG_NOTICE($libafpclient_not_found)
1455       use_libafpclient="no"
1456     fi
1457    ])
1458   if test "x$use_libafpclient" != "xno"; then
1459     XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1460     AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1461     USE_LIBAFPCLIENT=1
1462   fi
1463 else
1464   AC_MSG_NOTICE($libafpclient_disabled)
1465 fi
1466
1467 # libplist for airplay feature
1468 USE_AIRPLAY=0
1469 if test "$use_airplay" != "no"; then
1470   AC_CHECK_HEADER([plist/plist.h],,
1471    [if test "$use_airplay" = "yes"; then
1472       AC_MSG_ERROR($libplist_not_found)
1473     elif test "$use_airplay" != "no"; then
1474       AC_MSG_NOTICE($libplist_not_found)
1475       use_airplay="no"
1476     fi
1477    ])
1478
1479   if test "$use_airplay" != "no"; then
1480     XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1481     USE_AIRPLAY=1
1482     AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1483   fi
1484 fi
1485
1486 # libshairplay for AirTunes (prefered lib)
1487 USE_AIRTUNES=0
1488 if test "x$use_airtunes" != "xno"; then
1489   AC_CHECK_HEADERS([shairplay/raop.h],,
1490    [if test "x$use_airtunes" = "xyes"; then
1491       AC_MSG_ERROR($libshairplay_not_found)
1492     elif test "x$use_airtunes" != "xno"; then
1493       AC_MSG_NOTICE($libshairplay_not_found)
1494       use_airtunes="no"
1495     fi
1496    ])
1497
1498   if test "x$use_airtunes" != "xno"; then
1499     XB_FIND_SONAME([SHAIRPLAY], [shairplay], [use_airtunes])
1500     USE_AIRTUNES=1
1501     USE_LIBSHAIRPORT=1
1502     AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1503                      [[#include <shairplay/raop.h>]])
1504     AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1505   fi
1506
1507   #libshairport - as a fallback for AirTunes
1508   if test "x$USE_AIRTUNES" == "x0"; then
1509     AC_CHECK_HEADERS([shairport/shairport.h],,
1510      [if test "x$use_airtunes" = "xyes"; then
1511         AC_MSG_ERROR($libshairport_not_found)
1512       elif test "x$use_airtunes" != "xno"; then
1513         AC_MSG_NOTICE($libshairport_not_found)
1514         use_airtunes="no"
1515       fi
1516      ])
1517
1518     if test "x$use_airtunes" != "xno"; then
1519       XB_FIND_SONAME([SHAIRPORT], [shairport], [use_airtunes])
1520       USE_AIRTUNES=1
1521       AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1522                        [[#include <shairport/shairport.h>]])
1523       AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1524     fi
1525   fi
1526 fi
1527
1528 # libudev
1529 USE_LIBUDEV=0
1530 if test "$host_vendor" = "apple" ; then
1531   use_libudev="no"
1532   AC_MSG_NOTICE($libudev_disabled)
1533 else
1534   if test "$use_libudev" = "auto"; then
1535     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1536   elif test "$use_libudev" = "yes" ; then
1537     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1538   else
1539     AC_MSG_NOTICE($libudev_disabled)
1540   fi
1541
1542   if test "x$use_libudev" != "xno"; then
1543     USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1544     AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1545   fi
1546 fi
1547
1548 # libusb
1549 USE_LIBUSB=0
1550
1551 # if libudev is available, we don't need libusb
1552 if test "x$use_libudev" != "xno"; then
1553   use_libusb="no"
1554   AC_MSG_NOTICE($libusb_disabled_udev_found)
1555 else
1556   if test "$host_vendor" = "apple" ; then
1557     use_libusb="no"
1558     AC_MSG_NOTICE($libusb_disabled)
1559   else
1560     if echo "$ARCH" | grep -q freebsd ; then
1561       AC_CHECK_LIB([usb],[main],
1562                 [use_libusb="yes";USB_LIBS="-lusb"],
1563                 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1564     elif test "$use_libusb" = "auto"; then
1565       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1566     elif test "$use_libusb" = "yes"; then
1567       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1568     else
1569       AC_MSG_NOTICE($libusb_disabled)
1570     fi
1571   
1572     if test "x$use_libusb" != "xno"; then
1573       USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1574       AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1575     fi
1576   fi
1577 fi
1578
1579 # libcec
1580 USE_LIBCEC=0
1581 if test "x$use_libcec" != "xno"; then
1582   # libcec is dyloaded, so we need to check for its headers and link any depends.
1583   if test "x$use_libcec" != "xno"; then
1584     if test "x$use_libcec" != "xauto"; then
1585       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1586     else
1587       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1588     fi
1589
1590     if test "x$use_libcec" != "xno"; then
1591       INCLUDES="$INCLUDES $CEC_CFLAGS"
1592       USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1593       XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1594       AC_MSG_NOTICE($libcec_enabled)
1595     else
1596       use_libcec="no"
1597       AC_MSG_NOTICE($libcec_disabled)
1598     fi
1599   fi
1600 else
1601   use_libcec="no"
1602   AC_MSG_NOTICE($libcec_disabled)
1603 fi
1604
1605 # libcap
1606 if test "$use_libcap" != "no"; then
1607   AC_CHECK_HEADERS([sys/capability.h],,
1608    [if test "$use_libcap" = "yes"; then
1609       AC_MSG_ERROR($libcap_not_found)
1610     elif test "$use_libcap" != "no"; then
1611       AC_MSG_NOTICE($libcap_not_found)
1612       use_libcap="no"
1613     fi
1614    ])
1615   if test "$use_libcap" != "no"; then
1616     AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1617   fi
1618   if test "$use_libcap" != "no"; then
1619     AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1620   fi
1621 else
1622   AC_MSG_NOTICE($libcap_disabled)
1623 fi
1624
1625 ### External libraries checks
1626
1627 # Hacks for supporting libav
1628
1629 USE_LIBAV_HACKS=0
1630 if test "$use_libav_hacks" = "yes"; then
1631     export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1632     USE_LIBAV_HACKS=1
1633     AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1634 fi
1635
1636 # External FFmpeg
1637 if test "$use_external_ffmpeg" = "yes"; then
1638   FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1639
1640   PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1641                     [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1642                     AC_MSG_ERROR($missing_library))
1643
1644   # in case the headers are in a custom directory
1645   SAVE_CPPFLAGS="$CPPFLAGS"
1646   CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1647
1648   AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1649   [AC_MSG_ERROR($missing_headers)])
1650
1651   AC_MSG_NOTICE($external_ffmpeg_enabled)
1652   USE_EXTERNAL_FFMPEG=1
1653   AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1654
1655   CPPFLAGS="$SAVE_CPPFLAGS"
1656 else
1657   AC_MSG_NOTICE($external_ffmpeg_disabled)
1658   USE_EXTERNAL_FFMPEG=0
1659 fi
1660
1661 echo "Checking for SWIG installation"
1662 AC_PATH_PROG(SWIG_EXE, swig, "none")
1663 if test "$SWIG_EXE" = "none"; then
1664   AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1665   if test "$SWIG20_EXE" != "none" ; then
1666     SWIG_EXE=$SWIG20_EXE
1667   fi
1668 fi
1669 if test "$SWIG_EXE" = "none"; then
1670   AC_MSG_ERROR($missing_program)
1671 fi
1672 final_message="$final_message\n  SWIG Available:\tYes"
1673
1674 echo "Checking for a jre installation"
1675 AC_PATH_PROG(JAVA_EXE, java, "none")
1676 if test "$JAVA_EXE" = "none"; then
1677   AC_MSG_ERROR($missing_program)
1678 fi
1679 final_message="$final_message\n  JRE Available:\tYes"
1680
1681 echo "Checking for doxygen installation"
1682 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1683 if test "$DOXYGEN_EXE" = "none"; then
1684   AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1685   final_message="$final_message\n  Doxygen Available:\tNo"
1686   USE_DOXYGEN=0
1687 else
1688   final_message="$final_message\n  Doxygen Available:\tYes"
1689   USE_DOXYGEN=1
1690 fi
1691
1692 # VDPAU
1693 if test "x$use_vdpau" != "xno"; then
1694   if test "$host_vendor" = "apple" ; then
1695     if test "x$use_vdpau" = "xyes"; then
1696       AC_MSG_ERROR([VDPAU not supported on this platform])
1697     else
1698       use_vdpau="no"
1699       AC_MSG_NOTICE($vdpau_disabled)
1700     fi
1701     USE_VDPAU=0
1702   else
1703     USE_VDPAU=1
1704     AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1705       [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1706     [if test "x$use_vdpau" = "xyes"; then
1707       USE_VDPAU=0
1708       AC_MSG_ERROR([$vdpau_not_found])
1709     else
1710       use_vdpau="no"
1711       USE_VDPAU=0
1712       AC_MSG_RESULT($vdpau_not_found)
1713     fi])
1714   fi
1715 else
1716   USE_VDPAU=0
1717   AC_MSG_NOTICE($vdpau_disabled)
1718 fi
1719
1720 # VAAPI
1721 if test "x$use_vaapi" != "xno"; then
1722   if test "$host_vendor" = "apple" ; then
1723     if test "x$use_vaapi" = "xyes"; then
1724       AC_MSG_ERROR([VAAPI not supported on this platform])
1725     else
1726       use_vaapi="no"
1727       AC_MSG_NOTICE($vaapi_disabled)
1728     fi
1729     USE_VAAPI=0
1730   else
1731     initial_val=$use_vaapi
1732     AC_CHECK_LIB([va], main, :, use_vaapi=no)
1733     if test "x$use_vaapi" != "xno"; then
1734       AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1735     fi
1736
1737     if test "x$use_vaapi" = "xno"; then
1738       if test "x$initial_val" = "xyes"; then
1739         AC_MSG_ERROR($vaapi_not_found)
1740       else
1741         AC_MSG_RESULT($vaapi_not_found)
1742       fi
1743       USE_VAAPI=0
1744     else
1745       AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1746       USE_VAAPI=1
1747     fi
1748   fi
1749 else
1750   AC_MSG_NOTICE($vaapi_disabled)
1751   USE_VAAPI=0
1752 fi
1753
1754 # CrystalHD
1755 if test "x$use_crystalhd" != "xno"; then
1756   SAVE_CFLAGS="$CFLAGS"
1757   CFLAGS="-D__LINUX_USER__"
1758   AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1759     [ if test "x$use_crystalhd" = "xyes"; then
1760         AC_MSG_ERROR($crystalhd_not_found)
1761       else
1762         use_crystalhd=no
1763         AC_MSG_RESULT($crystalhd_not_found)
1764       fi
1765       USE_CRYSTALHD=0
1766     ])
1767     CFLAGS="$SAVE_CFLAGS"
1768     if test "$host_vendor" != "apple"; then
1769       XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1770     fi
1771     if test "x$use_crystalhd" != "xno"; then
1772       SAVE_CFLAGS="$CFLAGS"
1773       CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1774       # check for new crystalhd lib
1775       AC_COMPILE_IFELSE(
1776         [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1777           #include <libcrystalhd/bc_dts_defs.h>
1778           PBC_INFO_CRYSTAL bCrystalInfo;])],
1779         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ], 
1780         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1781       CFLAGS="$SAVE_CFLAGS"
1782       USE_CRYSTALHD=1
1783     fi
1784 else
1785   AC_MSG_NOTICE($crystalhd_disabled)
1786   USE_CRYSTALHD=0
1787 fi
1788
1789 # VTBDecoder
1790 if test "x$use_vtbdecoder" != "xno"; then
1791   if test "$host_vendor" = "apple" ; then
1792     HAVE_VIDEOTOOLBOXDECODER=1
1793     AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1794     AC_MSG_NOTICE($vtbdecoder_enabled)
1795   else
1796     if test "x$use_vtbdecoder" = "xyes"; then
1797       AC_MSG_ERROR([VTB Decoder not supported on this platform])
1798     else
1799       use_vtbdecoder="no"
1800       AC_MSG_NOTICE($vtbdecoder_disabled)
1801     fi
1802   fi
1803 else
1804   AC_MSG_NOTICE($vtbdecoder_disabled)
1805 fi
1806
1807 # OpenMax
1808 if test "$host_vendor" = "apple" ; then
1809   use_openmax="no"
1810   USE_OPENMAX=0
1811   AC_MSG_NOTICE($openmax_disabled)
1812 elif test "$target_platform" = "target_raspberry_pi"; then
1813   use_openmax="no"
1814   USE_OPENMAX=0
1815   AC_MSG_NOTICE($openmax_disabled)
1816 else
1817   if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1818     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1819                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1820                       use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1821   elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1822     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1823                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1824                       AC_MSG_ERROR($openmax_not_found))
1825   else
1826     AC_MSG_NOTICE($openmax_disabled)
1827     use_openmax=no
1828     USE_OPENMAX=0
1829   fi
1830 fi
1831
1832 # yajl version check (yajl_version.h was added in yajl 2.0)
1833 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1834 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1835 ], [])
1836
1837 # additional internal players
1838 case $add_players in
1839   *amlplayer*)
1840       AC_CHECK_HEADER([amlplayer/amports/amstream.h],, AC_MSG_ERROR($missing_headers))
1841       XB_ADD_PLAYER([AMLPLAYER], [amlplayer])
1842       ;;
1843   *omxplayer*)
1844       XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1845       ;;
1846 esac
1847
1848 # additional internal codecs
1849 case $add_codecs in
1850   *amcodec*)
1851       AC_CHECK_HEADER([amlplayer/codec_error.h],, AC_MSG_ERROR($missing_headers))
1852       XB_ADD_CODEC([LIBAMCODEC], [amcodec])
1853       ;;
1854   *libstagefright*)
1855       LIBS+="-L${prefix}/opt/android-libs -lstdc++ -lutils -lcutils -lstagefright -lbinder -lui -lgui"
1856       XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright])
1857       ;;
1858   *)
1859 esac
1860
1861 # platform specific bin utilities
1862 if test "$build_vendor" != "apple" ; then
1863   AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1864   if test "$HAVE_GAWK" = "no" ; then
1865     AC_MSG_ERROR($missing_program)
1866   fi
1867 fi
1868
1869 if test "$use_arch" != "arm" ; then
1870   AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1871   if test "$HAVE_CMAKE" = "no" ; then
1872     AC_MSG_ERROR($missing_program)
1873   fi
1874 fi
1875
1876 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
1877 if test "$HAVE_GPERF" = "no" ; then
1878   AC_MSG_ERROR($missing_program)
1879 fi
1880
1881 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
1882 if test "$HAVE_UNZIP" = "no" ; then
1883   AC_MSG_ERROR($missing_program)
1884 fi
1885
1886 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
1887 if test "$HAVE_ZIP" = "no" ; then
1888   AC_MSG_ERROR($missing_program)
1889 fi
1890
1891 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
1892   AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
1893   if test "$HAVE_NASM" = "no" ; then
1894     AC_MSG_ERROR($missing_program)
1895   fi
1896 fi
1897
1898 # Checks for header files.
1899 AC_HEADER_DIRENT
1900 AC_HEADER_STDC
1901 AC_HEADER_SYS_WAIT
1902 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
1903   malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
1904   strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
1905   sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
1906 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
1907
1908 # Checks for typedefs, structures, and compiler characteristics.
1909 AC_HEADER_STAT
1910 AC_HEADER_STDBOOL
1911 AC_C_CONST
1912 AC_TYPE_UID_T
1913 AC_C_INLINE
1914 AC_TYPE_INT8_T
1915 AC_TYPE_INT16_T
1916 AC_TYPE_INT32_T
1917 AC_TYPE_INT64_T
1918 AC_TYPE_MODE_T
1919 AC_TYPE_OFF_T
1920 AC_TYPE_PID_T
1921 AC_C_RESTRICT
1922 AC_TYPE_SIZE_T
1923 AC_TYPE_SSIZE_T
1924 AC_CHECK_MEMBERS([struct stat.st_rdev])
1925 AC_HEADER_TIME
1926 AC_STRUCT_TM
1927 AC_TYPE_UINT8_T
1928 AC_TYPE_UINT16_T
1929 AC_TYPE_UINT32_T
1930 AC_TYPE_UINT64_T
1931 AC_C_BIGENDIAN
1932
1933 if test "$cross_compiling" = "yes"; then
1934   final_message="$final_message\n  Crosscomp.:\tYes"
1935 else
1936   final_message="$final_message\n  Crosscomp.:\tNo"
1937 fi
1938
1939 final_message="$final_message\n  target ARCH:\t$use_arch"
1940 final_message="$final_message\n  target CPU:\t$use_cpu"
1941
1942 if test "$use_gles" = "yes"; then
1943   final_message="$final_message\n  OpenGLES:\tYes"
1944   USE_OPENGLES=1
1945   USE_OPENGL=0
1946 else
1947   USE_OPENGLES=0
1948   if test "$use_gl" = "yes"; then
1949     final_message="$final_message\n  OpenGL:\tYes"
1950     USE_OPENGL=1
1951   else
1952     final_message="$final_message\n  OpenGL:\tNo (Very Slow)"
1953     SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
1954     USE_OPENGL=0
1955   fi
1956 fi
1957
1958 if test "$use_alsa" = "yes"; then
1959   USE_ALSA=1
1960   AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
1961   final_message="$final_message\n  ALSA:\t\tYes"
1962 else
1963   USE_ALSA=0
1964   final_message="$final_message\n  ALSA:\t\tNo"
1965 fi
1966
1967 if test "$use_dbus" = "yes"; then
1968   final_message="$final_message\n  DBUS:\t\tYes"
1969 else
1970   final_message="$final_message\n  DBUS:\t\tNo"
1971 fi
1972
1973 if test "x$use_vdpau" != "xno"; then
1974   final_message="$final_message\n  VDPAU:\tYes"
1975 else
1976   final_message="$final_message\n  VDPAU:\tNo"
1977 fi
1978
1979 if test "x$use_vaapi" != "xno"; then
1980   final_message="$final_message\n  VAAPI:\tYes"
1981 else
1982   final_message="$final_message\n  VAAPI:\tNo"
1983 fi
1984
1985 if test "x$use_crystalhd" != "xno"; then
1986   final_message="$final_message\n  CrystalHD:\tYes"
1987 else
1988   final_message="$final_message\n  CrystalHD:\tNo"
1989 fi
1990
1991 if test "x$use_vtbdecoder" != "xno"; then
1992   final_message="$final_message\n  VTBDecoder:\tYes"
1993 else
1994   final_message="$final_message\n  VTBDecoder:\tNo"
1995 fi
1996
1997 if test "$use_openmax" != "no"; then
1998   final_message="$final_message\n  OpenMax:\tYes"
1999 else
2000   final_message="$final_message\n  OpenMax:\tNo"
2001 fi
2002
2003 if test "$use_joystick" = "yes"; then
2004   final_message="$final_message\n  Joystick:\tYes"
2005   SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2006 else
2007   final_message="$final_message\n  Joystick:\tNo"
2008 fi
2009
2010 if test "$use_xrandr" = "yes"; then
2011   final_message="$final_message\n  XRandR:\tYes"
2012   USE_XRANDR=1
2013 else
2014   final_message="$final_message\n  XRandR:\tNo"
2015   USE_XRANDR=0
2016 fi
2017
2018 if test "$use_goom" = "yes"; then
2019   final_message="$final_message\n  GOOM:\t\tYes"
2020 else
2021   final_message="$final_message\n  GOOM:\t\tNo"
2022 fi
2023
2024 if test "$use_rsxs" = "yes"; then
2025   final_message="$final_message\n  RSXS:\t\tYes"
2026 else
2027   final_message="$final_message\n  RSXS:\t\tNo"
2028 fi
2029
2030 if test "$use_fishbmc" = "yes"; then
2031   final_message="$final_message\n  FishBMC:\tYes"
2032 else
2033   final_message="$final_message\n  FishBMC:\tNo"
2034 fi
2035
2036 if test "$use_projectm" = "yes"; then
2037   final_message="$final_message\n  ProjectM:\tYes"
2038 else
2039   final_message="$final_message\n  ProjectM:\tNo"
2040 fi
2041
2042 if test "$use_skin_touched" = "yes"; then
2043   final_message="$final_message\n  Skin Touched:\tYes"
2044 else
2045   final_message="$final_message\n  Skin Touched:\tNo"
2046 fi
2047
2048 if test "$use_x11" = "yes"; then
2049   final_message="$final_message\n  X11:\t\tYes"
2050 else
2051   final_message="$final_message\n  X11:\t\tNo"
2052 fi
2053
2054 if test "$use_libbluray" = "yes"; then
2055   final_message="$final_message\n  Bluray:\tYes"
2056 else
2057   final_message="$final_message\n  Bluray:\tNo"
2058 fi
2059
2060 USE_TEXTUREPACKER_NATIVE=0
2061 if test "x$use_texturepacker" != "xno"; then
2062   final_message="$final_message\n  TexturePacker:Yes"
2063   USE_TEXTUREPACKER=1
2064   if test "x$use_texturepacker_native" = "xyes"; then
2065     USE_TEXTUREPACKER_NATIVE=1
2066     if [[ ! -d "$USE_TEXTUREPACKER_NATIVE_ROOT" ]]; then 
2067       USE_TEXTUREPACKER_NATIVE_ROOT= 
2068     fi
2069   fi
2070 else
2071   final_message="$final_message\n  TexturePacker:No"
2072   USE_TEXTUREPACKER=0
2073 fi
2074
2075 if test "$use_mid" = "yes"; then
2076   final_message="$final_message\n  MID Support:\tYes"
2077   SDL_DEFINES="$SDL_DEFINES -DMID"
2078 else
2079   final_message="$final_message\n  MID Support:\tNo"
2080 fi
2081
2082 ORIGCC=$CC
2083 ORIGCXX=$CXX
2084 if test "x$use_ccache" != "xno"; then
2085   AC_PATH_PROG(CCACHE,ccache,none)
2086   if test "$ac_cv_path_CCACHE" = "none"; then
2087     if test "x$use_ccache" = "xyes"; then
2088       AC_MSG_ERROR([ccache not found.]);
2089     else
2090       AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2091       final_message="$final_message\n  ccache:\tNo"
2092     fi
2093   else
2094     CC="$ac_cv_path_CCACHE $CC"
2095     CXX="$ac_cv_path_CCACHE $CXX"
2096     AC_MSG_NOTICE(enabling ccache)
2097     final_message="$final_message\n  ccache:\tYes"
2098   fi
2099 else
2100   final_message="$final_message\n  ccache:\tNo"
2101 fi
2102
2103 if test "$use_alsa" = "yes"; then
2104   final_message="$final_message\n  ALSA Support:\tYes"
2105 else
2106   final_message="$final_message\n  ALSA Support:\tNo"
2107 fi
2108
2109 if test "x$use_pulse" != "xno"; then
2110   XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2111   final_message="$final_message\n  PulseAudio:\tYes"
2112 else
2113   XBMC_STANDALONE_SH_PULSE=/dev/null
2114   final_message="$final_message\n  PulseAudio:\tNo"
2115 fi
2116
2117 if test "$use_hal" = "yes"; then
2118   final_message="$final_message\n  HAL Support:\tYes"
2119 else
2120   final_message="$final_message\n  HAL Support:\tNo"
2121 fi
2122
2123 # DVDCSS
2124 if test "$use_dvdcss" = "yes"; then
2125   AC_MSG_NOTICE($dvdcss_enabled)
2126   final_message="$final_message\n  DVDCSS:\tYes"
2127   BUILD_DVDCSS=1
2128   SKIP_CONFIG_DVDCSS=0
2129   DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2130 else
2131   AC_MSG_NOTICE($dvdcss_disabled)
2132   final_message="$final_message\n  DVDCSS:\tNo"
2133   BUILD_DVDCSS=0
2134   SKIP_CONFIG_DVDCSS=1
2135   DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2136 fi
2137 if test "$host_vendor" = "apple"; then
2138  DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2139 fi
2140
2141 # Google Test Framework
2142 if test "$configure_gtest" = "yes"; then
2143   AC_MSG_NOTICE($gtest_enabled)
2144   final_message="$final_message\n  Google Test Framework Configured:\tYes"
2145   GTEST_CONFIGURED=1
2146   SKIP_CONFIG_GTEST=0
2147 else
2148   AC_MSG_NOTICE($gtest_disabled)
2149   final_message="$final_message\n  Google Test Framework Configured:\tNo"
2150   GTEST_CONFIGURED=0
2151   SKIP_CONFIG_GTEST=1
2152 fi
2153
2154 if test "$use_avahi" = "yes"; then
2155   final_message="$final_message\n  Avahi:\tYes"
2156 else
2157   final_message="$final_message\n  Avahi:\tNo"
2158 fi
2159
2160 if test "$use_mdnsembedded" != "no"; then
2161   final_message="$final_message\n  mDNSEmbedded:\tYes"
2162 else
2163   final_message="$final_message\n  mDNSEmbedded:\tNo"
2164 fi
2165
2166 if test "$use_nonfree" = "yes"; then
2167   final_message="$final_message\n  Non-free:\tYes"
2168   HAVE_XBMC_NONFREE=1
2169   AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2170 else
2171   HAVE_XBMC_NONFREE=0
2172   final_message="$final_message\n  Non-free:\tNo"
2173 fi
2174
2175 if test "$use_asap" = "yes"; then
2176   AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2177   if test "$HAVE_GDC" = "no"; then
2178     AC_MSG_ERROR($missing_program);
2179   fi
2180   AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2181   if test "$HAVE_FPC" = "no"; then
2182     AC_MSG_ERROR($missing_program);
2183   fi
2184   USE_ASAP_CODEC=1
2185   AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2186   final_message="$final_message\n  ASAP Codec:\tYes"
2187 else
2188   USE_ASAP_CODEC=0
2189   final_message="$final_message\n  ASAP Codec:\tNo"
2190 fi
2191
2192 if test "$use_mysql" = "yes"; then
2193   final_message="$final_message\n  MySQL:\tYes"
2194   USE_MYSQL=1
2195 else
2196   final_message="$final_message\n  MySQL:\tNo"
2197   USE_MYSQL=0
2198 fi
2199 if test "$use_webserver" = "yes"; then
2200   final_message="$final_message\n  Webserver:\tYes"
2201   USE_WEB_SERVER=1
2202 else
2203   final_message="$final_message\n  Webserver:\tNo"
2204   USE_WEB_SERVER=0
2205 fi
2206
2207 if test "$use_libssh" != "no"; then
2208   final_message="$final_message\n  libssh support:\tYes"
2209 else
2210   final_message="$final_message\n  libssh support:\tNo"
2211 fi
2212
2213 if test "$use_librtmp" != "no"; then
2214   final_message="$final_message\n  libRTMP support:\tYes"
2215 else
2216   final_message="$final_message\n  libRTMP support:\tNo"
2217 fi
2218
2219 if test "x$use_samba" != "xno"; then
2220   final_message="$final_message\n  libsmbclient support:\tYes"
2221 else
2222   final_message="$final_message\n  libsmbclient support:\tNo"
2223 fi
2224
2225 if test "$use_libnfs" != "no"; then
2226   final_message="$final_message\n  libnfs client support:Yes"
2227 else
2228   final_message="$final_message\n  libnfs client support:No"
2229 fi
2230
2231 if test "x$use_libafpclient" != "xno"; then
2232   final_message="$final_message\n  libafpclient support:\tYes"
2233 else  
2234   final_message="$final_message\n  libafpclient support:\tNo"
2235 fi
2236
2237 if test "$use_airplay" != "no"; then
2238   final_message="$final_message\n  AirPlay support:\tYes"
2239 else
2240   final_message="$final_message\n  AirPLay support:\tNo"
2241 fi
2242
2243 if test "x$use_airtunes" != "xno"; then
2244   if test "x$USE_LIBSHAIRPORT" == "x1"; then
2245     final_message="$final_message\n  AirTunes support (libshairplay):\tYes"  
2246   else
2247     final_message="$final_message\n  AirTunes support (libshairport):\tYes"
2248   fi
2249 else
2250   final_message="$final_message\n  AirTunes support:\tNo"
2251 fi
2252
2253 if test "x$use_upnp" != "xno"; then
2254   final_message="$final_message\n  UPnP support:\t\tYes"
2255   USE_UPNP=1
2256   AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2257 else
2258   USE_UPNP=0
2259   final_message="$final_message\n  UPnP support:\t\tNo"
2260 fi
2261
2262 if test "$use_optical_drive" = "yes"; then
2263   final_message="$final_message\n  Optical drive:\tYes"
2264 else
2265   final_message="$final_message\n  Optical drive:\tNo"
2266 fi
2267
2268 if test "x$use_libudev" != "xno"; then
2269   final_message="$final_message\n  libudev support:\tYes"
2270 else
2271   final_message="$final_message\n  libudev support:\tNo"
2272 fi
2273
2274 if test "x$use_libusb" != "xno"; then
2275   final_message="$final_message\n  libusb support:\tYes"
2276 else
2277   final_message="$final_message\n  libusb support:\tNo"
2278 fi
2279
2280 if test "x$use_libcec" != "xno"; then
2281   final_message="$final_message\n  libcec support:\tYes"
2282 else
2283   final_message="$final_message\n  libcec support:\tNo"
2284 fi
2285
2286 if test "x$use_libmp3lame" != "xno"; then
2287   final_message="$final_message\n  libmp3lame support:\tYes"
2288 else
2289   final_message="$final_message\n  libmp3lame support:\tNo"
2290 fi
2291
2292 if test "x$use_libvorbisenc" != "xno"; then
2293   final_message="$final_message\n  libvorbisenc support:\tYes"
2294 else
2295   final_message="$final_message\n  libvorbisenc support:\tNo"
2296 fi
2297
2298 if test "x$use_libcap" != "xno"; then
2299   final_message="$final_message\n  libcap support:\tYes"
2300 else
2301   final_message="$final_message\n  libcap support:\tNo"
2302 fi
2303
2304 if test "x$add_players" != "xno"; then
2305   final_message="$final_message\n  additional players:\tYes"
2306 else
2307   final_message="$final_message\n  additional players:\tNo"
2308 fi
2309
2310 ### External libraries messages
2311
2312 if test "$use_external_ffmpeg" = "yes"; then
2313   final_message="$final_message\n  External FFmpeg:\tYes"
2314 else
2315   final_message="$final_message\n  External FFmpeg:\tNo"
2316 fi
2317
2318 if test "$host_vendor" = "apple" ; then
2319   # built internal but referenced as external, we link directly to them.
2320   # this MUST be the last thing before OUTPUT_FILES as they do not
2321   # exist until after we build FFMpeg.
2322   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2323   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2324   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2325   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2326   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2327   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2328   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2329 fi
2330
2331 USE_PVR_ADDONS=0
2332 DISABLE_PVR_ADDON_CONFIG=1
2333 if [[ -f "pvr-addons/Makefile.am" ]]; then
2334   final_message="$final_message\n  PVR add-ons:\t\tYes"
2335   USE_PVR_ADDONS=1
2336   DISABLE_PVR_ADDON_CONFIG=0
2337 else
2338   final_message="$final_message\n  PVR add-ons:\t\tNo"
2339 fi
2340
2341 OUTPUT_FILES="Makefile \
2342     Makefile.include \
2343     addons/skin.confluence/media/Makefile \
2344     xbmc/Makefile \
2345     xbmc/cdrip/Makefile \
2346     xbmc/cores/Makefile \
2347     xbmc/cores/VideoRenderers/Makefile \
2348     xbmc/cores/dvdplayer/Makefile \
2349     lib/Makefile \
2350     lib/libdvd/Makefile \
2351     xbmc/cores/DllLoader/Makefile \
2352     xbmc/cores/DllLoader/exports/Makefile \
2353     xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2354     xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2355     xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2356     xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2357     xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2358     xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2359     xbmc/cores/AudioEngine/Makefile \
2360     xbmc/cores/paplayer/Makefile \
2361     xbmc/cores/amlplayer/Makefile \
2362     xbmc/cores/omxplayer/Makefile \
2363     lib/timidity/Makefile \
2364     lib/xbadpcm/Makefile \
2365     lib/asap/Makefile \
2366     lib/nosefart/Makefile \
2367     lib/libsidplay2/Makefile \
2368     lib/vgmstream/Makefile \
2369     lib/snesapu/SNES/SNESAPU/Makefile \
2370     lib/stsound/StSoundLibrary/Makefile \
2371     xbmc/cores/playercorefactory/Makefile \
2372     xbmc/music/karaoke/Makefile \
2373     xbmc/osx/Makefile \
2374     xbmc/guilib/Makefile \
2375     xbmc/interfaces/Makefile \
2376     xbmc/network/Makefile \
2377     xbmc/network/upnp/Makefile \
2378     lib/libRTV/Makefile \
2379     lib/libexif/Makefile \
2380     lib/libXDAAP/Makefile \
2381     lib/cmyth/Makefile \
2382     lib/libhdhomerun/Makefile \
2383     lib/libsquish/Makefile \
2384     lib/cximage-6.0/Makefile \
2385     lib/libUPnP/Makefile \
2386     xbmc/DllPaths_generated.h \
2387     xbmc/DllPaths_generated_android.h \
2388     xbmc/freebsd/Makefile \
2389     xbmc/linux/Makefile \
2390     xbmc/filesystem/Makefile \
2391     xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2392     xbmc/visualizations/XBMCProjectM/Makefile \
2393     xbmc/visualizations/Goom/Makefile \
2394     xbmc/visualizations/OpenGLSpectrum/Makefile \
2395     xbmc/visualizations/fishBMC/Makefile \
2396     xbmc/visualizations/WaveForm/Makefile \
2397     lib/addons/library.xbmc.addon/Makefile \
2398     lib/addons/library.xbmc.codec/Makefile \
2399     lib/addons/library.xbmc.gui/Makefile \
2400     lib/addons/library.xbmc.pvr/Makefile \
2401     xbmc/visualizations/EGLHelpers/Makefile \
2402     tools/Linux/xbmc.sh \
2403     tools/Linux/xbmc-standalone.sh \
2404     tools/TexturePacker/Makefile \
2405     tools/EventClients/Clients/OSXRemote/Makefile \
2406     xbmc/peripherals/bus/Makefile \
2407     xbmc/peripherals/devices/Makefile \
2408     xbmc/android/activity/Makefile \
2409     xbmc/android/loader/Makefile \
2410     xbmc/android/jni/Makefile \
2411     xbmc/utils/Makefile \
2412     xbmc/main/Makefile"
2413
2414 if test "$use_skin_touched" = "yes"; then
2415 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2416 fi
2417
2418 OUTPUT_FILES="$OUTPUT_FILES \
2419   xbmc/interfaces/python/Makefile \
2420   xbmc/interfaces/python/test/Makefile"
2421
2422 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2423 # .dummy.am does nothing.
2424 AC_CONFIG_FILES([.dummy])
2425
2426 AC_CONFIG_FILES([${OUTPUT_FILES}])
2427 OUTPUT_FILES="$OUTPUT_FILES \
2428   .dummy"
2429 AC_SUBST(CFLAGS)
2430 AC_SUBST(CXXFLAGS)
2431 AC_SUBST(INCLUDES)
2432 AC_SUBST(LDFLAGS)
2433 AC_SUBST(SDL_DEFINES)
2434 AC_SUBST(BUILD_DVDCSS)
2435 AC_SUBST(DISABLE_GOOM)
2436 AC_SUBST(DISABLE_RSXS)
2437 AC_SUBST(DISABLE_FISHBMC)
2438 AC_SUBST(DISABLE_PROJECTM)
2439 AC_SUBST(USE_SKIN_TOUCHED)
2440 AC_SUBST(USE_EXTERNAL_FFMPEG)
2441 AC_SUBST(USE_LIBAV_HACKS)
2442 AC_SUBST(PYTHON_VERSION)
2443 AC_SUBST(OUTPUT_FILES)
2444 AC_SUBST(HAVE_XBMC_NONFREE)
2445 AC_SUBST(USE_ASAP_CODEC)
2446 AC_SUBST(LIBCURL_BASENAME)
2447 AC_SUBST(LIBFLAC_BASENAME)
2448 AC_SUBST(LIBVORBISFILE_BASENAME)
2449 AC_SUBST(LIBMODPLUG_BASENAME)
2450 AC_SUBST(LIBMAD_BASENAME)
2451 AC_SUBST(LIBOGG_BASENAME)
2452 AC_SUBST(LIBVORBISENC_BASENAME)
2453 AC_SUBST(LIBVORBIS_BASENAME)
2454 AC_SUBST(LIBASS_BASENAME)
2455 AC_SUBST(LIBMEPG2_BASENAME)
2456 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2457 AC_SUBST(USE_OPENGL)
2458 AC_SUBST(USE_OPENGLES)
2459 AC_SUBST(USE_VDPAU)
2460 AC_SUBST(USE_VAAPI)
2461 AC_SUBST(USE_CRYSTALHD)
2462 AC_SUBST(USE_LIBSMBCLIENT)
2463 AC_SUBST(USE_LIBNFS)
2464 AC_SUBST(USE_LIBAFPCLIENT)
2465 AC_SUBST(USE_AIRPLAY)
2466 AC_SUBST(USE_OPENMAX)
2467 AC_SUBST(USE_PULSE)
2468 AC_SUBST(USE_XRANDR)
2469 AC_SUBST(USE_ALSA)
2470 AC_SUBST(USE_TEXTUREPACKER)
2471 AC_SUBST(USE_TEXTUREPACKER_NATIVE)
2472 AC_SUBST(USE_TEXTUREPACKER_NATIVE_ROOT)
2473 AC_SUBST(USE_AIRTUNES)
2474 AC_SUBST(USE_LIBUDEV)
2475 AC_SUBST(USE_LIBUSB)
2476 AC_SUBST(USE_LIBCEC)
2477 AC_SUBST(USE_MYSQL)
2478 AC_SUBST(USE_WEB_SERVER)
2479 AC_SUBST(USE_UPNP)
2480 AC_SUBST(USE_OMXLIB)
2481 AC_SUBST(USE_ANDROID)
2482 AC_SUBST(GTEST_CONFIGURED)
2483 AC_SUBST(USE_DOXYGEN)
2484 AC_SUBST(USE_PVR_ADDONS)
2485
2486 # pushd and popd are not available in other shells besides bash, so implement
2487 # our own pushd/popd functions
2488 XB_DIRSTACK="$PWD"
2489 xb_pushd()
2490 {
2491   local dirname="$1"
2492   if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2493     cd "$dirname"
2494     XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2495     return 0
2496   else
2497     AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2498   fi
2499 }
2500 xb_popd()
2501 {
2502   if [[ -n "$XB_DIRSTACK" ]]; then
2503     XB_DIRSTACK="${XB_DIRSTACK#* }"
2504     cd "${XB_DIRSTACK%% *}"
2505     return 0
2506   else
2507     AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2508   fi
2509 }
2510
2511 # Function to run the configure scripts in our submodules
2512 # Consists of three paramaters, the path to the submodule, the configure command
2513 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2514 # running the script, anything else if not.
2515 AC_DEFUN([XB_CONFIG_MODULE],[
2516 AC_CONFIG_COMMANDS_POST([
2517 if [[ $3 != "1" ]]; then
2518     if [[ -d $1 ]]; then
2519       xb_pushd $1
2520       $2
2521       if [[ $? -ne 0 ]]; then
2522         xb_popd
2523         AC_MSG_ERROR([[Submodule $1 failed to configure]])
2524       else
2525         xb_popd
2526       fi
2527     else
2528       AC_MSG_ERROR([[Submodule $1 does not exist]])
2529     fi
2530 else
2531     AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2532 fi
2533 ])
2534 ])
2535
2536 XB_CONFIG_MODULE([lib/ffmpeg], [
2537   if test "$host_vendor" = "apple" ; then
2538     ffmpg_config="--target-os=$ffmpeg_target_os"
2539     # handle disables first, we do individual enables later
2540     ffmpg_config="$ffmpg_config --disable-muxers   --disable-encoders"
2541     ffmpg_config="$ffmpg_config --disable-devices  --disable-doc"
2542     ffmpg_config="$ffmpg_config --disable-ffplay   --disable-ffmpeg"
2543     ffmpg_config="$ffmpg_config --disable-ffprobe  --disable-ffserver"
2544     ffmpg_config="$ffmpg_config --enable-vda       --disable-crystalhd"
2545     ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2546
2547     # handle conditional enables/disables
2548     if test "$use_debug" = "no"; then
2549       ffmpg_config="$ffmpg_config --disable-debug"
2550     fi
2551     if test "$use_cpu"  != "no";  then
2552       ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2553     fi
2554     if test "$use_arch" != "no"; then
2555       ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2556     fi
2557     if test "$use_arch"  = "arm"; then
2558       ffmpg_config="$ffmpg_config --enable-pic"
2559       ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2560       if test "$use_neon"  = "yes"; then
2561         ffmpg_config="$ffmpg_config --enable-neon"
2562       else
2563         ffmpg_config="$ffmpg_config --disable-neon"
2564       fi
2565     else
2566       ffmpg_config="$ffmpg_config --disable-amd3dnow"
2567     fi
2568     if test "$use_ffmpeg_libvorbis" = "yes"; then
2569       ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2570     else
2571       ffmpg_config="$ffmpg_config --disable-libvorbis"
2572     fi
2573
2574     # handle individual enables
2575     ffmpg_config="$ffmpg_config --enable-gpl"
2576     ffmpg_config="$ffmpg_config --enable-postproc"
2577     ffmpg_config="$ffmpg_config --enable-static      --enable-pthreads"
2578     ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2579     ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2580     ffmpg_config="$ffmpg_config --enable-protocol=http"
2581     ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2582
2583     # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2584     case $CC in
2585       *llvm-gcc-4.2*)
2586         ffmpg_config="$ffmpg_config --cc=clang" ;;
2587       *)
2588         ffmpg_config="$ffmpg_config --cc=$CC" ;;
2589     esac
2590     
2591     # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2592     FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2593
2594     LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2595
2596     # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2597     # dependency files in the right place, replace it with something that works
2598     case $AS in
2599       *llvm-gcc-4.2*)
2600         sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2601     esac
2602
2603     # ffmpeg will use yasm found at ${prefix}/bin during configure
2604     # but then hardcodes 'yasm' in config.mak, fix it.
2605     sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2606     sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2607     sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2608   else
2609     CFLAGS="" \
2610     CPPFLAGS="" \
2611     CXXFLAGS="" \
2612     LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2613     ./configure \
2614       --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2615       --disable-static \
2616       `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2617       `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2618       `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2619       `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2620       `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2621       --target-os=$ffmpeg_target_os \
2622       --disable-muxers \
2623       --enable-muxer=spdif \
2624       --enable-muxer=adts \
2625       --enable-muxer=asf \
2626       --enable-muxer=ipod \
2627       --disable-encoders \
2628       --enable-encoder=ac3 \
2629       --enable-encoder=aac \
2630       --enable-encoder=wmav2 \
2631       `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2632       --disable-decoder=mpeg_xvmc \
2633       --disable-devices \
2634       --disable-ffprobe \
2635       --disable-ffplay \
2636       --disable-ffserver \
2637       --disable-ffmpeg \
2638       --disable-crystalhd \
2639       --enable-shared \
2640       --disable-doc \
2641       --enable-postproc \
2642       --enable-gpl \
2643       `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2644       `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2645       `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2646       --enable-protocol=http \
2647       --enable-pthreads \
2648       --enable-runtime-cpudetect \
2649       `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2650       `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2651       `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2652        else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2653       `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2654       --cc="$CC" &&
2655       sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2656       sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2657   fi
2658 ], [$USE_EXTERNAL_FFMPEG])
2659
2660 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2661   ./configure \
2662     CC="$CC" \
2663     CXX="$CXX" \
2664     CFLAGS="$CFLAGS" \
2665     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2666     --host=$host_alias \
2667     --build=$build_alias \
2668     --target=$target_alias \      
2669     --disable-doc \
2670     --enable-static \
2671     --with-pic
2672 ], [$SKIP_CONFIG_DVDCSS])
2673
2674 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2675   ./configure2 \
2676     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src" \
2677     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2678     --host=$host_alias \
2679     --build=$build_alias \
2680     --target=$target_alias \      
2681     --enable-static \
2682     --disable-shared \
2683     --disable-strip \
2684     --disable-opts \
2685     --cc="$CC" &&
2686   $MAKE dvdread-config &&
2687   mkdir -p `pwd`/../includes/dvdread
2688   cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2689   cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2690 ], [0])
2691
2692 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2693   ./configure2 \
2694     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes" \
2695     --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2696     --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
2697     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2698     --host=$host_alias \
2699     --build=$build_alias \
2700     --target=$target_alias \      
2701     --enable-static \
2702     --disable-shared \
2703     --cc="$CC"
2704 ], [0])
2705
2706 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2707   set -x
2708   rm -f CMakeCache.txt &&                              \
2709   CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2710     -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF        \
2711     -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}"     \
2712     -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2713     -DCMAKE_INSTALL_PREFIX="${prefix}"                 \
2714     -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}"            \
2715     -DINCLUDE_INSTALL_DIR:PATH="${includedir}"         \
2716     -DLIB_INSTALL_DIR:PATH="${libdir}"                 \
2717     -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}"         \
2718     -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2719   if test "$host_vendor" = "apple" ; then
2720     # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2721     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2722     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2723     sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2724   fi
2725   set +x
2726 ], [$DISABLE_PROJECTM])
2727
2728 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2729   ./configure  \
2730     CFLAGS="$CFLAGS" \ 
2731     CXXFLAGS="$CXXFLAGS" \
2732     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2733     --host=$host_alias \
2734     --build=$build_alias \
2735     --target=$target_alias \      
2736     --disable-shared \
2737     --enable-static \
2738     --with-pic
2739 ], [$DISABLE_GOOM])
2740
2741 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2742   if test "$host_vendor" = "apple"; then
2743     TEMPCFLAGS="${CFLAGS} -fgnu89-inline";
2744   else
2745     TEMPCFLAGS="$CFLAGS";
2746   fi
2747   ./configure \
2748     CC="$CC" \
2749     CXX="$CXX" \
2750     CFLAGS="$TEMPCFLAGS" \ 
2751     CXXFLAGS="$CXXFLAGS" \
2752     `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2753     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2754     --host=$host_alias \
2755     --build=$build_alias \
2756     --target=$target_alias \      
2757     --without-xscreensaver \
2758     --disable-sound \
2759     --disable-cyclone \
2760     --disable-fieldlines \
2761     --disable-flocks \
2762     --disable-flux \
2763     --disable-helios \
2764     --disable-hyperspace \
2765     --disable-lattice \
2766     --disable-skyrocket
2767   if echo "$ARCH" | grep -q freebsd ; then
2768     sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2769   fi
2770 ], [$DISABLE_RSXS])
2771
2772 XB_CONFIG_MODULE([lib/cpluff], [
2773   ./configure --disable-nls \
2774     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2775     --host=$host_alias \
2776     --build=$build_alias \
2777     --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2778     #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"    
2779 ], [0])
2780
2781 XB_CONFIG_MODULE([lib/gtest], [
2782   ./configure \
2783     CC="$CC" \
2784     CXX="$CXX" \
2785     CFLAGS="$CFLAGS" \
2786     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2787     --host=$host_alias \
2788     --build=$build_alias \
2789     --target=$target_alias \
2790     --disable-shared \
2791     --enable-static \
2792     --with-pthreads
2793 ], [$SKIP_CONFIG_GTEST])
2794
2795 XB_CONFIG_MODULE([pvr-addons], [
2796   ./configure \
2797     --prefix="${prefix}" \
2798     --host=$host_alias \
2799     --build=$build_alias \
2800     --target=$target_alias \
2801     CC="$CC" \
2802     CXX="$CXX" \
2803     CFLAGS="$CFLAGS" \
2804     CXXFLAGS="$CXXFLAGS"
2805 ], [$DISABLE_PVR_ADDON_CONFIG])
2806
2807 AC_OUTPUT
2808
2809 final_message="$final_message\n  prefix:\t$prefix\n$dashes"
2810 echo -e "$final_message\n"