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