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