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