diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 555 |
1 files changed, 555 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..afdc17e4 --- /dev/null +++ b/configure.ac @@ -0,0 +1,555 @@ +AC_PREREQ(2.50) + +m4_define([marco_major_version], [1]) +m4_define([marco_minor_version], [5]) +# Fibonacci sequence for micro version numbering: +# 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987 +m4_define([marco_micro_version], [3]) + +m4_define([marco_version], + [marco_major_version.marco_minor_version.marco_micro_version]) +AC_INIT([marco], [marco_version], [https://github.com/mate-desktop/mate-desktop-environment]) + +AC_CONFIG_SRCDIR(src/core/display.c) +AC_CONFIG_HEADERS(config.h) + +AM_INIT_AUTOMAKE +AM_MAINTAINER_MODE + +# Honor aclocal flags +AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}") + +GETTEXT_PACKAGE=marco +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain]) + +IT_PROG_INTLTOOL([0.34.90]) +AC_PROG_CC +AC_ISC_POSIX +AC_HEADER_STDC +AC_LIBTOOL_WIN32_DLL +AM_PROG_LIBTOOL + +#### Integer sizes + +AC_CHECK_SIZEOF(char) +AC_CHECK_SIZEOF(short) +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(int) +AC_CHECK_SIZEOF(void *) +AC_CHECK_SIZEOF(long long) +AC_CHECK_SIZEOF(__int64) + +## byte order +AC_C_BIGENDIAN + +#### Warnings + +changequote(,)dnl +if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wall" ;; + esac + +# case " $CFLAGS " in +# *[\ \ ]-Wshadow[\ \ ]*) ;; +# *) CFLAGS="$CFLAGS -Wshadow" ;; +# esac + + case " $CFLAGS " in + *[\ \ ]-Wchar-subscripts[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wchar-subscripts" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wmissing-declarations[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wmissing-declarations" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wmissing-prototypes[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wmissing-prototypes" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wnested-externs[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wnested-externs" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wpointer-arith[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wpointer-arith" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wcast-align[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wcast-align" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-Wsign-compare[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -Wsign-compare" ;; + esac + + if test "x$enable_ansi" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -ansi" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) CFLAGS="$CFLAGS -pedantic" ;; + esac + fi +fi +changequote([,])dnl + +AC_MSG_CHECKING([which gtk+ version to compile against]) +AC_ARG_WITH([gtk], + AC_HELP_STRING([--with-gtk=2.0|3.0], + [which gtk+ version to compile against (default: 2.0)]), + [case "$with_gtk" in + 2.0|3.0) ;; + *) AC_MSG_ERROR([invalid gtk+ version specified]);; + esac], + [with_gtk=2.0]) +AC_MSG_RESULT([$with_gtk]) + +case "$with_gtk" in + 2.0) GTK_API_VERSION=2.0 + GTK_MIN_VERSION=2.20.0 + CANBERRA_GTK=libcanberra-gtk + ;; + 3.0) GTK_API_VERSION=3.0 + GTK_MIN_VERSION=2.90.0 + CANBERRA_GTK=libcanberra-gtk3 + ;; +esac +GIO_MIN_VERSION=2.25.10 + +MARCO_PC_MODULES="gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION gio-2.0 >= $GIO_MIN_VERSION pango >= 1.2.0 $CANBERRA_GTK" +AC_SUBST(GTK_API_VERSION) + +GLIB_GSETTINGS + +AC_ARG_ENABLE(verbose-mode, + AC_HELP_STRING([--disable-verbose-mode], + [disable marco's ability to do verbose logging, for embedded/size-sensitive custom builds]),, + enable_verbose_mode=yes) + +if test x$enable_verbose_mode = xyes; then + AC_DEFINE(WITH_VERBOSE_MODE,1,[Build with verbose mode support]) +fi + +AC_ARG_ENABLE(sm, + AC_HELP_STRING([--disable-sm], + [disable marco's session management support, for embedded/size-sensitive custom non-MATE builds]),, + enable_sm=auto) + +AC_ARG_ENABLE(startup-notification, + AC_HELP_STRING([--disable-startup-notification], + [disable marco's startup notification support, for embedded/size-sensitive custom non-MATE builds]),, + enable_startup_notification=auto) + +AC_ARG_ENABLE(compositor, + AC_HELP_STRING([--disable-compositor], + [disable marco's compositing manager]),, + enable_compositor=auto) + +AC_ARG_ENABLE(xsync, + AC_HELP_STRING([--disable-xsync], + [disable marco's use of the XSync extension]),, + enable_xsync=auto) + +AC_ARG_ENABLE(render, + AC_HELP_STRING([--disable-render], + [disable marco's use of the RENDER extension]),, + enable_render=auto) + +AC_ARG_ENABLE(shape, + AC_HELP_STRING([--disable-shape], + [disable marco's use of the shaped window extension]),, + enable_shape=auto) + +## try definining HAVE_BACKTRACE +AC_CHECK_HEADERS(execinfo.h, [AC_CHECK_FUNCS(backtrace)]) + +AM_GLIB_GNU_GETTEXT + +## here we get the flags we'll actually use +# GOptionEntry requires glib-2.6.0 +PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.6.0) +# gtk_window_set_icon_name requires gtk2+-2.60 +PKG_CHECK_MODULES(MARCO_MESSAGE, gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION) +PKG_CHECK_MODULES(MARCO_WINDOW_DEMO, gtk+-$GTK_API_VERSION >= $GTK_MIN_VERSION) + +if $PKG_CONFIG --atleast-version 1.2.0 pangoxft; then + echo "pangoxft found" +else + AC_MSG_ERROR("Pango 1.2.0 or greater based on Xft2 is required") +fi + +# Unconditionally use this dir to avoid a circular dep with matecc +MATE_KEYBINDINGS_KEYSDIR="${datadir}/mate-control-center/keybindings" +AC_SUBST(MATE_KEYBINDINGS_KEYSDIR) + +STARTUP_NOTIFICATION_VERSION=0.7 +AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION]) +if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then + have_startup_notification=yes +else + have_startup_notification=no +fi +AC_MSG_RESULT($have_startup_notification) + +if test x$enable_startup_notification = xyes; then + have_startup_notification=yes + echo "startup-notification support forced on" +elif test x$enable_startup_notification = xauto; then + true +else + have_startup_notification=no +fi + +if test x$have_startup_notification = xyes; then + echo "Building with libstartup-notification" + MARCO_PC_MODULES="$MARCO_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION" + AC_DEFINE(HAVE_STARTUP_NOTIFICATION, , [Building with startup notification support]) +else + echo "Building without libstartup-notification" +fi + +## init this, it gets set either in the compositor check below +## or the render-specific check later +have_xrender=no + +XCOMPOSITE_VERSION=0.2 +if test x$enable_compositor = xyes; then + have_xcomposite=yes +elif test x$enable_compositor = xauto; then + echo "Building compositing manager by default now." + have_xcomposite=yes +else + have_xcomposite=no +fi + +if test x$have_xcomposite = xyes; then + AC_MSG_CHECKING([Xcomposite >= $XCOMPOSITE_VERSION]) + if $PKG_CONFIG --atleast-version $XCOMPOSITE_VERSION xcomposite; then + AC_MSG_RESULT([yes]) + else + AC_MSG_ERROR([no. Use --disable-compositor to disable.]) + fi +fi + +if test x$have_xcomposite = xyes; then + MARCO_PC_MODULES="$MARCO_PC_MODULES xcomposite >= $XCOMPOSITE_VERSION xfixes xrender xdamage" + AC_DEFINE(HAVE_COMPOSITE_EXTENSIONS, 1, [Building with compositing manager support]) + echo "Building with compositing manager" + + ## force on render also + have_xrender=yes +else + echo "Building without compositing manager" +fi + +## if no compositor, still possibly enable render +if test x$have_xcomposite = xno; then + XRENDER_VERSION=0.0 + AC_MSG_CHECKING([xrender >= $XRENDER_VERSION]) + if $PKG_CONFIG --atleast-version $XRENDER_VERSION xrender; then + have_xrender=yes + else + have_xrender=no + fi + AC_MSG_RESULT($have_xrender) + + if test x$enable_render = xyes; then + have_xrender=yes + echo "Render support forced on" + elif test x$enable_render = xauto; then + true + else + have_xrender=no + fi + + if test x$have_xrender = xyes; then + echo "Building with Render" + MARCO_PC_MODULES="$MARCO_PC_MODULES xrender >= $XRENDER_VERSION" + fi +fi ## have_composite + +if test x$have_xrender = xyes; then + AC_DEFINE(HAVE_RENDER, , [Building with Render extension support]) +fi + +AC_MSG_CHECKING([Xcursor]) +if $PKG_CONFIG xcursor; then + have_xcursor=yes + else + have_xcursor=no + fi + AC_MSG_RESULT($have_xcursor) + +if test x$have_xcursor = xyes; then + echo "Building with Xcursor" + MARCO_PC_MODULES="$MARCO_PC_MODULES xcursor" + AC_DEFINE(HAVE_XCURSOR, , [Building with Xcursor support]) +fi + +AC_MSG_CHECKING([libgtop]) +if $PKG_CONFIG libgtop-2.0; then + have_gtop=yes + else + have_gtop=no + fi + AC_MSG_RESULT($have_gtop) + +if test x$have_gtop = xyes; then + echo "Building with libgtop" + MARCO_PC_MODULES="$MARCO_PC_MODULES libgtop-2.0" + AC_DEFINE(HAVE_GTOP, , [Building with libgtop]) +fi + +PKG_CHECK_MODULES(MARCO, $MARCO_PC_MODULES) + +AC_PATH_XTRA + +ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + +# Check for Xinerama extension (Solaris impl or Xfree impl) +marco_save_cppflags="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $X_CFLAGS" + +AC_ARG_ENABLE(xinerama, + AC_HELP_STRING([--disable-xinerama], + [disable marco's use of the Xinerama extension]), + try_xinerama=$enable_xinerama,try_xinerama=yes) + +use_solaris_xinerama=no +use_xfree_xinerama=no +if test "${try_xinerama}" != no; then + case "$host" in + *-*-solaris*) + # Check for solaris + use_solaris_xinerama=yes + AC_CHECK_LIB(Xext, XineramaGetInfo, + use_solaris_xinerama=yes, use_solaris_xinerama=no, + $ALL_X_LIBS) + if test "x$use_solaris_xinerama" = "xyes"; then + AC_CHECK_HEADER(X11/extensions/xinerama.h, + if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then + X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS" + fi + AC_DEFINE(HAVE_SOLARIS_XINERAMA, , [Have Solaris-style Xinerama]) + AC_DEFINE(HAVE_XINERAMA, , [Have some version of Xinerama]), + use_solaris_xinerama=no, + [#include <X11/Xlib.h>]) + fi + AC_MSG_CHECKING(for Xinerama support on Solaris) + AC_MSG_RESULT($use_solaris_xinerama); + ;; + *) + # Check for XFree + use_xfree_xinerama=yes + AC_CHECK_LIB(Xinerama, XineramaQueryExtension, + [AC_CHECK_HEADER(X11/extensions/Xinerama.h, + X_EXTRA_LIBS="-lXinerama $X_EXTRA_LIBS" + if test -z "`echo $ALL_X_LIBS | grep "\-lXext" 2> /dev/null`"; then + X_EXTRA_LIBS="-lXext $X_EXTRA_LIBS" + fi + AC_DEFINE(HAVE_XFREE_XINERAMA, , [Have XFree86-style Xinerama]) + AC_DEFINE(HAVE_XINERAMA,, [Have some version of Xinerama]), + use_xfree_xinerama=no, + [#include <X11/Xlib.h>])], + use_xfree_xinerama=no, -lXext $ALL_X_LIBS) + AC_MSG_CHECKING(for Xinerama support on XFree86) + AC_MSG_RESULT($use_xfree_xinerama); + ;; + esac +fi + +CPPFLAGS="$marco_save_cppflags" + +SHAPE_LIBS= +found_shape=no +AC_CHECK_LIB(Xext, XShapeQueryExtension, + [AC_CHECK_HEADER(X11/extensions/shape.h, + SHAPE_LIBS=-lXext found_shape=yes)], + , $ALL_X_LIBS) + +if test x$enable_shape = xno; then + found_shape=no +fi + +if test x$enable_shape = xyes; then + if test "$found_shape" = "no"; then + AC_MSG_ERROR([--enable-shape forced and Shape not found]) + exit 1 + fi +fi + +if test "x$found_shape" = "xyes"; then + AC_DEFINE(HAVE_SHAPE, , [Have the shape extension library]) +fi + +found_xkb=no +AC_CHECK_LIB(X11, XkbQueryExtension, + [AC_CHECK_HEADER(X11/XKBlib.h, + found_xkb=yes)], + , $ALL_X_LIBS) + +if test "x$found_xkb" = "xyes"; then + AC_DEFINE(HAVE_XKB, , [Have keyboard extension library]) +fi + + +RANDR_LIBS= +found_randr=no +AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration, + [AC_CHECK_HEADER(X11/extensions/Xrandr.h, + RANDR_LIBS=-lXrandr found_randr=yes,, + [#include <X11/Xlib.h>])], + , -lXrender -lXext $ALL_X_LIBS) + +if test "x$found_randr" = "xyes"; then + AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library]) +fi + +XSYNC_LIBS= +found_xsync=no +AC_CHECK_LIB(Xext, XSyncQueryExtension, + [AC_CHECK_HEADER(X11/extensions/sync.h, + found_xsync=yes,, + [#include <X11/Xlib.h>])], + , $ALL_X_LIBS) + +if test x$enable_xsync = xno; then + found_xsync=no +fi + +if test x$enable_xsync = xyes; then + if test "$found_xsync" = "no"; then + AC_MSG_ERROR([--enable-xsync forced and XSync not found]) + exit 1 + fi +fi + +if test "x$found_xsync" = "xyes"; then + XSYNC_LIBS=-lXext + AC_DEFINE(HAVE_XSYNC, , [Have the Xsync extension library]) +fi + +MARCO_LIBS="$MARCO_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm" +MARCO_MESSAGE_LIBS="$MARCO_MESSAGE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" +MARCO_WINDOW_DEMO_LIBS="$MARCO_WINDOW_DEMO_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" +MARCO_PROPS_LIBS="$MARCO_PROPS_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS" + +found_sm=no +case "$MARCO_LIBS" in + *-lSM*) + found_sm=yes + ;; + *) + AC_CHECK_LIB(SM, SmcSaveYourselfDone, + [AC_CHECK_HEADERS(X11/SM/SMlib.h, + MARCO_LIBS="-lSM -lICE $MARCO_LIBS" found_sm=yes)], + , $MARCO_LIBS) + ;; +esac + +if test x$enable_sm = xno; then + found_sm=no +fi + +if test x$enable_sm = xyes; then + if test "$found_sm" = "no"; then + AC_MSG_ERROR([--enable-sm forced and -lSM not found]) + exit 1 + fi +fi + +if test "$found_sm" = "yes"; then + AC_DEFINE(HAVE_SM, , [Building with SM support]) +fi + +AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes") + +HOST_ALIAS=$host_alias +AC_SUBST(HOST_ALIAS) + +AC_PATH_PROG(GDK_PIXBUF_CSOURCE, gdk-pixbuf-csource, no) + +if test x"$GDK_PIXBUF_CSOURCE" = xno; then + AC_MSG_ERROR([gdk-pixbuf-csource executable not found in your path - should be installed with GTK]) +fi + +AC_SUBST(GDK_PIXBUF_CSOURCE) + +AC_PATH_PROG(MATEDIALOG, matedialog, no) +if test x"$MATEDIALOG" = xno; then + AC_MSG_ERROR([matedialog not found in your path - needed for dialogs]) +fi + +AC_ARG_ENABLE(debug, + [ --enable-debug enable debugging],, + enable_debug=no) +if test "x$enable_debug" = "xyes"; then + CFLAGS="$CFLAGS -g -O" +fi + +# Warnings are there for a reason +if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -Wall -ansi" + if test "x$enable_maintainer_mode" = "xyes"; then + CFLAGS="$CFLAGS" + fi +fi + +# Use mate-doc-utils: +MATE_DOC_INIT([0.8.0]) + +AC_CONFIG_FILES([ +Makefile +doc/Makefile +doc/creating_themes/Makefile +doc/man/Makefile +src/Makefile +src/wm-tester/Makefile +src/libmarco-private.pc +src/tools/Makefile +src/themes/Makefile +po/Makefile.in +]) + +AC_OUTPUT + +if test x$enable_verbose_mode = xno; then + echo "*** WARNING WARNING WARNING WARNING WARNING" + echo "*** Building without verbose mode" + echo "*** This means there's no way to debug marco problems." + echo "*** Please build normal desktop versions of marco" + echo "*** with verbose mode enabled so users can use it when they report bugs." +fi + +dnl ========================================================================== +echo " +marco-$VERSION (using gtk+-${GTK_API_VERSION}): + + prefix: ${prefix} + source code location: ${srcdir} + compiler: ${CC} + + XFree86 Xinerama: ${use_xfree_xinerama} + Solaris Xinerama: ${use_solaris_xinerama} + Startup notification: ${have_startup_notification} + Compositing manager: ${have_xcomposite} + Session management: ${found_sm} + Shape extension: ${found_shape} + Resize-and-rotate: ${found_randr} + Xsync: ${found_xsync} + Render: ${have_xrender} + Xcursor: ${have_xcursor} +" |