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