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