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