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