Merge pull request #3973 from xhaggi/epg-genre-in-info-area
[vuplus_xbmc] / configure.in
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ(2.59)
5 AC_INIT([xbmc], [12.9.12], [http://issues.xbmc.org])
6 AC_CONFIG_HEADERS([xbmc/config.h])
7 AH_TOP([#pragma once])
8 m4_include([m4/ax_prog_cc_for_build.m4])
9 m4_include([m4/ax_prog_cxx_for_build.m4])
10 m4_include([m4/ax_python_devel.m4])
11 m4_include([m4/xbmc_arch.m4])
12
13 AC_CONFIG_AUX_DIR([build-aux])
14 AM_INIT_AUTOMAKE([foreign])
15 AC_CANONICAL_HOST
16
17 tolower(){
18   echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
19 }
20
21 # check for enabling additional players
22 AC_DEFUN([XB_ADD_PLAYER],
23 [
24   AC_MSG_CHECKING([for $2])
25   case $add_players in
26     *$2*)
27       AC_SUBST([USE_$1], 1)
28       AC_DEFINE([HAS_$1], 1, [using $2])
29       AC_MSG_RESULT([enabling $2])
30       ;;
31     *)
32       AC_MSG_RESULT([$2 is not enabled])
33   esac
34 ])
35
36 # check for enabling additional codecs
37 AC_DEFUN([XB_ADD_CODEC],
38 [
39   AC_MSG_CHECKING([for $2])
40   case $3 in
41     *$2*)
42       use_codec_$2="yes"
43       AC_SUBST([USE_$1], 1)
44       AC_DEFINE([HAS_$1], 1, [using $2])
45       AC_MSG_RESULT([enabling $2])
46       ;;
47     *)
48       AC_MSG_RESULT([$2 is not enabled])
49   esac
50 ])
51
52 # check for library basenames
53 AC_DEFUN([XB_FIND_SONAME],
54 [
55   if echo "$host" | grep -q freebsd ; then
56     AC_MSG_CHECKING([for lib$2 soname])
57     $1_SONAME=[`ldconfig -r | sed -n "s;.* \(/.*lib$2\.so.*\)$;\1;p" | head -n 1`]
58     if test x$$1_SONAME != x ; then
59       $1_SONAME=[`basename $$1_SONAME`]
60     fi
61   elif [[ "$host_vendor" != "apple" ]]; then
62     AC_MSG_CHECKING([for lib$2 soname])
63     $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
64     if [[ -z $$1_FILENAME ]]; then
65       #try gold linker syntax
66       $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "lib$2")
67     fi
68     if [[ ! -z $$1_FILENAME ]]; then
69       $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
70     fi
71   else
72     AC_MSG_CHECKING([for lib$2 dylib])
73     gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
74     env_lib_path=[`echo $LDFLAGS | sed 's/-L[ ]*//g'`]
75     if test "$cross_compiling" = yes; then
76       host_lib_path=""
77     else
78       host_lib_path="/usr/lib /usr/local/lib"
79     fi
80     for path in $gcc_lib_path $env_lib_path $host_lib_path; do
81       lib=[`ls -- $path/lib$2.dylib 2>/dev/null`]
82       if test x$lib != x; then
83         # we want the path/name that is embedded in the dylib 
84         $1_SONAME=[`otool -L $lib | grep -v lib$2.dylib | grep lib$2 | awk '{V=1; print $V}'`]
85         $1_SONAME=[`basename $$1_SONAME`]
86       fi
87     done
88   fi
89   if [[ -z "$$1_SONAME" ]]; then
90     AC_MSG_RESULT([no])
91     if test -z "$3" || test "x${$3}" = "xyes"; then
92       AC_MSG_ERROR([Unable to determine soname of lib$2 library])
93     else
94       AC_MSG_WARN([Unable to determine soname of lib$2 library])
95       $3=no
96       AC_MSG_WARN([lib$2 support disabled])
97     fi
98   else
99     AC_MSG_RESULT([$$1_SONAME])
100     AC_SUBST($1_SONAME)
101   fi
102 ])
103
104 # Function to push and pop libs and includes for a command
105 AC_DEFUN([XB_PUSH_FLAGS], [
106   SAVE_LIBS="$LIBS"
107   SAVE_INCLUDES="$INCLUDES"
108   LIBS="[$2]"
109   INCLUDES="[$1]"
110   [$3]
111   LIBS="$SAVE_LIBS"
112   INCLUDES="$SAVE_INCLUDES"
113 ])
114
115 # General message strings
116 configure_debug="ERROR: this is a configure debug statement"
117 missing_library="Could not find a required library. Please see the README for your platform."
118 missing_headers="Could not find some required headers. Please see the README for your platform."
119 missing_program="Could not find a required program. Please see the README for your platform."
120 xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
121 xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
122 waveform_enabled="== WAVEFORM enabled =="
123 waveform_disabled="== WAVEFORM disabled =="
124 spectrum_enabled="== SPECTRUM enabled =="
125 spectrum_disabled="== SPECTRUM disabled =="
126 goom_enabled="== GOOM enabled. =="
127 goom_disabled="== GOOM disabled. =="
128 alsa_disabled="== ALSA support disabled. =="
129 rsxs_enabled="== RSXS enabled. =="
130 rsxs_disabled="== RSXS disabled. =="
131 fishbmc_enabled="== FishBMC enabled. =="
132 fishbmc_disabled="== FishBMC disabled. =="
133 projectm_enabled="== ProjectM enabled. =="
134 projectm_disabled="== ProjectM disabled. =="
135 wayland_enabled="== Wayland enabled. =="
136 wayland_disabled="== Wayland disabled. =="
137 x11_enabled="== X11 enabled. =="
138 x11_disabled="== X11 disabled. =="
139 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
140 pulse_disabled="== PulseAudio support 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*|i*86*-*-linux-uclibc*)
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*|x86_64-*-linux-uclibc*)
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*|powerpc-*-linux-uclibc*)
685      ARCH="powerpc-linux"
686      ;;
687   powerpc64-*-linux-gnu*|powerpc64-*-linux-uclibc*)
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],USE_AIRTUNES=1,
1616    [AC_MSG_NOTICE($libshairplay_not_found)
1617    ])
1618
1619   if test "x$USE_AIRTUNES" != "x0"; then
1620     XB_FIND_SONAME([SHAIRPLAY], [shairplay], [USE_AIRTUNES])
1621     USE_LIBSHAIRPLAY=1
1622     AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1623                      [[#include <shairplay/raop.h>]])
1624     AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1625   fi
1626
1627   #libshairport - as a fallback for AirTunes
1628   if test "x$USE_AIRTUNES" == "x0"; then
1629     AC_CHECK_HEADERS([shairport/shairport.h],USE_AIRTUNES=1,
1630      [AC_MSG_NOTICE($libshairport_not_found)
1631      ])
1632
1633     if test "x$USE_AIRTUNES" != "x0"; then
1634       XB_FIND_SONAME([SHAIRPORT], [shairport], [USE_AIRTUNES])
1635       AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1636                        [[#include <shairport/shairport.h>]])
1637       AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1638     fi
1639   fi
1640
1641   if test "x$USE_AIRTUNES" == "x0"; then
1642     if test "x$use_airtunes" == "xyes"; then
1643       AC_MSG_ERROR("No airtunes library could be found. (libshairport/libshairplay)")
1644     fi
1645     use_airtunes="no"
1646   fi
1647 fi
1648
1649 # libudev
1650 USE_LIBUDEV=0
1651 if test "$host_vendor" = "apple" ; then
1652   use_libudev="no"
1653   AC_MSG_NOTICE($libudev_disabled)
1654 else
1655   if test "$use_libudev" = "auto"; then
1656     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1657   elif test "$use_libudev" = "yes" ; then
1658     PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1659   else
1660     AC_MSG_NOTICE($libudev_disabled)
1661   fi
1662
1663   if test "x$use_libudev" != "xno"; then
1664     USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1665     AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1666   fi
1667 fi
1668
1669 # libusb
1670 USE_LIBUSB=0
1671
1672 # if libudev is available, we don't need libusb
1673 if test "x$use_libudev" != "xno"; then
1674   use_libusb="no"
1675   AC_MSG_NOTICE($libusb_disabled_udev_found)
1676 else
1677   if test "$host_vendor" = "apple" ; then
1678     use_libusb="no"
1679     AC_MSG_NOTICE($libusb_disabled)
1680   else
1681     if echo "$ARCH" | grep -q freebsd ; then
1682       AC_CHECK_LIB([usb],[main],
1683                 [use_libusb="yes";USB_LIBS="-lusb"],
1684                 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1685     elif test "$use_libusb" = "auto"; then
1686       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1687     elif test "$use_libusb" = "yes"; then
1688       PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1689     else
1690       AC_MSG_NOTICE($libusb_disabled)
1691     fi
1692   
1693     if test "x$use_libusb" != "xno"; then
1694       USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1695       AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1696     fi
1697   fi
1698 fi
1699
1700 # libcec
1701 USE_LIBCEC=0
1702 if test "x$use_libcec" != "xno"; then
1703   # libcec is dyloaded, so we need to check for its headers and link any depends.
1704   if test "x$use_libcec" != "xno"; then
1705     if test "x$use_libcec" != "xauto"; then
1706       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1707     else
1708       PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1709     fi
1710
1711     if test "x$use_libcec" != "xno"; then
1712       INCLUDES="$INCLUDES $CEC_CFLAGS"
1713       USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1714       XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1715       AC_MSG_NOTICE($libcec_enabled)
1716     else
1717       use_libcec="no"
1718       AC_MSG_NOTICE($libcec_disabled)
1719     fi
1720   fi
1721 else
1722   use_libcec="no"
1723   AC_MSG_NOTICE($libcec_disabled)
1724 fi
1725
1726 # libcap
1727 if test "$use_libcap" != "no"; then
1728   AC_CHECK_HEADERS([sys/capability.h],,
1729    [if test "$use_libcap" = "yes"; then
1730       AC_MSG_ERROR($libcap_not_found)
1731     elif test "$use_libcap" != "no"; then
1732       AC_MSG_NOTICE($libcap_not_found)
1733       use_libcap="no"
1734     fi
1735    ])
1736   if test "$use_libcap" != "no"; then
1737     AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1738   fi
1739   if test "$use_libcap" != "no"; then
1740     AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1741   fi
1742 else
1743   AC_MSG_NOTICE($libcap_disabled)
1744 fi
1745
1746 ### External libraries checks
1747
1748 # Hacks for supporting libav
1749
1750 USE_LIBAV_HACKS=0
1751 if test "$use_libav_hacks" = "yes"; then
1752     export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1753     USE_LIBAV_HACKS=1
1754     AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1755 fi
1756
1757 # External FFmpeg
1758 if test "$use_external_ffmpeg" = "yes"; then
1759   FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1760
1761   PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1762                     [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1763                     AC_MSG_ERROR($missing_library))
1764
1765   # in case the headers are in a custom directory
1766   SAVE_CPPFLAGS="$CPPFLAGS"
1767   CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1768
1769   AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1770   [AC_MSG_ERROR($missing_headers)])
1771
1772   AC_MSG_NOTICE($external_ffmpeg_enabled)
1773   USE_EXTERNAL_FFMPEG=1
1774   AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1775
1776   CPPFLAGS="$SAVE_CPPFLAGS"
1777 else
1778   AC_MSG_NOTICE($external_ffmpeg_disabled)
1779   USE_EXTERNAL_FFMPEG=0
1780 fi
1781
1782 echo "Checking for SWIG installation"
1783 AC_PATH_PROG(SWIG_EXE, swig, "none")
1784 if test "$SWIG_EXE" = "none"; then
1785   AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1786   if test "$SWIG20_EXE" != "none" ; then
1787     SWIG_EXE=$SWIG20_EXE
1788   fi
1789 fi
1790 if test "$SWIG_EXE" = "none"; then
1791   AC_MSG_ERROR($missing_program)
1792 fi
1793 final_message="$final_message\n  SWIG Available:\tYes"
1794
1795 echo "Checking for a jre installation"
1796 AC_PATH_PROG(JAVA_EXE, java, "none")
1797 if test "$JAVA_EXE" = "none"; then
1798   AC_MSG_ERROR($missing_program)
1799 fi
1800 final_message="$final_message\n  JRE Available:\tYes"
1801
1802 echo "Checking for doxygen installation"
1803 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1804 if test "$DOXYGEN_EXE" = "none"; then
1805   AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1806   final_message="$final_message\n  Doxygen Available:\tNo"
1807   USE_DOXYGEN=0
1808 else
1809   final_message="$final_message\n  Doxygen Available:\tYes"
1810   USE_DOXYGEN=1
1811 fi
1812
1813 # VDPAU
1814 if test "x$use_vdpau" != "xno"; then
1815   if test "$host_vendor" = "apple" ; then
1816     if test "x$use_vdpau" = "xyes"; then
1817       AC_MSG_ERROR([VDPAU not supported on this platform])
1818     else
1819       use_vdpau="no"
1820       AC_MSG_NOTICE($vdpau_disabled)
1821     fi
1822     USE_VDPAU=0
1823   else
1824     USE_VDPAU=1
1825     AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1826       [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1827     [if test "x$use_vdpau" = "xyes"; then
1828       USE_VDPAU=0
1829       AC_MSG_ERROR([$vdpau_not_found])
1830     else
1831       use_vdpau="no"
1832       USE_VDPAU=0
1833       AC_MSG_RESULT($vdpau_not_found)
1834     fi])
1835   fi
1836 else
1837   USE_VDPAU=0
1838   AC_MSG_NOTICE($vdpau_disabled)
1839 fi
1840
1841 # VAAPI
1842 if test "x$use_vaapi" != "xno"; then
1843   if test "$host_vendor" = "apple" ; then
1844     if test "x$use_vaapi" = "xyes"; then
1845       AC_MSG_ERROR([VAAPI not supported on this platform])
1846     else
1847       use_vaapi="no"
1848       AC_MSG_NOTICE($vaapi_disabled)
1849     fi
1850     USE_VAAPI=0
1851   else
1852     initial_val=$use_vaapi
1853     AC_CHECK_LIB([va], main, :, use_vaapi=no)
1854     if test "x$use_vaapi" != "xno"; then
1855       AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1856     fi
1857
1858     if test "x$use_vaapi" = "xno"; then
1859       if test "x$initial_val" = "xyes"; then
1860         AC_MSG_ERROR($vaapi_not_found)
1861       else
1862         AC_MSG_RESULT($vaapi_not_found)
1863       fi
1864       USE_VAAPI=0
1865     else
1866       AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1867       USE_VAAPI=1
1868     fi
1869   fi
1870 else
1871   AC_MSG_NOTICE($vaapi_disabled)
1872   USE_VAAPI=0
1873 fi
1874
1875 # CrystalHD
1876 if test "x$use_crystalhd" != "xno"; then
1877   SAVE_CFLAGS="$CFLAGS"
1878   CFLAGS="-D__LINUX_USER__"
1879   AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1880     [ if test "x$use_crystalhd" = "xyes"; then
1881         AC_MSG_ERROR($crystalhd_not_found)
1882       else
1883         use_crystalhd=no
1884         AC_MSG_RESULT($crystalhd_not_found)
1885       fi
1886       USE_CRYSTALHD=0
1887     ])
1888     CFLAGS="$SAVE_CFLAGS"
1889     if test "$host_vendor" != "apple"; then
1890       XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1891     fi
1892     if test "x$use_crystalhd" != "xno"; then
1893       SAVE_CFLAGS="$CFLAGS"
1894       CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1895       # check for new crystalhd lib
1896       AC_COMPILE_IFELSE(
1897         [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1898           #include <libcrystalhd/bc_dts_defs.h>
1899           PBC_INFO_CRYSTAL bCrystalInfo;])],
1900         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ], 
1901         [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1902       CFLAGS="$SAVE_CFLAGS"
1903       USE_CRYSTALHD=1
1904     fi
1905 else
1906   AC_MSG_NOTICE($crystalhd_disabled)
1907   USE_CRYSTALHD=0
1908 fi
1909
1910 # VTBDecoder
1911 if test "x$use_vtbdecoder" != "xno"; then
1912   if test "$host_vendor" = "apple" ; then
1913     HAVE_VIDEOTOOLBOXDECODER=1
1914     AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1915     AC_MSG_NOTICE($vtbdecoder_enabled)
1916   else
1917     if test "x$use_vtbdecoder" = "xyes"; then
1918       AC_MSG_ERROR([VTB Decoder not supported on this platform])
1919     else
1920       use_vtbdecoder="no"
1921       AC_MSG_NOTICE($vtbdecoder_disabled)
1922     fi
1923   fi
1924 else
1925   AC_MSG_NOTICE($vtbdecoder_disabled)
1926 fi
1927
1928 # OpenMax
1929 if test "$host_vendor" = "apple" ; then
1930   use_openmax="no"
1931   USE_OPENMAX=0
1932   AC_MSG_NOTICE($openmax_disabled)
1933 elif test "$target_platform" = "target_raspberry_pi"; then
1934   use_openmax="no"
1935   USE_OPENMAX=0
1936   AC_MSG_NOTICE($openmax_disabled)
1937 else
1938   if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1939     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1940                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1941                       use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1942   elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1943     PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1944                       USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1945                       AC_MSG_ERROR($openmax_not_found))
1946   else
1947     AC_MSG_NOTICE($openmax_disabled)
1948     use_openmax=no
1949     USE_OPENMAX=0
1950   fi
1951 fi
1952
1953 # yajl version check (yajl_version.h was added in yajl 2.0)
1954 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1955 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1956 ], [])
1957
1958 # additional internal players
1959 case $add_players in
1960   *omxplayer*)
1961       XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1962       ;;
1963 esac
1964
1965 # additional internal codecs
1966 # remember to convert commas to spaces
1967 for codecs in `echo $add_codecs | sed 's/,/ /g'`; do
1968   case $codecs in
1969     *amcodec*)
1970         AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1971         XB_ADD_CODEC([LIBAMCODEC], [amcodec], [$codecs])
1972         ;;
1973     *libstagefright*)
1974         XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright], [$codecs])
1975         ;;
1976     *)
1977   esac
1978 done
1979
1980 # platform specific bin utilities
1981 if test "$build_vendor" != "apple" ; then
1982   AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1983   if test "$HAVE_GAWK" = "no" ; then
1984     AC_MSG_ERROR($missing_program)
1985   fi
1986 fi
1987
1988 if test "$use_arch" != "arm" ; then
1989   AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1990   if test "$HAVE_CMAKE" = "no" ; then
1991     AC_MSG_ERROR($missing_program)
1992   fi
1993 fi
1994
1995 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
1996 if test "$HAVE_GPERF" = "no" ; then
1997   AC_MSG_ERROR($missing_program)
1998 fi
1999
2000 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
2001 if test "$HAVE_UNZIP" = "no" ; then
2002   AC_MSG_ERROR($missing_program)
2003 fi
2004
2005 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
2006 if test "$HAVE_ZIP" = "no" ; then
2007   AC_MSG_ERROR($missing_program)
2008 fi
2009
2010 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
2011   AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
2012   if test "$HAVE_NASM" = "no" ; then
2013     AC_MSG_ERROR($missing_program)
2014   fi
2015 fi
2016
2017 # Checks for header files.
2018 AC_HEADER_DIRENT
2019 AC_HEADER_STDC
2020 AC_HEADER_SYS_WAIT
2021 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
2022   malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
2023   strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
2024   sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
2025 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
2026
2027 # Checks for typedefs, structures, and compiler characteristics.
2028 AC_HEADER_STAT
2029 AC_HEADER_STDBOOL
2030 AC_C_CONST
2031 AC_TYPE_UID_T
2032 AC_C_INLINE
2033 AC_TYPE_INT8_T
2034 AC_TYPE_INT16_T
2035 AC_TYPE_INT32_T
2036 AC_TYPE_INT64_T
2037 AC_TYPE_MODE_T
2038 AC_TYPE_OFF_T
2039 AC_TYPE_PID_T
2040 AC_C_RESTRICT
2041 AC_TYPE_SIZE_T
2042 AC_TYPE_SSIZE_T
2043 AC_CHECK_MEMBERS([struct stat.st_rdev])
2044 AC_HEADER_TIME
2045 AC_STRUCT_TM
2046 AC_TYPE_UINT8_T
2047 AC_TYPE_UINT16_T
2048 AC_TYPE_UINT32_T
2049 AC_TYPE_UINT64_T
2050 AC_C_BIGENDIAN
2051
2052 if test "$cross_compiling" = "yes"; then
2053   final_message="$final_message\n  Crosscomp.:\tYes"
2054   if [[ -d "$NATIVE_ROOT" ]]; then
2055     CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2056     CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2057     LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
2058     if test "$host_vendor" != "apple" ; then
2059       LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
2060     fi
2061     final_message="$final_message\n  Native Root:\t$NATIVE_ROOT"
2062   fi
2063 else
2064   final_message="$final_message\n  Crosscomp.:\tNo"
2065 fi
2066
2067 final_message="$final_message\n  target ARCH:\t$use_arch"
2068 final_message="$final_message\n  target CPU:\t$use_cpu"
2069
2070 if test "$use_gles" = "yes"; then
2071   final_message="$final_message\n  OpenGLES:\tYes"
2072   USE_OPENGLES=1
2073   USE_OPENGL=0
2074 else
2075   USE_OPENGLES=0
2076   if test "$use_gl" = "yes"; then
2077     final_message="$final_message\n  OpenGL:\tYes"
2078     USE_OPENGL=1
2079   else
2080     final_message="$final_message\n  OpenGL:\tNo (Very Slow)"
2081     SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2082     USE_OPENGL=0
2083   fi
2084 fi
2085
2086 if test "$use_alsa" = "yes"; then
2087   USE_ALSA=1
2088   AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2089   final_message="$final_message\n  ALSA:\t\tYes"
2090 else
2091   USE_ALSA=0
2092   final_message="$final_message\n  ALSA:\t\tNo"
2093 fi
2094
2095 if test "$use_dbus" = "yes"; then
2096   final_message="$final_message\n  DBUS:\t\tYes"
2097 else
2098   final_message="$final_message\n  DBUS:\t\tNo"
2099 fi
2100
2101 if test "x$use_vdpau" != "xno"; then
2102   final_message="$final_message\n  VDPAU:\tYes"
2103 else
2104   final_message="$final_message\n  VDPAU:\tNo"
2105 fi
2106
2107 if test "x$use_vaapi" != "xno"; then
2108   final_message="$final_message\n  VAAPI:\tYes"
2109 else
2110   final_message="$final_message\n  VAAPI:\tNo"
2111 fi
2112
2113 if test "x$use_crystalhd" != "xno"; then
2114   final_message="$final_message\n  CrystalHD:\tYes"
2115 else
2116   final_message="$final_message\n  CrystalHD:\tNo"
2117 fi
2118
2119 if test "x$use_vtbdecoder" != "xno"; then
2120   final_message="$final_message\n  VTBDecoder:\tYes"
2121 else
2122   final_message="$final_message\n  VTBDecoder:\tNo"
2123 fi
2124
2125 if test "$use_openmax" != "no"; then
2126   final_message="$final_message\n  OpenMax:\tYes"
2127 else
2128   final_message="$final_message\n  OpenMax:\tNo"
2129 fi
2130
2131 if test "$use_joystick" = "yes"; then
2132   final_message="$final_message\n  Joystick:\tYes"
2133   SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2134 else
2135   final_message="$final_message\n  Joystick:\tNo"
2136 fi
2137
2138 if test "$use_xrandr" = "yes"; then
2139   final_message="$final_message\n  XRandR:\tYes"
2140   USE_XRANDR=1
2141 else
2142   final_message="$final_message\n  XRandR:\tNo"
2143   USE_XRANDR=0
2144 fi
2145
2146 if test "$use_waveform" = "yes"; then
2147   final_message="$final_message\n  Waveform:\tYes"
2148 else
2149   final_message="$final_message\n  Waveform:\tNo"
2150 fi
2151
2152 if test "$use_spectrum" = "yes"; then
2153   final_message="$final_message\n  Spectrum:\tYes"
2154 else
2155   final_message="$final_message\n  Spectrum:\tNo"
2156 fi
2157
2158 if test "$use_goom" = "yes"; then
2159   final_message="$final_message\n  GOOM:\t\tYes"
2160 else
2161   final_message="$final_message\n  GOOM:\t\tNo"
2162 fi
2163
2164 if test "$use_rsxs" = "yes"; then
2165   final_message="$final_message\n  RSXS:\t\tYes"
2166 else
2167   final_message="$final_message\n  RSXS:\t\tNo"
2168 fi
2169
2170 if test "$use_fishbmc" = "yes"; then
2171   final_message="$final_message\n  FishBMC:\tYes"
2172 else
2173   final_message="$final_message\n  FishBMC:\tNo"
2174 fi
2175
2176 if test "$use_projectm" = "yes"; then
2177   final_message="$final_message\n  ProjectM:\tYes"
2178 else
2179   final_message="$final_message\n  ProjectM:\tNo"
2180 fi
2181
2182 if test "$use_skin_touched" = "yes"; then
2183   final_message="$final_message\n  Skin Touched:\tYes"
2184 else
2185   final_message="$final_message\n  Skin Touched:\tNo"
2186 fi
2187
2188 if test "$use_x11" = "yes"; then
2189   final_message="$final_message\n  X11:\t\tYes"
2190 else
2191   final_message="$final_message\n  X11:\t\tNo"
2192 fi
2193
2194 if test "$use_wayland" = "yes"; then
2195   final_message="$final_message\n  Wayland:\tYes"
2196   USE_WAYLAND=1
2197   USE_XKBCOMMON=1
2198 else
2199   final_message="$final_message\n  Wayland:\tNo"
2200 fi
2201
2202 if test "$use_libbluray" = "yes"; then
2203   final_message="$final_message\n  Bluray:\tYes"
2204 else
2205   final_message="$final_message\n  Bluray:\tNo"
2206 fi
2207
2208 if test "x$use_texturepacker" != "xno"; then
2209   final_message="$final_message\n  TexturePacker:Yes"
2210   USE_TEXTUREPACKER=1
2211 else
2212   final_message="$final_message\n  TexturePacker:No"
2213   USE_TEXTUREPACKER=0
2214 fi
2215
2216 if test "$use_mid" = "yes"; then
2217   final_message="$final_message\n  MID Support:\tYes"
2218   SDL_DEFINES="$SDL_DEFINES -DMID"
2219 else
2220   final_message="$final_message\n  MID Support:\tNo"
2221 fi
2222
2223 ORIGCC=$CC
2224 ORIGCXX=$CXX
2225 if test "x$use_ccache" != "xno"; then
2226   AC_PATH_PROG(CCACHE,ccache,none)
2227   if test "$ac_cv_path_CCACHE" = "none"; then
2228     if test "x$use_ccache" = "xyes"; then
2229       AC_MSG_ERROR([ccache not found.]);
2230     else
2231       AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2232       final_message="$final_message\n  ccache:\tNo"
2233     fi
2234   else
2235     CC="$ac_cv_path_CCACHE $CC"
2236     CXX="$ac_cv_path_CCACHE $CXX"
2237     AC_MSG_NOTICE(enabling ccache)
2238     final_message="$final_message\n  ccache:\tYes"
2239   fi
2240 else
2241   final_message="$final_message\n  ccache:\tNo"
2242 fi
2243
2244 if test "$use_alsa" = "yes"; then
2245   final_message="$final_message\n  ALSA Support:\tYes"
2246 else
2247   final_message="$final_message\n  ALSA Support:\tNo"
2248 fi
2249
2250 if test "x$use_pulse" != "xno"; then
2251   XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2252   final_message="$final_message\n  PulseAudio:\tYes"
2253 else
2254   XBMC_STANDALONE_SH_PULSE=/dev/null
2255   final_message="$final_message\n  PulseAudio:\tNo"
2256 fi
2257
2258 if test "$use_hal" = "yes"; then
2259   final_message="$final_message\n  HAL Support:\tYes"
2260 else
2261   final_message="$final_message\n  HAL Support:\tNo"
2262 fi
2263
2264 # DVDCSS
2265 if test "$use_dvdcss" = "yes"; then
2266   AC_MSG_NOTICE($dvdcss_enabled)
2267   final_message="$final_message\n  DVDCSS:\tYes"
2268   BUILD_DVDCSS=1
2269   SKIP_CONFIG_DVDCSS=0
2270   DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2271 else
2272   AC_MSG_NOTICE($dvdcss_disabled)
2273   final_message="$final_message\n  DVDCSS:\tNo"
2274   BUILD_DVDCSS=0
2275   SKIP_CONFIG_DVDCSS=1
2276   DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2277 fi
2278 if test "$host_vendor" = "apple"; then
2279  DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2280 fi
2281
2282 # Google Test Framework
2283 if test "$configure_gtest" = "yes"; then
2284   AC_MSG_NOTICE($gtest_enabled)
2285   final_message="$final_message\n  Google Test Framework Configured:\tYes"
2286   GTEST_CONFIGURED=1
2287   SKIP_CONFIG_GTEST=0
2288 else
2289   AC_MSG_NOTICE($gtest_disabled)
2290   final_message="$final_message\n  Google Test Framework Configured:\tNo"
2291   GTEST_CONFIGURED=0
2292   SKIP_CONFIG_GTEST=1
2293 fi
2294
2295 if test "$use_avahi" = "yes"; then
2296   final_message="$final_message\n  Avahi:\tYes"
2297 else
2298   final_message="$final_message\n  Avahi:\tNo"
2299 fi
2300
2301 if test "$use_mdnsembedded" != "no"; then
2302   final_message="$final_message\n  mDNSEmbedded:\tYes"
2303 else
2304   final_message="$final_message\n  mDNSEmbedded:\tNo"
2305 fi
2306
2307 if test "$use_nonfree" = "yes"; then
2308   final_message="$final_message\n  Non-free:\tYes"
2309   HAVE_XBMC_NONFREE=1
2310   AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2311 else
2312   HAVE_XBMC_NONFREE=0
2313   final_message="$final_message\n  Non-free:\tNo"
2314 fi
2315
2316 if test "$use_asap" = "yes"; then
2317   AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2318   if test "$HAVE_GDC" = "no"; then
2319     AC_MSG_ERROR($missing_program);
2320   fi
2321   AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2322   if test "$HAVE_FPC" = "no"; then
2323     AC_MSG_ERROR($missing_program);
2324   fi
2325   USE_ASAP_CODEC=1
2326   AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2327   final_message="$final_message\n  ASAP Codec:\tYes"
2328 else
2329   USE_ASAP_CODEC=0
2330   final_message="$final_message\n  ASAP Codec:\tNo"
2331 fi
2332
2333 if test "$use_mysql" = "yes"; then
2334   final_message="$final_message\n  MySQL:\tYes"
2335   USE_MYSQL=1
2336 else
2337   final_message="$final_message\n  MySQL:\tNo"
2338   USE_MYSQL=0
2339 fi
2340 if test "$use_webserver" = "yes"; then
2341   final_message="$final_message\n  Webserver:\tYes"
2342   USE_WEB_SERVER=1
2343 else
2344   final_message="$final_message\n  Webserver:\tNo"
2345   USE_WEB_SERVER=0
2346 fi
2347
2348 if test "$use_libssh" != "no"; then
2349   final_message="$final_message\n  libssh support:\tYes"
2350 else
2351   final_message="$final_message\n  libssh support:\tNo"
2352 fi
2353
2354 if test "$use_librtmp" != "no"; then
2355   final_message="$final_message\n  libRTMP support:\tYes"
2356 else
2357   final_message="$final_message\n  libRTMP support:\tNo"
2358 fi
2359
2360 if test "x$use_samba" != "xno"; then
2361   final_message="$final_message\n  libsmbclient support:\tYes"
2362 else
2363   final_message="$final_message\n  libsmbclient support:\tNo"
2364 fi
2365
2366 if test "$use_libnfs" != "no"; then
2367   final_message="$final_message\n  libnfs client support:Yes"
2368 else
2369   final_message="$final_message\n  libnfs client support:No"
2370 fi
2371
2372 if test "x$use_libafpclient" != "xno"; then
2373   final_message="$final_message\n  libafpclient support:\tYes"
2374 else  
2375   final_message="$final_message\n  libafpclient support:\tNo"
2376 fi
2377
2378 if test "$use_airplay" != "no"; then
2379   final_message="$final_message\n  AirPlay support:\tYes"
2380 else
2381   final_message="$final_message\n  AirPLay support:\tNo"
2382 fi
2383
2384 if test "x$use_airtunes" != "xno"; then
2385   if test "x$USE_LIBSHAIRPLAY" == "x1"; then
2386     final_message="$final_message\n  AirTunes support (libshairplay):\tYes"  
2387   else
2388     final_message="$final_message\n  AirTunes support (libshairport):\tYes"
2389   fi
2390 else
2391   final_message="$final_message\n  AirTunes support:\tNo"
2392 fi
2393
2394 if test "x$use_upnp" != "xno"; then
2395   final_message="$final_message\n  UPnP support:\t\tYes"
2396   USE_UPNP=1
2397   AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2398 else
2399   USE_UPNP=0
2400   final_message="$final_message\n  UPnP support:\t\tNo"
2401 fi
2402
2403 if test "$use_optical_drive" = "yes"; then
2404   final_message="$final_message\n  Optical drive:\tYes"
2405 else
2406   final_message="$final_message\n  Optical drive:\tNo"
2407 fi
2408
2409 if test "x$use_libudev" != "xno"; then
2410   final_message="$final_message\n  libudev support:\tYes"
2411 else
2412   final_message="$final_message\n  libudev support:\tNo"
2413 fi
2414
2415 if test "x$use_libusb" != "xno"; then
2416   final_message="$final_message\n  libusb support:\tYes"
2417 else
2418   final_message="$final_message\n  libusb support:\tNo"
2419 fi
2420
2421 if test "x$use_libcec" != "xno"; then
2422   final_message="$final_message\n  libcec support:\tYes"
2423 else
2424   final_message="$final_message\n  libcec support:\tNo"
2425 fi
2426
2427 if test "x$use_libmp3lame" != "xno"; then
2428   final_message="$final_message\n  libmp3lame support:\tYes"
2429 else
2430   final_message="$final_message\n  libmp3lame support:\tNo"
2431 fi
2432
2433 if test "x$use_libvorbisenc" != "xno"; then
2434   final_message="$final_message\n  libvorbisenc support:\tYes"
2435 else
2436   final_message="$final_message\n  libvorbisenc support:\tNo"
2437 fi
2438
2439 if test "x$use_libcap" != "xno"; then
2440   final_message="$final_message\n  libcap support:\tYes"
2441 else
2442   final_message="$final_message\n  libcap support:\tNo"
2443 fi
2444
2445 if test "x$add_players" != "xno"; then
2446   final_message="$final_message\n  additional players:\tYes, $add_players"
2447 else
2448   final_message="$final_message\n  additional players:\tNo"
2449 fi
2450
2451 if test "x$add_codecs" != "xno"; then
2452   final_message="$final_message\n  additional codecs:\tYes, $add_codecs"
2453 else
2454   final_message="$final_message\n  additional codecs:\tNo"
2455 fi
2456
2457 ### External libraries messages
2458
2459 if test "$use_external_ffmpeg" = "yes"; then
2460   final_message="$final_message\n  External FFmpeg:\tYes"
2461 else
2462   final_message="$final_message\n  External FFmpeg:\tNo"
2463 fi
2464
2465 if test "$host_vendor" = "apple" ; then
2466   # built internal but referenced as external, we link directly to them.
2467   # this MUST be the last thing before OUTPUT_FILES as they do not
2468   # exist until after we build FFMpeg.
2469   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2470   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2471   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2472   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2473   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2474   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2475   LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2476 fi
2477
2478 USE_PVR_ADDONS=0
2479 DISABLE_PVR_ADDON_CONFIG=1
2480 if [[ -f "pvr-addons/Makefile.am" ]]; then
2481   final_message="$final_message\n  PVR add-ons:\t\tYes"
2482   USE_PVR_ADDONS=1
2483   DISABLE_PVR_ADDON_CONFIG=0
2484 else
2485   final_message="$final_message\n  PVR add-ons:\t\tNo"
2486 fi
2487
2488 OUTPUT_FILES="Makefile \
2489     Makefile.include \
2490     addons/skin.confluence/media/Makefile \
2491     xbmc/Makefile \
2492     xbmc/cdrip/Makefile \
2493     xbmc/cores/Makefile \
2494     xbmc/cores/VideoRenderers/Makefile \
2495     xbmc/cores/dvdplayer/Makefile \
2496     lib/Makefile \
2497     lib/libdvd/Makefile \
2498     xbmc/cores/DllLoader/Makefile \
2499     xbmc/cores/DllLoader/exports/Makefile \
2500     xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2501     xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2502     xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2503     xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2504     xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2505     xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2506     xbmc/cores/AudioEngine/Makefile \
2507     xbmc/cores/paplayer/Makefile \
2508     xbmc/cores/omxplayer/Makefile \
2509     lib/timidity/Makefile \
2510     lib/xbadpcm/Makefile \
2511     lib/asap/Makefile \
2512     lib/nosefart/Makefile \
2513     lib/libsidplay2/Makefile \
2514     lib/vgmstream/Makefile \
2515     lib/snesapu/SNES/SNESAPU/Makefile \
2516     lib/stsound/StSoundLibrary/Makefile \
2517     xbmc/cores/playercorefactory/Makefile \
2518     xbmc/music/karaoke/Makefile \
2519     xbmc/osx/Makefile \
2520     xbmc/guilib/Makefile \
2521     xbmc/input/linux/Makefile \
2522     xbmc/interfaces/Makefile \
2523     xbmc/network/Makefile \
2524     xbmc/network/upnp/Makefile \
2525     lib/libRTV/Makefile \
2526     lib/libexif/Makefile \
2527     lib/libXDAAP/Makefile \
2528     lib/cmyth/Makefile \
2529     lib/libhdhomerun/Makefile \
2530     lib/libsquish/Makefile \
2531     lib/cximage-6.0/Makefile \
2532     lib/libUPnP/Makefile \
2533     xbmc/DllPaths_generated.h \
2534     xbmc/DllPaths_generated_android.h \
2535     xbmc/freebsd/Makefile \
2536     xbmc/linux/Makefile \
2537     xbmc/filesystem/Makefile \
2538     xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2539     xbmc/visualizations/XBMCProjectM/Makefile \
2540     xbmc/visualizations/Goom/Makefile \
2541     xbmc/visualizations/OpenGLSpectrum/Makefile \
2542     xbmc/visualizations/fishBMC/Makefile \
2543     xbmc/visualizations/WaveForm/Makefile \
2544     xbmc/windowing/Makefile \
2545     xbmc/windowing/egl/Makefile \
2546     lib/addons/library.xbmc.addon/Makefile \
2547     lib/addons/library.xbmc.codec/Makefile \
2548     lib/addons/library.xbmc.gui/Makefile \
2549     lib/addons/library.xbmc.pvr/Makefile \
2550     xbmc/visualizations/EGLHelpers/Makefile \
2551     tools/Linux/xbmc.sh \
2552     tools/Linux/xbmc-standalone.sh \
2553     tools/TexturePacker/Makefile \
2554     tools/EventClients/Clients/OSXRemote/Makefile \
2555     xbmc/peripherals/bus/Makefile \
2556     xbmc/peripherals/devices/Makefile \
2557     xbmc/android/activity/Makefile \
2558     xbmc/android/loader/Makefile \
2559     xbmc/android/jni/Makefile \
2560     xbmc/utils/Makefile \
2561     xbmc/main/Makefile \
2562     project/cmake/xbmc-config.cmake"
2563
2564 if test "$use_wayland" = "yes"; then
2565 OUTPUT_FILES="$OUTPUT_FILES xbmc/windowing/tests/wayland/Makefile"
2566 fi
2567
2568 if test "$use_skin_touched" = "yes"; then
2569 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2570 fi
2571
2572 if test "$use_codec_libstagefright" = "yes"; then
2573 OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile"
2574 fi
2575
2576 OUTPUT_FILES="$OUTPUT_FILES \
2577   xbmc/interfaces/python/Makefile \
2578   xbmc/interfaces/python/test/Makefile"
2579
2580 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2581 # .dummy.am does nothing.
2582 AC_CONFIG_FILES([.dummy])
2583
2584 AC_CONFIG_FILES([${OUTPUT_FILES}])
2585 OUTPUT_FILES="$OUTPUT_FILES \
2586   .dummy"
2587 AC_SUBST(CFLAGS)
2588 AC_SUBST(CXXFLAGS)
2589 AC_SUBST(INCLUDES)
2590 AC_SUBST(LDFLAGS)
2591 AC_SUBST(CXX_FOR_BUILD)
2592 AC_SUBST(CC_FOR_BUILD)
2593 AC_SUBST(CFLAGS_FOR_BUILD)
2594 AC_SUBST(CXXFLAGS_FOR_BUILD)
2595 AC_SUBST(LDFLAGS_FOR_BUILD)
2596 AC_SUBST(SDL_DEFINES)
2597 AC_SUBST(BUILD_DVDCSS)
2598 AC_SUBST(DISABLE_WAVEFORM)
2599 AC_SUBST(DISABLE_SPECTRUM)
2600 AC_SUBST(DISABLE_GOOM)
2601 AC_SUBST(DISABLE_RSXS)
2602 AC_SUBST(DISABLE_FISHBMC)
2603 AC_SUBST(DISABLE_PROJECTM)
2604 AC_SUBST(USE_SKIN_TOUCHED)
2605 AC_SUBST(USE_EXTERNAL_FFMPEG)
2606 AC_SUBST(USE_LIBAV_HACKS)
2607 AC_SUBST(PYTHON_VERSION)
2608 AC_SUBST(OUTPUT_FILES)
2609 AC_SUBST(HAVE_XBMC_NONFREE)
2610 AC_SUBST(USE_ASAP_CODEC)
2611 AC_SUBST(LIBCURL_BASENAME)
2612 AC_SUBST(LIBFLAC_BASENAME)
2613 AC_SUBST(LIBVORBISFILE_BASENAME)
2614 AC_SUBST(LIBMODPLUG_BASENAME)
2615 AC_SUBST(LIBMAD_BASENAME)
2616 AC_SUBST(LIBOGG_BASENAME)
2617 AC_SUBST(LIBVORBISENC_BASENAME)
2618 AC_SUBST(LIBVORBIS_BASENAME)
2619 AC_SUBST(LIBASS_BASENAME)
2620 AC_SUBST(LIBMEPG2_BASENAME)
2621 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2622 AC_SUBST(USE_OPENGL)
2623 AC_SUBST(USE_OPENGLES)
2624 AC_SUBST(USE_VDPAU)
2625 AC_SUBST(USE_VAAPI)
2626 AC_SUBST(USE_CRYSTALHD)
2627 AC_SUBST(USE_LIBSMBCLIENT)
2628 AC_SUBST(USE_LIBNFS)
2629 AC_SUBST(USE_LIBAFPCLIENT)
2630 AC_SUBST(USE_AIRPLAY)
2631 AC_SUBST(USE_OPENMAX)
2632 AC_SUBST(USE_PULSE)
2633 AC_SUBST(USE_XRANDR)
2634 AC_SUBST(USE_ALSA)
2635 AC_SUBST(USE_TEXTUREPACKER)
2636 AC_SUBST(USE_AIRTUNES)
2637 AC_SUBST(USE_LIBUDEV)
2638 AC_SUBST(USE_LIBUSB)
2639 AC_SUBST(USE_LIBCEC)
2640 AC_SUBST(USE_MYSQL)
2641 AC_SUBST(USE_WAYLAND)
2642 AC_SUBST(USE_WEB_SERVER)
2643 AC_SUBST(USE_UPNP)
2644 AC_SUBST(USE_XKBCOMMON)
2645 AC_SUBST(USE_OMXLIB)
2646 AC_SUBST(USE_ANDROID)
2647 AC_SUBST(GTEST_CONFIGURED)
2648 AC_SUBST(USE_DOXYGEN)
2649 AC_SUBST(USE_PVR_ADDONS)
2650
2651 # pushd and popd are not available in other shells besides bash, so implement
2652 # our own pushd/popd functions
2653 XB_DIRSTACK="$PWD"
2654 xb_pushd()
2655 {
2656   local dirname="$1"
2657   if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2658     cd "$dirname"
2659     XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2660     return 0
2661   else
2662     AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2663   fi
2664 }
2665 xb_popd()
2666 {
2667   if [[ -n "$XB_DIRSTACK" ]]; then
2668     XB_DIRSTACK="${XB_DIRSTACK#* }"
2669     cd "${XB_DIRSTACK%% *}"
2670     return 0
2671   else
2672     AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2673   fi
2674 }
2675
2676 # Function to run the configure scripts in our submodules
2677 # Consists of three paramaters, the path to the submodule, the configure command
2678 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2679 # running the script, anything else if not.
2680 AC_DEFUN([XB_CONFIG_MODULE],[
2681 AC_CONFIG_COMMANDS_POST([
2682 if [[ $3 != "1" ]]; then
2683     if [[ -d $1 ]]; then
2684       xb_pushd $1
2685       $2
2686       if [[ $? -ne 0 ]]; then
2687         xb_popd
2688         AC_MSG_ERROR([[Submodule $1 failed to configure]])
2689       else
2690         xb_popd
2691       fi
2692     else
2693       AC_MSG_ERROR([[Submodule $1 does not exist]])
2694     fi
2695 else
2696     AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2697 fi
2698 ])
2699 ])
2700
2701 XB_CONFIG_MODULE([lib/ffmpeg], [
2702   if test "$host_vendor" = "apple" ; then
2703     ffmpg_config="--target-os=$ffmpeg_target_os"
2704     # handle disables first, we do individual enables later
2705     ffmpg_config="$ffmpg_config --disable-muxers   --disable-encoders"
2706     ffmpg_config="$ffmpg_config --disable-devices  --disable-doc"
2707     ffmpg_config="$ffmpg_config --disable-ffplay   --disable-ffmpeg"
2708     ffmpg_config="$ffmpg_config --disable-ffprobe  --disable-ffserver"
2709     ffmpg_config="$ffmpg_config --enable-vda       --disable-crystalhd"
2710     ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2711
2712     # handle conditional enables/disables
2713     if test "$use_debug" = "no"; then
2714       ffmpg_config="$ffmpg_config --disable-debug"
2715     fi
2716     if test "$use_cpu"  != "no";  then
2717       ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2718     fi
2719     if test "$use_arch" != "no"; then
2720       ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2721     fi
2722     if test "$use_arch"  = "arm"; then
2723       ffmpg_config="$ffmpg_config --enable-pic"
2724       ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2725       if test "$use_neon"  = "yes"; then
2726         ffmpg_config="$ffmpg_config --enable-neon"
2727       else
2728         ffmpg_config="$ffmpg_config --disable-neon"
2729       fi
2730     else
2731       ffmpg_config="$ffmpg_config --disable-amd3dnow"
2732     fi
2733     if test "$use_ffmpeg_libvorbis" = "yes"; then
2734       ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2735     else
2736       ffmpg_config="$ffmpg_config --disable-libvorbis"
2737     fi
2738     if test "$have_gnutls" = "yes"; then
2739       ffmpg_config="$ffmpg_config --enable-gnutls"
2740     fi
2741
2742     # handle individual enables
2743     ffmpg_config="$ffmpg_config --enable-gpl"
2744     ffmpg_config="$ffmpg_config --enable-postproc"
2745     ffmpg_config="$ffmpg_config --enable-static      --enable-pthreads"
2746     ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2747     ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2748     ffmpg_config="$ffmpg_config --enable-protocol=http"
2749     ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2750
2751     # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2752     case $CC in
2753       *llvm-gcc-4.2*)
2754         ffmpg_config="$ffmpg_config --cc=clang" ;;
2755       *)
2756         ffmpg_config="$ffmpg_config --cc=$CC" ;;
2757     esac
2758     
2759     # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2760     FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2761
2762     LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2763
2764     # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2765     # dependency files in the right place, replace it with something that works
2766     case $AS in
2767       *llvm-gcc-4.2*)
2768         sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2769     esac
2770
2771     # ffmpeg will use yasm found at ${prefix}/bin during configure
2772     # but then hardcodes 'yasm' in config.mak, fix it.
2773     sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2774     sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2775     sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2776   else
2777     CFLAGS="" \
2778     CPPFLAGS="" \
2779     CXXFLAGS="" \
2780     LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2781     ./configure \
2782       --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2783       --disable-static \
2784       `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2785       `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2786       `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2787       `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2788       `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2789       --target-os=$ffmpeg_target_os \
2790       --disable-muxers \
2791       --enable-muxer=spdif \
2792       --enable-muxer=adts \
2793       --enable-muxer=asf \
2794       --enable-muxer=ipod \
2795       --disable-encoders \
2796       --enable-encoder=ac3 \
2797       --enable-encoder=aac \
2798       --enable-encoder=wmav2 \
2799       `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2800       --disable-decoder=mpeg_xvmc \
2801       --disable-devices \
2802       --disable-ffprobe \
2803       --disable-ffplay \
2804       --disable-ffserver \
2805       --disable-ffmpeg \
2806       --disable-crystalhd \
2807       --enable-shared \
2808       --disable-doc \
2809       --enable-postproc \
2810       --enable-gpl \
2811       `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2812       `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2813       `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2814       --enable-protocol=http \
2815       `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2816       --enable-pthreads \
2817       --enable-runtime-cpudetect \
2818       `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2819       `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2820       `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2821        else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2822       `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2823       --cc="$CC" &&
2824       sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2825       sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2826   fi
2827 ], [$USE_EXTERNAL_FFMPEG])
2828
2829 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2830   ./configure \
2831     CC="$CC" \
2832     CXX="$CXX" \
2833     CFLAGS="$CFLAGS $DROID_DVDLIB_SEEK64" \
2834     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2835     --host=$host_alias \
2836     --build=$build_alias \
2837     --target=$target_alias \      
2838     --disable-doc \
2839     --enable-static \
2840     --with-pic
2841 ], [$SKIP_CONFIG_DVDCSS])
2842
2843 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2844   ./configure2 \
2845     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
2846     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2847     --host=$host_alias \
2848     --build=$build_alias \
2849     --target=$target_alias \      
2850     --enable-static \
2851     --disable-shared \
2852     --disable-strip \
2853     --disable-opts \
2854     --cc="$CC" &&
2855   $MAKE dvdread-config &&
2856   mkdir -p `pwd`/../includes/dvdread
2857   cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2858   cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2859 ], [0])
2860
2861 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2862   ./configure2 \
2863     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
2864     --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2865     --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
2866     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2867     --host=$host_alias \
2868     --build=$build_alias \
2869     --target=$target_alias \      
2870     --enable-static \
2871     --disable-shared \
2872     --cc="$CC"
2873 ], [0])
2874
2875 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2876   set -x
2877   rm -f CMakeCache.txt &&                              \
2878   CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2879     -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF        \
2880     -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}"     \
2881     -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2882     -DCMAKE_INSTALL_PREFIX="${prefix}"                 \
2883     -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}"            \
2884     -DINCLUDE_INSTALL_DIR:PATH="${includedir}"         \
2885     -DLIB_INSTALL_DIR:PATH="${libdir}"                 \
2886     -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}"         \
2887     -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2888   if test "$host_vendor" = "apple" ; then
2889     # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2890     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2891     sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2892     sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2893   fi
2894   set +x
2895 ], [$DISABLE_PROJECTM])
2896
2897 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2898   ./configure  \
2899     CFLAGS="$CFLAGS" \ 
2900     CXXFLAGS="$CXXFLAGS" \
2901     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2902     --host=$host_alias \
2903     --build=$build_alias \
2904     --target=$target_alias \      
2905     --disable-shared \
2906     --enable-static \
2907     --with-pic
2908 ], [$DISABLE_GOOM])
2909
2910 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2911   if test "$host_vendor" = "apple"; then
2912     # clang treats inlines different
2913     case $CC in
2914       *clang*)
2915         TEMPCFLAGS="$CFLAGS";;
2916       *)
2917         TEMPCFLAGS="${CFLAGS} -fgnu89-inline";;
2918     esac
2919   else
2920     TEMPCFLAGS="$CFLAGS";
2921   fi
2922   ./configure \
2923     CC="$CC" \
2924     CXX="$CXX" \
2925     CFLAGS="$TEMPCFLAGS" \ 
2926     CXXFLAGS="$CXXFLAGS" \
2927     `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2928     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2929     --host=$host_alias \
2930     --build=$build_alias \
2931     --target=$target_alias \      
2932     --without-xscreensaver \
2933     --disable-sound \
2934     --disable-cyclone \
2935     --disable-fieldlines \
2936     --disable-flocks \
2937     --disable-flux \
2938     --disable-helios \
2939     --disable-hyperspace \
2940     --disable-lattice \
2941     --disable-skyrocket
2942   if echo "$ARCH" | grep -q freebsd ; then
2943     sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2944   fi
2945 ], [$DISABLE_RSXS])
2946
2947 XB_CONFIG_MODULE([lib/cpluff], [
2948   ./configure --disable-nls \
2949     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2950     --host=$host_alias \
2951     --build=$build_alias \
2952     --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2953     #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"    
2954 ], [0])
2955
2956 XB_CONFIG_MODULE([lib/gtest], [
2957   ./configure \
2958     CC="$CC" \
2959     CXX="$CXX" \
2960     CFLAGS="$CFLAGS" \
2961     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2962     --host=$host_alias \
2963     --build=$build_alias \
2964     --target=$target_alias \
2965     --disable-shared \
2966     --enable-static \
2967     --with-pthreads
2968 ], [$SKIP_CONFIG_GTEST])
2969
2970 XB_CONFIG_MODULE([pvr-addons], [
2971   ./configure \
2972     --prefix="${prefix}" \
2973     --host=$host_alias \
2974     --build=$build_alias \
2975     --target=$target_alias \
2976     CC="$CC" \
2977     CXX="$CXX" \
2978     CFLAGS="$CFLAGS" \
2979     CXXFLAGS="$CXXFLAGS"
2980 ], [$DISABLE_PVR_ADDON_CONFIG])
2981
2982 AC_OUTPUT
2983
2984 final_message="$final_message\n  prefix:\t$prefix\n$dashes"
2985 echo -e "$final_message\n"