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