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