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