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