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 wayland_enabled="== Wayland enabled. =="
135 wayland_disabled="== Wayland disabled. =="
136 x11_enabled="== X11 enabled. =="
137 x11_disabled="== X11 disabled. =="
138 pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
139 pulse_disabled="== PulseAudio support manually disabled. =="
140 dvdcss_enabled="== DVDCSS support enabled. =="
141 dvdcss_disabled="== DVDCSS support disabled. =="
142 hal_not_found="== Could not find hal. HAL support disabled. =="
143 halstorage_not_found="== Could not find hal-storage. HAL support disabled. =="
144 hal_disabled="== HAL support disabled. =="
145 avahi_not_found="== Could not find libavahi-common or libavahi-client. Avahi support disabled. =="
146 avahi_disabled="== Avahi support disabled. =="
147 mdnsembedded_not_found="== Could not find mDNSEmbedded. Might prevent zeroconf support. =="
148 mdnsembedded_disabled="== mDNSEmbedded support disabled. =="
149 vdpau_not_found="== Could not find libvdpau. VDPAU support disabled. =="
150 vdpau_disabled="== VDPAU support manually disabled. =="
151 vaapi_not_found="== Could not find libva. VAAPI support disabled. =="
152 vaapi_disabled="== VAAPI support manually disabled. =="
153 crystalhd_not_found="== Could not find libcrystalhd. CrystalHD support disabled. =="
154 crystalhd_disabled="== CrystalHD support manually disabled. =="
155 vtbdecoder_enabled="== VTBDecoder support enabled. =="
156 vtbdecoder_disabled="== VTBDecoder support manually disabled. =="
157 openmax_disabled="== OpenMax support manually disabled. =="
158 openmax_not_found="== Could not find libnvomx. OpenMax support disabled. =="
159 ssh_not_found="== Could not find libssh. =="
160 ssh_disabled="== SSH SFTP disabled. =="
161 librtmp_not_found="== Could not find libRTMP. RTMP support disabled. =="
162 librtmp_disabled="== RTMP support disabled. =="
163 libnfs_not_found="== Could not find libnfs. NFS client support disabled. =="
164 libnfs_disabled="== NFS support disabled. =="
165 libafpclient_not_found="== Could not find libafpclient. AFP client support disabled. =="
166 libafpclient_disabled="== AFP support disabled. =="
167 libshairport_not_found="== Could not find libshairport. =="
168 libshairplay_not_found="== Could not find libshairplay. =="
169 samba_disabled="== SAMBA support disabled. =="
170 libplist_not_found="== Could not find libplist. AirPlay support disabled. =="
171 libplist_disabled="== AirPlay support disabled. =="
172 alsa_not_found="== Could not find ALSA. ALSA support disabled. =="
173 dbus_not_found="== Could not find DBUS. DBUS support disabled. =="
174 libcap_disabled="== Capabilities detection support disabled. =="
175 libcap_not_found="== Could not find libcap. Capabilities detection support disabled. =="
176 gtest_enabled="== Google Test Framework will be configured. =="
177 gtest_disabled="== Google Test Framework will not be configured. =="
179 libudev_not_found="== Could not find libudev. Will use polling to check for device changes. =="
180 libudev_disabled="== udev support disabled. Will use polling to check for device changes. =="
181 libusb_not_found="== Could not find libusb. Plug and play USB device support will not be available. =="
182 libusb_disabled="== libusb disabled. Plug and play USB device support will not be available. =="
183 libusb_disabled_udev_found="== libusb disabled. =="
184 libcec_enabled="== libcec enabled. =="
185 libcec_disabled="== libcec disabled. CEC adapter support will not be available. =="
187 # External library message strings
188 external_libraries_enabled="== Use of all supported external libraries enabled. =="
189 external_libraries_disabled="== Use of all supported external libraries disabled. =="
190 external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
191 external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
192 ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
193 dashes="------------------------"
194 final_message="\n XBMC Configuration:"
195 final_message="\n$dashes$final_message\n$dashes"
197 AC_ARG_ENABLE([shared-lib],
198 [AS_HELP_STRING([--enable-shared-lib],
199 [build libxbmc. helpful for tests (default is no)])],
200 [build_shared_lib=$enableval],
201 [build_shared_lib=no])
203 AC_ARG_ENABLE([debug],
204 [AS_HELP_STRING([--enable-debug],
205 [enable debugging information (default is yes)])],
206 [use_debug=$enableval],
210 [AS_HELP_STRING([--with-arch],
211 [build with given arch passing to internal ffmpeg (default is no, needed for crosscompiling)])],
215 AC_ARG_WITH([platform],
216 [AS_HELP_STRING([--with-platform],
217 [use a pre-configured config for common arm boards])],
218 [use_platform=$withval],
222 [AS_HELP_STRING([--with-cpu],
223 [build with given cpu passing to ffmpeg (default is no)])],
227 AC_ARG_ENABLE([neon],
228 [AS_HELP_STRING([--enable-neon],
229 [enable neon passing to ffmpeg (default is no)])],
230 [use_neon=$enableval],
233 AC_ARG_ENABLE([optimizations],
234 [AS_HELP_STRING([--enable-optimizations],
235 [enable optimization (default is yes)])],
236 [use_optimizations=$enableval],
237 [use_optimizations=yes])
240 [AS_HELP_STRING([--enable-gl],
241 [enable OpenGL rendering (default is yes)])],
245 AC_ARG_ENABLE([gles],
246 [AS_HELP_STRING([--enable-gles],
247 [enable OpenGLES rendering (default is no)])],
248 [use_gles=$enableval],
252 [AS_HELP_STRING([--enable-sdl],
253 [enable SDL (default is auto)])],
254 [use_sdl=$enableval],
257 AC_ARG_ENABLE([vdpau],
258 [AS_HELP_STRING([--enable-vdpau],
259 [enable VDPAU decoding (default is auto)])],
260 [use_vdpau=$enableval],
263 AC_ARG_ENABLE([vaapi],
264 [AS_HELP_STRING([--enable-vaapi],
265 [enable VAAPI decoding (default is auto)])],
266 [use_vaapi=$enableval],
269 AC_ARG_ENABLE([crystalhd],
270 [AS_HELP_STRING([--enable-crystalhd],
271 [enable CrystalHD decoding (default is auto)])],
272 [use_crystalhd=$enableval],
273 [use_crystalhd=auto])
275 AC_ARG_ENABLE([vtbdecoder],
276 [AS_HELP_STRING([--enable-vtbdecoder],
277 [enable VTBDecoder decoding (default is auto)])],
278 [use_vtbdecoder=$enableval],
279 [use_vtbdecoder=auto])
281 AC_ARG_ENABLE([openmax],
282 [AS_HELP_STRING([--enable-openmax],
283 [enable OpenMax decoding (default is auto, requires OpenGLES)])],
284 [use_openmax=$enableval],
287 AC_ARG_ENABLE([tegra],
288 [AS_HELP_STRING([--enable-tegra],
289 [enable Tegra2 arm (default is no)])],
290 [use_tegra=$enableval],
293 AC_ARG_ENABLE([profiling],
294 [AS_HELP_STRING([--enable-profiling],
295 [enable gprof profiling (default is no)])],
296 [use_profiling=$enableval],
299 AC_ARG_ENABLE([joystick],
300 [AS_HELP_STRING([--enable-joystick],
301 [enable SDL joystick support (default is yes)])],
302 [use_joystick=$enableval],
305 AC_ARG_ENABLE([xrandr],
306 [AS_HELP_STRING([--enable-xrandr],
307 [enable XRandR support (default is yes)])],
308 [use_xrandr=$enableval],
311 AC_ARG_ENABLE([waveform],
312 [AS_HELP_STRING([--enable-waveform],
313 [enable Waveform visualisation (default is yes)])],
314 [use_waveform=$enableval],
317 AC_ARG_ENABLE([spectrum],
318 [AS_HELP_STRING([--enable-spectrum],
319 [enable Spectrum visualisation (default is yes)])],
320 [use_spectrum=$enableval],
323 AC_ARG_ENABLE([goom],
324 [AS_HELP_STRING([--enable-goom],
325 [enable GOOM visualisation (default is no)])],
326 [use_goom=$enableval],
329 AC_ARG_ENABLE([rsxs],
330 [AS_HELP_STRING([--enable-rsxs],
331 [enable really slick X screensavers (default is yes)])],
332 [use_rsxs=$enableval],
335 AC_ARG_ENABLE([fishbmc],
336 [AS_HELP_STRING([--enable-fishbmc],
337 [enable FishBMC visualisation (default is yes)])],
338 [use_fishbmc=$enableval],
341 AC_ARG_ENABLE([projectm],
342 [AS_HELP_STRING([--enable-projectm],
343 [enable ProjectM visualisation (default is yes)])],
344 [use_projectm=$enableval],
347 AC_ARG_ENABLE([wayland],
348 [AS_HELP_STRING([--enable-wayland],
349 [enable wayland (default is no) 'Linux Only'])],
350 [use_wayland=$enableval],
354 [AS_HELP_STRING([--enable-x11],
355 [enable x11 (default is yes) 'Linux Only'])],
356 [use_x11=$enableval],
359 AC_ARG_ENABLE([ccache],
360 [AS_HELP_STRING([--enable-ccache],
361 [enable building with ccache feature (default is auto)])],
362 [use_ccache=$enableval],
365 AC_ARG_ENABLE([alsa],
366 [AS_HELP_STRING([--disable-alsa],
367 [disable ALSA support (only for linux/freebsd)])],
368 [use_alsa=$enableval],
371 AC_ARG_ENABLE([pulse],
372 [AS_HELP_STRING([--enable-pulse],
373 [enable PulseAudio support (default is no)])],
374 [use_pulse=$enableval],
378 [AS_HELP_STRING([--disable-ssh],
379 [disable SSH SFTP support (default is enabled)])],
380 [use_ssh=$enableval],
383 AC_ARG_ENABLE([rtmp],
384 [AS_HELP_STRING([--enable-rtmp],
385 [enable RTMP support via librtmp (default is auto)])],
386 [use_librtmp=$enableval],
389 AC_ARG_ENABLE([samba],
390 [AS_HELP_STRING([--disable-samba],
391 [disable SAMBA support (default is enabled)])],
392 [use_samba=$enableval],
396 [AS_HELP_STRING([--enable-nfs],
397 [enable NFS support via libnfs (default is auto)])],
398 [use_libnfs=$enableval],
401 AC_ARG_ENABLE([afpclient],
402 [AS_HELP_STRING([--enable-afpclient],
403 [enable AFP support via libafpclient (default is auto)])],
404 [use_libafpclient=$enableval],
405 [use_libafpclient=auto])
407 AC_ARG_ENABLE([airplay],
408 [AS_HELP_STRING([--enable-airplay],
409 [enable AirPlay support(default is auto)])],
410 [use_airplay=$enableval],
413 AC_ARG_ENABLE([airtunes],
414 [AS_HELP_STRING([--enable-airtunes],
415 [enable AirTunes support(default is auto)])],
416 [use_airtunes=$enableval],
419 AC_ARG_ENABLE([upnp],
420 [AS_HELP_STRING([--disable-upnp],
421 [disable UPnP support (default is enabled)])],
422 [use_upnp=$enableval],
425 AC_ARG_ENABLE([ffmpeg_libvorbis],
426 [AS_HELP_STRING([--enable-ffmpeg-libvorbis],
427 [enable FFmpeg vorbis encoding (default is no)])],
428 [use_ffmpeg_libvorbis=$enableval],
429 [use_ffmpeg_libvorbis=no])
431 AC_ARG_ENABLE([dvdcss],
432 [AS_HELP_STRING([--enable-dvdcss],
433 [enable DVDCSS support (default is yes)])],
434 [use_dvdcss=$enableval],
438 [AS_HELP_STRING([--enable-mid],
439 [enable MID support (default is no)])],
440 [use_mid=$enableval],
444 [AS_HELP_STRING([--disable-hal],
445 [disable HAL support (default is enabled if hal and hal-storage is found)])],
446 [use_hal=$enableval],
449 AC_ARG_ENABLE([avahi],
450 [AS_HELP_STRING([--disable-avahi],
451 [disable Avahi support (default is enabled if libavahi-common and libavahi-client is found)])],
452 [use_avahi=$enableval],
455 AC_ARG_ENABLE([mdnsembedded],
456 [AS_HELP_STRING([--disable-mdnsembedded],
457 [disable mDNSEmbedded support (default is auto)])],
458 [use_mdnsembedded=$enableval],
459 [use_mdnsembedded=auto])
461 AC_ARG_ENABLE([non-free],
462 [AS_HELP_STRING([--disable-non-free],
463 [disable componentents with non-compliant licenses])],
464 [use_nonfree=$enableval],
467 AC_ARG_ENABLE([asap-codec],
468 [AS_HELP_STRING([--enable-asap-codec],
469 [enable ASAP ADPCM support])],
470 [use_asap=$enableval],
473 AC_ARG_ENABLE([mysql],
474 [AS_HELP_STRING([--disable-mysql],
476 [use_mysql=$enableval],
479 AC_ARG_ENABLE([webserver],
480 [AS_HELP_STRING([--disable-webserver],
481 [disable webserver])],
482 [use_webserver=$enableval],
485 AC_ARG_ENABLE([optical-drive],
486 [AS_HELP_STRING([--disable-optical-drive],
487 [disable optical drive])],
488 [use_optical_drive=$enableval],
489 [use_optical_drive=yes])
491 AC_ARG_ENABLE([libbluray],
492 [AS_HELP_STRING([--enable-libbluray],
493 [enable libbluray support])],
494 [use_libbluray=$enableval],
495 [use_libbluray=auto])
497 AC_ARG_ENABLE([texturepacker],
498 [AS_HELP_STRING([--enable-texturepacker],
499 [enable texturepacker support (default is yes)])],
500 [use_texturepacker=$enableval],
501 [use_texturepacker=auto])
503 AC_ARG_WITH([lirc-device],
504 [AS_HELP_STRING([--with-lirc-device=file],
505 [specify the default LIRC device (default is /dev/lircd)])],
506 [lirc_device=$withval],
507 [lirc_device=/dev/lircd])
508 AC_DEFINE_UNQUOTED([LIRC_DEVICE], ["$lirc_device"], [Default LIRC device])
510 AC_ARG_ENABLE([udev],
511 [AS_HELP_STRING([--enable-udev],
512 [enable udev support (default is auto)])],
513 [use_libudev=$enableval],
516 AC_ARG_ENABLE([libusb],
517 [AS_HELP_STRING([--enable-libusb],
518 [enable libusb support (default is auto)])],
519 [use_libusb=$enableval],
522 AC_ARG_ENABLE([libcec],
523 [AS_HELP_STRING([--enable-libcec],
524 [enable libcec support (default is auto)])],
525 [use_libcec=$enableval],
528 AC_ARG_ENABLE([libmp3lame],
529 [AS_HELP_STRING([--enable-libmp3lame],
530 [enable lame mp3 encoder support (default is auto)])],
531 [use_libmp3lame=$enableval],
532 [use_libmp3lame=auto])
534 AC_ARG_ENABLE([libvorbisenc],
535 [AS_HELP_STRING([--enable-libvorbisenc],
536 [enable vorbis encoder support (default is auto)])],
537 [use_libvorbisenc=$enableval],
538 [use_libvorbisenc=auto])
540 AC_ARG_ENABLE([libcap],
541 [AS_HELP_STRING([--enable-libcap],
542 [enable libcap support (default is auto)])],
543 [use_libcap=$enableval],
546 AC_ARG_ENABLE([player],
547 [AS_HELP_STRING([--enable-player],
548 [enable additional players from a list of comma separated names, (default is none, choices are omxplayer)])],
549 [add_players=$enableval],
552 AC_ARG_ENABLE([gtest],
553 [AS_HELP_STRING([--enable-gtest],
554 [configure Google Test Framework (default is no)])],
555 [configure_gtest=$enableval],
556 [configure_gtest=no])
558 AC_ARG_ENABLE([codec],
559 [AS_HELP_STRING([--enable-codec],
560 [enable additional codecs from a list of comma separated names, (default is none, choices are amcodec, libstagefright)])],
561 [add_codecs=$enableval],
564 ### External libraries options
565 AC_ARG_ENABLE([external-libraries],
566 [AS_HELP_STRING([--enable-external-libraries],
567 [enable use of all supported external libraries (default is no) 'Linux only'])],
568 [use_external_libraries=$enableval],
569 [use_external_libraries=no])
571 AC_ARG_ENABLE([external-ffmpeg],
572 [AS_HELP_STRING([--enable-external-ffmpeg],
573 [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
574 [use_external_ffmpeg=$enableval],
575 [use_external_ffmpeg=$use_external_libraries])
577 AC_ARG_ENABLE([libav-compat],
578 [AS_HELP_STRING([--enable-libav-compat],
579 [build a wrapper around libav to provide the functions needed by XBMC. This is
580 *not* supported by XBMC developers and is provided only for convenience. (default is no) 'Linux only'])],
581 [use_libav_hacks=$enableval],
582 [use_libav_hacks=no])
584 ### End of external library options
586 if test "x$host_vendor" != "xapple"; then
587 DEFAULT_COMPILE_FLAGS="-fPIC -DPIC -D_REENTRANT"
588 DEFAULT_COMPILE_FLAGS="$DEFAULT_COMPILE_FLAGS -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
591 # Checks for programs.
592 PASSED_CFLAGS=$CFLAGS # Hack to override autoconf default values
595 CFLAGS="$PASSED_CFLAGS $DEFAULT_COMPILE_FLAGS"
596 PASSED_CXXFLAGS=$CXXFLAGS # Hack to override autoconf default values
598 AX_PROG_CXX_FOR_BUILD
599 CXXFLAGS="$PASSED_CXXFLAGS $DEFAULT_COMPILE_FLAGS"
606 OBJDUMP="${OBJDUMP:-objdump}"
608 # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
609 # there is no autoconf variable which will give
610 # the correct output format when doing cross compilation
611 # so we have to use our own var here
612 # defaults to the build side target_os
613 # and should be overridden for cross below (see android)
614 ffmpeg_target_os=$(tolower $(uname -s))
616 # host detection and setup
618 i*86*-linux-android*)
619 target_platform=target_android
623 ffmpeg_target_os=linux
633 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
640 if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
650 ARCH="x86_64-freebsd"
666 PYTHON_LDFLAGS="-L${prefix}/lib -lpython2.6"
667 PYTHON_CPPFLAGS="-I${prefix}/include/python2.6"
668 PYTHON_SITE_PKG="${prefix}/lib/python2.6/site-packages"
669 PYTHON_NOVERSIONCHECK="no-check"
676 powerpc-apple-darwin*)
683 powerpc-*-linux-gnu*)
686 powerpc64-*-linux-gnu*)
687 ARCH="powerpc64-linux"
692 ffmpeg_target_os=linux
700 arm*-*linux-android*)
701 target_platform=target_android
705 ffmpeg_target_os=linux
716 AC_MSG_ERROR(unsupported host ($host))
720 check_sdl_arch=[`file $NATIVE_ROOT/lib/libSDL_image.dylib | awk '{print $NF}'`]
721 if test "x$check_sdl_arch" = "xi386" ; then
722 DARWIN_NATIVE_ARCH=-m32
723 elif test "x$check_sdl_arch" = "xx86_64" ; then
724 DARWIN_NATIVE_ARCH=-m64
726 AC_SUBST([DARWIN_NATIVE_ARCH])
728 if test "$target_platform" = "target_android" ; then
730 webserver_checkdepends=yes
731 CFLAGS="$CFLAGS -Wno-psabi"
732 DROID_DVDLIB_SEEK64="-D_FILE_OFFSET_BITS=64 -D_OFF_T_DEFINED_ -Doff_t=off64_t -Dlseek=lseek64"
733 CXXFLAGS="$CXXFLAGS -Wno-psabi"
734 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
737 case $use_platform in
739 target_platform=target_raspberry_pi
743 use_hardcoded_tables="yes"
746 AC_DEFINE(HAS_EGLGLES, [1], [Define if supporting EGL based GLES Framebuffer])
747 USE_OMXLIB=1; AC_DEFINE([HAVE_OMXLIB],[1],["Define to 1 if OMX libs is enabled"])
750 ffmpeg_target_os=linux
754 XBMC_SETUP_ARCH_DEFINES()
757 AC_CHECK_PROG(HAVE_GIT,git,"yes","no",)
758 if test "$GIT_REV" = ""; then
759 if test -f VERSION ; then
760 GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
761 elif test "$HAVE_GIT" = "yes"; then
762 GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
767 final_message="$final_message\n git Rev.:\t${GIT_REV}"
769 if test "$host_vendor" = "apple"; then
770 echo "#define GIT_REV \"$GIT_REV\"" > git_revision.h
772 SDL_DEFINES="$SDL_DEFINES -D'GIT_REV=\"$GIT_REV\"'"
775 if test "$build_shared_lib" = "yes"; then
776 final_message="$final_message\n Shared lib\tYes"
777 AC_SUBST(USE_LIBXBMC,1)
781 # platform debug flags
782 if test "$use_debug" = "yes"; then
783 final_message="$final_message\n Debugging:\tYes"
784 if test "$use_profiling" = "yes"; then
785 final_message="$final_message\n Profiling:\tYes"
786 DEBUG_FLAGS="-g -pg -D_DEBUG -Wall"
788 final_message="$final_message\n Profiling:\tNo"
789 DEBUG_FLAGS="-g -D_DEBUG -Wall"
792 final_message="$final_message\n Debugging:\tNo"
793 if test "$use_profiling" = "yes"; then
794 final_message="$final_message\n Profiling:\tYes"
795 DEBUG_FLAGS="-pg -DNDEBUG=1"
797 final_message="$final_message\n Profiling:\tNo"
798 DEBUG_FLAGS="-DNDEBUG=1"
801 CFLAGS="$CFLAGS $DEBUG_FLAGS"
802 CXXFLAGS="$CXXFLAGS $DEBUG_FLAGS"
805 if test "$use_optimizations" = "yes"; then
806 final_message="$final_message\n Optimization:\tYes"
807 if test "$target_platform" = "target_raspberry_pi"; then
811 CXXFLAGS="-O2 $CXXFLAGS"
815 final_message="$final_message\n Optimization:\tNo"
819 # platform specific flags
820 if echo "$ARCH" | grep -q "freebsd" ; then
821 LOCALBASE="${LOCALBASE:-/usr/local}"
822 CFLAGS="$CFLAGS -I$LOCALBASE/include"
823 CXXFLAGS="$CXXFLAGS -I$LOCALBASE/include"
824 CPPFLAGS="$CPPFLAGS -I$LOCALBASE/include"
825 LDFLAGS="$LDFLAGS -L$LOCALBASE/lib"
826 FFMPEG_EXTRACFLAGS="-I$LOCALBASE/include"
828 if test "$host_vendor" = "apple" ; then
829 # standard xbmc paths
830 INCLUDES="$INCLUDES -I\$(abs_top_srcdir)/xbmc/osx"
831 if test "$use_arch" != "arm"; then
832 LIBS="$LIBS -framework ApplicationServices"
833 LIBS="$LIBS -framework AudioUnit"
834 LIBS="$LIBS -framework AudioToolbox"
835 LIBS="$LIBS -framework Cocoa"
836 LIBS="$LIBS -framework CoreAudio"
837 LIBS="$LIBS -framework CoreVideo"
838 LIBS="$LIBS -framework CoreServices"
839 LIBS="$LIBS -framework CoreFoundation"
840 LIBS="$LIBS -framework DiskArbitration"
841 LIBS="$LIBS -framework IOKit"
842 LIBS="$LIBS -framework IOSurface"
843 LIBS="$LIBS -framework QuartzCore"
844 LIBS="$LIBS -framework SystemConfiguration"
846 USE_EXTERNAL_FFMPEG=1
847 elif test "$target_platform" = "target_raspberry_pi"; then
850 elif test "$use_arch" = "arm"; then
851 CFLAGS="$CFLAGS -mno-apcs-stack-check"
852 CXXFLAGS="$CXXFLAGS -mno-apcs-stack-check"
853 FFMPEG_EXTRACFLAGS=""
854 if test "$use_tegra" = "yes"; then
855 # Compile for ARMv7a architecture, need to test gcc for vfpv3-d16 support
856 SAVE_CFLAGS="$CFLAGS"
857 CFLAGS="-mfpu=vfpv3-d16"
859 [AC_LANG_SOURCE([int foo;])],
860 [ CFLAGS="$SAVE_CFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
861 CXXFLAGS="$CXXFLAGS -Wno-psabi -Wa,-march=armv7a -mtune=cortex-a9 -mfpu=vfpv3-d16 -mthumb-interwork"
862 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mtune=cortex-a9 -mfpu=vfpv3-d16"
864 [ CFLAGS="$SAVE_CFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
865 CXXFLAGS="$CXXFLAGS -Wa,-march=armv6 -mtune=cortex-a8 -mthumb-interwork"
868 if test "$use_neon" = "yes"; then
869 CFLAGS="$CFLAGS -mfpu=neon -mvectorize-with-neon-quad"
870 CXXFLAGS="$CXXFLAGS -mfpu=neon -mvectorize-with-neon-quad"
871 FFMPEG_EXTRACFLAGS="$FFMPEG_EXTRACFLAGS -mfpu=neon"
876 # Checks for library functions.
879 AC_FUNC_CLOSEDIR_VOID
880 AC_FUNC_ERROR_AT_LINE
882 AC_PROG_GCC_TRADITIONAL
884 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
888 # Boxee is apparently having compile problems
889 # if HAVE_REALLOC is defined. Sort this later.
891 AC_FUNC_SELECT_ARGTYPES
892 AC_FUNC_SETVBUF_REVERSED
900 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])
902 # Check for various sizes
903 AC_CHECK_SIZEOF([int])
904 AC_CHECK_SIZEOF([size_t])
906 # Check for intrinsics
907 AC_MSG_CHECKING([for __sync_add_and_fetch(temp, 1)])
908 AC_TRY_LINK([],[long* temp=0; long ret=__sync_add_and_fetch(temp, 1);],
909 [have_builtin_sync_add_and_fetch=yes],
910 [have_builtin_sync_add_and_fetch=no])
911 AC_MSG_RESULT($have_builtin_sync_add_and_fetch)
912 if test "x$have_builtin_sync_add_and_fetch" = "xyes"; then
913 AC_DEFINE(HAS_BUILTIN_SYNC_ADD_AND_FETCH, 1,
914 [Define to 1 if your compiler supports the __sync_add_and_fetch() intrinsic.])
917 AC_MSG_CHECKING([for __sync_sub_and_fetch(temp, 1)])
918 AC_TRY_LINK([],[long* temp=0; long ret=__sync_sub_and_fetch(temp, 1);],
919 [have_builtin_sync_sub_and_fetch=yes],
920 [have_builtin_sync_sub_and_fetch=no])
921 AC_MSG_RESULT($have_builtin_sync_sub_and_fetch)
922 if test "x$have_builtin_sync_sub_and_fetch" = "xyes"; then
923 AC_DEFINE(HAS_BUILTIN_SYNC_SUB_AND_FETCH, 1,
924 [Define to 1 if your compiler supports the __sync_sub_and_fetch() intrinsic.])
927 AC_MSG_CHECKING([for __sync_val_compare_and_swap(temp, 1, 1)])
928 AC_TRY_LINK([],[long *temp = 0; long ret=__sync_val_compare_and_swap(temp, 1, 1);],
929 [have_builtin_sync_val_compare_and_swap=yes],
930 [have_builtin_sync_val_compare_and_swap=no])
931 AC_MSG_RESULT($have_builtin_sync_val_compare_and_swap)
932 if test "x$have_builtin_sync_val_compare_and_swap" = "xyes"; then
933 AC_DEFINE(HAS_BUILTIN_SYNC_VAL_COMPARE_AND_SWAP, 1,
934 [Define to 1 if your compiler supports the __sync_val_compare_and_swap() intrinsic.])
937 # Check for u16string/u32string declarations
939 AC_CHECK_TYPES([std::u16string, std::u32string], [], [], [[#include <string>]])
940 AC_CHECK_TYPES([char16_t, char32_t])
941 AC_CHECK_SIZEOF([wchar_t])
944 # Add top source directory for all builds so we can use config.h
945 INCLUDES="-I\$(abs_top_srcdir) $INCLUDES"
947 # Check inotify availability
948 AC_CHECK_HEADER([sys/inotify.h], AC_DEFINE([HAVE_INOTIFY],[1],[Define if we have inotify]),)
950 # Checks for boost headers using CXX instead of CC
952 AC_CHECK_HEADER([boost/shared_ptr.hpp],, AC_MSG_ERROR($missing_library))
956 if test -z "$PYTHON_NOVERSIONCHECK"; then
957 AX_PYTHON_DEVEL([>= 2.4])
958 PYTHON_VERSION=$ac_python_version
961 if test -z "$PYTHON_VERSION"; then
962 AC_MSG_ERROR([Can't find a Python version.])
964 LIBS="$LIBS $PYTHON_LDFLAGS"
965 AC_MSG_NOTICE([Using Python $PYTHON_VERSION])
969 if test "$use_wayland" = "yes" && test "$host_vendor" != "apple"; then
970 AC_MSG_NOTICE($wayland_enabled)
971 PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client],
972 [INCLUDES="$INCLUDES $WAYLAND_CLIENT_CFLAGS";
973 WAYLAND_CLIENT_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-client\`; echo ${LIBRARY:2}`;
974 XB_FIND_SONAME([WAYLAND_CLIENT_LIBRARY], ${WAYLAND_CLIENT_LIBRARY_LINE})],
975 AC_MSG_ERROR($missing_library))
976 PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl],
977 [INCLUDES="$INCLUDES $WAYLAND_EGL_CFLAGS";
978 WAYLAND_EGL_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l wayland-egl\`; echo ${LIBRARY:2}`
979 XB_FIND_SONAME([WAYLAND_EGL_LIBRARY], ${WAYLAND_EGL_LIBRARY_LINE})],
980 AC_MSG_ERROR($missing_library))
981 PKG_CHECK_MODULES([XKBCOMMON], [xkbcommon],
982 [INCLUDES="$INCLUDES $XKBCOMMON_CFLAGS";
983 XKBCOMMON_LIBRARY_LINE=`LIBRARY=\`${PKG_CONFIG} --libs-only-l xkbcommon\`; echo ${LIBRARY:2}`;
984 XB_FIND_SONAME([XKBCOMMON_LIBRARY], $XKBCOMMON_LIBRARY_LINE)],
985 AC_MSG_ERROR($missing_library))
986 AC_DEFINE([HAVE_WAYLAND], [1], [Define to 1 if you have Wayland libs installed.])
987 AC_DEFINE([HAVE_XKBCOMMON], [1], [Define to 1 if you have libxkbcommon installed.])
989 # If we are also building with tests then we want to build
990 # wayland tests as well
991 if test "$configure_gtest" = "yes"; then
993 PKG_CHECK_MODULES([PIXMAN],
994 [pixman-1],have_pixman=yes,
995 [AC_MSG_WARN($missing_library); have_pixman=no])
996 PKG_CHECK_MODULES([WESTON],
997 [weston >= 1.1.90],[have_weston_sdk=yes],
998 [have_weston_sdk=no; AC_MSG_WARN($missing_library)])
1000 AC_CHECK_PROG(WAYLAND_SCANNER, wayland-scanner, "wayland-scanner", "no")
1001 if test "x$WAYLAND_SCANNER" == "xno"; then
1002 AC_MSG_WARN($missing_program)
1004 if test "x$have_weston_sdk" == "xyes" && test "x$have_pixman" = "xyes"; then
1005 AC_SUBST(WAYLAND_TEST_INCLUDES,"$WAYLAND_CLIENT_CFLAGS $XKBCOMMON_CFLAGS $PIXMAN_CFLAGS $WESTON_CFLAGS")
1006 AC_SUBST(WAYLAND_TEST_LIBS,"$WAYLAND_CLIENT_LIBS $XKBCOMMON_LIBS $PIXMAN_LIBS $WESTON_LIBS")
1007 AC_DEFINE([HAVE_WESTON_SDK], [1], [Define to 1 if Weston SDK is installed.])
1008 AC_SUBST(USE_WAYLAND_TEST_EXTENSION, 1)
1010 AC_SUBST(WAYLAND_SCANNER)
1011 AC_DEFINE([HAVE_WAYLAND_XBMC_PROTO],[1],["Define to 1 if the wayland test-protocol will be built"])
1015 # Disable SDL and X11 builds
1020 # Wayland requires the EGL "window system" which in turn only supports
1021 # the OpenGL ES API, so enable gles support
1024 AC_MSG_RESULT($wayland_disabled)
1027 # Checks for platforms libraries.
1028 if test "$use_gles" = "yes"; then
1030 # GLES overwrites GL if both set to yes.
1031 if test "$host_vendor" = "apple" ; then
1032 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1033 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1034 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1036 if test "$target_platform" = "target_raspberry_pi"; then
1037 AC_DEFINE([HAVE_LIBEGL],[1],["Define to 1 if you have the `EGL' library (-lEGL)."])
1038 AC_DEFINE([HAVE_LIBGLESV2],[1],["Define to 1 if you have the `GLESv2' library (-lGLESv2)."])
1039 AC_MSG_RESULT(== WARNING: OpenGLES support is assumed.)
1040 LIBS="$LIBS -lEGL -lGLESv2 -lbcm_host -lvcos -lvchiq_arm"
1042 AC_CHECK_LIB([EGL], [main],, AC_MSG_ERROR($missing_library))
1043 AC_CHECK_LIB([GLESv2],[main],, AC_MSG_ERROR($missing_library))
1047 if test "$use_gl" = "yes"; then
1048 if test "$host_vendor" = "apple" ; then
1049 # linking to OpenGL.framework instead of libGL, libGLU so AC_CHECK_LIB will fail
1050 LIBS="$LIBS -framework OpenGL"
1051 AC_DEFINE([HAVE_LIBGL],[1],["Define to 1 if you have the `GL' library (-lGL)."])
1052 AC_MSG_RESULT(== WARNING: OpenGL support is assumed.)
1053 AC_DEFINE([HAVE_LIBGLU],[1],["Define to 1 if you have the `GLU' library (-lGLU)."])
1054 AC_MSG_RESULT(== WARNING: OpenGLU support is assumed.)
1055 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1057 AC_CHECK_LIB([GL], [main],, AC_MSG_ERROR($missing_library))
1058 AC_CHECK_LIB([GLEW],[main],, AC_MSG_ERROR($missing_library))
1059 AC_CHECK_LIB([GLU], [main],, AC_MSG_ERROR($missing_library))
1062 AC_MSG_RESULT(== WARNING: OpenGL support is disabled. XBMC will run VERY slow. ==)
1063 AC_CHECK_LIB([SDL_gfx],[main])
1067 # platform common libraries
1068 if test "$use_mysql" = "yes"; then
1069 AC_PATH_PROG(MYSQL_CONFIG, mysql_config,"no")
1070 if test "x$MYSQL_CONFIG" != "xno"; then
1071 AC_DEFINE([HAVE_MYSQL],[1],["Define to 1 if you have the `mysql' library (-lmysqlclient)."])
1072 INCLUDES="$INCLUDES `$MYSQL_CONFIG --include`"
1073 MYSQL_LIBS=`$MYSQL_CONFIG --libs`
1074 LIBS="$LIBS $MYSQL_LIBS"
1075 AC_SUBST(MYSQL_LIBS)
1077 AC_MSG_ERROR($missing_program)
1080 AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library))
1081 AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library))
1082 AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library),
1083 AC_INCLUDES_DEFAULT()
1084 [#include <mpeg2dec/mpeg2.h>])
1085 AC_CHECK_HEADER([mad.h],, AC_MSG_ERROR($missing_library))
1086 AC_CHECK_HEADER([jpeglib.h],, AC_MSG_ERROR($missing_library))
1087 AC_CHECK_HEADER([samplerate.h],, AC_MSG_ERROR($missing_library))
1088 AC_CHECK_HEADER([ogg/ogg.h],, AC_MSG_ERROR($missing_library))
1089 AC_CHECK_HEADER([vorbis/vorbisfile.h],, AC_MSG_ERROR($missing_library))
1090 AC_CHECK_HEADER([libmodplug/modplug.h],, AC_MSG_ERROR($missing_library))
1091 AC_CHECK_HEADER([curl/curl.h],, AC_MSG_ERROR($missing_library))
1092 AC_CHECK_HEADER([FLAC/stream_decoder.h],, AC_MSG_ERROR($missing_library))
1094 # we need to check for the header because if it exists we set the openssl
1095 # and gcrypt MT callback hooks. This is mostly so that libcurl operates
1096 # in MT manner correctly.
1097 AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
1098 AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
1099 if test "$gcrypt_headers_available" = "yes"; then
1100 # if we have the headers then we must have the lib
1101 AC_CHECK_LIB([gpg-error],[main],, AC_MSG_ERROR($missing_library))
1102 AC_CHECK_LIB([gcrypt],[gcry_control],, AC_MSG_ERROR($missing_library))
1103 AC_DEFINE([HAVE_GCRYPT],[1],[Define if we have gcrypt])
1105 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"))
1107 AC_CHECK_LIB([bz2], [main],, AC_MSG_ERROR($missing_library))
1108 AC_CHECK_LIB([jpeg], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1109 AC_CHECK_LIB([tiff], [main],, AC_MSG_ERROR($missing_library))
1110 if echo "$ARCH" | grep -q freebsd; then
1111 AC_CHECK_LIB([pthread], [main],LIBS="-pthread $LIBS", AC_MSG_ERROR($missing_library))
1112 AC_CHECK_LIB([pthread], [pthread_set_name_np],
1113 AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP],[1],["Define to 1 if pthread has pthread_set_name_np"]),
1114 AC_MSG_RESULT([Could not find pthread_set_name_np in pthread]))
1116 if test "$target_platform" != "target_android" ; then
1117 AC_CHECK_LIB([pthread], [main],, AC_MSG_ERROR($missing_library))
1118 AC_CHECK_LIB([pthread], [pthread_setname_np],
1119 AC_DEFINE([HAVE_PTHREAD_SETNAME_NP],[1],["Define to 1 if pthread has pthread_setname_np"]),
1120 AC_MSG_RESULT([Could not find pthread_setname_np in pthread]))
1123 AC_CHECK_LIB([lzo2], [main],, AC_MSG_ERROR($missing_library))
1124 AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library))
1125 AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library))
1126 AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library))
1127 if test "$use_mysql" = "yes"; then
1128 AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library))
1130 AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth]))
1131 AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library))
1132 AC_CHECK_LIB([tinyxml], [main],, AC_MSG_ERROR($missing_library))
1133 if test "$target_platform" = "target_android" ; then
1134 AC_CHECK_LIB([android], [main],, AC_MSG_ERROR($missing_library))
1135 AC_CHECK_LIB([log], [__android_log_vprint],, AC_MSG_ERROR($missing_library))
1136 AC_CHECK_LIB([jnigraphics], [main],, AC_MSG_ERROR($missing_library))
1138 PKG_CHECK_MODULES([FRIBIDI], [fribidi],
1139 [INCLUDES="$INCLUDES $FRIBIDI_CFLAGS"; LIBS="$LIBS $FRIBIDI_LIBS"],
1140 AC_MSG_ERROR($missing_library))
1141 PKG_CHECK_MODULES([SQLITE3], [sqlite3],
1142 [INCLUDES="$INCLUDES $SQLITE3_CFLAGS"; LIBS="$LIBS $SQLITE3_LIBS"],
1143 AC_MSG_ERROR($missing_library))
1144 PKG_CHECK_MODULES([PNG], [libpng],
1145 [INCLUDES="$INCLUDES $PNG_CFLAGS"; LIBS="$LIBS $PNG_LIBS"],
1146 AC_MSG_ERROR($missing_library))
1147 PKG_CHECK_MODULES([PCRECPP], [libpcrecpp],
1148 [INCLUDES="$INCLUDES $PCRECPP_CFLAGS"; LIBS="$LIBS $PCRECPP_LIBS"]; \
1149 AC_DEFINE([HAVE_LIBPCRECPP],[1],["Define to 1 if libpcrecpp is installed"]),
1150 AC_MSG_ERROR($missing_library))
1151 PKG_CHECK_MODULES([PCRE], [libpcre],
1152 [INCLUDES="$INCLUDES $PCRE_CFLAGS"; LIBS="$LIBS $PCRE_LIBS"]; \
1153 AC_DEFINE([HAVE_LIBPCRE],[1],["Define to 1 if libpcre is installed"]),
1154 AC_MSG_ERROR($missing_library))
1155 PKG_CHECK_MODULES([SAMPLERATE], [samplerate],
1156 [INCLUDES="$INCLUDES $SAMPLERATE_CFLAGS"; LIBS="$LIBS $SAMPLERATE_LIBS"],
1157 AC_MSG_ERROR($missing_library))
1158 PKG_CHECK_MODULES([FREETYPE2], [freetype2],
1159 [INCLUDES="$INCLUDES $FREETYPE2_CFLAGS"; LIBS="$LIBS $FREETYPE2_LIBS"],
1160 AC_MSG_ERROR($missing_library))
1161 PKG_CHECK_MODULES([TAGLIB], [taglib >= 1.8],
1162 [INCLUDES="$INCLUDES $TAGLIB_CFLAGS"; LIBS="$LIBS $TAGLIB_LIBS"],
1163 AC_MSG_ERROR($missing_library))
1165 if test "$use_optical_drive" = "yes"; then
1166 PKG_CHECK_MODULES([CDIO], [libcdio],
1167 [INCLUDES="$INCLUDES $CDIO_CFLAGS"; LIBS="$LIBS $CDIO_LIBS"],
1168 AC_MSG_ERROR($missing_library))
1171 if test "$target_platform" = "target_android" ; then
1172 PKG_CHECK_MODULES([ZIP], [libzip],
1173 [INCLUDES="$INCLUDES $ZIP_CFLAGS"; LIBS="$LIBS $ZIP_LIBS"],
1174 AC_MSG_ERROR($missing_library))
1177 # check for libbluray
1178 AS_CASE([x$use_libbluray],
1180 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], AC_MSG_ERROR($missing_library))
1183 PKG_CHECK_MODULES([LIBBLURAY],[libbluray >= 0.2.1],[use_libbluray="yes"], [use_libbluray="no"])
1186 AS_CASE([x$use_libbluray],
1188 INCLUDES="$INCLUDES $LIBBLURAY_CFLAGS";
1189 XB_FIND_SONAME([BLURAY], [bluray], [use_libbluray])
1190 AC_DEFINE([HAVE_LIBBLURAY], 1, [System has libbluray library])
1191 AC_SUBST([HAVE_LIBBLURAY], 1)
1192 AC_CHECK_LIB([bluray], [bd_register_argb_overlay_proc],
1193 AC_CHECK_DECL([BD_EVENT_IDLE],
1194 AC_DEFINE([HAVE_LIBBLURAY_BDJ], 1, [System has libbluray library with bdj support]),,
1195 [[#include <libbluray/bluray.h>]]))
1197 AC_SUBST([HAVE_LIBBLURAY], 0)
1201 #Check to see if libs are needed for functions that are often built-in to libc
1202 AC_SEARCH_LIBS([iconv_open],iconv,,AC_SEARCH_LIBS([libiconv_open],iconv,,AC_MSG_ERROR($missing_library)))
1203 AC_SEARCH_LIBS([dlopen],dl)
1204 AC_SEARCH_LIBS([clock_gettime],rt)
1205 AC_SEARCH_LIBS([dn_expand], resolv)
1206 AC_SEARCH_LIBS([_dn_expand], resolv)
1207 AC_SEARCH_LIBS([__dn_expand],resolv)
1209 # platform dependent libraries
1210 if test "$host_vendor" = "apple" ; then
1211 if test "$use_arch" != "arm"; then
1212 AC_CHECK_LIB([SDL], [main],, AC_MSG_ERROR($missing_library))
1213 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1216 if test "$target_platform" != "target_android" ; then
1217 AC_CHECK_LIB([jasper], [main],, AC_MSG_ERROR($missing_library)) # check for cximage
1219 if test "x$use_alsa" != "xno"; then
1220 PKG_CHECK_MODULES([ALSA], [alsa],
1221 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"; use_alsa=yes],
1222 AC_MSG_NOTICE($alsa_not_found); use_alsa=no)
1224 PKG_CHECK_MODULES([DBUS], [dbus-1],
1225 [INCLUDES="$INCLUDES $DBUS_CFLAGS"; LIBS="$LIBS $DBUS_LIBS"; use_dbus=yes]; \
1226 AC_DEFINE([HAVE_DBUS],[1],["Define to 1 if dbus is installed"]),
1227 AC_MSG_NOTICE($missing_library); use_dbus=no)
1228 if test "x$use_sdl" != "xno"; then
1229 PKG_CHECK_MODULES([SDL], [sdl],
1230 [INCLUDES="$INCLUDES $SDL_CFLAGS"; LIBS="$LIBS $SDL_LIBS"],
1231 AC_MSG_ERROR($missing_library))
1232 AC_CHECK_LIB([SDL_image], [main],, AC_MSG_ERROR($missing_library))
1233 AC_DEFINE([HAVE_SDL],[1],["Define to 1 if using sdl"])
1237 XB_FIND_SONAME([MAD], [mad])
1238 XB_FIND_SONAME([OGG], [ogg])
1239 XB_FIND_SONAME([CURL], [curl])
1240 XB_FIND_SONAME([FLAC], [FLAC])
1241 XB_FIND_SONAME([VORBIS], [vorbis])
1242 XB_FIND_SONAME([VORBISFILE], [vorbisfile])
1243 XB_FIND_SONAME([MODPLUG], [modplug])
1244 XB_FIND_SONAME([ASS], [ass])
1245 XB_FIND_SONAME([MPEG2], [mpeg2])
1248 if test "x$use_libmp3lame" != "xno"; then
1249 XB_FIND_SONAME([LAMEENC], [mp3lame], [use_libmp3lame])
1250 if test "x$use_libmp3lame" != "xno"; then
1251 AC_CHECK_HEADER([lame/lame.h],, AC_MSG_ERROR($missing_headers))
1254 AS_CASE([x$use_libmp3lame],
1256 AC_SUBST([HAVE_LIBMP3LAME], 0)
1259 AC_DEFINE([HAVE_LIBMP3LAME], 1, [System has libmp3lame library])
1260 AC_SUBST([HAVE_LIBMP3LAME], 1)
1263 if test "x$use_libvorbisenc" != "xno"; then
1264 XB_FIND_SONAME([VORBISENC], [vorbisenc], [use_libvorbisenc])
1265 if test "x$use_libvorbisenc" != "xno"; then
1266 AC_CHECK_HEADER([vorbis/vorbisenc.h],, AC_MSG_ERROR($missing_headers))
1269 AS_CASE([x$use_libvorbisenc],
1271 AC_SUBST([HAVE_LIBVORBISENC], 0)
1273 AC_DEFINE([HAVE_LIBVORBISENC], 1, [System has libvorbisenc library])
1274 AC_SUBST([HAVE_LIBVORBISENC], 1)
1279 if test "$use_webserver" = "yes"; then
1280 AC_CHECK_LIB([microhttpd], [main],, AC_MSG_ERROR($missing_library))
1284 if test "$use_optical_drive" = "yes"; then
1285 AC_DEFINE([HAS_DVD_DRIVE], [1], [Define to 1 to have optical drive support])
1289 if test "$use_alsa" = "yes" && test "$host_vendor" != "apple"; then
1290 PKG_CHECK_MODULES([ALSA], [alsa],
1291 [INCLUDES="$INCLUDES $ALSA_CFLAGS"; LIBS="$LIBS $ALSA_LIBS"],
1292 AC_MSG_ERROR($missing_library))
1293 AC_DEFINE([HAS_ALSA], [1], [Define to 0 to disable ALSA support])
1296 AC_MSG_RESULT($alsa_disabled)
1300 if test "x$use_pulse" != "xno"; then
1301 if test "$host_vendor" = "apple" ; then
1302 if test "x$use_pulse" = "xyes"; then
1303 AC_MSG_ERROR($pulse_disabled)
1306 AC_MSG_RESULT($pulse_disabled)
1310 AC_CHECK_LIB([pulse],[main],,pulse_found="no")
1311 AC_CHECK_LIB([pulse-simple],[main],,pulse_found="no")
1313 if test "x$pulse_found" != "xno"; then
1315 elif test "x$use_pulse" = "xyes"; then
1316 AC_MSG_ERROR($pulse_not_found)
1320 AC_MSG_RESULT($pulse_not_found)
1324 AC_MSG_RESULT($pulse_disabled)
1329 if test "$host_vendor" = "apple" ; then
1331 AC_MSG_RESULT($hal_disabled)
1333 if test "$use_hal" = "yes"; then
1334 PKG_CHECK_MODULES([HAL], [hal],
1335 [INCLUDES="$INCLUDES $HAL_CFLAGS"; LIBS="$LIBS $HAL_LIBS"],
1336 use_hal=no;AC_MSG_RESULT($hal_not_found))
1337 PKG_CHECK_MODULES([HAL_STORAGE], [hal-storage],
1338 [INCLUDES="$INCLUDES $HAL_STORAGE_CFLAGS"; LIBS="$LIBS $HAL_STORAGE_LIBS"],
1339 use_hal=no;AC_MSG_RESULT($halstorage_not_found))
1341 AC_MSG_RESULT($hal_disabled)
1343 if test "$use_hal" = "yes"; then
1344 AC_DEFINE([HAS_HAL], [1], [Define to 1 if you have HAL installed])
1349 if test "$host_vendor" = "apple" ; then
1351 AC_MSG_RESULT($avahi_disabled)
1353 if test "$use_avahi" = "yes"; then
1354 AC_CHECK_LIB([avahi-common], [main],,
1355 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1356 if test "$use_avahi" = "yes"; then
1357 #either both libs or none
1358 AC_CHECK_LIB([avahi-client], [main],,
1359 use_avahi=no;AC_MSG_RESULT($avahi_not_found))
1362 AC_MSG_RESULT($avahi_disabled)
1367 if test "$use_mdnsembedded" != "no"; then
1368 AC_CHECK_LIB([mDNSEmbedded], [embedded_mDNSInit],,
1369 [if test "$use_mdnsembedded" = "yes"; then
1370 AC_MSG_ERROR($mdnsembedded_not_found)
1372 elif test "$use_mdnsembedded" != "no"; then
1373 AC_MSG_NOTICE($mdnsembedded_not_found)
1374 use_mdnsembedded="no"
1378 if test $use_mdnsembedded != "no"; then
1382 AC_MSG_RESULT($mdnsembedded_disabled)
1385 AC_SUBST(USE_MDNSEMBEDDED)
1388 if test "$use_x11" = "yes" && test "$host_vendor" != "apple"; then
1389 AC_MSG_NOTICE($x11_enabled)
1390 PKG_CHECK_MODULES([X11], [x11],
1391 [INCLUDES="$INCLUDES $X11_CFLAGS"; LIBS="$LIBS $X11_LIBS"],
1392 AC_MSG_ERROR($missing_library))
1393 PKG_CHECK_MODULES([XEXT], [xext],
1394 [INCLUDES="$INCLUDES $XEXT_CFLAGS"; LIBS="$LIBS $XEXT_LIBS"],
1395 AC_MSG_ERROR($missing_library))
1396 AC_DEFINE([HAVE_X11], [1], [Define to 1 if you have X11 libs installed.])
1398 AC_MSG_RESULT($x11_disabled)
1402 if test "$host_vendor" = "apple" || test "$use_x11" = "no"; then
1404 AC_MSG_RESULT($xrandr_disabled)
1406 if test "$use_xrandr" = "yes" ; then
1407 AC_CHECK_LIB([Xrandr], [main],,
1408 use_xrandr="no";AC_MSG_RESULT($xrandr_not_found))
1410 AC_MSG_RESULT($xrandr_disabled)
1415 if test "$use_waveform" = "yes"; then
1416 AC_MSG_NOTICE($waveform_enabled)
1419 AC_MSG_NOTICE($waveform_disabled)
1424 if test "$use_spectrum" = "yes"; then
1425 AC_MSG_NOTICE($spectrum_enabled)
1428 AC_MSG_NOTICE($spectrum_disabled)
1433 if test "$host_vendor" = "apple" ; then
1434 AC_MSG_NOTICE($goom_disabled)
1437 if test "$use_goom" = "yes" && test "$use_gl" = "yes"; then
1438 AC_MSG_NOTICE($goom_enabled)
1441 AC_MSG_NOTICE($goom_disabled)
1447 if test "$use_rsxs" = "no" || test "$use_gl" = "no"; then
1448 AC_MSG_NOTICE($rsxs_disabled)
1451 AC_MSG_NOTICE($rsxs_enabled)
1453 # darwin osx can do rsxs but does not use x11, so do not pkg-config check for them
1454 if test "$host_vendor" != "apple" ; then
1455 PKG_CHECK_MODULES([XT], [xt],
1456 [INCLUDES="$INCLUDES $XT_CFLAGS"; LIBS="$LIBS $XT_LIBS"],
1457 AC_MSG_ERROR($missing_library))
1458 PKG_CHECK_MODULES([XMU], [xmu],
1459 [INCLUDES="$INCLUDES $XMU_CFLAGS"; LIBS="$LIBS $XMU_LIBS"],
1460 AC_MSG_ERROR($missing_library))
1465 if test "$use_fishbmc" = "no" || test "$use_gl" = "no"; then
1466 AC_MSG_NOTICE($fishbmc_disabled)
1470 AC_MSG_NOTICE($fishbmc_enabled)
1475 if test "$use_projectm" = "no" || test "$use_gl" = "no"; then
1476 AC_MSG_NOTICE($projectm_disabled)
1480 AC_MSG_NOTICE($projectm_enabled)
1486 if [[ -f "addons/skin.touched/addon.xml" ]]; then
1487 use_skin_touched=yes
1489 AC_DEFINE([HAS_SKIN_TOUCHED], [1], [Whether to build skin touched.])
1495 if test "x$use_ssh" = "xno"; then
1496 AC_MSG_NOTICE($ssh_disabled)
1499 AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_ERROR($ssh_not_found))
1500 AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
1504 if test "$use_librtmp" != "no"; then
1505 AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
1506 [if test "$use_librtmp" = "yes"; then
1507 AC_MSG_ERROR($librtmp_not_found)
1508 elif test "$use_librtmp" != "no"; then
1509 AC_MSG_NOTICE($librtmp_not_found)
1513 if test "$use_librtmp" != "no"; then
1514 XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
1516 if test "$use_librtmp" != "no"; then
1517 AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
1520 AC_MSG_NOTICE($librtmp_disabled)
1524 if test "x$use_samba" != "xno"; then
1525 AC_CHECK_LIB([smbclient], [main],,
1526 use_samba=no;AC_MSG_ERROR($missing_library))
1529 AC_MSG_RESULT($samba_disabled)
1533 if test "x$use_samba" != "xno"; then
1534 AC_DEFINE([HAVE_LIBSMBCLIENT], [1], [Define to 1 if you have Samba installed])
1539 if test "$use_libnfs" != "no"; then
1540 AC_CHECK_HEADERS([nfsc/libnfs.h],,
1541 [if test "$use_libnfs" = "yes"; then
1542 AC_MSG_ERROR($libnfs_not_found)
1544 elif test "$use_libnfs" != "no"; then
1545 AC_MSG_NOTICE($libnfs_not_found)
1550 if test "$use_libnfs" != "no"; then
1551 XB_FIND_SONAME([NFS], [nfs], [use_libnfs])
1553 if test "$use_libnfs" != "no"; then
1554 AC_DEFINE([HAVE_LIBNFS], [1], [Whether to use libnfs library.])
1559 AC_MSG_NOTICE($libnfs_disabled)
1564 if test "x$use_libafpclient" != "xno"; then
1565 AC_CHECK_HEADERS([afpfs-ng/libafpclient.h],,
1566 [if test "x$use_libafpclient" = "xyes"; then
1567 AC_MSG_ERROR($libafpclient_not_found)
1568 elif test "x$use_libafpclient" != "xno"; then
1569 AC_MSG_NOTICE($libafpclient_not_found)
1570 use_libafpclient="no"
1573 if test "x$use_libafpclient" != "xno"; then
1574 XB_FIND_SONAME([AFPCLIENT], [afpclient], [use_libafpclient])
1575 AC_DEFINE([HAVE_LIBAFPCLIENT], [1], [Whether to use libafpclient library.])
1579 AC_MSG_NOTICE($libafpclient_disabled)
1582 # libplist for airplay feature
1584 if test "$use_airplay" != "no"; then
1585 AC_CHECK_HEADER([plist/plist.h],,
1586 [if test "$use_airplay" = "yes"; then
1587 AC_MSG_ERROR($libplist_not_found)
1588 elif test "$use_airplay" != "no"; then
1589 AC_MSG_NOTICE($libplist_not_found)
1594 if test "$use_airplay" != "no"; then
1595 XB_FIND_SONAME([PLIST], [plist], [use_airplay])
1597 AC_DEFINE([HAVE_LIBPLIST],[1],["Define to 1 if you have libplist."])
1601 # libshairplay for AirTunes (prefered lib)
1603 if test "x$use_airtunes" != "xno"; then
1604 AC_CHECK_HEADERS([shairplay/raop.h],,
1605 [if test "x$use_airtunes" = "xyes"; then
1606 AC_MSG_ERROR($libshairplay_not_found)
1607 elif test "x$use_airtunes" != "xno"; then
1608 AC_MSG_NOTICE($libshairplay_not_found)
1613 if test "x$use_airtunes" != "xno"; then
1614 XB_FIND_SONAME([SHAIRPLAY], [shairplay], [use_airtunes])
1617 AC_CHECK_MEMBERS([struct raop_callbacks_s.cls],,,
1618 [[#include <shairplay/raop.h>]])
1619 AC_DEFINE([HAVE_LIBSHAIRPLAY],[1],["Define to 1 if you have libshairplay."])
1622 #libshairport - as a fallback for AirTunes
1623 if test "x$USE_AIRTUNES" == "x0"; then
1624 AC_CHECK_HEADERS([shairport/shairport.h],,
1625 [if test "x$use_airtunes" = "xyes"; then
1626 AC_MSG_ERROR($libshairport_not_found)
1627 elif test "x$use_airtunes" != "xno"; then
1628 AC_MSG_NOTICE($libshairport_not_found)
1633 if test "x$use_airtunes" != "xno"; then
1634 XB_FIND_SONAME([SHAIRPORT], [shairport], [use_airtunes])
1636 AC_CHECK_MEMBERS([struct AudioOutput.ao_set_metadata],,,
1637 [[#include <shairport/shairport.h>]])
1638 AC_DEFINE([HAVE_LIBSHAIRPORT],[1],["Define to 1 if you have libshairport."])
1645 if test "$host_vendor" = "apple" ; then
1647 AC_MSG_NOTICE($libudev_disabled)
1649 if test "$use_libudev" = "auto"; then
1650 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_RESULT($libudev_not_found)])
1651 elif test "$use_libudev" = "yes" ; then
1652 PKG_CHECK_MODULES([UDEV],[libudev],,[use_libudev="no";AC_MSG_ERROR($libudev_not_found)])
1654 AC_MSG_NOTICE($libudev_disabled)
1657 if test "x$use_libudev" != "xno"; then
1658 USE_LIBUDEV=1;INCLUDES="$INCLUDES $UDEV_CFLAGS";LIBS="$LIBS $UDEV_LIBS"
1659 AC_DEFINE([HAVE_LIBUDEV],[1],["Define to 1 if libudev is installed"])
1666 # if libudev is available, we don't need libusb
1667 if test "x$use_libudev" != "xno"; then
1669 AC_MSG_NOTICE($libusb_disabled_udev_found)
1671 if test "$host_vendor" = "apple" ; then
1673 AC_MSG_NOTICE($libusb_disabled)
1675 if echo "$ARCH" | grep -q freebsd ; then
1676 AC_CHECK_LIB([usb],[main],
1677 [use_libusb="yes";USB_LIBS="-lusb"],
1678 [use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1679 elif test "$use_libusb" = "auto"; then
1680 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_RESULT($libusb_not_found)])
1681 elif test "$use_libusb" = "yes"; then
1682 PKG_CHECK_MODULES([USB],[libusb],,[use_libusb="no";AC_MSG_ERROR($libusb_not_found)])
1684 AC_MSG_NOTICE($libusb_disabled)
1687 if test "x$use_libusb" != "xno"; then
1688 USE_LIBUSB=1;INCLUDES="$INCLUDES $USB_CFLAGS";LIBS="$LIBS $USB_LIBS"
1689 AC_DEFINE([HAVE_LIBUSB],[1],["Define to 1 if libusb is installed"])
1696 if test "x$use_libcec" != "xno"; then
1697 # libcec is dyloaded, so we need to check for its headers and link any depends.
1698 if test "x$use_libcec" != "xno"; then
1699 if test "x$use_libcec" != "xauto"; then
1700 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_ERROR($libcec_disabled)])
1702 PKG_CHECK_MODULES([CEC],[libcec >= 2.1.0],,[use_libcec="no";AC_MSG_RESULT($libcec_disabled)])
1705 if test "x$use_libcec" != "xno"; then
1706 INCLUDES="$INCLUDES $CEC_CFLAGS"
1707 USE_LIBCEC=1;AC_DEFINE([HAVE_LIBCEC],[1],["Define to 1 if libcec is installed"])
1708 XB_FIND_SONAME([LIBCEC],[cec],[use_libcec])
1709 AC_MSG_NOTICE($libcec_enabled)
1712 AC_MSG_NOTICE($libcec_disabled)
1717 AC_MSG_NOTICE($libcec_disabled)
1721 if test "$use_libcap" != "no"; then
1722 AC_CHECK_HEADERS([sys/capability.h],,
1723 [if test "$use_libcap" = "yes"; then
1724 AC_MSG_ERROR($libcap_not_found)
1725 elif test "$use_libcap" != "no"; then
1726 AC_MSG_NOTICE($libcap_not_found)
1730 if test "$use_libcap" != "no"; then
1731 AC_CHECK_LIB([cap], main, LIBS="$LIBS -lcap", use_libcap=no)
1733 if test "$use_libcap" != "no"; then
1734 AC_DEFINE([HAVE_LIBCAP], [1], [Whether to use libcap library.])
1737 AC_MSG_NOTICE($libcap_disabled)
1740 ### External libraries checks
1742 # Hacks for supporting libav
1745 if test "$use_libav_hacks" = "yes"; then
1746 export PKG_CONFIG_PATH="${srcdir}/lib/xbmc-libav-hacks/pkgconfig/:$PKG_CONFIG_PATH"
1748 AC_DEFINE([USE_LIBAV_HACKS], [1], [Whether to use libav compatibility hacks.])
1752 if test "$use_external_ffmpeg" = "yes"; then
1753 FFMPEG_LIBNAMES="libavcodec libavfilter libavformat libavutil libpostproc libswscale libswresample"
1755 PKG_CHECK_MODULES([FFMPEG], [$FFMPEG_LIBNAMES],
1756 [INCLUDES="$INCLUDES $FFMPEG_CFLAGS"; LIBS="$LIBS $FFMPEG_LIBS"],
1757 AC_MSG_ERROR($missing_library))
1759 # in case the headers are in a custom directory
1760 SAVE_CPPFLAGS="$CPPFLAGS"
1761 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
1763 AC_CHECK_HEADERS([libavcodec/avcodec.h libavfilter/avfilter.h libavformat/avformat.h libavutil/avutil.h libpostproc/postprocess.h libswscale/swscale.h],,
1764 [AC_MSG_ERROR($missing_headers)])
1766 AC_MSG_NOTICE($external_ffmpeg_enabled)
1767 USE_EXTERNAL_FFMPEG=1
1768 AC_DEFINE([USE_EXTERNAL_FFMPEG], [1], [Whether to use external FFmpeg libraries.])
1770 CPPFLAGS="$SAVE_CPPFLAGS"
1772 AC_MSG_NOTICE($external_ffmpeg_disabled)
1773 USE_EXTERNAL_FFMPEG=0
1776 echo "Checking for SWIG installation"
1777 AC_PATH_PROG(SWIG_EXE, swig, "none")
1778 if test "$SWIG_EXE" = "none"; then
1779 AC_PATH_PROG(SWIG20_EXE, swig2.0, "none")
1780 if test "$SWIG20_EXE" != "none" ; then
1781 SWIG_EXE=$SWIG20_EXE
1784 if test "$SWIG_EXE" = "none"; then
1785 AC_MSG_ERROR($missing_program)
1787 final_message="$final_message\n SWIG Available:\tYes"
1789 echo "Checking for a jre installation"
1790 AC_PATH_PROG(JAVA_EXE, java, "none")
1791 if test "$JAVA_EXE" = "none"; then
1792 AC_MSG_ERROR($missing_program)
1794 final_message="$final_message\n JRE Available:\tYes"
1796 echo "Checking for doxygen installation"
1797 AC_PATH_PROG(DOXYGEN_EXE, doxygen, "none")
1798 if test "$DOXYGEN_EXE" = "none"; then
1799 AC_MSG_WARN([Unable to find doxygen installation. Will not be able to make docstrings for the python api])
1800 final_message="$final_message\n Doxygen Available:\tNo"
1803 final_message="$final_message\n Doxygen Available:\tYes"
1808 if test "x$use_vdpau" != "xno"; then
1809 if test "$host_vendor" = "apple" ; then
1810 if test "x$use_vdpau" = "xyes"; then
1811 AC_MSG_ERROR([VDPAU not supported on this platform])
1814 AC_MSG_NOTICE($vdpau_disabled)
1819 AC_CHECK_HEADER([vdpau/vdpau.h],AC_DEFINE([HAVE_LIBVDPAU], [],
1820 [Define to 1 if you have the 'vdpau' library (-lvdpau).]),
1821 [if test "x$use_vdpau" = "xyes"; then
1823 AC_MSG_ERROR([$vdpau_not_found])
1827 AC_MSG_RESULT($vdpau_not_found)
1832 AC_MSG_NOTICE($vdpau_disabled)
1836 if test "x$use_vaapi" != "xno"; then
1837 if test "$host_vendor" = "apple" ; then
1838 if test "x$use_vaapi" = "xyes"; then
1839 AC_MSG_ERROR([VAAPI not supported on this platform])
1842 AC_MSG_NOTICE($vaapi_disabled)
1846 initial_val=$use_vaapi
1847 AC_CHECK_LIB([va], main, :, use_vaapi=no)
1848 if test "x$use_vaapi" != "xno"; then
1849 AC_CHECK_LIB([va-glx], main, LIBS="-lva -lva-glx $LIBS", use_vaapi=no, -lva)
1852 if test "x$use_vaapi" = "xno"; then
1853 if test "x$initial_val" = "xyes"; then
1854 AC_MSG_ERROR($vaapi_not_found)
1856 AC_MSG_RESULT($vaapi_not_found)
1860 AC_DEFINE([HAVE_LIBVA], [1], [Define to 1 if you have the 'vaapi' libraries (-lva AND -lva-glx)])
1865 AC_MSG_NOTICE($vaapi_disabled)
1870 if test "x$use_crystalhd" != "xno"; then
1871 SAVE_CFLAGS="$CFLAGS"
1872 CFLAGS="-D__LINUX_USER__"
1873 AC_CHECK_HEADER([libcrystalhd/libcrystalhd_if.h], [],
1874 [ if test "x$use_crystalhd" = "xyes"; then
1875 AC_MSG_ERROR($crystalhd_not_found)
1878 AC_MSG_RESULT($crystalhd_not_found)
1882 CFLAGS="$SAVE_CFLAGS"
1883 if test "$host_vendor" != "apple"; then
1884 XB_FIND_SONAME([CRYSTALHD], [crystalhd], [use_crystalhd])
1886 if test "x$use_crystalhd" != "xno"; then
1887 SAVE_CFLAGS="$CFLAGS"
1888 CFLAGS="-D__LINUX_USER__ -lcrystalhd"
1889 # check for new crystalhd lib
1891 [AC_LANG_SOURCE([#include <libcrystalhd/bc_dts_types.h>
1892 #include <libcrystalhd/bc_dts_defs.h>
1893 PBC_INFO_CRYSTAL bCrystalInfo;])],
1894 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [2], [Define to 2 if you have the 'New Broadcom Crystal HD' library.]) ],
1895 [ AC_DEFINE([HAVE_LIBCRYSTALHD], [1], [Define to 1 if you have the 'Old Broadcom Crystal HD' library.]) ])
1896 CFLAGS="$SAVE_CFLAGS"
1900 AC_MSG_NOTICE($crystalhd_disabled)
1905 if test "x$use_vtbdecoder" != "xno"; then
1906 if test "$host_vendor" = "apple" ; then
1907 HAVE_VIDEOTOOLBOXDECODER=1
1908 AC_DEFINE([HAVE_VIDEOTOOLBOXDECODER], [1], [Define to 1 if you have the 'VTBDecoder' library.])
1909 AC_MSG_NOTICE($vtbdecoder_enabled)
1911 if test "x$use_vtbdecoder" = "xyes"; then
1912 AC_MSG_ERROR([VTB Decoder not supported on this platform])
1915 AC_MSG_NOTICE($vtbdecoder_disabled)
1919 AC_MSG_NOTICE($vtbdecoder_disabled)
1923 if test "$host_vendor" = "apple" ; then
1926 AC_MSG_NOTICE($openmax_disabled)
1927 elif test "$target_platform" = "target_raspberry_pi"; then
1930 AC_MSG_NOTICE($openmax_disabled)
1932 if test "$use_gles" = "yes" && test "$use_openmax" = "auto"; then
1933 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1934 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1935 use_openmax=no;USE_OPENMAX=0;AC_MSG_RESULT($openmax_not_found))
1936 elif test "$use_gles" = "yes" && test "$use_openmax" = "yes"; then
1937 PKG_CHECK_MODULES([OPENMAX], [libomxil-bellagio],
1938 USE_OPENMAX=1;[INCLUDES="$INCLUDES $OPENMAX_CFLAGS"; LIBS="$LIBS $OPENMAX_LIBS"],
1939 AC_MSG_ERROR($openmax_not_found))
1941 AC_MSG_NOTICE($openmax_disabled)
1947 # yajl version check (yajl_version.h was added in yajl 2.0)
1948 AC_CHECK_HEADERS([yajl/yajl_version.h], [], [
1949 AC_DEFINE(YAJL_MAJOR, 1, [yajl version 1])
1952 # additional internal players
1953 case $add_players in
1955 XB_ADD_PLAYER([OMXPLAYER], [omxplayer])
1959 # additional internal codecs
1962 AC_CHECK_HEADER([amcodec/codec_error.h],, AC_MSG_ERROR($missing_headers))
1963 XB_ADD_CODEC([LIBAMCODEC], [amcodec])
1966 LIBS+="-L${prefix}/opt/android-libs -lstdc++ -lutils -lcutils -lstagefright -lbinder -lui -lgui"
1967 XB_ADD_CODEC([LIBSTAGEFRIGHT], [libstagefright])
1972 # platform specific bin utilities
1973 if test "$build_vendor" != "apple" ; then
1974 AC_CHECK_PROG(HAVE_GAWK,gawk,"yes","no",)
1975 if test "$HAVE_GAWK" = "no" ; then
1976 AC_MSG_ERROR($missing_program)
1980 if test "$use_arch" != "arm" ; then
1981 AC_CHECK_PROG(HAVE_CMAKE,cmake,"yes","no",)
1982 if test "$HAVE_CMAKE" = "no" ; then
1983 AC_MSG_ERROR($missing_program)
1987 AC_CHECK_PROG(HAVE_GPERF,gperf,"yes","no",)
1988 if test "$HAVE_GPERF" = "no" ; then
1989 AC_MSG_ERROR($missing_program)
1992 AC_CHECK_PROG(HAVE_UNZIP,unzip,"yes","no",)
1993 if test "$HAVE_UNZIP" = "no" ; then
1994 AC_MSG_ERROR($missing_program)
1997 AC_CHECK_PROG(HAVE_ZIP,zip,"yes","no",)
1998 if test "$HAVE_ZIP" = "no" ; then
1999 AC_MSG_ERROR($missing_program)
2002 if test "$ARCH" = "i486-linux" || test "$ARCH" = "x86-freebsd"; then
2003 AC_CHECK_PROG(HAVE_NASM,nasm,"yes","no",)
2004 if test "$HAVE_NASM" = "no" ; then
2005 AC_MSG_ERROR($missing_program)
2009 # Checks for header files.
2013 AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h limits.h locale.h \
2014 malloc.h memory.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h \
2015 strings.h sys/file.h sys/ioctl.h sys/mount.h sys/param.h sys/socket.h \
2016 sys/time.h sys/timeb.h sys/vfs.h termios.h unistd.h utime.h wchar.h wctype.h])
2017 AC_CHECK_HEADERS([cdio/iso9660.h],,AC_MSG_ERROR([$missing_headers]))
2019 # Checks for typedefs, structures, and compiler characteristics.
2035 AC_CHECK_MEMBERS([struct stat.st_rdev])
2044 if test "$cross_compiling" = "yes"; then
2045 final_message="$final_message\n Crosscomp.:\tYes"
2046 if [[ -d "$NATIVE_ROOT" ]]; then
2047 CFLAGS_FOR_BUILD="$CFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2048 CXXFLAGS_FOR_BUILD="$CXXFLAGS_FOR_BUILD -I$NATIVE_ROOT/include"
2049 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -L$NATIVE_ROOT/lib"
2050 if test "$host_vendor" != "apple" ; then
2051 LDFLAGS_FOR_BUILD="$LDFLAGS_FOR_BUILD -Wl,-rpath=$NATIVE_ROOT/lib"
2053 final_message="$final_message\n Native Root:\t$NATIVE_ROOT"
2056 final_message="$final_message\n Crosscomp.:\tNo"
2059 final_message="$final_message\n target ARCH:\t$use_arch"
2060 final_message="$final_message\n target CPU:\t$use_cpu"
2062 if test "$use_gles" = "yes"; then
2063 final_message="$final_message\n OpenGLES:\tYes"
2068 if test "$use_gl" = "yes"; then
2069 final_message="$final_message\n OpenGL:\tYes"
2072 final_message="$final_message\n OpenGL:\tNo (Very Slow)"
2073 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_2D"
2078 if test "$use_alsa" = "yes"; then
2080 AC_DEFINE([USE_ALSA],[1],["Define to 1 if alsa is installed"])
2081 final_message="$final_message\n ALSA:\t\tYes"
2084 final_message="$final_message\n ALSA:\t\tNo"
2087 if test "$use_dbus" = "yes"; then
2088 final_message="$final_message\n DBUS:\t\tYes"
2090 final_message="$final_message\n DBUS:\t\tNo"
2093 if test "x$use_vdpau" != "xno"; then
2094 final_message="$final_message\n VDPAU:\tYes"
2096 final_message="$final_message\n VDPAU:\tNo"
2099 if test "x$use_vaapi" != "xno"; then
2100 final_message="$final_message\n VAAPI:\tYes"
2102 final_message="$final_message\n VAAPI:\tNo"
2105 if test "x$use_crystalhd" != "xno"; then
2106 final_message="$final_message\n CrystalHD:\tYes"
2108 final_message="$final_message\n CrystalHD:\tNo"
2111 if test "x$use_vtbdecoder" != "xno"; then
2112 final_message="$final_message\n VTBDecoder:\tYes"
2114 final_message="$final_message\n VTBDecoder:\tNo"
2117 if test "$use_openmax" != "no"; then
2118 final_message="$final_message\n OpenMax:\tYes"
2120 final_message="$final_message\n OpenMax:\tNo"
2123 if test "$use_joystick" = "yes"; then
2124 final_message="$final_message\n Joystick:\tYes"
2125 SDL_DEFINES="$SDL_DEFINES -DHAS_SDL_JOYSTICK"
2127 final_message="$final_message\n Joystick:\tNo"
2130 if test "$use_xrandr" = "yes"; then
2131 final_message="$final_message\n XRandR:\tYes"
2134 final_message="$final_message\n XRandR:\tNo"
2138 if test "$use_waveform" = "yes"; then
2139 final_message="$final_message\n Waveform:\tYes"
2141 final_message="$final_message\n Waveform:\tNo"
2144 if test "$use_spectrum" = "yes"; then
2145 final_message="$final_message\n Spectrum:\tYes"
2147 final_message="$final_message\n Spectrum:\tNo"
2150 if test "$use_goom" = "yes"; then
2151 final_message="$final_message\n GOOM:\t\tYes"
2153 final_message="$final_message\n GOOM:\t\tNo"
2156 if test "$use_rsxs" = "yes"; then
2157 final_message="$final_message\n RSXS:\t\tYes"
2159 final_message="$final_message\n RSXS:\t\tNo"
2162 if test "$use_fishbmc" = "yes"; then
2163 final_message="$final_message\n FishBMC:\tYes"
2165 final_message="$final_message\n FishBMC:\tNo"
2168 if test "$use_projectm" = "yes"; then
2169 final_message="$final_message\n ProjectM:\tYes"
2171 final_message="$final_message\n ProjectM:\tNo"
2174 if test "$use_skin_touched" = "yes"; then
2175 final_message="$final_message\n Skin Touched:\tYes"
2177 final_message="$final_message\n Skin Touched:\tNo"
2180 if test "$use_x11" = "yes"; then
2181 final_message="$final_message\n X11:\t\tYes"
2183 final_message="$final_message\n X11:\t\tNo"
2186 if test "$use_wayland" = "yes"; then
2187 final_message="$final_message\n Wayland:\tYes"
2191 final_message="$final_message\n Wayland:\tNo"
2194 if test "$use_libbluray" = "yes"; then
2195 final_message="$final_message\n Bluray:\tYes"
2197 final_message="$final_message\n Bluray:\tNo"
2200 if test "x$use_texturepacker" != "xno"; then
2201 final_message="$final_message\n TexturePacker:Yes"
2204 final_message="$final_message\n TexturePacker:No"
2208 if test "$use_mid" = "yes"; then
2209 final_message="$final_message\n MID Support:\tYes"
2210 SDL_DEFINES="$SDL_DEFINES -DMID"
2212 final_message="$final_message\n MID Support:\tNo"
2217 if test "x$use_ccache" != "xno"; then
2218 AC_PATH_PROG(CCACHE,ccache,none)
2219 if test "$ac_cv_path_CCACHE" = "none"; then
2220 if test "x$use_ccache" = "xyes"; then
2221 AC_MSG_ERROR([ccache not found.]);
2223 AC_MSG_NOTICE([ccache not found. Falling back to default CC])
2224 final_message="$final_message\n ccache:\tNo"
2227 CC="$ac_cv_path_CCACHE $CC"
2228 CXX="$ac_cv_path_CCACHE $CXX"
2229 AC_MSG_NOTICE(enabling ccache)
2230 final_message="$final_message\n ccache:\tYes"
2233 final_message="$final_message\n ccache:\tNo"
2236 if test "$use_alsa" = "yes"; then
2237 final_message="$final_message\n ALSA Support:\tYes"
2239 final_message="$final_message\n ALSA Support:\tNo"
2242 if test "x$use_pulse" != "xno"; then
2243 XBMC_STANDALONE_SH_PULSE=tools/Linux/xbmc-standalone.sh.pulse
2244 final_message="$final_message\n PulseAudio:\tYes"
2246 XBMC_STANDALONE_SH_PULSE=/dev/null
2247 final_message="$final_message\n PulseAudio:\tNo"
2250 if test "$use_hal" = "yes"; then
2251 final_message="$final_message\n HAL Support:\tYes"
2253 final_message="$final_message\n HAL Support:\tNo"
2257 if test "$use_dvdcss" = "yes"; then
2258 AC_MSG_NOTICE($dvdcss_enabled)
2259 final_message="$final_message\n DVDCSS:\tYes"
2261 SKIP_CONFIG_DVDCSS=0
2262 DVDREAD_CFLAGS="-D_XBMC -DHAVE_DVDCSS_DVDCSS_H"
2264 AC_MSG_NOTICE($dvdcss_disabled)
2265 final_message="$final_message\n DVDCSS:\tNo"
2267 SKIP_CONFIG_DVDCSS=1
2268 DVDREAD_CFLAGS="-D_XBMC -UHAVE_DVDCSS_DVDCSS_H"
2270 if test "$host_vendor" = "apple"; then
2271 DVDREAD_CFLAGS="$DVDREAD_CFLAGS -D__DARWIN__"
2274 # Google Test Framework
2275 if test "$configure_gtest" = "yes"; then
2276 AC_MSG_NOTICE($gtest_enabled)
2277 final_message="$final_message\n Google Test Framework Configured:\tYes"
2281 AC_MSG_NOTICE($gtest_disabled)
2282 final_message="$final_message\n Google Test Framework Configured:\tNo"
2287 if test "$use_avahi" = "yes"; then
2288 final_message="$final_message\n Avahi:\tYes"
2290 final_message="$final_message\n Avahi:\tNo"
2293 if test "$use_mdnsembedded" != "no"; then
2294 final_message="$final_message\n mDNSEmbedded:\tYes"
2296 final_message="$final_message\n mDNSEmbedded:\tNo"
2299 if test "$use_nonfree" = "yes"; then
2300 final_message="$final_message\n Non-free:\tYes"
2302 AC_DEFINE([HAVE_XBMC_NONFREE], [1], [Define to 1 to enable non-free components.])
2305 final_message="$final_message\n Non-free:\tNo"
2308 if test "$use_asap" = "yes"; then
2309 AC_CHECK_PROGS(HAVE_GDC,gdc-4.4 gdc-4.3 gdc,"no")
2310 if test "$HAVE_GDC" = "no"; then
2311 AC_MSG_ERROR($missing_program);
2313 AC_CHECK_PROG(HAVE_FPC,fpc,"yes","no")
2314 if test "$HAVE_FPC" = "no"; then
2315 AC_MSG_ERROR($missing_program);
2318 AC_DEFINE([USE_ASAP_CODEC], [1], [Define to 1 to enable ASAP codec.])
2319 final_message="$final_message\n ASAP Codec:\tYes"
2322 final_message="$final_message\n ASAP Codec:\tNo"
2325 if test "$use_mysql" = "yes"; then
2326 final_message="$final_message\n MySQL:\tYes"
2329 final_message="$final_message\n MySQL:\tNo"
2332 if test "$use_webserver" = "yes"; then
2333 final_message="$final_message\n Webserver:\tYes"
2336 final_message="$final_message\n Webserver:\tNo"
2340 if test "$use_libssh" != "no"; then
2341 final_message="$final_message\n libssh support:\tYes"
2343 final_message="$final_message\n libssh support:\tNo"
2346 if test "$use_librtmp" != "no"; then
2347 final_message="$final_message\n libRTMP support:\tYes"
2349 final_message="$final_message\n libRTMP support:\tNo"
2352 if test "x$use_samba" != "xno"; then
2353 final_message="$final_message\n libsmbclient support:\tYes"
2355 final_message="$final_message\n libsmbclient support:\tNo"
2358 if test "$use_libnfs" != "no"; then
2359 final_message="$final_message\n libnfs client support:Yes"
2361 final_message="$final_message\n libnfs client support:No"
2364 if test "x$use_libafpclient" != "xno"; then
2365 final_message="$final_message\n libafpclient support:\tYes"
2367 final_message="$final_message\n libafpclient support:\tNo"
2370 if test "$use_airplay" != "no"; then
2371 final_message="$final_message\n AirPlay support:\tYes"
2373 final_message="$final_message\n AirPLay support:\tNo"
2376 if test "x$use_airtunes" != "xno"; then
2377 if test "x$USE_LIBSHAIRPORT" == "x1"; then
2378 final_message="$final_message\n AirTunes support (libshairplay):\tYes"
2380 final_message="$final_message\n AirTunes support (libshairport):\tYes"
2383 final_message="$final_message\n AirTunes support:\tNo"
2386 if test "x$use_upnp" != "xno"; then
2387 final_message="$final_message\n UPnP support:\t\tYes"
2389 AC_DEFINE([USE_UPNP], [1], [Define to 1 to enable UPnP support.])
2392 final_message="$final_message\n UPnP support:\t\tNo"
2395 if test "$use_optical_drive" = "yes"; then
2396 final_message="$final_message\n Optical drive:\tYes"
2398 final_message="$final_message\n Optical drive:\tNo"
2401 if test "x$use_libudev" != "xno"; then
2402 final_message="$final_message\n libudev support:\tYes"
2404 final_message="$final_message\n libudev support:\tNo"
2407 if test "x$use_libusb" != "xno"; then
2408 final_message="$final_message\n libusb support:\tYes"
2410 final_message="$final_message\n libusb support:\tNo"
2413 if test "x$use_libcec" != "xno"; then
2414 final_message="$final_message\n libcec support:\tYes"
2416 final_message="$final_message\n libcec support:\tNo"
2419 if test "x$use_libmp3lame" != "xno"; then
2420 final_message="$final_message\n libmp3lame support:\tYes"
2422 final_message="$final_message\n libmp3lame support:\tNo"
2425 if test "x$use_libvorbisenc" != "xno"; then
2426 final_message="$final_message\n libvorbisenc support:\tYes"
2428 final_message="$final_message\n libvorbisenc support:\tNo"
2431 if test "x$use_libcap" != "xno"; then
2432 final_message="$final_message\n libcap support:\tYes"
2434 final_message="$final_message\n libcap support:\tNo"
2437 if test "x$add_players" != "xno"; then
2438 final_message="$final_message\n additional players:\tYes, $add_players"
2440 final_message="$final_message\n additional players:\tNo"
2443 if test "x$add_codecs" != "xno"; then
2444 final_message="$final_message\n additional codecs:\tYes, $add_codecs"
2446 final_message="$final_message\n additional codecs:\tNo"
2449 ### External libraries messages
2451 if test "$use_external_ffmpeg" = "yes"; then
2452 final_message="$final_message\n External FFmpeg:\tYes"
2454 final_message="$final_message\n External FFmpeg:\tNo"
2457 if test "$host_vendor" = "apple" ; then
2458 # built internal but referenced as external, we link directly to them.
2459 # this MUST be the last thing before OUTPUT_FILES as they do not
2460 # exist until after we build FFMpeg.
2461 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavcodec -lavcodec"
2462 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavfilter -lavfilter"
2463 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswresample -lswresample"
2464 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavformat -lavformat"
2465 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libavutil -lavutil"
2466 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libpostproc -lpostproc"
2467 LIBS="$LIBS -L\$(abs_top_srcdir)/lib/ffmpeg/libswscale -lswscale"
2471 DISABLE_PVR_ADDON_CONFIG=1
2472 if [[ -f "pvr-addons/Makefile.am" ]]; then
2473 final_message="$final_message\n PVR add-ons:\t\tYes"
2475 DISABLE_PVR_ADDON_CONFIG=0
2477 final_message="$final_message\n PVR add-ons:\t\tNo"
2480 OUTPUT_FILES="Makefile \
2482 addons/skin.confluence/media/Makefile \
2484 xbmc/cdrip/Makefile \
2485 xbmc/cores/Makefile \
2486 xbmc/cores/VideoRenderers/Makefile \
2487 xbmc/cores/dvdplayer/Makefile \
2489 lib/libdvd/Makefile \
2490 xbmc/cores/DllLoader/Makefile \
2491 xbmc/cores/DllLoader/exports/Makefile \
2492 xbmc/cores/dvdplayer/DVDCodecs/Makefile \
2493 xbmc/cores/dvdplayer/DVDCodecs/Audio/Makefile \
2494 xbmc/cores/dvdplayer/DVDCodecs/Overlay/Makefile \
2495 xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile \
2496 xbmc/cores/dvdplayer/DVDDemuxers/Makefile \
2497 xbmc/cores/dvdplayer/DVDSubtitles/Makefile \
2498 xbmc/cores/AudioEngine/Makefile \
2499 xbmc/cores/paplayer/Makefile \
2500 xbmc/cores/omxplayer/Makefile \
2501 lib/timidity/Makefile \
2502 lib/xbadpcm/Makefile \
2504 lib/nosefart/Makefile \
2505 lib/libsidplay2/Makefile \
2506 lib/vgmstream/Makefile \
2507 lib/snesapu/SNES/SNESAPU/Makefile \
2508 lib/stsound/StSoundLibrary/Makefile \
2509 xbmc/cores/playercorefactory/Makefile \
2510 xbmc/music/karaoke/Makefile \
2512 xbmc/guilib/Makefile \
2513 xbmc/input/linux/Makefile \
2514 xbmc/interfaces/Makefile \
2515 xbmc/network/Makefile \
2516 xbmc/network/upnp/Makefile \
2517 lib/libRTV/Makefile \
2518 lib/libexif/Makefile \
2519 lib/libXDAAP/Makefile \
2520 lib/cmyth/Makefile \
2521 lib/libhdhomerun/Makefile \
2522 lib/libsquish/Makefile \
2523 lib/cximage-6.0/Makefile \
2524 lib/libUPnP/Makefile \
2525 xbmc/DllPaths_generated.h \
2526 xbmc/DllPaths_generated_android.h \
2527 xbmc/freebsd/Makefile \
2528 xbmc/linux/Makefile \
2529 xbmc/filesystem/Makefile \
2530 xbmc/screensavers/rsxs-0.9/xbmc/Makefile \
2531 xbmc/visualizations/XBMCProjectM/Makefile \
2532 xbmc/visualizations/Goom/Makefile \
2533 xbmc/visualizations/OpenGLSpectrum/Makefile \
2534 xbmc/visualizations/fishBMC/Makefile \
2535 xbmc/visualizations/WaveForm/Makefile \
2536 xbmc/windowing/Makefile \
2537 xbmc/windowing/egl/Makefile \
2538 lib/addons/library.xbmc.addon/Makefile \
2539 lib/addons/library.xbmc.codec/Makefile \
2540 lib/addons/library.xbmc.gui/Makefile \
2541 lib/addons/library.xbmc.pvr/Makefile \
2542 xbmc/visualizations/EGLHelpers/Makefile \
2543 tools/Linux/xbmc.sh \
2544 tools/Linux/xbmc-standalone.sh \
2545 tools/TexturePacker/Makefile \
2546 tools/EventClients/Clients/OSXRemote/Makefile \
2547 xbmc/peripherals/bus/Makefile \
2548 xbmc/peripherals/devices/Makefile \
2549 xbmc/android/activity/Makefile \
2550 xbmc/android/loader/Makefile \
2551 xbmc/android/jni/Makefile \
2552 xbmc/utils/Makefile \
2553 xbmc/main/Makefile \
2554 xbmc/windowing/tests/wayland/Makefile \
2555 project/cmake/xbmc-config.cmake"
2557 if test "$use_skin_touched" = "yes"; then
2558 OUTPUT_FILES="$OUTPUT_FILES addons/skin.touched/media/Makefile"
2561 OUTPUT_FILES="$OUTPUT_FILES \
2562 xbmc/interfaces/python/Makefile \
2563 xbmc/interfaces/python/test/Makefile"
2565 # Line below is used so we can use AM_INIT_AUTOMAKE. The corresponding
2566 # .dummy.am does nothing.
2567 AC_CONFIG_FILES([.dummy])
2569 AC_CONFIG_FILES([${OUTPUT_FILES}])
2570 OUTPUT_FILES="$OUTPUT_FILES \
2576 AC_SUBST(CXX_FOR_BUILD)
2577 AC_SUBST(CC_FOR_BUILD)
2578 AC_SUBST(CFLAGS_FOR_BUILD)
2579 AC_SUBST(CXXFLAGS_FOR_BUILD)
2580 AC_SUBST(LDFLAGS_FOR_BUILD)
2581 AC_SUBST(SDL_DEFINES)
2582 AC_SUBST(BUILD_DVDCSS)
2583 AC_SUBST(DISABLE_WAVEFORM)
2584 AC_SUBST(DISABLE_SPECTRUM)
2585 AC_SUBST(DISABLE_GOOM)
2586 AC_SUBST(DISABLE_RSXS)
2587 AC_SUBST(DISABLE_FISHBMC)
2588 AC_SUBST(DISABLE_PROJECTM)
2589 AC_SUBST(USE_SKIN_TOUCHED)
2590 AC_SUBST(USE_EXTERNAL_FFMPEG)
2591 AC_SUBST(USE_LIBAV_HACKS)
2592 AC_SUBST(PYTHON_VERSION)
2593 AC_SUBST(OUTPUT_FILES)
2594 AC_SUBST(HAVE_XBMC_NONFREE)
2595 AC_SUBST(USE_ASAP_CODEC)
2596 AC_SUBST(LIBCURL_BASENAME)
2597 AC_SUBST(LIBFLAC_BASENAME)
2598 AC_SUBST(LIBVORBISFILE_BASENAME)
2599 AC_SUBST(LIBMODPLUG_BASENAME)
2600 AC_SUBST(LIBMAD_BASENAME)
2601 AC_SUBST(LIBOGG_BASENAME)
2602 AC_SUBST(LIBVORBISENC_BASENAME)
2603 AC_SUBST(LIBVORBIS_BASENAME)
2604 AC_SUBST(LIBASS_BASENAME)
2605 AC_SUBST(LIBMEPG2_BASENAME)
2606 AC_SUBST_FILE(XBMC_STANDALONE_SH_PULSE)
2607 AC_SUBST(USE_OPENGL)
2608 AC_SUBST(USE_OPENGLES)
2611 AC_SUBST(USE_CRYSTALHD)
2612 AC_SUBST(USE_LIBSMBCLIENT)
2613 AC_SUBST(USE_LIBNFS)
2614 AC_SUBST(USE_LIBAFPCLIENT)
2615 AC_SUBST(USE_AIRPLAY)
2616 AC_SUBST(USE_OPENMAX)
2618 AC_SUBST(USE_XRANDR)
2620 AC_SUBST(USE_TEXTUREPACKER)
2621 AC_SUBST(USE_AIRTUNES)
2622 AC_SUBST(USE_LIBUDEV)
2623 AC_SUBST(USE_LIBUSB)
2624 AC_SUBST(USE_LIBCEC)
2626 AC_SUBST(USE_WAYLAND)
2627 AC_SUBST(USE_WEB_SERVER)
2629 AC_SUBST(USE_XKBCOMMON)
2630 AC_SUBST(USE_OMXLIB)
2631 AC_SUBST(USE_ANDROID)
2632 AC_SUBST(GTEST_CONFIGURED)
2633 AC_SUBST(USE_DOXYGEN)
2634 AC_SUBST(USE_PVR_ADDONS)
2636 # pushd and popd are not available in other shells besides bash, so implement
2637 # our own pushd/popd functions
2642 if [[ -d "$dirname" ]] && [[ -x "$dirname" ]]; then
2644 XB_DIRSTACK="$dirname ${XB_DIRSTACK:-$PWD}"
2647 AC_MSG_ERROR(xb_pushd: unable to change to $dirname)
2652 if [[ -n "$XB_DIRSTACK" ]]; then
2653 XB_DIRSTACK="${XB_DIRSTACK#* }"
2654 cd "${XB_DIRSTACK%% *}"
2657 AC_MSG_ERROR(xb_popd: unable to go back to previous directory)
2661 # Function to run the configure scripts in our submodules
2662 # Consists of three paramaters, the path to the submodule, the configure command
2663 # with appropriate arguments, and a third parameter set to 1 if we are to skip
2664 # running the script, anything else if not.
2665 AC_DEFUN([XB_CONFIG_MODULE],[
2666 AC_CONFIG_COMMANDS_POST([
2667 if [[ $3 != "1" ]]; then
2668 if [[ -d $1 ]]; then
2671 if [[ $? -ne 0 ]]; then
2673 AC_MSG_ERROR([[Submodule $1 failed to configure]])
2678 AC_MSG_ERROR([[Submodule $1 does not exist]])
2681 AC_MSG_NOTICE([[Skipping configuration of submodule $1.]])
2686 XB_CONFIG_MODULE([lib/ffmpeg], [
2687 if test "$host_vendor" = "apple" ; then
2688 ffmpg_config="--target-os=$ffmpeg_target_os"
2689 # handle disables first, we do individual enables later
2690 ffmpg_config="$ffmpg_config --disable-muxers --disable-encoders"
2691 ffmpg_config="$ffmpg_config --disable-devices --disable-doc"
2692 ffmpg_config="$ffmpg_config --disable-ffplay --disable-ffmpeg"
2693 ffmpg_config="$ffmpg_config --disable-ffprobe --disable-ffserver"
2694 ffmpg_config="$ffmpg_config --enable-vda --disable-crystalhd"
2695 ffmpg_config="$ffmpg_config --disable-decoder=mpeg_xvmc"
2697 # handle conditional enables/disables
2698 if test "$use_debug" = "no"; then
2699 ffmpg_config="$ffmpg_config --disable-debug"
2701 if test "$use_cpu" != "no"; then
2702 ffmpg_config="$ffmpg_config --cpu=$use_cpu"
2704 if test "$use_arch" != "no"; then
2705 ffmpg_config="$ffmpg_config --arch=$use_arch --enable-cross-compile"
2707 if test "$use_arch" = "arm"; then
2708 ffmpg_config="$ffmpg_config --enable-pic"
2709 ffmpg_config="$ffmpg_config --disable-armv5te --disable-armv6t2"
2710 if test "$use_neon" = "yes"; then
2711 ffmpg_config="$ffmpg_config --enable-neon"
2713 ffmpg_config="$ffmpg_config --disable-neon"
2716 ffmpg_config="$ffmpg_config --disable-amd3dnow"
2718 if test "$use_ffmpeg_libvorbis" = "yes"; then
2719 ffmpg_config="$ffmpg_config --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis"
2721 ffmpg_config="$ffmpg_config --disable-libvorbis"
2723 if test "$have_gnutls" = "yes"; then
2724 ffmpg_config="$ffmpg_config --enable-gnutls"
2727 # handle individual enables
2728 ffmpg_config="$ffmpg_config --enable-gpl"
2729 ffmpg_config="$ffmpg_config --enable-postproc"
2730 ffmpg_config="$ffmpg_config --enable-static --enable-pthreads"
2731 ffmpg_config="$ffmpg_config --enable-muxer=spdif --enable-muxer=adts --enable-muxer=asf --enable-muxer=ipod"
2732 ffmpg_config="$ffmpg_config --enable-encoder=ac3 --enable-encoder=aac --enable-encoder=wmav2"
2733 ffmpg_config="$ffmpg_config --enable-protocol=http"
2734 ffmpg_config="$ffmpg_config --enable-runtime-cpudetect"
2736 # ffmpeg will not compile with llvm-gcc-4.2, use clang instead
2739 ffmpg_config="$ffmpg_config --cc=clang" ;;
2741 ffmpg_config="$ffmpg_config --cc=$CC" ;;
2744 # extra-cflags must be passed alone or it gets expanded wrong by the ffmpeg configure
2745 FFMPEG_EXTRACFLAGS="$CFLAGS $FFMPEG_EXTRACFLAGS -w -D_DARWIN_C_SOURCE -Dattribute_deprecated="
2747 LDFLAGS="$LDFLAGS" ./configure --extra-cflags="$FFMPEG_EXTRACFLAGS" $ffmpg_config --as="$AS"
2749 # if using llvm-gcc-4.2 as assembler, -MMD is not enough to generate
2750 # dependency files in the right place, replace it with something that works
2753 sed -ie "s#AS_DEPFLAGS=-MMD#AS_DEPFLAGS=-MMD -MF \$(\@:.o=.d) -MT \$\@#" config.mak ;;
2756 # ffmpeg will use yasm found at ${prefix}/bin during configure
2757 # but then hardcodes 'yasm' in config.mak, fix it.
2758 sed -ie "s#YASM=yasm#YASM=${YASM}#" config.mak
2759 sed -ie "s#YASMDEP=yasm#YASMDEP=${YASM}#" config.mak
2760 sed -ie "s# -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 # #" config.mak
2765 LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
2767 --extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
2769 `if test "$use_debug" = "no"; then echo --disable-debug; fi` \
2770 `if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
2771 `if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
2772 `if test "$use_cpu" != "no"; then echo --cpu=$use_cpu; fi`\
2773 `if test "$use_neon" = "yes"; then echo --enable-neon; else echo --disable-neon; fi`\
2774 --target-os=$ffmpeg_target_os \
2776 --enable-muxer=spdif \
2777 --enable-muxer=adts \
2778 --enable-muxer=asf \
2779 --enable-muxer=ipod \
2780 --disable-encoders \
2781 --enable-encoder=ac3 \
2782 --enable-encoder=aac \
2783 --enable-encoder=wmav2 \
2784 `if test "$use_ffmpeg_libvorbis" = "yes"; then echo --enable-libvorbis --enable-muxer=ogg --enable-encoder=libvorbis; else echo --disable-libvorbis; fi` \
2785 --disable-decoder=mpeg_xvmc \
2789 --disable-ffserver \
2791 --disable-crystalhd \
2796 `if test "x$use_vdpau" != "xno"; then echo --enable-vdpau; else echo --disable-vdpau; fi` \
2797 `if test "x$use_vaapi" != "xno"; then echo --enable-vaapi; else echo --disable-vaapi; fi` \
2798 `if test "$use_optimizations" != "no"; then echo --enable-optimizations; else echo --disable-optimizations; fi` \
2799 --enable-protocol=http \
2800 `if test "$have_gnutls" = "yes"; then echo --enable-gnutls; fi` \
2802 --enable-runtime-cpudetect \
2803 `if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
2804 `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
2805 `if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
2806 else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
2807 `case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
2809 sed -i -e "s#define HAVE_SYMVER 1#define HAVE_SYMVER 0#" config.h &&
2810 sed -i -e "s#define HAVE_SYMVER_GNU_ASM 1#define HAVE_SYMVER_GNU_ASM 0#" config.h
2812 ], [$USE_EXTERNAL_FFMPEG])
2814 XB_CONFIG_MODULE([lib/libdvd/libdvdcss], [
2818 CFLAGS="$CFLAGS $DROID_DVDLIB_SEEK64" \
2819 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2820 --host=$host_alias \
2821 --build=$build_alias \
2822 --target=$target_alias \
2826 ], [$SKIP_CONFIG_DVDCSS])
2828 XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
2830 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
2831 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2832 --host=$host_alias \
2833 --build=$build_alias \
2834 --target=$target_alias \
2840 $MAKE dvdread-config &&
2841 mkdir -p `pwd`/../includes/dvdread
2842 cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
2843 cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
2846 XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
2848 --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
2849 --extra-ldflags="-L`pwd`/../libdvdread/obj" \
2850 --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
2851 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2852 --host=$host_alias \
2853 --build=$build_alias \
2854 --target=$target_alias \
2860 XB_CONFIG_MODULE([xbmc/visualizations/XBMCProjectM/libprojectM],[
2862 rm -f CMakeCache.txt && \
2863 CC="$ORIGCC" CXX="$ORIGCXX" LDFLAGS="$LDFLAGS" cmake \
2864 -DCMAKE_BUILD_TYPE=None -DUSE_FTGL:BOOL=OFF \
2865 -DCMAKE_C_FLAGS:STRING="${CPPFLAGS} ${CFLAGS}" \
2866 -DCMAKE_CXX_FLAGS:STRING="${CPPFLAGS} ${CXXFLAGS}" \
2867 -DCMAKE_INSTALL_PREFIX="${prefix}" \
2868 -DCMAKE_INSTALL_LIBDIR:PATH="${libdir}" \
2869 -DINCLUDE_INSTALL_DIR:PATH="${includedir}" \
2870 -DLIB_INSTALL_DIR:PATH="${libdir}" \
2871 -DSYSCONF_INSTALL_DIR:PATH="${sysconfdir}" \
2872 -DSHARE_INSTALL_PREFIX:PATH="${datadir}" . &&
2873 if test "$host_vendor" = "apple" ; then
2874 # cmake has hardcoded paths to macports which bork our darwin depends cross/ppc, remove them
2875 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/link.txt
2876 sed -ie "s|-L/opt/local/lib| |" CMakeFiles/projectM.dir/flags.make
2877 sed -ie "s|-I/opt/local/include| |" CMakeFiles/projectM.dir/flags.make
2880 ], [$DISABLE_PROJECTM])
2882 XB_CONFIG_MODULE([xbmc/visualizations/Goom/goom2k4-0],[
2885 CXXFLAGS="$CXXFLAGS" \
2886 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2887 --host=$host_alias \
2888 --build=$build_alias \
2889 --target=$target_alias \
2895 XB_CONFIG_MODULE([xbmc/screensavers/rsxs-0.9/], [
2896 if test "$host_vendor" = "apple"; then
2897 TEMPCFLAGS="${CFLAGS} -fgnu89-inline";
2899 TEMPCFLAGS="$CFLAGS";
2904 CFLAGS="$TEMPCFLAGS" \
2905 CXXFLAGS="$CXXFLAGS" \
2906 `if test "$host_vendor" = "apple"; then echo --with-png=${prefix} --x-includes=/usr/X11/include --x-libraries=/usr/X11/lib; fi` \
2907 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2908 --host=$host_alias \
2909 --build=$build_alias \
2910 --target=$target_alias \
2911 --without-xscreensaver \
2914 --disable-fieldlines \
2918 --disable-hyperspace \
2921 if echo "$ARCH" | grep -q freebsd ; then
2922 sed -i.back "s;\(STDBOOL_H = \)stdbool.h;\1;" lib/Makefile
2926 XB_CONFIG_MODULE([lib/cpluff], [
2927 ./configure --disable-nls \
2928 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2929 --host=$host_alias \
2930 --build=$build_alias \
2931 --target=$target_alias CFLAGS="$CFLAGS" CC="$CC" CXX="$CXX" LDFLAGS="$LDFLAGS" LIBS=""
2932 #LDFLAGS="$LDFLAGS -Wl,-read_only_relocs,suppress"
2935 XB_CONFIG_MODULE([lib/gtest], [
2940 --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
2941 --host=$host_alias \
2942 --build=$build_alias \
2943 --target=$target_alias \
2947 ], [$SKIP_CONFIG_GTEST])
2949 XB_CONFIG_MODULE([pvr-addons], [
2951 --prefix="${prefix}" \
2952 --host=$host_alias \
2953 --build=$build_alias \
2954 --target=$target_alias \
2958 CXXFLAGS="$CXXFLAGS"
2959 ], [$DISABLE_PVR_ADDON_CONFIG])
2963 final_message="$final_message\n prefix:\t$prefix\n$dashes"
2964 echo -e "$final_message\n"