configure.ac 14.3 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
m4_define([mutter_minor_version], [11])
6
m4_define([mutter_micro_version], [2])
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.1
82
   cogl-1.0 >= 1.13.3
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 147 148 149
saved_LIBS="$LIBS"
LIBS="$LIBS $MUTTER_LAUNCH"
AC_CHECK_FUNCS([sd_session_get_vt])
LIBS="$saved_LIBS"

150 151
# Unconditionally use this dir to avoid a circular dep with gnomecc
GNOME_KEYBINDINGS_KEYSDIR="${datadir}/gnome-control-center/keybindings"
152 153
AC_SUBST(GNOME_KEYBINDINGS_KEYSDIR)

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

180 181 182 183 184
have_libcanberra=no
AC_MSG_CHECKING([libcanberra-gtk])
if test x$with_libcanberra = xno ; then
  AC_MSG_RESULT([disabled])
else
185
  if $PKG_CONFIG --exists $CANBERRA_GTK '>=' $CANBERRA_GTK_VERSION; then
186 187
    have_libcanberra=yes
    AC_MSG_RESULT(yes)
188
    MUTTER_PC_MODULES="$MUTTER_PC_MODULES $CANBERRA_GTK"
189 190 191 192 193 194 195 196 197
    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

198 199 200 201 202 203
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"
204 205 206 207 208 209
  # 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]
210
  AC_SUBST(META_GIR)
211 212
fi

213
MUTTER_PC_MODULES="$MUTTER_PC_MODULES xcursor"
214

215 216
# We always build with wayland enabled
AC_DEFINE(HAVE_WAYLAND, , [Building with Wayland support])
217

218 219 220 221 222
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)
223

224
MUTTER_PC_MODULES="$MUTTER_PC_MODULES clutter-wayland-1.0 clutter-wayland-compositor-1.0 clutter-egl-1.0 wayland-server libdrm"
225
PKG_CHECK_MODULES(MUTTER, $MUTTER_PC_MODULES)
226

227 228 229
PKG_CHECK_EXISTS([xi >= 1.6.99.1],
                 AC_DEFINE([HAVE_XI23],[1],[Define if you have support for XInput 2.3 or greater]))

230 231 232 233
# This is used for plugins
AC_SUBST(CLUTTER_PACKAGE)
PKG_CHECK_MODULES(CLUTTER, $CLUTTER_PACKAGE)

234 235
AC_PATH_XTRA

236 237
ALL_X_LIBS="$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS"

238 239 240
# Check for Xinerama extension - we only support the "XFree86" style,
# and not the older Solaris-only version; recent Solaris supports the
# XFree86 style.
241
mutter_save_cppflags="$CPPFLAGS"
242
CPPFLAGS="$CPPFLAGS $X_CFLAGS"
243

244 245 246 247 248 249 250 251 252 253 254 255
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)
256

257
CPPFLAGS="$mutter_save_cppflags"
258

259 260 261 262
if test x$have_xinerama = xno; then
   AC_MSG_ERROR([Xinerama extension was not found])
fi

263
SHAPE_LIBS=
264
found_shape=no
265
AC_CHECK_LIB(Xext, XShapeQueryExtension,
266 267
               [AC_CHECK_HEADER(X11/extensions/shape.h,
                                SHAPE_LIBS=-lXext found_shape=yes)],
268
               , $ALL_X_LIBS)
269

270 271 272 273 274 275 276 277 278 279 280
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

281
if test "x$found_shape" = "xyes"; then
282
   AC_DEFINE(HAVE_SHAPE, , [Have the shape extension library])
283 284
fi

285 286 287 288 289 290 291 292 293 294 295
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


296
RANDR_LIBS=
297
found_randr=no
298
AC_CHECK_LIB(Xrandr, XRRUpdateConfiguration,
299 300 301
               [AC_CHECK_HEADER(X11/extensions/Xrandr.h,
                                RANDR_LIBS=-lXrandr found_randr=yes,,
				[#include <X11/Xlib.h>])],
302
               , -lXrender -lXext $ALL_X_LIBS)
303

304
if test "x$found_randr" = "xyes"; then
305
   AC_DEFINE(HAVE_RANDR, , [Have the Xrandr extension library])
306
fi
307

308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331
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

332
MUTTER_LIBS="$MUTTER_LIBS $XSYNC_LIBS $RANDR_LIBS $SHAPE_LIBS $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lm"
333

334
found_sm=no
335
case "$MUTTER_LIBS" in
rhp's avatar
rhp committed
336
 *-lSM*)
337
    found_sm=yes
rhp's avatar
rhp committed
338 339
    ;;
 *)
Tomas Frydrych's avatar
Tomas Frydrych committed
340
  AC_CHECK_LIB(SM, SmcSaveYourselfDone,
341
               [AC_CHECK_HEADERS(X11/SM/SMlib.h,
342 343
                                MUTTER_LIBS="-lSM -lICE $MUTTER_LIBS" found_sm=yes)],
               , $MUTTER_LIBS)
rhp's avatar
rhp committed
344 345 346
    ;;
esac

347 348 349 350 351 352 353 354 355 356 357
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

358
if test "$found_sm" = "yes"; then
359
   AC_DEFINE(HAVE_SM, , [Building with SM support])
rhp's avatar
rhp committed
360 361
fi

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

rhp's avatar
rhp committed
364 365 366
HOST_ALIAS=$host_alias
AC_SUBST(HOST_ALIAS)

367 368 369 370 371 372 373 374
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)

375 376 377 378
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
379

Iain Holmes's avatar
Iain Holmes committed
380 381 382 383
AC_ARG_ENABLE(debug,
	[  --enable-debug		enable debugging],,
	enable_debug=no)
if test "x$enable_debug" = "xyes"; then
384
	CFLAGS="$CFLAGS -g -O"
Iain Holmes's avatar
Iain Holmes committed
385
fi
386

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

389 390 391 392 393 394
#### 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]),,
395
  enable_compile_warnings=error)
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 440 441 442 443 444 445 446 447

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[\ \	]*) ;;
448
      *) CFLAGS="$CFLAGS -Werror -Wno-error=deprecated-declarations" ;;
449 450 451 452 453 454
      esac
    fi
  fi
fi
changequote([,])dnl

455
AC_CONFIG_FILES([
rhp's avatar
rhp committed
456
Makefile
457
doc/Makefile
458
doc/man/Makefile
Jasper St. Pierre's avatar
Jasper St. Pierre committed
459
doc/reference/Makefile
460
doc/reference/meta-docs.sgml
rhp's avatar
rhp committed
461
src/Makefile
462
src/libmutter-wayland.pc
463
src/compositor/plugins/Makefile
464
protocol/Makefile
465
po/Makefile.in
rhp's avatar
rhp committed
466
])
467

468 469
AC_OUTPUT

470 471 472
if test x$enable_verbose_mode = xno; then
        echo "*** WARNING WARNING WARNING WARNING WARNING"
        echo "*** Building without verbose mode"
473 474
        echo "*** This means there's no way to debug mutter problems."
        echo "*** Please build normal desktop versions of mutter"
475 476 477
        echo "*** with verbose mode enabled so users can use it when they report bugs."
fi

478 479
dnl ==========================================================================
echo "
480
mutter-wayland-$VERSION
481

482 483 484 485
	prefix:                   ${prefix}
	source code location:	  ${srcdir}
	compiler:		  ${CC}

486
	Startup notification:     ${have_startup_notification}
487
	libcanberra:              ${have_libcanberra}
488
	Introspection:            ${found_introspection}
489 490
	Session management:       ${found_sm}
	Shape extension:          ${found_shape}
491
	Xsync:                    ${found_xsync}
492
	Xcursor:                  ${have_xcursor}
493
"
494

495

496
MUTTER_MINOR_VERSION=mutter_minor_version
497 498
if expr $MUTTER_MINOR_VERSION % 2 > /dev/null ; then
   stable_version=`expr $MUTTER_MINOR_VERSION - 1`
499
   echo "This is the UNSTABLE branch of mutter"
500 501
   echo -n "Use 3.$stable_version.x for stable "
   echo    "(gnome-3-$stable_version branch in git)"
502
else
503
   echo "This is the stable branch of mutter"
504
fi