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