2 # Process this file with autoconf to produce a configure script.
5 AC_INIT([xbmc], [12.9.12], [http://issues.xbmc.org])
6 AC_CONFIG_HEADERS([xbmc/config.h])
8 m4_include([m4/ax_prog_cc_for_build.m4])
9 m4_include([m4/ax_prog_cxx_for_build.m4])
10 m4_include([m4/ax_python_devel.m4])
11 m4_include([m4/xbmc_arch.m4])
13 AC_CONFIG_AUX_DIR([build-aux])
14 AM_INIT_AUTOMAKE([foreign])
18 echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
21 # check for enabling additional players
22 AC_DEFUN([XB_ADD_PLAYER],
24 AC_MSG_CHECKING([for $2])
28 AC_DEFINE([HAS_$1], 1, [using $2])
29 AC_MSG_RESULT([enabling $2])
32 AC_MSG_RESULT([$2 is not enabled])
36 # check for enabling additional codecs
37 AC_DEFUN([XB_ADD_CODEC],
39 AC_MSG_CHECKING([for $2])
44 AC_DEFINE([HAS_$1], 1, [using $2])
45 AC_MSG_RESULT([enabling $2])
48 AC_MSG_RESULT([$2 is not enabled])
52 # check for library basenames
53 AC_DEFUN([XB_FIND_SONAME],
55 if echo "$host" | grep -q freebsd ; then
56 AC_MSG_CHECKING([for lib$2 soname])
57 $1_SONAME=[`ldconfig -r | sed -n "s;.* \(/.*lib$2\.so.*\)$;\1;p" | head -n 1`]
58 if test x$$1_SONAME != x ; then
59 $1_SONAME=[`basename $$1_SONAME`]
61 elif [[ "$host_vendor" != "apple" ]]; then
62 AC_MSG_CHECKING([for lib$2 soname])
63 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
64 if [[ -z $$1_FILENAME ]]; then
65 #try gold linker syntax
66 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "lib$2")
68 if [[ ! -z $$1_FILENAME ]]; then
69 $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
72 AC_MSG_CHECKING([for lib$2 dylib])
73 gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
74 env_lib_path=[`echo $LDFLAGS | sed 's/-L[ ]*//g'`]
75 if test "$cross_compiling" = yes; then
78 host_lib_path="/usr/lib /usr/local/lib"
80 for path in $gcc_lib_path $env_lib_path $host_lib_path; do
81 lib=[`ls -- $path/lib$2.dylib 2>/dev/null`]
82 if test x$lib != x; then
83 # we want the path/name that is embedded in the dylib
84 $1_SONAME=[`otool -L $lib | grep -v lib$2.dylib | grep lib$2 | awk '{V=1; print $V}'`]
85 $1_SONAME=[`basename $$1_SONAME`]
89 if [[ -z "$$1_SONAME" ]]; then
91 if test -z "$3" || test "x${$3}" = "xyes"; then
92 AC_MSG_ERROR([Unable to determine soname of lib$2 library])
94 AC_MSG_WARN([Unable to determine soname of lib$2 library])
96 AC_MSG_WARN([lib$2 support disabled])
99 AC_MSG_RESULT([$$1_SONAME])
104 # Function to push and pop libs and includes for a command
105 AC_DEFUN([XB_PUSH_FLAGS], [
107 SAVE_INCLUDES="$INCLUDES"
112 INCLUDES="$SAVE_INCLUDES"
115 # General message strings
116 configure_debug="ERROR: this is a configure debug statement"
117 missing_library="Could not find a required library. Please see the README for your platform."
118 missing_headers="Could not find some required headers. Please see the README for your platform."
119 missing_program="Could not find a required program. Please see the README for your platform."
120 xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
121 xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
122 waveform_enabled="== WAVEFORM enabled =="
123 waveform_disabled="== WAVEFORM disabled =="
124 spectrum_enabled="== SPECTRUM enabled =="
125 spectrum_disabled="== SPECTRUM disabled =="
126 goom_enabled="== GOOM enabled. =="
127 goom_disabled="== GOOM disabled. =="
128 alsa_disabled="== ALSA support disabled. =="
129 rsxs_enabled="== RSXS enabled. =="
130 rsxs_disabled="== RSXS disabled. =="
131 fishbmc_enabled="== FishBMC enabled. =="
132 fishbmc_disabled="== FishBMC disabled. =="
133 projectm_enabled="== ProjectM enabled. =="
134 projectm_disabled="== ProjectM disabled. =="
135 wayland_enabled="== Wayland enabled. =="
136 wayland_disabled="== Wayland disabled. =="
137 x11_enabled="== X11 enabled. =="
138 x11_disabled="== X11 disabled. =="
139 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
140 pulse_disabled="== PulseAudio support manually disabled. =="
141 dvdcss_enabled="== DVDCSS support enabled. =="
142 dvdcss_disabled="== DVDCSS support disabled. =="
143 hal_not_found="== Could not find hal. HAL support disabled. =="
144 halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
145 hal_disabled="== HAL support disabled. =="
146 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
147 avahi_disabled="== Avahi support disabled. =="
148 mdnsembedded_not_found="== Could not find mDNSEmbedded. Might prevent zeroconf support. =="
149 mdnsembedded_disabled="== mDNSEmbedded support disabled. =="
150 vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
151 vdpau_disabled="== VDPAU support manually disabled. =="
152 vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
153 vaapi_disabled="== VAAPI support manually disabled. =="
154 crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
155 crystalhd_disabled="== CrystalHD support manually disabled. =="
156 vtbdecoder_enabled="== VTBDecoder support enabled. =="
157 vtbdecoder_disabled="== VTBDecoder support manually disabled. =="
158 openmax_disabled="== OpenMax support manually disabled. =="
159 openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
160 ssh_not_found="== Could not find libssh. =="
161 ssh_disabled="== SSH SFTP disabled. =="
162 librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
163 librtmp_disabled="== RTMP support disabled. =="
164 libnfs_not_found="== Could not find libnfs. NFS client support disabled. =="
165 libnfs_disabled="== NFS support disabled. =="
166 libafpclient_not_found="== Could not find libafpclient. AFP client support disabled. =="
167 libafpclient_disabled="== AFP support disabled. =="
168 libshairport_not_found="== Could not find libshairport. =="
169 libshairplay_not_found="== Could not find libshairplay. =="
170 samba_disabled="== SAMBA support disabled. =="
171 libplist_not_found="== Could not find libplist. AirPlay support disabled. =="
172 libplist_disabled="== AirPlay support disabled. =="
173 alsa_not_found="== Could not find ALSA. ALSA support disabled. =="
174 dbus_not_found="== Could not find DBUS. DBUS support disabled. =="
175 libcap_disabled="== Capabilities detection support disabled. =="
176 libcap_not_found="== Could not find libcap. Capabilities detection support disabled. =="
177 gtest_enabled="== Google Test Framework will be configured. =="
178 gtest_disabled="== Google Test Framework will not be configured. =="
180 libudev_not_found="== Could not find libudev. Will use polling to check for device changes. =="
181 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
182 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
183 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
184 libusb_disabled_udev_found="== libusb disabled. =="
185 libcec_enabled="== libcec enabled. =="
186 libcec_disabled="== libcec disabled. CEC adapter support will not be available. =="
188 # External library message strings
189 external_libraries_enabled="== Use of all supported external libraries enabled. =="
190 external_libraries_disabled="== Use of all supported external libraries disabled. =="
191 external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
192 external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
193 ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
194 dashes="------------------------"
195 final_message="\n XBMC Configuration:"
196 final_message="\n$dashes$final_message\n$dashes"
198 AC_ARG_ENABLE([shared-lib],
199 [AS_HELP_STRING([--enable-shared-lib],
200 [build libxbmc. helpful for tests (default is no)])],
201 [build_shared_lib=$enableval],
202 [build_shared_lib=no])
204 AC_ARG_ENABLE([debug],
205 [AS_HELP_STRING([--enable-debug],
206 [enable debugging information (default is yes)])],
207 [use_debug=$enableval],
211 [AS_HELP_STRING([--with-arch],
212 [build with given arch passing to internal ffmpeg (default is no, needed for crosscompiling)])],
216 AC_ARG_WITH([platform],
217 [AS_HELP_STRING([--with-platform],
218 [use a pre-configured config for common arm boards])],
219 [use_platform=$withval],
223 [AS_HELP_STRING([--with-cpu],
224 [build with given cpu passing to ffmpeg (default is no)])],
228 AC_ARG_ENABLE([neon],
229 [AS_HELP_STRING([--enable-neon],
230 [enable neon passing to ffmpeg (default is no)])],
231 [use_neon=$enableval],
234 AC_ARG_ENABLE([optimizations],
235 [AS_HELP_STRING([--enable-optimizations],
236 [enable optimization (default is yes)])],
237 [use_optimizations=$enableval],
238 [use_optimizations=yes])
241 [AS_HELP_STRING([--enable-gl],
242 [enable OpenGL rendering (default is yes)])],
246 AC_ARG_ENABLE([gles],
247 [AS_HELP_STRING([--enable-gles],
248 [enable OpenGLES rendering (default is no)])],
249 [use_gles=$enableval],
253 [AS_HELP_STRING([--enable-sdl],
254 [enable SDL (default is auto)])],
255 [use_sdl=$enableval],
258 AC_ARG_ENABLE([vdpau],
259 [AS_HELP_STRING([--enable-vdpau],
260 [enable VDPAU decoding (default is auto)])],
261 [use_vdpau=$enableval],
264 AC_ARG_ENABLE([vaapi],
265 [AS_HELP_STRING([--enable-vaapi],
266 [enable VAAPI decoding (default is auto)])],
267 [use_vaapi=$enableval],
270 AC_ARG_ENABLE([crystalhd],
271 [AS_HELP_STRING([--enable-crystalhd],
272 [enable CrystalHD decoding (default is auto)])],
273 [use_crystalhd=$enableval],
274 [use_crystalhd=auto])
276 AC_ARG_ENABLE([vtbdecoder],
277 [AS_HELP_STRING([--enable-vtbdecoder],
278 [enable VTBDecoder decoding (default is auto)])],
279 [use_vtbdecoder=$enableval],
280 [use_vtbdecoder=auto])
282 AC_ARG_ENABLE([openmax],
283 [AS_HELP_STRING([--enable-openmax],
284 [enable OpenMax decoding (default is auto, requires OpenGLES)])],
285 [use_openmax=$enableval],
288 AC_ARG_ENABLE([tegra],
289 [AS_HELP_STRING([--enable-tegra],
290 [enable Tegra2 arm (default is no)])],
291 [use_tegra=$enableval],
294 AC_ARG_ENABLE([profiling],
295 [AS_HELP_STRING([--enable-profiling],
296 [enable gprof profiling (default is no)])],
297 [use_profiling=$enableval],
300 AC_ARG_ENABLE([joystick],
301 [AS_HELP_STRING([--enable-joystick],
302 [enable SDL joystick support (default is yes)])],
303 [use_joystick=$enableval],
306 AC_ARG_ENABLE([xrandr],
307 [AS_HELP_STRING([--enable-xrandr],
308 [enable XRandR support (default is yes)])],
309 [use_xrandr=$enableval],
312 AC_ARG_ENABLE([waveform],
313 [AS_HELP_STRING([--enable-waveform],
314 [enable Waveform visualisation (default is yes)])],
315 [use_waveform=$enableval],
318 AC_ARG_ENABLE([spectrum],
319 [AS_HELP_STRING([--enable-spectrum],
320 [enable Spectrum visualisation (default is yes)])],
321 [use_spectrum=$enableval],
324 AC_ARG_ENABLE([goom],
325 [AS_HELP_STRING([--enable-goom],
326 [enable GOOM visualisation (default is no)])],
327 [use_goom=$enableval],
330 AC_ARG_ENABLE([rsxs],
331 [AS_HELP_STRING([--enable-rsxs],
332 [enable really slick X screensavers (default is yes)])],
333 [use_rsxs=$enableval],
336 AC_ARG_ENABLE([fishbmc],
337 [AS_HELP_STRING([--enable-fishbmc],
338 [enable FishBMC visualisation (default is yes)])],
339 [use_fishbmc=$enableval],
342 AC_ARG_ENABLE([projectm],
343 [AS_HELP_STRING([--enable-projectm],
344 [enable ProjectM visualisation (default is yes)])],
345 [use_projectm=$enableval],
348 AC_ARG_ENABLE([wayland],
349 [AS_HELP_STRING([--enable-wayland],
350 [enable wayland (default is no) 'Linux Only'])],
351 [use_wayland=$enableval],
355 [AS_HELP_STRING([--enable-x11],
356 [enable x11 (default is yes) 'Linux Only'])],
357 [use_x11=$enableval],
360 AC_ARG_ENABLE([ccache],
361 [AS_HELP_STRING([--enable-ccache],
362 [enable building with ccache feature (default is auto)])],
363 [use_ccache=$enableval],
366 AC_ARG_ENABLE([alsa],
367 [AS_HELP_STRING([--disable-alsa],
368 [disable ALSA support (only for linux/freebsd)])],
369 [use_alsa=$enableval],
372 AC_ARG_ENABLE([pulse],
373 [AS_HELP_STRING([--enable-pulse],
374 [enable PulseAudio support (default is no)])],
375 [use_pulse=$enableval],
379 [AS_HELP_STRING([--disable-ssh],
380 [disable SSH SFTP support (default is enabled)])],
381 [use_ssh=$enableval],
384 AC_ARG_ENABLE([rtmp],
385 [AS_HELP_STRING([--enable-rtmp],
386 [enable RTMP support via librtmp (default is auto)])],
387 [use_librtmp=$enableval],
390 AC_ARG_ENABLE([samba],
391 [AS_HELP_STRING([--disable-samba],
392 [disable SAMBA support (default is enabled)])],
393 [use_samba=$enableval],
397 [AS_HELP_STRING([--enable-nfs],
398 [enable NFS support via libnfs (default is auto)])],
399 [use_libnfs=$enableval],
402 AC_ARG_ENABLE([afpclient],
403 [AS_HELP_STRING([--enable-afpclient],
404 [enable AFP support via libafpclient (default is auto)])],
405 [use_libafpclient=$enableval],
406 [use_libafpclient=auto])
408 AC_ARG_ENABLE([airplay],
409 [AS_HELP_STRING([--enable-airplay],
410 [enable AirPlay support(default is auto)])],
411 [use_airplay=$enableval],
414 AC_ARG_ENABLE([airtunes],
415 [AS_HELP_STRING([--enable-airtunes],
416 [enable AirTunes support(default is auto)])],
417 [use_airtunes=$enableval],
420 AC_ARG_ENABLE([upnp],
421 [AS_HELP_STRING([--disable-upnp],
422 [disable UPnP support (default is enabled)])],
423 [use_upnp=$enableval],
426 AC_ARG_ENABLE([ffmpeg_libvorbis],
427 [AS_HELP_STRING([--enable-ffmpeg-libvorbis],
428 [enable FFmpeg vorbis encoding (default is no)])],
429 [use_ffmpeg_libvorbis=$enableval],
430 [use_ffmpeg_libvorbis=no])
432 AC_ARG_ENABLE([dvdcss],
433 [AS_HELP_STRING([--enable-dvdcss],
434 [enable DVDCSS support (default is yes)])],
435 [use_dvdcss=$enableval],
439 [AS_HELP_STRING([--enable-mid],
440 [enable MID support (default is no)])],
441 [use_mid=$enableval],
445 [AS_HELP_STRING([--disable-hal],
446 [disable HAL support (default is enabled if hal and hal-storage is found)])],
447 [use_hal=$enableval],
450 AC_ARG_ENABLE([avahi],
451 [AS_HELP_STRING([--disable-avahi],
452 [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
453 [use_avahi=$enableval],
456 AC_ARG_ENABLE([mdnsembedded],
457 [AS_HELP_STRING([--disable-mdnsembedded],
458 [disable mDNSEmbedded support (default is auto)])],
459 [use_mdnsembedded=$enableval],
460 [use_mdnsembedded=auto])
462 AC_ARG_ENABLE([non-free],
463 [AS_HELP_STRING([--disable-non-free],
464 [disable componentents with non-compliant licenses])],
465 [use_nonfree=$enableval],
468 AC_ARG_ENABLE([asap-codec],
469 [AS_HELP_STRING([--enable-asap-codec],
470 [enable ASAP ADPCM support])],
471 [use_asap=$enableval],
474 AC_ARG_ENABLE([mysql],
475 [AS_HELP_STRING([--disable-mysql],
477 [use_mysql=$enableval],
480 AC_ARG_ENABLE([webserver],
481 [AS_HELP_STRING([--disable-webserver],
482 [disable webserver])],
483 [use_webserver=$enableval],
486 AC_ARG_ENABLE([optical-drive],
487 [AS_HELP_STRING([--disable-optical-drive],
488 [disable optical drive])],
489 [use_optical_drive=$enableval],
490 [use_optical_drive=yes])
492 AC_ARG_ENABLE([libbluray],
493 [AS_HELP_STRING([--enable-libbluray],
494 [enable libbluray support])],
495 [use_libbluray=$enableval],
496 [use_libbluray=auto])
498 AC_ARG_ENABLE([texturepacker],
499 [AS_HELP_STRING([--enable-texturepacker],
500 [enable texturepacker support (default is yes)])],
501 [use_texturepacker=$enableval],
502 [use_texturepacker=auto])
504 AC_ARG_WITH([lirc-device],
505 [AS_HELP_STRING([--with-lirc-device=file],
506 [specify the default LIRC device (default is /dev/lircd)])],
507 [lirc_device=$withval],
508 [lirc_device=/dev/lircd])
509 AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device])
511 AC_ARG_ENABLE([udev],
512 [AS_HELP_STRING([--enable-udev],
513 [enable udev support (default is auto)])],
514 [use_libudev=$enableval],
517 AC_ARG_ENABLE([libusb],
518 [AS_HELP_STRING([--enable-libusb],
519 [enable libusb support (default is auto)])],
520 [use_libusb=$enableval],
523 AC_ARG_ENABLE([libcec],
524 [AS_HELP_STRING([--enable-libcec],
525 [enable libcec support (default is auto)])],
526 [use_libcec=$enableval],
529 AC_ARG_ENABLE([libmp3lame],
530 [AS_HELP_STRING([--enable-libmp3lame],
531 [enable lame mp3 encoder support (default is auto)])],
532 [use_libmp3lame=$enableval],
533 [use_libmp3lame=auto])
535 AC_ARG_ENABLE([libvorbisenc],
536 [AS_HELP_STRING([--enable-libvorbisenc],
537 [enable vorbis encoder support (default is auto)])],
538 [use_libvorbisenc=$enableval],
539 [use_libvorbisenc=auto])
541 AC_ARG_ENABLE([libcap],
542 [AS_HELP_STRING([--enable-libcap],
543 [enable libcap support (default is auto)])],
544 [use_libcap=$enableval],
547 AC_ARG_ENABLE([player],
548 [AS_HELP_STRING([--enable-player],
549 [enable additional players from a list of comma separated names, (default is none, choices are omxplayer)])],
550 [add_players=$enableval],
553 AC_ARG_ENABLE([gtest],
554 [AS_HELP_STRING([--enable-gtest],
555 [configure Google Test Framework (default is no)])],
556 [configure_gtest=$enableval],
557 [configure_gtest=no])
559 AC_ARG_ENABLE([codec],
560 [AS_HELP_STRING([--enable-codec],
561 [enable additional codecs from a list of comma separated names, (default is none, choices are amcodec, libstagefright)])],
562 [add_codecs=$enableval],
565 ### External libraries options
566 AC_ARG_ENABLE([external-libraries],
567 [AS_HELP_STRING([--enable-external-libraries],
568 [enable use of all supported external libraries (default is no) 'Linux only'])],
569 [use_external_libraries=$enableval],
570 [use_external_libraries=no])
572 AC_ARG_ENABLE([external-ffmpeg],
573 [AS_HELP_STRING([--enable-external-ffmpeg],
574 [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
575 [use_external_ffmpeg=$enableval],
576 [use_external_ffmpeg=$use_external_libraries])
578 AC_ARG_ENABLE([libav-compat],
579 [AS_HELP_STRING([--enable-libav-compat],
580 [build a wrapper around libav to provide the functions needed by XBMC. This is
581 *not* supported by XBMC developers and is provided only for convenience. (default is no) 'Linux only'])],
582 [use_libav_hacks=$enableval],
583 [use_libav_hacks=no])
585 ### End of external library options
587 if test "x$host_vendor" != "xapple"; then
588 DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
589 DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
592 # Checks for programs.
593 PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
596 CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
597 PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
599 AX_PROG_CXX_FOR_BUILD
600 CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
607 OBJDUMP="${OBJDUMP:-objdump}"
609 # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
610 # there is no autoconf variable which will give
611 # the correct output format when doing cross compilation
612 # so we have to use our own var here
613 # defaults to the build side target_os
614 # and should be overridden for cross below (see android)
615 ffmpeg_target_os=$(tolower $(uname -s))
617 # host detection and setup
619 i*86*-linux-android*)
620 target_platform=target_android
624 ffmpeg_target_os=linux
632 i*86*-linux-gnu*|i*86*-*-linux-uclibc*)
634 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
639 x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*)
641 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
651 ARCH="x86_64-freebsd"
667 PYTHON_LDFLAGS="-L${prefix}/lib -lpython2.6"
668 PYTHON_CPPFLAGS="-I${prefix}/include/python2.6"
669 PYTHON_SITE_PKG="${prefix}/lib/python2.6/site-packages"
670 PYTHON_NOVERSIONCHECK="no-check"
677 powerpc-apple-darwin*)
684 powerpc-*-linux-gnu*|powerpc-*-linux-uclibc*)
687 powerpc64-*-linux-gnu*|powerpc64-*-linux-uclibc*)
688 ARCH="powerpc64-linux"
693 ffmpeg_target_os=linux
701 arm*-*linux-android*)
702 target_platform=target_android
706 ffmpeg_target_os=linux
717 AC_MSG_ERROR(unsupported host ($host))
721 check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
722 if test "x$check_sdl_arch" = "xi386" ; then
723 DARWIN_NATIVE_ARCH=-m32
724 elif test "x$check_sdl_arch" = "xx86_64" ; then
725 DARWIN_NATIVE_ARCH=-m64
727 AC_SUBST([DARWIN_NATIVE_ARCH])
729 if test "$target_platform" = "target_android" ; then
731 webserver_checkdepends=yes
732 CFLAGS="$CFLAGS -Wno-psabi"
733 DROID_DVDLIB_SEEK64="-D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED_ -Doff_t=off64_t -Dlseek=lseek64"
734 CXXFLAGS="$CXXFLAGS -Wno-psabi"
735 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
738 case $use_platform in
740 target_platform=target_raspberry_pi
744 use_hardcoded_tables="yes"
747 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
748 USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
751 ffmpeg_target_os=linux
755 XBMC_SETUP_ARCH_DEFINES()
758 AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
759 if test "$GIT_REV" = ""; then
760 if test -f VERSION ; then
761 GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
762 elif test "$HAVE_GIT" = "yes"; then
763 GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
768 final_message="$final_message\n git Rev.:\t${GIT_REV}"
770 if test "$host_vendor" = "apple"; then
771 echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
773 SDL_DEFINES="$SDL_DEFINES -D'GIT_REV=\"$GIT_REV\"'"
776 if test "$build_shared_lib" = "yes"; then
777 final_message="$final_message\n Shared lib\tYes"
778 AC_SUBST(USE_LIBXBMC,1)
782 # platform debug flags
783 if test "$use_debug" = "yes"; then
784 final_message="$final_message\n Debugging:\tYes"
785 if test "$use_profiling" = "yes"; then
786 final_message="$final_message\n Profiling:\tYes"
787 DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
789 final_message="$final_message\n Profiling:\tNo"
790 DEBUG_FLAGS="-g -D_DEBUG -Wall"
793 final_message="$final_message\n Debugging:\tNo"
794 if test "$use_profiling" = "yes"; then
795 final_message="$final_message\n Profiling:\tYes"
796 DEBUG_FLAGS="-pg -DNDEBUG=1"
798 final_message="$final_message\n Profiling:\tNo"
799 DEBUG_FLAGS="-DNDEBUG=1"
802 CFLAGS="$CFLAGS $DEBUG_FLAGS"
803 CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"
806 if test "$use_optimizations" = "yes"; then
807 final_message="$final_message\n Optimization:\tYes"
808 if test "$target_platform" = "target_raspberry_pi"; then
812 CXXFLAGS="-O2 $CXXFLAGS"
816 final_message="$final_message\n Optimization:\tNo"
820 # platform specific flags
821 if echo "$ARCH" | grep -q "freebsd" ; then
822 LOCALBASE="${LOCALBASE:-/usr/local}"
823 CFLAGS="$CFLAGS -I$LOCALBASE/include"
824 CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
825 CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
826 LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
827 FFMPEG_EXTRACFLAGS="-I$LOCALBASE/include"
829 if test "$host_vendor" = "apple" ; then
830 # standard xbmc paths
831 INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
832 if test "$use_arch" != "arm"; then
833 LIBS="$LIBS -framework ApplicationServices"
834 LIBS="$LIBS -framework AudioUnit"
835 LIBS="$LIBS -framework AudioToolbox"
836 LIBS="$LIBS -framework Cocoa"
837 LIBS="$LIBS -framework CoreAudio"
838 LIBS="$LIBS -framework CoreVideo"
839 LIBS="$LIBS -framework CoreServices"
840 LIBS="$LIBS -framework CoreFoundation"
841 LIBS="$LIBS -framework DiskArbitration"
842 LIBS="$LIBS -framework IOKit"
843 LIBS="$LIBS -framework IOSurface"
844 LIBS="$LIBS -framework QuartzCore"
845 LIBS="$LIBS -framework SystemConfiguration"
846 LIBS="$LIBS -framework VideoDecodeAcceleration"
848 USE_EXTERNAL_FFMPEG=1
849 elif test "$target_platform" = "target_raspberry_pi"; then
852 elif test "$use_arch" = "arm"; then
853 CFLAGS="$CFLAGS -mno-apcs-stack-check"
854 CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
855 FFMPEG_EXTRACFLAGS=""
856 if test "$use_tegra" = "yes"; then
857 # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support
858 SAVE_CFLAGS="$CFLAGS"
859 CFLAGS="-mfpu=vfpv3-d16"
861 [AC_LANG_SOURCE([int foo;])],
862 [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
863 CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
864 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mtune=cortex-a9 -mfpu=vfpv3-d16"
866 [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
867 CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
870 if test "$use_neon" = "yes"; then
871 CFLAGS="$CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
872 CXXFLAGS="$CXXFLAGS -mfpu=neon -mvectorize-with-neon-quad"
873 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mfpu=neon"
878 # Checks for library functions.
881 AC_FUNC_CLOSEDIR_VOID
882 AC_FUNC_ERROR_AT_LINE
884 AC_PROG_GCC_TRADITIONAL
886 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
890 # Boxee is apparently having compile problems
891 # if HAVE_REALLOC is defined. Sort this later.
893 AC_FUNC_SELECT_ARGTYPES
894 AC_FUNC_SETVBUF_REVERSED
902 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])
904 # Check for various sizes
905 AC_CHECK_SIZEOF([int])
906 AC_CHECK_SIZEOF([size_t])
908 # Check for intrinsics
909 AC_MSG_CHECKING([for __sync_add_and_fetch(temp, 1)])
910 AC_TRY_LINK([],[long* temp=0; long ret=__sync_add_and_fetch(temp, 1);],
911 [have_builtin_sync_add_and_fetch=yes],
912 [have_builtin_sync_add_and_fetch=no])
913 AC_MSG_RESULT($have_builtin_sync_add_and_fetch)
914 if test "x$have_builtin_sync_add_and_fetch" = "xyes"; then
915 AC_DEFINE(HAS_BUILTIN_SYNC_ADD_AND_FETCH, 1,
916 [Define to 1 if your compiler supports the __sync_add_and_fetch() intrinsic.])
919 AC_MSG_CHECKING([for __sync_sub_and_fetch(temp, 1)])
920 AC_TRY_LINK([],[long* temp=0; long ret=__sync_sub_and_fetch(temp, 1);],
921 [have_builtin_sync_sub_and_fetch=yes],
922 [have_builtin_sync_sub_and_fetch=no])
923 AC_MSG_RESULT($have_builtin_sync_sub_and_fetch)
924 if test "x$have_builtin_sync_sub_and_fetch" = "xyes"; then
925 AC_DEFINE(HAS_BUILTIN_SYNC_SUB_AND_FETCH, 1,
926 [Define to 1 if your compiler supports the __sync_sub_and_fetch() intrinsic.])
929 AC_MSG_CHECKING([for __sync_val_compare_and_swap(temp, 1, 1)])
930 AC_TRY_LINK([],[long *temp = 0; long ret=__sync_val_compare_and_swap(temp, 1, 1);],
931 [have_builtin_sync_val_compare_and_swap=yes],
932 [have_builtin_sync_val_compare_and_swap=no])
933 AC_MSG_RESULT($have_builtin_sync_val_compare_and_swap)
934 if test "x$have_builtin_sync_val_compare_and_swap" = "xyes"; then
935 AC_DEFINE(HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP, 1,
936 [Define to 1 if your compiler supports the __sync_val_compare_and_swap() intrinsic.])
939 # Check for u16string/u32string declarations
941 AC_CHECK_TYPES([std::u16string, std::u32string], [], [], [[#include <string>]])
942 AC_CHECK_TYPES([char16_t, char32_t])
943 AC_CHECK_SIZEOF([wchar_t])
946 # Add top source directory for all builds so we can use config.h
947 INCLUDES="-I\$(abs_top_srcdir) $INCLUDES"
949 # Check inotify availability
950 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
952 # Checks for boost headers using CXX instead of CC
954 AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
958 if test -z "$PYTHON_NOVERSIONCHECK"; then
959 AX_PYTHON_DEVEL([>= 2.4])
960 PYTHON_VERSION=$ac_python_version
963 if test -z "$PYTHON_VERSION"; then
964 AC_MSG_ERROR([Can't find a Python version.])
966 LIBS="$LIBS $PYTHON_LDFLAGS"
967 AC_MSG_NOTICE([Using Python $PYTHON_VERSION])
971 if test "$use_wayland" = "yes" && test "$host_vendor" != "apple"; then
972 AC_MSG_NOTICE($wayland_enabled)
973 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client],
974 [INCLUDES="$INCLUDES $WAYLAND_CLIENT_CFLAGS";
975 WAYLAND_CLIENT_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-client\`; echo ${LIBRARY:2}`;
976 XB_FIND_SONAME([WAYLAND_CLIENT_LIBRARY], ${WAYLAND_CLIENT_LIBRARY_LINE})],
977 AC_MSG_ERROR($missing_library))
978 PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],
979 [INCLUDES="$INCLUDES $WAYLAND_EGL_CFLAGS";
980 WAYLAND_EGL_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-egl\`; echo ${LIBRARY:2:11}`
981 XB_FIND_SONAME([WAYLAND_EGL_LIBRARY], ${WAYLAND_EGL_LIBRARY_LINE})],
982 AC_MSG_ERROR($missing_library))
983 PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon],
984 [INCLUDES="$INCLUDES $XKBCOMMON_CFLAGS";
985 XKBCOMMON_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l xkbcommon\`; echo ${LIBRARY:2}`;
986 XB_FIND_SONAME([XKBCOMMON_LIBRARY], $XKBCOMMON_LIBRARY_LINE)],
987 AC_MSG_ERROR($missing_library))
988 AC_DEFINE([HAVE_WAYLAND], [1], [Define to 1 if you have Wayland libs installed.])
989 AC_DEFINE([HAVE_XKBCOMMON], [1], [Define to 1 if you have libxkbcommon installed.])
991 # If we are also building with tests then we want to build
992 # wayland tests as well
993 if test "$configure_gtest" = "yes"; then
995 PKG_CHECK_MODULES([PIXMAN],
996 [pixman-1],have_pixman=yes,
997 [AC_MSG_WARN($missing_library); have_pixman=no])
998 PKG_CHECK_MODULES([WESTON],
999 [weston >= 1.1.90],[have_weston_sdk=yes],
1000 [have_weston_sdk=no; AC_MSG_WARN($missing_library)])
1002 AC_CHECK_PROG(WAYLAND_SCANNER, wayland-scanner, "wayland-scanner", "no")
1003 if test "x$WAYLAND_SCANNER" == "xno"; then
1004 AC_MSG_WARN($missing_program)
1006 if test "x$have_weston_sdk" == "xyes" && test "x$have_pixman" = "xyes"; then
1007 AC_SUBST(WAYLAND_TEST_INCLUDES,"$WAYLAND_CLIENT_CFLAGS $XKBCOMMON_CFLAGS $PIXMAN_CFLAGS $WESTON_CFLAGS")
1008 AC_SUBST(WAYLAND_TEST_LIBS,"$WAYLAND_CLIENT_LIBS $XKBCOMMON_LIBS $PIXMAN_LIBS $WESTON_LIBS")
1009 AC_DEFINE([HAVE_WESTON_SDK], [1], [Define to 1 if Weston SDK is installed.])
1010 AC_SUBST(USE_WAYLAND_TEST_EXTENSION, 1)
1012 AC_SUBST(WAYLAND_SCANNER)
1013 AC_DEFINE([HAVE_WAYLAND_XBMC_PROTO],[1],["Define to 1 if the wayland test-protocol will be built"])
1017 # Disable SDL and X11 builds
1022 # Wayland requires the EGL "window system" which in turn only supports
1023 # the OpenGL ES API, so enable gles support
1026 AC_MSG_RESULT($wayland_disabled)
1029 # Checks for platforms libraries.
1030 if test "$use_gles" = "yes"; then
1032 # GLES overwrites GL if both set to yes.
1033 if test "$host_vendor" = "apple" ; then
1034 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1035 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1036 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1038 if test "$target_platform" = "target_raspberry_pi"; then
1039 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1040 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1041 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1042 LIBS="$LIBS -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
1044 AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
1045 AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
1049 if test "$use_gl" = "yes"; then
1050 if test "$host_vendor" = "apple" ; then
1051 # linking to OpenGL.framework instead of libGL, libGLU so AC_CHECK_LIB will fail
1052 LIBS="$LIBS -framework OpenGL"
1053 AC_DEFINE([HAVE_LIBGL],[1],["Define to 1 if you have the `GL' library (-lGL)."])
1054 AC_MSG_RESULT(== WARNING: OpenGL support is assumed.)
1055 AC_DEFINE([HAVE_LIBGLU],[1],["Define to 1 if you have the `GLU' library (-lGLU)."])
1056 AC_MSG_RESULT(== WARNING: OpenGLU support is assumed.)
1057 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1059 AC_CHECK_LIB([GL], [main],, AC_MSG_ERROR($missing_library))
1060 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1061 AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
1064 AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
1065 AC_CHECK_LIB([SDL_gfx],[main])
1069 # platform common libraries
1070 if test "$use_mysql" = "yes"; then
1071 AC_PATH_PROG(MYSQL_CONFIG, mysql_config,"no")
1072 if test "x$MYSQL_CONFIG" != "xno"; then
1073 AC_DEFINE([HAVE_MYSQL],[1],["Define to 1 if you have the `mysql' library (-lmysqlclient)."])
1074 INCLUDES="$INCLUDES `$MYSQL_CONFIG --include`"
1075 MYSQL_LIBS=`$MYSQL_CONFIG --libs`
1076 LIBS="$LIBS $MYSQL_LIBS"
1077 AC_SUBST(MYSQL_LIBS)
1079 AC_MSG_ERROR($missing_program)
1082 AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
1083 AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
1084 AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
1085 AC_INCLUDES_DEFAULT()
1086 [#include <mpeg2dec/mpeg2.h>])
1087 AC_CHECK_HEADER([mad.h],, AC_MSG_ERROR($missing_library))
1088 AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
1089 AC_CHECK_HEADER([samplerate.h],, AC_MSG_ERROR($missing_library))
1090 AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
1091 AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
1092 AC_CHECK_HEADER([libmodplug/modplug.h],, AC_MSG_ERROR($missing_library))
1093 AC_CHECK_HEADER([curl/curl.h],, AC_MSG_ERROR($missing_library))
1094 AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
1096 # we need to check for the header because if it exists we set the openssl
1097 # and gcrypt MT callback hooks. This is mostly so that libcurl operates
1098 # in MT manner correctly.
1099 AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
1100 AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
1101 if test "$gcrypt_headers_available" = "yes"; then
1102 # if we have the headers then we must have the lib
1103 AC_CHECK_LIB([gpg-error],[main],, AC_MSG_ERROR($missing_library))
1104 AC_CHECK_LIB([gcrypt],[gcry_control],, AC_MSG_ERROR($missing_library))
1105 AC_DEFINE([HAVE_GCRYPT],[1],[Define if we have gcrypt])
1107 PKG_CHECK_MODULES([GNUTLS], [gnutls], [have_gnutls=yes];AC_DEFINE([HAVE_GNUTLS], [1], [Define if we have gnutls]), AC_MSG_WARN("gnutls not found, ffmpeg TLS support disabled"))
1109 AC_CHECK_LIB([bz2], [main],, AC_MSG_ERROR($missing_library))
1110 AC_CHECK_LIB([jpeg], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1111 AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
1112 if echo "$ARCH" | grep -q freebsd; then
1113 AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
1114 AC_CHECK_LIB([pthread], [pthread_set_name_np],
1115 AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
1116 AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
1118 if test "$target_platform" != "target_android" ; then
1119 AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
1120 AC_CHECK_LIB([pthread], [pthread_setname_np],
1121 AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
1122 AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
1125 AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
1126 AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library))
1127 AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library))
1128 AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library))
1129 if test "$use_mysql" = "yes"; then
1130 AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
1132 AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
1133 AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library))
1134 AC_CHECK_LIB([tinyxml], [main],, AC_MSG_ERROR($missing_library))
1135 if test "$target_platform" = "target_android" ; then
1136 AC_CHECK_LIB([android], [main],, AC_MSG_ERROR($missing_library))
1137 AC_CHECK_LIB([log], [__android_log_vprint],, AC_MSG_ERROR($missing_library))
1138 AC_CHECK_LIB([jnigraphics], [main],, AC_MSG_ERROR($missing_library))
1140 PKG_CHECK_MODULES([LIBXML], [libxml-2.0],
1141 [INCLUDES="$INCLUDES $LIBXML_CFLAGS"; LIBS="$LIBS $LIBXML_LIBS"],
1142 AC_MSG_ERROR($missing_library))
1143 PKG_CHECK_MODULES([LIBXSLT], [libxslt],
1144 [INCLUDES="$INCLUDES $LIBXSLT_CFLAGS"; LIBS="$LIBS $LIBXSLT_LIBS"],
1145 AC_MSG_ERROR($missing_library))
1146 PKG_CHECK_MODULES([FRIBIDI], [fribidi],
1147 [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
1148 AC_MSG_ERROR($missing_library))
1149 PKG_CHECK_MODULES([SQLITE3], [sqlite3],
1150 [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
1151 AC_MSG_ERROR($missing_library))
1152 PKG_CHECK_MODULES([PNG], [libpng],
1153 [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
1154 AC_MSG_ERROR($missing_library))
1155 PKG_CHECK_MODULES([PCRECPP], [libpcrecpp],
1156 [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
1157 AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
1158 AC_MSG_ERROR($missing_library))
1159 PKG_CHECK_MODULES([PCRE], [libpcre],
1160 [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
1161 AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
1162 AC_MSG_ERROR($missing_library))
1163 PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
1164 [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
1165 AC_MSG_ERROR($missing_library))
1166 PKG_CHECK_MODULES([FREETYPE2], [freetype2],
1167 [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
1168 AC_MSG_ERROR($missing_library))
1169 PKG_CHECK_MODULES([TAGLIB], [taglib >= 1.8],
1170 [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
1171 AC_MSG_ERROR($missing_library))
1173 if test "$use_optical_drive" = "yes"; then
1174 PKG_CHECK_MODULES([CDIO], [libcdio],
1175 [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
1176 AC_MSG_ERROR($missing_library))
1179 if test "$target_platform" = "target_android" ; then
1180 PKG_CHECK_MODULES([ZIP], [libzip],
1181 [INCLUDES="$INCLUDES $ZIP_CFLAGS"; LIBS="$LIBS $ZIP_LIBS"],
1182 AC_MSG_ERROR($missing_library))
1185 # check for libbluray
1186 AS_CASE([x$use_libbluray],
1188 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
1191 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], [use_libbluray="no"])
1194 AS_CASE([x$use_libbluray],
1196 INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
1197 XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
1198 AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
1199 AC_SUBST([HAVE_LIBBLURAY], 1)
1200 AC_CHECK_LIB([bluray], [bd_register_argb_overlay_proc],
1201 AC_CHECK_DECL([BD_EVENT_IDLE],
1202 AC_DEFINE([HAVE_LIBBLURAY_BDJ], 1, [System has libbluray library with bdj support]),,
1203 [[#include <libbluray/bluray.h>]]))
1205 AC_SUBST([HAVE_LIBBLURAY], 0)
1209 #Check to see if libs are needed for functions that are often built-in to libc
1210 AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
1211 AC_SEARCH_LIBS([dlopen],dl)
1212 AC_SEARCH_LIBS([clock_gettime],rt)
1213 AC_SEARCH_LIBS([dn_expand], resolv)
1214 AC_SEARCH_LIBS([_dn_expand], resolv)
1215 AC_SEARCH_LIBS([__dn_expand],resolv)
1217 # platform dependent libraries
1218 if test "$host_vendor" = "apple" ; then
1219 if test "$use_arch" != "arm"; then
1220 AC_CHECK_LIB([SDL], [main],, AC_MSG_ERROR($missing_library))
1221 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1224 if test "$target_platform" != "target_android" ; then
1225 AC_CHECK_LIB([jasper], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1227 if test "x$use_alsa" != "xno"; then
1228 PKG_CHECK_MODULES([ALSA], [alsa],
1229 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"; use_alsa=yes],
1230 AC_MSG_NOTICE($alsa_not_found); use_alsa=no)
1232 PKG_CHECK_MODULES([DBUS], [dbus-1],
1233 [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"; use_dbus=yes]; \
1234 AC_DEFINE([HAVE_DBUS],[1],["Define to 1 if dbus is installed"]),
1235 AC_MSG_NOTICE($missing_library); use_dbus=no)
1236 if test "x$use_sdl" != "xno"; then
1237 PKG_CHECK_MODULES([SDL], [sdl],
1238 [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
1239 AC_MSG_ERROR($missing_library))
1240 AC_CHECK_LIB([SDL_image], [main],, AC_MSG_ERROR($missing_library))
1241 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1245 XB_FIND_SONAME([MAD], [mad])
1246 XB_FIND_SONAME([OGG], [ogg])
1247 XB_FIND_SONAME([CURL], [curl])
1248 XB_FIND_SONAME([FLAC], [FLAC])
1249 XB_FIND_SONAME([VORBIS], [vorbis])
1250 XB_FIND_SONAME([VORBISFILE], [vorbisfile])
1251 XB_FIND_SONAME([MODPLUG], [modplug])
1252 XB_FIND_SONAME([ASS], [ass])
1253 XB_FIND_SONAME([MPEG2], [mpeg2])
1256 if test "x$use_libmp3lame" != "xno"; then
1257 XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1258 if test "x$use_libmp3lame" != "xno"; then
1259 AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1262 AS_CASE([x$use_libmp3lame],
1264 AC_SUBST([HAVE_LIBMP3LAME], 0)
1267 AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1268 AC_SUBST([HAVE_LIBMP3LAME], 1)
1271 if test "x$use_libvorbisenc" != "xno"; then
1272 XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1273 if test "x$use_libvorbisenc" != "xno"; then
1274 AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1277 AS_CASE([x$use_libvorbisenc],
1279 AC_SUBST([HAVE_LIBVORBISENC], 0)
1281 AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1282 AC_SUBST([HAVE_LIBVORBISENC], 1)
1287 if test "$use_webserver" = "yes"; then
1288 AC_CHECK_LIB([microhttpd], [main],, AC_MSG_ERROR($missing_library))
1292 if test "$use_optical_drive" = "yes"; then
1293 AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1297 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1298 PKG_CHECK_MODULES([ALSA], [alsa],
1299 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1300 AC_MSG_ERROR($missing_library))
1301 AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1304 AC_MSG_RESULT($alsa_disabled)
1308 if test "x$use_pulse" != "xno"; then
1309 if test "$host_vendor" = "apple" ; then
1310 if test "x$use_pulse" = "xyes"; then
1311 AC_MSG_ERROR($pulse_disabled)
1314 AC_MSG_RESULT($pulse_disabled)
1318 AC_CHECK_LIB([pulse],[main],,pulse_found="no")
1319 AC_CHECK_LIB([pulse-simple],[main],,pulse_found="no")
1321 if test "x$pulse_found" != "xno"; then
1323 elif test "x$use_pulse" = "xyes"; then
1324 AC_MSG_ERROR($pulse_not_found)
1328 AC_MSG_RESULT($pulse_not_found)
1332 AC_MSG_RESULT($pulse_disabled)
1337 if test "$host_vendor" = "apple" ; then
1339 AC_MSG_RESULT($hal_disabled)
1341 if test "$use_hal" = "yes"; then
1342 PKG_CHECK_MODULES([HAL], [hal],
1343 [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1344 use_hal=no;AC_MSG_RESULT($hal_not_found))
1345 PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1346 [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1347 use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1349 AC_MSG_RESULT($hal_disabled)
1351 if test "$use_hal" = "yes"; then
1352 AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1357 if test "$host_vendor" = "apple" ; then
1359 AC_MSG_RESULT($avahi_disabled)
1361 if test "$use_avahi" = "yes"; then
1362 AC_CHECK_LIB([avahi-common], [main],,
1363 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1364 if test "$use_avahi" = "yes"; then
1365 #either both libs or none
1366 AC_CHECK_LIB([avahi-client], [main],,
1367 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1370 AC_MSG_RESULT($avahi_disabled)
1375 if test "$use_mdnsembedded" != "no"; then
1376 AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1377 [if test "$use_mdnsembedded" = "yes"; then
1378 AC_MSG_ERROR($mdnsembedded_not_found)
1380 elif test "$use_mdnsembedded" != "no"; then
1381 AC_MSG_NOTICE($mdnsembedded_not_found)
1382 use_mdnsembedded="no"
1386 if test $use_mdnsembedded != "no"; then
1390 AC_MSG_RESULT($mdnsembedded_disabled)
1393 AC_SUBST(USE_MDNSEMBEDDED)
1396 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1397 AC_MSG_NOTICE($x11_enabled)
1398 PKG_CHECK_MODULES([X11], [x11],
1399 [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1400 AC_MSG_ERROR($missing_library))
1401 PKG_CHECK_MODULES([XEXT], [xext],
1402 [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1403 AC_MSG_ERROR($missing_library))
1404 AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1406 AC_MSG_RESULT($x11_disabled)
1410 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1412 AC_MSG_RESULT($xrandr_disabled)
1414 if test "$use_xrandr" = "yes" ; then
1415 AC_CHECK_LIB([Xrandr], [main],,
1416 use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1418 AC_MSG_RESULT($xrandr_disabled)
1423 if test "$use_waveform" = "yes"; then
1424 AC_MSG_NOTICE($waveform_enabled)
1427 AC_MSG_NOTICE($waveform_disabled)
1432 if test "$use_spectrum" = "yes"; then
1433 AC_MSG_NOTICE($spectrum_enabled)
1436 AC_MSG_NOTICE($spectrum_disabled)
1441 if test "$host_vendor" = "apple" ; then
1442 AC_MSG_NOTICE($goom_disabled)
1445 if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1446 AC_MSG_NOTICE($goom_enabled)
1449 AC_MSG_NOTICE($goom_disabled)
1455 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1456 AC_MSG_NOTICE($rsxs_disabled)
1459 AC_MSG_NOTICE($rsxs_enabled)
1461 # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1462 if test "$host_vendor" != "apple" ; then
1463 PKG_CHECK_MODULES([XT], [xt],
1464 [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1465 AC_MSG_ERROR($missing_library))
1466 PKG_CHECK_MODULES([XMU], [xmu],
1467 [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1468 AC_MSG_ERROR($missing_library))
1473 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1474 AC_MSG_NOTICE($fishbmc_disabled)
1478 AC_MSG_NOTICE($fishbmc_enabled)
1483 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1484 AC_MSG_NOTICE($projectm_disabled)
1488 AC_MSG_NOTICE($projectm_enabled)
1494 if [[ -f "addons/skin.touched/addon.xml" ]]; then
1495 use_skin_touched=yes
1497 AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1503 if test "x$use_ssh" = "xno"; then
1504 AC_MSG_NOTICE($ssh_disabled)
1507 AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1508 AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1512 if test "$use_librtmp" != "no"; then
1513 AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1514 [if test "$use_librtmp" = "yes"; then
1515 AC_MSG_ERROR($librtmp_not_found)
1516 elif test "$use_librtmp" != "no"; then
1517 AC_MSG_NOTICE($librtmp_not_found)
1521 if test "$use_librtmp" != "no"; then
1522 XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1524 if test "$use_librtmp" != "no"; then
1525 AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1528 AC_MSG_NOTICE($librtmp_disabled)
1532 if test "x$use_samba" != "xno"; then
1533 PKG_CHECK_MODULES([SAMBA], [smbclient],
1534 [INCLUDES="$INCLUDES $SAMBA_CFLAGS"; LIBS="$LIBS $SAMBA_LIBS"],
1535 [AC_CHECK_LIB([smbclient], [main],,
1536 use_samba=no;AC_MSG_ERROR($missing_library))
1540 AC_MSG_RESULT($samba_disabled)
1544 if test "x$use_samba" != "xno"; then
1545 AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1550 if test "$use_libnfs" != "no"; then
1551 AC_CHECK_HEADERS([nfsc/libnfs.h],,
1552 [if test "$use_libnfs" = "yes"; then
1553 AC_MSG_ERROR($libnfs_not_found)
1555 elif test "$use_libnfs" != "no"; then
1556 AC_MSG_NOTICE($libnfs_not_found)
1561 if test "$use_libnfs" != "no"; then
1562 XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1564 if test "$use_libnfs" != "no"; then
1565 AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1570 AC_MSG_NOTICE($libnfs_disabled)
1575 if test "x$use_libafpclient" != "xno"; then
1576 AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1577 [if test "x$use_libafpclient" = "xyes"; then
1578 AC_MSG_ERROR($libafpclient_not_found)
1579 elif test "x$use_libafpclient" != "xno"; then
1580 AC_MSG_NOTICE($libafpclient_not_found)
1581 use_libafpclient="no"
1584 if test "x$use_libafpclient" != "xno"; then
1585 XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1586 AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1590 AC_MSG_NOTICE($libafpclient_disabled)
1593 # libplist for airplay feature
1595 if test "$use_airplay" != "no"; then
1596 AC_CHECK_HEADER([plist/plist.h],,
1597 [if test "$use_airplay" = "yes"; then
1598 AC_MSG_ERROR($libplist_not_found)
1599 elif test "$use_airplay" != "no"; then
1600 AC_MSG_NOTICE($libplist_not_found)
1605 if test "$use_airplay" != "no"; then
1606 XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1608 AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1612 # libshairplay for AirTunes (prefered lib)
1614 if test "x$use_airtunes" != "xno"; then
1615 AC_CHECK_HEADERS([shairplay/raop.h],USE_AIRTUNES=1,
1616 [AC_MSG_NOTICE($libshairplay_not_found)
1619 if test "x$USE_AIRTUNES" != "x0"; then
1620 XB_FIND_SONAME([SHAIRPLAY], [shairplay], [USE_AIRTUNES])
1622 AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1623 [[#include <shairplay/raop.h>]])
1624 AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1627 #libshairport - as a fallback for AirTunes
1628 if test "x$USE_AIRTUNES" == "x0"; then
1629 AC_CHECK_HEADERS([shairport/shairport.h],USE_AIRTUNES=1,
1630 [AC_MSG_NOTICE($libshairport_not_found)
1633 if test "x$USE_AIRTUNES" != "x0"; then
1634 XB_FIND_SONAME([SHAIRPORT], [shairport], [USE_AIRTUNES])
1635 AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1636 [[#include <shairport/shairport.h>]])
1637 AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1641 if test "x$USE_AIRTUNES" == "x0"; then
1642 if test "x$use_airtunes" == "xyes"; then
1643 AC_MSG_ERROR("No airtunes library could be found. (libshairport/libshairplay)")
1651 if test "$host_vendor" = "apple" ; then
1653 AC_MSG_NOTICE($libudev_disabled)
1655 if test "$use_libudev" = "auto"; then
1656 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1657 elif test "$use_libudev" = "yes" ; then
1658 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1660 AC_MSG_NOTICE($libudev_disabled)
1663 if test "x$use_libudev" != "xno"; then
1664 USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1665 AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1672 # if libudev is available, we don't need libusb
1673 if test "x$use_libudev" != "xno"; then
1675 AC_MSG_NOTICE($libusb_disabled_udev_found)
1677 if test "$host_vendor" = "apple" ; then
1679 AC_MSG_NOTICE($libusb_disabled)
1681 if echo "$ARCH" | grep -q freebsd ; then
1682 AC_CHECK_LIB([usb],[main],
1683 [use_libusb="yes";USB_LIBS="-lusb"],
1684 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1685 elif test "$use_libusb" = "auto"; then
1686 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1687 elif test "$use_libusb" = "yes"; then
1688 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1690 AC_MSG_NOTICE($libusb_disabled)
1693 if test "x$use_libusb" != "xno"; then
1694 USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1695 AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1702 if test "x$use_libcec" != "xno"; then
1703 # libcec is dyloaded, so we need to check for its headers and link any depends.
1704 if test "x$use_libcec" != "xno"; then
1705 if test "x$use_libcec" != "xauto"; then
1706 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1708 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1711 if test "x$use_libcec" != "xno"; then
1712 INCLUDES="$INCLUDES $CEC_CFLAGS"
1713 USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1714 XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1715 AC_MSG_NOTICE($libcec_enabled)
1718 AC_MSG_NOTICE($libcec_disabled)
1723 AC_MSG_NOTICE($libcec_disabled)
1727 if test "$use_libcap" != "no"; then
1728 AC_CHECK_HEADERS([sys/capability.h],,
1729 [if test "$use_libcap" = "yes"; then
1730 AC_MSG_ERROR($libcap_not_found)
1731 elif test "$use_libcap" != "no"; then
1732 AC_MSG_NOTICE($libcap_not_found)
1736 if test "$use_libcap" != "no"; then
1737 AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1739 if test "$use_libcap" != "no"; then
1740 AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1743 AC_MSG_NOTICE($libcap_disabled)
1746 ### External libraries checks
1748 # Hacks for supporting libav
1751 if test "$use_libav_hacks" = "yes"; then
1752 export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1754 AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1758 if test "$use_external_ffmpeg" = "yes"; then
1759 FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1761 PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1762 [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1763 AC_MSG_ERROR($missing_library))
1765 # in case the headers are in a custom directory
1766 SAVE_CPPFLAGS="$CPPFLAGS"
1767 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1769 AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1770 [AC_MSG_ERROR($missing_headers)])
1772 AC_MSG_NOTICE($external_ffmpeg_enabled)
1773 USE_EXTERNAL_FFMPEG=1
1774 AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1776 CPPFLAGS="$SAVE_CPPFLAGS"
1778 AC_MSG_NOTICE($external_ffmpeg_disabled)
1779 USE_EXTERNAL_FFMPEG=0
1782 echo "Checking for SWIG installation"
1783 AC_PATH_PROG(SWIG_EXE, swig, "none")
1784 if test "$SWIG_EXE" = "none"; then
1785 AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1786 if test "$SWIG20_EXE" != "none" ; then
1787 SWIG_EXE=$SWIG20_EXE
1790 if test "$SWIG_EXE" = "none"; then
1791 AC_MSG_ERROR($missing_program)
1793 final_message="$final_message\n SWIG Available:\tYes"
1795 echo "Checking for a jre installation"
1796 AC_PATH_PROG(JAVA_EXE, java, "none")
1797 if test "$JAVA_EXE" = "none"; then
1798 AC_MSG_ERROR($missing_program)
1800 final_message="$final_message\n JRE Available:\tYes"
1802 echo "Checking for doxygen installation"
1803 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1804 if test "$DOXYGEN_EXE" = "none"; then
1805 AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1806 final_message="$final_message\n Doxygen Available:\tNo"
1809 final_message="$final_message\n Doxygen Available:\tYes"
1814 if test "x$use_vdpau" != "xno"; then
1815 if test "$host_vendor" = "apple" ; then
1816 if test "x$use_vdpau" = "xyes"; then
1817 AC_MSG_ERROR([VDPAU not supported on this platform])
1820 AC_MSG_NOTICE($vdpau_disabled)
1825 AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1826 [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1827 [if test "x$use_vdpau" = "xyes"; then
1829 AC_MSG_ERROR([$vdpau_not_found])
1833 AC_MSG_RESULT($vdpau_not_found)
1838 AC_MSG_NOTICE($vdpau_disabled)
1842 if test "x$use_vaapi" != "xno"; then
1843 if test "$host_vendor" = "apple" ; then
1844 if test "x$use_vaapi" = "xyes"; then
1845 AC_MSG_ERROR([VAAPI not supported on this platform])
1848 AC_MSG_NOTICE($vaapi_disabled)
1852 initial_val=$use_vaapi
1853 AC_CHECK_LIB([va], main, :, use_vaapi=no)
1854 if test "x$use_vaapi" != "xno"; then
1855 AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1858 if test "x$use_vaapi" = "xno"; then
1859 if test "x$initial_val" = "xyes"; then
1860 AC_MSG_ERROR($vaapi_not_found)
1862 AC_MSG_RESULT($vaapi_not_found)
1866 AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1871 AC_MSG_NOTICE($vaapi_disabled)
1876 if test "x$use_crystalhd" != "xno"; then
1877 SAVE_CFLAGS="$CFLAGS"
1878 CFLAGS="-D__LINUX_USER__"
1879 AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1880 [ if test "x$use_crystalhd" = "xyes"; then
1881 AC_MSG_ERROR($crystalhd_not_found)
1884 AC_MSG_RESULT($crystalhd_not_found)
1888 CFLAGS="$SAVE_CFLAGS"
1889 if test "$host_vendor" != "apple"; then
1890 XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1892 if test "x$use_crystalhd" != "xno"; then
1893 SAVE_CFLAGS="$CFLAGS"
1894 CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1895 # check for new crystalhd lib
1897 [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1898 #include <libcrystalhd/bc_dts_defs.h>
1899 PBC_INFO_CRYSTAL bCrystalInfo;])],
1900 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ],
1901 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1902 CFLAGS="$SAVE_CFLAGS"
1906 AC_MSG_NOTICE($crystalhd_disabled)
1911 if test "x$use_vtbdecoder" != "xno"; then
1912 if test "$host_vendor" = "apple" ; then
1913 HAVE_VIDEOTOOLBOXDECODER=1
1914 AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1915 AC_MSG_NOTICE($vtbdecoder_enabled)
1917 if test "x$use_vtbdecoder" = "xyes"; then
1918 AC_MSG_ERROR([VTB Decoder not supported on this platform])
1921 AC_MSG_NOTICE($vtbdecoder_disabled)
1925 AC_MSG_NOTICE($vtbdecoder_disabled)
1929 if test "$host_vendor" = "apple" ; then
1932 AC_MSG_NOTICE($openmax_disabled)
1933 elif test "$target_platform" = "target_raspberry_pi"; then
1936 AC_MSG_NOTICE($openmax_disabled)
1938 if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1939 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1940 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1941 use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1942 elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1943 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1944 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1945 AC_MSG_ERROR($openmax_not_found))
1947 AC_MSG_NOTICE($openmax_disabled)
1953 # yajl version check (yajl_version.h was added in yajl 2.0)
1954 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1955 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1958 # additional internal players
1959 case $add_players in
1961 XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1965 # additional internal codecs
1966 # remember to convert commas to spaces
1967 for codecs in `echo $add_codecs | sed 's/,/ /g'`; do
1970 AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1971 XB_ADD_CODEC([LIBAMCODEC], [amcodec], [$codecs])
1974 XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright], [$codecs])
1980 # platform specific bin utilities
1981 if test "$build_vendor" != "apple" ; then
1982 AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1983 if test "$HAVE_GAWK" = "no" ; then
1984 AC_MSG_ERROR($missing_program)
1988 if test "$use_arch" != "arm" ; then
1989 AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1990 if test "$HAVE_CMAKE" = "no" ; then
1991 AC_MSG_ERROR($missing_program)
1995 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
1996 if test "$HAVE_GPERF" = "no" ; then
1997 AC_MSG_ERROR($missing_program)
2000 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
2001 if test "$HAVE_UNZIP" = "no" ; then
2002 AC_MSG_ERROR($missing_program)
2005 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
2006 if test "$HAVE_ZIP" = "no" ; then
2007 AC_MSG_ERROR($missing_program)
2010 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
2011 AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
2012 if test "$HAVE_NASM" = "no" ; then
2013 AC_MSG_ERROR($missing_program)
2017 # Checks for header files.
2021 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
2022 malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
2023 strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
2024 sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
2025 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
2027 # Checks for typedefs, structures, and compiler characteristics.
2043 AC_CHECK_MEMBERS([struct stat.st_rdev])
2052 if test "$cross_compiling" = "yes"; then
2053 final_message="$final_message\n Crosscomp.:\tYes"
2054 if [[ -d "$NATIVE_ROOT" ]]; then
2055 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2056 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2057 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
2058 if test "$host_vendor" != "apple" ; then
2059 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
2061 final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
2064 final_message="$final_message\n Crosscomp.:\tNo"
2067 final_message="$final_message\n target ARCH:\t$use_arch"
2068 final_message="$final_message\n target CPU:\t$use_cpu"
2070 if test "$use_gles" = "yes"; then
2071 final_message="$final_message\n OpenGLES:\tYes"
2076 if test "$use_gl" = "yes"; then
2077 final_message="$final_message\n OpenGL:\tYes"
2080 final_message="$final_message\n OpenGL:\tNo (Very Slow)"
2081 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2086 if test "$use_alsa" = "yes"; then
2088 AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2089 final_message="$final_message\n ALSA:\t\tYes"
2092 final_message="$final_message\n ALSA:\t\tNo"
2095 if test "$use_dbus" = "yes"; then
2096 final_message="$final_message\n DBUS:\t\tYes"
2098 final_message="$final_message\n DBUS:\t\tNo"
2101 if test "x$use_vdpau" != "xno"; then
2102 final_message="$final_message\n VDPAU:\tYes"
2104 final_message="$final_message\n VDPAU:\tNo"
2107 if test "x$use_vaapi" != "xno"; then
2108 final_message="$final_message\n VAAPI:\tYes"
2110 final_message="$final_message\n VAAPI:\tNo"
2113 if test "x$use_crystalhd" != "xno"; then
2114 final_message="$final_message\n CrystalHD:\tYes"
2116 final_message="$final_message\n CrystalHD:\tNo"
2119 if test "x$use_vtbdecoder" != "xno"; then
2120 final_message="$final_message\n VTBDecoder:\tYes"
2122 final_message="$final_message\n VTBDecoder:\tNo"
2125 if test "$use_openmax" != "no"; then
2126 final_message="$final_message\n OpenMax:\tYes"
2128 final_message="$final_message\n OpenMax:\tNo"
2131 if test "$use_joystick" = "yes"; then
2132 final_message="$final_message\n Joystick:\tYes"
2133 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2135 final_message="$final_message\n Joystick:\tNo"
2138 if test "$use_xrandr" = "yes"; then
2139 final_message="$final_message\n XRandR:\tYes"
2142 final_message="$final_message\n XRandR:\tNo"
2146 if test "$use_waveform" = "yes"; then
2147 final_message="$final_message\n Waveform:\tYes"
2149 final_message="$final_message\n Waveform:\tNo"
2152 if test "$use_spectrum" = "yes"; then
2153 final_message="$final_message\n Spectrum:\tYes"
2155 final_message="$final_message\n Spectrum:\tNo"
2158 if test "$use_goom" = "yes"; then
2159 final_message="$final_message\n GOOM:\t\tYes"
2161 final_message="$final_message\n GOOM:\t\tNo"
2164 if test "$use_rsxs" = "yes"; then
2165 final_message="$final_message\n RSXS:\t\tYes"
2167 final_message="$final_message\n RSXS:\t\tNo"
2170 if test "$use_fishbmc" = "yes"; then
2171 final_message="$final_message\n FishBMC:\tYes"
2173 final_message="$final_message\n FishBMC:\tNo"
2176 if test "$use_projectm" = "yes"; then
2177 final_message="$final_message\n ProjectM:\tYes"
2179 final_message="$final_message\n ProjectM:\tNo"
2182 if test "$use_skin_touched" = "yes"; then
2183 final_message="$final_message\n Skin Touched:\tYes"
2185 final_message="$final_message\n Skin Touched:\tNo"
2188 if test "$use_x11" = "yes"; then
2189 final_message="$final_message\n X11:\t\tYes"
2191 final_message="$final_message\n X11:\t\tNo"
2194 if test "$use_wayland" = "yes"; then
2195 final_message="$final_message\n Wayland:\tYes"
2199 final_message="$final_message\n Wayland:\tNo"
2202 if test "$use_libbluray" = "yes"; then
2203 final_message="$final_message\n Bluray:\tYes"
2205 final_message="$final_message\n Bluray:\tNo"
2208 if test "x$use_texturepacker" != "xno"; then
2209 final_message="$final_message\n TexturePacker:Yes"
2212 final_message="$final_message\n TexturePacker:No"
2216 if test "$use_mid" = "yes"; then
2217 final_message="$final_message\n MID Support:\tYes"
2218 SDL_DEFINES="$SDL_DEFINES -DMID"
2220 final_message="$final_message\n MID Support:\tNo"
2225 if test "x$use_ccache" != "xno"; then
2226 AC_PATH_PROG(CCACHE,ccache,none)
2227 if test "$ac_cv_path_CCACHE" = "none"; then
2228 if test "x$use_ccache" = "xyes"; then
2229 AC_MSG_ERROR([ccache not found.]);
2231 AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2232 final_message="$final_message\n ccache:\tNo"
2235 CC="$ac_cv_path_CCACHE $CC"
2236 CXX="$ac_cv_path_CCACHE $CXX"
2237 AC_MSG_NOTICE(enabling ccache)
2238 final_message="$final_message\n ccache:\tYes"
2241 final_message="$final_message\n ccache:\tNo"
2244 if test "$use_alsa" = "yes"; then
2245 final_message="$final_message\n ALSA Support:\tYes"
2247 final_message="$final_message\n ALSA Support:\tNo"
2250 if test "x$use_pulse" != "xno"; then
2251 XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2252 final_message="$final_message\n PulseAudio:\tYes"
2254 XBMC_STANDALONE_SH_PULSE=/dev/null
2255 final_message="$final_message\n PulseAudio:\tNo"
2258 if test "$use_hal" = "yes"; then
2259 final_message="$final_message\n HAL Support:\tYes"
2261 final_message="$final_message\n HAL Support:\tNo"
2265 if test "$use_dvdcss" = "yes"; then
2266 AC_MSG_NOTICE($dvdcss_enabled)
2267 final_message="$final_message\n DVDCSS:\tYes"
2269 SKIP_CONFIG_DVDCSS=0
2270 DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2272 AC_MSG_NOTICE($dvdcss_disabled)
2273 final_message="$final_message\n DVDCSS:\tNo"
2275 SKIP_CONFIG_DVDCSS=1
2276 DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2278 if test "$host_vendor" = "apple"; then
2279 DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2282 # Google Test Framework
2283 if test "$configure_gtest" = "yes"; then
2284 AC_MSG_NOTICE($gtest_enabled)
2285 final_message="$final_message\n Google Test Framework Configured:\tYes"
2289 AC_MSG_NOTICE($gtest_disabled)
2290 final_message="$final_message\n Google Test Framework Configured:\tNo"
2295 if test "$use_avahi" = "yes"; then
2296 final_message="$final_message\n Avahi:\tYes"
2298 final_message="$final_message\n Avahi:\tNo"
2301 if test "$use_mdnsembedded" != "no"; then
2302 final_message="$final_message\n mDNSEmbedded:\tYes"
2304 final_message="$final_message\n mDNSEmbedded:\tNo"
2307 if test "$use_nonfree" = "yes"; then
2308 final_message="$final_message\n Non-free:\tYes"
2310 AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2313 final_message="$final_message\n Non-free:\tNo"
2316 if test "$use_asap" = "yes"; then
2317 AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2318 if test "$HAVE_GDC" = "no"; then
2319 AC_MSG_ERROR($missing_program);
2321 AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2322 if test "$HAVE_FPC" = "no"; then
2323 AC_MSG_ERROR($missing_program);
2326 AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2327 final_message="$final_message\n ASAP Codec:\tYes"
2330 final_message="$final_message\n ASAP Codec:\tNo"
2333 if test "$use_mysql" = "yes"; then
2334 final_message="$final_message\n MySQL:\tYes"
2337 final_message="$final_message\n MySQL:\tNo"
2340 if test "$use_webserver" = "yes"; then
2341 final_message="$final_message\n Webserver:\tYes"
2344 final_message="$final_message\n Webserver:\tNo"
2348 if test "$use_libssh" != "no"; then
2349 final_message="$final_message\n libssh support:\tYes"
2351 final_message="$final_message\n libssh support:\tNo"
2354 if test "$use_librtmp" != "no"; then
2355 final_message="$final_message\n libRTMP support:\tYes"
2357 final_message="$final_message\n libRTMP support:\tNo"
2360 if test "x$use_samba" != "xno"; then
2361 final_message="$final_message\n libsmbclient support:\tYes"
2363 final_message="$final_message\n libsmbclient support:\tNo"
2366 if test "$use_libnfs" != "no"; then
2367 final_message="$final_message\n libnfs client support:Yes"
2369 final_message="$final_message\n libnfs client support:No"
2372 if test "x$use_libafpclient" != "xno"; then
2373 final_message="$final_message\n libafpclient support:\tYes"
2375 final_message="$final_message\n libafpclient support:\tNo"
2378 if test "$use_airplay" != "no"; then
2379 final_message="$final_message\n AirPlay support:\tYes"
2381 final_message="$final_message\n AirPLay support:\tNo"
2384 if test "x$use_airtunes" != "xno"; then
2385 if test "x$USE_LIBSHAIRPLAY" == "x1"; then
2386 final_message="$final_message\n AirTunes support (libshairplay):\tYes"
2388 final_message="$final_message\n AirTunes support (libshairport):\tYes"
2391 final_message="$final_message\n AirTunes support:\tNo"
2394 if test "x$use_upnp" != "xno"; then
2395 final_message="$final_message\n UPnP support:\t\tYes"
2397 AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2400 final_message="$final_message\n UPnP support:\t\tNo"
2403 if test "$use_optical_drive" = "yes"; then
2404 final_message="$final_message\n Optical drive:\tYes"
2406 final_message="$final_message\n Optical drive:\tNo"
2409 if test "x$use_libudev" != "xno"; then
2410 final_message="$final_message\n libudev support:\tYes"
2412 final_message="$final_message\n libudev support:\tNo"
2415 if test "x$use_libusb" != "xno"; then
2416 final_message="$final_message\n libusb support:\tYes"
2418 final_message="$final_message\n libusb support:\tNo"
2421 if test "x$use_libcec" != "xno"; then
2422 final_message="$final_message\n libcec support:\tYes"
2424 final_message="$final_message\n libcec support:\tNo"
2427 if test "x$use_libmp3lame" != "xno"; then
2428 final_message="$final_message\n libmp3lame support:\tYes"
2430 final_message="$final_message\n libmp3lame support:\tNo"
2433 if test "x$use_libvorbisenc" != "xno"; then
2434 final_message="$final_message\n libvorbisenc support:\tYes"
2436 final_message="$final_message\n libvorbisenc support:\tNo"
2439 if test "x$use_libcap" != "xno"; then
2440 final_message="$final_message\n libcap support:\tYes"
2442 final_message="$final_message\n libcap support:\tNo"
2445 if test "x$add_players" != "xno"; then
2446 final_message="$final_message\n additional players:\tYes, $add_players"
2448 final_message="$final_message\n additional players:\tNo"
2451 if test "x$add_codecs" != "xno"; then
2452 final_message="$final_message\n additional codecs:\tYes, $add_codecs"
2454 final_message="$final_message\n additional codecs:\tNo"
2457 ### External libraries messages
2459 if test "$use_external_ffmpeg" = "yes"; then
2460 final_message="$final_message\n External FFmpeg:\tYes"
2462 final_message="$final_message\n External FFmpeg:\tNo"
2465 if test "$host_vendor" = "apple" ; then
2466 # built internal but referenced as external, we link directly to them.
2467 # this MUST be the last thing before OUTPUT_FILES as they do not
2468 # exist until after we build FFMpeg.
2469 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2470 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2471 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2472 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2473 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2474 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2475 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2479 DISABLE_PVR_ADDON_CONFIG=1
2480 if [[ -f "pvr-addons/Makefile.am" ]]; then
2481 final_message="$final_message\n PVR add-ons:\t\tYes"
2483 DISABLE_PVR_ADDON_CONFIG=0
2485 final_message="$final_message\n PVR add-ons:\t\tNo"
2488 OUTPUT_FILES="Makefile \
2490 addons/skin.confluence/media/Makefile \
2492 xbmc/cdrip/Makefile \
2493 xbmc/cores/Makefile \
2494 xbmc/cores/VideoRenderers/Makefile \
2495 xbmc/cores/dvdplayer/Makefile \
2497 lib/libdvd/Makefile \
2498 xbmc/cores/DllLoader/Makefile \
2499 xbmc/cores/DllLoader/exports/Makefile \
2500 xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2501 xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2502 xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2503 xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2504 xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2505 xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2506 xbmc/cores/AudioEngine/Makefile \
2507 xbmc/cores/paplayer/Makefile \
2508 xbmc/cores/omxplayer/Makefile \
2509 lib/timidity/Makefile \
2510 lib/xbadpcm/Makefile \
2512 lib/nosefart/Makefile \
2513 lib/libsidplay2/Makefile \
2514 lib/vgmstream/Makefile \
2515 lib/snesapu/SNES/SNESAPU/Makefile \
2516 lib/stsound/StSoundLibrary/Makefile \
2517 xbmc/cores/playercorefactory/Makefile \
2518 xbmc/music/karaoke/Makefile \
2520 xbmc/guilib/Makefile \
2521 xbmc/input/linux/Makefile \
2522 xbmc/interfaces/Makefile \
2523 xbmc/network/Makefile \
2524 xbmc/network/upnp/Makefile \
2525 lib/libRTV/Makefile \
2526 lib/libexif/Makefile \
2527 lib/libXDAAP/Makefile \
2528 lib/cmyth/Makefile \
2529 lib/libhdhomerun/Makefile \
2530 lib/libsquish/Makefile \
2531 lib/cximage-6.0/Makefile \
2532 lib/libUPnP/Makefile \
2533 xbmc/DllPaths_generated.h \
2534 xbmc/DllPaths_generated_android.h \
2535 xbmc/freebsd/Makefile \
2536 xbmc/linux/Makefile \
2537 xbmc/filesystem/Makefile \
2538 xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2539 xbmc/visualizations/XBMCProjectM/Makefile \
2540 xbmc/visualizations/Goom/Makefile \
2541 xbmc/visualizations/OpenGLSpectrum/Makefile \
2542 xbmc/visualizations/fishBMC/Makefile \
2543 xbmc/visualizations/WaveForm/Makefile \
2544 xbmc/windowing/Makefile \
2545 xbmc/windowing/egl/Makefile \
2546 lib/addons/library.xbmc.addon/Makefile \
2547 lib/addons/library.xbmc.codec/Makefile \
2548 lib/addons/library.xbmc.gui/Makefile \
2549 lib/addons/library.xbmc.pvr/Makefile \
2550 xbmc/visualizations/EGLHelpers/Makefile \
2551 tools/Linux/xbmc.sh \
2552 tools/Linux/xbmc-standalone.sh \
2553 tools/TexturePacker/Makefile \
2554 tools/EventClients/Clients/OSXRemote/Makefile \
2555 xbmc/peripherals/bus/Makefile \
2556 xbmc/peripherals/devices/Makefile \
2557 xbmc/android/activity/Makefile \
2558 xbmc/android/loader/Makefile \
2559 xbmc/android/jni/Makefile \
2560 xbmc/utils/Makefile \
2561 xbmc/main/Makefile \
2562 project/cmake/xbmc-config.cmake"
2564 if test "$use_wayland" = "yes"; then
2565 OUTPUT_FILES="$OUTPUT_FILES xbmc/windowing/tests/wayland/Makefile"
2568 if test "$use_skin_touched" = "yes"; then
2569 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2572 if test "$use_codec_libstagefright" = "yes"; then
2573 OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile"
2576 OUTPUT_FILES="$OUTPUT_FILES \
2577 xbmc/interfaces/python/Makefile \
2578 xbmc/interfaces/python/test/Makefile"
2580 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2581 # .dummy.am does nothing.
2582 AC_CONFIG_FILES([.dummy])
2584 AC_CONFIG_FILES([${OUTPUT_FILES}])
2585 OUTPUT_FILES="$OUTPUT_FILES \
2591 AC_SUBST(CXX_FOR_BUILD)
2592 AC_SUBST(CC_FOR_BUILD)
2593 AC_SUBST(CFLAGS_FOR_BUILD)
2594 AC_SUBST(CXXFLAGS_FOR_BUILD)
2595 AC_SUBST(LDFLAGS_FOR_BUILD)
2596 AC_SUBST(SDL_DEFINES)
2597 AC_SUBST(BUILD_DVDCSS)
2598 AC_SUBST(DISABLE_WAVEFORM)
2599 AC_SUBST(DISABLE_SPECTRUM)
2600 AC_SUBST(DISABLE_GOOM)
2601 AC_SUBST(DISABLE_RSXS)
2602 AC_SUBST(DISABLE_FISHBMC)
2603 AC_SUBST(DISABLE_PROJECTM)
2604 AC_SUBST(USE_SKIN_TOUCHED)
2605 AC_SUBST(USE_EXTERNAL_FFMPEG)
2606 AC_SUBST(USE_LIBAV_HACKS)
2607 AC_SUBST(PYTHON_VERSION)
2608 AC_SUBST(OUTPUT_FILES)
2609 AC_SUBST(HAVE_XBMC_NONFREE)
2610 AC_SUBST(USE_ASAP_CODEC)
2611 AC_SUBST(LIBCURL_BASENAME)
2612 AC_SUBST(LIBFLAC_BASENAME)
2613 AC_SUBST(LIBVORBISFILE_BASENAME)
2614 AC_SUBST(LIBMODPLUG_BASENAME)
2615 AC_SUBST(LIBMAD_BASENAME)
2616 AC_SUBST(LIBOGG_BASENAME)
2617 AC_SUBST(LIBVORBISENC_BASENAME)
2618 AC_SUBST(LIBVORBIS_BASENAME)
2619 AC_SUBST(LIBASS_BASENAME)
2620 AC_SUBST(LIBMEPG2_BASENAME)
2621 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2622 AC_SUBST(USE_OPENGL)
2623 AC_SUBST(USE_OPENGLES)
2626 AC_SUBST(USE_CRYSTALHD)
2627 AC_SUBST(USE_LIBSMBCLIENT)
2628 AC_SUBST(USE_LIBNFS)
2629 AC_SUBST(USE_LIBAFPCLIENT)
2630 AC_SUBST(USE_AIRPLAY)
2631 AC_SUBST(USE_OPENMAX)
2633 AC_SUBST(USE_XRANDR)
2635 AC_SUBST(USE_TEXTUREPACKER)
2636 AC_SUBST(USE_AIRTUNES)
2637 AC_SUBST(USE_LIBUDEV)
2638 AC_SUBST(USE_LIBUSB)
2639 AC_SUBST(USE_LIBCEC)
2641 AC_SUBST(USE_WAYLAND)
2642 AC_SUBST(USE_WEB_SERVER)
2644 AC_SUBST(USE_XKBCOMMON)
2645 AC_SUBST(USE_OMXLIB)
2646 AC_SUBST(USE_ANDROID)
2647 AC_SUBST(GTEST_CONFIGURED)
2648 AC_SUBST(USE_DOXYGEN)
2649 AC_SUBST(USE_PVR_ADDONS)
2651 # pushd and popd are not available in other shells besides bash, so implement
2652 # our own pushd/popd functions
2657 if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2659 XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2662 AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2667 if [[ -n "$XB_DIRSTACK" ]]; then
2668 XB_DIRSTACK="${XB_DIRSTACK#* }"
2669 cd "${XB_DIRSTACK%% *}"
2672 AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2676 # Function to run the configure scripts in our submodules
2677 # Consists of three paramaters, the path to the submodule, the configure command
2678 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2679 # running the script, anything else if not.
2680 AC_DEFUN([XB_CONFIG_MODULE],[
2681 AC_CONFIG_COMMANDS_POST([
2682 if [[ $3 != "1" ]]; then
2683 if [[ -d $1 ]]; then
2686 if [[ $? -ne 0 ]]; then
2688 AC_MSG_ERROR([[Submodule $1 failed to configure]])
2693 AC_MSG_ERROR([[Submodule $1 does not exist]])
2696 AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2701 XB_CONFIG_MODULE([lib/ffmpeg], [
2702 if test "$host_vendor" = "apple" ; then
2703 ffmpg_config="--target-os=$ffmpeg_target_os"
2704 # handle disables first, we do individual enables later
2705 ffmpg_config="$ffmpg_config --disable-muxers --disable-encoders"
2706 ffmpg_config="$ffmpg_config --disable-devices --disable-doc"
2707 ffmpg_config="$ffmpg_config --disable-ffplay --disable-ffmpeg"
2708 ffmpg_config="$ffmpg_config --disable-ffprobe --disable-ffserver"
2709 ffmpg_config="$ffmpg_config --enable-vda --disable-crystalhd"
2710 ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2712 # handle conditional enables/disables
2713 if test "$use_debug" = "no"; then
2714 ffmpg_config="$ffmpg_config --disable-debug"
2716 if test "$use_cpu" != "no"; then
2717 ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2719 if test "$use_arch" != "no"; then
2720 ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2722 if test "$use_arch" = "arm"; then
2723 ffmpg_config="$ffmpg_config --enable-pic"
2724 ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2725 if test "$use_neon" = "yes"; then
2726 ffmpg_config="$ffmpg_config --enable-neon"
2728 ffmpg_config="$ffmpg_config --disable-neon"
2731 ffmpg_config="$ffmpg_config --disable-amd3dnow"
2733 if test "$use_ffmpeg_libvorbis" = "yes"; then
2734 ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2736 ffmpg_config="$ffmpg_config --disable-libvorbis"
2738 if test "$have_gnutls" = "yes"; then
2739 ffmpg_config="$ffmpg_config --enable-gnutls"
2742 # handle individual enables
2743 ffmpg_config="$ffmpg_config --enable-gpl"
2744 ffmpg_config="$ffmpg_config --enable-postproc"
2745 ffmpg_config="$ffmpg_config --enable-static --enable-pthreads"
2746 ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2747 ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2748 ffmpg_config="$ffmpg_config --enable-protocol=http"
2749 ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2751 # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2754 ffmpg_config="$ffmpg_config --cc=clang" ;;
2756 ffmpg_config="$ffmpg_config --cc=$CC" ;;
2759 # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2760 FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2762 LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2764 # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2765 # dependency files in the right place, replace it with something that works
2768 sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2771 # ffmpeg will use yasm found at ${prefix}/bin during configure
2772 # but then hardcodes 'yasm' in config.mak, fix it.
2773 sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2774 sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2775 sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2780 LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2782 --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2784 `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2785 `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2786 `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2787 `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2788 `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2789 --target-os=$ffmpeg_target_os \
2791 --enable-muxer=spdif \
2792 --enable-muxer=adts \
2793 --enable-muxer=asf \
2794 --enable-muxer=ipod \
2795 --disable-encoders \
2796 --enable-encoder=ac3 \
2797 --enable-encoder=aac \
2798 --enable-encoder=wmav2 \
2799 `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2800 --disable-decoder=mpeg_xvmc \
2804 --disable-ffserver \
2806 --disable-crystalhd \
2811 `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2812 `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2813 `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2814 --enable-protocol=http \
2815 `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2817 --enable-runtime-cpudetect \
2818 `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2819 `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2820 `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2821 else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2822 `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2824 sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2825 sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2827 ], [$USE_EXTERNAL_FFMPEG])
2829 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2833 CFLAGS="$CFLAGS $DROID_DVDLIB_SEEK64" \
2834 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2835 --host=$host_alias \
2836 --build=$build_alias \
2837 --target=$target_alias \
2841 ], [$SKIP_CONFIG_DVDCSS])
2843 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2845 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
2846 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2847 --host=$host_alias \
2848 --build=$build_alias \
2849 --target=$target_alias \
2855 $MAKE dvdread-config &&
2856 mkdir -p `pwd`/../includes/dvdread
2857 cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2858 cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2861 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2863 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
2864 --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2865 --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
2866 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2867 --host=$host_alias \
2868 --build=$build_alias \
2869 --target=$target_alias \
2875 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2877 rm -f CMakeCache.txt && \
2878 CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2879 -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF \
2880 -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}" \
2881 -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2882 -DCMAKE_INSTALL_PREFIX="${prefix}" \
2883 -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}" \
2884 -DINCLUDE_INSTALL_DIR:PATH="${includedir}" \
2885 -DLIB_INSTALL_DIR:PATH="${libdir}" \
2886 -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" \
2887 -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2888 if test "$host_vendor" = "apple" ; then
2889 # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2890 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2891 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2892 sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2895 ], [$DISABLE_PROJECTM])
2897 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2900 CXXFLAGS="$CXXFLAGS" \
2901 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2902 --host=$host_alias \
2903 --build=$build_alias \
2904 --target=$target_alias \
2910 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2911 if test "$host_vendor" = "apple"; then
2912 # clang treats inlines different
2915 TEMPCFLAGS="$CFLAGS";;
2917 TEMPCFLAGS="${CFLAGS} -fgnu89-inline";;
2920 TEMPCFLAGS="$CFLAGS";
2925 CFLAGS="$TEMPCFLAGS" \
2926 CXXFLAGS="$CXXFLAGS" \
2927 `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2928 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2929 --host=$host_alias \
2930 --build=$build_alias \
2931 --target=$target_alias \
2932 --without-xscreensaver \
2935 --disable-fieldlines \
2939 --disable-hyperspace \
2942 if echo "$ARCH" | grep -q freebsd ; then
2943 sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2947 XB_CONFIG_MODULE([lib/cpluff], [
2948 ./configure --disable-nls \
2949 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2950 --host=$host_alias \
2951 --build=$build_alias \
2952 --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2953 #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"
2956 XB_CONFIG_MODULE([lib/gtest], [
2961 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2962 --host=$host_alias \
2963 --build=$build_alias \
2964 --target=$target_alias \
2968 ], [$SKIP_CONFIG_GTEST])
2970 XB_CONFIG_MODULE([pvr-addons], [
2972 --prefix="${prefix}" \
2973 --host=$host_alias \
2974 --build=$build_alias \
2975 --target=$target_alias \
2979 CXXFLAGS="$CXXFLAGS"
2980 ], [$DISABLE_PVR_ADDON_CONFIG])
2984 final_message="$final_message\n prefix:\t$prefix\n$dashes"
2985 echo -e "$final_message\n"