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 # workaround for autotools that don't set this
22 abs_top_srcdir=${abs_top_srcdir=$(cd $srcdir; pwd)}
24 # check for enabling additional players
25 AC_DEFUN([XB_ADD_PLAYER],
27 AC_MSG_CHECKING([for $2])
31 AC_DEFINE([HAS_$1], 1, [using $2])
32 AC_MSG_RESULT([enabling $2])
35 AC_MSG_RESULT([$2 is not enabled])
39 # check for enabling additional codecs
40 AC_DEFUN([XB_ADD_CODEC],
42 AC_MSG_CHECKING([for $2])
47 AC_DEFINE([HAS_$1], 1, [using $2])
48 AC_MSG_RESULT([enabling $2])
51 AC_MSG_RESULT([$2 is not enabled])
55 # check for library basenames
56 AC_DEFUN([XB_FIND_SONAME],
58 if echo "$host" | grep -q freebsd ; then
59 AC_MSG_CHECKING([for lib$2 soname])
60 $1_SONAME=[`ldconfig -r | sed -n "s;.* \(/.*lib$2\.so.*\)$;\1;p" | head -n 1`]
61 if test x$$1_SONAME != x ; then
62 $1_SONAME=[`basename $$1_SONAME`]
64 elif [[ "$host_vendor" != "apple" ]]; then
65 AC_MSG_CHECKING([for lib$2 soname])
66 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-M 2>/dev/null | grep "^LOAD.*$2" | awk '{V=2; print $V}')
67 if [[ -z $$1_FILENAME ]]; then
68 #try gold linker syntax
69 $1_FILENAME=$($CC -nostdlib -o /dev/null $LDFLAGS -l$2 -Wl,-t 3>&1 1>&2 2>&3 | grep "lib$2")
71 if [[ ! -z $$1_FILENAME ]]; then
72 $1_SONAME=$($OBJDUMP -p $$1_FILENAME | grep "SONAME.*$2" | awk '{V=2; print $V}')
75 AC_MSG_CHECKING([for lib$2 dylib])
76 gcc_lib_path=[`$CC -print-search-dirs 2>/dev/null | fgrep libraries: | sed 's/[^=]*=\(.*\)/\1/' | sed 's/:/ /g'`]
77 env_lib_path=[`echo $LDFLAGS | sed 's/-L[ ]*//g'`]
78 if test "$cross_compiling" = yes; then
81 host_lib_path="/usr/lib /usr/local/lib"
83 for path in $gcc_lib_path $env_lib_path $host_lib_path; do
84 lib=[`ls -- $path/lib$2.dylib 2>/dev/null`]
85 if test x$lib != x; then
86 # we want the path/name that is embedded in the dylib
87 $1_SONAME=[`otool -L $lib | grep -v lib$2.dylib | grep lib$2 | awk '{V=1; print $V}'`]
88 $1_SONAME=[`basename $$1_SONAME`]
92 if [[ -z "$$1_SONAME" ]]; then
94 if test -z "$3" || test "x${$3}" = "xyes"; then
95 AC_MSG_ERROR([Unable to determine soname of lib$2 library])
97 AC_MSG_WARN([Unable to determine soname of lib$2 library])
99 AC_MSG_WARN([lib$2 support disabled])
102 AC_MSG_RESULT([$$1_SONAME])
107 # Function to push and pop libs and includes for a command
108 AC_DEFUN([XB_PUSH_FLAGS], [
110 SAVE_INCLUDES="$INCLUDES"
115 INCLUDES="$SAVE_INCLUDES"
118 # General message strings
119 configure_debug="ERROR: this is a configure debug statement"
120 missing_library="Could not find a required library. Please see the README for your platform."
121 missing_headers="Could not find some required headers. Please see the README for your platform."
122 missing_program="Could not find a required program. Please see the README for your platform."
123 xrandr_not_found="== Could not find libXRandR. SDL will be used for resolution support. =="
124 xrandr_disabled="== XRandR support disabled. SDL will be used for resolution support. =="
125 waveform_enabled="== WAVEFORM enabled =="
126 waveform_disabled="== WAVEFORM disabled =="
127 spectrum_enabled="== SPECTRUM enabled =="
128 spectrum_disabled="== SPECTRUM disabled =="
129 goom_enabled="== GOOM enabled. =="
130 goom_disabled="== GOOM disabled. =="
131 alsa_disabled="== ALSA support disabled. =="
132 rsxs_enabled="== RSXS enabled. =="
133 rsxs_disabled="== RSXS disabled. =="
134 fishbmc_enabled="== FishBMC enabled. =="
135 fishbmc_disabled="== FishBMC disabled. =="
136 projectm_enabled="== ProjectM enabled. =="
137 projectm_disabled="== ProjectM disabled. =="
138 wayland_enabled="== Wayland enabled. =="
139 wayland_disabled="== Wayland disabled. =="
140 x11_enabled="== X11 enabled. =="
141 x11_disabled="== X11 disabled. =="
142 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
143 pulse_disabled="== PulseAudio support disabled. =="
144 dvdcss_enabled="== DVDCSS support enabled. =="
145 dvdcss_disabled="== DVDCSS support disabled. =="
146 hal_not_found="== Could not find hal. HAL support disabled. =="
147 halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
148 hal_disabled="== HAL support disabled. =="
149 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
150 avahi_disabled="== Avahi support disabled. =="
151 mdnsembedded_not_found="== Could not find mDNSEmbedded. Might prevent zeroconf support. =="
152 mdnsembedded_disabled="== mDNSEmbedded support disabled. =="
153 vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
154 vdpau_disabled="== VDPAU support manually disabled. =="
155 vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
156 vaapi_disabled="== VAAPI support manually disabled. =="
157 crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
158 crystalhd_disabled="== CrystalHD support manually disabled. =="
159 vtbdecoder_enabled="== VTBDecoder support enabled. =="
160 vtbdecoder_disabled="== VTBDecoder support manually disabled. =="
161 openmax_disabled="== OpenMax support manually disabled. =="
162 openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
163 ssh_not_found="== Could not find libssh. =="
164 ssh_disabled="== SSH SFTP disabled. =="
165 librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
166 librtmp_disabled="== RTMP support disabled. =="
167 libnfs_not_found="== Could not find libnfs. NFS client support disabled. =="
168 libnfs_disabled="== NFS support disabled. =="
169 libafpclient_not_found="== Could not find libafpclient. AFP client support disabled. =="
170 libafpclient_disabled="== AFP support disabled. =="
171 libshairport_not_found="== Could not find libshairport. =="
172 libshairplay_not_found="== Could not find libshairplay. =="
173 samba_disabled="== SAMBA support disabled. =="
174 libplist_not_found="== Could not find libplist. AirPlay support disabled. =="
175 libplist_disabled="== AirPlay support disabled. =="
176 alsa_not_found="== Could not find ALSA. ALSA support disabled. =="
177 dbus_not_found="== Could not find DBUS. DBUS support disabled. =="
178 libcap_disabled="== Capabilities detection support disabled. =="
179 libcap_not_found="== Could not find libcap. Capabilities detection support disabled. =="
180 gtest_enabled="== Google Test Framework will be configured. =="
181 gtest_disabled="== Google Test Framework will not be configured. =="
183 libudev_not_found="== Could not find libudev. Will use polling to check for device changes. =="
184 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
185 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
186 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
187 libusb_disabled_udev_found="== libusb disabled. =="
188 libcec_enabled="== libcec enabled. =="
189 libcec_disabled="== libcec disabled. CEC adapter support will not be available. =="
191 # External library message strings
192 external_libraries_enabled="== Use of all supported external libraries enabled. =="
193 external_libraries_disabled="== Use of all supported external libraries 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 auto)])],
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([libav-compat],
573 [AS_HELP_STRING([--enable-libav-compat],
574 [build a wrapper around libav to provide the functions needed by XBMC. This is
575 *not* supported by XBMC developers and is provided only for convenience. (default is no) 'Linux only'])],
576 [use_libav_hacks=$enableval],
577 [use_libav_hacks=no])
579 ### End of external library options
581 if test "x$host_vendor" != "xapple"; then
582 DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
583 DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
586 # Checks for programs.
587 PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
590 CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
591 PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
593 AX_PROG_CXX_FOR_BUILD
594 CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
601 OBJDUMP="${OBJDUMP:-objdump}"
603 use_external_ffmpeg=no
606 # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
607 # there is no autoconf variable which will give
608 # the correct output format when doing cross compilation
609 # so we have to use our own var here
610 # defaults to the build side target_os
611 # and should be overridden for cross below (see android)
612 ffmpeg_target_os=$(tolower $(uname -s))
614 # host detection and setup
616 i*86*-linux-android*)
617 target_platform=target_android
621 ffmpeg_target_os=linux
629 i*86*-linux-gnu*|i*86*-*-linux-uclibc*)
631 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
635 target_platform=target_linux
638 x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*)
640 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
644 target_platform=target_linux
652 ARCH="x86_64-freebsd"
668 PYTHON_LDFLAGS="-L${prefix}/lib -lpython2.6"
669 PYTHON_CPPFLAGS="-I${prefix}/include/python2.6"
670 PYTHON_SITE_PKG="${prefix}/lib/python2.6/site-packages"
671 PYTHON_NOVERSIONCHECK="no-check"
678 powerpc-apple-darwin*)
685 powerpc-*-linux-gnu*|powerpc-*-linux-uclibc*)
688 powerpc64-*-linux-gnu*|powerpc64-*-linux-uclibc*)
689 ARCH="powerpc64-linux"
694 ffmpeg_target_os=linux
702 arm*-*linux-android*)
703 target_platform=target_android
707 ffmpeg_target_os=linux
718 AC_MSG_ERROR(unsupported host ($host))
722 check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
723 if test "x$check_sdl_arch" = "xi386" ; then
724 DARWIN_NATIVE_ARCH=-m32
725 elif test "x$check_sdl_arch" = "xx86_64" ; then
726 DARWIN_NATIVE_ARCH=-m64
728 AC_SUBST([DARWIN_NATIVE_ARCH])
730 if test "$target_platform" = "target_android" ; then
732 webserver_checkdepends=yes
733 CFLAGS="$CFLAGS -Wno-psabi"
734 DROID_DVDLIB_SEEK64="-D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED_ -Doff_t=off64_t -Dlseek=lseek64"
735 CXXFLAGS="$CXXFLAGS -Wno-psabi"
736 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
739 case $use_platform in
741 target_platform=target_raspberry_pi
745 use_hardcoded_tables="yes"
748 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
749 USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
752 ffmpeg_target_os=linux
756 XBMC_SETUP_ARCH_DEFINES()
759 AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
760 if test "$GIT_REV" = ""; then
761 if test -f VERSION ; then
762 GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
763 elif test "$HAVE_GIT" = "yes" -a -d ${abs_top_srcdir}/.git; then
764 GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
769 final_message="$final_message\n git Rev.:\t${GIT_REV}"
771 if test "$host_vendor" = "apple"; then
772 echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
774 SDL_DEFINES="$SDL_DEFINES -D'GIT_REV=\"$GIT_REV\"'"
777 if test "$build_shared_lib" = "yes"; then
778 final_message="$final_message\n Shared lib\tYes"
779 AC_SUBST(USE_LIBXBMC,1)
783 # platform debug flags
784 if test "$use_debug" = "yes"; then
785 final_message="$final_message\n Debugging:\tYes"
786 if test "$use_profiling" = "yes"; then
787 final_message="$final_message\n Profiling:\tYes"
788 DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
790 final_message="$final_message\n Profiling:\tNo"
791 DEBUG_FLAGS="-g -D_DEBUG -Wall"
794 final_message="$final_message\n Debugging:\tNo"
795 if test "$use_profiling" = "yes"; then
796 final_message="$final_message\n Profiling:\tYes"
797 DEBUG_FLAGS="-pg -DNDEBUG=1"
799 final_message="$final_message\n Profiling:\tNo"
800 DEBUG_FLAGS="-DNDEBUG=1"
803 CFLAGS="$CFLAGS $DEBUG_FLAGS"
804 CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"
807 if test "$use_optimizations" = "yes"; then
808 final_message="$final_message\n Optimization:\tYes"
809 if test "$target_platform" = "target_raspberry_pi"; then
813 CXXFLAGS="-O2 $CXXFLAGS"
817 final_message="$final_message\n Optimization:\tNo"
821 # platform specific flags
822 if echo "$ARCH" | grep -q "freebsd" ; then
823 LOCALBASE="${LOCALBASE:-/usr/local}"
824 CFLAGS="$CFLAGS -I$LOCALBASE/include"
825 CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
826 CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
827 LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
828 FFMPEG_EXTRACFLAGS="-I$LOCALBASE/include"
830 if test "$host_vendor" = "apple" ; then
831 # standard xbmc paths
832 INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
833 if test "$use_arch" != "arm"; then
834 LIBS="$LIBS -framework ApplicationServices"
835 LIBS="$LIBS -framework AudioUnit"
836 LIBS="$LIBS -framework AudioToolbox"
837 LIBS="$LIBS -framework Cocoa"
838 LIBS="$LIBS -framework CoreAudio"
839 LIBS="$LIBS -framework CoreVideo"
840 LIBS="$LIBS -framework CoreServices"
841 LIBS="$LIBS -framework CoreFoundation"
842 LIBS="$LIBS -framework DiskArbitration"
843 LIBS="$LIBS -framework IOKit"
844 LIBS="$LIBS -framework IOSurface"
845 LIBS="$LIBS -framework QuartzCore"
846 LIBS="$LIBS -framework SystemConfiguration"
847 LIBS="$LIBS -framework VideoDecodeAcceleration"
849 USE_EXTERNAL_FFMPEG=1
850 elif test "$target_platform" = "target_raspberry_pi"; then
853 elif test "$use_arch" = "arm"; then
854 CFLAGS="$CFLAGS -mno-apcs-stack-check"
855 CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
856 FFMPEG_EXTRACFLAGS=""
857 if test "$use_tegra" = "yes"; then
858 # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support
859 SAVE_CFLAGS="$CFLAGS"
860 CFLAGS="-mfpu=vfpv3-d16"
862 [AC_LANG_SOURCE([int foo;])],
863 [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
864 CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
865 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mtune=cortex-a9 -mfpu=vfpv3-d16"
867 [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
868 CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
871 if test "$use_neon" = "yes"; then
872 CFLAGS="$CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
873 CXXFLAGS="$CXXFLAGS -mfpu=neon -mvectorize-with-neon-quad"
874 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mfpu=neon"
878 if test "$target_platform" = "target_linux"; then
880 use_static_ffmpeg=yes
881 AC_DEFINE([USE_STATIC_FFMPEG], [1], [link ffmpeg statically])
882 # ffmpeg may depend on gnutls and vorbisenc, we add those libs at the end of linker
883 # command in order to resolve any missing symbols
884 GNUTLS_ALL_LIBS=`${PKG_CONFIG} --static --libs-only-l --silence-errors gnutls`
885 VORBISENC_ALL_LIBS=`${PKG_CONFIG} --static --libs-only-l --silence-errors vorbisenc`
888 # Checks for library functions.
891 AC_FUNC_CLOSEDIR_VOID
892 AC_FUNC_ERROR_AT_LINE
894 AC_PROG_GCC_TRADITIONAL
896 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
900 # Boxee is apparently having compile problems
901 # if HAVE_REALLOC is defined. Sort this later.
903 AC_FUNC_SELECT_ARGTYPES
904 AC_FUNC_SETVBUF_REVERSED
912 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])
914 # Check for various sizes
915 AC_CHECK_SIZEOF([int])
916 AC_CHECK_SIZEOF([size_t])
918 # Check for intrinsics
919 AC_MSG_CHECKING([for __sync_add_and_fetch(temp, 1)])
920 AC_TRY_LINK([],[long* temp=0; long ret=__sync_add_and_fetch(temp, 1);],
921 [have_builtin_sync_add_and_fetch=yes],
922 [have_builtin_sync_add_and_fetch=no])
923 AC_MSG_RESULT($have_builtin_sync_add_and_fetch)
924 if test "x$have_builtin_sync_add_and_fetch" = "xyes"; then
925 AC_DEFINE(HAS_BUILTIN_SYNC_ADD_AND_FETCH, 1,
926 [Define to 1 if your compiler supports the __sync_add_and_fetch() intrinsic.])
929 AC_MSG_CHECKING([for __sync_sub_and_fetch(temp, 1)])
930 AC_TRY_LINK([],[long* temp=0; long ret=__sync_sub_and_fetch(temp, 1);],
931 [have_builtin_sync_sub_and_fetch=yes],
932 [have_builtin_sync_sub_and_fetch=no])
933 AC_MSG_RESULT($have_builtin_sync_sub_and_fetch)
934 if test "x$have_builtin_sync_sub_and_fetch" = "xyes"; then
935 AC_DEFINE(HAS_BUILTIN_SYNC_SUB_AND_FETCH, 1,
936 [Define to 1 if your compiler supports the __sync_sub_and_fetch() intrinsic.])
939 AC_MSG_CHECKING([for __sync_val_compare_and_swap(temp, 1, 1)])
940 AC_TRY_LINK([],[long *temp = 0; long ret=__sync_val_compare_and_swap(temp, 1, 1);],
941 [have_builtin_sync_val_compare_and_swap=yes],
942 [have_builtin_sync_val_compare_and_swap=no])
943 AC_MSG_RESULT($have_builtin_sync_val_compare_and_swap)
944 if test "x$have_builtin_sync_val_compare_and_swap" = "xyes"; then
945 AC_DEFINE(HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP, 1,
946 [Define to 1 if your compiler supports the __sync_val_compare_and_swap() intrinsic.])
949 # Check for u16string/u32string declarations
951 AC_CHECK_TYPES([std::u16string, std::u32string], [], [], [[#include <string>]])
952 AC_CHECK_TYPES([char16_t, char32_t])
953 AC_CHECK_SIZEOF([wchar_t])
956 # Add top source directory for all builds so we can use config.h
957 INCLUDES="-I\$(abs_top_srcdir) $INCLUDES"
959 # Check inotify availability
960 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
962 # Checks for boost headers using CXX instead of CC
964 AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
968 if test -z "$PYTHON_NOVERSIONCHECK"; then
969 AX_PYTHON_DEVEL([>= 2.4])
970 PYTHON_VERSION=$ac_python_version
973 if test -z "$PYTHON_VERSION"; then
974 AC_MSG_ERROR([Can't find a Python version.])
976 LIBS="$LIBS $PYTHON_LDFLAGS"
977 AC_MSG_NOTICE([Using Python $PYTHON_VERSION])
981 if test "$use_wayland" = "yes" && test "$host_vendor" != "apple"; then
982 AC_MSG_NOTICE($wayland_enabled)
983 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client],
984 [INCLUDES="$INCLUDES $WAYLAND_CLIENT_CFLAGS";
985 WAYLAND_CLIENT_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-client\`; echo ${LIBRARY:2}`;
986 XB_FIND_SONAME([WAYLAND_CLIENT_LIBRARY], ${WAYLAND_CLIENT_LIBRARY_LINE})],
987 AC_MSG_ERROR($missing_library))
988 PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],
989 [INCLUDES="$INCLUDES $WAYLAND_EGL_CFLAGS";
990 WAYLAND_EGL_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-egl\`; echo ${LIBRARY:2:11}`
991 XB_FIND_SONAME([WAYLAND_EGL_LIBRARY], ${WAYLAND_EGL_LIBRARY_LINE})],
992 AC_MSG_ERROR($missing_library))
993 PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon],
994 [INCLUDES="$INCLUDES $XKBCOMMON_CFLAGS";
995 XKBCOMMON_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l xkbcommon\`; echo ${LIBRARY:2}`;
996 XB_FIND_SONAME([XKBCOMMON_LIBRARY], $XKBCOMMON_LIBRARY_LINE)],
997 AC_MSG_ERROR($missing_library))
998 AC_DEFINE([HAVE_WAYLAND], [1], [Define to 1 if you have Wayland libs installed.])
999 AC_DEFINE([HAVE_XKBCOMMON], [1], [Define to 1 if you have libxkbcommon installed.])
1001 # If we are also building with tests then we want to build
1002 # wayland tests as well
1003 if test "$configure_gtest" = "yes"; then
1005 PKG_CHECK_MODULES([PIXMAN],
1006 [pixman-1],have_pixman=yes,
1007 [AC_MSG_WARN($missing_library); have_pixman=no])
1008 PKG_CHECK_MODULES([WESTON],
1009 [weston >= 1.1.90],[have_weston_sdk=yes],
1010 [have_weston_sdk=no; AC_MSG_WARN($missing_library)])
1012 AC_CHECK_PROG(WAYLAND_SCANNER, wayland-scanner, "wayland-scanner", "no")
1013 if test "x$WAYLAND_SCANNER" == "xno"; then
1014 AC_MSG_WARN($missing_program)
1016 if test "x$have_weston_sdk" == "xyes" && test "x$have_pixman" = "xyes"; then
1017 AC_SUBST(WAYLAND_TEST_INCLUDES,"$WAYLAND_CLIENT_CFLAGS $XKBCOMMON_CFLAGS $PIXMAN_CFLAGS $WESTON_CFLAGS")
1018 AC_SUBST(WAYLAND_TEST_LIBS,"$WAYLAND_CLIENT_LIBS $XKBCOMMON_LIBS $PIXMAN_LIBS $WESTON_LIBS")
1019 AC_DEFINE([HAVE_WESTON_SDK], [1], [Define to 1 if Weston SDK is installed.])
1020 AC_SUBST(USE_WAYLAND_TEST_EXTENSION, 1)
1022 AC_SUBST(WAYLAND_SCANNER)
1023 AC_DEFINE([HAVE_WAYLAND_XBMC_PROTO],[1],["Define to 1 if the wayland test-protocol will be built"])
1027 # Disable SDL and X11 builds
1032 # Wayland requires the EGL "window system" which in turn only supports
1033 # the OpenGL ES API, so enable gles support
1036 AC_MSG_RESULT($wayland_disabled)
1039 # Checks for platforms libraries.
1040 if test "$use_gles" = "yes"; then
1042 # GLES overwrites GL if both set to yes.
1043 if test "$host_vendor" = "apple" ; then
1044 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1045 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1046 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1048 if test "$target_platform" = "target_raspberry_pi"; then
1049 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1050 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1051 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1052 LIBS="$LIBS -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
1054 AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
1055 AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
1059 if test "$use_gl" = "yes"; then
1060 if test "$host_vendor" = "apple" ; then
1061 # linking to OpenGL.framework instead of libGL, libGLU so AC_CHECK_LIB will fail
1062 LIBS="$LIBS -framework OpenGL"
1063 AC_DEFINE([HAVE_LIBGL],[1],["Define to 1 if you have the `GL' library (-lGL)."])
1064 AC_MSG_RESULT(== WARNING: OpenGL support is assumed.)
1065 AC_DEFINE([HAVE_LIBGLU],[1],["Define to 1 if you have the `GLU' library (-lGLU)."])
1066 AC_MSG_RESULT(== WARNING: OpenGLU support is assumed.)
1067 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1069 AC_CHECK_LIB([GL], [main],, AC_MSG_ERROR($missing_library))
1070 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1071 AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
1074 AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
1075 AC_CHECK_LIB([SDL_gfx],[main])
1079 # platform common libraries
1080 if test "$use_mysql" = "yes"; then
1081 AC_PATH_PROG(MYSQL_CONFIG, mysql_config,"no")
1082 if test "x$MYSQL_CONFIG" != "xno"; then
1083 AC_DEFINE([HAVE_MYSQL],[1],["Define to 1 if you have the `mysql' library (-lmysqlclient)."])
1084 INCLUDES="$INCLUDES `$MYSQL_CONFIG --include`"
1085 MYSQL_LIBS=`$MYSQL_CONFIG --libs`
1086 LIBS="$LIBS $MYSQL_LIBS"
1087 AC_SUBST(MYSQL_LIBS)
1089 AC_MSG_ERROR($missing_program)
1092 AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
1093 AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
1094 AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
1095 AC_INCLUDES_DEFAULT()
1096 [#include <mpeg2dec/mpeg2.h>])
1097 AC_CHECK_HEADER([mad.h],, AC_MSG_ERROR($missing_library))
1098 AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
1099 AC_CHECK_HEADER([samplerate.h],, AC_MSG_ERROR($missing_library))
1100 AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
1101 AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
1102 AC_CHECK_HEADER([libmodplug/modplug.h],, AC_MSG_ERROR($missing_library))
1103 AC_CHECK_HEADER([curl/curl.h],, AC_MSG_ERROR($missing_library))
1104 AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
1106 # we need to check for the header because if it exists we set the openssl
1107 # and gcrypt MT callback hooks. This is mostly so that libcurl operates
1108 # in MT manner correctly.
1109 AC_MSG_CHECKING([for CRYPTO_set_locking_callback(0)])
1110 AC_TRY_LINK([],[CRYPTO_set_locking_callback(0);],
1111 [have_curl_static=yes],
1112 [have_curl_static=no])
1113 AC_MSG_RESULT($have_curl_static)
1114 AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
1115 AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
1116 if test "$gcrypt_headers_available" = "yes"; then
1117 # if we have the headers then we must have the lib
1118 AC_CHECK_LIB([gpg-error],[main],, AC_MSG_ERROR($missing_library))
1119 AC_CHECK_LIB([gcrypt],[gcry_control],, AC_MSG_ERROR($missing_library))
1120 AC_DEFINE([HAVE_GCRYPT],[1],[Define if we have gcrypt])
1122 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"))
1124 AC_CHECK_LIB([bz2], [main],, AC_MSG_ERROR($missing_library))
1125 AC_CHECK_LIB([jpeg], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1126 AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
1127 if echo "$ARCH" | grep -q freebsd; then
1128 AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
1129 AC_CHECK_LIB([pthread], [pthread_set_name_np],
1130 AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
1131 AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
1133 if test "$target_platform" != "target_android" ; then
1134 AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
1135 AC_CHECK_LIB([pthread], [pthread_setname_np],
1136 AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
1137 AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
1140 AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
1141 AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library))
1142 AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library))
1143 AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library))
1144 if test "$use_mysql" = "yes"; then
1145 AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
1147 AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
1148 AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library))
1149 AC_CHECK_LIB([tinyxml], [main],, AC_MSG_ERROR($missing_library))
1150 if test "$target_platform" = "target_android" ; then
1151 AC_CHECK_LIB([android], [main],, AC_MSG_ERROR($missing_library))
1152 AC_CHECK_LIB([log], [__android_log_vprint],, AC_MSG_ERROR($missing_library))
1153 AC_CHECK_LIB([jnigraphics], [main],, AC_MSG_ERROR($missing_library))
1155 PKG_CHECK_MODULES([LIBXML], [libxml-2.0],
1156 [INCLUDES="$INCLUDES $LIBXML_CFLAGS"; LIBS="$LIBS $LIBXML_LIBS"],
1157 AC_MSG_ERROR($missing_library))
1158 PKG_CHECK_MODULES([LIBXSLT], [libxslt],
1159 [INCLUDES="$INCLUDES $LIBXSLT_CFLAGS"; LIBS="$LIBS $LIBXSLT_LIBS"],
1160 AC_MSG_ERROR($missing_library))
1161 PKG_CHECK_MODULES([FRIBIDI], [fribidi],
1162 [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
1163 AC_MSG_ERROR($missing_library))
1164 PKG_CHECK_MODULES([SQLITE3], [sqlite3],
1165 [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
1166 AC_MSG_ERROR($missing_library))
1167 PKG_CHECK_MODULES([PNG], [libpng],
1168 [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
1169 AC_MSG_ERROR($missing_library))
1170 PKG_CHECK_MODULES([PCRECPP], [libpcrecpp],
1171 [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
1172 AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
1173 AC_MSG_ERROR($missing_library))
1174 PKG_CHECK_MODULES([PCRE], [libpcre],
1175 [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
1176 AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
1177 AC_MSG_ERROR($missing_library))
1178 PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
1179 [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
1180 AC_MSG_ERROR($missing_library))
1181 PKG_CHECK_MODULES([FREETYPE2], [freetype2],
1182 [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
1183 AC_MSG_ERROR($missing_library))
1184 PKG_CHECK_MODULES([TAGLIB], [taglib >= 1.8],
1185 [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
1186 AC_MSG_ERROR($missing_library))
1188 if test "$use_optical_drive" = "yes"; then
1189 PKG_CHECK_MODULES([CDIO], [libcdio],
1190 [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
1191 AC_MSG_ERROR($missing_library))
1194 if test "$target_platform" = "target_android" ; then
1195 PKG_CHECK_MODULES([ZIP], [libzip],
1196 [INCLUDES="$INCLUDES $ZIP_CFLAGS"; LIBS="$LIBS $ZIP_LIBS"],
1197 AC_MSG_ERROR($missing_library))
1200 # check for libbluray
1201 AS_CASE([x$use_libbluray],
1203 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
1206 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], [use_libbluray="no"])
1209 AS_CASE([x$use_libbluray],
1211 INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
1212 XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
1213 AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
1214 AC_SUBST([HAVE_LIBBLURAY], 1)
1215 AC_CHECK_LIB([bluray], [bd_register_argb_overlay_proc],
1216 AC_CHECK_DECL([BD_EVENT_IDLE],
1217 AC_DEFINE([HAVE_LIBBLURAY_BDJ], 1, [System has libbluray library with bdj support]),,
1218 [[#include <libbluray/bluray.h>]]))
1220 AC_SUBST([HAVE_LIBBLURAY], 0)
1224 #Check to see if libs are needed for functions that are often built-in to libc
1225 AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
1226 AC_SEARCH_LIBS([dlopen],dl)
1227 AC_SEARCH_LIBS([clock_gettime],rt)
1228 AC_SEARCH_LIBS([dn_expand], resolv)
1229 AC_SEARCH_LIBS([_dn_expand], resolv)
1230 AC_SEARCH_LIBS([__dn_expand],resolv)
1232 # platform dependent libraries
1233 if test "$host_vendor" = "apple" ; then
1234 if test "$use_arch" != "arm"; then
1235 AC_CHECK_LIB([SDL], [main],, AC_MSG_ERROR($missing_library))
1236 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1239 if test "$target_platform" != "target_android" ; then
1240 AC_CHECK_LIB([jasper], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1242 if test "x$use_alsa" != "xno"; then
1243 PKG_CHECK_MODULES([ALSA], [alsa],
1244 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"; use_alsa=yes],
1245 AC_MSG_NOTICE($alsa_not_found); use_alsa=no)
1247 PKG_CHECK_MODULES([DBUS], [dbus-1],
1248 [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"; use_dbus=yes]; \
1249 AC_DEFINE([HAVE_DBUS],[1],["Define to 1 if dbus is installed"]),
1250 AC_MSG_NOTICE($missing_library); use_dbus=no)
1251 if test "x$use_sdl" != "xno"; then
1252 PKG_CHECK_MODULES([SDL], [sdl],
1253 [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
1254 AC_MSG_ERROR($missing_library))
1255 AC_CHECK_LIB([SDL_image], [main],, AC_MSG_ERROR($missing_library))
1256 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1260 XB_FIND_SONAME([MAD], [mad])
1261 XB_FIND_SONAME([OGG], [ogg])
1262 XB_FIND_SONAME([CURL], [curl])
1263 XB_FIND_SONAME([FLAC], [FLAC])
1264 XB_FIND_SONAME([VORBIS], [vorbis])
1265 XB_FIND_SONAME([VORBISFILE], [vorbisfile])
1266 XB_FIND_SONAME([MODPLUG], [modplug])
1267 XB_FIND_SONAME([ASS], [ass])
1268 XB_FIND_SONAME([MPEG2], [mpeg2])
1271 if test "x$use_libmp3lame" != "xno"; then
1272 XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1273 if test "x$use_libmp3lame" != "xno"; then
1274 AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1277 AS_CASE([x$use_libmp3lame],
1279 AC_SUBST([HAVE_LIBMP3LAME], 0)
1282 AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1283 AC_SUBST([HAVE_LIBMP3LAME], 1)
1286 if test "x$use_libvorbisenc" != "xno"; then
1287 XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1288 if test "x$use_libvorbisenc" != "xno"; then
1289 AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1292 AS_CASE([x$use_libvorbisenc],
1294 AC_SUBST([HAVE_LIBVORBISENC], 0)
1296 AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1297 AC_SUBST([HAVE_LIBVORBISENC], 1)
1302 if test "$use_webserver" = "yes"; then
1303 AC_CHECK_LIB([microhttpd], [main],, AC_MSG_ERROR($missing_library))
1307 if test "$use_optical_drive" = "yes"; then
1308 AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1312 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1313 PKG_CHECK_MODULES([ALSA], [alsa],
1314 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1315 AC_MSG_ERROR($missing_library))
1316 AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1319 AC_MSG_RESULT($alsa_disabled)
1323 if test "x$use_pulse" != "xno"; then
1324 if test "$host_vendor" = "apple" ; then
1325 if test "x$use_pulse" = "xyes"; then
1326 AC_MSG_ERROR($pulse_disabled)
1329 AC_MSG_RESULT($pulse_disabled)
1333 PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0],
1334 [INCLUDES="$INCLUDES $PULSE_CFLAGS"; LIBS="$LIBS $PULSE_LIBS"; USE_PULSE=1;
1335 HAVE_LIBPULSE=1; AC_DEFINE([HAVE_LIBPULSE],[1],[Pulse audio enabled])],
1336 [pulse_found="no"; USE_PULSE=0; HAVE_LIBPULSE=0])
1338 if test "$pulse_found" = "no"; then
1339 if test "x$use_pulse" = "xyes"; then
1340 AC_MSG_ERROR($pulse_not_found)
1342 AC_MSG_RESULT($pulse_disabled)
1347 AC_MSG_RESULT($pulse_disabled)
1352 if test "$host_vendor" = "apple" ; then
1354 AC_MSG_RESULT($hal_disabled)
1356 if test "$use_hal" = "yes"; then
1357 PKG_CHECK_MODULES([HAL], [hal],
1358 [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1359 use_hal=no;AC_MSG_RESULT($hal_not_found))
1360 PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1361 [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1362 use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1364 AC_MSG_RESULT($hal_disabled)
1366 if test "$use_hal" = "yes"; then
1367 AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1372 if test "$host_vendor" = "apple" ; then
1374 AC_MSG_RESULT($avahi_disabled)
1376 if test "$use_avahi" = "yes"; then
1377 AC_CHECK_LIB([avahi-common], [main],,
1378 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1379 if test "$use_avahi" = "yes"; then
1380 #either both libs or none
1381 AC_CHECK_LIB([avahi-client], [main],,
1382 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1385 AC_MSG_RESULT($avahi_disabled)
1390 if test "$use_mdnsembedded" != "no"; then
1391 AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1392 [if test "$use_mdnsembedded" = "yes"; then
1393 AC_MSG_ERROR($mdnsembedded_not_found)
1395 elif test "$use_mdnsembedded" != "no"; then
1396 AC_MSG_NOTICE($mdnsembedded_not_found)
1397 use_mdnsembedded="no"
1401 if test $use_mdnsembedded != "no"; then
1405 AC_MSG_RESULT($mdnsembedded_disabled)
1408 AC_SUBST(USE_MDNSEMBEDDED)
1411 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1412 AC_MSG_NOTICE($x11_enabled)
1413 PKG_CHECK_MODULES([X11], [x11],
1414 [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1415 AC_MSG_ERROR($missing_library))
1416 PKG_CHECK_MODULES([XEXT], [xext],
1417 [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1418 AC_MSG_ERROR($missing_library))
1419 AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1421 AC_MSG_RESULT($x11_disabled)
1425 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1427 AC_MSG_RESULT($xrandr_disabled)
1429 if test "$use_xrandr" = "yes" ; then
1430 AC_CHECK_LIB([Xrandr], [main],,
1431 use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1433 AC_MSG_RESULT($xrandr_disabled)
1438 if test "$use_waveform" = "yes"; then
1439 AC_MSG_NOTICE($waveform_enabled)
1442 AC_MSG_NOTICE($waveform_disabled)
1447 if test "$use_spectrum" = "yes"; then
1448 AC_MSG_NOTICE($spectrum_enabled)
1451 AC_MSG_NOTICE($spectrum_disabled)
1456 if test "$host_vendor" = "apple" ; then
1457 AC_MSG_NOTICE($goom_disabled)
1460 if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1461 AC_MSG_NOTICE($goom_enabled)
1464 AC_MSG_NOTICE($goom_disabled)
1470 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1471 AC_MSG_NOTICE($rsxs_disabled)
1474 AC_MSG_NOTICE($rsxs_enabled)
1476 # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1477 if test "$host_vendor" != "apple" ; then
1478 PKG_CHECK_MODULES([XT], [xt],
1479 [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1480 AC_MSG_ERROR($missing_library))
1481 PKG_CHECK_MODULES([XMU], [xmu],
1482 [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1483 AC_MSG_ERROR($missing_library))
1488 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1489 AC_MSG_NOTICE($fishbmc_disabled)
1493 AC_MSG_NOTICE($fishbmc_enabled)
1498 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1499 AC_MSG_NOTICE($projectm_disabled)
1503 AC_MSG_NOTICE($projectm_enabled)
1509 if [[ -f "addons/skin.touched/addon.xml" ]]; then
1510 use_skin_touched=yes
1512 AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1518 if test "x$use_ssh" = "xno"; then
1519 AC_MSG_NOTICE($ssh_disabled)
1522 AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1523 AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1527 if test "x$have_curl_static" = "xyes"; then
1528 AC_DEFINE([HAS_CURL_STATIC], [1], [Whether OpenSSL inside libcurl is static.])
1532 if test "$use_librtmp" != "no"; then
1533 AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1534 [if test "$use_librtmp" = "yes"; then
1535 AC_MSG_ERROR($librtmp_not_found)
1536 elif test "$use_librtmp" != "no"; then
1537 AC_MSG_NOTICE($librtmp_not_found)
1541 if test "$use_librtmp" != "no"; then
1542 XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1544 if test "$use_librtmp" != "no"; then
1545 AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1548 AC_MSG_NOTICE($librtmp_disabled)
1552 if test "x$use_samba" != "xno"; then
1553 PKG_CHECK_MODULES([SAMBA], [smbclient],
1554 [INCLUDES="$INCLUDES $SAMBA_CFLAGS"; LIBS="$LIBS $SAMBA_LIBS"],
1555 [AC_CHECK_LIB([smbclient], [main],,
1556 use_samba=no;AC_MSG_ERROR($missing_library))
1560 AC_MSG_RESULT($samba_disabled)
1564 if test "x$use_samba" != "xno"; then
1565 AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1570 if test "$use_libnfs" != "no"; then
1571 AC_CHECK_HEADERS([nfsc/libnfs.h],,
1572 [if test "$use_libnfs" = "yes"; then
1573 AC_MSG_ERROR($libnfs_not_found)
1575 elif test "$use_libnfs" != "no"; then
1576 AC_MSG_NOTICE($libnfs_not_found)
1581 if test "$use_libnfs" != "no"; then
1582 XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1584 if test "$use_libnfs" != "no"; then
1585 AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1590 AC_MSG_NOTICE($libnfs_disabled)
1595 if test "x$use_libafpclient" != "xno"; then
1596 AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1597 [if test "x$use_libafpclient" = "xyes"; then
1598 AC_MSG_ERROR($libafpclient_not_found)
1599 elif test "x$use_libafpclient" != "xno"; then
1600 AC_MSG_NOTICE($libafpclient_not_found)
1601 use_libafpclient="no"
1604 if test "x$use_libafpclient" != "xno"; then
1605 XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1606 AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1610 AC_MSG_NOTICE($libafpclient_disabled)
1613 # libplist for airplay feature
1615 if test "$use_airplay" != "no"; then
1616 AC_CHECK_HEADER([plist/plist.h],,
1617 [if test "$use_airplay" = "yes"; then
1618 AC_MSG_ERROR($libplist_not_found)
1619 elif test "$use_airplay" != "no"; then
1620 AC_MSG_NOTICE($libplist_not_found)
1625 if test "$use_airplay" != "no"; then
1626 XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1628 AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1632 # libshairplay for AirTunes (prefered lib)
1634 if test "x$use_airtunes" != "xno"; then
1635 AC_CHECK_HEADERS([shairplay/raop.h],USE_AIRTUNES=1,
1636 [AC_MSG_NOTICE($libshairplay_not_found)
1639 if test "x$USE_AIRTUNES" != "x0"; then
1640 XB_FIND_SONAME([SHAIRPLAY], [shairplay], [USE_AIRTUNES])
1642 AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1643 [[#include <shairplay/raop.h>]])
1644 AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1647 #libshairport - as a fallback for AirTunes
1648 if test "x$USE_AIRTUNES" == "x0"; then
1649 AC_CHECK_HEADERS([shairport/shairport.h],USE_AIRTUNES=1,
1650 [AC_MSG_NOTICE($libshairport_not_found)
1653 if test "x$USE_AIRTUNES" != "x0"; then
1654 XB_FIND_SONAME([SHAIRPORT], [shairport], [USE_AIRTUNES])
1655 AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1656 [[#include <shairport/shairport.h>]])
1657 AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1661 if test "x$USE_AIRTUNES" == "x0"; then
1662 if test "x$use_airtunes" == "xyes"; then
1663 AC_MSG_ERROR("No airtunes library could be found. (libshairport/libshairplay)")
1671 if test "$host_vendor" = "apple" ; then
1673 AC_MSG_NOTICE($libudev_disabled)
1675 if test "$use_libudev" = "auto"; then
1676 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1677 elif test "$use_libudev" = "yes" ; then
1678 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1680 AC_MSG_NOTICE($libudev_disabled)
1683 if test "x$use_libudev" != "xno"; then
1684 USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1685 AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1692 # if libudev is available, we don't need libusb
1693 if test "x$use_libudev" != "xno"; then
1695 AC_MSG_NOTICE($libusb_disabled_udev_found)
1697 if test "$host_vendor" = "apple" ; then
1699 AC_MSG_NOTICE($libusb_disabled)
1701 if echo "$ARCH" | grep -q freebsd ; then
1702 AC_CHECK_LIB([usb],[main],
1703 [use_libusb="yes";USB_LIBS="-lusb"],
1704 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1705 elif test "$use_libusb" = "auto"; then
1706 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1707 elif test "$use_libusb" = "yes"; then
1708 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1710 AC_MSG_NOTICE($libusb_disabled)
1713 if test "x$use_libusb" != "xno"; then
1714 USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1715 AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1722 if test "x$use_libcec" != "xno"; then
1723 # libcec is dyloaded, so we need to check for its headers and link any depends.
1724 if test "x$use_libcec" != "xno"; then
1725 if test "x$use_libcec" != "xauto"; then
1726 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1728 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1731 if test "x$use_libcec" != "xno"; then
1732 INCLUDES="$INCLUDES $CEC_CFLAGS"
1733 USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1734 XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1735 AC_MSG_NOTICE($libcec_enabled)
1738 AC_MSG_NOTICE($libcec_disabled)
1743 AC_MSG_NOTICE($libcec_disabled)
1747 if test "$use_libcap" != "no"; then
1748 AC_CHECK_HEADERS([sys/capability.h],,
1749 [if test "$use_libcap" = "yes"; then
1750 AC_MSG_ERROR($libcap_not_found)
1751 elif test "$use_libcap" != "no"; then
1752 AC_MSG_NOTICE($libcap_not_found)
1756 if test "$use_libcap" != "no"; then
1757 AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1759 if test "$use_libcap" != "no"; then
1760 AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1763 AC_MSG_NOTICE($libcap_disabled)
1766 ### External libraries checks
1768 # Hacks for supporting libav
1771 if test "$use_libav_hacks" = "yes"; then
1772 export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1774 AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1778 if test "$use_external_ffmpeg" = "yes"; then
1779 FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1781 PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1782 [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1783 AC_MSG_ERROR($missing_library))
1785 # in case the headers are in a custom directory
1786 SAVE_CPPFLAGS="$CPPFLAGS"
1787 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1789 AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1790 [AC_MSG_ERROR($missing_headers)])
1792 AC_MSG_NOTICE($external_ffmpeg_enabled)
1793 USE_EXTERNAL_FFMPEG=1
1794 AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1796 CPPFLAGS="$SAVE_CPPFLAGS"
1798 AC_MSG_NOTICE($external_ffmpeg_disabled)
1799 USE_EXTERNAL_FFMPEG=0
1802 echo "Checking for SWIG installation"
1803 AC_PATH_PROG(SWIG_EXE, swig, "none")
1804 if test "$SWIG_EXE" = "none"; then
1805 AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1806 if test "$SWIG20_EXE" != "none" ; then
1807 SWIG_EXE=$SWIG20_EXE
1810 if test "$SWIG_EXE" = "none"; then
1811 AC_MSG_ERROR($missing_program)
1813 final_message="$final_message\n SWIG Available:\tYes"
1815 echo "Checking for a jre installation"
1816 AC_PATH_PROG(JAVA_EXE, java, "none")
1817 if test "$JAVA_EXE" = "none"; then
1818 AC_MSG_ERROR($missing_program)
1820 final_message="$final_message\n JRE Available:\tYes"
1822 echo "Checking for doxygen installation"
1823 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1824 if test "$DOXYGEN_EXE" = "none"; then
1825 AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1826 final_message="$final_message\n Doxygen Available:\tNo"
1829 final_message="$final_message\n Doxygen Available:\tYes"
1834 if test "x$use_vdpau" != "xno"; then
1835 if test "$host_vendor" = "apple" ; then
1836 if test "x$use_vdpau" = "xyes"; then
1837 AC_MSG_ERROR([VDPAU not supported on this platform])
1840 AC_MSG_NOTICE($vdpau_disabled)
1845 AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1846 [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1847 [if test "x$use_vdpau" = "xyes"; then
1849 AC_MSG_ERROR([$vdpau_not_found])
1853 AC_MSG_RESULT($vdpau_not_found)
1858 AC_MSG_NOTICE($vdpau_disabled)
1862 if test "x$use_vaapi" != "xno"; then
1863 if test "$host_vendor" = "apple" ; then
1864 if test "x$use_vaapi" = "xyes"; then
1865 AC_MSG_ERROR([VAAPI not supported on this platform])
1868 AC_MSG_NOTICE($vaapi_disabled)
1872 initial_val=$use_vaapi
1873 AC_CHECK_LIB([va], main, :, use_vaapi=no)
1874 if test "x$use_vaapi" != "xno"; then
1875 AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1878 if test "x$use_vaapi" = "xno"; then
1879 if test "x$initial_val" = "xyes"; then
1880 AC_MSG_ERROR($vaapi_not_found)
1882 AC_MSG_RESULT($vaapi_not_found)
1886 AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1891 AC_MSG_NOTICE($vaapi_disabled)
1896 if test "x$use_crystalhd" != "xno"; then
1897 SAVE_CFLAGS="$CFLAGS"
1898 CFLAGS="-D__LINUX_USER__"
1899 AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1900 [ if test "x$use_crystalhd" = "xyes"; then
1901 AC_MSG_ERROR($crystalhd_not_found)
1904 AC_MSG_RESULT($crystalhd_not_found)
1908 CFLAGS="$SAVE_CFLAGS"
1909 if test "$host_vendor" != "apple"; then
1910 XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1912 if test "x$use_crystalhd" != "xno"; then
1913 SAVE_CFLAGS="$CFLAGS"
1914 CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1915 # check for new crystalhd lib
1917 [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1918 #include <libcrystalhd/bc_dts_defs.h>
1919 PBC_INFO_CRYSTAL bCrystalInfo;])],
1920 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ],
1921 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1922 CFLAGS="$SAVE_CFLAGS"
1926 AC_MSG_NOTICE($crystalhd_disabled)
1931 if test "x$use_vtbdecoder" != "xno"; then
1932 if test "$host_vendor" = "apple" ; then
1933 HAVE_VIDEOTOOLBOXDECODER=1
1934 AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1935 AC_MSG_NOTICE($vtbdecoder_enabled)
1937 if test "x$use_vtbdecoder" = "xyes"; then
1938 AC_MSG_ERROR([VTB Decoder not supported on this platform])
1941 AC_MSG_NOTICE($vtbdecoder_disabled)
1945 AC_MSG_NOTICE($vtbdecoder_disabled)
1949 if test "$host_vendor" = "apple" ; then
1952 AC_MSG_NOTICE($openmax_disabled)
1953 elif test "$target_platform" = "target_raspberry_pi"; then
1956 AC_MSG_NOTICE($openmax_disabled)
1958 if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1959 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1960 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1961 use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1962 elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1963 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1964 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1965 AC_MSG_ERROR($openmax_not_found))
1967 AC_MSG_NOTICE($openmax_disabled)
1973 # yajl version check (yajl_version.h was added in yajl 2.0)
1974 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1975 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1978 # additional internal players
1979 case $add_players in
1981 XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1985 # additional internal codecs
1986 # remember to convert commas to spaces
1987 for codecs in `echo $add_codecs | sed 's/,/ /g'`; do
1990 AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1991 XB_ADD_CODEC([LIBAMCODEC], [amcodec], [$codecs])
1994 XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright], [$codecs])
2000 # platform specific bin utilities
2001 if test "$build_vendor" != "apple" ; then
2002 AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
2003 if test "$HAVE_GAWK" = "no" ; then
2004 AC_MSG_ERROR($missing_program)
2008 if test "$use_arch" != "arm" ; then
2009 AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
2010 if test "$HAVE_CMAKE" = "no" ; then
2011 AC_MSG_ERROR($missing_program)
2015 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
2016 if test "$HAVE_GPERF" = "no" ; then
2017 AC_MSG_ERROR($missing_program)
2020 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
2021 if test "$HAVE_UNZIP" = "no" ; then
2022 AC_MSG_ERROR($missing_program)
2025 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
2026 if test "$HAVE_ZIP" = "no" ; then
2027 AC_MSG_ERROR($missing_program)
2030 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
2031 AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
2032 if test "$HAVE_NASM" = "no" ; then
2033 AC_MSG_ERROR($missing_program)
2037 # Checks for header files.
2041 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
2042 malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
2043 strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
2044 sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
2045 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
2047 # Checks for typedefs, structures, and compiler characteristics.
2063 AC_CHECK_MEMBERS([struct stat.st_rdev])
2072 if test "$cross_compiling" = "yes"; then
2073 final_message="$final_message\n Crosscomp.:\tYes"
2074 if [[ -d "$NATIVE_ROOT" ]]; then
2075 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2076 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2077 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
2078 if test "$host_vendor" != "apple" ; then
2079 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
2081 final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
2084 final_message="$final_message\n Crosscomp.:\tNo"
2087 final_message="$final_message\n target ARCH:\t$use_arch"
2088 final_message="$final_message\n target CPU:\t$use_cpu"
2090 if test "$use_gles" = "yes"; then
2091 final_message="$final_message\n OpenGLES:\tYes"
2096 if test "$use_gl" = "yes"; then
2097 final_message="$final_message\n OpenGL:\tYes"
2100 final_message="$final_message\n OpenGL:\tNo (Very Slow)"
2101 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2106 if test "$use_alsa" = "yes"; then
2108 AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2109 final_message="$final_message\n ALSA:\t\tYes"
2112 final_message="$final_message\n ALSA:\t\tNo"
2115 if test "$use_dbus" = "yes"; then
2116 final_message="$final_message\n DBUS:\t\tYes"
2118 final_message="$final_message\n DBUS:\t\tNo"
2121 if test "x$use_vdpau" != "xno"; then
2122 final_message="$final_message\n VDPAU:\tYes"
2124 final_message="$final_message\n VDPAU:\tNo"
2127 if test "x$use_vaapi" != "xno"; then
2128 final_message="$final_message\n VAAPI:\tYes"
2130 final_message="$final_message\n VAAPI:\tNo"
2133 if test "x$use_crystalhd" != "xno"; then
2134 final_message="$final_message\n CrystalHD:\tYes"
2136 final_message="$final_message\n CrystalHD:\tNo"
2139 if test "x$use_vtbdecoder" != "xno"; then
2140 final_message="$final_message\n VTBDecoder:\tYes"
2142 final_message="$final_message\n VTBDecoder:\tNo"
2145 if test "$use_openmax" != "no"; then
2146 final_message="$final_message\n OpenMax:\tYes"
2148 final_message="$final_message\n OpenMax:\tNo"
2151 if test "$use_joystick" = "yes"; then
2152 final_message="$final_message\n Joystick:\tYes"
2153 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2155 final_message="$final_message\n Joystick:\tNo"
2158 if test "$use_xrandr" = "yes"; then
2159 final_message="$final_message\n XRandR:\tYes"
2162 final_message="$final_message\n XRandR:\tNo"
2166 if test "$use_waveform" = "yes"; then
2167 final_message="$final_message\n Waveform:\tYes"
2169 final_message="$final_message\n Waveform:\tNo"
2172 if test "$use_spectrum" = "yes"; then
2173 final_message="$final_message\n Spectrum:\tYes"
2175 final_message="$final_message\n Spectrum:\tNo"
2178 if test "$use_goom" = "yes"; then
2179 final_message="$final_message\n GOOM:\t\tYes"
2181 final_message="$final_message\n GOOM:\t\tNo"
2184 if test "$use_rsxs" = "yes"; then
2185 final_message="$final_message\n RSXS:\t\tYes"
2187 final_message="$final_message\n RSXS:\t\tNo"
2190 if test "$use_fishbmc" = "yes"; then
2191 final_message="$final_message\n FishBMC:\tYes"
2193 final_message="$final_message\n FishBMC:\tNo"
2196 if test "$use_projectm" = "yes"; then
2197 final_message="$final_message\n ProjectM:\tYes"
2199 final_message="$final_message\n ProjectM:\tNo"
2202 if test "$use_skin_touched" = "yes"; then
2203 final_message="$final_message\n Skin Touched:\tYes"
2205 final_message="$final_message\n Skin Touched:\tNo"
2208 if test "$use_x11" = "yes"; then
2209 final_message="$final_message\n X11:\t\tYes"
2211 final_message="$final_message\n X11:\t\tNo"
2214 if test "$use_wayland" = "yes"; then
2215 final_message="$final_message\n Wayland:\tYes"
2219 final_message="$final_message\n Wayland:\tNo"
2222 if test "$use_libbluray" = "yes"; then
2223 final_message="$final_message\n Bluray:\tYes"
2225 final_message="$final_message\n Bluray:\tNo"
2228 if test "x$use_texturepacker" != "xno"; then
2229 final_message="$final_message\n TexturePacker:Yes"
2232 final_message="$final_message\n TexturePacker:No"
2236 if test "$use_mid" = "yes"; then
2237 final_message="$final_message\n MID Support:\tYes"
2238 SDL_DEFINES="$SDL_DEFINES -DMID"
2240 final_message="$final_message\n MID Support:\tNo"
2245 if test "x$use_ccache" != "xno"; then
2246 AC_PATH_PROG(CCACHE,ccache,none)
2247 if test "$ac_cv_path_CCACHE" = "none"; then
2248 if test "x$use_ccache" = "xyes"; then
2249 AC_MSG_ERROR([ccache not found.]);
2251 AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2252 final_message="$final_message\n ccache:\tNo"
2255 CC="$ac_cv_path_CCACHE $CC"
2256 CXX="$ac_cv_path_CCACHE $CXX"
2257 AC_MSG_NOTICE(enabling ccache)
2258 final_message="$final_message\n ccache:\tYes"
2261 final_message="$final_message\n ccache:\tNo"
2264 if test "$use_alsa" = "yes"; then
2265 final_message="$final_message\n ALSA Support:\tYes"
2267 final_message="$final_message\n ALSA Support:\tNo"
2270 if test "x$use_pulse" != "xno"; then
2271 XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2272 final_message="$final_message\n PulseAudio:\tYes"
2274 XBMC_STANDALONE_SH_PULSE=/dev/null
2275 final_message="$final_message\n PulseAudio:\tNo"
2278 if test "$use_hal" = "yes"; then
2279 final_message="$final_message\n HAL Support:\tYes"
2281 final_message="$final_message\n HAL Support:\tNo"
2285 if test "$use_dvdcss" = "yes"; then
2286 AC_MSG_NOTICE($dvdcss_enabled)
2287 final_message="$final_message\n DVDCSS:\tYes"
2289 SKIP_CONFIG_DVDCSS=0
2290 DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2292 AC_MSG_NOTICE($dvdcss_disabled)
2293 final_message="$final_message\n DVDCSS:\tNo"
2295 SKIP_CONFIG_DVDCSS=1
2296 DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2298 if test "$host_vendor" = "apple"; then
2299 DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2302 # Google Test Framework
2303 if test "$configure_gtest" = "yes"; then
2304 AC_MSG_NOTICE($gtest_enabled)
2305 final_message="$final_message\n Google Test Framework Configured:\tYes"
2309 AC_MSG_NOTICE($gtest_disabled)
2310 final_message="$final_message\n Google Test Framework Configured:\tNo"
2315 if test "$use_avahi" = "yes"; then
2316 final_message="$final_message\n Avahi:\tYes"
2318 final_message="$final_message\n Avahi:\tNo"
2321 if test "$use_mdnsembedded" != "no"; then
2322 final_message="$final_message\n mDNSEmbedded:\tYes"
2324 final_message="$final_message\n mDNSEmbedded:\tNo"
2327 if test "$use_nonfree" = "yes"; then
2328 final_message="$final_message\n Non-free:\tYes"
2330 AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2333 final_message="$final_message\n Non-free:\tNo"
2336 if test "$use_asap" = "yes"; then
2337 AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2338 if test "$HAVE_GDC" = "no"; then
2339 AC_MSG_ERROR($missing_program);
2341 AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2342 if test "$HAVE_FPC" = "no"; then
2343 AC_MSG_ERROR($missing_program);
2346 AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2347 final_message="$final_message\n ASAP Codec:\tYes"
2350 final_message="$final_message\n ASAP Codec:\tNo"
2353 if test "$use_mysql" = "yes"; then
2354 final_message="$final_message\n MySQL:\tYes"
2357 final_message="$final_message\n MySQL:\tNo"
2360 if test "$use_webserver" = "yes"; then
2361 final_message="$final_message\n Webserver:\tYes"
2364 final_message="$final_message\n Webserver:\tNo"
2368 if test "$use_libssh" != "no"; then
2369 final_message="$final_message\n libssh support:\tYes"
2371 final_message="$final_message\n libssh support:\tNo"
2374 if test "$use_librtmp" != "no"; then
2375 final_message="$final_message\n libRTMP support:\tYes"
2377 final_message="$final_message\n libRTMP support:\tNo"
2380 if test "x$use_samba" != "xno"; then
2381 final_message="$final_message\n libsmbclient support:\tYes"
2383 final_message="$final_message\n libsmbclient support:\tNo"
2386 if test "$use_libnfs" != "no"; then
2387 final_message="$final_message\n libnfs client support:Yes"
2389 final_message="$final_message\n libnfs client support:No"
2392 if test "x$use_libafpclient" != "xno"; then
2393 final_message="$final_message\n libafpclient support:\tYes"
2395 final_message="$final_message\n libafpclient support:\tNo"
2398 if test "$use_airplay" != "no"; then
2399 final_message="$final_message\n AirPlay support:\tYes"
2401 final_message="$final_message\n AirPLay support:\tNo"
2404 if test "x$use_airtunes" != "xno"; then
2405 if test "x$USE_LIBSHAIRPLAY" == "x1"; then
2406 final_message="$final_message\n AirTunes support (libshairplay):\tYes"
2408 final_message="$final_message\n AirTunes support (libshairport):\tYes"
2411 final_message="$final_message\n AirTunes support:\tNo"
2414 if test "x$use_upnp" != "xno"; then
2415 final_message="$final_message\n UPnP support:\t\tYes"
2417 AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2420 final_message="$final_message\n UPnP support:\t\tNo"
2423 if test "$use_optical_drive" = "yes"; then
2424 final_message="$final_message\n Optical drive:\tYes"
2426 final_message="$final_message\n Optical drive:\tNo"
2429 if test "x$use_libudev" != "xno"; then
2430 final_message="$final_message\n libudev support:\tYes"
2432 final_message="$final_message\n libudev support:\tNo"
2435 if test "x$use_libusb" != "xno"; then
2436 final_message="$final_message\n libusb support:\tYes"
2438 final_message="$final_message\n libusb support:\tNo"
2441 if test "x$use_libcec" != "xno"; then
2442 final_message="$final_message\n libcec support:\tYes"
2444 final_message="$final_message\n libcec support:\tNo"
2447 if test "x$use_libmp3lame" != "xno"; then
2448 final_message="$final_message\n libmp3lame support:\tYes"
2450 final_message="$final_message\n libmp3lame support:\tNo"
2453 if test "x$use_libvorbisenc" != "xno"; then
2454 final_message="$final_message\n libvorbisenc support:\tYes"
2456 final_message="$final_message\n libvorbisenc support:\tNo"
2459 if test "x$use_libcap" != "xno"; then
2460 final_message="$final_message\n libcap support:\tYes"
2462 final_message="$final_message\n libcap support:\tNo"
2465 if test "x$add_players" != "xno"; then
2466 final_message="$final_message\n additional players:\tYes, $add_players"
2468 final_message="$final_message\n additional players:\tNo"
2471 if test "x$add_codecs" != "xno"; then
2472 final_message="$final_message\n additional codecs:\tYes, $add_codecs"
2474 final_message="$final_message\n additional codecs:\tNo"
2477 ### External libraries messages
2479 if test "$use_external_ffmpeg" = "yes"; then
2480 final_message="$final_message\n External FFmpeg:\tYes"
2482 final_message="$final_message\n External FFmpeg:\tNo"
2485 if test "$host_vendor" = "apple" ; then
2486 # built internal but referenced as external, we link directly to them.
2487 # this MUST be the last thing before OUTPUT_FILES as they do not
2488 # exist until after we build FFMpeg.
2489 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2490 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2491 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2492 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2493 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2494 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2495 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2499 DISABLE_PVR_ADDON_CONFIG=1
2500 if [[ -f "pvr-addons/Makefile.am" ]]; then
2501 final_message="$final_message\n PVR add-ons:\t\tYes"
2503 DISABLE_PVR_ADDON_CONFIG=0
2505 final_message="$final_message\n PVR add-ons:\t\tNo"
2508 OUTPUT_FILES="Makefile \
2510 addons/skin.confluence/media/Makefile \
2512 xbmc/cdrip/Makefile \
2513 xbmc/cores/Makefile \
2514 xbmc/cores/VideoRenderers/Makefile \
2515 xbmc/cores/dvdplayer/Makefile \
2517 lib/libdvd/Makefile \
2518 xbmc/cores/DllLoader/Makefile \
2519 xbmc/cores/DllLoader/exports/Makefile \
2520 xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2521 xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2522 xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2523 xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2524 xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2525 xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2526 xbmc/cores/AudioEngine/Makefile \
2527 xbmc/cores/paplayer/Makefile \
2528 xbmc/cores/omxplayer/Makefile \
2529 lib/timidity/Makefile \
2530 lib/xbadpcm/Makefile \
2532 lib/nosefart/Makefile \
2533 lib/libsidplay2/Makefile \
2534 lib/vgmstream/Makefile \
2535 lib/snesapu/SNES/SNESAPU/Makefile \
2536 lib/stsound/StSoundLibrary/Makefile \
2537 xbmc/cores/playercorefactory/Makefile \
2538 xbmc/music/karaoke/Makefile \
2540 xbmc/guilib/Makefile \
2541 xbmc/input/linux/Makefile \
2542 xbmc/interfaces/Makefile \
2543 xbmc/network/Makefile \
2544 xbmc/network/upnp/Makefile \
2545 lib/libRTV/Makefile \
2546 lib/libexif/Makefile \
2547 lib/libXDAAP/Makefile \
2548 lib/cmyth/Makefile \
2549 lib/libhdhomerun/Makefile \
2550 lib/libsquish/Makefile \
2551 lib/cximage-6.0/Makefile \
2552 lib/libUPnP/Makefile \
2553 xbmc/DllPaths_generated.h \
2554 xbmc/DllPaths_generated_android.h \
2555 xbmc/freebsd/Makefile \
2556 xbmc/linux/Makefile \
2557 xbmc/filesystem/Makefile \
2558 xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2559 xbmc/visualizations/XBMCProjectM/Makefile \
2560 xbmc/visualizations/Goom/Makefile \
2561 xbmc/visualizations/OpenGLSpectrum/Makefile \
2562 xbmc/visualizations/fishBMC/Makefile \
2563 xbmc/visualizations/WaveForm/Makefile \
2564 xbmc/windowing/Makefile \
2565 xbmc/windowing/egl/Makefile \
2566 lib/addons/library.xbmc.addon/Makefile \
2567 lib/addons/library.xbmc.codec/Makefile \
2568 lib/addons/library.xbmc.gui/Makefile \
2569 lib/addons/library.xbmc.pvr/Makefile \
2570 xbmc/visualizations/EGLHelpers/Makefile \
2571 tools/Linux/xbmc.sh \
2572 tools/Linux/xbmc-standalone.sh \
2573 tools/TexturePacker/Makefile \
2574 tools/EventClients/Clients/OSXRemote/Makefile \
2575 xbmc/peripherals/bus/Makefile \
2576 xbmc/peripherals/devices/Makefile \
2577 xbmc/android/activity/Makefile \
2578 xbmc/android/loader/Makefile \
2579 xbmc/android/jni/Makefile \
2580 xbmc/utils/Makefile \
2581 xbmc/main/Makefile \
2582 project/cmake/xbmc-config.cmake"
2584 if test "$use_wayland" = "yes"; then
2585 OUTPUT_FILES="$OUTPUT_FILES xbmc/windowing/tests/wayland/Makefile"
2588 if test "$use_skin_touched" = "yes"; then
2589 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2592 if test "$use_codec_libstagefright" = "yes"; then
2593 OUTPUT_FILES="$OUTPUT_FILES xbmc/cores/dvdplayer/DVDCodecs/Video/libstagefrightICS/Makefile"
2596 OUTPUT_FILES="$OUTPUT_FILES \
2597 xbmc/interfaces/python/Makefile \
2598 xbmc/interfaces/python/test/Makefile"
2600 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2601 # .dummy.am does nothing.
2602 AC_CONFIG_FILES([.dummy])
2604 AC_CONFIG_FILES([${OUTPUT_FILES}])
2605 OUTPUT_FILES="$OUTPUT_FILES \
2611 AC_SUBST(CXX_FOR_BUILD)
2612 AC_SUBST(CC_FOR_BUILD)
2613 AC_SUBST(CFLAGS_FOR_BUILD)
2614 AC_SUBST(CXXFLAGS_FOR_BUILD)
2615 AC_SUBST(LDFLAGS_FOR_BUILD)
2616 AC_SUBST(SDL_DEFINES)
2617 AC_SUBST(BUILD_DVDCSS)
2618 AC_SUBST(DISABLE_WAVEFORM)
2619 AC_SUBST(DISABLE_SPECTRUM)
2620 AC_SUBST(DISABLE_GOOM)
2621 AC_SUBST(DISABLE_RSXS)
2622 AC_SUBST(DISABLE_FISHBMC)
2623 AC_SUBST(DISABLE_PROJECTM)
2624 AC_SUBST(USE_SKIN_TOUCHED)
2625 AC_SUBST(USE_EXTERNAL_FFMPEG)
2626 AC_SUBST(USE_STATIC_FFMPEG)
2627 AC_SUBST(USE_LIBAV_HACKS)
2628 AC_SUBST(PYTHON_VERSION)
2629 AC_SUBST(OUTPUT_FILES)
2630 AC_SUBST(HAVE_XBMC_NONFREE)
2631 AC_SUBST(USE_ASAP_CODEC)
2632 AC_SUBST(LIBCURL_BASENAME)
2633 AC_SUBST(LIBFLAC_BASENAME)
2634 AC_SUBST(LIBVORBISFILE_BASENAME)
2635 AC_SUBST(LIBMODPLUG_BASENAME)
2636 AC_SUBST(LIBMAD_BASENAME)
2637 AC_SUBST(LIBOGG_BASENAME)
2638 AC_SUBST(LIBVORBISENC_BASENAME)
2639 AC_SUBST(LIBVORBIS_BASENAME)
2640 AC_SUBST(LIBASS_BASENAME)
2641 AC_SUBST(LIBMEPG2_BASENAME)
2642 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2643 AC_SUBST(USE_OPENGL)
2644 AC_SUBST(USE_OPENGLES)
2647 AC_SUBST(USE_CRYSTALHD)
2648 AC_SUBST(USE_LIBSMBCLIENT)
2649 AC_SUBST(USE_LIBNFS)
2650 AC_SUBST(USE_LIBAFPCLIENT)
2651 AC_SUBST(USE_AIRPLAY)
2652 AC_SUBST(USE_OPENMAX)
2654 AC_SUBST(HAVE_LIBPULSE)
2655 AC_SUBST(USE_XRANDR)
2657 AC_SUBST(USE_TEXTUREPACKER)
2658 AC_SUBST(USE_AIRTUNES)
2659 AC_SUBST(USE_LIBUDEV)
2660 AC_SUBST(USE_LIBUSB)
2661 AC_SUBST(USE_LIBCEC)
2663 AC_SUBST(USE_WAYLAND)
2664 AC_SUBST(USE_WEB_SERVER)
2666 AC_SUBST(USE_XKBCOMMON)
2667 AC_SUBST(USE_OMXLIB)
2668 AC_SUBST(USE_ANDROID)
2669 AC_SUBST(GTEST_CONFIGURED)
2670 AC_SUBST(USE_DOXYGEN)
2671 AC_SUBST(USE_PVR_ADDONS)
2672 AC_SUBST(GNUTLS_ALL_LIBS)
2673 AC_SUBST(VORBISENC_ALL_LIBS)
2675 # pushd and popd are not available in other shells besides bash, so implement
2676 # our own pushd/popd functions
2681 if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2683 XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2686 AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2691 if [[ -n "$XB_DIRSTACK" ]]; then
2692 XB_DIRSTACK="${XB_DIRSTACK#* }"
2693 cd "${XB_DIRSTACK%% *}"
2696 AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2700 # Function to run the configure scripts in our submodules
2701 # Consists of three paramaters, the path to the submodule, the configure command
2702 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2703 # running the script, anything else if not.
2704 AC_DEFUN([XB_CONFIG_MODULE],[
2705 AC_CONFIG_COMMANDS_POST([
2706 if [[ $3 != "1" ]]; then
2707 if [[ -d $1 ]]; then
2710 if [[ $? -ne 0 ]]; then
2712 AC_MSG_ERROR([[Submodule $1 failed to configure]])
2717 AC_MSG_ERROR([[Submodule $1 does not exist]])
2720 AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2725 XB_CONFIG_MODULE([lib/ffmpeg], [
2726 if test "$host_vendor" = "apple" ; then
2727 ffmpg_config="--target-os=$ffmpeg_target_os"
2728 # handle disables first, we do individual enables later
2729 ffmpg_config="$ffmpg_config --disable-muxers --disable-encoders"
2730 ffmpg_config="$ffmpg_config --disable-devices --disable-doc"
2731 ffmpg_config="$ffmpg_config --disable-ffplay --disable-ffmpeg"
2732 ffmpg_config="$ffmpg_config --disable-ffprobe --disable-ffserver"
2733 ffmpg_config="$ffmpg_config --enable-vda --disable-crystalhd"
2734 ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2736 # handle conditional enables/disables
2737 if test "$use_debug" = "no"; then
2738 ffmpg_config="$ffmpg_config --disable-debug"
2740 if test "$use_cpu" != "no"; then
2741 ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2743 if test "$use_arch" != "no"; then
2744 ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2746 if test "$use_arch" = "arm"; then
2747 ffmpg_config="$ffmpg_config --enable-pic"
2748 ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2749 if test "$use_neon" = "yes"; then
2750 ffmpg_config="$ffmpg_config --enable-neon"
2752 ffmpg_config="$ffmpg_config --disable-neon"
2755 ffmpg_config="$ffmpg_config --disable-amd3dnow"
2757 if test "$use_ffmpeg_libvorbis" = "yes"; then
2758 ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2760 ffmpg_config="$ffmpg_config --disable-libvorbis"
2762 if test "$have_gnutls" = "yes"; then
2763 ffmpg_config="$ffmpg_config --enable-gnutls"
2766 # handle individual enables
2767 ffmpg_config="$ffmpg_config --enable-gpl"
2768 ffmpg_config="$ffmpg_config --enable-postproc"
2769 ffmpg_config="$ffmpg_config --enable-static --enable-pthreads"
2770 ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2771 ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2772 ffmpg_config="$ffmpg_config --enable-protocol=http"
2773 ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2775 # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2778 ffmpg_config="$ffmpg_config --cc=clang" ;;
2780 ffmpg_config="$ffmpg_config --cc=$CC" ;;
2783 # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2784 FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2786 LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2788 # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2789 # dependency files in the right place, replace it with something that works
2792 sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2795 # ffmpeg will use yasm found at ${prefix}/bin during configure
2796 # but then hardcodes 'yasm' in config.mak, fix it.
2797 sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2798 sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2799 sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2804 LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2806 --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2808 `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2809 `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2810 `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2811 `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2812 `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2813 --target-os=$ffmpeg_target_os \
2815 --enable-muxer=spdif \
2816 --enable-muxer=adts \
2817 --enable-muxer=asf \
2818 --enable-muxer=ipod \
2819 --disable-encoders \
2820 --enable-encoder=ac3 \
2821 --enable-encoder=aac \
2822 --enable-encoder=wmav2 \
2823 `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2824 --disable-decoder=mpeg_xvmc \
2828 --disable-ffserver \
2830 --disable-crystalhd \
2831 `if test "$use_static_ffmpeg" = "yes"; then echo --enable-static; else echo --enable-shared; fi` \
2835 `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2836 `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2837 `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2838 --enable-protocol=http \
2839 `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2841 --enable-runtime-cpudetect \
2842 `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2843 `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2844 `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2845 else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2846 `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2848 sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2849 sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2851 ], [$USE_EXTERNAL_FFMPEG])
2853 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2857 CFLAGS="$CFLAGS $DROID_DVDLIB_SEEK64" \
2858 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2859 --host=$host_alias \
2860 --build=$build_alias \
2861 --target=$target_alias \
2865 ], [$SKIP_CONFIG_DVDCSS])
2867 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2869 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
2870 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2871 --host=$host_alias \
2872 --build=$build_alias \
2873 --target=$target_alias \
2879 mkdir -p `pwd`/../includes/dvdread
2880 cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2881 cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2884 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2886 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
2887 --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2888 --with-dvdread-config="`pwd`/../dvdread-config" \
2889 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2890 --host=$host_alias \
2891 --build=$build_alias \
2892 --target=$target_alias \
2898 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2900 rm -f CMakeCache.txt && \
2901 CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2902 -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF \
2903 -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}" \
2904 -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2905 -DCMAKE_INSTALL_PREFIX="${prefix}" \
2906 -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}" \
2907 -DINCLUDE_INSTALL_DIR:PATH="${includedir}" \
2908 -DLIB_INSTALL_DIR:PATH="${libdir}" \
2909 -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" \
2910 -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2911 if test "$host_vendor" = "apple" ; then
2912 # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2913 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2914 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2915 sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2918 ], [$DISABLE_PROJECTM])
2920 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2923 CXXFLAGS="$CXXFLAGS" \
2924 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2925 --host=$host_alias \
2926 --build=$build_alias \
2927 --target=$target_alias \
2933 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2934 if test "$host_vendor" = "apple"; then
2935 # clang treats inlines different
2938 TEMPCFLAGS="$CFLAGS";;
2940 TEMPCFLAGS="${CFLAGS} -fgnu89-inline";;
2943 TEMPCFLAGS="$CFLAGS";
2948 CFLAGS="$TEMPCFLAGS" \
2949 CXXFLAGS="$CXXFLAGS" \
2950 `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2951 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2952 --host=$host_alias \
2953 --build=$build_alias \
2954 --target=$target_alias \
2955 --without-xscreensaver \
2958 --disable-fieldlines \
2962 --disable-hyperspace \
2965 if echo "$ARCH" | grep -q freebsd ; then
2966 sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2970 XB_CONFIG_MODULE([lib/cpluff], [
2971 ./configure --disable-nls \
2972 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2973 --host=$host_alias \
2974 --build=$build_alias \
2975 --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2976 #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"
2979 XB_CONFIG_MODULE([lib/gtest], [
2984 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2985 --host=$host_alias \
2986 --build=$build_alias \
2987 --target=$target_alias \
2991 ], [$SKIP_CONFIG_GTEST])
2993 XB_CONFIG_MODULE([pvr-addons], [
2995 --prefix="${prefix}" \
2996 --host=$host_alias \
2997 --build=$build_alias \
2998 --target=$target_alias \
3002 CXXFLAGS="$CXXFLAGS"
3003 ], [$DISABLE_PVR_ADDON_CONFIG])
3007 final_message="$final_message\n prefix:\t$prefix\n$dashes"
3008 echo -e "$final_message\n"