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