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