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