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