# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT([xbmc], [12.9.12], [http://issues.xbmc.org])
+AC_INIT([xbmc], [13.0.0], [http://issues.xbmc.org])
AC_CONFIG_HEADERS([xbmc/config.h])
AH_TOP([#pragma once])
m4_include([m4/ax_prog_cc_for_build.m4])
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
+# workaround for autotools that don't set this
+abs_top_srcdir=${abs_top_srcdir=$(cd $srcdir; pwd)}
+
# check for enabling additional players
AC_DEFUN([XB_ADD_PLAYER],
[
x11_enabled="== X11 enabled. =="
x11_disabled="== X11 disabled. =="
pulse_not_found="== Could not find libpulse. PulseAudio support disabled. =="
-pulse_disabled="== PulseAudio support manually disabled. =="
+pulse_disabled="== PulseAudio support disabled. =="
dvdcss_enabled="== DVDCSS support enabled. =="
dvdcss_disabled="== DVDCSS support disabled. =="
hal_not_found="== Could not find hal. HAL support disabled. =="
# External library message strings
external_libraries_enabled="== Use of all supported external libraries enabled. =="
external_libraries_disabled="== Use of all supported external libraries disabled. =="
-external_ffmpeg_enabled="== Use of external ffmpeg enabled. =="
-external_ffmpeg_disabled="== Use of external ffmpeg disabled. =="
-ffmpeg_vdpau_not_supported="== External ffmpeg doesn't support VDPAU. VDPAU support disabled. =="
dashes="------------------------"
final_message="\n XBMC Configuration:"
final_message="\n$dashes$final_message\n$dashes"
[use_external_libraries=$enableval],
[use_external_libraries=no])
-AC_ARG_ENABLE([external-ffmpeg],
- [AS_HELP_STRING([--enable-external-ffmpeg],
- [enable use of external ffmpeg libraries (default is no) 'Linux only'])],
- [use_external_ffmpeg=$enableval],
- [use_external_ffmpeg=$use_external_libraries])
-
AC_ARG_ENABLE([libav-compat],
[AS_HELP_STRING([--enable-libav-compat],
[build a wrapper around libav to provide the functions needed by XBMC. This is
MAKE="${MAKE:-make}"
OBJDUMP="${OBJDUMP:-objdump}"
+use_external_ffmpeg=no
+use_static_ffmpeg=no
+
# ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
# there is no autoconf variable which will give
# the correct output format when doing cross compilation
use_sdl=no
use_x11=no
build_shared_lib=yes
- ;;
+ ;;
i*86*-linux-gnu*|i*86*-*-linux-uclibc*)
ARCH="i486-linux"
if test "$use_cpu" = "no" -a "$cross_compiling" = "yes"; then
use_arch="x86"
use_cpu="i686"
fi
+ use_static_ffmpeg=yes
;;
x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*)
ARCH="x86_64-linux"
use_arch="x86_64"
use_cpu="x86_64"
fi
+ use_static_ffmpeg=yes
;;
i386-*-freebsd*)
ARCH="x86-freebsd"
powerpc64-*-linux-gnu*|powerpc64-*-linux-uclibc*)
ARCH="powerpc64-linux"
;;
- arm*-*-linux-gnu*)
+ arm*-*-linux-gnu*|arm*-*-linux-uclibc*)
ARCH="arm"
use_arch="arm"
ffmpeg_target_os=linux
use_sdl=no
use_x11=no
use_wayland=no
+ use_static_ffmpeg=yes
;;
arm*-*linux-android*)
target_platform=target_android
if test "$GIT_REV" = ""; then
if test -f VERSION ; then
GIT_REV=$(awk 'END{print substr($1,1,16)}' VERSION)
- elif test "$HAVE_GIT" = "yes"; then
+ elif test "$HAVE_GIT" = "yes" -a -d ${abs_top_srcdir}/.git; then
GIT_REV=$(git --no-pager log --abbrev=7 -n 1 --pretty=format:"%h %ci" HEAD | awk '{gsub("-", "");print $2"-"$1}')
else
GIT_REV="Unknown"
fi
fi
fi
+if test "$use_static_ffmpeg" = "yes"; then
+ USE_STATIC_FFMPEG=1
+ AC_DEFINE([USE_STATIC_FFMPEG], [1], [link ffmpeg statically])
+ # ffmpeg may depend on gnutls and vorbisenc, we add those libs at the end of linker
+ # command in order to resolve any missing symbols
+ GNUTLS_ALL_LIBS=`${PKG_CONFIG} --static --libs-only-l --silence-errors gnutls`
+ HOGWEED_ALL_LIBS=`${PKG_CONFIG} --static --libs-only-l --silence-errors hogweed nettle`
+ VORBISENC_ALL_LIBS=`${PKG_CONFIG} --static --libs-only-l --silence-errors vorbisenc`
+fi
# Checks for library functions.
AC_FUNC_ALLOCA
# we need to check for the header because if it exists we set the openssl
# and gcrypt MT callback hooks. This is mostly so that libcurl operates
# in MT manner correctly.
+AC_MSG_CHECKING([for CRYPTO_set_locking_callback(0)])
+AC_TRY_LINK([],[CRYPTO_set_locking_callback(0);],
+ [have_curl_static=yes],
+ [have_curl_static=no])
+AC_MSG_RESULT($have_curl_static)
AC_CHECK_HEADER([openssl/crypto.h], AC_DEFINE([HAVE_OPENSSL],[1],[Define if we have openssl]),)
AC_CHECK_HEADER([gcrypt.h], gcrypt_headers_available=yes,gcrypt_headers_available=no)
if test "$gcrypt_headers_available" = "yes"; then
XB_FIND_SONAME([VORBISFILE], [vorbisfile])
XB_FIND_SONAME([MODPLUG], [modplug])
XB_FIND_SONAME([ASS], [ass])
-
-#link statically against mpeg2 on ios because of ios7
-#crash & burn if dyloaded
-if test "$ARCH" != "arm-osx" ; then
- XB_FIND_SONAME([MPEG2], [mpeg2])
-fi
+XB_FIND_SONAME([MPEG2], [mpeg2])
# Audio encoders
if test "x$use_libmp3lame" != "xno"; then
fi
USE_PULSE=0
else
- AC_CHECK_LIB([pulse],[main],,pulse_found="no")
- AC_CHECK_LIB([pulse-simple],[main],,pulse_found="no")
-
- if test "x$pulse_found" != "xno"; then
- USE_PULSE=1
- elif test "x$use_pulse" = "xyes"; then
- AC_MSG_ERROR($pulse_not_found)
- else
- use_pulse=no
- USE_PULSE=0
- AC_MSG_RESULT($pulse_not_found)
+ PKG_CHECK_MODULES([PULSE], [libpulse >= 1.0],
+ [INCLUDES="$INCLUDES $PULSE_CFLAGS"; LIBS="$LIBS $PULSE_LIBS"; USE_PULSE=1;
+ HAVE_LIBPULSE=1; AC_DEFINE([HAVE_LIBPULSE],[1],[Pulse audio enabled])],
+ [pulse_found="no"; USE_PULSE=0; HAVE_LIBPULSE=0])
+
+ if test "$pulse_found" = "no"; then
+ if test "x$use_pulse" = "xyes"; then
+ AC_MSG_ERROR($pulse_not_found)
+ else
+ AC_MSG_RESULT($pulse_disabled)
+ fi
fi
fi
else
AC_DEFINE([HAVE_LIBSSH], [1], [Whether to use libSSH library.])
fi
+# libcurl
+if test "x$have_curl_static" = "xyes"; then
+ AC_DEFINE([HAS_CURL_STATIC], [1], [Whether OpenSSL inside libcurl is static.])
+fi
+
# libRTMP
if test "$use_librtmp" != "no"; then
- AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
- [if test "$use_librtmp" = "yes"; then
- AC_MSG_ERROR($librtmp_not_found)
- elif test "$use_librtmp" != "no"; then
- AC_MSG_NOTICE($librtmp_not_found)
- use_librtmp="no"
- fi
- ])
- if test "$use_librtmp" != "no"; then
- XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
- fi
- if test "$use_librtmp" != "no"; then
- AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
- fi
+ PKG_CHECK_MODULES([LIBRTMP], [librtmp],
+ [INCLUDES="$INCLUDES $LIBRTMP_CFLAGS"; LIBS="$LIBS $LIBRTMP_LIBS";
+ XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
+ AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
+ RTMP_ALL_LIBS=$(${PKG_CONFIG} --static --libs-only-l --silence-errors librtmp)
+ test "$use_static_ffmpeg" = "yes" && LIBS="$LIBS $RTMP_ALL_LIBS"],
+ [AC_CHECK_HEADERS([librtmp/log.h librtmp/amf.h librtmp/rtmp.h],,
+ [if test "$use_librtmp" = "yes"; then
+ AC_MSG_ERROR($librtmp_not_found)
+ elif test "$use_librtmp" != "no"; then
+ AC_MSG_NOTICE($librtmp_not_found)
+ use_librtmp="no"
+ fi
+ ])
+ if test "$use_librtmp" != "no"; then
+ XB_FIND_SONAME([RTMP], [rtmp], [use_librtmp])
+ fi
+ if test "$use_librtmp" != "no"; then
+ AC_DEFINE([HAS_LIBRTMP], [1], [Whether to use libRTMP library.])
+ fi
+ ])
else
AC_MSG_NOTICE($librtmp_disabled)
fi
xbmc/cores/paplayer/Makefile \
xbmc/cores/omxplayer/Makefile \
lib/timidity/Makefile \
- lib/xbadpcm/Makefile \
lib/asap/Makefile \
lib/nosefart/Makefile \
lib/libsidplay2/Makefile \
AC_SUBST(DISABLE_PROJECTM)
AC_SUBST(USE_SKIN_TOUCHED)
AC_SUBST(USE_EXTERNAL_FFMPEG)
+AC_SUBST(USE_STATIC_FFMPEG)
AC_SUBST(USE_LIBAV_HACKS)
AC_SUBST(PYTHON_VERSION)
AC_SUBST(OUTPUT_FILES)
AC_SUBST(USE_AIRPLAY)
AC_SUBST(USE_OPENMAX)
AC_SUBST(USE_PULSE)
+AC_SUBST(HAVE_LIBPULSE)
AC_SUBST(USE_XRANDR)
AC_SUBST(USE_ALSA)
AC_SUBST(USE_TEXTUREPACKER)
AC_SUBST(GTEST_CONFIGURED)
AC_SUBST(USE_DOXYGEN)
AC_SUBST(USE_PVR_ADDONS)
+AC_SUBST(GNUTLS_ALL_LIBS)
+AC_SUBST(HOGWEED_ALL_LIBS)
+AC_SUBST(VORBISENC_ALL_LIBS)
# pushd and popd are not available in other shells besides bash, so implement
# our own pushd/popd functions
LDFLAGS="$(echo "$LDFLAGS" | sed "s/-Wl,-Bsymbolic-functions//g")" \
./configure \
--extra-cflags="$PASSED_CFLAGS $FFMPEG_EXTRACFLAGS" \
- --disable-static \
`if test "$use_debug" = "no"; then echo --disable-debug; fi` \
`if test "$cross_compiling" = "yes"; then echo --enable-cross-compile; fi` \
`if test "$use_arch" != "no"; then echo --arch=$use_arch; fi`\
--disable-ffserver \
--disable-ffmpeg \
--disable-crystalhd \
- --enable-shared \
+ `if test "$use_static_ffmpeg" = "yes"; then echo --enable-static --disable-shared; else echo --disable-static --enable-shared; fi` \
--disable-doc \
--enable-postproc \
--enable-gpl \
--enable-pthreads \
--enable-runtime-cpudetect \
`if test "$use_hardcoded_tables" = "yes"; then echo --enable-hardcoded-tables; else echo --disable-hardcoded-tables; fi`\
- `if test "$target_platform" = "target_android" && test "$host_cpu" = "i686"; then echo --disable-mmx; fi #workaround for gcc 4.6 bug` \
`if test "$target_platform" = "target_android"; then echo "--custom-libname-with-major=\\$(SLIBPREF)\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; \
else echo "--custom-libname-with-major=\\$(FULLNAME)-\\$(LIBMAJOR)-${ARCH}\\$(SLIBSUF)"; fi` \
`case $host_cpu in i?86*) echo --disable-pic ;; *) echo --enable-pic ;; esac` \
--disable-strip \
--disable-opts \
--cc="$CC" &&
- $MAKE dvdread-config &&
mkdir -p `pwd`/../includes/dvdread
cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
./configure2 \
--extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
--extra-ldflags="-L`pwd`/../libdvdread/obj" \
- --with-dvdread-config="`pwd`/../libdvdread/obj/dvdread-config" \
+ --with-dvdread-config="`pwd`/../dvdread-config" \
--prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
--host=$host_alias \
--build=$build_alias \