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