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