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