summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac555
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}
+"