1 # clutter package version number, (as distinct from shared library version)
2 # An odd micro number indicates in-progress development from Git
3 # An even micro number indicates a released version
5 # Making a point release:
6 # - increase clutter_micro_version to the next even number
7 # - increase clutter_interface_age to the next even number
9 # - increase clutter_micro_version to the next odd number
10 # - increase clutter_interface_version to the next odd number
11 m4_define([clutter_major_version], [1])
12 m4_define([clutter_minor_version], [9])
13 m4_define([clutter_micro_version], [3])
15 # • for stable releases: increase the interface age by 1 for each release;
16 # if the API changes, set to 0. interface_age and binary_age are used to
17 # create the soname of the shared object:
19 # (<minor> * 100 + <micro>) - <interface_age>
21 # this allows using the same soname for different micro-releases in case
22 # no API was added or deprecated. for instance:
24 # clutter 1.2.0 -> 100 * 2 + 0 = 200, interface age = 0 -> 200
25 # clutter 1.2.2 -> 100 * 2 + 2 = 202, interface age = 2 -> 200
26 # clutter 1.2.4 -> 100 * 2 + 4 = 204, interface age = 4 -> 200
27 # [ API addition, deprecation ]
28 # clutter 1.2.6 -> 100 * 2 + 6 = 206, interface age = 0 -> 206
29 # clutter 1.2.8 -> 100 * 2 + 8 = 208, interface age = 2 -> 206
30 # clutter 1.2.10 -> 100 * 2 + 10 = 210, interface age = 4 -> 206
33 # • for development releases: keep clutter_interface_age to 0
34 m4_define([clutter_interface_age], [0])
36 m4_define([clutter_binary_age], [m4_eval(100 * clutter_minor_version + clutter_micro_version)])
38 m4_define([clutter_release_status],
39 [m4_if(m4_eval(clutter_micro_version % 2), [1], [git],
40 [m4_if(m4_eval(clutter_minor_version % 2), [1], [snapshot],
43 m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version])
45 # change this only when breaking the API
46 m4_define([clutter_api_version], [1.0])
52 [http://bugzilla.gnome.org/enter_bug.cgi?product=clutter],
54 [http://www.clutter-project.org])
56 AC_CONFIG_SRCDIR([clutter/clutter.h])
57 AC_CONFIG_HEADERS([config.h])
58 AC_CONFIG_AUX_DIR([build])
59 AC_CONFIG_MACRO_DIR([build/autotools])
61 AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
62 AM_SILENT_RULES([yes])
64 AC_SUBST([CLUTTER_MAJOR_VERSION], [clutter_major_version])
65 AC_SUBST([CLUTTER_MINOR_VERSION], [clutter_minor_version])
66 AC_SUBST([CLUTTER_MICRO_VERSION], [clutter_micro_version])
67 AC_SUBST([CLUTTER_VERSION], [clutter_version])
68 AC_SUBST([CLUTTER_API_VERSION], [clutter_api_version])
69 AC_SUBST([CLUTTER_API_VERSION_AM], [$CLUTTER_MAJOR_VERSION\_0])
70 AC_SUBST([CLUTTER_RELEASE_STATUS], [clutter_release_status])
72 m4_define([lt_current], [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)])
73 m4_define([lt_revision], [clutter_interface_age])
74 m4_define([lt_age], [m4_eval(clutter_binary_age - clutter_interface_age)])
75 CLUTTER_LT_CURRENT=lt_current
76 CLUTTER_LT_REV=lt_revision
78 CLUTTER_LT_VERSION="$CLUTTER_LT_CURRENT:$CLUTTER_LT_REV:$CLUTTER_LT_AGE"
79 CLUTTER_LT_LDFLAGS="-version-info $CLUTTER_LT_VERSION"
80 AC_SUBST([CLUTTER_LT_CURRENT], [lt_current])
81 AC_SUBST([CLUTTER_LT_REVISION], [lt_revision])
82 AC_SUBST([CLUTTER_LT_VERSION], [$CLUTTER_LT_VERSION])
86 dnl = Preliminary platform checks =============================================
94 AC_MSG_CHECKING([if building for some Win32 platform])
96 [*-*-mingw*|*-*-cygwin*],
98 CLUTTER_LT_LDFLAGS="$CLUTTER_LT_LDFLAGS -no-undefined"
104 AC_MSG_RESULT([$platform_win32])
106 AM_CONDITIONAL(OS_WIN32, [test "$platform_win32" = "yes"])
108 AC_CHECK_HEADER([OpenGL/gl.h], [platform_quartz=yes], [platform_quartz=no])
109 AM_CONDITIONAL(OS_QUARTZ, [test "$platform_quartz" = "yes"])
111 AC_CHECK_HEADER([GL/glx.h], [platform_glx=yes], [platform_glx=no])
112 AC_CHECK_LIB([GL], [glXCreateContext], [platform_glx=yes], [platform_glx=no])
113 AM_CONDITIONAL(OS_GLX, [test "$platform_glx" = "yes"])
115 AC_SUBST(CLUTTER_LT_LDFLAGS)
119 dnl = Dependencies =========================================================
121 # Checks for programs.
124 # require libtool >= 2.2
126 LT_INIT([disable-static])
128 # Checks for header files.
131 # required versions for dependencies
132 m4_define([glib_req_version], [2.31.0])
133 m4_define([cogl_req_version], [1.9.1])
134 m4_define([json_glib_req_version], [0.12.0])
135 m4_define([atk_req_version], [2.1.5])
136 m4_define([cairo_req_version], [1.10])
137 m4_define([pango_req_version], [1.20])
138 m4_define([gi_req_version], [0.9.5])
139 m4_define([uprof_req_version], [0.3])
140 m4_define([gtk_doc_req_version], [1.15])
141 m4_define([xfixes_req_version], [3])
142 m4_define([xcomposite_req_version], [0.4])
143 m4_define([gdk_req_version], [3.0.0])
145 AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
146 AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
147 AC_SUBST([JSON_GLIB_REQ_VERSION], [json_glib_req_version])
148 AC_SUBST([ATK_REQ_VERSION], [atk_req_version])
149 AC_SUBST([CAIRO_REQ_VERSION], [cairo_req_version])
150 AC_SUBST([PANGO_REQ_VERSION], [pango_req_version])
151 AC_SUBST([GI_REQ_VERSION], [gi_req_version])
152 AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
153 AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
154 AC_SUBST([XFIXES_REQ_VERSION], [xfixes_req_version])
155 AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
156 AC_SUBST([GDK_REQ_VERSION], [gdk_req_version])
158 # Checks for typedefs, structures, and compiler characteristics.
159 AM_PATH_GLIB_2_0([glib_req_version],
161 [AC_MSG_ERROR([glib-2.0 is required])],
162 [gobject gthread gmodule-no-export])
164 # Check for -Bsymbolic-functions to avoid intra-library PLT jumps
165 AC_ARG_ENABLE([Bsymbolic],
166 [AS_HELP_STRING([--disable-Bsymbolic],
167 [Avoid linking with -Bsymbolic])],
170 saved_LDFLAGS="${LDFLAGS}"
171 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
172 LDFLAGS=-Wl,-Bsymbolic-functions
173 AC_TRY_LINK([], [int main (void) { return 0; }],
182 LDFLAGS="${saved_LDFLAGS}"
185 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [CLUTTER_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
186 AC_SUBST(CLUTTER_LINK_FLAGS)
190 dnl ========================================================================
195 CLUTTER_INPUT_BACKENDS=""
196 CLUTTER_CONFIG_DEFINES=
198 experimental_backend=no
199 experimental_input_backend=no
201 # base dependencies for core
202 CLUTTER_BASE_PC_FILES="cogl-1.0 >= $COGL_REQ_VERSION cairo-gobject >= $CAIRO_REQ_VERSION atk >= $ATK_REQ_VERSION pangocairo >= $PANGO_REQ_VERSION cogl-pango-1.0 json-glib-1.0 >= $JSON_GLIB_REQ_VERSION"
204 # private base dependencies
205 CLUTTER_BASE_PC_FILES_PRIVATE=""
207 # backend specific pkg-config files
210 # private backend specific dependencies
211 BACKEND_PC_FILES_PRIVATE=""
213 dnl === Clutter windowing system backend ======================================
215 AC_ARG_ENABLE([x11-backend],
216 [AS_HELP_STRING([--enable-x11-backend=@<:@yes/no@:>@], [Enable the X11 backend (default=check)])],
217 [enable_x11=$enableval],
219 AC_ARG_ENABLE([win32-backend],
220 [AS_HELP_STRING([--enable-win32-backend=@<:@yes/no@:>@], [Enable the Windows backend (default=check)])],
221 [enable_win32=$enableval],
222 [enable_win32=check])
223 AC_ARG_ENABLE([quartz-backend],
224 [AS_HELP_STRING([--enable-quartz-backend=@<:@yes/no@:>@], [Enable the OS X backend (default=check)])],
225 [enable_osx=$enableval],
227 AC_ARG_ENABLE([gdk-backend],
228 [AS_HELP_STRING([--enable-gdk-backend=@<:@yes/no@:>@], [Enable the GDK backend (default=check)])],
229 [enable_gdk=$enableval],
231 AC_ARG_ENABLE([wayland-backend],
232 [AS_HELP_STRING([--enable-wayland-backend=@<:@yes/no@:>@], [Enable the Wayland client backend (default=no)])],
233 [enable_wayland=$enableval],
235 AC_ARG_ENABLE([egl-backend],
236 [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
237 [enable_egl=$enableval],
239 AC_ARG_ENABLE([cex100-backend],
240 [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
241 [enable_cex100=$enableval],
244 dnl Define default values
245 AS_IF([test "x$enable_x11" = "xcheck"],
247 AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
250 AS_IF([test "x$enable_win32" = "xcheck"],
252 AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
255 AS_IF([test "x$enable_osx" = "xcheck"],
257 AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
260 AS_IF([test "x$enable_gdk" = "xcheck"],
262 PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
265 dnl Per-backend rules
266 AS_IF([test "x$enable_x11" = "xyes"],
268 CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
269 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
275 # we use fontconfig API and pango-ft2 when the fontconfig
276 # configuration changes; we don't expose any API for this
277 # so we add pango-ft2 to the private Requires.
278 PKG_CHECK_EXISTS([pangoft2],
280 AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
281 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE pangoft2"
285 AC_DEFINE([HAVE_CLUTTER_GLX], [1], [Have the GLX backend])
288 AS_IF([test "x$enable_gdk" = "xyes"],
290 CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
291 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
296 BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
299 AS_IF([test "x$enable_wayland" = "xyes"],
301 CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
302 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
304 experimental_backend="yes"
308 PKG_CHECK_EXISTS([wayland-client xkbcommon gdk-pixbuf-2.0],
310 BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon",
311 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE gdk-pixbuf-2.0"
315 AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
318 dnl Note this is orthogonal to the client side support and you can
319 dnl use the Wayland compositor features with any of the clutter
320 dnl backends with corresponding Cogl support.
321 AC_ARG_ENABLE([wayland-compositor],
322 [AS_HELP_STRING([--enable-wayland-compositor=@<:@yes/no@:>@],
323 [Enable Wayland compositor features (default=no)])],
325 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
326 [enable_wayland_compositor=yes],
327 [enable_wayland_compositor=no])
330 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
332 PKG_CHECK_EXISTS([wayland-server],
333 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
334 SUPPORT_WAYLAND_COMPOSITOR=1
335 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
336 #define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
337 AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have Wayland compositor support])
340 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
342 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
344 # The wayland headers introduce so much symbol shadowing that build
345 # logs become incomprehensible with -Wshadow so we only use it for
346 # non-wayland builds.
347 MAINTAINER_COMPILER_FLAGS="-Wshadow"
350 AS_IF([test "x$enable_cex100" = "xyes"],
352 CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
354 experimental_backend="yes"
360 AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
362 AS_IF([test "x$have_gdl" = "xno"],
364 AC_CHECK_HEADERS([CE4100/libgdl.h],
366 FLAVOUR_CFLAGS="-I/usr/include/CE4100"
368 CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
372 AS_IF([test "x$have_gdl" = "xno"],
373 [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
375 AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
377 FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
379 AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
380 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
381 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
384 AS_IF([test "x$enable_egl" = "xyes"],
386 CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
388 experimental_backend="yes"
393 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
394 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
396 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
398 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
401 AS_IF([test "x$enable_osx" = "xyes"],
403 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
404 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
406 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
408 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
413 AS_IF([test "x$enable_win32" = "xyes"],
415 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
416 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
418 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
420 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
421 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
423 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
428 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
430 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
433 # additional input backends
435 AC_ARG_ENABLE([tslib-input],
436 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
437 [enable_tslib=$enableval],
439 AC_ARG_ENABLE([evdev-input],
440 [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
441 [enable_evdev=$enableval],
444 AS_IF([test "x$enable_tslib" = "xyes"],
446 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
447 AS_IF([test "x$have_tslib" = "xyes"],
449 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
450 experimental_input_backend="yes"
451 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
456 AS_IF([test "x$enable_evdev" = "xyes"],
458 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
459 AS_IF([test "x$have_evdev" = "xyes"],
461 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
462 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
463 experimental_input_backend="yes"
464 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
469 # conditionals for use in automake files...
470 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
471 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
472 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
473 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
474 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
475 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
476 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_CEX100" = "x1"])
477 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
479 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
480 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
481 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
482 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
484 dnl Instead of using AM_CFLAGS to ensure
485 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
486 dnl and cogl code we use a define in config.h instead. This helps ensure
487 dnl other tools such as glib-mkenums and gir-scanner don't end up
488 dnl using the define also.
489 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
491 dnl strip leading spaces
492 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
493 AC_SUBST(CLUTTER_BACKENDS)
495 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
496 AC_SUBST(CLUTTER_INPUT_BACKENDS)
500 dnl === Clutter configuration =================================================
503 AS_IF([test "x$SUPPORT_X11" = "x1"],
504 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
505 #define CLUTTER_WINDOWING_X11 \"x11\"
506 #define CLUTTER_INPUT_X11 \"x11\""])
507 AS_IF([test "x$SUPPORT_GDK" = "x1"],
508 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
509 #define CLUTTER_WINDOWING_GDK \"gdk\"
510 #define CLUTTER_INPUT_GDK \"gdk\""])
511 AS_IF([test "x$SUPPORT_GLX" = "x1"],
512 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
513 #define CLUTTER_WINDOWING_GLX \"glx\""])
514 AS_IF([test "x$SUPPORT_EGL" = "x1"],
515 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
516 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
517 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
518 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
519 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
520 AS_IF([test "x$SUPPORT_OSX" = "x1"],
521 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
522 #define CLUTTER_WINDOWING_OSX \"osx\"
523 #define CLUTTER_INPUT_OSX \"osx\""])
524 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
525 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
526 #define CLUTTER_WINDOWING_WIN32 \"win32\"
527 #define CLUTTER_INPUT_WIN32 \"win32\""])
528 AS_IF([test "x$SUPPORT_CEX100" = "x1"],
529 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
530 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
531 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
532 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
533 #define CLUTTER_INPUT_EVDEV \"evdev\""])
534 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
535 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
536 #define CLUTTER_INPUT_TSLIB \"tslib\""])
537 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
538 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
539 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
541 # the 'null' input backend is special
542 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
543 #define CLUTTER_INPUT_NULL \"null\""
545 AC_SUBST([CLUTTER_CONFIG_DEFINES])
547 dnl === Clutter substitutions kept for backwards compatibility ================
548 AC_SUBST([CLUTTER_WINSYS], [deprecated])
549 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
550 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
551 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
552 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
553 AC_SUBST([CLUTTER_COGL], [deprecated])
554 AC_SUBST([COGL_DRIVER], [deprecated])
556 dnl === X11 checks, only for X11-based backends ===============================
561 AS_IF([test "x$SUPPORT_X11" = "x1"],
563 # base X11 includes and libraries
564 AC_MSG_CHECKING([for X11])
566 # start with pkg-config
567 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
568 AS_IF([test "x$have_x11" = "xyes"],
572 # we actually need to ask for CFLAGS and LIBS
573 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
574 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
576 AC_MSG_RESULT([found])
579 # no pkg-config, let's go old school
582 AS_IF([test "x$no_x" = "xyes"],
583 [AC_MSG_ERROR([No X11 Libraries found])],
585 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
586 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
588 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
589 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
591 AC_MSG_RESULT([found])
598 AC_MSG_CHECKING([for XEXT extension])
599 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
600 AS_IF([test "x$have_xext" = "xyes"],
602 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
604 X11_LIBS="$X11_LIBS -lXext"
605 X11_PC_FILES="$X11_PC_FILES xext"
606 X11_EXTS="$X11_EXTS xext"
608 AC_MSG_RESULT([found])
610 [AC_MSG_ERROR([Not found])]
614 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
615 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
616 AS_IF([test "x$have_xfixes" = "xyes"],
618 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
620 X11_LIBS="$X11_LIBS -lXfixes"
621 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
622 X11_EXTS="$X11_EXTS xfixes"
624 AC_MSG_RESULT([found])
626 [AC_MSG_ERROR([Not found])]
630 AC_MSG_CHECKING([for XDAMAGE extension])
631 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
632 AS_IF([test "x$have_xdamage" = "xyes"],
634 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
636 X11_LIBS="$X11_LIBS -lXdamage"
637 X11_PC_FILES="$X11_PC_FILES xdamage"
638 X11_EXTS="$X11_EXTS xdamage"
640 AC_MSG_RESULT([found])
642 [AC_MSG_ERROR([not found])]
645 # XCOMPOSITE (optional)
646 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
647 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
648 AS_IF([test "x$have_xcomposite" = "xyes"],
650 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
652 X11_LIBS="$X11_LIBS -lXcomposite"
653 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
654 X11_EXTS="$X11_EXTS xcomposite"
656 AC_MSG_RESULT([found])
658 [AC_MSG_ERROR([not found])]
661 # X Generic Extensions (optional)
662 clutter_save_CPPFLAGS="$CPPFLAGS"
663 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
665 clutter_save_LIBS="$LIBS"
666 LIBS="$LIBS $X11_LIBS"
669 AC_CHECK_FUNC([XGetEventData],
671 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
673 X11_EXTS="$X11_EXTS xge"
676 CPPFLAGS="$clutter_save_CPPFLAGS"
677 LIBS="$clutter_save_LIBS"
680 AC_ARG_ENABLE([xinput],
681 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
685 AS_IF([test "x$enable_xinput" = "xyes"],
687 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
693 AS_CASE([$have_xinput],
697 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
700 AC_DEFINE([HAVE_XINPUT_2],
702 [Define to 1 if XI2 is available])
706 AC_DEFINE([HAVE_XINPUT],
708 [Define to 1 if XInput is available])
711 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
712 X11_PC_FILES="$X11_PC_FILES xi"
713 X11_EXTS="$X11_EXTS xi"
720 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
724 clutter_save_CPPFLAGS="$CPPFLAGS"
725 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
727 clutter_save_LIBS="$LIBS"
728 LIBS="$LIBS $X11_LIBS"
731 AC_CHECK_FUNC([XkbQueryExtension],
733 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
736 X11_EXTS="$X11_EXTS xkb"
739 CPPFLAGS="$clutter_save_CPPFLAGS"
740 LIBS="$clutter_save_LIBS"
743 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
744 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
745 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
749 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
750 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
752 X11_EXTS=${X11_EXTS#* }
756 dnl === Enable debug level ====================================================
758 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
759 AC_ARG_ENABLE([debug],
760 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
761 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
763 [enable_debug=debug_default])
765 AS_CASE([$enable_debug],
769 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
770 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
774 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
777 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
779 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
782 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
784 dnl === Enable deprecation guards ==================================================
786 m4_define([deprecated_default],
787 [m4_if(m4_eval(clutter_minor_version % 2),
792 AC_ARG_ENABLE([deprecated],
793 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
794 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
796 [enable_deprecated=deprecated_default])
798 AS_CASE([$enable_deprecated],
802 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
807 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
810 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
813 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
816 dnl === Conformance test suite ================================================
818 AC_ARG_ENABLE([conformance],
819 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
820 [Build conformance test suite @<:@default=yes@:>@])],
822 [enable_conformance=yes])
824 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
826 dnl === Profiling =============================================================
828 m4_define([profile_default], [no])
829 AC_ARG_ENABLE(profile,
830 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
831 [Turn on profiling support. yes; All profiling probe points are compiled in and may be runtime enabled. no; No profiling support will built into clutter. @<:@default=no@:>@]),
833 [enable_profile=profile_default])
835 AS_CASE([$enable_profile],
839 AS_IF([test "x$GCC" = "xyes"],
841 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
842 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
843 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
845 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
848 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
854 CLUTTER_PROFILE_CFLAGS=""
855 CLUTTER_PROFILE_LDFLAGS=""
858 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
860 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
861 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
862 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
864 dnl === Coverage report =======================================================
866 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
868 AC_MSG_CHECKING([whether to build with gcov testing])
870 AC_ARG_ENABLE([gcov],
871 [AS_HELP_STRING([--enable-gcov],
872 [Whether to enable coverage testing (requires gcc
877 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
879 AS_IF([test "x$enable_conformance" = "xno"],
880 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
881 [AC_MSG_RESULT([yes])]
884 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
885 GCOV_LDFLAGS="-lgcov"
887 [AC_MSG_RESULT([no])]
890 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
891 AC_SUBST([GCOV_CFLAGS])
892 AC_SUBST([GCOV_LDFLAGS])
894 dnl === Enable strict compiler flags ==========================================
896 # use strict compiler flags only when building from git; the rules for
897 # distcheck will take care of turning this on when making a release
898 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
899 AC_ARG_ENABLE([maintainer-flags],
900 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
901 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
903 [enable_maintainer_flags=maintainer_flags_default])
905 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
906 -Wall -Wcast-align -Wuninitialized
907 -Wno-strict-aliasing -Wempty-body -Wformat
908 -Wformat-security -Winit-self
909 -Wdeclaration-after-statement -Wvla
912 AS_CASE([$enable_maintainer_flags],
915 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
924 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
925 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
929 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
932 # strip leading spaces
933 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
934 AC_SUBST(MAINTAINER_CFLAGS)
936 dnl === Dependencies, compiler flags and linker libraries =====================
937 # strip leading space
938 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
940 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
941 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
942 AC_SUBST(CLUTTER_REQUIRES)
944 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" != "x" -o test "x$BACKEND_PC_FILES_PRIVATE" != "x"],
946 CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
947 PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
950 CLUTTER_REQUIRES_PRIVATE=""
951 CLUTTER_DEPS_PRIVATE_CFLAGS=""
952 CLUTTER_DEPS_PRIVATE_LIBS=""
955 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
957 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
958 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
959 AC_SUBST(CLUTTER_CFLAGS)
960 AC_SUBST(CLUTTER_LIBS)
963 dnl === GObject-Introspection check ===========================================
965 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
967 dnl === GTK Doc check =========================================================
969 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
971 # we don't want to build the documentation from a Git clone unless we
972 # explicitly tell configure to do so; this allows avoiding to recurse into
973 # the documentation directory when building Clutter inside Poky for a
974 # target device that doesn't have gtk-doc installed. for reference
975 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
977 # we use autogen.sh as it exists only inside the Git clones, and it
978 # is not packaged into tarballs.
979 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
981 # prefixes for fixing gtk-doc references
982 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
983 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
984 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
985 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
986 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
987 AC_SUBST(CAIRO_PREFIX)
988 AC_SUBST(GLIB_PREFIX)
989 AC_SUBST(PANGO_PREFIX)
990 AC_SUBST(COGL_PREFIX)
993 dnl === Manual ================================================================
995 AC_ARG_ENABLE([docs],
996 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
997 [Build optional documentation; requires xsltproc and jw.])],
998 [enable_docs=$enableval],
1002 AS_IF([test "x$enable_docs" = "xyes"],
1004 AC_PATH_PROG(JW, [jw], [no])
1005 AS_IF([test "x$JW" = "xno"],
1007 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1011 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1012 AS_IF([test "x$XSLTPROC" = "xno"],
1014 AC_MSG_ERROR([xsltproc not found])
1019 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1020 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1022 dnl === I18N ==================================================================
1024 AM_GNU_GETTEXT_VERSION([0.17])
1025 AM_GNU_GETTEXT([external])
1027 GETTEXT_PACKAGE="clutter-1.0"
1028 AC_SUBST(GETTEXT_PACKAGE)
1029 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1030 ["$GETTEXT_PACKAGE"],
1031 [The prefix for our gettext translation domains.])
1034 dnl ===========================================================================
1042 build/autotools/Makefile
1043 build/mingw/Makefile
1044 build/win32/Makefile
1045 build/win32/vs9/Makefile
1046 build/win32/vs10/Makefile
1049 clutter/clutter-config.h
1050 clutter/clutter-version.h
1051 clutter/clutter-version.h.win32
1052 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1054 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1056 clutter/cex100/clutter-cex100.h
1059 tests/accessibility/Makefile
1060 tests/conform/Makefile
1061 tests/conform/test-launcher.sh
1063 tests/interactive/Makefile
1064 tests/interactive/wrapper.sh
1065 tests/micro-bench/Makefile
1066 tests/performance/Makefile
1069 doc/reference/Makefile
1070 doc/reference/clutter/Makefile
1071 doc/reference/clutter/clutter-docs.xml
1072 doc/reference/cally/Makefile
1073 doc/reference/cally/cally-docs.xml
1075 doc/cookbook/Makefile
1076 doc/cookbook/clutter-cookbook.xml
1077 doc/cookbook/examples/Makefile
1084 dnl === Summary ===============================================================
1087 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1092 echo " Prefix: ${prefix}"
1093 echo " Libdir: ${libdir}"
1094 echo " Sysconfdir: ${sysconfdir}"
1096 # Compiler/Debug related flags
1098 echo " • Compiler options:"
1099 echo " Clutter debug level: ${enable_debug}"
1100 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1101 echo " Profiling enabled: ${enable_profile}"
1102 echo " Enable coverage tests: ${enable_gcov}"
1103 echo " Enable deprecated symbols: ${enable_deprecated}"
1107 echo " • Documentation:"
1108 echo " Build API Reference: ${enable_gtk_doc}"
1109 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1114 echo " Build introspection data: ${enable_introspection}"
1115 echo " Build conformance test suite: ${enable_conformance}"
1116 echo " Build X11-specific tests: ${x11_tests}"
1118 # Clutter backend related flags
1120 echo " • Clutter Backends:"
1122 if test "x$experimental_backend" = "xno"; then
1123 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1125 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1128 if test "x$experimental_input_backend" = "xno"; then
1129 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1131 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1134 if test "x$SUPPORT_X11" = "x1"; then
1136 echo " - X11 backend options:"
1137 echo " Enabled extensions: ${X11_EXTS}"
1138 echo " Build X11-specific tests: ${x11_tests}"
1141 if test "x$SUPPORT_CEX100" = "x1"; then
1143 echo " - CEx100 backend options (WARNING: Experimental):"
1144 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1147 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1149 echo " - Wayland compositor support enabled (WARNING: Experimental)"
1154 # General warning about experimental features
1155 if test "x$experimental_backend" = "xyes"; then
1157 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1158 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1160 echo " The stability of your build might be affected by one or more"
1161 echo " experimental backends or experimental and unsupported features"
1163 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1164 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"