fixed, missing last line causes patch to spew warnings
[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" -a -d $(abs_top_srcdir)/.git; 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 XB_FIND_SONAME([MPEG2],       [mpeg2])
1261
1262 # Audio encoders
1263 if test "x$use_libmp3lame" != "xno"; then
1264   XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1265   if test "x$use_libmp3lame" != "xno"; then
1266     AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1267   fi
1268 fi
1269 AS_CASE([x$use_libmp3lame],
1270   [xno],[
1271     AC_SUBST([HAVE_LIBMP3LAME], 0)
1272   ],
1273   [
1274     AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1275     AC_SUBST([HAVE_LIBMP3LAME], 1)
1276   ]
1277 )
1278 if test "x$use_libvorbisenc" != "xno"; then
1279   XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1280   if test "x$use_libvorbisenc" != "xno"; then
1281     AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1282   fi
1283 fi
1284 AS_CASE([x$use_libvorbisenc],
1285   [xno],[
1286     AC_SUBST([HAVE_LIBVORBISENC], 0)
1287   ],[
1288     AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1289     AC_SUBST([HAVE_LIBVORBISENC], 1)
1290   ]
1291 )
1292
1293 # WebServer
1294 if test "$use_webserver" = "yes"; then
1295   AC_CHECK_LIB([microhttpd],  [main],, AC_MSG_ERROR($missing_library))
1296 fi
1297
1298 # Optical
1299 if test "$use_optical_drive" = "yes"; then
1300   AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1301 fi
1302
1303 # Alsa
1304 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1305   PKG_CHECK_MODULES([ALSA],  [alsa],
1306     [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1307     AC_MSG_ERROR($missing_library))
1308   AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1309 else
1310   use_alsa="no"
1311   AC_MSG_RESULT($alsa_disabled)
1312 fi
1313
1314 # PulseAudio
1315 if test "x$use_pulse" != "xno"; then
1316   if test "$host_vendor" = "apple" ; then
1317     if test "x$use_pulse" = "xyes"; then
1318       AC_MSG_ERROR($pulse_disabled)
1319     else
1320       use_pulse="no"
1321       AC_MSG_RESULT($pulse_disabled)
1322     fi
1323     USE_PULSE=0
1324   else
1325     PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0],
1326       [INCLUDES="$INCLUDES $PULSE_CFLAGS"; LIBS="$LIBS $PULSE_LIBS"; USE_PULSE=1;
1327         HAVE_LIBPULSE=1; AC_DEFINE([HAVE_LIBPULSE],[1],[Pulse audio enabled])],
1328       [pulse_found="no"; USE_PULSE=0; HAVE_LIBPULSE=0])
1329
1330     if test "$pulse_found" = "no"; then
1331       if test "x$use_pulse" = "xyes"; then
1332         AC_MSG_ERROR($pulse_not_found)
1333       else
1334         AC_MSG_RESULT($pulse_disabled)
1335       fi
1336     fi
1337   fi
1338 else
1339   AC_MSG_RESULT($pulse_disabled)
1340   USE_PULSE=0
1341 fi
1342
1343 # HAL
1344 if test "$host_vendor" = "apple" ; then
1345   use_hal="no"
1346   AC_MSG_RESULT($hal_disabled)
1347 else
1348   if test "$use_hal" = "yes"; then
1349     PKG_CHECK_MODULES([HAL], [hal],
1350       [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1351       use_hal=no;AC_MSG_RESULT($hal_not_found))
1352     PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1353       [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1354       use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1355   else
1356     AC_MSG_RESULT($hal_disabled)
1357   fi
1358   if test "$use_hal" = "yes"; then
1359     AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1360   fi
1361 fi
1362
1363 # avahi
1364 if test "$host_vendor" = "apple" ; then
1365   use_avahi="no"
1366   AC_MSG_RESULT($avahi_disabled)
1367 else
1368   if test "$use_avahi" = "yes"; then
1369     AC_CHECK_LIB([avahi-common], [main],,
1370       use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1371     if test "$use_avahi" = "yes"; then
1372       #either both libs or none
1373       AC_CHECK_LIB([avahi-client], [main],,
1374         use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1375     fi
1376   else
1377     AC_MSG_RESULT($avahi_disabled)
1378   fi
1379 fi
1380
1381 # mdnsembedded
1382 if test "$use_mdnsembedded" != "no"; then
1383   AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1384     [if test "$use_mdnsembedded" = "yes"; then
1385       AC_MSG_ERROR($mdnsembedded_not_found)
1386       USE_MDNSEMBEDDED=0
1387     elif test "$use_mdnsembedded" != "no"; then
1388       AC_MSG_NOTICE($mdnsembedded_not_found)
1389       use_mdnsembedded="no"
1390       USE_MDNSEMBEDDED=0
1391     fi
1392    ])
1393   if test $use_mdnsembedded != "no"; then
1394     USE_MDNSEMBEDDED=1
1395   fi
1396 else
1397   AC_MSG_RESULT($mdnsembedded_disabled)
1398   USE_MDNSEMBEDDED=0
1399 fi
1400 AC_SUBST(USE_MDNSEMBEDDED)
1401
1402 # X11
1403 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1404   AC_MSG_NOTICE($x11_enabled)
1405   PKG_CHECK_MODULES([X11],    [x11],
1406     [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1407     AC_MSG_ERROR($missing_library))
1408   PKG_CHECK_MODULES([XEXT],  [xext],
1409     [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1410     AC_MSG_ERROR($missing_library))
1411   AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1412 else
1413   AC_MSG_RESULT($x11_disabled)
1414 fi
1415
1416 # XRandR
1417 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1418   use_xrandr="no"
1419   AC_MSG_RESULT($xrandr_disabled)
1420 else
1421   if test "$use_xrandr" = "yes" ; then
1422     AC_CHECK_LIB([Xrandr], [main],,
1423       use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1424   else
1425     AC_MSG_RESULT($xrandr_disabled)
1426   fi
1427 fi
1428
1429 # WAVEFORM
1430 if test "$use_waveform" = "yes"; then
1431   AC_MSG_NOTICE($waveform_enabled)
1432     DISABLE_WAVEFORM=0
1433 else
1434   AC_MSG_NOTICE($waveform_disabled)
1435   DISABLE_WAVEFORM=1
1436 fi
1437
1438 # SPECTRUM
1439 if test "$use_spectrum" = "yes"; then
1440   AC_MSG_NOTICE($spectrum_enabled)
1441     DISABLE_SPECTRUM=0
1442 else
1443   AC_MSG_NOTICE($spectrum_disabled)
1444   DISABLE_SPECTRUM=1
1445 fi
1446
1447 # GOOM
1448 if test "$host_vendor" = "apple" ; then
1449   AC_MSG_NOTICE($goom_disabled)
1450   DISABLE_GOOM=1
1451 else
1452   if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1453     AC_MSG_NOTICE($goom_enabled)
1454     DISABLE_GOOM=0
1455   else
1456     AC_MSG_NOTICE($goom_disabled)
1457     DISABLE_GOOM=1
1458   fi
1459 fi
1460
1461 # RSXS
1462 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1463   AC_MSG_NOTICE($rsxs_disabled)
1464   DISABLE_RSXS=1
1465 else
1466   AC_MSG_NOTICE($rsxs_enabled)
1467   DISABLE_RSXS=0
1468   # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1469   if test "$host_vendor" != "apple" ; then
1470     PKG_CHECK_MODULES([XT],    [xt],
1471       [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1472       AC_MSG_ERROR($missing_library))
1473     PKG_CHECK_MODULES([XMU],   [xmu],
1474       [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1475       AC_MSG_ERROR($missing_library))
1476   fi
1477 fi
1478
1479 # FISHBMC
1480 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1481   AC_MSG_NOTICE($fishbmc_disabled)   
1482   DISABLE_FISHBMC=1
1483   use_fishbmc="no"
1484 else
1485   AC_MSG_NOTICE($fishbmc_enabled)
1486   DISABLE_FISHBMC=0
1487 fi
1488
1489 # PROJECTM
1490 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1491   AC_MSG_NOTICE($projectm_disabled)
1492   DISABLE_PROJECTM=1
1493   use_projectm="no"
1494 else
1495   AC_MSG_NOTICE($projectm_enabled)
1496   DISABLE_PROJECTM=0
1497 fi
1498
1499 # skin touched
1500 use_skin_touched=no
1501 if [[ -f "addons/skin.touched/addon.xml" ]]; then 
1502   use_skin_touched=yes
1503   USE_SKIN_TOUCHED=1
1504   AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1505 else
1506   USE_SKIN_TOUCHED=0
1507 fi
1508
1509 # libssh
1510 if test "x$use_ssh" = "xno"; then
1511   AC_MSG_NOTICE($ssh_disabled)
1512   use_libssh="no"
1513 else
1514   AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1515   AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1516 fi
1517
1518 # libRTMP
1519 if test "$use_librtmp" != "no"; then
1520   AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1521    [if test "$use_librtmp" = "yes"; then
1522       AC_MSG_ERROR($librtmp_not_found)
1523     elif test "$use_librtmp" != "no"; then
1524       AC_MSG_NOTICE($librtmp_not_found)
1525       use_librtmp="no"
1526     fi
1527    ])
1528   if test "$use_librtmp" != "no"; then
1529     XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1530   fi
1531   if test "$use_librtmp" != "no"; then
1532     AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1533   fi
1534 else
1535   AC_MSG_NOTICE($librtmp_disabled)
1536 fi
1537
1538 # samba
1539 if test "x$use_samba" != "xno"; then
1540   PKG_CHECK_MODULES([SAMBA], [smbclient],
1541     [INCLUDES="$INCLUDES $SAMBA_CFLAGS"; LIBS="$LIBS $SAMBA_LIBS"],
1542     [AC_CHECK_LIB([smbclient], [main],,
1543       use_samba=no;AC_MSG_ERROR($missing_library))
1544       USE_LIBSMBCLIENT=0
1545     ])
1546 else
1547   AC_MSG_RESULT($samba_disabled)
1548   USE_LIBSMBCLIENT=0
1549 fi
1550
1551 if test "x$use_samba" != "xno"; then
1552   AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1553   USE_LIBSMBCLIENT=1
1554 fi
1555
1556 # libnfs
1557 if test "$use_libnfs" != "no"; then
1558   AC_CHECK_HEADERS([nfsc/libnfs.h],,
1559    [if test "$use_libnfs" = "yes"; then
1560       AC_MSG_ERROR($libnfs_not_found)
1561       USE_LIBNFS=0
1562     elif test "$use_libnfs" != "no"; then
1563       AC_MSG_NOTICE($libnfs_not_found)
1564       use_libnfs="no"
1565       USE_LIBNFS=0
1566     fi
1567    ])
1568   if test "$use_libnfs" != "no"; then
1569     XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1570   fi
1571   if test "$use_libnfs" != "no"; then
1572     AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1573     USE_LIBNFS=1
1574   fi
1575 else
1576   USE_LIBNFS=0
1577   AC_MSG_NOTICE($libnfs_disabled)
1578 fi
1579
1580 # libafpclient
1581 USE_LIBAFPCLIENT=0
1582 if test "x$use_libafpclient" != "xno"; then
1583   AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1584    [if test "x$use_libafpclient" = "xyes"; then
1585       AC_MSG_ERROR($libafpclient_not_found)
1586     elif test "x$use_libafpclient" != "xno"; then
1587       AC_MSG_NOTICE($libafpclient_not_found)
1588       use_libafpclient="no"
1589     fi
1590    ])
1591   if test "x$use_libafpclient" != "xno"; then
1592     XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1593     AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1594     USE_LIBAFPCLIENT=1
1595   fi
1596 else
1597   AC_MSG_NOTICE($libafpclient_disabled)
1598 fi
1599
1600 # libplist for airplay feature
1601 USE_AIRPLAY=0
1602 if test "$use_airplay" != "no"; then
1603   AC_CHECK_HEADER([plist/plist.h],,
1604    [if test "$use_airplay" = "yes"; then
1605       AC_MSG_ERROR($libplist_not_found)
1606     elif test "$use_airplay" != "no"; then
1607       AC_MSG_NOTICE($libplist_not_found)
1608       use_airplay="no"
1609     fi
1610    ])
1611
1612   if test "$use_airplay" != "no"; then
1613     XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1614     USE_AIRPLAY=1
1615     AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1616   fi
1617 fi
1618
1619 # libshairplay for AirTunes (prefered lib)
1620 USE_AIRTUNES=0
1621 if test "x$use_airtunes" != "xno"; then
1622   AC_CHECK_HEADERS([shairplay/raop.h],USE_AIRTUNES=1,
1623    [AC_MSG_NOTICE($libshairplay_not_found)
1624    ])
1625
1626   if test "x$USE_AIRTUNES" != "x0"; then
1627     XB_FIND_SONAME([SHAIRPLAY], [shairplay], [USE_AIRTUNES])
1628     USE_LIBSHAIRPLAY=1
1629     AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1630                      [[#include <shairplay/raop.h>]])
1631     AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1632   fi
1633
1634   #libshairport - as a fallback for AirTunes
1635   if test "x$USE_AIRTUNES" == "x0"; then
1636     AC_CHECK_HEADERS([shairport/shairport.h],USE_AIRTUNES=1,
1637      [AC_MSG_NOTICE($libshairport_not_found)
1638      ])
1639
1640     if test "x$USE_AIRTUNES" != "x0"; then
1641       XB_FIND_SONAME([SHAIRPORT], [shairport], [USE_AIRTUNES])
1642       AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1643                        [[#include <shairport/shairport.h>]])
1644       AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1645     fi
1646   fi
1647
1648   if test "x$USE_AIRTUNES" == "x0"; then
1649     if test "x$use_airtunes" == "xyes"; then
1650       AC_MSG_ERROR("No airtunes library could be found. (libshairport/libshairplay)")
1651     fi
1652     use_airtunes="no"
1653   fi
1654 fi
1655
1656 # libudev
1657 USE_LIBUDEV=0
1658 if test "$host_vendor" = "apple" ; then
1659   use_libudev="no"
1660   AC_MSG_NOTICE($libudev_disabled)
1661 else
1662   if test "$use_libudev" = "auto"; then
1663     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1664   elif test "$use_libudev" = "yes" ; then
1665     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1666   else
1667     AC_MSG_NOTICE($libudev_disabled)
1668   fi
1669
1670   if test "x$use_libudev" != "xno"; then
1671     USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1672     AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1673   fi
1674 fi
1675
1676 # libusb
1677 USE_LIBUSB=0
1678
1679 # if libudev is available, we don't need libusb
1680 if test "x$use_libudev" != "xno"; then
1681   use_libusb="no"
1682   AC_MSG_NOTICE($libusb_disabled_udev_found)
1683 else
1684   if test "$host_vendor" = "apple" ; then
1685     use_libusb="no"
1686     AC_MSG_NOTICE($libusb_disabled)
1687   else
1688     if echo "$ARCH" | grep -q freebsd ; then
1689       AC_CHECK_LIB([usb],[main],
1690                 [use_libusb="yes";USB_LIBS="-lusb"],
1691                 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1692     elif test "$use_libusb" = "auto"; then
1693       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1694     elif test "$use_libusb" = "yes"; then
1695       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1696     else
1697       AC_MSG_NOTICE($libusb_disabled)
1698     fi
1699   
1700     if test "x$use_libusb" != "xno"; then
1701       USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1702       AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1703     fi
1704   fi
1705 fi
1706
1707 # libcec
1708 USE_LIBCEC=0
1709 if test "x$use_libcec" != "xno"; then
1710   # libcec is dyloaded, so we need to check for its headers and link any depends.
1711   if test "x$use_libcec" != "xno"; then
1712     if test "x$use_libcec" != "xauto"; then
1713       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1714     else
1715       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1716     fi
1717
1718     if test "x$use_libcec" != "xno"; then
1719       INCLUDES="$INCLUDES $CEC_CFLAGS"
1720       USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1721       XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1722       AC_MSG_NOTICE($libcec_enabled)
1723     else
1724       use_libcec="no"
1725       AC_MSG_NOTICE($libcec_disabled)
1726     fi
1727   fi
1728 else
1729   use_libcec="no"
1730   AC_MSG_NOTICE($libcec_disabled)
1731 fi
1732
1733 # libcap
1734 if test "$use_libcap" != "no"; then
1735   AC_CHECK_HEADERS([sys/capability.h],,
1736    [if test "$use_libcap" = "yes"; then
1737       AC_MSG_ERROR($libcap_not_found)
1738     elif test "$use_libcap" != "no"; then
1739       AC_MSG_NOTICE($libcap_not_found)
1740       use_libcap="no"
1741     fi
1742    ])
1743   if test "$use_libcap" != "no"; then
1744     AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1745   fi
1746   if test "$use_libcap" != "no"; then
1747     AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1748   fi
1749 else
1750   AC_MSG_NOTICE($libcap_disabled)
1751 fi
1752
1753 ### External libraries checks
1754
1755 # Hacks for supporting libav
1756
1757 USE_LIBAV_HACKS=0
1758 if test "$use_libav_hacks" = "yes"; then
1759     export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1760     USE_LIBAV_HACKS=1
1761     AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1762 fi
1763
1764 # External FFmpeg
1765 if test "$use_external_ffmpeg" = "yes"; then
1766   FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1767
1768   PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1769                     [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1770                     AC_MSG_ERROR($missing_library))
1771
1772   # in case the headers are in a custom directory
1773   SAVE_CPPFLAGS="$CPPFLAGS"
1774   CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1775
1776   AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1777   [AC_MSG_ERROR($missing_headers)])
1778
1779   AC_MSG_NOTICE($external_ffmpeg_enabled)
1780   USE_EXTERNAL_FFMPEG=1
1781   AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1782
1783   CPPFLAGS="$SAVE_CPPFLAGS"
1784 else
1785   AC_MSG_NOTICE($external_ffmpeg_disabled)
1786   USE_EXTERNAL_FFMPEG=0
1787 fi
1788
1789 echo "Checking for SWIG installation"
1790 AC_PATH_PROG(SWIG_EXE, swig, "none")
1791 if test "$SWIG_EXE" = "none"; then
1792   AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1793   if test "$SWIG20_EXE" != "none" ; then
1794     SWIG_EXE=$SWIG20_EXE
1795   fi
1796 fi
1797 if test "$SWIG_EXE" = "none"; then
1798   AC_MSG_ERROR($missing_program)
1799 fi
1800 final_message="$final_message\n  SWIG Available:\tYes"
1801
1802 echo "Checking for a jre installation"
1803 AC_PATH_PROG(JAVA_EXE, java, "none")
1804 if test "$JAVA_EXE" = "none"; then
1805   AC_MSG_ERROR($missing_program)
1806 fi
1807 final_message="$final_message\n  JRE Available:\tYes"
1808
1809 echo "Checking for doxygen installation"
1810 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1811 if test "$DOXYGEN_EXE" = "none"; then
1812   AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1813   final_message="$final_message\n  Doxygen Available:\tNo"
1814   USE_DOXYGEN=0
1815 else
1816   final_message="$final_message\n  Doxygen Available:\tYes"
1817   USE_DOXYGEN=1
1818 fi
1819
1820 # VDPAU
1821 if test "x$use_vdpau" != "xno"; then
1822   if test "$host_vendor" = "apple" ; then
1823     if test "x$use_vdpau" = "xyes"; then
1824       AC_MSG_ERROR([VDPAU not supported on this platform])
1825     else
1826       use_vdpau="no"
1827       AC_MSG_NOTICE($vdpau_disabled)
1828     fi
1829     USE_VDPAU=0
1830   else
1831     USE_VDPAU=1
1832     AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1833       [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1834     [if test "x$use_vdpau" = "xyes"; then
1835       USE_VDPAU=0
1836       AC_MSG_ERROR([$vdpau_not_found])
1837     else
1838       use_vdpau="no"
1839       USE_VDPAU=0
1840       AC_MSG_RESULT($vdpau_not_found)
1841     fi])
1842   fi
1843 else
1844   USE_VDPAU=0
1845   AC_MSG_NOTICE($vdpau_disabled)
1846 fi
1847
1848 # VAAPI
1849 if test "x$use_vaapi" != "xno"; then
1850   if test "$host_vendor" = "apple" ; then
1851     if test "x$use_vaapi" = "xyes"; then
1852       AC_MSG_ERROR([VAAPI not supported on this platform])
1853     else
1854       use_vaapi="no"
1855       AC_MSG_NOTICE($vaapi_disabled)
1856     fi
1857     USE_VAAPI=0
1858   else
1859     initial_val=$use_vaapi
1860     AC_CHECK_LIB([va], main, :, use_vaapi=no)
1861     if test "x$use_vaapi" != "xno"; then
1862       AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1863     fi
1864
1865     if test "x$use_vaapi" = "xno"; then
1866       if test "x$initial_val" = "xyes"; then
1867         AC_MSG_ERROR($vaapi_not_found)
1868       else
1869         AC_MSG_RESULT($vaapi_not_found)
1870       fi
1871       USE_VAAPI=0
1872     else
1873       AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1874       USE_VAAPI=1
1875     fi
1876   fi
1877 else
1878   AC_MSG_NOTICE($vaapi_disabled)
1879   USE_VAAPI=0
1880 fi
1881
1882 # CrystalHD
1883 if test "x$use_crystalhd" != "xno"; then
1884   SAVE_CFLAGS="$CFLAGS"
1885   CFLAGS="-D__LINUX_USER__"
1886   AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1887     [ if test "x$use_crystalhd" = "xyes"; then
1888         AC_MSG_ERROR($crystalhd_not_found)
1889       else
1890         use_crystalhd=no
1891         AC_MSG_RESULT($crystalhd_not_found)
1892       fi
1893       USE_CRYSTALHD=0
1894     ])
1895     CFLAGS="$SAVE_CFLAGS"
1896     if test "$host_vendor" != "apple"; then
1897       XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1898     fi
1899     if test "x$use_crystalhd" != "xno"; then
1900       SAVE_CFLAGS="$CFLAGS"
1901       CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1902       # check for new crystalhd lib
1903       AC_COMPILE_IFELSE(
1904         [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1905           #include <libcrystalhd/bc_dts_defs.h>
1906           PBC_INFO_CRYSTAL bCrystalInfo;])],
1907         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ], 
1908         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1909       CFLAGS="$SAVE_CFLAGS"
1910       USE_CRYSTALHD=1
1911     fi
1912 else
1913   AC_MSG_NOTICE($crystalhd_disabled)
1914   USE_CRYSTALHD=0
1915 fi
1916
1917 # VTBDecoder
1918 if test "x$use_vtbdecoder" != "xno"; then
1919   if test "$host_vendor" = "apple" ; then
1920     HAVE_VIDEOTOOLBOXDECODER=1
1921     AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1922     AC_MSG_NOTICE($vtbdecoder_enabled)
1923   else
1924     if test "x$use_vtbdecoder" = "xyes"; then
1925       AC_MSG_ERROR([VTB Decoder not supported on this platform])
1926     else
1927       use_vtbdecoder="no"
1928       AC_MSG_NOTICE($vtbdecoder_disabled)
1929     fi
1930   fi
1931 else
1932   AC_MSG_NOTICE($vtbdecoder_disabled)
1933 fi
1934
1935 # OpenMax
1936 if test "$host_vendor" = "apple" ; then
1937   use_openmax="no"
1938   USE_OPENMAX=0
1939   AC_MSG_NOTICE($openmax_disabled)
1940 elif test "$target_platform" = "target_raspberry_pi"; then
1941   use_openmax="no"
1942   USE_OPENMAX=0
1943   AC_MSG_NOTICE($openmax_disabled)
1944 else
1945   if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1946     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1947                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1948                       use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1949   elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1950     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1951                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1952                       AC_MSG_ERROR($openmax_not_found))
1953   else
1954     AC_MSG_NOTICE($openmax_disabled)
1955     use_openmax=no
1956     USE_OPENMAX=0
1957   fi
1958 fi
1959
1960 # yajl version check (yajl_version.h was added in yajl 2.0)
1961 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1962 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1963 ], [])
1964
1965 # additional internal players
1966 case $add_players in
1967   *omxplayer*)
1968       XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1969       ;;
1970 esac
1971
1972 # additional internal codecs
1973 # remember to convert commas to spaces
1974 for codecs in `echo $add_codecs | sed 's/,/ /g'`; do
1975   case $codecs in
1976     *amcodec*)
1977         AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1978         XB_ADD_CODEC([LIBAMCODEC], [amcodec], [$codecs])
1979         ;;
1980     *libstagefright*)
1981         XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright], [$codecs])
1982         ;;
1983     *)
1984   esac
1985 done
1986
1987 # platform specific bin utilities
1988 if test "$build_vendor" != "apple" ; then
1989   AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1990   if test "$HAVE_GAWK" = "no" ; then
1991     AC_MSG_ERROR($missing_program)
1992   fi
1993 fi
1994
1995 if test "$use_arch" != "arm" ; then
1996   AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1997   if test "$HAVE_CMAKE" = "no" ; then
1998     AC_MSG_ERROR($missing_program)
1999   fi
2000 fi
2001
2002 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
2003 if test "$HAVE_GPERF" = "no" ; then
2004   AC_MSG_ERROR($missing_program)
2005 fi
2006
2007 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
2008 if test "$HAVE_UNZIP" = "no" ; then
2009   AC_MSG_ERROR($missing_program)
2010 fi
2011
2012 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
2013 if test "$HAVE_ZIP" = "no" ; then
2014   AC_MSG_ERROR($missing_program)
2015 fi
2016
2017 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
2018   AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
2019   if test "$HAVE_NASM" = "no" ; then
2020     AC_MSG_ERROR($missing_program)
2021   fi
2022 fi
2023
2024 # Checks for header files.
2025 AC_HEADER_DIRENT
2026 AC_HEADER_STDC
2027 AC_HEADER_SYS_WAIT
2028 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
2029   malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
2030   strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
2031   sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
2032 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
2033
2034 # Checks for typedefs, structures, and compiler characteristics.
2035 AC_HEADER_STAT
2036 AC_HEADER_STDBOOL
2037 AC_C_CONST
2038 AC_TYPE_UID_T
2039 AC_C_INLINE
2040 AC_TYPE_INT8_T
2041 AC_TYPE_INT16_T
2042 AC_TYPE_INT32_T
2043 AC_TYPE_INT64_T
2044 AC_TYPE_MODE_T
2045 AC_TYPE_OFF_T
2046 AC_TYPE_PID_T
2047 AC_C_RESTRICT
2048 AC_TYPE_SIZE_T
2049 AC_TYPE_SSIZE_T
2050 AC_CHECK_MEMBERS([struct stat.st_rdev])
2051 AC_HEADER_TIME
2052 AC_STRUCT_TM
2053 AC_TYPE_UINT8_T
2054 AC_TYPE_UINT16_T
2055 AC_TYPE_UINT32_T
2056 AC_TYPE_UINT64_T
2057 AC_C_BIGENDIAN
2058
2059 if test "$cross_compiling" = "yes"; then
2060   final_message="$final_message\n  Crosscomp.:\tYes"
2061   if [[ -d "$NATIVE_ROOT" ]]; then
2062     CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2063     CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2064     LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
2065     if test "$host_vendor" != "apple" ; then
2066       LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
2067     fi
2068     final_message="$final_message\n  Native Root:\t$NATIVE_ROOT"
2069   fi
2070 else
2071   final_message="$final_message\n  Crosscomp.:\tNo"
2072 fi
2073
2074 final_message="$final_message\n  target ARCH:\t$use_arch"
2075 final_message="$final_message\n  target CPU:\t$use_cpu"
2076
2077 if test "$use_gles" = "yes"; then
2078   final_message="$final_message\n  OpenGLES:\tYes"
2079   USE_OPENGLES=1
2080   USE_OPENGL=0
2081 else
2082   USE_OPENGLES=0
2083   if test "$use_gl" = "yes"; then
2084     final_message="$final_message\n  OpenGL:\tYes"
2085     USE_OPENGL=1
2086   else
2087     final_message="$final_message\n  OpenGL:\tNo (Very Slow)"
2088     SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2089     USE_OPENGL=0
2090   fi
2091 fi
2092
2093 if test "$use_alsa" = "yes"; then
2094   USE_ALSA=1
2095   AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2096   final_message="$final_message\n  ALSA:\t\tYes"
2097 else
2098   USE_ALSA=0
2099   final_message="$final_message\n  ALSA:\t\tNo"
2100 fi
2101
2102 if test "$use_dbus" = "yes"; then
2103   final_message="$final_message\n  DBUS:\t\tYes"
2104 else
2105   final_message="$final_message\n  DBUS:\t\tNo"
2106 fi
2107
2108 if test "x$use_vdpau" != "xno"; then
2109   final_message="$final_message\n  VDPAU:\tYes"
2110 else
2111   final_message="$final_message\n  VDPAU:\tNo"
2112 fi
2113
2114 if test "x$use_vaapi" != "xno"; then
2115   final_message="$final_message\n  VAAPI:\tYes"
2116 else
2117   final_message="$final_message\n  VAAPI:\tNo"
2118 fi
2119
2120 if test "x$use_crystalhd" != "xno"; then
2121   final_message="$final_message\n  CrystalHD:\tYes"
2122 else
2123   final_message="$final_message\n  CrystalHD:\tNo"
2124 fi
2125
2126 if test "x$use_vtbdecoder" != "xno"; then
2127   final_message="$final_message\n  VTBDecoder:\tYes"
2128 else
2129   final_message="$final_message\n  VTBDecoder:\tNo"
2130 fi
2131
2132 if test "$use_openmax" != "no"; then
2133   final_message="$final_message\n  OpenMax:\tYes"
2134 else
2135   final_message="$final_message\n  OpenMax:\tNo"
2136 fi
2137
2138 if test "$use_joystick" = "yes"; then
2139   final_message="$final_message\n  Joystick:\tYes"
2140   SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2141 else
2142   final_message="$final_message\n  Joystick:\tNo"
2143 fi
2144
2145 if test "$use_xrandr" = "yes"; then
2146   final_message="$final_message\n  XRandR:\tYes"
2147   USE_XRANDR=1
2148 else
2149   final_message="$final_message\n  XRandR:\tNo"
2150   USE_XRANDR=0
2151 fi
2152
2153 if test "$use_waveform" = "yes"; then
2154   final_message="$final_message\n  Waveform:\tYes"
2155 else
2156   final_message="$final_message\n  Waveform:\tNo"
2157 fi
2158
2159 if test "$use_spectrum" = "yes"; then
2160   final_message="$final_message\n  Spectrum:\tYes"
2161 else
2162   final_message="$final_message\n  Spectrum:\tNo"
2163 fi
2164
2165 if test "$use_goom" = "yes"; then
2166   final_message="$final_message\n  GOOM:\t\tYes"
2167 else
2168   final_message="$final_message\n  GOOM:\t\tNo"
2169 fi
2170
2171 if test "$use_rsxs" = "yes"; then
2172   final_message="$final_message\n  RSXS:\t\tYes"
2173 else
2174   final_message="$final_message\n  RSXS:\t\tNo"
2175 fi
2176
2177 if test "$use_fishbmc" = "yes"; then
2178   final_message="$final_message\n  FishBMC:\tYes"
2179 else
2180   final_message="$final_message\n  FishBMC:\tNo"
2181 fi
2182
2183 if test "$use_projectm" = "yes"; then
2184   final_message="$final_message\n  ProjectM:\tYes"
2185 else
2186   final_message="$final_message\n  ProjectM:\tNo"
2187 fi
2188
2189 if test "$use_skin_touched" = "yes"; then
2190   final_message="$final_message\n  Skin Touched:\tYes"
2191 else
2192   final_message="$final_message\n  Skin Touched:\tNo"
2193 fi
2194
2195 if test "$use_x11" = "yes"; then
2196   final_message="$final_message\n  X11:\t\tYes"
2197 else
2198   final_message="$final_message\n  X11:\t\tNo"
2199 fi
2200
2201 if test "$use_wayland" = "yes"; then
2202   final_message="$final_message\n  Wayland:\tYes"
2203   USE_WAYLAND=1
2204   USE_XKBCOMMON=1
2205 else
2206   final_message="$final_message\n  Wayland:\tNo"
2207 fi
2208
2209 if test "$use_libbluray" = "yes"; then
2210   final_message="$final_message\n  Bluray:\tYes"
2211 else
2212   final_message="$final_message\n  Bluray:\tNo"
2213 fi
2214
2215 if test "x$use_texturepacker" != "xno"; then
2216   final_message="$final_message\n  TexturePacker:Yes"
2217   USE_TEXTUREPACKER=1
2218 else
2219   final_message="$final_message\n  TexturePacker:No"
2220   USE_TEXTUREPACKER=0
2221 fi
2222
2223 if test "$use_mid" = "yes"; then
2224   final_message="$final_message\n  MID Support:\tYes"
2225   SDL_DEFINES="$SDL_DEFINES -DMID"
2226 else
2227   final_message="$final_message\n  MID Support:\tNo"
2228 fi
2229
2230 ORIGCC=$CC
2231 ORIGCXX=$CXX
2232 if test "x$use_ccache" != "xno"; then
2233   AC_PATH_PROG(CCACHE,ccache,none)
2234   if test "$ac_cv_path_CCACHE" = "none"; then
2235     if test "x$use_ccache" = "xyes"; then
2236       AC_MSG_ERROR([ccache not found.]);
2237     else
2238       AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2239       final_message="$final_message\n  ccache:\tNo"
2240     fi
2241   else
2242     CC="$ac_cv_path_CCACHE $CC"
2243     CXX="$ac_cv_path_CCACHE $CXX"
2244     AC_MSG_NOTICE(enabling ccache)
2245     final_message="$final_message\n  ccache:\tYes"
2246   fi
2247 else
2248   final_message="$final_message\n  ccache:\tNo"
2249 fi
2250
2251 if test "$use_alsa" = "yes"; then
2252   final_message="$final_message\n  ALSA Support:\tYes"
2253 else
2254   final_message="$final_message\n  ALSA Support:\tNo"
2255 fi
2256
2257 if test "x$use_pulse" != "xno"; then
2258   XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2259   final_message="$final_message\n  PulseAudio:\tYes"
2260 else
2261   XBMC_STANDALONE_SH_PULSE=/dev/null
2262   final_message="$final_message\n  PulseAudio:\tNo"
2263 fi
2264
2265 if test "$use_hal" = "yes"; then
2266   final_message="$final_message\n  HAL Support:\tYes"
2267 else
2268   final_message="$final_message\n  HAL Support:\tNo"
2269 fi
2270
2271 # DVDCSS
2272 if test "$use_dvdcss" = "yes"; then
2273   AC_MSG_NOTICE($dvdcss_enabled)
2274   final_message="$final_message\n  DVDCSS:\tYes"
2275   BUILD_DVDCSS=1
2276   SKIP_CONFIG_DVDCSS=0
2277   DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2278 else
2279   AC_MSG_NOTICE($dvdcss_disabled)
2280   final_message="$final_message\n  DVDCSS:\tNo"
2281   BUILD_DVDCSS=0
2282   SKIP_CONFIG_DVDCSS=1
2283   DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2284 fi
2285 if test "$host_vendor" = "apple"; then
2286  DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2287 fi
2288
2289 # Google Test Framework
2290 if test "$configure_gtest" = "yes"; then
2291   AC_MSG_NOTICE($gtest_enabled)
2292   final_message="$final_message\n  Google Test Framework Configured:\tYes"
2293   GTEST_CONFIGURED=1
2294   SKIP_CONFIG_GTEST=0
2295 else
2296   AC_MSG_NOTICE($gtest_disabled)
2297   final_message="$final_message\n  Google Test Framework Configured:\tNo"
2298   GTEST_CONFIGURED=0
2299   SKIP_CONFIG_GTEST=1
2300 fi
2301
2302 if test "$use_avahi" = "yes"; then
2303   final_message="$final_message\n  Avahi:\tYes"
2304 else
2305   final_message="$final_message\n  Avahi:\tNo"
2306 fi
2307
2308 if test "$use_mdnsembedded" != "no"; then
2309   final_message="$final_message\n  mDNSEmbedded:\tYes"
2310 else
2311   final_message="$final_message\n  mDNSEmbedded:\tNo"
2312 fi
2313
2314 if test "$use_nonfree" = "yes"; then
2315   final_message="$final_message\n  Non-free:\tYes"
2316   HAVE_XBMC_NONFREE=1
2317   AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2318 else
2319   HAVE_XBMC_NONFREE=0
2320   final_message="$final_message\n  Non-free:\tNo"
2321 fi
2322
2323 if test "$use_asap" = "yes"; then
2324   AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2325   if test "$HAVE_GDC" = "no"; then
2326     AC_MSG_ERROR($missing_program);
2327   fi
2328   AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2329   if test "$HAVE_FPC" = "no"; then
2330     AC_MSG_ERROR($missing_program);
2331   fi
2332   USE_ASAP_CODEC=1
2333   AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2334   final_message="$final_message\n  ASAP Codec:\tYes"
2335 else
2336   USE_ASAP_CODEC=0
2337   final_message="$final_message\n  ASAP Codec:\tNo"
2338 fi
2339
2340 if test "$use_mysql" = "yes"; then
2341   final_message="$final_message\n  MySQL:\tYes"
2342   USE_MYSQL=1
2343 else
2344   final_message="$final_message\n  MySQL:\tNo"
2345   USE_MYSQL=0
2346 fi
2347 if test "$use_webserver" = "yes"; then
2348   final_message="$final_message\n  Webserver:\tYes"
2349   USE_WEB_SERVER=1
2350 else
2351   final_message="$final_message\n  Webserver:\tNo"
2352   USE_WEB_SERVER=0
2353 fi
2354
2355 if test "$use_libssh" != "no"; then
2356   final_message="$final_message\n  libssh support:\tYes"
2357 else
2358   final_message="$final_message\n  libssh support:\tNo"
2359 fi
2360
2361 if test "$use_librtmp" != "no"; then
2362   final_message="$final_message\n  libRTMP support:\tYes"
2363 else
2364   final_message="$final_message\n  libRTMP support:\tNo"
2365 fi
2366
2367 if test "x$use_samba" != "xno"; then
2368   final_message="$final_message\n  libsmbclient support:\tYes"
2369 else
2370   final_message="$final_message\n  libsmbclient support:\tNo"
2371 fi
2372
2373 if test "$use_libnfs" != "no"; then
2374   final_message="$final_message\n  libnfs client support:Yes"
2375 else
2376   final_message="$final_message\n  libnfs client support:No"
2377 fi
2378
2379 if test "x$use_libafpclient" != "xno"; then
2380   final_message="$final_message\n  libafpclient support:\tYes"
2381 else  
2382   final_message="$final_message\n  libafpclient support:\tNo"
2383 fi
2384
2385 if test "$use_airplay" != "no"; then
2386   final_message="$final_message\n  AirPlay support:\tYes"
2387 else
2388   final_message="$final_message\n  AirPLay support:\tNo"
2389 fi
2390
2391 if test "x$use_airtunes" != "xno"; then
2392   if test "x$USE_LIBSHAIRPLAY" == "x1"; then
2393     final_message="$final_message\n  AirTunes support (libshairplay):\tYes"  
2394   else
2395     final_message="$final_message\n  AirTunes support (libshairport):\tYes"
2396   fi
2397 else
2398   final_message="$final_message\n  AirTunes support:\tNo"
2399 fi
2400
2401 if test "x$use_upnp" != "xno"; then
2402   final_message="$final_message\n  UPnP support:\t\tYes"
2403   USE_UPNP=1
2404   AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2405 else
2406   USE_UPNP=0
2407   final_message="$final_message\n  UPnP support:\t\tNo"
2408 fi
2409
2410 if test "$use_optical_drive" = "yes"; then
2411   final_message="$final_message\n  Optical drive:\tYes"
2412 else
2413   final_message="$final_message\n  Optical drive:\tNo"
2414 fi
2415
2416 if test "x$use_libudev" != "xno"; then
2417   final_message="$final_message\n  libudev support:\tYes"
2418 else
2419   final_message="$final_message\n  libudev support:\tNo"
2420 fi
2421
2422 if test "x$use_libusb" != "xno"; then
2423   final_message="$final_message\n  libusb support:\tYes"
2424 else
2425   final_message="$final_message\n  libusb support:\tNo"
2426 fi
2427
2428 if test "x$use_libcec" != "xno"; then
2429   final_message="$final_message\n  libcec support:\tYes"
2430 else
2431   final_message="$final_message\n  libcec support:\tNo"
2432 fi
2433
2434 if test "x$use_libmp3lame" != "xno"; then
2435   final_message="$final_message\n  libmp3lame support:\tYes"
2436 else
2437   final_message="$final_message\n  libmp3lame support:\tNo"
2438 fi
2439
2440 if test "x$use_libvorbisenc" != "xno"; then
2441   final_message="$final_message\n  libvorbisenc support:\tYes"
2442 else
2443   final_message="$final_message\n  libvorbisenc support:\tNo"
2444 fi
2445
2446 if test "x$use_libcap" != "xno"; then
2447   final_message="$final_message\n  libcap support:\tYes"
2448 else
2449   final_message="$final_message\n  libcap support:\tNo"
2450 fi
2451
2452 if test "x$add_players" != "xno"; then
2453   final_message="$final_message\n  additional players:\tYes, $add_players"
2454 else
2455   final_message="$final_message\n  additional players:\tNo"
2456 fi
2457
2458 if test "x$add_codecs" != "xno"; then
2459   final_message="$final_message\n  additional codecs:\tYes, $add_codecs"
2460 else
2461   final_message="$final_message\n  additional codecs:\tNo"
2462 fi
2463
2464 ### External libraries messages
2465
2466 if test "$use_external_ffmpeg" = "yes"; then
2467   final_message="$final_message\n  External FFmpeg:\tYes"
2468 else
2469   final_message="$final_message\n  External FFmpeg:\tNo"
2470 fi
2471
2472 if test "$host_vendor" = "apple" ; then
2473   # built internal but referenced as external, we link directly to them.
2474   # this MUST be the last thing before OUTPUT_FILES as they do not
2475   # exist until after we build FFMpeg.
2476   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2477   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2478   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2479   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2480   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2481   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2482   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2483 fi
2484
2485 USE_PVR_ADDONS=0
2486 DISABLE_PVR_ADDON_CONFIG=1
2487 if [[ -f "pvr-addons/Makefile.am" ]]; then
2488   final_message="$final_message\n  PVR add-ons:\t\tYes"
2489   USE_PVR_ADDONS=1
2490   DISABLE_PVR_ADDON_CONFIG=0
2491 else
2492   final_message="$final_message\n  PVR add-ons:\t\tNo"
2493 fi
2494
2495 OUTPUT_FILES="Makefile \
2496     Makefile.include \
2497     addons/skin.confluence/media/Makefile \
2498     xbmc/Makefile \
2499     xbmc/cdrip/Makefile \
2500     xbmc/cores/Makefile \
2501     xbmc/cores/VideoRenderers/Makefile \
2502     xbmc/cores/dvdplayer/Makefile \
2503     lib/Makefile \
2504     lib/libdvd/Makefile \
2505     xbmc/cores/DllLoader/Makefile \
2506     xbmc/cores/DllLoader/exports/Makefile \
2507     xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2508     xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2509     xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2510     xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2511     xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2512     xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2513     xbmc/cores/AudioEngine/Makefile \
2514     xbmc/cores/paplayer/Makefile \
2515     xbmc/cores/omxplayer/Makefile \
2516     lib/timidity/Makefile \
2517     lib/xbadpcm/Makefile \
2518     lib/asap/Makefile \
2519     lib/nosefart/Makefile \
2520     lib/libsidplay2/Makefile \
2521     lib/vgmstream/Makefile \
2522     lib/snesapu/SNES/SNESAPU/Makefile \
2523     lib/stsound/StSoundLibrary/Makefile \
2524     xbmc/cores/playercorefactory/Makefile \
2525     xbmc/music/karaoke/Makefile \
2526     xbmc/osx/Makefile \
2527     xbmc/guilib/Makefile \
2528     xbmc/input/linux/Makefile \
2529     xbmc/interfaces/Makefile \
2530     xbmc/network/Makefile \
2531     xbmc/network/upnp/Makefile \
2532     lib/libRTV/Makefile \
2533     lib/libexif/Makefile \
2534     lib/libXDAAP/Makefile \
2535     lib/cmyth/Makefile \
2536     lib/libhdhomerun/Makefile \
2537     lib/libsquish/Makefile \
2538     lib/cximage-6.0/Makefile \
2539     lib/libUPnP/Makefile \
2540     xbmc/DllPaths_generated.h \
2541     xbmc/DllPaths_generated_android.h \
2542     xbmc/freebsd/Makefile \
2543     xbmc/linux/Makefile \
2544     xbmc/filesystem/Makefile \
2545     xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2546     xbmc/visualizations/XBMCProjectM/Makefile \
2547     xbmc/visualizations/Goom/Makefile \
2548     xbmc/visualizations/OpenGLSpectrum/Makefile \
2549     xbmc/visualizations/fishBMC/Makefile \
2550     xbmc/visualizations/WaveForm/Makefile \
2551     xbmc/windowing/Makefile \
2552     xbmc/windowing/egl/Makefile \
2553     lib/addons/library.xbmc.addon/Makefile \
2554     lib/addons/library.xbmc.codec/Makefile \
2555     lib/addons/library.xbmc.gui/Makefile \
2556     lib/addons/library.xbmc.pvr/Makefile \
2557     xbmc/visualizations/EGLHelpers/Makefile \
2558     tools/Linux/xbmc.sh \
2559     tools/Linux/xbmc-standalone.sh \
2560     tools/TexturePacker/Makefile \
2561     tools/EventClients/Clients/OSXRemote/Makefile \
2562     xbmc/peripherals/bus/Makefile \
2563     xbmc/peripherals/devices/Makefile \
2564     xbmc/android/activity/Makefile \
2565     xbmc/android/loader/Makefile \
2566     xbmc/android/jni/Makefile \
2567     xbmc/utils/Makefile \
2568     xbmc/main/Makefile \
2569     project/cmake/xbmc-config.cmake"
2570
2571 if test "$use_wayland" = "yes"; then
2572 OUTPUT_FILES="$OUTPUT_FILES xbmc/windowing/tests/wayland/Makefile"
2573 fi
2574
2575 if test "$use_skin_touched" = "yes"; then
2576 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2577 fi
2578
2579 if test "$use_codec_libstagefright" = "yes"; then
2580 OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile"
2581 fi
2582
2583 OUTPUT_FILES="$OUTPUT_FILES \
2584   xbmc/interfaces/python/Makefile \
2585   xbmc/interfaces/python/test/Makefile"
2586
2587 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2588 # .dummy.am does nothing.
2589 AC_CONFIG_FILES([.dummy])
2590
2591 AC_CONFIG_FILES([${OUTPUT_FILES}])
2592 OUTPUT_FILES="$OUTPUT_FILES \
2593   .dummy"
2594 AC_SUBST(CFLAGS)
2595 AC_SUBST(CXXFLAGS)
2596 AC_SUBST(INCLUDES)
2597 AC_SUBST(LDFLAGS)
2598 AC_SUBST(CXX_FOR_BUILD)
2599 AC_SUBST(CC_FOR_BUILD)
2600 AC_SUBST(CFLAGS_FOR_BUILD)
2601 AC_SUBST(CXXFLAGS_FOR_BUILD)
2602 AC_SUBST(LDFLAGS_FOR_BUILD)
2603 AC_SUBST(SDL_DEFINES)
2604 AC_SUBST(BUILD_DVDCSS)
2605 AC_SUBST(DISABLE_WAVEFORM)
2606 AC_SUBST(DISABLE_SPECTRUM)
2607 AC_SUBST(DISABLE_GOOM)
2608 AC_SUBST(DISABLE_RSXS)
2609 AC_SUBST(DISABLE_FISHBMC)
2610 AC_SUBST(DISABLE_PROJECTM)
2611 AC_SUBST(USE_SKIN_TOUCHED)
2612 AC_SUBST(USE_EXTERNAL_FFMPEG)
2613 AC_SUBST(USE_STATIC_FFMPEG)
2614 AC_SUBST(USE_LIBAV_HACKS)
2615 AC_SUBST(PYTHON_VERSION)
2616 AC_SUBST(OUTPUT_FILES)
2617 AC_SUBST(HAVE_XBMC_NONFREE)
2618 AC_SUBST(USE_ASAP_CODEC)
2619 AC_SUBST(LIBCURL_BASENAME)
2620 AC_SUBST(LIBFLAC_BASENAME)
2621 AC_SUBST(LIBVORBISFILE_BASENAME)
2622 AC_SUBST(LIBMODPLUG_BASENAME)
2623 AC_SUBST(LIBMAD_BASENAME)
2624 AC_SUBST(LIBOGG_BASENAME)
2625 AC_SUBST(LIBVORBISENC_BASENAME)
2626 AC_SUBST(LIBVORBIS_BASENAME)
2627 AC_SUBST(LIBASS_BASENAME)
2628 AC_SUBST(LIBMEPG2_BASENAME)
2629 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2630 AC_SUBST(USE_OPENGL)
2631 AC_SUBST(USE_OPENGLES)
2632 AC_SUBST(USE_VDPAU)
2633 AC_SUBST(USE_VAAPI)
2634 AC_SUBST(USE_CRYSTALHD)
2635 AC_SUBST(USE_LIBSMBCLIENT)
2636 AC_SUBST(USE_LIBNFS)
2637 AC_SUBST(USE_LIBAFPCLIENT)
2638 AC_SUBST(USE_AIRPLAY)
2639 AC_SUBST(USE_OPENMAX)
2640 AC_SUBST(USE_PULSE)
2641 AC_SUBST(HAVE_LIBPULSE)
2642 AC_SUBST(USE_XRANDR)
2643 AC_SUBST(USE_ALSA)
2644 AC_SUBST(USE_TEXTUREPACKER)
2645 AC_SUBST(USE_AIRTUNES)
2646 AC_SUBST(USE_LIBUDEV)
2647 AC_SUBST(USE_LIBUSB)
2648 AC_SUBST(USE_LIBCEC)
2649 AC_SUBST(USE_MYSQL)
2650 AC_SUBST(USE_WAYLAND)
2651 AC_SUBST(USE_WEB_SERVER)
2652 AC_SUBST(USE_UPNP)
2653 AC_SUBST(USE_XKBCOMMON)
2654 AC_SUBST(USE_OMXLIB)
2655 AC_SUBST(USE_ANDROID)
2656 AC_SUBST(GTEST_CONFIGURED)
2657 AC_SUBST(USE_DOXYGEN)
2658 AC_SUBST(USE_PVR_ADDONS)
2659 AC_SUBST(GNUTLS_ALL_LIBS)
2660 AC_SUBST(VORBISENC_ALL_LIBS)
2661
2662 # pushd and popd are not available in other shells besides bash, so implement
2663 # our own pushd/popd functions
2664 XB_DIRSTACK="$PWD"
2665 xb_pushd()
2666 {
2667   local dirname="$1"
2668   if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2669     cd "$dirname"
2670     XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2671     return 0
2672   else
2673     AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2674   fi
2675 }
2676 xb_popd()
2677 {
2678   if [[ -n "$XB_DIRSTACK" ]]; then
2679     XB_DIRSTACK="${XB_DIRSTACK#* }"
2680     cd "${XB_DIRSTACK%% *}"
2681     return 0
2682   else
2683     AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2684   fi
2685 }
2686
2687 # Function to run the configure scripts in our submodules
2688 # Consists of three paramaters, the path to the submodule, the configure command
2689 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2690 # running the script, anything else if not.
2691 AC_DEFUN([XB_CONFIG_MODULE],[
2692 AC_CONFIG_COMMANDS_POST([
2693 if [[ $3 != "1" ]]; then
2694     if [[ -d $1 ]]; then
2695       xb_pushd $1
2696       $2
2697       if [[ $? -ne 0 ]]; then
2698         xb_popd
2699         AC_MSG_ERROR([[Submodule $1 failed to configure]])
2700       else
2701         xb_popd
2702       fi
2703     else
2704       AC_MSG_ERROR([[Submodule $1 does not exist]])
2705     fi
2706 else
2707     AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2708 fi
2709 ])
2710 ])
2711
2712 XB_CONFIG_MODULE([lib/ffmpeg], [
2713   if test "$host_vendor" = "apple" ; then
2714     ffmpg_config="--target-os=$ffmpeg_target_os"
2715     # handle disables first, we do individual enables later
2716     ffmpg_config="$ffmpg_config --disable-muxers   --disable-encoders"
2717     ffmpg_config="$ffmpg_config --disable-devices  --disable-doc"
2718     ffmpg_config="$ffmpg_config --disable-ffplay   --disable-ffmpeg"
2719     ffmpg_config="$ffmpg_config --disable-ffprobe  --disable-ffserver"
2720     ffmpg_config="$ffmpg_config --enable-vda       --disable-crystalhd"
2721     ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2722
2723     # handle conditional enables/disables
2724     if test "$use_debug" = "no"; then
2725       ffmpg_config="$ffmpg_config --disable-debug"
2726     fi
2727     if test "$use_cpu"  != "no";  then
2728       ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2729     fi
2730     if test "$use_arch" != "no"; then
2731       ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2732     fi
2733     if test "$use_arch"  = "arm"; then
2734       ffmpg_config="$ffmpg_config --enable-pic"
2735       ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2736       if test "$use_neon"  = "yes"; then
2737         ffmpg_config="$ffmpg_config --enable-neon"
2738       else
2739         ffmpg_config="$ffmpg_config --disable-neon"
2740       fi
2741     else
2742       ffmpg_config="$ffmpg_config --disable-amd3dnow"
2743     fi
2744     if test "$use_ffmpeg_libvorbis" = "yes"; then
2745       ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2746     else
2747       ffmpg_config="$ffmpg_config --disable-libvorbis"
2748     fi
2749     if test "$have_gnutls" = "yes"; then
2750       ffmpg_config="$ffmpg_config --enable-gnutls"
2751     fi
2752
2753     # handle individual enables
2754     ffmpg_config="$ffmpg_config --enable-gpl"
2755     ffmpg_config="$ffmpg_config --enable-postproc"
2756     ffmpg_config="$ffmpg_config --enable-static      --enable-pthreads"
2757     ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2758     ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2759     ffmpg_config="$ffmpg_config --enable-protocol=http"
2760     ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2761
2762     # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2763     case $CC in
2764       *llvm-gcc-4.2*)
2765         ffmpg_config="$ffmpg_config --cc=clang" ;;
2766       *)
2767         ffmpg_config="$ffmpg_config --cc=$CC" ;;
2768     esac
2769     
2770     # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2771     FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2772
2773     LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2774
2775     # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2776     # dependency files in the right place, replace it with something that works
2777     case $AS in
2778       *llvm-gcc-4.2*)
2779         sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2780     esac
2781
2782     # ffmpeg will use yasm found at ${prefix}/bin during configure
2783     # but then hardcodes 'yasm' in config.mak, fix it.
2784     sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2785     sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2786     sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2787   else
2788     CFLAGS="" \
2789     CPPFLAGS="" \
2790     CXXFLAGS="" \
2791     LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2792     ./configure \
2793       --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2794       --disable-static \
2795       `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2796       `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2797       `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2798       `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2799       `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2800       --target-os=$ffmpeg_target_os \
2801       --disable-muxers \
2802       --enable-muxer=spdif \
2803       --enable-muxer=adts \
2804       --enable-muxer=asf \
2805       --enable-muxer=ipod \
2806       --disable-encoders \
2807       --enable-encoder=ac3 \
2808       --enable-encoder=aac \
2809       --enable-encoder=wmav2 \
2810       `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2811       --disable-decoder=mpeg_xvmc \
2812       --disable-devices \
2813       --disable-ffprobe \
2814       --disable-ffplay \
2815       --disable-ffserver \
2816       --disable-ffmpeg \
2817       --disable-crystalhd \
2818       `if test "$use_static_ffmpeg" = "yes"; then echo --enable-static; else echo --enable-shared; fi` \
2819       --disable-doc \
2820       --enable-postproc \
2821       --enable-gpl \
2822       `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2823       `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2824       `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2825       --enable-protocol=http \
2826       `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2827       --enable-pthreads \
2828       --enable-runtime-cpudetect \
2829       `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2830       `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2831       `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2832        else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2833       `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2834       --cc="$CC" &&
2835       sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2836       sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2837   fi
2838 ], [$USE_EXTERNAL_FFMPEG])
2839
2840 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2841   ./configure \
2842     CC="$CC" \
2843     CXX="$CXX" \
2844     CFLAGS="$CFLAGS $DROID_DVDLIB_SEEK64" \
2845     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2846     --host=$host_alias \
2847     --build=$build_alias \
2848     --target=$target_alias \      
2849     --disable-doc \
2850     --enable-static \
2851     --with-pic
2852 ], [$SKIP_CONFIG_DVDCSS])
2853
2854 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2855   ./configure2 \
2856     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
2857     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2858     --host=$host_alias \
2859     --build=$build_alias \
2860     --target=$target_alias \      
2861     --enable-static \
2862     --disable-shared \
2863     --disable-strip \
2864     --disable-opts \
2865     --cc="$CC" &&
2866   mkdir -p `pwd`/../includes/dvdread
2867   cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2868   cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2869 ], [0])
2870
2871 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2872   ./configure2 \
2873     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
2874     --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2875     --with-dvdread-config="`pwd`/../dvdread-config" \
2876     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2877     --host=$host_alias \
2878     --build=$build_alias \
2879     --target=$target_alias \      
2880     --enable-static \
2881     --disable-shared \
2882     --cc="$CC"
2883 ], [0])
2884
2885 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2886   set -x
2887   rm -f CMakeCache.txt &&                              \
2888   CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2889     -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF        \
2890     -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}"     \
2891     -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2892     -DCMAKE_INSTALL_PREFIX="${prefix}"                 \
2893     -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}"            \
2894     -DINCLUDE_INSTALL_DIR:PATH="${includedir}"         \
2895     -DLIB_INSTALL_DIR:PATH="${libdir}"                 \
2896     -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}"         \
2897     -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2898   if test "$host_vendor" = "apple" ; then
2899     # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2900     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2901     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2902     sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2903   fi
2904   set +x
2905 ], [$DISABLE_PROJECTM])
2906
2907 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2908   ./configure  \
2909     CFLAGS="$CFLAGS" \ 
2910     CXXFLAGS="$CXXFLAGS" \
2911     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2912     --host=$host_alias \
2913     --build=$build_alias \
2914     --target=$target_alias \      
2915     --disable-shared \
2916     --enable-static \
2917     --with-pic
2918 ], [$DISABLE_GOOM])
2919
2920 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2921   if test "$host_vendor" = "apple"; then
2922     # clang treats inlines different
2923     case $CC in
2924       *clang*)
2925         TEMPCFLAGS="$CFLAGS";;
2926       *)
2927         TEMPCFLAGS="${CFLAGS} -fgnu89-inline";;
2928     esac
2929   else
2930     TEMPCFLAGS="$CFLAGS";
2931   fi
2932   ./configure \
2933     CC="$CC" \
2934     CXX="$CXX" \
2935     CFLAGS="$TEMPCFLAGS" \ 
2936     CXXFLAGS="$CXXFLAGS" \
2937     `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2938     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2939     --host=$host_alias \
2940     --build=$build_alias \
2941     --target=$target_alias \      
2942     --without-xscreensaver \
2943     --disable-sound \
2944     --disable-cyclone \
2945     --disable-fieldlines \
2946     --disable-flocks \
2947     --disable-flux \
2948     --disable-helios \
2949     --disable-hyperspace \
2950     --disable-lattice \
2951     --disable-skyrocket
2952   if echo "$ARCH" | grep -q freebsd ; then
2953     sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2954   fi
2955 ], [$DISABLE_RSXS])
2956
2957 XB_CONFIG_MODULE([lib/cpluff], [
2958   ./configure --disable-nls \
2959     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2960     --host=$host_alias \
2961     --build=$build_alias \
2962     --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2963     #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"    
2964 ], [0])
2965
2966 XB_CONFIG_MODULE([lib/gtest], [
2967   ./configure \
2968     CC="$CC" \
2969     CXX="$CXX" \
2970     CFLAGS="$CFLAGS" \
2971     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2972     --host=$host_alias \
2973     --build=$build_alias \
2974     --target=$target_alias \
2975     --disable-shared \
2976     --enable-static \
2977     --with-pthreads
2978 ], [$SKIP_CONFIG_GTEST])
2979
2980 XB_CONFIG_MODULE([pvr-addons], [
2981   ./configure \
2982     --prefix="${prefix}" \
2983     --host=$host_alias \
2984     --build=$build_alias \
2985     --target=$target_alias \
2986     CC="$CC" \
2987     CXX="$CXX" \
2988     CFLAGS="$CFLAGS" \
2989     CXXFLAGS="$CXXFLAGS"
2990 ], [$DISABLE_PVR_ADDON_CONFIG])
2991
2992 AC_OUTPUT
2993
2994 final_message="$final_message\n  prefix:\t$prefix\n$dashes"
2995 echo -e "$final_message\n"