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=""
197 experimental_backend=no
198 experimental_input_backend=no
200 # base dependencies for core
201 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"
203 # backend specific pkg-config files
206 dnl === Clutter windowing system backend ======================================
208 AC_ARG_ENABLE([x11-backend],
209 [AS_HELP_STRING([--enable-x11-backend=@<:@yes/no@:>@], [Enable the X11 backend (default=check)])],
210 [enable_x11=$enableval],
212 AC_ARG_ENABLE([win32-backend],
213 [AS_HELP_STRING([--enable-win32-backend=@<:@yes/no@:>@], [Enable the Windows backend (default=check)])],
214 [enable_win32=$enableval],
215 [enable_win32=check])
216 AC_ARG_ENABLE([quartz-backend],
217 [AS_HELP_STRING([--enable-quartz-backend=@<:@yes/no@:>@], [Enable the OS X backend (default=check)])],
218 [enable_osx=$enableval],
220 AC_ARG_ENABLE([gdk-backend],
221 [AS_HELP_STRING([--enable-gdk-backend=@<:@yes/no@:>@], [Enable the GDK backend (default=check)])],
222 [enable_gdk=$enableval],
224 AC_ARG_ENABLE([wayland-backend],
225 [AS_HELP_STRING([--enable-wayland-backend=@<:@yes/no@:>@], [Enable the Wayland client backend (default=no)])],
226 [enable_wayland=$enableval],
228 AC_ARG_ENABLE([egl-backend],
229 [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
230 [enable_egl=$enableval],
232 AC_ARG_ENABLE([cex100-backend],
233 [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
234 [enable_cex100=$enableval],
237 dnl Define default values
238 AS_IF([test "x$enable_x11" = "xcheck"],
240 AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
243 AS_IF([test "x$enable_win32" = "xcheck"],
245 AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
248 AS_IF([test "x$enable_osx" = "xcheck"],
250 AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
253 AS_IF([test "x$enable_gdk" = "xcheck"],
255 PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
258 dnl Per-backend rules
259 AS_IF([test "x$enable_x11" = "xyes"],
261 CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
262 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
268 # Mesa 7.3 added a GL pkg-config file, finally, but if a pkg-config
269 # file isn't found just add -lGL and hope for the best.
270 PKG_CHECK_EXISTS([gl],
271 [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"],
272 [FLAVOUR_LIBS="$FLAVOUR_LIBS -lGL"])
274 # We might fall back to DRM for sync-to-vblank on GLX
275 PKG_CHECK_EXISTS([libdrm],
277 AC_DEFINE([HAVE_DRM], [1], [Have libdrm support])
278 BACKEND_PC_FILES="$BACKEND_PC_FILES libdrm"
282 # we use fontconfig API and pango-fc when the fontconfig
283 # configuration changes
284 PKG_CHECK_EXISTS([pangoft2],
286 AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
287 BACKEND_PC_FILES="$BACKEND_PC_FILES 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"
303 PKG_CHECK_EXISTS([gl], [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"], [])
306 AS_IF([test "x$enable_wayland" = "xyes"],
308 CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
309 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
311 experimental_backend="yes"
315 PKG_CHECK_EXISTS([wayland-client xkbcommon],
316 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon"],
319 AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland backend])
322 dnl Note this is orthogonal to the client side support and you can
323 dnl use the wayland compositor features with any of the clutter
324 dnl backends with corresponding Cogl support.
325 AC_ARG_ENABLE([wayland-compositor],
326 [AS_HELP_STRING([--enable-wayland-compositor], [Enable Wayland compositor features])],
328 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
329 [enable_wayland_compositor=yes],
330 [enable_wayland_compositor=no])
333 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
335 PKG_CHECK_EXISTS([wayland-server],
336 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
337 SUPPORT_WAYLAND_COMPOSITOR=1
338 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"
357 SUPPORT_EGL_PLATFORM_GDL=1
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 # if Mesa has support for egl, we can use it as well
394 PKG_CHECK_EXISTS([egl],
396 BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
400 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
401 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
403 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
405 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
408 AS_IF([test "x$enable_osx" = "xyes"],
410 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
411 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
413 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
415 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
420 AS_IF([test "x$enable_win32" = "xyes"],
422 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
423 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
425 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
427 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
428 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
430 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
435 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
437 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
440 # additional input backends
442 AC_ARG_ENABLE([tslib-input],
443 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
444 [enable_tslib=$enableval],
446 AC_ARG_ENABLE([evdev-input],
447 [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
448 [enable_evdev=$enableval],
451 AS_IF([test "x$enable_tslib" = "xyes"],
453 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
454 AS_IF([test "x$have_tslib" = "xyes"],
456 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
457 experimental_input_backend="yes"
458 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
463 AS_IF([test "x$enable_evdev" = "xyes"],
465 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
466 AS_IF([test "x$have_evdev" = "xyes"],
468 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
469 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
470 experimental_input_backend="yes"
471 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
476 # conditionals for use in automake files...
477 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
478 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
479 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
480 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
481 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
482 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
483 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"])
484 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
485 AM_CONDITIONAL(SUPPORT_STUB, [test "x$SUPPORT_WIN32" = "x1" -o \
486 "x$SUPPORT_OSX" = "x1"])
488 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
489 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
490 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
491 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
493 dnl Instead of using AM_CFLAGS to ensure
494 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
495 dnl and cogl code we use a define in config.h instead. This helps ensure
496 dnl other tools such as glib-mkenums and gir-scanner don't end up
497 dnl using the define also.
498 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
500 dnl strip leading spaces
501 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
502 AC_SUBST(CLUTTER_BACKENDS)
504 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
505 AC_SUBST(CLUTTER_INPUT_BACKENDS)
509 dnl === Clutter configuration =================================================
511 CLUTTER_CONFIG_DEFINES=
514 AS_IF([test "x$SUPPORT_X11" = "x1"],
515 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
516 #define CLUTTER_WINDOWING_X11 \"x11\"
517 #define CLUTTER_INPUT_X11 \"x11\""])
518 AS_IF([test "x$SUPPORT_GDK" = "x1"],
519 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
520 #define CLUTTER_WINDOWING_GDK \"gdk\"
521 #define CLUTTER_INPUT_GDK \"gdk\""])
522 AS_IF([test "x$SUPPORT_GLX" = "x1"],
523 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
524 #define CLUTTER_WINDOWING_GLX \"glx\""])
525 AS_IF([test "x$SUPPORT_EGL" = "x1"],
526 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
527 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
528 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
529 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
530 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
531 AS_IF([test "x$SUPPORT_OSX" = "x1"],
532 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
533 #define CLUTTER_WINDOWING_OSX \"osx\"
534 #define CLUTTER_INPUT_OSX \"osx\""])
535 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
536 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
537 #define CLUTTER_WINDOWING_WIN32 \"win32\"
538 #define CLUTTER_INPUT_WIN32 \"win32\""])
539 AS_IF([test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"],
540 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
541 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
542 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
543 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
544 #define CLUTTER_INPUT_EVDEV \"evdev\""])
545 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
546 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
547 #define CLUTTER_INPUT_TSLIB \"tslib\""])
548 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
549 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
550 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
552 # the 'null' input backend is special
553 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
554 #define CLUTTER_INPUT_NULL \"null\""
556 AC_SUBST([CLUTTER_CONFIG_DEFINES])
558 dnl === Clutter substitutions kept for backwards compatibility ================
559 AC_SUBST([CLUTTER_WINSYS], [deprecated])
560 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
561 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
562 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
563 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
564 AC_SUBST([CLUTTER_COGL], [deprecated])
565 AC_SUBST([COGL_DRIVER], [deprecated])
567 dnl === Image loading backend =================================================
570 dnl === X11 checks, only for X11-based backends ===============================
575 AS_IF([test "x$SUPPORT_X11" = "x1"],
577 # base X11 includes and libraries
578 AC_MSG_CHECKING([for X11])
580 # start with pkg-config
581 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
582 AS_IF([test "x$have_x11" = "xyes"],
586 # we actually need to ask for CFLAGS and LIBS
587 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
588 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
590 AC_MSG_RESULT([found])
593 # no pkg-config, let's go old school
596 AS_IF([test "x$no_x" = "xyes"],
597 [AC_MSG_ERROR([No X11 Libraries found])],
599 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
600 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
602 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
603 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
605 AC_MSG_RESULT([found])
612 AC_MSG_CHECKING([for XEXT extension])
613 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
614 AS_IF([test "x$have_xext" = "xyes"],
616 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
618 X11_LIBS="$X11_LIBS -lXext"
619 X11_PC_FILES="$X11_PC_FILES xext"
620 X11_EXTS="$X11_EXTS xext"
622 AC_MSG_RESULT([found])
624 [AC_MSG_ERROR([Not found])]
628 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
629 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
630 AS_IF([test "x$have_xfixes" = "xyes"],
632 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
634 X11_LIBS="$X11_LIBS -lXfixes"
635 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
636 X11_EXTS="$X11_EXTS xfixes"
638 AC_MSG_RESULT([found])
640 [AC_MSG_ERROR([Not found])]
644 AC_MSG_CHECKING([for XDAMAGE extension])
645 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
646 AS_IF([test "x$have_xdamage" = "xyes"],
648 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
650 X11_LIBS="$X11_LIBS -lXdamage"
651 X11_PC_FILES="$X11_PC_FILES xdamage"
652 X11_EXTS="$X11_EXTS xdamage"
654 AC_MSG_RESULT([found])
656 [AC_MSG_ERROR([not found])]
659 # XCOMPOSITE (optional)
660 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
661 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
662 AS_IF([test "x$have_xcomposite" = "xyes"],
664 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
666 X11_LIBS="$X11_LIBS -lXcomposite"
667 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
668 X11_EXTS="$X11_EXTS xcomposite"
670 AC_MSG_RESULT([found])
672 [AC_MSG_ERROR([not found])]
675 # X Generic Extensions (optional)
676 clutter_save_CPPFLAGS="$CPPFLAGS"
677 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
679 clutter_save_LIBS="$LIBS"
680 LIBS="$LIBS $X11_LIBS"
683 AC_CHECK_FUNC([XGetEventData],
685 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
687 X11_EXTS="$X11_EXTS xge"
690 CPPFLAGS="$clutter_save_CPPFLAGS"
691 LIBS="$clutter_save_LIBS"
694 AC_ARG_ENABLE([xinput],
695 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
699 AS_IF([test "x$enable_xinput" = "xyes"],
701 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
707 AS_CASE([$have_xinput],
711 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
714 AC_DEFINE([HAVE_XINPUT_2],
716 [Define to 1 if XI2 is available])
720 AC_DEFINE([HAVE_XINPUT],
722 [Define to 1 if XInput is available])
725 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
726 X11_PC_FILES="$X11_PC_FILES xi"
727 X11_EXTS="$X11_EXTS xi"
734 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
738 clutter_save_CPPFLAGS="$CPPFLAGS"
739 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
741 clutter_save_LIBS="$LIBS"
742 LIBS="$LIBS $X11_LIBS"
745 AC_CHECK_FUNC([XkbQueryExtension],
747 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
750 X11_EXTS="$X11_EXTS xkb"
753 CPPFLAGS="$clutter_save_CPPFLAGS"
754 LIBS="$clutter_save_LIBS"
757 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
758 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
759 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
763 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
764 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
766 X11_EXTS=${X11_EXTS#* }
770 dnl === Enable debug level ====================================================
772 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
773 AC_ARG_ENABLE([debug],
774 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
775 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
777 [enable_debug=debug_default])
779 AS_CASE([$enable_debug],
783 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
784 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
788 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
791 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
793 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
796 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
798 dnl === Enable deprecation guards ==================================================
800 m4_define([deprecated_default],
801 [m4_if(m4_eval(clutter_minor_version % 2),
806 AC_ARG_ENABLE([deprecated],
807 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
808 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
810 [enable_deprecated=deprecated_default])
812 AS_CASE([$enable_deprecated],
816 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
821 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
824 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
827 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
830 dnl === Conformance test suite ================================================
832 AC_ARG_ENABLE([conformance],
833 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
834 [Build conformance test suite @<:@default=yes@:>@])],
836 [enable_conformance=yes])
838 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
840 dnl === Profiling =============================================================
842 m4_define([profile_default], [no])
843 AC_ARG_ENABLE(profile,
844 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
845 [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@:>@]),
847 [enable_profile=profile_default])
849 AS_CASE([$enable_profile],
853 AS_IF([test "x$GCC" = "xyes"],
855 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
856 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
857 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
859 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
862 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
868 CLUTTER_PROFILE_CFLAGS=""
869 CLUTTER_PROFILE_LDFLAGS=""
872 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
874 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
875 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
876 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
878 dnl === Coverage report =======================================================
880 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
882 AC_MSG_CHECKING([whether to build with gcov testing])
884 AC_ARG_ENABLE([gcov],
885 [AS_HELP_STRING([--enable-gcov],
886 [Whether to enable coverage testing (requires gcc
891 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
893 AS_IF([test "x$enable_conformance" = "xno"],
894 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
895 [AC_MSG_RESULT([yes])]
898 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
899 GCOV_LDFLAGS="-lgcov"
901 [AC_MSG_RESULT([no])]
904 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
905 AC_SUBST([GCOV_CFLAGS])
906 AC_SUBST([GCOV_LDFLAGS])
908 dnl === Enable strict compiler flags ==========================================
910 # use strict compiler flags only when building from git; the rules for
911 # distcheck will take care of turning this on when making a release
912 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
913 AC_ARG_ENABLE([maintainer-flags],
914 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
915 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
917 [enable_maintainer_flags=maintainer_flags_default])
919 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
920 -Wall -Wcast-align -Wuninitialized
921 -Wno-strict-aliasing -Wempty-body -Wformat
922 -Wformat-security -Winit-self
923 -Wdeclaration-after-statement -Wvla
926 AS_CASE([$enable_maintainer_flags],
929 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
938 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
939 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
943 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
946 # strip leading spaces
947 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
948 AC_SUBST(MAINTAINER_CFLAGS)
950 dnl === Dependencies, compiler flags and linker libraries =====================
951 # strip leading space
952 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
954 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $IMAGE_PC_FILES $BACKEND_PC_FILES"
955 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
956 AC_SUBST(CLUTTER_REQUIRES)
958 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
959 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
960 AC_SUBST(CLUTTER_CFLAGS)
961 AC_SUBST(CLUTTER_LIBS)
964 dnl === GObject-Introspection check ===========================================
966 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
968 dnl === GTK Doc check =========================================================
970 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
972 # we don't want to build the documentation from a Git clone unless we
973 # explicitly tell configure to do so; this allows avoiding to recurse into
974 # the documentation directory when building Clutter inside Poky for a
975 # target device that doesn't have gtk-doc installed. for reference
976 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
978 # we use autogen.sh as it exists only inside the Git clones, and it
979 # is not packaged into tarballs.
980 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
982 # prefixes for fixing gtk-doc references
983 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
984 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
985 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
986 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
987 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
988 AC_SUBST(CAIRO_PREFIX)
989 AC_SUBST(GLIB_PREFIX)
990 AC_SUBST(PANGO_PREFIX)
991 AC_SUBST(COGL_PREFIX)
994 dnl === Manual ================================================================
996 AC_ARG_ENABLE([docs],
997 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
998 [Build optional documentation; requires xsltproc and jw.])],
999 [enable_docs=$enableval],
1003 AS_IF([test "x$enable_docs" = "xyes"],
1005 AC_PATH_PROG(JW, [jw], [no])
1006 AS_IF([test "x$JW" = "xno"],
1008 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1012 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1013 AS_IF([test "x$XSLTPROC" = "xno"],
1015 AC_MSG_ERROR([xsltproc not found])
1020 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1021 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1023 dnl === I18N ==================================================================
1025 AM_GNU_GETTEXT_VERSION([0.17])
1026 AM_GNU_GETTEXT([external])
1028 GETTEXT_PACKAGE="clutter-1.0"
1029 AC_SUBST(GETTEXT_PACKAGE)
1030 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1031 ["$GETTEXT_PACKAGE"],
1032 [The prefix for our gettext translation domains.])
1035 dnl ===========================================================================
1043 build/autotools/Makefile
1044 build/mingw/Makefile
1045 build/win32/Makefile
1046 build/win32/vs9/Makefile
1047 build/win32/vs10/Makefile
1050 clutter/clutter-config.h
1051 clutter/clutter-version.h
1052 clutter/clutter-version.h.win32
1053 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1055 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1057 clutter/cex100/clutter-cex100.h
1060 tests/accessibility/Makefile
1061 tests/conform/Makefile
1062 tests/conform/test-launcher.sh
1064 tests/interactive/Makefile
1065 tests/interactive/wrapper.sh
1066 tests/micro-bench/Makefile
1067 tests/performance/Makefile
1070 doc/reference/Makefile
1071 doc/reference/clutter/Makefile
1072 doc/reference/clutter/clutter-docs.xml
1073 doc/reference/cally/Makefile
1074 doc/reference/cally/cally-docs.xml
1076 doc/cookbook/Makefile
1077 doc/cookbook/clutter-cookbook.xml
1078 doc/cookbook/examples/Makefile
1085 dnl === Summary ===============================================================
1088 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1093 echo " Prefix: ${prefix}"
1094 echo " Libdir: ${libdir}"
1095 echo " Sysconfdir: ${sysconfdir}"
1097 # Compiler/Debug related flags
1099 echo " • Compiler options:"
1100 echo " Clutter debug level: ${enable_debug}"
1101 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1102 echo " Profiling enabled: ${enable_profile}"
1103 echo " Enable coverage tests: ${enable_gcov}"
1104 echo " Enable deprecated symbols: ${enable_deprecated}"
1108 echo " • Documentation:"
1109 echo " Build API Reference: ${enable_gtk_doc}"
1110 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1115 echo " Build introspection data: ${enable_introspection}"
1116 echo " Build conformance test suite: ${enable_conformance}"
1117 echo " Build X11-specific tests: ${x11_tests}"
1119 # Clutter backend related flags
1121 echo " • Clutter Backends:"
1123 if test "x$experimental_backend" = "xno"; then
1124 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1126 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1129 if test "x$experimental_input_backend" = "xno"; then
1130 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1132 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1135 if test "x$SUPPORT_X11" = "x1"; then
1137 echo " - X11 backend options:"
1138 echo " Enabled extensions: ${X11_EXTS}"
1139 echo " Build X11-specific tests: ${x11_tests}"
1142 if test "x$SUPPORT_CEX100" = "x1"; then
1144 echo " - CEx100 backend options:"
1145 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1148 echo " Wayland compositor features: ${SUPPORT_WAYLAND_COMPOSITOR}"
1152 # General warning about experimental features
1153 if test "x$experimental_backend" = "xyes"; then
1155 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1156 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1158 echo " The stability of your build might be affected by one or more"
1159 echo " experimental backends or experimental and unsupported features"
1161 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1162 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"