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