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], [15])
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"
109 AC_MSG_RESULT([$platform_win32])
111 AM_CONDITIONAL(OS_WIN32, [test "$platform_win32" = "yes"])
113 AC_CHECK_HEADER([OpenGL/gl.h], [platform_quartz=yes], [platform_quartz=no])
114 AM_CONDITIONAL(OS_QUARTZ, [test "$platform_quartz" = "yes"])
116 AC_CHECK_HEADER([GL/glx.h], [platform_glx=yes], [platform_glx=no])
117 AC_CHECK_LIB([GL], [glXCreateContext], [platform_glx=yes], [platform_glx=no])
118 AM_CONDITIONAL(OS_GLX, [test "$platform_glx" = "yes"])
119 AM_CONDITIONAL(OS_LINUX, [test "$platform_linux" = "yes"])
121 AC_SUBST(CLUTTER_LT_LDFLAGS)
125 dnl = Dependencies =========================================================
127 # Checks for programs.
130 # require libtool >= 2.2
132 LT_INIT([disable-static])
134 # Checks for header files.
137 # required versions for dependencies
138 m4_define([glib_req_version], [2.31.19])
139 m4_define([cogl_req_version], [1.9.6])
140 m4_define([json_glib_req_version], [0.12.0])
141 m4_define([atk_req_version], [2.1.5])
142 m4_define([cairo_req_version], [1.10])
143 m4_define([pango_req_version], [1.20])
144 m4_define([gi_req_version], [0.9.5])
145 m4_define([uprof_req_version], [0.3])
146 m4_define([gtk_doc_req_version], [1.15])
147 m4_define([xfixes_req_version], [3])
148 m4_define([xcomposite_req_version], [0.4])
149 m4_define([gdk_req_version], [3.3.18])
151 AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
152 AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
153 AC_SUBST([JSON_GLIB_REQ_VERSION], [json_glib_req_version])
154 AC_SUBST([ATK_REQ_VERSION], [atk_req_version])
155 AC_SUBST([CAIRO_REQ_VERSION], [cairo_req_version])
156 AC_SUBST([PANGO_REQ_VERSION], [pango_req_version])
157 AC_SUBST([GI_REQ_VERSION], [gi_req_version])
158 AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
159 AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
160 AC_SUBST([XFIXES_REQ_VERSION], [xfixes_req_version])
161 AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
162 AC_SUBST([GDK_REQ_VERSION], [gdk_req_version])
164 # Checks for typedefs, structures, and compiler characteristics.
165 AM_PATH_GLIB_2_0([glib_req_version],
167 [AC_MSG_ERROR([glib-2.0 is required])],
168 [gobject gthread gmodule-no-export])
170 # Check for -Bsymbolic-functions to avoid intra-library PLT jumps
171 AC_ARG_ENABLE([Bsymbolic],
172 [AS_HELP_STRING([--disable-Bsymbolic],
173 [Avoid linking with -Bsymbolic])],
176 saved_LDFLAGS="${LDFLAGS}"
177 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
178 LDFLAGS=-Wl,-Bsymbolic-functions
179 AC_TRY_LINK([], [int main (void) { return 0; }],
188 LDFLAGS="${saved_LDFLAGS}"
191 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [CLUTTER_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
192 AC_SUBST(CLUTTER_LINK_FLAGS)
196 dnl ========================================================================
201 CLUTTER_INPUT_BACKENDS=""
202 CLUTTER_CONFIG_DEFINES=
204 experimental_backend=no
205 experimental_input_backend=no
207 # base dependencies for core
208 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"
210 # private base dependencies
211 CLUTTER_BASE_PC_FILES_PRIVATE=""
213 # backend specific pkg-config files
216 # private backend specific dependencies
217 BACKEND_PC_FILES_PRIVATE=""
219 dnl === Clutter windowing system backend ======================================
221 AC_ARG_ENABLE([x11-backend],
222 [AS_HELP_STRING([--enable-x11-backend=@<:@yes/no@:>@], [Enable the X11 backend (default=check)])],
223 [enable_x11=$enableval],
225 AC_ARG_ENABLE([win32-backend],
226 [AS_HELP_STRING([--enable-win32-backend=@<:@yes/no@:>@], [Enable the Windows backend (default=check)])],
227 [enable_win32=$enableval],
228 [enable_win32=check])
229 AC_ARG_ENABLE([quartz-backend],
230 [AS_HELP_STRING([--enable-quartz-backend=@<:@yes/no@:>@], [Enable the OS X backend (default=check)])],
231 [enable_osx=$enableval],
233 AC_ARG_ENABLE([gdk-backend],
234 [AS_HELP_STRING([--enable-gdk-backend=@<:@yes/no@:>@], [Enable the GDK backend (default=check)])],
235 [enable_gdk=$enableval],
237 AC_ARG_ENABLE([wayland-backend],
238 [AS_HELP_STRING([--enable-wayland-backend=@<:@yes/no@:>@], [Enable the Wayland client backend (default=no)])],
239 [enable_wayland=$enableval],
241 AC_ARG_ENABLE([egl-backend],
242 [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
243 [enable_egl=$enableval],
245 AC_ARG_ENABLE([cex100-backend],
246 [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
247 [enable_cex100=$enableval],
250 dnl Define default values
251 AS_IF([test "x$enable_x11" = "xcheck"],
253 AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
256 AS_IF([test "x$enable_win32" = "xcheck"],
258 AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
261 AS_IF([test "x$enable_osx" = "xcheck"],
263 AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
266 AS_IF([test "x$enable_gdk" = "xcheck"],
268 PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
271 dnl Per-backend rules
272 AS_IF([test "x$enable_x11" = "xyes"],
274 CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
275 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
281 # we use fontconfig API and pango-ft2 when the fontconfig
282 # configuration changes; we don't expose any API for this
283 # so we add pango-ft2 to the private Requires.
284 PKG_CHECK_EXISTS([pangoft2],
286 AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
287 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE pangoft2"
291 AC_DEFINE([HAVE_CLUTTER_GLX], [1], [Have the GLX backend])
294 AS_IF([test "x$enable_gdk" = "xyes"],
296 CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
297 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
302 BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
305 AS_IF([test "x$enable_wayland" = "xyes"],
307 CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
308 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
310 experimental_backend="yes"
314 PKG_CHECK_EXISTS([wayland-client xkbcommon gdk-pixbuf-2.0],
316 BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon",
317 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE gdk-pixbuf-2.0"
321 AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
324 dnl Note this is orthogonal to the client side support and you can
325 dnl use the Wayland compositor features with any of the clutter
326 dnl backends with corresponding Cogl support.
327 AC_ARG_ENABLE([wayland-compositor],
328 [AS_HELP_STRING([--enable-wayland-compositor=@<:@yes/no@:>@],
329 [Enable Wayland compositor features (default=no)])],
331 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
332 [enable_wayland_compositor=yes],
333 [enable_wayland_compositor=no])
336 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
338 PKG_CHECK_EXISTS([wayland-server],
339 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
340 SUPPORT_WAYLAND_COMPOSITOR=1
341 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
342 #define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
343 AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have Wayland compositor support])
346 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
348 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
350 # The wayland headers introduce so much symbol shadowing that build
351 # logs become incomprehensible with -Wshadow so we only use it for
352 # non-wayland builds.
353 MAINTAINER_COMPILER_FLAGS="-Wshadow"
356 AS_IF([test "x$enable_cex100" = "xyes"],
358 CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
360 experimental_backend="yes"
366 AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
368 AS_IF([test "x$have_gdl" = "xno"],
370 AC_CHECK_HEADERS([CE4100/libgdl.h],
372 FLAVOUR_CFLAGS="-I/usr/include/CE4100"
374 CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
378 AS_IF([test "x$have_gdl" = "xno"],
379 [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
381 AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
383 FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
385 AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
386 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
387 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
390 AS_IF([test "x$enable_egl" = "xyes"],
392 CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
394 experimental_backend="yes"
399 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
400 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
402 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
404 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
407 AS_IF([test "x$enable_osx" = "xyes"],
409 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
410 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
412 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
414 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
419 AS_IF([test "x$enable_win32" = "xyes"],
421 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
422 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
424 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
426 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
427 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
429 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
434 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
436 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
439 # additional input backends
441 AC_ARG_ENABLE([tslib-input],
442 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
443 [enable_tslib=$enableval],
445 AC_ARG_ENABLE([evdev-input],
446 [AS_HELP_STRING([--enable-evdev-input=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
447 [enable_evdev=$enableval],
450 AS_IF([test "x$enable_tslib" = "xyes"],
452 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
453 AS_IF([test "x$have_tslib" = "xyes"],
455 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
456 experimental_input_backend="yes"
457 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
462 AS_IF([test "x$enable_evdev" = "xyes"],
464 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
465 AS_IF([test "x$have_evdev" = "xyes"],
467 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
468 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
469 experimental_input_backend="yes"
470 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
475 # conditionals for use in automake files...
476 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
477 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
478 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
479 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
480 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
481 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
482 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_CEX100" = "x1"])
483 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
485 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
486 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
487 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
488 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
490 AM_CONDITIONAL(NEED_XKB_UTILS, [test "x$have_evdev" = "xyes" -O "x$SUPPORT_WAYLAND" = "x1"])
492 dnl Instead of using AM_CFLAGS to ensure
493 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
494 dnl and cogl code we use a define in config.h instead. This helps ensure
495 dnl other tools such as glib-mkenums and gir-scanner don't end up
496 dnl using the define also.
497 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
499 dnl strip leading spaces
500 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
501 AC_SUBST(CLUTTER_BACKENDS)
503 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
504 AC_SUBST(CLUTTER_INPUT_BACKENDS)
508 dnl === Clutter configuration =================================================
511 AS_IF([test "x$SUPPORT_X11" = "x1"],
512 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
513 #define CLUTTER_WINDOWING_X11 \"x11\"
514 #define CLUTTER_INPUT_X11 \"x11\""])
515 AS_IF([test "x$SUPPORT_GDK" = "x1"],
516 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
517 #define CLUTTER_WINDOWING_GDK \"gdk\"
518 #define CLUTTER_INPUT_GDK \"gdk\""])
519 AS_IF([test "x$SUPPORT_GLX" = "x1"],
520 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
521 #define CLUTTER_WINDOWING_GLX \"glx\""])
522 AS_IF([test "x$SUPPORT_EGL" = "x1"],
523 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
524 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
525 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
526 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
527 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
528 AS_IF([test "x$SUPPORT_OSX" = "x1"],
529 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
530 #define CLUTTER_WINDOWING_OSX \"osx\"
531 #define CLUTTER_INPUT_OSX \"osx\""])
532 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
533 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
534 #define CLUTTER_WINDOWING_WIN32 \"win32\"
535 #define CLUTTER_INPUT_WIN32 \"win32\""])
536 AS_IF([test "x$SUPPORT_CEX100" = "x1"],
537 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
538 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
539 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
540 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
541 #define CLUTTER_INPUT_EVDEV \"evdev\""])
542 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
543 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
544 #define CLUTTER_INPUT_TSLIB \"tslib\""])
545 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
546 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
547 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
549 # the 'null' input backend is special
550 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
551 #define CLUTTER_INPUT_NULL \"null\""
553 AC_SUBST([CLUTTER_CONFIG_DEFINES])
555 dnl === Clutter substitutions kept for backwards compatibility ================
556 AC_SUBST([CLUTTER_WINSYS], [deprecated])
557 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
558 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
559 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
560 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
561 AC_SUBST([CLUTTER_COGL], [deprecated])
562 AC_SUBST([COGL_DRIVER], [deprecated])
564 dnl === X11 checks, only for X11-based backends ===============================
569 AS_IF([test "x$SUPPORT_X11" = "x1"],
571 # base X11 includes and libraries
572 AC_MSG_CHECKING([for X11])
574 # start with pkg-config
575 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
576 AS_IF([test "x$have_x11" = "xyes"],
580 # we actually need to ask for CFLAGS and LIBS
581 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
582 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
584 AC_MSG_RESULT([found])
587 # no pkg-config, let's go old school
590 AS_IF([test "x$no_x" = "xyes"],
591 [AC_MSG_ERROR([No X11 Libraries found])],
593 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
594 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
596 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
597 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
599 AC_MSG_RESULT([found])
606 AC_MSG_CHECKING([for XEXT extension])
607 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
608 AS_IF([test "x$have_xext" = "xyes"],
610 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
612 X11_LIBS="$X11_LIBS -lXext"
613 X11_PC_FILES="$X11_PC_FILES xext"
614 X11_EXTS="$X11_EXTS xext"
616 AC_MSG_RESULT([found])
618 [AC_MSG_ERROR([Not found])]
622 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
623 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
624 AS_IF([test "x$have_xfixes" = "xyes"],
626 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
628 X11_LIBS="$X11_LIBS -lXfixes"
629 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
630 X11_EXTS="$X11_EXTS xfixes"
632 AC_MSG_RESULT([found])
634 [AC_MSG_ERROR([Not found])]
638 AC_MSG_CHECKING([for XDAMAGE extension])
639 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
640 AS_IF([test "x$have_xdamage" = "xyes"],
642 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
644 X11_LIBS="$X11_LIBS -lXdamage"
645 X11_PC_FILES="$X11_PC_FILES xdamage"
646 X11_EXTS="$X11_EXTS xdamage"
648 AC_MSG_RESULT([found])
650 [AC_MSG_ERROR([not found])]
653 # XCOMPOSITE (optional)
654 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
655 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
656 AS_IF([test "x$have_xcomposite" = "xyes"],
658 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
660 X11_LIBS="$X11_LIBS -lXcomposite"
661 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
662 X11_EXTS="$X11_EXTS xcomposite"
664 AC_MSG_RESULT([found])
666 [AC_MSG_ERROR([not found])]
669 # X Generic Extensions (optional)
670 clutter_save_CPPFLAGS="$CPPFLAGS"
671 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
673 clutter_save_LIBS="$LIBS"
674 LIBS="$LIBS $X11_LIBS"
677 AC_CHECK_FUNC([XGetEventData],
679 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
681 X11_EXTS="$X11_EXTS xge"
684 CPPFLAGS="$clutter_save_CPPFLAGS"
685 LIBS="$clutter_save_LIBS"
688 AC_ARG_ENABLE([xinput],
689 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
693 AS_IF([test "x$enable_xinput" = "xyes"],
695 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
701 AS_CASE([$have_xinput],
705 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
708 AC_DEFINE([HAVE_XINPUT_2],
710 [Define to 1 if XI2 is available])
714 AC_DEFINE([HAVE_XINPUT],
716 [Define to 1 if XInput is available])
719 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
720 X11_PC_FILES="$X11_PC_FILES xi"
721 X11_EXTS="$X11_EXTS xi"
728 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
732 clutter_save_CPPFLAGS="$CPPFLAGS"
733 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
735 clutter_save_LIBS="$LIBS"
736 LIBS="$LIBS $X11_LIBS"
739 AC_CHECK_FUNC([XkbQueryExtension],
741 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
744 X11_EXTS="$X11_EXTS xkb"
747 CPPFLAGS="$clutter_save_CPPFLAGS"
748 LIBS="$clutter_save_LIBS"
751 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
752 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
753 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
757 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
758 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
760 X11_EXTS=${X11_EXTS#* }
764 dnl === Enable debug level ====================================================
766 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
767 AC_ARG_ENABLE([debug],
768 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
769 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
771 [enable_debug=debug_default])
773 AS_CASE([$enable_debug],
777 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
778 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
782 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
785 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
787 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
790 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
792 dnl === Enable deprecation guards ==================================================
794 m4_define([deprecated_default],
795 [m4_if(m4_eval(clutter_minor_version % 2),
800 AC_ARG_ENABLE([deprecated],
801 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
802 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
804 [enable_deprecated=deprecated_default])
806 AS_CASE([$enable_deprecated],
810 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
815 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
818 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
821 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
824 dnl === Conformance test suite ================================================
826 AC_ARG_ENABLE([conformance],
827 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
828 [Build conformance test suite @<:@default=yes@:>@])],
830 [enable_conformance=yes])
832 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
834 dnl === Profiling =============================================================
836 m4_define([profile_default], [no])
837 AC_ARG_ENABLE(profile,
838 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
839 [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@:>@]),
841 [enable_profile=profile_default])
843 AS_CASE([$enable_profile],
847 AS_IF([test "x$GCC" = "xyes"],
849 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
850 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
851 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
853 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
856 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
862 CLUTTER_PROFILE_CFLAGS=""
863 CLUTTER_PROFILE_LDFLAGS=""
866 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
868 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
869 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
870 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
872 dnl === Coverage report =======================================================
874 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
876 AC_MSG_CHECKING([whether to build with gcov testing])
878 AC_ARG_ENABLE([gcov],
879 [AS_HELP_STRING([--enable-gcov],
880 [Whether to enable coverage testing (requires gcc
885 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
887 AS_IF([test "x$enable_conformance" = "xno"],
888 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
889 [AC_MSG_RESULT([yes])]
892 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
893 GCOV_LDFLAGS="-lgcov"
895 [AC_MSG_RESULT([no])]
898 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
899 AC_SUBST([GCOV_CFLAGS])
900 AC_SUBST([GCOV_LDFLAGS])
902 dnl === Enable strict compiler flags ==========================================
904 # use strict compiler flags only when building from git; the rules for
905 # distcheck will take care of turning this on when making a release
906 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
907 AC_ARG_ENABLE([maintainer-flags],
908 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
909 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
911 [enable_maintainer_flags=maintainer_flags_default])
913 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
914 -Wall -Wcast-align -Wuninitialized
915 -Wno-strict-aliasing -Wempty-body -Wformat
916 -Wformat-security -Wformat-nonliteral -Winit-self
917 -Wdeclaration-after-statement -Wvla
918 -Wpointer-arith -Wmissing-declarations
919 -Waggregate-returns -Wcast-align
922 AS_CASE([$enable_maintainer_flags],
925 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
934 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
935 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
939 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
942 # strip leading spaces
943 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
944 AC_SUBST(MAINTAINER_CFLAGS)
946 dnl === Dependencies, compiler flags and linker libraries =====================
947 # strip leading space
948 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
950 # public dependencies, will fill the Requires: field of clutter.pc
951 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
952 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
954 # private dependencies, will fill the Requires.private: field of clutter.pc
955 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
957 CLUTTER_REQUIRES_PRIVATE=""
958 CLUTTER_DEPS_PRIVATE_CFLAGS=""
959 CLUTTER_DEPS_PRIVATE_LIBS=""
962 CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
963 PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
966 AC_SUBST(CLUTTER_REQUIRES)
967 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
969 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
970 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
971 AC_SUBST(CLUTTER_CFLAGS)
972 AC_SUBST(CLUTTER_LIBS)
975 dnl === GObject-Introspection check ===========================================
977 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
979 dnl === GTK Doc check =========================================================
981 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
983 # we don't want to build the documentation from a Git clone unless we
984 # explicitly tell configure to do so; this allows avoiding to recurse into
985 # the documentation directory when building Clutter inside Poky for a
986 # target device that doesn't have gtk-doc installed. for reference
987 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
989 # we use autogen.sh as it exists only inside the Git clones, and it
990 # is not packaged into tarballs.
991 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
993 # prefixes for fixing gtk-doc references
994 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
995 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
996 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
997 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
998 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
999 AC_SUBST(CAIRO_PREFIX)
1000 AC_SUBST(GLIB_PREFIX)
1001 AC_SUBST(PANGO_PREFIX)
1002 AC_SUBST(COGL_PREFIX)
1003 AC_SUBST(ATK_PREFIX)
1005 dnl === Manual ================================================================
1007 AC_ARG_ENABLE([docs],
1008 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1009 [Build optional documentation; requires xsltproc and jw.])],
1010 [enable_docs=$enableval],
1014 AS_IF([test "x$enable_docs" = "xyes"],
1016 AC_PATH_PROG(JW, [jw], [no])
1017 AS_IF([test "x$JW" = "xno"],
1019 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1023 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1024 AS_IF([test "x$XSLTPROC" = "xno"],
1026 AC_MSG_ERROR([xsltproc not found])
1031 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1032 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1034 dnl === I18N ==================================================================
1036 AM_GNU_GETTEXT_VERSION([0.17])
1037 AM_GNU_GETTEXT([external])
1039 GETTEXT_PACKAGE="clutter-1.0"
1040 AC_SUBST(GETTEXT_PACKAGE)
1041 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1042 ["$GETTEXT_PACKAGE"],
1043 [The prefix for our gettext translation domains.])
1046 dnl ===========================================================================
1054 build/autotools/Makefile
1055 build/mingw/Makefile
1056 build/win32/Makefile
1057 build/win32/vs9/Makefile
1058 build/win32/vs10/Makefile
1061 clutter/clutter-config.h
1062 clutter/clutter-version.h
1063 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1065 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1067 clutter/cex100/clutter-cex100.h
1070 tests/accessibility/Makefile
1071 tests/conform/Makefile
1072 tests/conform/test-launcher.sh
1074 tests/interactive/Makefile
1075 tests/interactive/wrapper.sh
1076 tests/micro-bench/Makefile
1077 tests/performance/Makefile
1080 doc/reference/Makefile
1081 doc/reference/clutter/Makefile
1082 doc/reference/clutter/clutter-docs.xml
1083 doc/reference/cally/Makefile
1084 doc/reference/cally/cally-docs.xml
1086 doc/cookbook/Makefile
1087 doc/cookbook/clutter-cookbook.xml
1088 doc/cookbook/examples/Makefile
1095 dnl === Summary ===============================================================
1098 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1103 echo " Prefix: ${prefix}"
1104 echo " Libdir: ${libdir}"
1105 echo " Sysconfdir: ${sysconfdir}"
1107 # Compiler/Debug related flags
1109 echo " • Compiler options:"
1110 echo " Clutter debug level: ${enable_debug}"
1111 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1112 echo " Profiling enabled: ${enable_profile}"
1113 echo " Enable coverage tests: ${enable_gcov}"
1114 echo " Enable deprecated symbols: ${enable_deprecated}"
1118 echo " • Documentation:"
1119 echo " Build API Reference: ${enable_gtk_doc}"
1120 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1125 echo " Build introspection data: ${enable_introspection}"
1126 echo " Build conformance test suite: ${enable_conformance}"
1127 echo " Build X11-specific tests: ${x11_tests}"
1129 # Clutter backend related flags
1131 echo " • Clutter Backends:"
1133 if test "x$experimental_backend" = "xno"; then
1134 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1136 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1139 if test "x$experimental_input_backend" = "xno"; then
1140 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1142 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1145 if test "x$SUPPORT_X11" = "x1"; then
1147 echo " - X11 backend options:"
1148 echo " Enabled extensions: ${X11_EXTS}"
1149 echo " Build X11-specific tests: ${x11_tests}"
1152 if test "x$SUPPORT_CEX100" = "x1"; then
1154 echo " - CEx100 backend options (WARNING: Experimental):"
1155 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1158 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1160 echo " - Wayland compositor support enabled (WARNING: Experimental)"
1165 # General warning about experimental features
1166 if test "x$experimental_backend" = "xyes"; then
1168 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1169 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1171 echo " The stability of your build might be affected by one or more"
1172 echo " experimental backends or experimental and unsupported features"
1174 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1175 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"