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 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], [Enable Wayland compositor features])],
329 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
330 [enable_wayland_compositor=yes],
331 [enable_wayland_compositor=no])
334 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
336 PKG_CHECK_EXISTS([wayland-server],
337 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
338 SUPPORT_WAYLAND_COMPOSITOR=1
339 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
340 #define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
341 AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have wayland compositor support])
343 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
345 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
347 # The wayland headers introduce so much symbol shadowing that build
348 # logs become incomprehensible with -Wshadow so we only use it for
349 # non-wayland builds.
350 MAINTAINER_COMPILER_FLAGS="-Wshadow"
353 AS_IF([test "x$enable_cex100" = "xyes"],
355 CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
357 experimental_backend="yes"
360 SUPPORT_EGL_PLATFORM_GDL=1
363 AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
365 AS_IF([test "x$have_gdl" = "xno"],
367 AC_CHECK_HEADERS([CE4100/libgdl.h],
369 FLAVOUR_CFLAGS="-I/usr/include/CE4100"
371 CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
375 AS_IF([test "x$have_gdl" = "xno"],
376 [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
378 AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
380 FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
382 AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
383 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
384 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
387 AS_IF([test "x$enable_egl" = "xyes"],
389 CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
391 experimental_backend="yes"
396 # if Mesa has support for egl, we can use it as well
397 PKG_CHECK_EXISTS([egl],
399 BACKEND_PC_FILES="$BACKEND_PC_FILES egl"
403 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
404 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
406 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
408 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
411 AS_IF([test "x$enable_osx" = "xyes"],
413 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
414 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
416 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
418 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
423 AS_IF([test "x$enable_win32" = "xyes"],
425 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
426 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
428 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
430 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
431 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
433 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
438 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
440 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
443 # additional input backends
445 AC_ARG_ENABLE([tslib-input],
446 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
447 [enable_tslib=$enableval],
449 AC_ARG_ENABLE([evdev-input],
450 [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
451 [enable_evdev=$enableval],
454 AS_IF([test "x$enable_tslib" = "xyes"],
456 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
457 AS_IF([test "x$have_tslib" = "xyes"],
459 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
460 experimental_input_backend="yes"
461 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
466 AS_IF([test "x$enable_evdev" = "xyes"],
468 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
469 AS_IF([test "x$have_evdev" = "xyes"],
471 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
472 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
473 experimental_input_backend="yes"
474 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
479 # conditionals for use in automake files...
480 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
481 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
482 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
483 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
484 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
485 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
486 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"])
487 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
488 AM_CONDITIONAL(SUPPORT_STUB, [test "x$SUPPORT_WIN32" = "x1" -o \
489 "x$SUPPORT_OSX" = "x1"])
491 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
492 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
493 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
494 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
496 dnl Instead of using AM_CFLAGS to ensure
497 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
498 dnl and cogl code we use a define in config.h instead. This helps ensure
499 dnl other tools such as glib-mkenums and gir-scanner don't end up
500 dnl using the define also.
501 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
503 dnl strip leading spaces
504 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
505 AC_SUBST(CLUTTER_BACKENDS)
507 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
508 AC_SUBST(CLUTTER_INPUT_BACKENDS)
512 dnl === Clutter configuration =================================================
515 AS_IF([test "x$SUPPORT_X11" = "x1"],
516 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
517 #define CLUTTER_WINDOWING_X11 \"x11\"
518 #define CLUTTER_INPUT_X11 \"x11\""])
519 AS_IF([test "x$SUPPORT_GDK" = "x1"],
520 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
521 #define CLUTTER_WINDOWING_GDK \"gdk\"
522 #define CLUTTER_INPUT_GDK \"gdk\""])
523 AS_IF([test "x$SUPPORT_GLX" = "x1"],
524 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
525 #define CLUTTER_WINDOWING_GLX \"glx\""])
526 AS_IF([test "x$SUPPORT_EGL" = "x1"],
527 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
528 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
529 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
530 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
531 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
532 AS_IF([test "x$SUPPORT_OSX" = "x1"],
533 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
534 #define CLUTTER_WINDOWING_OSX \"osx\"
535 #define CLUTTER_INPUT_OSX \"osx\""])
536 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
537 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
538 #define CLUTTER_WINDOWING_WIN32 \"win32\"
539 #define CLUTTER_INPUT_WIN32 \"win32\""])
540 AS_IF([test "x$SUPPORT_EGL_PLATFORM_GDL" = "x1"],
541 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
542 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
543 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
544 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
545 #define CLUTTER_INPUT_EVDEV \"evdev\""])
546 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
547 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
548 #define CLUTTER_INPUT_TSLIB \"tslib\""])
549 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
550 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
551 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
553 # the 'null' input backend is special
554 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
555 #define CLUTTER_INPUT_NULL \"null\""
557 AC_SUBST([CLUTTER_CONFIG_DEFINES])
559 dnl === Clutter substitutions kept for backwards compatibility ================
560 AC_SUBST([CLUTTER_WINSYS], [deprecated])
561 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
562 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
563 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
564 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
565 AC_SUBST([CLUTTER_COGL], [deprecated])
566 AC_SUBST([COGL_DRIVER], [deprecated])
568 dnl === Image loading backend =================================================
571 dnl === X11 checks, only for X11-based backends ===============================
576 AS_IF([test "x$SUPPORT_X11" = "x1"],
578 # base X11 includes and libraries
579 AC_MSG_CHECKING([for X11])
581 # start with pkg-config
582 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
583 AS_IF([test "x$have_x11" = "xyes"],
587 # we actually need to ask for CFLAGS and LIBS
588 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
589 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
591 AC_MSG_RESULT([found])
594 # no pkg-config, let's go old school
597 AS_IF([test "x$no_x" = "xyes"],
598 [AC_MSG_ERROR([No X11 Libraries found])],
600 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
601 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
603 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
604 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
606 AC_MSG_RESULT([found])
613 AC_MSG_CHECKING([for XEXT extension])
614 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
615 AS_IF([test "x$have_xext" = "xyes"],
617 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
619 X11_LIBS="$X11_LIBS -lXext"
620 X11_PC_FILES="$X11_PC_FILES xext"
621 X11_EXTS="$X11_EXTS xext"
623 AC_MSG_RESULT([found])
625 [AC_MSG_ERROR([Not found])]
629 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
630 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
631 AS_IF([test "x$have_xfixes" = "xyes"],
633 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
635 X11_LIBS="$X11_LIBS -lXfixes"
636 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
637 X11_EXTS="$X11_EXTS xfixes"
639 AC_MSG_RESULT([found])
641 [AC_MSG_ERROR([Not found])]
645 AC_MSG_CHECKING([for XDAMAGE extension])
646 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
647 AS_IF([test "x$have_xdamage" = "xyes"],
649 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
651 X11_LIBS="$X11_LIBS -lXdamage"
652 X11_PC_FILES="$X11_PC_FILES xdamage"
653 X11_EXTS="$X11_EXTS xdamage"
655 AC_MSG_RESULT([found])
657 [AC_MSG_ERROR([not found])]
660 # XCOMPOSITE (optional)
661 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
662 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
663 AS_IF([test "x$have_xcomposite" = "xyes"],
665 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
667 X11_LIBS="$X11_LIBS -lXcomposite"
668 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
669 X11_EXTS="$X11_EXTS xcomposite"
671 AC_MSG_RESULT([found])
673 [AC_MSG_ERROR([not found])]
676 # X Generic Extensions (optional)
677 clutter_save_CPPFLAGS="$CPPFLAGS"
678 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
680 clutter_save_LIBS="$LIBS"
681 LIBS="$LIBS $X11_LIBS"
684 AC_CHECK_FUNC([XGetEventData],
686 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
688 X11_EXTS="$X11_EXTS xge"
691 CPPFLAGS="$clutter_save_CPPFLAGS"
692 LIBS="$clutter_save_LIBS"
695 AC_ARG_ENABLE([xinput],
696 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
700 AS_IF([test "x$enable_xinput" = "xyes"],
702 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
708 AS_CASE([$have_xinput],
712 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
715 AC_DEFINE([HAVE_XINPUT_2],
717 [Define to 1 if XI2 is available])
721 AC_DEFINE([HAVE_XINPUT],
723 [Define to 1 if XInput is available])
726 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
727 X11_PC_FILES="$X11_PC_FILES xi"
728 X11_EXTS="$X11_EXTS xi"
735 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
739 clutter_save_CPPFLAGS="$CPPFLAGS"
740 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
742 clutter_save_LIBS="$LIBS"
743 LIBS="$LIBS $X11_LIBS"
746 AC_CHECK_FUNC([XkbQueryExtension],
748 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
751 X11_EXTS="$X11_EXTS xkb"
754 CPPFLAGS="$clutter_save_CPPFLAGS"
755 LIBS="$clutter_save_LIBS"
758 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
759 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
760 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
764 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
765 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
767 X11_EXTS=${X11_EXTS#* }
771 dnl === Enable debug level ====================================================
773 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
774 AC_ARG_ENABLE([debug],
775 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
776 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
778 [enable_debug=debug_default])
780 AS_CASE([$enable_debug],
784 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
785 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
789 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
792 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
794 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
797 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
799 dnl === Enable deprecation guards ==================================================
801 m4_define([deprecated_default],
802 [m4_if(m4_eval(clutter_minor_version % 2),
807 AC_ARG_ENABLE([deprecated],
808 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
809 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
811 [enable_deprecated=deprecated_default])
813 AS_CASE([$enable_deprecated],
817 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
822 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
825 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
828 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
831 dnl === Conformance test suite ================================================
833 AC_ARG_ENABLE([conformance],
834 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
835 [Build conformance test suite @<:@default=yes@:>@])],
837 [enable_conformance=yes])
839 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
841 dnl === Profiling =============================================================
843 m4_define([profile_default], [no])
844 AC_ARG_ENABLE(profile,
845 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
846 [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@:>@]),
848 [enable_profile=profile_default])
850 AS_CASE([$enable_profile],
854 AS_IF([test "x$GCC" = "xyes"],
856 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
857 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
858 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
860 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
863 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
869 CLUTTER_PROFILE_CFLAGS=""
870 CLUTTER_PROFILE_LDFLAGS=""
873 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
875 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
876 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
877 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
879 dnl === Coverage report =======================================================
881 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
883 AC_MSG_CHECKING([whether to build with gcov testing])
885 AC_ARG_ENABLE([gcov],
886 [AS_HELP_STRING([--enable-gcov],
887 [Whether to enable coverage testing (requires gcc
892 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
894 AS_IF([test "x$enable_conformance" = "xno"],
895 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
896 [AC_MSG_RESULT([yes])]
899 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
900 GCOV_LDFLAGS="-lgcov"
902 [AC_MSG_RESULT([no])]
905 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
906 AC_SUBST([GCOV_CFLAGS])
907 AC_SUBST([GCOV_LDFLAGS])
909 dnl === Enable strict compiler flags ==========================================
911 # use strict compiler flags only when building from git; the rules for
912 # distcheck will take care of turning this on when making a release
913 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
914 AC_ARG_ENABLE([maintainer-flags],
915 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
916 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
918 [enable_maintainer_flags=maintainer_flags_default])
920 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
921 -Wall -Wcast-align -Wuninitialized
922 -Wno-strict-aliasing -Wempty-body -Wformat
923 -Wformat-security -Winit-self
924 -Wdeclaration-after-statement -Wvla
927 AS_CASE([$enable_maintainer_flags],
930 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
939 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
940 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
944 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
947 # strip leading spaces
948 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
949 AC_SUBST(MAINTAINER_CFLAGS)
951 dnl === Dependencies, compiler flags and linker libraries =====================
952 # strip leading space
953 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
955 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $IMAGE_PC_FILES $BACKEND_PC_FILES"
956 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
957 AC_SUBST(CLUTTER_REQUIRES)
959 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
960 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
961 AC_SUBST(CLUTTER_CFLAGS)
962 AC_SUBST(CLUTTER_LIBS)
965 dnl === GObject-Introspection check ===========================================
967 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
969 dnl === GTK Doc check =========================================================
971 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
973 # we don't want to build the documentation from a Git clone unless we
974 # explicitly tell configure to do so; this allows avoiding to recurse into
975 # the documentation directory when building Clutter inside Poky for a
976 # target device that doesn't have gtk-doc installed. for reference
977 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
979 # we use autogen.sh as it exists only inside the Git clones, and it
980 # is not packaged into tarballs.
981 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
983 # prefixes for fixing gtk-doc references
984 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
985 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
986 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
987 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
988 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
989 AC_SUBST(CAIRO_PREFIX)
990 AC_SUBST(GLIB_PREFIX)
991 AC_SUBST(PANGO_PREFIX)
992 AC_SUBST(COGL_PREFIX)
995 dnl === Manual ================================================================
997 AC_ARG_ENABLE([docs],
998 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
999 [Build optional documentation; requires xsltproc and jw.])],
1000 [enable_docs=$enableval],
1004 AS_IF([test "x$enable_docs" = "xyes"],
1006 AC_PATH_PROG(JW, [jw], [no])
1007 AS_IF([test "x$JW" = "xno"],
1009 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1013 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1014 AS_IF([test "x$XSLTPROC" = "xno"],
1016 AC_MSG_ERROR([xsltproc not found])
1021 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1022 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1024 dnl === I18N ==================================================================
1026 AM_GNU_GETTEXT_VERSION([0.17])
1027 AM_GNU_GETTEXT([external])
1029 GETTEXT_PACKAGE="clutter-1.0"
1030 AC_SUBST(GETTEXT_PACKAGE)
1031 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1032 ["$GETTEXT_PACKAGE"],
1033 [The prefix for our gettext translation domains.])
1036 dnl ===========================================================================
1044 build/autotools/Makefile
1045 build/mingw/Makefile
1046 build/win32/Makefile
1047 build/win32/vs9/Makefile
1048 build/win32/vs10/Makefile
1051 clutter/clutter-config.h
1052 clutter/clutter-version.h
1053 clutter/clutter-version.h.win32
1054 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1056 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1058 clutter/cex100/clutter-cex100.h
1061 tests/accessibility/Makefile
1062 tests/conform/Makefile
1063 tests/conform/test-launcher.sh
1065 tests/interactive/Makefile
1066 tests/interactive/wrapper.sh
1067 tests/micro-bench/Makefile
1068 tests/performance/Makefile
1071 doc/reference/Makefile
1072 doc/reference/clutter/Makefile
1073 doc/reference/clutter/clutter-docs.xml
1074 doc/reference/cally/Makefile
1075 doc/reference/cally/cally-docs.xml
1077 doc/cookbook/Makefile
1078 doc/cookbook/clutter-cookbook.xml
1079 doc/cookbook/examples/Makefile
1086 dnl === Summary ===============================================================
1089 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1094 echo " Prefix: ${prefix}"
1095 echo " Libdir: ${libdir}"
1096 echo " Sysconfdir: ${sysconfdir}"
1098 # Compiler/Debug related flags
1100 echo " • Compiler options:"
1101 echo " Clutter debug level: ${enable_debug}"
1102 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1103 echo " Profiling enabled: ${enable_profile}"
1104 echo " Enable coverage tests: ${enable_gcov}"
1105 echo " Enable deprecated symbols: ${enable_deprecated}"
1109 echo " • Documentation:"
1110 echo " Build API Reference: ${enable_gtk_doc}"
1111 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1116 echo " Build introspection data: ${enable_introspection}"
1117 echo " Build conformance test suite: ${enable_conformance}"
1118 echo " Build X11-specific tests: ${x11_tests}"
1120 # Clutter backend related flags
1122 echo " • Clutter Backends:"
1124 if test "x$experimental_backend" = "xno"; then
1125 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1127 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1130 if test "x$experimental_input_backend" = "xno"; then
1131 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1133 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1136 if test "x$SUPPORT_X11" = "x1"; then
1138 echo " - X11 backend options:"
1139 echo " Enabled extensions: ${X11_EXTS}"
1140 echo " Build X11-specific tests: ${x11_tests}"
1143 if test "x$SUPPORT_CEX100" = "x1"; then
1145 echo " - CEx100 backend options:"
1146 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1149 echo " Wayland compositor features: ${SUPPORT_WAYLAND_COMPOSITOR}"
1153 # General warning about experimental features
1154 if test "x$experimental_backend" = "xyes"; then
1156 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1157 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1159 echo " The stability of your build might be affected by one or more"
1160 echo " experimental backends or experimental and unsupported features"
1162 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1163 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"