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