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