diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..25a2f034 --- /dev/null +++ b/configure.ac @@ -0,0 +1,321 @@ +AC_PREREQ([2.57]) + +m4_define([SPICE_MAJOR], 0) +m4_define([SPICE_MINOR], 3) +m4_define([SPICE_MICRO], 99) + +AC_INIT(spice, [SPICE_MAJOR.SPICE_MINOR.SPICE_MICRO], [], spice) + +AC_CONFIG_MACRO_DIR([m4]) +AM_CONFIG_HEADER([config.h]) +AC_CONFIG_AUX_DIR(.) + +AM_INIT_AUTOMAKE([dist-bzip2]) +AM_MAINTAINER_MODE + +AS_IF([test "$CFLAGS" = ""], [], [_cflags_is_set=yes]) +AC_PROG_CC +AS_IF([test "$CXXFLAGS" = ""], [], [_cxxflags_is_set=yes]) +AC_PROG_CXX +AC_PROG_INSTALL +AC_CANONICAL_HOST +AC_PROG_LIBTOOL +AM_PROG_CC_C_O + +SPICE_LT_VERSION=m4_format("%d:%d:%d", SPICE_MAJOR, SPICE_MINOR, SPICE_MICRO) +AC_SUBST(SPICE_LT_VERSION) + +# Check for the CPU we are using +# +AC_MSG_CHECKING(for x86 or x86-64 platform) +case $host_cpu in + i386|i486|i586|i686|i786|k6|k7) + variant=32 + ;; + x86_64) + variant=64 + ;; + *) + AC_MSG_RESULT(no) + echo Only x86 and x86-64 are supported + exit 1 +esac +AC_MSG_RESULT($variant bit) +AM_CONDITIONAL([X86_64], [test "$variant" = 64]) + +AC_MSG_CHECKING([for native Win32]) +case "$host" in + *-*-mingw*) + os_win32=yes + ;; + *) + os_win32=no + ;; +esac +AC_MSG_RESULT([$os_win32]) + +case $host in + *-*-linux*) + os_linux=yes + ;; +esac + +dnl ========================================================================= +dnl Check OS target + +AC_MSG_CHECKING([for some Win32 platform]) +case "$host" in + *-*-mingw*|*-*-cygwin*) + platform_win32=yes + ;; + *) + platform_win32=no + ;; +esac +AC_MSG_RESULT([$platform_win32]) +if test "$platform_win32" = yes; then + red_target=windows +else + red_target=x11 +fi +AC_SUBST(red_target) + +AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes") +AM_CONDITIONAL(OS_UNIX, test "$os_win32" != "yes") +AM_CONDITIONAL(OS_LINUX, test "$os_linux" = "yes") + +dnl ========================================================================= +dnl Check deps + +AC_CHECK_LIBM +AC_SUBST(LIBM) + +AC_CHECK_LIB(rt, clock_gettime, + AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Defined if we have clock_gettime()]) + LIBRT=-lrt + ) +AC_SUBST(LIBRT) + +SPICE_NONPKGCONFIG_LIBS+=" $LIBM $LIBRT" + +SPICE_REQUIRES="" + +PKG_CHECK_MODULES(LOG4CPP, log4cpp) +AC_SUBST(LOG4CPP_CFLAGS) +AC_SUBST(LOG4CPP_LIBS) +SPICE_REQUIRES+=" log4cpp" + +PKG_CHECK_MODULES(QCAIRO, qcairo >= 1.4.6) +AC_SUBST(QCAIRO_CFLAGS) +AC_SUBST(QCAIRO_LIBS) +QCAIRO_LIBDIR=`pkg-config --variable=libdir qcairo` +AC_SUBST(QCAIRO_LIBDIR) +SPICE_REQUIRES+=" qcairo >= 1.4.6" + +PKG_CHECK_MODULES(CELT051, celt051 >= 0.5.1.1) +AC_SUBST(CELT051_CFLAGS) +AC_SUBST(CELT051_LIBS) +AC_SUBST(CELT051_LIBDIR) +SPICE_REQUIRES+=" celt051 >= 0.5.1.1" + +PKG_CHECK_MODULES(FFMPEG, libavcodec libavutil) +AC_SUBST(FFMPEG_CFLAGS) +AC_SUBST(FFMPEG_LIBS) +FFMPEG_LIBDIR=`pkg-config --variable=libdir libavutil` +AC_SUBST(FFMPEG_LIBDIR) +SPICE_REQUIRES+=" libavcodec libavutil" + +PKG_CHECK_MODULES(ALSA, alsa) +AC_SUBST(ALSA_CFLAGS) +AC_SUBST(ALSA_LIBS) +SPICE_REQUIRES+=" alsa" + +PKG_CHECK_MODULES(SSL, openssl) +AC_SUBST(SSL_CFLAGS) +AC_SUBST(SSL_LIBS) +SPICE_REQUIRES+=" openssl" + +# These are commented out because the gl libraries on RHEL 5 do not have pkgconfig files +# +# PKG_CHECK_MODULES(GL, gl glu) +# AC_SUBST(GL_CFLAGS) +# AC_SUBST(GL_LIBS) +# SPICE_REQUIRES+=" gl glu" + +have_gl=yes +AC_CHECK_LIB(GL, glBlendFunc, GL_LIBS="$GL_LIBS -lGL", have_gl=no) +AC_CHECK_LIB(GLU, gluSphere, GL_LIBS="$GL_LIBS -lGLU", have_gl=no) + +if test "x$have_gl" = "xno"; then + AC_MSG_ERROR([GL libraries not available]) +fi + +AC_SUBST(GL_LIBS) +SPICE_NONPKGCONFIG_LIBS+=" $GL_LIBS" + +PKG_CHECK_MODULES(XRANDR, xrandr) +AC_SUBST(XRANDR_CFLAGS) +AC_SUBST(XRANDR_LIBS) +SPICE_REQUIRES+=" xrandr" + +PKG_CHECK_MODULES(XRANDR12, + xrandr >= 1.2, + have_xrandr12=yes, + have_xrandr12=no) + +AM_CONDITIONAL([HAVE_XRANDR12], [test "x$have_xrandr12" = "xyes"]) +if test "x$have_xrandr12" = "xyes" ; then + AC_DEFINE([HAVE_XRANDR12], [], [Define if we have XRANDR 12]) +fi + +# Add parameter for (partial) static linkage of spice client. +# this is used to achive single binary package for all (?) distros. +AC_ARG_ENABLE(static-linkage, + [ --enable-static-linkage will generate spice client binary with static linkage to external libraries ], + [SPICEC_STATIC_LINKAGE_BSTATIC=["-Wl,-Bstatic"]; + SPICEC_STATIC_LINKAGE_BDYNAMIC=["-Wl,-Bdynamic"]]) + + +AS_IF([test "$_cflags_is_set" = "yes"], [], [ + CFLAGS="-g -O3" +]) + + +AS_IF([test "$_cxxflags_is_set" = "yes"], [], [ + CXXFLAGS="-g -O3" +]) + + +dnl =========================================================================== +dnl check compiler flags + +AC_DEFUN([SPICE_CC_TRY_FLAG], [ + AC_MSG_CHECKING([whether $CC supports $1]) + + spice_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $1" + + AC_COMPILE_IFELSE([ ], [spice_cc_flag=yes], [spice_cc_flag=no]) + CFLAGS="$spice_save_CFLAGS" + + if test "x$spice_cc_flag" = "xyes"; then + ifelse([$2], , :, [$2]) + else + ifelse([$3], , :, [$3]) + fi + AC_MSG_RESULT([$spice_cc_flag]) +]) + + +dnl Use lots of warning flags with with gcc and compatible compilers + +dnl Note: if you change the following variable, the cache is automatically +dnl skipped and all flags rechecked. So there's no need to do anything +dnl else. If for any reason you need to force a recheck, just change +dnl MAYBE_WARN in an ignorable way (like adding whitespace) + +dnl MAYBE_WARN="-Wall -Wno-sign-compare -Werror -Wno-deprecated-declarations" + +MAYBE_WARN="-Wall -Wno-sign-compare -Werror -Wno-deprecated-declarations" + + +# invalidate cached value if MAYBE_WARN has changed +if test "x$spice_cv_warn_maybe" != "x$MAYBE_WARN"; then + unset spice_cv_warn_cflags +fi +AC_CACHE_CHECK([for supported warning flags], spice_cv_warn_cflags, [ + echo + WARN_CFLAGS="" + + # Some warning options are not supported by all versions of + # gcc, so test all desired options against the current + # compiler. + # + # Note that there are some order dependencies + # here. Specifically, an option that disables a warning will + # have no net effect if a later option then enables that + # warnings, (perhaps implicitly). So we put some grouped + # options (-Wall and -Wextra) up front and the -Wno options + # last. + + for W in $MAYBE_WARN; do + SPICE_CC_TRY_FLAG([$W], [WARN_CFLAGS="$WARN_CFLAGS $W"]) + done + + spice_cv_warn_cflags=$WARN_CFLAGS + spice_cv_warn_maybe=$MAYBE_WARN + + AC_MSG_CHECKING([which warning flags were supported])]) +WARN_CFLAGS="$spice_cv_warn_cflags" +SPICE_CFLAGS="$SPICE_CFLAGS $WARN_CFLAGS" + +# We only wish to enable attribute(warn_unused_result) if we can prevent +# gcc from generating thousands of warnings about the misapplication of the +# attribute to void functions and variables. +AC_MSG_CHECKING([how to enable unused result warnings]) +warn_unused_result="" +if echo $WARN_CFLAGS | grep -e '-Wno-attributes' >/dev/null; then + AC_TRY_COMPILE([__attribute__((__warn_unused_result__)) + int f (int i) { return i; }], [], + [warn_unused_result="__attribute__((__warn_unused_result__))"]) +fi +AC_DEFINE_UNQUOTED([WARN_UNUSED_RESULT], [$warn_unused_result], + [Define to the value your compiler uses to support the warn-unused-result attribute]) +AC_MSG_RESULT([$warn_unused_result]) + +AC_SUBST(WARN_CFLAGS) +AC_SUBST(CFLAGS_CFLAGS) + +dnl ========================================================================= +dnl -fvisibility stuff + +have_gcc4=no +AC_MSG_CHECKING(for -fvisibility) +AC_COMPILE_IFELSE([ +#if defined(__GNUC__) && (__GNUC__ >= 4) +#else +error Need GCC 4.0 for visibility +#endif +int main () { return 0; } +], have_gcc4=yes) + +if test "x$have_gcc4" = "xyes"; then + VISIBILITY_HIDDEN_CFLAGS="-fvisibility=hidden" +fi +AC_MSG_RESULT($have_gcc4) +AC_SUBST(VISIBILITY_HIDDEN_CFLAGS) + + +AC_SUBST(SPICE_REQUIRES) +AC_SUBST(SPICE_NONPKGCONFIG_CFLAGS) +AC_SUBST(SPICE_NONPKGCONFIG_LIBS) + +AC_SUBST([SPICEC_STATIC_LINKAGE_BSTATIC]) +AC_SUBST([SPICEC_STATIC_LINKAGE_BDYNAMIC]) + +AC_OUTPUT([ +Makefile +spice.pc +common/Makefile +server/Makefile +client/Makefile +client/x11/Makefile +client/x11/images/Makefile +]) + +dnl ========================================================================== +echo " + + Spice $VERSION + ============== + + prefix: ${prefix} + c compiler: ${CC} + c++ compiler: ${CXX} + + Have XRANDR 1.2: ${have_xrandr12} + + Red target: ${red_target} + + Now type 'make' to build $PACKAGE +" |