configure.ac 14.1 KB
Newer Older
1
AC_PREREQ(2.50)
2
AC_CONFIG_MACRO_DIR([m4])
3

Owen W. Taylor's avatar
Owen W. Taylor committed
4
m4_define([mutter_major_version], [3])
5 6
m4_define([mutter_minor_version], [12])
m4_define([mutter_micro_version], [0])
7

8 9
m4_define([mutter_version],
          [mutter_major_version.mutter_minor_version.mutter_micro_version])
10

11
m4_define([mutter_plugin_api_version], [3])
12

13 14
AC_INIT([mutter], [mutter_version],
        [http://bugzilla.gnome.org/enter_bug.cgi?product=mutter])
rhp's avatar
rhp committed
15

16
AC_CONFIG_SRCDIR(src/core/display.c)
17
AC_CONFIG_HEADERS(config.h)
rhp's avatar
rhp committed
18

19
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz tar-ustar])
Owen W. Taylor's avatar
Owen W. Taylor committed
20
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
21
AM_MAINTAINER_MODE([enable])
rhp's avatar
rhp committed
22

23 24 25 26
# Change pkglibdir and pkgdatadir to mutter-wayland instead of mutter
PACKAGE="mutter-wayland"
AC_SUBST([PACKAGE], [$PACKAGE])

27 28 29 30 31 32 33 34
MUTTER_MAJOR_VERSION=mutter_major_version
MUTTER_MINOR_VERSION=mutter_minor_version
MUTTER_MICRO_VERSION=mutter_micro_version
MUTTER_PLUGIN_API_VERSION=mutter_plugin_api_version
AC_SUBST(MUTTER_MAJOR_VERSION)
AC_SUBST(MUTTER_MINOR_VERSION)
AC_SUBST(MUTTER_MICRO_VERSION)
AC_SUBST(MUTTER_PLUGIN_API_VERSION)
35

36
MUTTER_PLUGIN_DIR="$libdir/$PACKAGE/plugins"
37 38
AC_SUBST(MUTTER_PLUGIN_DIR)

39
# Honor aclocal flags
40
AC_SUBST(ACLOCAL_AMFLAGS, "\${ACLOCAL_FLAGS}")
41

42
GETTEXT_PACKAGE=mutter-wayland
rhp's avatar
rhp committed
43
AC_SUBST(GETTEXT_PACKAGE)
44
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Name of default gettext domain])
rhp's avatar
rhp committed
45

46
IT_PROG_INTLTOOL([0.34.90])
rhp's avatar
rhp committed
47 48 49
AC_PROG_CC
AC_ISC_POSIX
AC_HEADER_STDC
50
AC_LIBTOOL_WIN32_DLL
rhp's avatar
rhp committed
51 52
AM_PROG_LIBTOOL

53 54 55
# Sets GLIB_GENMARSHAL and GLIB_MKENUMS
AM_PATH_GLIB_2_0()

Tomas Frydrych's avatar
Tomas Frydrych committed
56
#### Integer sizes
57 58 59 60 61 62 63 64 65

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)

66 67 68
## byte order
AC_C_BIGENDIAN

69 70
CANBERRA_GTK=libcanberra-gtk3
CANBERRA_GTK_VERSION=0.26
71

72 73 74 75
CLUTTER_PACKAGE=clutter-1.0

MUTTER_PC_MODULES="
   gtk+-3.0 >= 3.3.7
76
   gio-2.0 >= 2.25.10
77 78
   pango >= 1.2.0
   cairo >= 1.10.0
79
   gsettings-desktop-schemas >= 3.7.3
Jasper St. Pierre's avatar
Jasper St. Pierre committed
80
   xcomposite >= 0.2 xfixes xrender xdamage xi >= 1.6.0
81
   $CLUTTER_PACKAGE >= 1.17.5
82
   cogl-1.0 >= 1.17.1
83
   upower-glib >= 0.99.0
84
   gnome-desktop-3.0
85
"
86

87
GLIB_GSETTINGS
88

89
AC_ARG_ENABLE(verbose-mode,
90
  AC_HELP_STRING([--disable-verbose-mode],
91
                 [disable mutter's ability to do verbose logging, for embedded/size-sensitive custom builds]),,
92
  enable_verbose_mode=yes)
93 94 95 96 97

if test x$enable_verbose_mode = xyes; then
    AC_DEFINE(WITH_VERBOSE_MODE,1,[Build with verbose mode support])
fi

98 99
AC_ARG_ENABLE(sm,
  AC_HELP_STRING([--disable-sm],
100
                 [disable mutter's session management support, for embedded/size-sensitive custom non-GNOME builds]),,
101
  enable_sm=auto)
102

103 104
AC_ARG_ENABLE(startup-notification,
  AC_HELP_STRING([--disable-startup-notification],
105
                 [disable mutter's startup notification support, for embedded/size-sensitive custom non-GNOME builds]),,
106
  enable_startup_notification=auto)
107

108 109 110 111 112
AC_ARG_WITH(libcanberra,
  AC_HELP_STRING([--without-libcanberra],
                 [disable the use of libcanberra for playing sounds]),,
  with_libcanberra=auto)

113 114
AC_ARG_ENABLE(xsync,
  AC_HELP_STRING([--disable-xsync],
115
                 [disable mutter's use of the XSync extension]),,
116
  enable_xsync=auto)
117

118 119
AC_ARG_ENABLE(shape,
  AC_HELP_STRING([--disable-shape],
120
                 [disable mutter's use of the shaped window extension]),,
121
  enable_shape=auto)
122

123 124 125 126 127 128 129 130 131 132
## Wayland support requires the xserver.xml protocol extension found in the weston
## repository but since there aren't currently established conventions for
## installing and discovering these we simply require a location to be given
## explicitly...
AC_ARG_WITH([wayland-protocols],
            [AS_HELP_STRING([--with-wayland-protocols], [Location for wayland extension protocol specs])],
            [
            ],
            [])

133 134 135 136 137
AC_ARG_WITH([xwayland-path],
            [AS_HELP_STRING([--with-xwayland-path], [Absolute path for an X Wayland server])],
            [XWAYLAND_PATH="$withval"],
            [XWAYLAND_PATH="$bindir/Xorg"])

138
AM_GLIB_GNU_GETTEXT
rhp's avatar
rhp committed
139 140

## here we get the flags we'll actually use
141 142
# GRegex requires Glib-2.14.0
PKG_CHECK_MODULES(ALL, glib-2.0 >= 2.14.0)
143
PKG_CHECK_MODULES(MUTTER_LAUNCH, libdrm libsystemd-login)
144

145 146
# Unconditionally use this dir to avoid a circular dep with gnomecc
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
147 148
AC_SUBST(GNOME_KEYBINDINGS_KEYSDIR)

149
STARTUP_NOTIFICATION_VERSION=0.7
150
AC_MSG_CHECKING([Startup notification library >= $STARTUP_NOTIFICATION_VERSION])
151
if $PKG_CONFIG --atleast-version $STARTUP_NOTIFICATION_VERSION libstartup-notification-1.0; then
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
   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
168
  echo "Building with libstartup-notification"
169
  MUTTER_PC_MODULES="$MUTTER_PC_MODULES libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_VERSION"
170
  AC_DEFINE(HAVE_STARTUP_NOTIFICATION, , [Building with startup notification support])
171 172 173 174
else
  echo "Building without libstartup-notification"
fi

175 176 177 178 179
have_libcanberra=no
AC_MSG_CHECKING([libcanberra-gtk])
if test x$with_libcanberra = xno ; then
  AC_MSG_RESULT([disabled])
else
180
  if $PKG_CONFIG --exists $CANBERRA_GTK '>=' $CANBERRA_GTK_VERSION; then
181 182
    have_libcanberra=yes
    AC_MSG_RESULT(yes)
183
    MUTTER_PC_MODULES="$MUTTER_PC_MODULES $CANBERRA_GTK"
184 185 186 187 188 189 190 191 192
    AC_DEFINE([HAVE_LIBCANBERRA], 1, [Building with libcanberra for playing sounds])
  else
    AC_MSG_RESULT(no)
    if test x$with_libcanberra = xyes ; then
      AC_MSG_ERROR([libcanberra forced and libcanberra-gtk was not found])
    fi
  fi
fi

193 194 195 196 197 198
INTROSPECTION_VERSION=0.9.5
GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_VERSION])

if test x$found_introspection != xno; then
  AC_DEFINE(HAVE_INTROSPECTION, 1, [Define if GObject introspection is available])
  MUTTER_PC_MODULES="$MUTTER_PC_MODULES gobject-introspection-1.0"
199 200 201 202 203 204
  # Since we don't make any guarantees about stability and we don't support
  # parallel install, there's no real reason to change directories, filenames,
  # etc. as we change the Mutter tarball version. Note that this must match
  # api_version in src/Makefile.am
  META_GIR=Meta_3_0_gir
  # META_GIR=[Meta_]mutter_major_version[_]mutter_minor_version[_gir]
205
  AC_SUBST(META_GIR)
206 207
fi

208
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
209

210 211 212 213 214
AC_PATH_PROG([WAYLAND_SCANNER],[wayland-scanner],[no])
AS_IF([test "x$WAYLAND_SCANNER" = "xno"],
  AC_MSG_ERROR([Could not find wayland-scanner in your PATH, required for parsing wayland extension protocols]))
AC_SUBST([WAYLAND_SCANNER])
AC_SUBST(XWAYLAND_PATH)
215

216
MUTTER_PC_MODULES="$MUTTER_PC_MODULES clutter-wayland-1.0 clutter-wayland-compositor-1.0 clutter-egl-1.0 wayland-server libdrm"
217
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
218

219 220 221
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
                 AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))

222 223 224 225
# This is used for plugins
AC_SUBST(CLUTTER_PACKAGE)
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)

226 227
AC_PATH_XTRA

228 229
ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"

230 231 232
# Check for Xinerama extension - we only support the "XFree86" style,
# and not the older Solaris-only version; recent Solaris supports the
# XFree86 style.
233
mutter_save_cppflags="$CPPFLAGS"
234
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
235

236 237 238 239 240 241 242 243 244 245 246 247
have_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],
		     have_xinerama=no,
		     [#include <X11/Xlib.h>])],
    have_xinerama=no, -lXext $ALL_X_LIBS)
AC_MSG_CHECKING(for Xinerama support)
AC_MSG_RESULT($have_xinerama)
248

249
CPPFLAGS="$mutter_save_cppflags"
250

251 252 253 254
if test x$have_xinerama = xno; then
   AC_MSG_ERROR([Xinerama extension was not found])
fi

255
SHAPE_LIBS=
256
found_shape=no
257
AC_CHECK_LIB(Xext, XShapeQueryExtension,
258 259
               [AC_CHECK_HEADER(X11/extensions/shape.h,
                                SHAPE_LIBS=-lXext found_shape=yes)],
260
               , $ALL_X_LIBS)
261

262 263 264 265 266 267 268 269 270 271 272
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

273
if test "x$found_shape" = "xyes"; then
274
   AC_DEFINE(HAVE_SHAPE, , [Have the shape extension library])
275 276
fi

277 278 279 280 281 282 283 284 285 286 287
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


288
RANDR_LIBS=
289
found_randr=no
290
AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
291 292 293
               [AC_CHECK_HEADER(X11/extensions/Xrandr.h,
                                RANDR_LIBS=-lXrandr found_randr=yes,,
				[#include <X11/Xlib.h>])],
294
               , -lXrender -lXext $ALL_X_LIBS)
295

296
if test "x$found_randr" = "xyes"; then
297
   AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library])
298
fi
299

300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323
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

324
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
325

326
found_sm=no
327
case "$MUTTER_LIBS" in
rhp's avatar
rhp committed
328
 *-lSM*)
329
    found_sm=yes
rhp's avatar
rhp committed
330 331
    ;;
 *)
Tomas Frydrych's avatar
Tomas Frydrych committed
332
  AC_CHECK_LIB(SM, SmcSaveYourselfDone,
333
               [AC_CHECK_HEADERS(X11/SM/SMlib.h,
334 335
                                MUTTER_LIBS="-lSM -lICE $MUTTER_LIBS" found_sm=yes)],
               , $MUTTER_LIBS)
rhp's avatar
rhp committed
336 337 338
    ;;
esac

339 340 341 342 343 344 345 346 347 348 349
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

350
if test "$found_sm" = "yes"; then
351
   AC_DEFINE(HAVE_SM, , [Building with SM support])
rhp's avatar
rhp committed
352 353
fi

Tomas Frydrych's avatar
Tomas Frydrych committed
354
AM_CONDITIONAL(HAVE_SM, test "$found_sm" = "yes")
355

rhp's avatar
rhp committed
356 357 358
HOST_ALIAS=$host_alias
AC_SUBST(HOST_ALIAS)

359 360 361 362 363 364 365 366
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)

367 368 369 370
AC_PATH_PROG(ZENITY, zenity, no)
if test x"$ZENITY" = xno; then
  AC_MSG_ERROR([zenity not found in your path - needed for dialogs])
fi
371

Iain Holmes's avatar
Iain Holmes committed
372 373 374 375
AC_ARG_ENABLE(debug,
	[  --enable-debug		enable debugging],,
	enable_debug=no)
if test "x$enable_debug" = "xyes"; then
376
	CFLAGS="$CFLAGS -g -O"
Iain Holmes's avatar
Iain Holmes committed
377
fi
378

Jasper St. Pierre's avatar
Jasper St. Pierre committed
379 380
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])

381 382 383 384 385 386
#### Warnings (last since -Werror can disturb other tests)

# Stay command-line compatible with the gnome-common configure option. Here
# minimum/yes/maximum are the same, however.
AC_ARG_ENABLE(compile_warnings,
  AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
387
  enable_compile_warnings=error)
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439

changequote(,)dnl
if test "$enable_compile_warnings" != no ; then
  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 "$enable_compile_warnings" = error; then
      case " $CFLAGS " in
      *[\ \	]-Werror[\ \	]*) ;;
440
      *) CFLAGS="$CFLAGS -Werror -Wno-error=deprecated-declarations" ;;
441 442 443 444 445 446
      esac
    fi
  fi
fi
changequote([,])dnl

447
AC_CONFIG_FILES([
rhp's avatar
rhp committed
448
Makefile
449
doc/Makefile
450
doc/man/Makefile
Jasper St. Pierre's avatar
Jasper St. Pierre committed
451
doc/reference/Makefile
452
doc/reference/meta-docs.sgml
rhp's avatar
rhp committed
453
src/Makefile
454
src/libmutter-wayland.pc
455
src/compositor/plugins/Makefile
456
po/Makefile.in
rhp's avatar
rhp committed
457
])
458

459 460
AC_OUTPUT

461 462 463
if test x$enable_verbose_mode = xno; then
        echo "*** WARNING WARNING WARNING WARNING WARNING"
        echo "*** Building without verbose mode"
464 465
        echo "*** This means there's no way to debug mutter problems."
        echo "*** Please build normal desktop versions of mutter"
466 467 468
        echo "*** with verbose mode enabled so users can use it when they report bugs."
fi

469 470
dnl ==========================================================================
echo "
471
mutter-wayland-$VERSION
472

473 474 475 476
	prefix:                   ${prefix}
	source code location:	  ${srcdir}
	compiler:		  ${CC}

477
	Startup notification:     ${have_startup_notification}
478
	libcanberra:              ${have_libcanberra}
479
	Introspection:            ${found_introspection}
480 481
	Session management:       ${found_sm}
	Shape extension:          ${found_shape}
482
	Xsync:                    ${found_xsync}
483
	Xcursor:                  ${have_xcursor}
484
"
485

486

487
MUTTER_MINOR_VERSION=mutter_minor_version
488 489
if expr $MUTTER_MINOR_VERSION % 2 > /dev/null ; then
   stable_version=`expr $MUTTER_MINOR_VERSION - 1`
490
   echo "This is the UNSTABLE branch of mutter"
491 492
   echo -n "Use 3.$stable_version.x for stable "
   echo    "(gnome-3-$stable_version branch in git)"
493
else
494
   echo "This is the stable branch of mutter"
495
fi