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