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 # backend specific pkg-config files
207 dnl === Clutter windowing system backend ======================================
209 AC_ARG_ENABLE([x11-backend],
210 [AS_HELP_STRING([--enable-x11-backend=@<:@yes/no@:>@], [Enable the X11 backend (default=check)])],
211 [enable_x11=$enableval],
213 AC_ARG_ENABLE([win32-backend],
214 [AS_HELP_STRING([--enable-win32-backend=@<:@yes/no@:>@], [Enable the Windows backend (default=check)])],
215 [enable_win32=$enableval],
216 [enable_win32=check])
217 AC_ARG_ENABLE([quartz-backend],
218 [AS_HELP_STRING([--enable-quartz-backend=@<:@yes/no@:>@], [Enable the OS X backend (default=check)])],
219 [enable_osx=$enableval],
221 AC_ARG_ENABLE([gdk-backend],
222 [AS_HELP_STRING([--enable-gdk-backend=@<:@yes/no@:>@], [Enable the GDK backend (default=check)])],
223 [enable_gdk=$enableval],
225 AC_ARG_ENABLE([wayland-backend],
226 [AS_HELP_STRING([--enable-wayland-backend=@<:@yes/no@:>@], [Enable the Wayland client backend (default=no)])],
227 [enable_wayland=$enableval],
229 AC_ARG_ENABLE([egl-backend],
230 [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
231 [enable_egl=$enableval],
233 AC_ARG_ENABLE([cex100-backend],
234 [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
235 [enable_cex100=$enableval],
238 dnl Define default values
239 AS_IF([test "x$enable_x11" = "xcheck"],
241 AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
244 AS_IF([test "x$enable_win32" = "xcheck"],
246 AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
249 AS_IF([test "x$enable_osx" = "xcheck"],
251 AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
254 AS_IF([test "x$enable_gdk" = "xcheck"],
256 PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
259 dnl Per-backend rules
260 AS_IF([test "x$enable_x11" = "xyes"],
262 CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
263 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
269 # Mesa 7.3 added a GL pkg-config file, finally, but if a pkg-config
270 # file isn't found just add -lGL and hope for the best.
271 PKG_CHECK_EXISTS([gl],
272 [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"],
273 [FLAVOUR_LIBS="$FLAVOUR_LIBS -lGL"])
275 # We might fall back to DRM for sync-to-vblank on GLX
276 PKG_CHECK_EXISTS([libdrm],
278 AC_DEFINE([HAVE_DRM], [1], [Have libdrm support])
279 BACKEND_PC_FILES="$BACKEND_PC_FILES libdrm"
283 # we use fontconfig API and pango-fc when the fontconfig
284 # configuration changes
285 PKG_CHECK_EXISTS([pangoft2],
287 AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
288 BACKEND_PC_FILES="$BACKEND_PC_FILES pangoft2"
292 AC_DEFINE([HAVE_CLUTTER_GLX], [1], [Have the GLX backend])
295 AS_IF([test "x$enable_gdk" = "xyes"],
297 CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
298 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
303 BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
304 PKG_CHECK_EXISTS([gl], [BACKEND_PC_FILES="$BACKEND_PC_FILES gl"], [])
307 AS_IF([test "x$enable_wayland" = "xyes"],
309 CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
310 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
312 experimental_backend="yes"
316 PKG_CHECK_EXISTS([wayland-client xkbcommon],
317 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon"],
320 AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
323 dnl Note this is orthogonal to the client side support and you can
324 dnl use the Wayland compositor features with any of the clutter
325 dnl backends with corresponding Cogl support.
326 AC_ARG_ENABLE([wayland-compositor],
327 [AS_HELP_STRING([--enable-wayland-compositor=@<:@yes/no@:>@],
328 [Enable Wayland compositor features (default=no)])],
330 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
331 [enable_wayland_compositor=yes],
332 [enable_wayland_compositor=no])
335 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
337 PKG_CHECK_EXISTS([wayland-server],
338 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
339 SUPPORT_WAYLAND_COMPOSITOR=1
340 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
341 #define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
342 AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have Wayland compositor support])
345 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
347 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
349 # The wayland headers introduce so much symbol shadowing that build
350 # logs become incomprehensible with -Wshadow so we only use it for
351 # non-wayland builds.
352 MAINTAINER_COMPILER_FLAGS="-Wshadow"
355 AS_IF([test "x$enable_cex100" = "xyes"],
357 CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
359 experimental_backend="yes"
365 AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
367 AS_IF([test "x$have_gdl" = "xno"],
369 AC_CHECK_HEADERS([CE4100/libgdl.h],
371 FLAVOUR_CFLAGS="-I/usr/include/CE4100"
373 CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
377 AS_IF([test "x$have_gdl" = "xno"],
378 [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
380 AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
382 FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
384 AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
385 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
386 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
389 AS_IF([test "x$enable_egl" = "xyes"],
391 CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
393 experimental_backend="yes"
398 # if Mesa has support for egl, we can use it as well
399 PKG_CHECK_EXISTS([egl],
401 BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
405 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
406 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
408 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
410 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
413 AS_IF([test "x$enable_osx" = "xyes"],
415 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
416 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
418 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
420 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
425 AS_IF([test "x$enable_win32" = "xyes"],
427 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
428 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
430 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
432 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
433 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
435 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
440 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
442 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
445 # additional input backends
447 AC_ARG_ENABLE([tslib-input],
448 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
449 [enable_tslib=$enableval],
451 AC_ARG_ENABLE([evdev-input],
452 [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
453 [enable_evdev=$enableval],
456 AS_IF([test "x$enable_tslib" = "xyes"],
458 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
459 AS_IF([test "x$have_tslib" = "xyes"],
461 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
462 experimental_input_backend="yes"
463 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
468 AS_IF([test "x$enable_evdev" = "xyes"],
470 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
471 AS_IF([test "x$have_evdev" = "xyes"],
473 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
474 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
475 experimental_input_backend="yes"
476 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
481 # conditionals for use in automake files...
482 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
483 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
484 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
485 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
486 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
487 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
488 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_CEX100" = "x1"])
489 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
490 AM_CONDITIONAL(SUPPORT_STUB, [test "x$SUPPORT_WIN32" = "x1" -o \
491 "x$SUPPORT_OSX" = "x1"])
493 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
494 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
495 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
496 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
498 dnl Instead of using AM_CFLAGS to ensure
499 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
500 dnl and cogl code we use a define in config.h instead. This helps ensure
501 dnl other tools such as glib-mkenums and gir-scanner don't end up
502 dnl using the define also.
503 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
505 dnl strip leading spaces
506 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
507 AC_SUBST(CLUTTER_BACKENDS)
509 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
510 AC_SUBST(CLUTTER_INPUT_BACKENDS)
514 dnl === Clutter configuration =================================================
517 AS_IF([test "x$SUPPORT_X11" = "x1"],
518 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
519 #define CLUTTER_WINDOWING_X11 \"x11\"
520 #define CLUTTER_INPUT_X11 \"x11\""])
521 AS_IF([test "x$SUPPORT_GDK" = "x1"],
522 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
523 #define CLUTTER_WINDOWING_GDK \"gdk\"
524 #define CLUTTER_INPUT_GDK \"gdk\""])
525 AS_IF([test "x$SUPPORT_GLX" = "x1"],
526 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
527 #define CLUTTER_WINDOWING_GLX \"glx\""])
528 AS_IF([test "x$SUPPORT_EGL" = "x1"],
529 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
530 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
531 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
532 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
533 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
534 AS_IF([test "x$SUPPORT_OSX" = "x1"],
535 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
536 #define CLUTTER_WINDOWING_OSX \"osx\"
537 #define CLUTTER_INPUT_OSX \"osx\""])
538 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
539 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
540 #define CLUTTER_WINDOWING_WIN32 \"win32\"
541 #define CLUTTER_INPUT_WIN32 \"win32\""])
542 AS_IF([test "x$SUPPORT_CEX100" = "x1"],
543 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
544 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
545 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
546 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
547 #define CLUTTER_INPUT_EVDEV \"evdev\""])
548 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
549 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
550 #define CLUTTER_INPUT_TSLIB \"tslib\""])
551 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
552 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
553 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
555 # the 'null' input backend is special
556 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
557 #define CLUTTER_INPUT_NULL \"null\""
559 AC_SUBST([CLUTTER_CONFIG_DEFINES])
561 dnl === Clutter substitutions kept for backwards compatibility ================
562 AC_SUBST([CLUTTER_WINSYS], [deprecated])
563 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
564 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
565 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
566 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
567 AC_SUBST([CLUTTER_COGL], [deprecated])
568 AC_SUBST([COGL_DRIVER], [deprecated])
570 dnl === Image loading backend =================================================
573 dnl === X11 checks, only for X11-based backends ===============================
578 AS_IF([test "x$SUPPORT_X11" = "x1"],
580 # base X11 includes and libraries
581 AC_MSG_CHECKING([for X11])
583 # start with pkg-config
584 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
585 AS_IF([test "x$have_x11" = "xyes"],
589 # we actually need to ask for CFLAGS and LIBS
590 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
591 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
593 AC_MSG_RESULT([found])
596 # no pkg-config, let's go old school
599 AS_IF([test "x$no_x" = "xyes"],
600 [AC_MSG_ERROR([No X11 Libraries found])],
602 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
603 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
605 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
606 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
608 AC_MSG_RESULT([found])
615 AC_MSG_CHECKING([for XEXT extension])
616 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
617 AS_IF([test "x$have_xext" = "xyes"],
619 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
621 X11_LIBS="$X11_LIBS -lXext"
622 X11_PC_FILES="$X11_PC_FILES xext"
623 X11_EXTS="$X11_EXTS xext"
625 AC_MSG_RESULT([found])
627 [AC_MSG_ERROR([Not found])]
631 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
632 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
633 AS_IF([test "x$have_xfixes" = "xyes"],
635 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
637 X11_LIBS="$X11_LIBS -lXfixes"
638 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
639 X11_EXTS="$X11_EXTS xfixes"
641 AC_MSG_RESULT([found])
643 [AC_MSG_ERROR([Not found])]
647 AC_MSG_CHECKING([for XDAMAGE extension])
648 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
649 AS_IF([test "x$have_xdamage" = "xyes"],
651 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
653 X11_LIBS="$X11_LIBS -lXdamage"
654 X11_PC_FILES="$X11_PC_FILES xdamage"
655 X11_EXTS="$X11_EXTS xdamage"
657 AC_MSG_RESULT([found])
659 [AC_MSG_ERROR([not found])]
662 # XCOMPOSITE (optional)
663 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
664 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
665 AS_IF([test "x$have_xcomposite" = "xyes"],
667 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
669 X11_LIBS="$X11_LIBS -lXcomposite"
670 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
671 X11_EXTS="$X11_EXTS xcomposite"
673 AC_MSG_RESULT([found])
675 [AC_MSG_ERROR([not found])]
678 # X Generic Extensions (optional)
679 clutter_save_CPPFLAGS="$CPPFLAGS"
680 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
682 clutter_save_LIBS="$LIBS"
683 LIBS="$LIBS $X11_LIBS"
686 AC_CHECK_FUNC([XGetEventData],
688 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
690 X11_EXTS="$X11_EXTS xge"
693 CPPFLAGS="$clutter_save_CPPFLAGS"
694 LIBS="$clutter_save_LIBS"
697 AC_ARG_ENABLE([xinput],
698 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
702 AS_IF([test "x$enable_xinput" = "xyes"],
704 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
710 AS_CASE([$have_xinput],
714 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
717 AC_DEFINE([HAVE_XINPUT_2],
719 [Define to 1 if XI2 is available])
723 AC_DEFINE([HAVE_XINPUT],
725 [Define to 1 if XInput is available])
728 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
729 X11_PC_FILES="$X11_PC_FILES xi"
730 X11_EXTS="$X11_EXTS xi"
737 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
741 clutter_save_CPPFLAGS="$CPPFLAGS"
742 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
744 clutter_save_LIBS="$LIBS"
745 LIBS="$LIBS $X11_LIBS"
748 AC_CHECK_FUNC([XkbQueryExtension],
750 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
753 X11_EXTS="$X11_EXTS xkb"
756 CPPFLAGS="$clutter_save_CPPFLAGS"
757 LIBS="$clutter_save_LIBS"
760 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
761 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
762 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
766 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
767 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
769 X11_EXTS=${X11_EXTS#* }
773 dnl === Enable debug level ====================================================
775 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
776 AC_ARG_ENABLE([debug],
777 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
778 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
780 [enable_debug=debug_default])
782 AS_CASE([$enable_debug],
786 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
787 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
791 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
794 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
796 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
799 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
801 dnl === Enable deprecation guards ==================================================
803 m4_define([deprecated_default],
804 [m4_if(m4_eval(clutter_minor_version % 2),
809 AC_ARG_ENABLE([deprecated],
810 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
811 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
813 [enable_deprecated=deprecated_default])
815 AS_CASE([$enable_deprecated],
819 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
824 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
827 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
830 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
833 dnl === Conformance test suite ================================================
835 AC_ARG_ENABLE([conformance],
836 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
837 [Build conformance test suite @<:@default=yes@:>@])],
839 [enable_conformance=yes])
841 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
843 dnl === Profiling =============================================================
845 m4_define([profile_default], [no])
846 AC_ARG_ENABLE(profile,
847 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
848 [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@:>@]),
850 [enable_profile=profile_default])
852 AS_CASE([$enable_profile],
856 AS_IF([test "x$GCC" = "xyes"],
858 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
859 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
860 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
862 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
865 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
871 CLUTTER_PROFILE_CFLAGS=""
872 CLUTTER_PROFILE_LDFLAGS=""
875 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
877 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
878 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
879 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
881 dnl === Coverage report =======================================================
883 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
885 AC_MSG_CHECKING([whether to build with gcov testing])
887 AC_ARG_ENABLE([gcov],
888 [AS_HELP_STRING([--enable-gcov],
889 [Whether to enable coverage testing (requires gcc
894 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
896 AS_IF([test "x$enable_conformance" = "xno"],
897 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
898 [AC_MSG_RESULT([yes])]
901 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
902 GCOV_LDFLAGS="-lgcov"
904 [AC_MSG_RESULT([no])]
907 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
908 AC_SUBST([GCOV_CFLAGS])
909 AC_SUBST([GCOV_LDFLAGS])
911 dnl === Enable strict compiler flags ==========================================
913 # use strict compiler flags only when building from git; the rules for
914 # distcheck will take care of turning this on when making a release
915 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
916 AC_ARG_ENABLE([maintainer-flags],
917 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
918 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
920 [enable_maintainer_flags=maintainer_flags_default])
922 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
923 -Wall -Wcast-align -Wuninitialized
924 -Wno-strict-aliasing -Wempty-body -Wformat
925 -Wformat-security -Winit-self
926 -Wdeclaration-after-statement -Wvla
929 AS_CASE([$enable_maintainer_flags],
932 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
941 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
942 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
946 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
949 # strip leading spaces
950 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
951 AC_SUBST(MAINTAINER_CFLAGS)
953 dnl === Dependencies, compiler flags and linker libraries =====================
954 # strip leading space
955 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
957 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $IMAGE_PC_FILES $BACKEND_PC_FILES"
958 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
959 AC_SUBST(CLUTTER_REQUIRES)
961 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
962 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
963 AC_SUBST(CLUTTER_CFLAGS)
964 AC_SUBST(CLUTTER_LIBS)
967 dnl === GObject-Introspection check ===========================================
969 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
971 dnl === GTK Doc check =========================================================
973 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
975 # we don't want to build the documentation from a Git clone unless we
976 # explicitly tell configure to do so; this allows avoiding to recurse into
977 # the documentation directory when building Clutter inside Poky for a
978 # target device that doesn't have gtk-doc installed. for reference
979 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
981 # we use autogen.sh as it exists only inside the Git clones, and it
982 # is not packaged into tarballs.
983 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
985 # prefixes for fixing gtk-doc references
986 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
987 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
988 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
989 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
990 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
991 AC_SUBST(CAIRO_PREFIX)
992 AC_SUBST(GLIB_PREFIX)
993 AC_SUBST(PANGO_PREFIX)
994 AC_SUBST(COGL_PREFIX)
997 dnl === Manual ================================================================
999 AC_ARG_ENABLE([docs],
1000 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1001 [Build optional documentation; requires xsltproc and jw.])],
1002 [enable_docs=$enableval],
1006 AS_IF([test "x$enable_docs" = "xyes"],
1008 AC_PATH_PROG(JW, [jw], [no])
1009 AS_IF([test "x$JW" = "xno"],
1011 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1015 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1016 AS_IF([test "x$XSLTPROC" = "xno"],
1018 AC_MSG_ERROR([xsltproc not found])
1023 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1024 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1026 dnl === I18N ==================================================================
1028 AM_GNU_GETTEXT_VERSION([0.17])
1029 AM_GNU_GETTEXT([external])
1031 GETTEXT_PACKAGE="clutter-1.0"
1032 AC_SUBST(GETTEXT_PACKAGE)
1033 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1034 ["$GETTEXT_PACKAGE"],
1035 [The prefix for our gettext translation domains.])
1038 dnl ===========================================================================
1046 build/autotools/Makefile
1047 build/mingw/Makefile
1048 build/win32/Makefile
1049 build/win32/vs9/Makefile
1050 build/win32/vs10/Makefile
1053 clutter/clutter-config.h
1054 clutter/clutter-version.h
1055 clutter/clutter-version.h.win32
1056 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1058 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1060 clutter/cex100/clutter-cex100.h
1063 tests/accessibility/Makefile
1064 tests/conform/Makefile
1065 tests/conform/test-launcher.sh
1067 tests/interactive/Makefile
1068 tests/interactive/wrapper.sh
1069 tests/micro-bench/Makefile
1070 tests/performance/Makefile
1073 doc/reference/Makefile
1074 doc/reference/clutter/Makefile
1075 doc/reference/clutter/clutter-docs.xml
1076 doc/reference/cally/Makefile
1077 doc/reference/cally/cally-docs.xml
1079 doc/cookbook/Makefile
1080 doc/cookbook/clutter-cookbook.xml
1081 doc/cookbook/examples/Makefile
1088 dnl === Summary ===============================================================
1091 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1096 echo " Prefix: ${prefix}"
1097 echo " Libdir: ${libdir}"
1098 echo " Sysconfdir: ${sysconfdir}"
1100 # Compiler/Debug related flags
1102 echo " • Compiler options:"
1103 echo " Clutter debug level: ${enable_debug}"
1104 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1105 echo " Profiling enabled: ${enable_profile}"
1106 echo " Enable coverage tests: ${enable_gcov}"
1107 echo " Enable deprecated symbols: ${enable_deprecated}"
1111 echo " • Documentation:"
1112 echo " Build API Reference: ${enable_gtk_doc}"
1113 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1118 echo " Build introspection data: ${enable_introspection}"
1119 echo " Build conformance test suite: ${enable_conformance}"
1120 echo " Build X11-specific tests: ${x11_tests}"
1122 # Clutter backend related flags
1124 echo " • Clutter Backends:"
1126 if test "x$experimental_backend" = "xno"; then
1127 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1129 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1132 if test "x$experimental_input_backend" = "xno"; then
1133 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1135 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1138 if test "x$SUPPORT_X11" = "x1"; then
1140 echo " - X11 backend options:"
1141 echo " Enabled extensions: ${X11_EXTS}"
1142 echo " Build X11-specific tests: ${x11_tests}"
1145 if test "x$SUPPORT_CEX100" = "x1"; then
1147 echo " - CEx100 backend options (WARNING: Experimental):"
1148 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1151 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1153 echo " - Wayland compositor support enabled (WARNING: Experimental)"
1158 # General warning about experimental features
1159 if test "x$experimental_backend" = "xyes"; then
1161 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1162 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1164 echo " The stability of your build might be affected by one or more"
1165 echo " experimental backends or experimental and unsupported features"
1167 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1168 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"