2 # Process this file with autoconf to produce a configure script.
5 AC_INIT([xbmc], [12.9.9], [http://trac.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])
43 AC_DEFINE([HAS_$1], 1, [using $2])
44 AC_MSG_RESULT([enabling $2])
47 AC_MSG_RESULT([$2 is not enabled])
51 # check for library basenames
52 AC_DEFUN([XB_FIND_SONAME],
54 if echo "$host" | grep -q freebsd ; then
55 AC_MSG_CHECKING([for lib$2 soname])
56 $1_SONAME=[`ldconfig -r | sed -n "s;.* \(/.*lib$2\.so.*\)$;\1;p" | head -n 1`]
57 if test x$$1_SONAME != x ; then
58 $1_SONAME=[`basename $$1_SONAME`]
60 elif [[ "$host_vendor" != "apple" ]]; then
61 AC_MSG_CHECKING([for lib$2 soname])
62 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
63 if [[ -z $$1_FILENAME ]]; then
64 #try gold linker syntax
65 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "lib$2")
67 if [[ ! -z $$1_FILENAME ]]; then
68 $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
71 AC_MSG_CHECKING([for lib$2 dylib])
72 gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
73 env_lib_path=[`echo $LDFLAGS | sed 's/-L[ ]*//g'`]
74 if test "$cross_compiling" = yes; then
77 host_lib_path="/usr/lib /usr/local/lib"
79 for path in $gcc_lib_path $env_lib_path $host_lib_path; do
80 lib=[`ls -- $path/lib$2.dylib 2>/dev/null`]
81 if test x$lib != x; then
82 # we want the path/name that is embedded in the dylib
83 $1_SONAME=[`otool -L $lib | grep -v lib$2.dylib | grep lib$2 | awk '{V=1; print $V}'`]
84 $1_SONAME=[`basename $$1_SONAME`]
88 if [[ -z "$$1_SONAME" ]]; then
90 if test -z "$3" || test "x${$3}" = "xyes"; then
91 AC_MSG_ERROR([Unable to determine soname of lib$2 library])
93 AC_MSG_WARN([Unable to determine soname of lib$2 library])
95 AC_MSG_WARN([lib$2 support disabled])
98 AC_MSG_RESULT([$$1_SONAME])
103 # Function to push and pop libs and includes for a command
104 AC_DEFUN([XB_PUSH_FLAGS], [
106 SAVE_INCLUDES="$INCLUDES"
111 INCLUDES="$SAVE_INCLUDES"
114 # General message strings
115 configure_debug="ERROR: this is a configure debug statement"
116 missing_library="Could not find a required library. Please see the README for your platform."
117 missing_headers="Could not find some required headers. Please see the README for your platform."
118 missing_program="Could not find a required program. Please see the README for your platform."
119 xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
120 xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
121 waveform_enabled="== WAVEFORM enabled =="
122 waveform_disabled="== WAVEFORM disabled =="
123 spectrum_enabled="== SPECTRUM enabled =="
124 spectrum_disabled="== SPECTRUM disabled =="
125 goom_enabled="== GOOM enabled. =="
126 goom_disabled="== GOOM disabled. =="
127 alsa_disabled="== ALSA support disabled. =="
128 rsxs_enabled="== RSXS enabled. =="
129 rsxs_disabled="== RSXS disabled. =="
130 fishbmc_enabled="== FishBMC enabled. =="
131 fishbmc_disabled="== FishBMC disabled. =="
132 projectm_enabled="== ProjectM enabled. =="
133 projectm_disabled="== ProjectM disabled. =="
134 x11_enabled="== X11 enabled. =="
135 x11_disabled="== X11 disabled. =="
136 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
137 pulse_disabled="== PulseAudio support manually disabled. =="
138 dvdcss_enabled="== DVDCSS support enabled. =="
139 dvdcss_disabled="== DVDCSS support disabled. =="
140 hal_not_found="== Could not find hal. HAL support disabled. =="
141 halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
142 hal_disabled="== HAL support disabled. =="
143 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
144 avahi_disabled="== Avahi support disabled. =="
145 mdnsembedded_not_found="== Could not find mDNSEmbedded. Might prevent zeroconf support. =="
146 mdnsembedded_disabled="== mDNSEmbedded support disabled. =="
147 vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
148 vdpau_disabled="== VDPAU support manually disabled. =="
149 vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
150 vaapi_disabled="== VAAPI support manually disabled. =="
151 crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
152 crystalhd_disabled="== CrystalHD support manually disabled. =="
153 vtbdecoder_enabled="== VTBDecoder support enabled. =="
154 vtbdecoder_disabled="== VTBDecoder support manually disabled. =="
155 openmax_disabled="== OpenMax support manually disabled. =="
156 openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
157 ssh_not_found="== Could not find libssh. =="
158 ssh_disabled="== SSH SFTP disabled. =="
159 librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
160 librtmp_disabled="== RTMP support disabled. =="
161 libnfs_not_found="== Could not find libnfs. NFS client support disabled. =="
162 libnfs_disabled="== NFS support disabled. =="
163 libafpclient_not_found="== Could not find libafpclient. AFP client support disabled. =="
164 libafpclient_disabled="== AFP support disabled. =="
165 libshairport_not_found="== Could not find libshairport. =="
166 libshairplay_not_found="== Could not find libshairplay. =="
167 samba_disabled="== SAMBA support disabled. =="
168 libplist_not_found="== Could not find libplist. AirPlay support disabled. =="
169 libplist_disabled="== AirPlay support disabled. =="
170 alsa_not_found="== Could not find ALSA. ALSA support disabled. =="
171 dbus_not_found="== Could not find DBUS. DBUS support disabled. =="
172 libcap_disabled="== Capabilities detection support disabled. =="
173 libcap_not_found="== Could not find libcap. Capabilities detection support disabled. =="
174 gtest_enabled="== Google Test Framework will be configured. =="
175 gtest_disabled="== Google Test Framework will not be configured. =="
177 libudev_not_found="== Could not find libudev. Will use polling to check for device changes. =="
178 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
179 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
180 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
181 libusb_disabled_udev_found="== libusb disabled. =="
182 libcec_enabled="== libcec enabled. =="
183 libcec_disabled="== libcec disabled. CEC adapter support will not be available. =="
185 # External library message strings
186 external_libraries_enabled="== Use of all supported external libraries enabled. =="
187 external_libraries_disabled="== Use of all supported external libraries disabled. =="
188 external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
189 external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
190 ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
191 dashes="------------------------"
192 final_message="\n XBMC Configuration:"
193 final_message="\n$dashes$final_message\n$dashes"
195 AC_ARG_ENABLE([shared-lib],
196 [AS_HELP_STRING([--enable-shared-lib],
197 [build libxbmc. helpful for tests (default is no)])],
198 [build_shared_lib=$enableval],
199 [build_shared_lib=no])
201 AC_ARG_ENABLE([debug],
202 [AS_HELP_STRING([--enable-debug],
203 [enable debugging information (default is yes)])],
204 [use_debug=$enableval],
208 [AS_HELP_STRING([--with-arch],
209 [build with given arch passing to internal ffmpeg (default is no, needed for crosscompiling)])],
213 AC_ARG_WITH([platform],
214 [AS_HELP_STRING([--with-platform],
215 [use a pre-configured config for common arm boards])],
216 [use_platform=$withval],
220 [AS_HELP_STRING([--with-cpu],
221 [build with given cpu passing to ffmpeg (default is no)])],
225 AC_ARG_ENABLE([neon],
226 [AS_HELP_STRING([--enable-neon],
227 [enable neon passing to ffmpeg (default is no)])],
228 [use_neon=$enableval],
231 AC_ARG_ENABLE([optimizations],
232 [AS_HELP_STRING([--enable-optimizations],
233 [enable optimization (default is yes)])],
234 [use_optimizations=$enableval],
235 [use_optimizations=yes])
238 [AS_HELP_STRING([--enable-gl],
239 [enable OpenGL rendering (default is yes)])],
243 AC_ARG_ENABLE([gles],
244 [AS_HELP_STRING([--enable-gles],
245 [enable OpenGLES rendering (default is no)])],
246 [use_gles=$enableval],
250 [AS_HELP_STRING([--enable-sdl],
251 [enable SDL (default is auto)])],
252 [use_sdl=$enableval],
255 AC_ARG_ENABLE([vdpau],
256 [AS_HELP_STRING([--enable-vdpau],
257 [enable VDPAU decoding (default is auto)])],
258 [use_vdpau=$enableval],
261 AC_ARG_ENABLE([vaapi],
262 [AS_HELP_STRING([--enable-vaapi],
263 [enable VAAPI decoding (default is auto)])],
264 [use_vaapi=$enableval],
267 AC_ARG_ENABLE([crystalhd],
268 [AS_HELP_STRING([--enable-crystalhd],
269 [enable CrystalHD decoding (default is auto)])],
270 [use_crystalhd=$enableval],
271 [use_crystalhd=auto])
273 AC_ARG_ENABLE([vtbdecoder],
274 [AS_HELP_STRING([--enable-vtbdecoder],
275 [enable VTBDecoder decoding (default is auto)])],
276 [use_vtbdecoder=$enableval],
277 [use_vtbdecoder=auto])
279 AC_ARG_ENABLE([openmax],
280 [AS_HELP_STRING([--enable-openmax],
281 [enable OpenMax decoding (default is auto, requires OpenGLES)])],
282 [use_openmax=$enableval],
285 AC_ARG_ENABLE([tegra],
286 [AS_HELP_STRING([--enable-tegra],
287 [enable Tegra2 arm (default is no)])],
288 [use_tegra=$enableval],
291 AC_ARG_ENABLE([profiling],
292 [AS_HELP_STRING([--enable-profiling],
293 [enable gprof profiling (default is no)])],
294 [use_profiling=$enableval],
297 AC_ARG_ENABLE([joystick],
298 [AS_HELP_STRING([--enable-joystick],
299 [enable SDL joystick support (default is yes)])],
300 [use_joystick=$enableval],
303 AC_ARG_ENABLE([xrandr],
304 [AS_HELP_STRING([--enable-xrandr],
305 [enable XRandR support (default is yes)])],
306 [use_xrandr=$enableval],
309 AC_ARG_ENABLE([waveform],
310 [AS_HELP_STRING([--enable-waveform],
311 [enable Waveform visualisation (default is yes)])],
312 [use_waveform=$enableval],
315 AC_ARG_ENABLE([spectrum],
316 [AS_HELP_STRING([--enable-spectrum],
317 [enable Spectrum visualisation (default is yes)])],
318 [use_spectrum=$enableval],
321 AC_ARG_ENABLE([goom],
322 [AS_HELP_STRING([--enable-goom],
323 [enable GOOM visualisation (default is no)])],
324 [use_goom=$enableval],
327 AC_ARG_ENABLE([rsxs],
328 [AS_HELP_STRING([--enable-rsxs],
329 [enable really slick X screensavers (default is yes)])],
330 [use_rsxs=$enableval],
333 AC_ARG_ENABLE([fishbmc],
334 [AS_HELP_STRING([--enable-fishbmc],
335 [enable FishBMC visualisation (default is yes)])],
336 [use_fishbmc=$enableval],
339 AC_ARG_ENABLE([projectm],
340 [AS_HELP_STRING([--enable-projectm],
341 [enable ProjectM visualisation (default is yes)])],
342 [use_projectm=$enableval],
346 [AS_HELP_STRING([--enable-x11],
347 [enable x11 (default is yes) 'Linux Only'])],
348 [use_x11=$enableval],
351 AC_ARG_ENABLE([ccache],
352 [AS_HELP_STRING([--enable-ccache],
353 [enable building with ccache feature (default is auto)])],
354 [use_ccache=$enableval],
357 AC_ARG_ENABLE([alsa],
358 [AS_HELP_STRING([--disable-alsa],
359 [disable ALSA support (only for linux/freebsd)])],
360 [use_alsa=$enableval],
363 AC_ARG_ENABLE([pulse],
364 [AS_HELP_STRING([--enable-pulse],
365 [enable PulseAudio support (default is no)])],
366 [use_pulse=$enableval],
370 [AS_HELP_STRING([--disable-ssh],
371 [disable SSH SFTP support (default is enabled)])],
372 [use_ssh=$enableval],
375 AC_ARG_ENABLE([rtmp],
376 [AS_HELP_STRING([--enable-rtmp],
377 [enable RTMP support via librtmp (default is auto)])],
378 [use_librtmp=$enableval],
381 AC_ARG_ENABLE([samba],
382 [AS_HELP_STRING([--disable-samba],
383 [disable SAMBA support (default is enabled)])],
384 [use_samba=$enableval],
388 [AS_HELP_STRING([--enable-nfs],
389 [enable NFS support via libnfs (default is auto)])],
390 [use_libnfs=$enableval],
393 AC_ARG_ENABLE([afpclient],
394 [AS_HELP_STRING([--enable-afpclient],
395 [enable AFP support via libafpclient (default is auto)])],
396 [use_libafpclient=$enableval],
397 [use_libafpclient=auto])
399 AC_ARG_ENABLE([airplay],
400 [AS_HELP_STRING([--enable-airplay],
401 [enable AirPlay support(default is auto)])],
402 [use_airplay=$enableval],
405 AC_ARG_ENABLE([airtunes],
406 [AS_HELP_STRING([--enable-airtunes],
407 [enable AirTunes support(default is auto)])],
408 [use_airtunes=$enableval],
411 AC_ARG_ENABLE([upnp],
412 [AS_HELP_STRING([--disable-upnp],
413 [disable UPnP support (default is enabled)])],
414 [use_upnp=$enableval],
417 AC_ARG_ENABLE([ffmpeg_libvorbis],
418 [AS_HELP_STRING([--enable-ffmpeg-libvorbis],
419 [enable FFmpeg vorbis encoding (default is no)])],
420 [use_ffmpeg_libvorbis=$enableval],
421 [use_ffmpeg_libvorbis=no])
423 AC_ARG_ENABLE([dvdcss],
424 [AS_HELP_STRING([--enable-dvdcss],
425 [enable DVDCSS support (default is yes)])],
426 [use_dvdcss=$enableval],
430 [AS_HELP_STRING([--enable-mid],
431 [enable MID support (default is no)])],
432 [use_mid=$enableval],
436 [AS_HELP_STRING([--disable-hal],
437 [disable HAL support (default is enabled if hal and hal-storage is found)])],
438 [use_hal=$enableval],
441 AC_ARG_ENABLE([avahi],
442 [AS_HELP_STRING([--disable-avahi],
443 [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
444 [use_avahi=$enableval],
447 AC_ARG_ENABLE([mdnsembedded],
448 [AS_HELP_STRING([--disable-mdnsembedded],
449 [disable mDNSEmbedded support (default is auto)])],
450 [use_mdnsembedded=$enableval],
451 [use_mdnsembedded=auto])
453 AC_ARG_ENABLE([non-free],
454 [AS_HELP_STRING([--disable-non-free],
455 [disable componentents with non-compliant licenses])],
456 [use_nonfree=$enableval],
459 AC_ARG_ENABLE([asap-codec],
460 [AS_HELP_STRING([--enable-asap-codec],
461 [enable ASAP ADPCM support])],
462 [use_asap=$enableval],
465 AC_ARG_ENABLE([mysql],
466 [AS_HELP_STRING([--disable-mysql],
468 [use_mysql=$enableval],
471 AC_ARG_ENABLE([webserver],
472 [AS_HELP_STRING([--disable-webserver],
473 [disable webserver])],
474 [use_webserver=$enableval],
477 AC_ARG_ENABLE([optical-drive],
478 [AS_HELP_STRING([--disable-optical-drive],
479 [disable optical drive])],
480 [use_optical_drive=$enableval],
481 [use_optical_drive=yes])
483 AC_ARG_ENABLE([libbluray],
484 [AS_HELP_STRING([--enable-libbluray],
485 [enable libbluray support])],
486 [use_libbluray=$enableval],
487 [use_libbluray=auto])
489 AC_ARG_ENABLE([texturepacker],
490 [AS_HELP_STRING([--enable-texturepacker],
491 [enable texturepacker support (default is yes)])],
492 [use_texturepacker=$enableval],
493 [use_texturepacker=auto])
495 AC_ARG_WITH([lirc-device],
496 [AS_HELP_STRING([--with-lirc-device=file],
497 [specify the default LIRC device (default is /dev/lircd)])],
498 [lirc_device=$withval],
499 [lirc_device=/dev/lircd])
500 AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device])
502 AC_ARG_ENABLE([udev],
503 [AS_HELP_STRING([--enable-udev],
504 [enable udev support (default is auto)])],
505 [use_libudev=$enableval],
508 AC_ARG_ENABLE([libusb],
509 [AS_HELP_STRING([--enable-libusb],
510 [enable libusb support (default is auto)])],
511 [use_libusb=$enableval],
514 AC_ARG_ENABLE([libcec],
515 [AS_HELP_STRING([--enable-libcec],
516 [enable libcec support (default is auto)])],
517 [use_libcec=$enableval],
520 AC_ARG_ENABLE([libmp3lame],
521 [AS_HELP_STRING([--enable-libmp3lame],
522 [enable lame mp3 encoder support (default is auto)])],
523 [use_libmp3lame=$enableval],
524 [use_libmp3lame=auto])
526 AC_ARG_ENABLE([libvorbisenc],
527 [AS_HELP_STRING([--enable-libvorbisenc],
528 [enable vorbis encoder support (default is auto)])],
529 [use_libvorbisenc=$enableval],
530 [use_libvorbisenc=auto])
532 AC_ARG_ENABLE([libcap],
533 [AS_HELP_STRING([--enable-libcap],
534 [enable libcap support (default is auto)])],
535 [use_libcap=$enableval],
538 AC_ARG_ENABLE([player],
539 [AS_HELP_STRING([--enable-player],
540 [enable additional players from a list of comma separated names, (default is none, choices are amlplayer, omxplayer)])],
541 [add_players=$enableval],
544 AC_ARG_ENABLE([gtest],
545 [AS_HELP_STRING([--enable-gtest],
546 [configure Google Test Framework (default is no)])],
547 [configure_gtest=$enableval],
548 [configure_gtest=no])
550 AC_ARG_ENABLE([codec],
551 [AS_HELP_STRING([--enable-codec],
552 [enable additional codecs from a list of comma separated names, (default is none, choices are amcodec, libstagefright)])],
553 [add_codecs=$enableval],
556 ### External libraries options
557 AC_ARG_ENABLE([external-libraries],
558 [AS_HELP_STRING([--enable-external-libraries],
559 [enable use of all supported external libraries (default is no) 'Linux only'])],
560 [use_external_libraries=$enableval],
561 [use_external_libraries=no])
563 AC_ARG_ENABLE([external-ffmpeg],
564 [AS_HELP_STRING([--enable-external-ffmpeg],
565 [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
566 [use_external_ffmpeg=$enableval],
567 [use_external_ffmpeg=$use_external_libraries])
569 AC_ARG_ENABLE([libav-compat],
570 [AS_HELP_STRING([--enable-libav-compat],
571 [build a wrapper around libav to provide the functions needed by XBMC. This is
572 *not* supported by XBMC developers and is provided only for convenience. (default is no) 'Linux only'])],
573 [use_libav_hacks=$enableval],
574 [use_libav_hacks=no])
576 ### End of external library options
578 if test "x$host_vendor" != "xapple"; then
579 DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
580 DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
583 # Checks for programs.
584 PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
587 CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
588 PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
590 AX_PROG_CXX_FOR_BUILD
591 CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
597 OBJDUMP="${OBJDUMP:-objdump}"
599 # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
600 # there is no autoconf variable which will give
601 # the correct output format when doing cross compilation
602 # so we have to use our own var here
603 # defaults to the build side target_os
604 # and should be overridden for cross below (see android)
605 ffmpeg_target_os=$(tolower $(uname -s))
607 # host detection and setup
609 i*86*-linux-android*)
610 target_platform=target_android
614 ffmpeg_target_os=linux
624 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
631 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
641 ARCH="x86_64-freebsd"
657 PYTHON_LDFLAGS="-L${prefix}/lib -lpython2.6"
658 PYTHON_CPPFLAGS="-I${prefix}/include/python2.6"
659 PYTHON_SITE_PKG="${prefix}/lib/python2.6/site-packages"
660 PYTHON_NOVERSIONCHECK="no-check"
667 powerpc-apple-darwin*)
674 powerpc-*-linux-gnu*)
677 powerpc64-*-linux-gnu*)
678 ARCH="powerpc64-linux"
683 ffmpeg_target_os=linux
690 arm*-*linux-android*)
691 target_platform=target_android
695 ffmpeg_target_os=linux
705 AC_MSG_ERROR(unsupported host ($host))
709 check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
710 if test "x$check_sdl_arch" = "xi386" ; then
711 DARWIN_NATIVE_ARCH=-m32
712 elif test "x$check_sdl_arch" = "xx86_64" ; then
713 DARWIN_NATIVE_ARCH=-m64
715 AC_SUBST([DARWIN_NATIVE_ARCH])
717 if test "$target_platform" = "target_android" ; then
719 webserver_checkdepends=yes
720 CFLAGS="$CFLAGS -Wno-psabi"
721 CXXFLAGS="$CXXFLAGS -Wno-psabi"
722 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
725 case $use_platform in
727 target_platform=target_raspberry_pi
731 use_hardcoded_tables="yes"
734 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
735 USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
738 ffmpeg_target_os=linux
742 XBMC_SETUP_ARCH_DEFINES()
745 AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
746 if test "$GIT_REV" = ""; then
747 if test -f VERSION ; then
748 GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
749 elif test "$HAVE_GIT" = "yes"; then
750 GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
755 final_message="$final_message\n git Rev.:\t${GIT_REV}"
757 if test "$host_vendor" = "apple"; then
758 echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
760 SDL_DEFINES="$SDL_DEFINES -D'GIT_REV=\"$GIT_REV\"'"
763 if test "$build_shared_lib" = "yes"; then
764 final_message="$final_message\n Shared lib\tYes"
765 AC_SUBST(USE_LIBXBMC,1)
769 # platform debug flags
770 if test "$use_debug" = "yes"; then
771 final_message="$final_message\n Debugging:\tYes"
772 if test "$use_profiling" = "yes"; then
773 final_message="$final_message\n Profiling:\tYes"
774 DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
776 final_message="$final_message\n Profiling:\tNo"
777 DEBUG_FLAGS="-g -D_DEBUG -Wall"
780 final_message="$final_message\n Debugging:\tNo"
781 if test "$use_profiling" = "yes"; then
782 final_message="$final_message\n Profiling:\tYes"
783 DEBUG_FLAGS="-pg -DNDEBUG=1"
785 final_message="$final_message\n Profiling:\tNo"
786 DEBUG_FLAGS="-DNDEBUG=1"
789 CFLAGS="$CFLAGS $DEBUG_FLAGS"
790 CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"
793 if test "$use_optimizations" = "yes"; then
794 final_message="$final_message\n Optimization:\tYes"
795 if test "$target_platform" = "target_raspberry_pi"; then
799 CXXFLAGS="-O2 $CXXFLAGS"
803 final_message="$final_message\n Optimization:\tNo"
807 # platform specific flags
808 if echo "$ARCH" | grep -q "freebsd" ; then
809 LOCALBASE="${LOCALBASE:-/usr/local}"
810 CFLAGS="$CFLAGS -I$LOCALBASE/include"
811 CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
812 CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
813 LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
814 FFMPEG_EXTRACFLAGS="-I$LOCALBASE/include"
816 if test "$host_vendor" = "apple" ; then
817 # standard xbmc paths
818 INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
819 if test "$use_arch" != "arm"; then
820 LIBS="$LIBS -framework ApplicationServices"
821 LIBS="$LIBS -framework AudioUnit"
822 LIBS="$LIBS -framework AudioToolbox"
823 LIBS="$LIBS -framework Cocoa"
824 LIBS="$LIBS -framework CoreAudio"
825 LIBS="$LIBS -framework CoreVideo"
826 LIBS="$LIBS -framework CoreServices"
827 LIBS="$LIBS -framework CoreFoundation"
828 LIBS="$LIBS -framework DiskArbitration"
829 LIBS="$LIBS -framework IOKit"
830 LIBS="$LIBS -framework IOSurface"
831 LIBS="$LIBS -framework QuartzCore"
832 LIBS="$LIBS -framework SystemConfiguration"
834 USE_EXTERNAL_FFMPEG=1
835 elif test "$target_platform" = "target_raspberry_pi"; then
838 elif test "$use_arch" = "arm"; then
839 CFLAGS="$CFLAGS -mno-apcs-stack-check"
840 CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
841 FFMPEG_EXTRACFLAGS=""
842 if test "$use_tegra" = "yes"; then
843 # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support
844 SAVE_CFLAGS="$CFLAGS"
845 CFLAGS="-mfpu=vfpv3-d16"
847 [AC_LANG_SOURCE([int foo;])],
848 [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
849 CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
850 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mtune=cortex-a9 -mfpu=vfpv3-d16"
852 [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
853 CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
856 if test "$use_neon" = "yes"; then
857 CFLAGS="$CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
858 CXXFLAGS="$CXXFLAGS -mfpu=neon -mvectorize-with-neon-quad"
859 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mfpu=neon"
864 # Checks for library functions.
867 AC_FUNC_CLOSEDIR_VOID
868 AC_FUNC_ERROR_AT_LINE
870 AC_PROG_GCC_TRADITIONAL
872 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
876 # Boxee is apparently having compile problems
877 # if HAVE_REALLOC is defined. Sort this later.
879 AC_FUNC_SELECT_ARGTYPES
880 AC_FUNC_SETVBUF_REVERSED
888 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])
890 # Check for various sizes
891 AC_CHECK_SIZEOF([int])
892 AC_CHECK_SIZEOF([size_t])
894 # Check for intrinsics
895 AC_MSG_CHECKING([for __sync_add_and_fetch(temp, 1)])
896 AC_TRY_LINK([],[long* temp=0; long ret=__sync_add_and_fetch(temp, 1);],
897 [have_builtin_sync_add_and_fetch=yes],
898 [have_builtin_sync_add_and_fetch=no])
899 AC_MSG_RESULT($have_builtin_sync_add_and_fetch)
900 if test "x$have_builtin_sync_add_and_fetch" = "xyes"; then
901 AC_DEFINE(HAS_BUILTIN_SYNC_ADD_AND_FETCH, 1,
902 [Define to 1 if your compiler supports the __sync_add_and_fetch() intrinsic.])
905 AC_MSG_CHECKING([for __sync_sub_and_fetch(temp, 1)])
906 AC_TRY_LINK([],[long* temp=0; long ret=__sync_sub_and_fetch(temp, 1);],
907 [have_builtin_sync_sub_and_fetch=yes],
908 [have_builtin_sync_sub_and_fetch=no])
909 AC_MSG_RESULT($have_builtin_sync_sub_and_fetch)
910 if test "x$have_builtin_sync_sub_and_fetch" = "xyes"; then
911 AC_DEFINE(HAS_BUILTIN_SYNC_SUB_AND_FETCH, 1,
912 [Define to 1 if your compiler supports the __sync_sub_and_fetch() intrinsic.])
915 AC_MSG_CHECKING([for __sync_val_compare_and_swap(temp, 1, 1)])
916 AC_TRY_LINK([],[long *temp = 0; long ret=__sync_val_compare_and_swap(temp, 1, 1);],
917 [have_builtin_sync_val_compare_and_swap=yes],
918 [have_builtin_sync_val_compare_and_swap=no])
919 AC_MSG_RESULT($have_builtin_sync_val_compare_and_swap)
920 if test "x$have_builtin_sync_val_compare_and_swap" = "xyes"; then
921 AC_DEFINE(HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP, 1,
922 [Define to 1 if your compiler supports the __sync_val_compare_and_swap() intrinsic.])
925 # Check for u16string/u32string declarations
927 AC_CHECK_TYPES([std::u16string, std::u32string], [], [], [[#include <string>]])
928 AC_CHECK_TYPES([char16_t, char32_t])
929 AC_CHECK_SIZEOF([wchar_t])
932 # Add top source directory for all builds so we can use config.h
933 INCLUDES="-I\$(abs_top_srcdir) $INCLUDES"
935 # Check inotify availability
936 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
938 # Checks for boost headers using CXX instead of CC
940 AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
944 if test -z "$PYTHON_NOVERSIONCHECK"; then
945 AX_PYTHON_DEVEL([>= 2.4])
946 PYTHON_VERSION=$ac_python_version
949 if test -z "$PYTHON_VERSION"; then
950 AC_MSG_ERROR([Can't find a Python version.])
952 LIBS="$LIBS $PYTHON_LDFLAGS"
953 AC_MSG_NOTICE([Using Python $PYTHON_VERSION])
956 # Checks for platforms libraries.
957 if test "$use_gles" = "yes"; then
959 # GLES overwrites GL if both set to yes.
960 if test "$host_vendor" = "apple" ; then
961 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
962 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
963 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
965 if test "$target_platform" = "target_raspberry_pi"; then
966 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
967 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
968 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
969 LIBS="$LIBS -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
971 AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
972 AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
976 if test "$use_gl" = "yes"; then
977 if test "$host_vendor" = "apple" ; then
978 # linking to OpenGL.framework instead of libGL, libGLU so AC_CHECK_LIB will fail
979 LIBS="$LIBS -framework OpenGL"
980 AC_DEFINE([HAVE_LIBGL],[1],["Define to 1 if you have the `GL' library (-lGL)."])
981 AC_MSG_RESULT(== WARNING: OpenGL support is assumed.)
982 AC_DEFINE([HAVE_LIBGLU],[1],["Define to 1 if you have the `GLU' library (-lGLU)."])
983 AC_MSG_RESULT(== WARNING: OpenGLU support is assumed.)
984 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
986 AC_CHECK_LIB([GL], [main],, AC_MSG_ERROR($missing_library))
987 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
988 AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
991 AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
992 AC_CHECK_LIB([SDL_gfx],[main])
996 # platform common libraries
997 if test "$use_mysql" = "yes"; then
998 AC_PATH_PROG(MYSQL_CONFIG, mysql_config,"no")
999 if test "x$MYSQL_CONFIG" != "xno"; then
1000 AC_DEFINE([HAVE_MYSQL],[1],["Define to 1 if you have the `mysql' library (-lmysqlclient)."])
1001 INCLUDES="$INCLUDES `$MYSQL_CONFIG --include`"
1002 MYSQL_LIBS=`$MYSQL_CONFIG --libs`
1003 LIBS="$LIBS $MYSQL_LIBS"
1004 AC_SUBST(MYSQL_LIBS)
1006 AC_MSG_ERROR($missing_program)
1009 AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
1010 AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
1011 AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
1012 AC_INCLUDES_DEFAULT()
1013 [#include <mpeg2dec/mpeg2.h>])
1014 AC_CHECK_HEADER([mad.h],, AC_MSG_ERROR($missing_library))
1015 AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
1016 AC_CHECK_HEADER([samplerate.h],, AC_MSG_ERROR($missing_library))
1017 AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
1018 AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
1019 AC_CHECK_HEADER([libmodplug/modplug.h],, AC_MSG_ERROR($missing_library))
1020 AC_CHECK_HEADER([curl/curl.h],, AC_MSG_ERROR($missing_library))
1021 AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
1023 # we need to check for the header because if it exists we set the openssl
1024 # and gcrypt MT callback hooks. This is mostly so that libcurl operates
1025 # in MT manner correctly.
1026 AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
1027 AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
1028 if test "$gcrypt_headers_available" = "yes"; then
1029 # if we have the headers then we must have the lib
1030 AC_CHECK_LIB([gpg-error],[main],, AC_MSG_ERROR($missing_library))
1031 AC_CHECK_LIB([gcrypt],[gcry_control],, AC_MSG_ERROR($missing_library))
1032 AC_DEFINE([HAVE_GCRYPT],[1],[Define if we have gcrypt])
1034 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"))
1036 AC_CHECK_LIB([bz2], [main],, AC_MSG_ERROR($missing_library))
1037 AC_CHECK_LIB([jpeg], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1038 AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
1039 if echo "$ARCH" | grep -q freebsd; then
1040 AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
1041 AC_CHECK_LIB([pthread], [pthread_set_name_np],
1042 AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
1043 AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
1045 if test "$target_platform" != "target_android" ; then
1046 AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
1047 AC_CHECK_LIB([pthread], [pthread_setname_np],
1048 AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
1049 AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
1052 AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
1053 AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library))
1054 AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library))
1055 AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library))
1056 if test "$use_mysql" = "yes"; then
1057 AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
1059 AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
1060 AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library))
1061 AC_CHECK_LIB([tinyxml], [main],, AC_MSG_ERROR($missing_library))
1062 if test "$target_platform" = "target_android" ; then
1063 AC_CHECK_LIB([android], [main],, AC_MSG_ERROR($missing_library))
1064 AC_CHECK_LIB([log], [__android_log_vprint],, AC_MSG_ERROR($missing_library))
1065 AC_CHECK_LIB([jnigraphics], [main],, AC_MSG_ERROR($missing_library))
1067 PKG_CHECK_MODULES([FRIBIDI], [fribidi],
1068 [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
1069 AC_MSG_ERROR($missing_library))
1070 PKG_CHECK_MODULES([SQLITE3], [sqlite3],
1071 [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
1072 AC_MSG_ERROR($missing_library))
1073 PKG_CHECK_MODULES([PNG], [libpng],
1074 [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
1075 AC_MSG_ERROR($missing_library))
1076 PKG_CHECK_MODULES([PCRECPP], [libpcrecpp],
1077 [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
1078 AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
1079 AC_MSG_ERROR($missing_library))
1080 PKG_CHECK_MODULES([PCRE], [libpcre],
1081 [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
1082 AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
1083 AC_MSG_ERROR($missing_library))
1084 PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
1085 [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
1086 AC_MSG_ERROR($missing_library))
1087 PKG_CHECK_MODULES([FREETYPE2], [freetype2],
1088 [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
1089 AC_MSG_ERROR($missing_library))
1090 PKG_CHECK_MODULES([TAGLIB], [taglib >= 1.8],
1091 [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
1092 AC_MSG_ERROR($missing_library))
1094 if test "$use_optical_drive" = "yes"; then
1095 PKG_CHECK_MODULES([CDIO], [libcdio],
1096 [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
1097 AC_MSG_ERROR($missing_library))
1100 if test "$target_platform" = "target_android" ; then
1101 PKG_CHECK_MODULES([ZIP], [libzip],
1102 [INCLUDES="$INCLUDES $ZIP_CFLAGS"; LIBS="$LIBS $ZIP_LIBS"],
1103 AC_MSG_ERROR($missing_library))
1106 # check for libbluray
1107 AS_CASE([x$use_libbluray],
1109 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
1112 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], [use_libbluray="no"])
1115 AS_CASE([x$use_libbluray],
1117 INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
1118 XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
1119 AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
1120 AC_SUBST([HAVE_LIBBLURAY], 1)
1121 AC_CHECK_LIB([bluray], [bd_register_argb_overlay_proc],
1122 AC_CHECK_DECL([BD_EVENT_IDLE],
1123 AC_DEFINE([HAVE_LIBBLURAY_BDJ], 1, [System has libbluray library with bdj support]),,
1124 [[#include <libbluray/bluray.h>]]))
1126 AC_SUBST([HAVE_LIBBLURAY], 0)
1130 #Check to see if libs are needed for functions that are often built-in to libc
1131 AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
1132 AC_SEARCH_LIBS([dlopen],dl)
1133 AC_SEARCH_LIBS([clock_gettime],rt)
1134 AC_SEARCH_LIBS([dn_expand], resolv)
1135 AC_SEARCH_LIBS([_dn_expand], resolv)
1136 AC_SEARCH_LIBS([__dn_expand],resolv)
1138 # platform dependent libraries
1139 if test "$host_vendor" = "apple" ; then
1140 if test "$use_arch" != "arm"; then
1141 AC_CHECK_LIB([SDL], [main],, AC_MSG_ERROR($missing_library))
1142 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1145 if test "$target_platform" != "target_android" ; then
1146 AC_CHECK_LIB([jasper], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1148 if test "x$use_alsa" != "xno"; then
1149 PKG_CHECK_MODULES([ALSA], [alsa],
1150 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"; use_alsa=yes],
1151 AC_MSG_NOTICE($alsa_not_found); use_alsa=no)
1153 PKG_CHECK_MODULES([DBUS], [dbus-1],
1154 [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"; use_dbus=yes]; \
1155 AC_DEFINE([HAVE_DBUS],[1],["Define to 1 if dbus is installed"]),
1156 AC_MSG_NOTICE($missing_library); use_dbus=no)
1157 if test "x$use_sdl" != "xno"; then
1158 PKG_CHECK_MODULES([SDL], [sdl],
1159 [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
1160 AC_MSG_ERROR($missing_library))
1161 AC_CHECK_LIB([SDL_image], [main],, AC_MSG_ERROR($missing_library))
1162 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1166 XB_FIND_SONAME([MAD], [mad])
1167 XB_FIND_SONAME([OGG], [ogg])
1168 XB_FIND_SONAME([CURL], [curl])
1169 XB_FIND_SONAME([FLAC], [FLAC])
1170 XB_FIND_SONAME([VORBIS], [vorbis])
1171 XB_FIND_SONAME([VORBISFILE], [vorbisfile])
1172 XB_FIND_SONAME([MODPLUG], [modplug])
1173 XB_FIND_SONAME([ASS], [ass])
1174 XB_FIND_SONAME([MPEG2], [mpeg2])
1177 if test "x$use_libmp3lame" != "xno"; then
1178 XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1179 if test "x$use_libmp3lame" != "xno"; then
1180 AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1183 AS_CASE([x$use_libmp3lame],
1185 AC_SUBST([HAVE_LIBMP3LAME], 0)
1188 AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1189 AC_SUBST([HAVE_LIBMP3LAME], 1)
1192 if test "x$use_libvorbisenc" != "xno"; then
1193 XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1194 if test "x$use_libvorbisenc" != "xno"; then
1195 AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1198 AS_CASE([x$use_libvorbisenc],
1200 AC_SUBST([HAVE_LIBVORBISENC], 0)
1202 AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1203 AC_SUBST([HAVE_LIBVORBISENC], 1)
1208 if test "$use_webserver" = "yes"; then
1209 AC_CHECK_LIB([microhttpd], [main],, AC_MSG_ERROR($missing_library))
1213 if test "$use_optical_drive" = "yes"; then
1214 AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1218 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1219 PKG_CHECK_MODULES([ALSA], [alsa],
1220 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1221 AC_MSG_ERROR($missing_library))
1222 AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1225 AC_MSG_RESULT($alsa_disabled)
1229 if test "x$use_pulse" != "xno"; then
1230 if test "$host_vendor" = "apple" ; then
1231 if test "x$use_pulse" = "xyes"; then
1232 AC_MSG_ERROR($pulse_disabled)
1235 AC_MSG_RESULT($pulse_disabled)
1239 AC_CHECK_LIB([pulse],[main],,pulse_found="no")
1240 AC_CHECK_LIB([pulse-simple],[main],,pulse_found="no")
1242 if test "x$pulse_found" != "xno"; then
1244 elif test "x$use_pulse" = "xyes"; then
1245 AC_MSG_ERROR($pulse_not_found)
1249 AC_MSG_RESULT($pulse_not_found)
1253 AC_MSG_RESULT($pulse_disabled)
1258 if test "$host_vendor" = "apple" ; then
1260 AC_MSG_RESULT($hal_disabled)
1262 if test "$use_hal" = "yes"; then
1263 PKG_CHECK_MODULES([HAL], [hal],
1264 [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1265 use_hal=no;AC_MSG_RESULT($hal_not_found))
1266 PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1267 [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1268 use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1270 AC_MSG_RESULT($hal_disabled)
1272 if test "$use_hal" = "yes"; then
1273 AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1278 if test "$host_vendor" = "apple" ; then
1280 AC_MSG_RESULT($avahi_disabled)
1282 if test "$use_avahi" = "yes"; then
1283 AC_CHECK_LIB([avahi-common], [main],,
1284 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1285 if test "$use_avahi" = "yes"; then
1286 #either both libs or none
1287 AC_CHECK_LIB([avahi-client], [main],,
1288 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1291 AC_MSG_RESULT($avahi_disabled)
1296 if test "$use_mdnsembedded" != "no"; then
1297 AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1298 [if test "$use_mdnsembedded" = "yes"; then
1299 AC_MSG_ERROR($mdnsembedded_not_found)
1301 elif test "$use_mdnsembedded" != "no"; then
1302 AC_MSG_NOTICE($mdnsembedded_not_found)
1303 use_mdnsembedded="no"
1307 if test $use_mdnsembedded != "no"; then
1311 AC_MSG_RESULT($mdnsembedded_disabled)
1314 AC_SUBST(USE_MDNSEMBEDDED)
1317 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1318 AC_MSG_NOTICE($x11_enabled)
1319 PKG_CHECK_MODULES([X11], [x11],
1320 [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1321 AC_MSG_ERROR($missing_library))
1322 PKG_CHECK_MODULES([XEXT], [xext],
1323 [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1324 AC_MSG_ERROR($missing_library))
1325 AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1327 AC_MSG_RESULT($x11_disabled)
1331 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1333 AC_MSG_RESULT($xrandr_disabled)
1335 if test "$use_xrandr" = "yes" ; then
1336 AC_CHECK_LIB([Xrandr], [main],,
1337 use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1339 AC_MSG_RESULT($xrandr_disabled)
1344 if test "$use_waveform" = "yes"; then
1345 AC_MSG_NOTICE($waveform_enabled)
1348 AC_MSG_NOTICE($waveform_disabled)
1353 if test "$use_spectrum" = "yes"; then
1354 AC_MSG_NOTICE($spectrum_enabled)
1357 AC_MSG_NOTICE($spectrum_disabled)
1362 if test "$host_vendor" = "apple" ; then
1363 AC_MSG_NOTICE($goom_disabled)
1366 if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1367 AC_MSG_NOTICE($goom_enabled)
1370 AC_MSG_NOTICE($goom_disabled)
1376 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1377 AC_MSG_NOTICE($rsxs_disabled)
1380 AC_MSG_NOTICE($rsxs_enabled)
1382 # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1383 if test "$host_vendor" != "apple" ; then
1384 PKG_CHECK_MODULES([XT], [xt],
1385 [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1386 AC_MSG_ERROR($missing_library))
1387 PKG_CHECK_MODULES([XMU], [xmu],
1388 [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1389 AC_MSG_ERROR($missing_library))
1394 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1395 AC_MSG_NOTICE($fishbmc_disabled)
1399 AC_MSG_NOTICE($fishbmc_enabled)
1404 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1405 AC_MSG_NOTICE($projectm_disabled)
1409 AC_MSG_NOTICE($projectm_enabled)
1415 if [[ -f "addons/skin.touched/addon.xml" ]]; then
1416 use_skin_touched=yes
1418 AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1424 if test "x$use_ssh" = "xno"; then
1425 AC_MSG_NOTICE($ssh_disabled)
1428 AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1429 AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1433 if test "$use_librtmp" != "no"; then
1434 AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1435 [if test "$use_librtmp" = "yes"; then
1436 AC_MSG_ERROR($librtmp_not_found)
1437 elif test "$use_librtmp" != "no"; then
1438 AC_MSG_NOTICE($librtmp_not_found)
1442 if test "$use_librtmp" != "no"; then
1443 XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1445 if test "$use_librtmp" != "no"; then
1446 AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1449 AC_MSG_NOTICE($librtmp_disabled)
1453 if test "x$use_samba" != "xno"; then
1454 AC_CHECK_LIB([smbclient], [main],,
1455 use_samba=no;AC_MSG_ERROR($missing_library))
1458 AC_MSG_RESULT($samba_disabled)
1462 if test "x$use_samba" != "xno"; then
1463 AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1468 if test "$use_libnfs" != "no"; then
1469 AC_CHECK_HEADERS([nfsc/libnfs.h],,
1470 [if test "$use_libnfs" = "yes"; then
1471 AC_MSG_ERROR($libnfs_not_found)
1473 elif test "$use_libnfs" != "no"; then
1474 AC_MSG_NOTICE($libnfs_not_found)
1479 if test "$use_libnfs" != "no"; then
1480 XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1482 if test "$use_libnfs" != "no"; then
1483 AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1488 AC_MSG_NOTICE($libnfs_disabled)
1493 if test "x$use_libafpclient" != "xno"; then
1494 AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1495 [if test "x$use_libafpclient" = "xyes"; then
1496 AC_MSG_ERROR($libafpclient_not_found)
1497 elif test "x$use_libafpclient" != "xno"; then
1498 AC_MSG_NOTICE($libafpclient_not_found)
1499 use_libafpclient="no"
1502 if test "x$use_libafpclient" != "xno"; then
1503 XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1504 AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1508 AC_MSG_NOTICE($libafpclient_disabled)
1511 # libplist for airplay feature
1513 if test "$use_airplay" != "no"; then
1514 AC_CHECK_HEADER([plist/plist.h],,
1515 [if test "$use_airplay" = "yes"; then
1516 AC_MSG_ERROR($libplist_not_found)
1517 elif test "$use_airplay" != "no"; then
1518 AC_MSG_NOTICE($libplist_not_found)
1523 if test "$use_airplay" != "no"; then
1524 XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1526 AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1530 # libshairplay for AirTunes (prefered lib)
1532 if test "x$use_airtunes" != "xno"; then
1533 AC_CHECK_HEADERS([shairplay/raop.h],,
1534 [if test "x$use_airtunes" = "xyes"; then
1535 AC_MSG_ERROR($libshairplay_not_found)
1536 elif test "x$use_airtunes" != "xno"; then
1537 AC_MSG_NOTICE($libshairplay_not_found)
1542 if test "x$use_airtunes" != "xno"; then
1543 XB_FIND_SONAME([SHAIRPLAY], [shairplay], [use_airtunes])
1546 AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1547 [[#include <shairplay/raop.h>]])
1548 AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1551 #libshairport - as a fallback for AirTunes
1552 if test "x$USE_AIRTUNES" == "x0"; then
1553 AC_CHECK_HEADERS([shairport/shairport.h],,
1554 [if test "x$use_airtunes" = "xyes"; then
1555 AC_MSG_ERROR($libshairport_not_found)
1556 elif test "x$use_airtunes" != "xno"; then
1557 AC_MSG_NOTICE($libshairport_not_found)
1562 if test "x$use_airtunes" != "xno"; then
1563 XB_FIND_SONAME([SHAIRPORT], [shairport], [use_airtunes])
1565 AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1566 [[#include <shairport/shairport.h>]])
1567 AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1574 if test "$host_vendor" = "apple" ; then
1576 AC_MSG_NOTICE($libudev_disabled)
1578 if test "$use_libudev" = "auto"; then
1579 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1580 elif test "$use_libudev" = "yes" ; then
1581 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1583 AC_MSG_NOTICE($libudev_disabled)
1586 if test "x$use_libudev" != "xno"; then
1587 USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1588 AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1595 # if libudev is available, we don't need libusb
1596 if test "x$use_libudev" != "xno"; then
1598 AC_MSG_NOTICE($libusb_disabled_udev_found)
1600 if test "$host_vendor" = "apple" ; then
1602 AC_MSG_NOTICE($libusb_disabled)
1604 if echo "$ARCH" | grep -q freebsd ; then
1605 AC_CHECK_LIB([usb],[main],
1606 [use_libusb="yes";USB_LIBS="-lusb"],
1607 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1608 elif test "$use_libusb" = "auto"; then
1609 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1610 elif test "$use_libusb" = "yes"; then
1611 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1613 AC_MSG_NOTICE($libusb_disabled)
1616 if test "x$use_libusb" != "xno"; then
1617 USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1618 AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1625 if test "x$use_libcec" != "xno"; then
1626 # libcec is dyloaded, so we need to check for its headers and link any depends.
1627 if test "x$use_libcec" != "xno"; then
1628 if test "x$use_libcec" != "xauto"; then
1629 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1631 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1634 if test "x$use_libcec" != "xno"; then
1635 INCLUDES="$INCLUDES $CEC_CFLAGS"
1636 USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1637 XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1638 AC_MSG_NOTICE($libcec_enabled)
1641 AC_MSG_NOTICE($libcec_disabled)
1646 AC_MSG_NOTICE($libcec_disabled)
1650 if test "$use_libcap" != "no"; then
1651 AC_CHECK_HEADERS([sys/capability.h],,
1652 [if test "$use_libcap" = "yes"; then
1653 AC_MSG_ERROR($libcap_not_found)
1654 elif test "$use_libcap" != "no"; then
1655 AC_MSG_NOTICE($libcap_not_found)
1659 if test "$use_libcap" != "no"; then
1660 AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1662 if test "$use_libcap" != "no"; then
1663 AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1666 AC_MSG_NOTICE($libcap_disabled)
1669 ### External libraries checks
1671 # Hacks for supporting libav
1674 if test "$use_libav_hacks" = "yes"; then
1675 export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1677 AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1681 if test "$use_external_ffmpeg" = "yes"; then
1682 FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1684 PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1685 [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1686 AC_MSG_ERROR($missing_library))
1688 # in case the headers are in a custom directory
1689 SAVE_CPPFLAGS="$CPPFLAGS"
1690 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1692 AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1693 [AC_MSG_ERROR($missing_headers)])
1695 AC_MSG_NOTICE($external_ffmpeg_enabled)
1696 USE_EXTERNAL_FFMPEG=1
1697 AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1699 CPPFLAGS="$SAVE_CPPFLAGS"
1701 AC_MSG_NOTICE($external_ffmpeg_disabled)
1702 USE_EXTERNAL_FFMPEG=0
1705 echo "Checking for SWIG installation"
1706 AC_PATH_PROG(SWIG_EXE, swig, "none")
1707 if test "$SWIG_EXE" = "none"; then
1708 AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1709 if test "$SWIG20_EXE" != "none" ; then
1710 SWIG_EXE=$SWIG20_EXE
1713 if test "$SWIG_EXE" = "none"; then
1714 AC_MSG_ERROR($missing_program)
1716 final_message="$final_message\n SWIG Available:\tYes"
1718 echo "Checking for a jre installation"
1719 AC_PATH_PROG(JAVA_EXE, java, "none")
1720 if test "$JAVA_EXE" = "none"; then
1721 AC_MSG_ERROR($missing_program)
1723 final_message="$final_message\n JRE Available:\tYes"
1725 echo "Checking for doxygen installation"
1726 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1727 if test "$DOXYGEN_EXE" = "none"; then
1728 AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1729 final_message="$final_message\n Doxygen Available:\tNo"
1732 final_message="$final_message\n Doxygen Available:\tYes"
1737 if test "x$use_vdpau" != "xno"; then
1738 if test "$host_vendor" = "apple" ; then
1739 if test "x$use_vdpau" = "xyes"; then
1740 AC_MSG_ERROR([VDPAU not supported on this platform])
1743 AC_MSG_NOTICE($vdpau_disabled)
1748 AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1749 [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1750 [if test "x$use_vdpau" = "xyes"; then
1752 AC_MSG_ERROR([$vdpau_not_found])
1756 AC_MSG_RESULT($vdpau_not_found)
1761 AC_MSG_NOTICE($vdpau_disabled)
1765 if test "x$use_vaapi" != "xno"; then
1766 if test "$host_vendor" = "apple" ; then
1767 if test "x$use_vaapi" = "xyes"; then
1768 AC_MSG_ERROR([VAAPI not supported on this platform])
1771 AC_MSG_NOTICE($vaapi_disabled)
1775 initial_val=$use_vaapi
1776 AC_CHECK_LIB([va], main, :, use_vaapi=no)
1777 if test "x$use_vaapi" != "xno"; then
1778 AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1781 if test "x$use_vaapi" = "xno"; then
1782 if test "x$initial_val" = "xyes"; then
1783 AC_MSG_ERROR($vaapi_not_found)
1785 AC_MSG_RESULT($vaapi_not_found)
1789 AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1794 AC_MSG_NOTICE($vaapi_disabled)
1799 if test "x$use_crystalhd" != "xno"; then
1800 SAVE_CFLAGS="$CFLAGS"
1801 CFLAGS="-D__LINUX_USER__"
1802 AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1803 [ if test "x$use_crystalhd" = "xyes"; then
1804 AC_MSG_ERROR($crystalhd_not_found)
1807 AC_MSG_RESULT($crystalhd_not_found)
1811 CFLAGS="$SAVE_CFLAGS"
1812 if test "$host_vendor" != "apple"; then
1813 XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1815 if test "x$use_crystalhd" != "xno"; then
1816 SAVE_CFLAGS="$CFLAGS"
1817 CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1818 # check for new crystalhd lib
1820 [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1821 #include <libcrystalhd/bc_dts_defs.h>
1822 PBC_INFO_CRYSTAL bCrystalInfo;])],
1823 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ],
1824 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1825 CFLAGS="$SAVE_CFLAGS"
1829 AC_MSG_NOTICE($crystalhd_disabled)
1834 if test "x$use_vtbdecoder" != "xno"; then
1835 if test "$host_vendor" = "apple" ; then
1836 HAVE_VIDEOTOOLBOXDECODER=1
1837 AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1838 AC_MSG_NOTICE($vtbdecoder_enabled)
1840 if test "x$use_vtbdecoder" = "xyes"; then
1841 AC_MSG_ERROR([VTB Decoder not supported on this platform])
1844 AC_MSG_NOTICE($vtbdecoder_disabled)
1848 AC_MSG_NOTICE($vtbdecoder_disabled)
1852 if test "$host_vendor" = "apple" ; then
1855 AC_MSG_NOTICE($openmax_disabled)
1856 elif test "$target_platform" = "target_raspberry_pi"; then
1859 AC_MSG_NOTICE($openmax_disabled)
1861 if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1862 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1863 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1864 use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1865 elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1866 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1867 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1868 AC_MSG_ERROR($openmax_not_found))
1870 AC_MSG_NOTICE($openmax_disabled)
1876 # yajl version check (yajl_version.h was added in yajl 2.0)
1877 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1878 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1881 # additional internal players
1882 case $add_players in
1884 AC_CHECK_HEADER([amplayer/player_error.h],, AC_MSG_ERROR($missing_headers))
1885 XB_ADD_PLAYER([AMLPLAYER], [amlplayer])
1888 XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1892 # additional internal codecs
1895 AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1896 XB_ADD_CODEC([LIBAMCODEC], [amcodec])
1899 LIBS+="-L${prefix}/opt/android-libs -lstdc++ -lutils -lcutils -lstagefright -lbinder -lui -lgui"
1900 XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright])
1905 # platform specific bin utilities
1906 if test "$build_vendor" != "apple" ; then
1907 AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1908 if test "$HAVE_GAWK" = "no" ; then
1909 AC_MSG_ERROR($missing_program)
1913 if test "$use_arch" != "arm" ; then
1914 AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1915 if test "$HAVE_CMAKE" = "no" ; then
1916 AC_MSG_ERROR($missing_program)
1920 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
1921 if test "$HAVE_GPERF" = "no" ; then
1922 AC_MSG_ERROR($missing_program)
1925 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
1926 if test "$HAVE_UNZIP" = "no" ; then
1927 AC_MSG_ERROR($missing_program)
1930 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
1931 if test "$HAVE_ZIP" = "no" ; then
1932 AC_MSG_ERROR($missing_program)
1935 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
1936 AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
1937 if test "$HAVE_NASM" = "no" ; then
1938 AC_MSG_ERROR($missing_program)
1942 # Checks for header files.
1946 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
1947 malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
1948 strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
1949 sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
1950 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
1952 # Checks for typedefs, structures, and compiler characteristics.
1968 AC_CHECK_MEMBERS([struct stat.st_rdev])
1977 if test "$cross_compiling" = "yes"; then
1978 final_message="$final_message\n Crosscomp.:\tYes"
1979 if [[ -d "$NATIVE_ROOT" ]]; then
1980 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
1981 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
1982 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
1983 if test "$host_vendor" != "apple" ; then
1984 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
1986 final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
1989 final_message="$final_message\n Crosscomp.:\tNo"
1992 final_message="$final_message\n target ARCH:\t$use_arch"
1993 final_message="$final_message\n target CPU:\t$use_cpu"
1995 if test "$use_gles" = "yes"; then
1996 final_message="$final_message\n OpenGLES:\tYes"
2001 if test "$use_gl" = "yes"; then
2002 final_message="$final_message\n OpenGL:\tYes"
2005 final_message="$final_message\n OpenGL:\tNo (Very Slow)"
2006 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2011 if test "$use_alsa" = "yes"; then
2013 AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2014 final_message="$final_message\n ALSA:\t\tYes"
2017 final_message="$final_message\n ALSA:\t\tNo"
2020 if test "$use_dbus" = "yes"; then
2021 final_message="$final_message\n DBUS:\t\tYes"
2023 final_message="$final_message\n DBUS:\t\tNo"
2026 if test "x$use_vdpau" != "xno"; then
2027 final_message="$final_message\n VDPAU:\tYes"
2029 final_message="$final_message\n VDPAU:\tNo"
2032 if test "x$use_vaapi" != "xno"; then
2033 final_message="$final_message\n VAAPI:\tYes"
2035 final_message="$final_message\n VAAPI:\tNo"
2038 if test "x$use_crystalhd" != "xno"; then
2039 final_message="$final_message\n CrystalHD:\tYes"
2041 final_message="$final_message\n CrystalHD:\tNo"
2044 if test "x$use_vtbdecoder" != "xno"; then
2045 final_message="$final_message\n VTBDecoder:\tYes"
2047 final_message="$final_message\n VTBDecoder:\tNo"
2050 if test "$use_openmax" != "no"; then
2051 final_message="$final_message\n OpenMax:\tYes"
2053 final_message="$final_message\n OpenMax:\tNo"
2056 if test "$use_joystick" = "yes"; then
2057 final_message="$final_message\n Joystick:\tYes"
2058 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2060 final_message="$final_message\n Joystick:\tNo"
2063 if test "$use_xrandr" = "yes"; then
2064 final_message="$final_message\n XRandR:\tYes"
2067 final_message="$final_message\n XRandR:\tNo"
2071 if test "$use_waveform" = "yes"; then
2072 final_message="$final_message\n Waveform:\tYes"
2074 final_message="$final_message\n Waveform:\tNo"
2077 if test "$use_spectrum" = "yes"; then
2078 final_message="$final_message\n Spectrum:\tYes"
2080 final_message="$final_message\n Spectrum:\tNo"
2083 if test "$use_goom" = "yes"; then
2084 final_message="$final_message\n GOOM:\t\tYes"
2086 final_message="$final_message\n GOOM:\t\tNo"
2089 if test "$use_rsxs" = "yes"; then
2090 final_message="$final_message\n RSXS:\t\tYes"
2092 final_message="$final_message\n RSXS:\t\tNo"
2095 if test "$use_fishbmc" = "yes"; then
2096 final_message="$final_message\n FishBMC:\tYes"
2098 final_message="$final_message\n FishBMC:\tNo"
2101 if test "$use_projectm" = "yes"; then
2102 final_message="$final_message\n ProjectM:\tYes"
2104 final_message="$final_message\n ProjectM:\tNo"
2107 if test "$use_skin_touched" = "yes"; then
2108 final_message="$final_message\n Skin Touched:\tYes"
2110 final_message="$final_message\n Skin Touched:\tNo"
2113 if test "$use_x11" = "yes"; then
2114 final_message="$final_message\n X11:\t\tYes"
2116 final_message="$final_message\n X11:\t\tNo"
2119 if test "$use_libbluray" = "yes"; then
2120 final_message="$final_message\n Bluray:\tYes"
2122 final_message="$final_message\n Bluray:\tNo"
2125 if test "x$use_texturepacker" != "xno"; then
2126 final_message="$final_message\n TexturePacker:Yes"
2129 final_message="$final_message\n TexturePacker:No"
2133 if test "$use_mid" = "yes"; then
2134 final_message="$final_message\n MID Support:\tYes"
2135 SDL_DEFINES="$SDL_DEFINES -DMID"
2137 final_message="$final_message\n MID Support:\tNo"
2142 if test "x$use_ccache" != "xno"; then
2143 AC_PATH_PROG(CCACHE,ccache,none)
2144 if test "$ac_cv_path_CCACHE" = "none"; then
2145 if test "x$use_ccache" = "xyes"; then
2146 AC_MSG_ERROR([ccache not found.]);
2148 AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2149 final_message="$final_message\n ccache:\tNo"
2152 CC="$ac_cv_path_CCACHE $CC"
2153 CXX="$ac_cv_path_CCACHE $CXX"
2154 AC_MSG_NOTICE(enabling ccache)
2155 final_message="$final_message\n ccache:\tYes"
2158 final_message="$final_message\n ccache:\tNo"
2161 if test "$use_alsa" = "yes"; then
2162 final_message="$final_message\n ALSA Support:\tYes"
2164 final_message="$final_message\n ALSA Support:\tNo"
2167 if test "x$use_pulse" != "xno"; then
2168 XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2169 final_message="$final_message\n PulseAudio:\tYes"
2171 XBMC_STANDALONE_SH_PULSE=/dev/null
2172 final_message="$final_message\n PulseAudio:\tNo"
2175 if test "$use_hal" = "yes"; then
2176 final_message="$final_message\n HAL Support:\tYes"
2178 final_message="$final_message\n HAL Support:\tNo"
2182 if test "$use_dvdcss" = "yes"; then
2183 AC_MSG_NOTICE($dvdcss_enabled)
2184 final_message="$final_message\n DVDCSS:\tYes"
2186 SKIP_CONFIG_DVDCSS=0
2187 DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2189 AC_MSG_NOTICE($dvdcss_disabled)
2190 final_message="$final_message\n DVDCSS:\tNo"
2192 SKIP_CONFIG_DVDCSS=1
2193 DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2195 if test "$host_vendor" = "apple"; then
2196 DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2199 # Google Test Framework
2200 if test "$configure_gtest" = "yes"; then
2201 AC_MSG_NOTICE($gtest_enabled)
2202 final_message="$final_message\n Google Test Framework Configured:\tYes"
2206 AC_MSG_NOTICE($gtest_disabled)
2207 final_message="$final_message\n Google Test Framework Configured:\tNo"
2212 if test "$use_avahi" = "yes"; then
2213 final_message="$final_message\n Avahi:\tYes"
2215 final_message="$final_message\n Avahi:\tNo"
2218 if test "$use_mdnsembedded" != "no"; then
2219 final_message="$final_message\n mDNSEmbedded:\tYes"
2221 final_message="$final_message\n mDNSEmbedded:\tNo"
2224 if test "$use_nonfree" = "yes"; then
2225 final_message="$final_message\n Non-free:\tYes"
2227 AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2230 final_message="$final_message\n Non-free:\tNo"
2233 if test "$use_asap" = "yes"; then
2234 AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2235 if test "$HAVE_GDC" = "no"; then
2236 AC_MSG_ERROR($missing_program);
2238 AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2239 if test "$HAVE_FPC" = "no"; then
2240 AC_MSG_ERROR($missing_program);
2243 AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2244 final_message="$final_message\n ASAP Codec:\tYes"
2247 final_message="$final_message\n ASAP Codec:\tNo"
2250 if test "$use_mysql" = "yes"; then
2251 final_message="$final_message\n MySQL:\tYes"
2254 final_message="$final_message\n MySQL:\tNo"
2257 if test "$use_webserver" = "yes"; then
2258 final_message="$final_message\n Webserver:\tYes"
2261 final_message="$final_message\n Webserver:\tNo"
2265 if test "$use_libssh" != "no"; then
2266 final_message="$final_message\n libssh support:\tYes"
2268 final_message="$final_message\n libssh support:\tNo"
2271 if test "$use_librtmp" != "no"; then
2272 final_message="$final_message\n libRTMP support:\tYes"
2274 final_message="$final_message\n libRTMP support:\tNo"
2277 if test "x$use_samba" != "xno"; then
2278 final_message="$final_message\n libsmbclient support:\tYes"
2280 final_message="$final_message\n libsmbclient support:\tNo"
2283 if test "$use_libnfs" != "no"; then
2284 final_message="$final_message\n libnfs client support:Yes"
2286 final_message="$final_message\n libnfs client support:No"
2289 if test "x$use_libafpclient" != "xno"; then
2290 final_message="$final_message\n libafpclient support:\tYes"
2292 final_message="$final_message\n libafpclient support:\tNo"
2295 if test "$use_airplay" != "no"; then
2296 final_message="$final_message\n AirPlay support:\tYes"
2298 final_message="$final_message\n AirPLay support:\tNo"
2301 if test "x$use_airtunes" != "xno"; then
2302 if test "x$USE_LIBSHAIRPORT" == "x1"; then
2303 final_message="$final_message\n AirTunes support (libshairplay):\tYes"
2305 final_message="$final_message\n AirTunes support (libshairport):\tYes"
2308 final_message="$final_message\n AirTunes support:\tNo"
2311 if test "x$use_upnp" != "xno"; then
2312 final_message="$final_message\n UPnP support:\t\tYes"
2314 AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2317 final_message="$final_message\n UPnP support:\t\tNo"
2320 if test "$use_optical_drive" = "yes"; then
2321 final_message="$final_message\n Optical drive:\tYes"
2323 final_message="$final_message\n Optical drive:\tNo"
2326 if test "x$use_libudev" != "xno"; then
2327 final_message="$final_message\n libudev support:\tYes"
2329 final_message="$final_message\n libudev support:\tNo"
2332 if test "x$use_libusb" != "xno"; then
2333 final_message="$final_message\n libusb support:\tYes"
2335 final_message="$final_message\n libusb support:\tNo"
2338 if test "x$use_libcec" != "xno"; then
2339 final_message="$final_message\n libcec support:\tYes"
2341 final_message="$final_message\n libcec support:\tNo"
2344 if test "x$use_libmp3lame" != "xno"; then
2345 final_message="$final_message\n libmp3lame support:\tYes"
2347 final_message="$final_message\n libmp3lame support:\tNo"
2350 if test "x$use_libvorbisenc" != "xno"; then
2351 final_message="$final_message\n libvorbisenc support:\tYes"
2353 final_message="$final_message\n libvorbisenc support:\tNo"
2356 if test "x$use_libcap" != "xno"; then
2357 final_message="$final_message\n libcap support:\tYes"
2359 final_message="$final_message\n libcap support:\tNo"
2362 if test "x$add_players" != "xno"; then
2363 final_message="$final_message\n additional players:\tYes, $add_players"
2365 final_message="$final_message\n additional players:\tNo"
2368 if test "x$add_codecs" != "xno"; then
2369 final_message="$final_message\n additional codecs:\tYes, $add_codecs"
2371 final_message="$final_message\n additional codecs:\tNo"
2374 ### External libraries messages
2376 if test "$use_external_ffmpeg" = "yes"; then
2377 final_message="$final_message\n External FFmpeg:\tYes"
2379 final_message="$final_message\n External FFmpeg:\tNo"
2382 if test "$host_vendor" = "apple" ; then
2383 # built internal but referenced as external, we link directly to them.
2384 # this MUST be the last thing before OUTPUT_FILES as they do not
2385 # exist until after we build FFMpeg.
2386 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2387 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2388 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2389 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2390 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2391 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2392 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2396 DISABLE_PVR_ADDON_CONFIG=1
2397 if [[ -f "pvr-addons/Makefile.am" ]]; then
2398 final_message="$final_message\n PVR add-ons:\t\tYes"
2400 DISABLE_PVR_ADDON_CONFIG=0
2402 final_message="$final_message\n PVR add-ons:\t\tNo"
2405 OUTPUT_FILES="Makefile \
2407 addons/skin.confluence/media/Makefile \
2409 xbmc/cdrip/Makefile \
2410 xbmc/cores/Makefile \
2411 xbmc/cores/VideoRenderers/Makefile \
2412 xbmc/cores/dvdplayer/Makefile \
2414 lib/libdvd/Makefile \
2415 xbmc/cores/DllLoader/Makefile \
2416 xbmc/cores/DllLoader/exports/Makefile \
2417 xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2418 xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2419 xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2420 xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2421 xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2422 xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2423 xbmc/cores/AudioEngine/Makefile \
2424 xbmc/cores/paplayer/Makefile \
2425 xbmc/cores/amlplayer/Makefile \
2426 xbmc/cores/omxplayer/Makefile \
2427 lib/timidity/Makefile \
2428 lib/xbadpcm/Makefile \
2430 lib/nosefart/Makefile \
2431 lib/libsidplay2/Makefile \
2432 lib/vgmstream/Makefile \
2433 lib/snesapu/SNES/SNESAPU/Makefile \
2434 lib/stsound/StSoundLibrary/Makefile \
2435 xbmc/cores/playercorefactory/Makefile \
2436 xbmc/music/karaoke/Makefile \
2438 xbmc/guilib/Makefile \
2439 xbmc/interfaces/Makefile \
2440 xbmc/network/Makefile \
2441 xbmc/network/upnp/Makefile \
2442 lib/libRTV/Makefile \
2443 lib/libexif/Makefile \
2444 lib/libXDAAP/Makefile \
2445 lib/cmyth/Makefile \
2446 lib/libhdhomerun/Makefile \
2447 lib/libsquish/Makefile \
2448 lib/cximage-6.0/Makefile \
2449 lib/libUPnP/Makefile \
2450 xbmc/DllPaths_generated.h \
2451 xbmc/DllPaths_generated_android.h \
2452 xbmc/freebsd/Makefile \
2453 xbmc/linux/Makefile \
2454 xbmc/filesystem/Makefile \
2455 xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2456 xbmc/visualizations/XBMCProjectM/Makefile \
2457 xbmc/visualizations/Goom/Makefile \
2458 xbmc/visualizations/OpenGLSpectrum/Makefile \
2459 xbmc/visualizations/fishBMC/Makefile \
2460 xbmc/visualizations/WaveForm/Makefile \
2461 lib/addons/library.xbmc.addon/Makefile \
2462 lib/addons/library.xbmc.codec/Makefile \
2463 lib/addons/library.xbmc.gui/Makefile \
2464 lib/addons/library.xbmc.pvr/Makefile \
2465 xbmc/visualizations/EGLHelpers/Makefile \
2466 tools/Linux/xbmc.sh \
2467 tools/Linux/xbmc-standalone.sh \
2468 tools/TexturePacker/Makefile \
2469 tools/EventClients/Clients/OSXRemote/Makefile \
2470 xbmc/peripherals/bus/Makefile \
2471 xbmc/peripherals/devices/Makefile \
2472 xbmc/android/activity/Makefile \
2473 xbmc/android/loader/Makefile \
2474 xbmc/android/jni/Makefile \
2475 xbmc/utils/Makefile \
2476 xbmc/main/Makefile \
2477 project/cmake/xbmc-config.cmake"
2479 if test "$use_skin_touched" = "yes"; then
2480 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2483 OUTPUT_FILES="$OUTPUT_FILES \
2484 xbmc/interfaces/python/Makefile \
2485 xbmc/interfaces/python/test/Makefile"
2487 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2488 # .dummy.am does nothing.
2489 AC_CONFIG_FILES([.dummy])
2491 AC_CONFIG_FILES([${OUTPUT_FILES}])
2492 OUTPUT_FILES="$OUTPUT_FILES \
2498 AC_SUBST(CXX_FOR_BUILD)
2499 AC_SUBST(CC_FOR_BUILD)
2500 AC_SUBST(CFLAGS_FOR_BUILD)
2501 AC_SUBST(CXXFLAGS_FOR_BUILD)
2502 AC_SUBST(LDFLAGS_FOR_BUILD)
2503 AC_SUBST(SDL_DEFINES)
2504 AC_SUBST(BUILD_DVDCSS)
2505 AC_SUBST(DISABLE_WAVEFORM)
2506 AC_SUBST(DISABLE_SPECTRUM)
2507 AC_SUBST(DISABLE_GOOM)
2508 AC_SUBST(DISABLE_RSXS)
2509 AC_SUBST(DISABLE_FISHBMC)
2510 AC_SUBST(DISABLE_PROJECTM)
2511 AC_SUBST(USE_SKIN_TOUCHED)
2512 AC_SUBST(USE_EXTERNAL_FFMPEG)
2513 AC_SUBST(USE_LIBAV_HACKS)
2514 AC_SUBST(PYTHON_VERSION)
2515 AC_SUBST(OUTPUT_FILES)
2516 AC_SUBST(HAVE_XBMC_NONFREE)
2517 AC_SUBST(USE_ASAP_CODEC)
2518 AC_SUBST(LIBCURL_BASENAME)
2519 AC_SUBST(LIBFLAC_BASENAME)
2520 AC_SUBST(LIBVORBISFILE_BASENAME)
2521 AC_SUBST(LIBMODPLUG_BASENAME)
2522 AC_SUBST(LIBMAD_BASENAME)
2523 AC_SUBST(LIBOGG_BASENAME)
2524 AC_SUBST(LIBVORBISENC_BASENAME)
2525 AC_SUBST(LIBVORBIS_BASENAME)
2526 AC_SUBST(LIBASS_BASENAME)
2527 AC_SUBST(LIBMEPG2_BASENAME)
2528 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2529 AC_SUBST(USE_OPENGL)
2530 AC_SUBST(USE_OPENGLES)
2533 AC_SUBST(USE_CRYSTALHD)
2534 AC_SUBST(USE_LIBSMBCLIENT)
2535 AC_SUBST(USE_LIBNFS)
2536 AC_SUBST(USE_LIBAFPCLIENT)
2537 AC_SUBST(USE_AIRPLAY)
2538 AC_SUBST(USE_OPENMAX)
2540 AC_SUBST(USE_XRANDR)
2542 AC_SUBST(USE_TEXTUREPACKER)
2543 AC_SUBST(USE_AIRTUNES)
2544 AC_SUBST(USE_LIBUDEV)
2545 AC_SUBST(USE_LIBUSB)
2546 AC_SUBST(USE_LIBCEC)
2548 AC_SUBST(USE_WEB_SERVER)
2550 AC_SUBST(USE_OMXLIB)
2551 AC_SUBST(USE_ANDROID)
2552 AC_SUBST(GTEST_CONFIGURED)
2553 AC_SUBST(USE_DOXYGEN)
2554 AC_SUBST(USE_PVR_ADDONS)
2556 # pushd and popd are not available in other shells besides bash, so implement
2557 # our own pushd/popd functions
2562 if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2564 XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2567 AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2572 if [[ -n "$XB_DIRSTACK" ]]; then
2573 XB_DIRSTACK="${XB_DIRSTACK#* }"
2574 cd "${XB_DIRSTACK%% *}"
2577 AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2581 # Function to run the configure scripts in our submodules
2582 # Consists of three paramaters, the path to the submodule, the configure command
2583 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2584 # running the script, anything else if not.
2585 AC_DEFUN([XB_CONFIG_MODULE],[
2586 AC_CONFIG_COMMANDS_POST([
2587 if [[ $3 != "1" ]]; then
2588 if [[ -d $1 ]]; then
2591 if [[ $? -ne 0 ]]; then
2593 AC_MSG_ERROR([[Submodule $1 failed to configure]])
2598 AC_MSG_ERROR([[Submodule $1 does not exist]])
2601 AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2606 XB_CONFIG_MODULE([lib/ffmpeg], [
2607 if test "$host_vendor" = "apple" ; then
2608 ffmpg_config="--target-os=$ffmpeg_target_os"
2609 # handle disables first, we do individual enables later
2610 ffmpg_config="$ffmpg_config --disable-muxers --disable-encoders"
2611 ffmpg_config="$ffmpg_config --disable-devices --disable-doc"
2612 ffmpg_config="$ffmpg_config --disable-ffplay --disable-ffmpeg"
2613 ffmpg_config="$ffmpg_config --disable-ffprobe --disable-ffserver"
2614 ffmpg_config="$ffmpg_config --enable-vda --disable-crystalhd"
2615 ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2617 # handle conditional enables/disables
2618 if test "$use_debug" = "no"; then
2619 ffmpg_config="$ffmpg_config --disable-debug"
2621 if test "$use_cpu" != "no"; then
2622 ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2624 if test "$use_arch" != "no"; then
2625 ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2627 if test "$use_arch" = "arm"; then
2628 ffmpg_config="$ffmpg_config --enable-pic"
2629 ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2630 if test "$use_neon" = "yes"; then
2631 ffmpg_config="$ffmpg_config --enable-neon"
2633 ffmpg_config="$ffmpg_config --disable-neon"
2636 ffmpg_config="$ffmpg_config --disable-amd3dnow"
2638 if test "$use_ffmpeg_libvorbis" = "yes"; then
2639 ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2641 ffmpg_config="$ffmpg_config --disable-libvorbis"
2643 if test "$have_gnutls" = "yes"; then
2644 ffmpg_config="$ffmpg_config --enable-gnutls"
2647 # handle individual enables
2648 ffmpg_config="$ffmpg_config --enable-gpl"
2649 ffmpg_config="$ffmpg_config --enable-postproc"
2650 ffmpg_config="$ffmpg_config --enable-static --enable-pthreads"
2651 ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2652 ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2653 ffmpg_config="$ffmpg_config --enable-protocol=http"
2654 ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2656 # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2659 ffmpg_config="$ffmpg_config --cc=clang" ;;
2661 ffmpg_config="$ffmpg_config --cc=$CC" ;;
2664 # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2665 FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2667 LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2669 # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2670 # dependency files in the right place, replace it with something that works
2673 sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2676 # ffmpeg will use yasm found at ${prefix}/bin during configure
2677 # but then hardcodes 'yasm' in config.mak, fix it.
2678 sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2679 sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2680 sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2685 LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2687 --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2689 `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2690 `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2691 `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2692 `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2693 `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2694 --target-os=$ffmpeg_target_os \
2696 --enable-muxer=spdif \
2697 --enable-muxer=adts \
2698 --enable-muxer=asf \
2699 --enable-muxer=ipod \
2700 --disable-encoders \
2701 --enable-encoder=ac3 \
2702 --enable-encoder=aac \
2703 --enable-encoder=wmav2 \
2704 `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2705 --disable-decoder=mpeg_xvmc \
2709 --disable-ffserver \
2711 --disable-crystalhd \
2716 `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2717 `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2718 `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2719 --enable-protocol=http \
2720 `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2722 --enable-runtime-cpudetect \
2723 `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2724 `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2725 `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2726 else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2727 `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2729 sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2730 sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2732 ], [$USE_EXTERNAL_FFMPEG])
2734 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2739 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2740 --host=$host_alias \
2741 --build=$build_alias \
2742 --target=$target_alias \
2746 ], [$SKIP_CONFIG_DVDCSS])
2748 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2750 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src" \
2751 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2752 --host=$host_alias \
2753 --build=$build_alias \
2754 --target=$target_alias \
2760 $MAKE dvdread-config &&
2761 mkdir -p `pwd`/../includes/dvdread
2762 cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2763 cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2766 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2768 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes" \
2769 --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2770 --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
2771 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2772 --host=$host_alias \
2773 --build=$build_alias \
2774 --target=$target_alias \
2780 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2782 rm -f CMakeCache.txt && \
2783 CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2784 -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF \
2785 -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}" \
2786 -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2787 -DCMAKE_INSTALL_PREFIX="${prefix}" \
2788 -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}" \
2789 -DINCLUDE_INSTALL_DIR:PATH="${includedir}" \
2790 -DLIB_INSTALL_DIR:PATH="${libdir}" \
2791 -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" \
2792 -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2793 if test "$host_vendor" = "apple" ; then
2794 # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2795 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2796 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2797 sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2800 ], [$DISABLE_PROJECTM])
2802 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2805 CXXFLAGS="$CXXFLAGS" \
2806 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2807 --host=$host_alias \
2808 --build=$build_alias \
2809 --target=$target_alias \
2815 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2816 if test "$host_vendor" = "apple"; then
2817 TEMPCFLAGS="${CFLAGS} -fgnu89-inline";
2819 TEMPCFLAGS="$CFLAGS";
2824 CFLAGS="$TEMPCFLAGS" \
2825 CXXFLAGS="$CXXFLAGS" \
2826 `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2827 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2828 --host=$host_alias \
2829 --build=$build_alias \
2830 --target=$target_alias \
2831 --without-xscreensaver \
2834 --disable-fieldlines \
2838 --disable-hyperspace \
2841 if echo "$ARCH" | grep -q freebsd ; then
2842 sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2846 XB_CONFIG_MODULE([lib/cpluff], [
2847 ./configure --disable-nls \
2848 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2849 --host=$host_alias \
2850 --build=$build_alias \
2851 --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2852 #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"
2855 XB_CONFIG_MODULE([lib/gtest], [
2860 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2861 --host=$host_alias \
2862 --build=$build_alias \
2863 --target=$target_alias \
2867 ], [$SKIP_CONFIG_GTEST])
2869 XB_CONFIG_MODULE([pvr-addons], [
2871 --prefix="${prefix}" \
2872 --host=$host_alias \
2873 --build=$build_alias \
2874 --target=$target_alias \
2878 CXXFLAGS="$CXXFLAGS"
2879 ], [$DISABLE_PVR_ADDON_CONFIG])
2883 final_message="$final_message\n prefix:\t$prefix\n$dashes"
2884 echo -e "$final_message\n"