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