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