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