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], [12])
15 # • for stable releases: increase the interface age by 1 for each release;
16 # if the API changes, set to 0. interface_age and binary_age are used to
17 # create the soname of the shared object:
19 # (<minor> * 100 + <micro>) - <interface_age>
21 # this allows using the same soname for different micro-releases in case
22 # no API was added or deprecated. for instance:
24 # clutter 1.2.0 -> 100 * 2 + 0 = 200, interface age = 0 -> 200
25 # clutter 1.2.2 -> 100 * 2 + 2 = 202, interface age = 2 -> 200
26 # clutter 1.2.4 -> 100 * 2 + 4 = 204, interface age = 4 -> 200
27 # [ API addition, deprecation ]
28 # clutter 1.2.6 -> 100 * 2 + 6 = 206, interface age = 0 -> 206
29 # clutter 1.2.8 -> 100 * 2 + 8 = 208, interface age = 2 -> 206
30 # clutter 1.2.10 -> 100 * 2 + 10 = 210, interface age = 4 -> 206
33 # • for development releases: keep clutter_interface_age to 0
34 m4_define([clutter_interface_age], [0])
36 m4_define([clutter_binary_age], [m4_eval(100 * clutter_minor_version + clutter_micro_version)])
38 m4_define([clutter_release_status],
39 [m4_if(m4_eval(clutter_micro_version % 2), [1], [git],
40 [m4_if(m4_eval(clutter_minor_version % 2), [1], [snapshot],
43 m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version])
45 # change this only when breaking the API
46 m4_define([clutter_api_version], [1.0])
52 [http://bugzilla.gnome.org/enter_bug.cgi?product=clutter],
54 [http://www.clutter-project.org])
56 AC_CONFIG_SRCDIR([clutter/clutter.h])
57 AC_CONFIG_HEADERS([config.h])
58 AC_CONFIG_AUX_DIR([build])
59 AC_CONFIG_MACRO_DIR([build/autotools])
61 AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
62 AM_SILENT_RULES([yes])
64 AC_SUBST([CLUTTER_MAJOR_VERSION], [clutter_major_version])
65 AC_SUBST([CLUTTER_MINOR_VERSION], [clutter_minor_version])
66 AC_SUBST([CLUTTER_MICRO_VERSION], [clutter_micro_version])
67 AC_SUBST([CLUTTER_VERSION], [clutter_version])
68 AC_SUBST([CLUTTER_API_VERSION], [clutter_api_version])
69 AC_SUBST([CLUTTER_API_VERSION_AM], [$CLUTTER_MAJOR_VERSION\_0])
70 AC_SUBST([CLUTTER_RELEASE_STATUS], [clutter_release_status])
72 m4_define([lt_current], [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)])
73 m4_define([lt_revision], [clutter_interface_age])
74 m4_define([lt_age], [m4_eval(clutter_binary_age - clutter_interface_age)])
75 CLUTTER_LT_CURRENT=lt_current
76 CLUTTER_LT_REV=lt_revision
78 CLUTTER_LT_VERSION="$CLUTTER_LT_CURRENT:$CLUTTER_LT_REV:$CLUTTER_LT_AGE"
79 CLUTTER_LT_LDFLAGS="-version-info $CLUTTER_LT_VERSION"
80 AC_SUBST([CLUTTER_LT_CURRENT], [lt_current])
81 AC_SUBST([CLUTTER_LT_REVISION], [lt_revision])
82 AC_SUBST([CLUTTER_LT_VERSION], [$CLUTTER_LT_VERSION])
86 dnl = Preliminary platform checks =============================================
94 AC_MSG_CHECKING([if building for some Win32 platform])
96 [*-*-mingw*|*-*-cygwin*],
98 CLUTTER_LT_LDFLAGS="$CLUTTER_LT_LDFLAGS -no-undefined"
109 AC_MSG_RESULT([$platform_win32])
111 AM_CONDITIONAL(OS_WIN32, [test "$platform_win32" = "yes"])
113 AC_CHECK_HEADER([OpenGL/gl.h], [platform_quartz=yes], [platform_quartz=no])
114 AM_CONDITIONAL(OS_QUARTZ, [test "$platform_quartz" = "yes"])
116 AC_CHECK_HEADER([GL/glx.h], [platform_glx=yes], [platform_glx=no])
117 AC_CHECK_LIB([GL], [glXCreateContext], [platform_glx=yes], [platform_glx=no])
118 AM_CONDITIONAL(OS_GLX, [test "$platform_glx" = "yes"])
119 AM_CONDITIONAL(OS_LINUX, [test "$platform_linux" = "yes"])
121 AC_SUBST(CLUTTER_LT_LDFLAGS)
125 dnl = Dependencies =========================================================
127 # Checks for programs.
130 # require libtool >= 2.2
132 LT_INIT([disable-static])
134 # Checks for header files.
137 # required versions for dependencies
138 m4_define([glib_req_version], [2.31.10])
139 m4_define([cogl_req_version], [1.9.6])
140 m4_define([json_glib_req_version], [0.12.0])
141 m4_define([atk_req_version], [2.1.5])
142 m4_define([cairo_req_version], [1.10])
143 m4_define([pango_req_version], [1.20])
144 m4_define([gi_req_version], [0.9.5])
145 m4_define([uprof_req_version], [0.3])
146 m4_define([gtk_doc_req_version], [1.15])
147 m4_define([xfixes_req_version], [3])
148 m4_define([xcomposite_req_version], [0.4])
149 m4_define([gdk_req_version], [3.0.0])
151 AC_SUBST([GLIB_REQ_VERSION], [glib_req_version])
152 AC_SUBST([COGL_REQ_VERSION], [cogl_req_version])
153 AC_SUBST([JSON_GLIB_REQ_VERSION], [json_glib_req_version])
154 AC_SUBST([ATK_REQ_VERSION], [atk_req_version])
155 AC_SUBST([CAIRO_REQ_VERSION], [cairo_req_version])
156 AC_SUBST([PANGO_REQ_VERSION], [pango_req_version])
157 AC_SUBST([GI_REQ_VERSION], [gi_req_version])
158 AC_SUBST([UPROF_REQ_VERSION], [uprof_req_version])
159 AC_SUBST([GTK_DOC_REQ_VERSION], [gtk_doc_req_version])
160 AC_SUBST([XFIXES_REQ_VERSION], [xfixes_req_version])
161 AC_SUBST([XCOMPOSITE_REQ_VERSION], [xcomposite_req_version])
162 AC_SUBST([GDK_REQ_VERSION], [gdk_req_version])
164 # Checks for typedefs, structures, and compiler characteristics.
165 AM_PATH_GLIB_2_0([glib_req_version],
167 [AC_MSG_ERROR([glib-2.0 is required])],
168 [gobject gthread gmodule-no-export])
170 # Check for -Bsymbolic-functions to avoid intra-library PLT jumps
171 AC_ARG_ENABLE([Bsymbolic],
172 [AS_HELP_STRING([--disable-Bsymbolic],
173 [Avoid linking with -Bsymbolic])],
176 saved_LDFLAGS="${LDFLAGS}"
177 AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
178 LDFLAGS=-Wl,-Bsymbolic-functions
179 AC_TRY_LINK([], [int main (void) { return 0; }],
188 LDFLAGS="${saved_LDFLAGS}"
191 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [CLUTTER_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
192 AC_SUBST(CLUTTER_LINK_FLAGS)
196 dnl ========================================================================
201 CLUTTER_INPUT_BACKENDS=""
202 CLUTTER_CONFIG_DEFINES=
204 experimental_backend=no
205 experimental_input_backend=no
207 # base dependencies for core
208 CLUTTER_BASE_PC_FILES="cogl-1.0 >= $COGL_REQ_VERSION cairo-gobject >= $CAIRO_REQ_VERSION atk >= $ATK_REQ_VERSION pangocairo >= $PANGO_REQ_VERSION cogl-pango-1.0 json-glib-1.0 >= $JSON_GLIB_REQ_VERSION"
210 # private base dependencies
211 CLUTTER_BASE_PC_FILES_PRIVATE=""
213 # backend specific pkg-config files
216 # private backend specific dependencies
217 BACKEND_PC_FILES_PRIVATE=""
219 dnl === Clutter windowing system backend ======================================
221 AC_ARG_ENABLE([x11-backend],
222 [AS_HELP_STRING([--enable-x11-backend=@<:@yes/no@:>@], [Enable the X11 backend (default=check)])],
223 [enable_x11=$enableval],
225 AC_ARG_ENABLE([win32-backend],
226 [AS_HELP_STRING([--enable-win32-backend=@<:@yes/no@:>@], [Enable the Windows backend (default=check)])],
227 [enable_win32=$enableval],
228 [enable_win32=check])
229 AC_ARG_ENABLE([quartz-backend],
230 [AS_HELP_STRING([--enable-quartz-backend=@<:@yes/no@:>@], [Enable the OS X backend (default=check)])],
231 [enable_osx=$enableval],
233 AC_ARG_ENABLE([gdk-backend],
234 [AS_HELP_STRING([--enable-gdk-backend=@<:@yes/no@:>@], [Enable the GDK backend (default=check)])],
235 [enable_gdk=$enableval],
237 AC_ARG_ENABLE([wayland-backend],
238 [AS_HELP_STRING([--enable-wayland-backend=@<:@yes/no@:>@], [Enable the Wayland client backend (default=no)])],
239 [enable_wayland=$enableval],
241 AC_ARG_ENABLE([egl-backend],
242 [AS_HELP_STRING([--enable-egl-backend=@<:@yes/no@:>@], [Enable the EGL framebuffer backend (default=no)])],
243 [enable_egl=$enableval],
245 AC_ARG_ENABLE([cex100-backend],
246 [AS_HELP_STRING([--enable-cex100-backend=@<:@yes/no@:>@], [Enable the CEx100 backend (default=no)])],
247 [enable_cex100=$enableval],
250 dnl Define default values
251 AS_IF([test "x$enable_x11" = "xcheck"],
253 AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
256 AS_IF([test "x$enable_win32" = "xcheck"],
258 AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
261 AS_IF([test "x$enable_osx" = "xcheck"],
263 AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
266 AS_IF([test "x$enable_gdk" = "xcheck"],
268 PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
271 dnl Per-backend rules
272 AS_IF([test "x$enable_x11" = "xyes"],
274 CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
275 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
281 # we use fontconfig API and pango-ft2 when the fontconfig
282 # configuration changes; we don't expose any API for this
283 # so we add pango-ft2 to the private Requires.
284 PKG_CHECK_EXISTS([pangoft2],
286 AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
287 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE pangoft2"
291 AC_DEFINE([HAVE_CLUTTER_GLX], [1], [Have the GLX backend])
294 AS_IF([test "x$enable_gdk" = "xyes"],
296 CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
297 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
302 BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
305 AS_IF([test "x$enable_wayland" = "xyes"],
307 CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
308 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
310 experimental_backend="yes"
314 PKG_CHECK_EXISTS([wayland-client xkbcommon gdk-pixbuf-2.0],
316 BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon",
317 BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE gdk-pixbuf-2.0"
321 AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
324 dnl Note this is orthogonal to the client side support and you can
325 dnl use the Wayland compositor features with any of the clutter
326 dnl backends with corresponding Cogl support.
327 AC_ARG_ENABLE([wayland-compositor],
328 [AS_HELP_STRING([--enable-wayland-compositor=@<:@yes/no@:>@],
329 [Enable Wayland compositor features (default=no)])],
331 [AS_IF([test "x$SUPPORT_EGL" = "x1"],
332 [enable_wayland_compositor=yes],
333 [enable_wayland_compositor=no])
336 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
338 PKG_CHECK_EXISTS([wayland-server],
339 [BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-server"], [])
340 SUPPORT_WAYLAND_COMPOSITOR=1
341 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
342 #define CLUTTER_HAS_WAYLAND_COMPOSITOR_SUPPORT 1"
343 AC_DEFINE([HAVE_CLUTTER_WAYLAND_COMPOSITOR], [1], [Have Wayland compositor support])
346 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
348 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
350 # The wayland headers introduce so much symbol shadowing that build
351 # logs become incomprehensible with -Wshadow so we only use it for
352 # non-wayland builds.
353 MAINTAINER_COMPILER_FLAGS="-Wshadow"
356 AS_IF([test "x$enable_cex100" = "xyes"],
358 CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
360 experimental_backend="yes"
366 AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
368 AS_IF([test "x$have_gdl" = "xno"],
370 AC_CHECK_HEADERS([CE4100/libgdl.h],
372 FLAVOUR_CFLAGS="-I/usr/include/CE4100"
374 CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
378 AS_IF([test "x$have_gdl" = "xno"],
379 [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
381 AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
383 FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
385 AC_DEFINE([CLUTTER_EGL_BACKEND_CEX100], [1], [Use CEX100 EGL backend])
386 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
387 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
390 AS_IF([test "x$enable_egl" = "xyes"],
392 CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
394 experimental_backend="yes"
399 FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
400 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
402 AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
404 AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
407 AS_IF([test "x$enable_osx" = "xyes"],
409 CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
410 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
412 AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
414 FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
419 AS_IF([test "x$enable_win32" = "xyes"],
421 CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
422 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
424 AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
426 FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
427 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
429 AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
434 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
436 AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
439 # additional input backends
441 AC_ARG_ENABLE([tslib-input],
442 [AS_HELP_STRING([--enable-tslib-input=@<:@yes/no@:>@], [Enable TSLib for input events (default=no)])],
443 [enable_tslib=$enableval],
445 AC_ARG_ENABLE([evdev-input],
446 [AS_HELP_STRING([--with-evdev=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
447 [enable_evdev=$enableval],
450 AS_IF([test "x$enable_tslib" = "xyes"],
452 PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
453 AS_IF([test "x$have_tslib" = "xyes"],
455 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
456 experimental_input_backend="yes"
457 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
462 AS_IF([test "x$enable_evdev" = "xyes"],
464 PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
465 AS_IF([test "x$have_evdev" = "xyes"],
467 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS evdev"
468 BACKEND_PC_FILES="$BACKEND_PC_FILES gudev-1.0 xkbcommon"
469 experimental_input_backend="yes"
470 AC_DEFINE([HAVE_EVDEV], [1], [Have evdev support for input handling])
475 # conditionals for use in automake files...
476 AM_CONDITIONAL(SUPPORT_GLX, [test "x$SUPPORT_GLX" = "x1"])
477 AM_CONDITIONAL(SUPPORT_X11, [test "x$SUPPORT_X11" = "x1"])
478 AM_CONDITIONAL(SUPPORT_GDK, [test "x$SUPPORT_GDK" = "x1"])
479 AM_CONDITIONAL(SUPPORT_EGL, [test "x$SUPPORT_EGL" = "x1"])
480 AM_CONDITIONAL(SUPPORT_OSX, [test "x$SUPPORT_OSX" = "x1"])
481 AM_CONDITIONAL(SUPPORT_WIN32, [test "x$SUPPORT_WIN32" = "x1"])
482 AM_CONDITIONAL(SUPPORT_CEX100, [test "x$SUPPORT_CEX100" = "x1"])
483 AM_CONDITIONAL(SUPPORT_WAYLAND, [test "x$SUPPORT_WAYLAND" = "x1"])
485 AM_CONDITIONAL(USE_COGL, [test "x$SUPPORT_COGL" = "x1"])
486 AM_CONDITIONAL(USE_TSLIB, [test "x$have_tslib" = "xyes"])
487 AM_CONDITIONAL(USE_EVDEV, [test "x$have_evdev" = "xyes"])
488 AM_CONDITIONAL(USE_GLD, [test "x$have_gdl" = "xyes"])
490 dnl Instead of using AM_CFLAGS to ensure
491 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
492 dnl and cogl code we use a define in config.h instead. This helps ensure
493 dnl other tools such as glib-mkenums and gir-scanner don't end up
494 dnl using the define also.
495 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
497 dnl strip leading spaces
498 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
499 AC_SUBST(CLUTTER_BACKENDS)
501 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
502 AC_SUBST(CLUTTER_INPUT_BACKENDS)
506 dnl === Clutter configuration =================================================
509 AS_IF([test "x$SUPPORT_X11" = "x1"],
510 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
511 #define CLUTTER_WINDOWING_X11 \"x11\"
512 #define CLUTTER_INPUT_X11 \"x11\""])
513 AS_IF([test "x$SUPPORT_GDK" = "x1"],
514 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
515 #define CLUTTER_WINDOWING_GDK \"gdk\"
516 #define CLUTTER_INPUT_GDK \"gdk\""])
517 AS_IF([test "x$SUPPORT_GLX" = "x1"],
518 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
519 #define CLUTTER_WINDOWING_GLX \"glx\""])
520 AS_IF([test "x$SUPPORT_EGL" = "x1"],
521 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
522 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
523 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
524 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
525 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
526 AS_IF([test "x$SUPPORT_OSX" = "x1"],
527 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
528 #define CLUTTER_WINDOWING_OSX \"osx\"
529 #define CLUTTER_INPUT_OSX \"osx\""])
530 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
531 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
532 #define CLUTTER_WINDOWING_WIN32 \"win32\"
533 #define CLUTTER_INPUT_WIN32 \"win32\""])
534 AS_IF([test "x$SUPPORT_CEX100" = "x1"],
535 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
536 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
537 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
538 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
539 #define CLUTTER_INPUT_EVDEV \"evdev\""])
540 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
541 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
542 #define CLUTTER_INPUT_TSLIB \"tslib\""])
543 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
544 [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
545 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
547 # the 'null' input backend is special
548 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
549 #define CLUTTER_INPUT_NULL \"null\""
551 AC_SUBST([CLUTTER_CONFIG_DEFINES])
553 dnl === Clutter substitutions kept for backwards compatibility ================
554 AC_SUBST([CLUTTER_WINSYS], [deprecated])
555 AC_SUBST([CLUTTER_WINSYS_BASE], [deprecated])
556 AC_SUBST([CLUTTER_STAGE_TYPE], [deprecated])
557 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
558 AC_SUBST([CLUTTER_FLAVOUR], [deprecated])
559 AC_SUBST([CLUTTER_COGL], [deprecated])
560 AC_SUBST([COGL_DRIVER], [deprecated])
562 dnl === X11 checks, only for X11-based backends ===============================
567 AS_IF([test "x$SUPPORT_X11" = "x1"],
569 # base X11 includes and libraries
570 AC_MSG_CHECKING([for X11])
572 # start with pkg-config
573 PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
574 AS_IF([test "x$have_x11" = "xyes"],
578 # we actually need to ask for CFLAGS and LIBS
579 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
580 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
582 AC_MSG_RESULT([found])
585 # no pkg-config, let's go old school
588 AS_IF([test "x$no_x" = "xyes"],
589 [AC_MSG_ERROR([No X11 Libraries found])],
591 AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
592 [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
594 AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
595 [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
597 AC_MSG_RESULT([found])
604 AC_MSG_CHECKING([for XEXT extension])
605 PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
606 AS_IF([test "x$have_xext" = "xyes"],
608 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
610 X11_LIBS="$X11_LIBS -lXext"
611 X11_PC_FILES="$X11_PC_FILES xext"
612 X11_EXTS="$X11_EXTS xext"
614 AC_MSG_RESULT([found])
616 [AC_MSG_ERROR([Not found])]
620 AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
621 PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
622 AS_IF([test "x$have_xfixes" = "xyes"],
624 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
626 X11_LIBS="$X11_LIBS -lXfixes"
627 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
628 X11_EXTS="$X11_EXTS xfixes"
630 AC_MSG_RESULT([found])
632 [AC_MSG_ERROR([Not found])]
636 AC_MSG_CHECKING([for XDAMAGE extension])
637 PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
638 AS_IF([test "x$have_xdamage" = "xyes"],
640 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
642 X11_LIBS="$X11_LIBS -lXdamage"
643 X11_PC_FILES="$X11_PC_FILES xdamage"
644 X11_EXTS="$X11_EXTS xdamage"
646 AC_MSG_RESULT([found])
648 [AC_MSG_ERROR([not found])]
651 # XCOMPOSITE (optional)
652 AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
653 PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
654 AS_IF([test "x$have_xcomposite" = "xyes"],
656 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
658 X11_LIBS="$X11_LIBS -lXcomposite"
659 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
660 X11_EXTS="$X11_EXTS xcomposite"
662 AC_MSG_RESULT([found])
664 [AC_MSG_ERROR([not found])]
667 # X Generic Extensions (optional)
668 clutter_save_CPPFLAGS="$CPPFLAGS"
669 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
671 clutter_save_LIBS="$LIBS"
672 LIBS="$LIBS $X11_LIBS"
675 AC_CHECK_FUNC([XGetEventData],
677 AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
679 X11_EXTS="$X11_EXTS xge"
682 CPPFLAGS="$clutter_save_CPPFLAGS"
683 LIBS="$clutter_save_LIBS"
686 AC_ARG_ENABLE([xinput],
687 [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
691 AS_IF([test "x$enable_xinput" = "xyes"],
693 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
699 AS_CASE([$have_xinput],
703 AC_CHECK_HEADERS([X11/extensions/XInput2.h],
706 AC_DEFINE([HAVE_XINPUT_2],
708 [Define to 1 if XI2 is available])
712 AC_DEFINE([HAVE_XINPUT],
714 [Define to 1 if XInput is available])
717 X11_LIBS="$X11_LIBS $XINPUT_LIBS"
718 X11_PC_FILES="$X11_PC_FILES xi"
719 X11_EXTS="$X11_EXTS xi"
726 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
730 clutter_save_CPPFLAGS="$CPPFLAGS"
731 CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
733 clutter_save_LIBS="$LIBS"
734 LIBS="$LIBS $X11_LIBS"
737 AC_CHECK_FUNC([XkbQueryExtension],
739 AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
742 X11_EXTS="$X11_EXTS xkb"
745 CPPFLAGS="$clutter_save_CPPFLAGS"
746 LIBS="$clutter_save_LIBS"
749 BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
750 FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
751 FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
755 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
756 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
758 X11_EXTS=${X11_EXTS#* }
762 dnl === Enable debug level ====================================================
764 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
765 AC_ARG_ENABLE([debug],
766 [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
767 [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
769 [enable_debug=debug_default])
771 AS_CASE([$enable_debug],
775 test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
776 CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
780 [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
783 [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
785 [AC_MSG_ERROR([Unknown argument for --enable-debug])]
788 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
790 dnl === Enable deprecation guards ==================================================
792 m4_define([deprecated_default],
793 [m4_if(m4_eval(clutter_minor_version % 2),
798 AC_ARG_ENABLE([deprecated],
799 [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
800 [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
802 [enable_deprecated=deprecated_default])
804 AS_CASE([$enable_deprecated],
808 CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
813 CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
816 [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
819 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
822 dnl === Conformance test suite ================================================
824 AC_ARG_ENABLE([conformance],
825 [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
826 [Build conformance test suite @<:@default=yes@:>@])],
828 [enable_conformance=yes])
830 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
832 dnl === Profiling =============================================================
834 m4_define([profile_default], [no])
835 AC_ARG_ENABLE(profile,
836 AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
837 [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@:>@]),
839 [enable_profile=profile_default])
841 AS_CASE([$enable_profile],
845 AS_IF([test "x$GCC" = "xyes"],
847 PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
848 CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
849 CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
851 AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
854 AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
860 CLUTTER_PROFILE_CFLAGS=""
861 CLUTTER_PROFILE_LDFLAGS=""
864 [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
866 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
867 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
868 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
870 dnl === Coverage report =======================================================
872 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
874 AC_MSG_CHECKING([whether to build with gcov testing])
876 AC_ARG_ENABLE([gcov],
877 [AS_HELP_STRING([--enable-gcov],
878 [Whether to enable coverage testing (requires gcc
883 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
885 AS_IF([test "x$enable_conformance" = "xno"],
886 [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
887 [AC_MSG_RESULT([yes])]
890 GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
891 GCOV_LDFLAGS="-lgcov"
893 [AC_MSG_RESULT([no])]
896 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
897 AC_SUBST([GCOV_CFLAGS])
898 AC_SUBST([GCOV_LDFLAGS])
900 dnl === Enable strict compiler flags ==========================================
902 # use strict compiler flags only when building from git; the rules for
903 # distcheck will take care of turning this on when making a release
904 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
905 AC_ARG_ENABLE([maintainer-flags],
906 [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
907 [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
909 [enable_maintainer_flags=maintainer_flags_default])
911 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
912 -Wall -Wcast-align -Wuninitialized
913 -Wno-strict-aliasing -Wempty-body -Wformat
914 -Wformat-security -Winit-self
915 -Wdeclaration-after-statement -Wvla
918 AS_CASE([$enable_maintainer_flags],
921 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
930 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
931 AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
935 [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
938 # strip leading spaces
939 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#* }
940 AC_SUBST(MAINTAINER_CFLAGS)
942 dnl === Dependencies, compiler flags and linker libraries =====================
943 # strip leading space
944 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
946 # public dependencies, will fill the Requires: field of clutter.pc
947 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
948 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
950 # private dependencies, will fill the Requires.private: field of clutter.pc
951 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
953 CLUTTER_REQUIRES_PRIVATE=""
954 CLUTTER_DEPS_PRIVATE_CFLAGS=""
955 CLUTTER_DEPS_PRIVATE_LIBS=""
958 CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
959 PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
962 AC_SUBST(CLUTTER_REQUIRES)
963 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
965 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
966 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
967 AC_SUBST(CLUTTER_CFLAGS)
968 AC_SUBST(CLUTTER_LIBS)
971 dnl === GObject-Introspection check ===========================================
973 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
975 dnl === GTK Doc check =========================================================
977 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
979 # we don't want to build the documentation from a Git clone unless we
980 # explicitly tell configure to do so; this allows avoiding to recurse into
981 # the documentation directory when building Clutter inside Poky for a
982 # target device that doesn't have gtk-doc installed. for reference
983 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
985 # we use autogen.sh as it exists only inside the Git clones, and it
986 # is not packaged into tarballs.
987 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
989 # prefixes for fixing gtk-doc references
990 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
991 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
992 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
993 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
994 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
995 AC_SUBST(CAIRO_PREFIX)
996 AC_SUBST(GLIB_PREFIX)
997 AC_SUBST(PANGO_PREFIX)
998 AC_SUBST(COGL_PREFIX)
1001 dnl === Manual ================================================================
1003 AC_ARG_ENABLE([docs],
1004 [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1005 [Build optional documentation; requires xsltproc and jw.])],
1006 [enable_docs=$enableval],
1010 AS_IF([test "x$enable_docs" = "xyes"],
1012 AC_PATH_PROG(JW, [jw], [no])
1013 AS_IF([test "x$JW" = "xno"],
1015 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1019 AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1020 AS_IF([test "x$XSLTPROC" = "xno"],
1022 AC_MSG_ERROR([xsltproc not found])
1027 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1028 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1030 dnl === I18N ==================================================================
1032 AM_GNU_GETTEXT_VERSION([0.17])
1033 AM_GNU_GETTEXT([external])
1035 GETTEXT_PACKAGE="clutter-1.0"
1036 AC_SUBST(GETTEXT_PACKAGE)
1037 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1038 ["$GETTEXT_PACKAGE"],
1039 [The prefix for our gettext translation domains.])
1042 dnl ===========================================================================
1050 build/autotools/Makefile
1051 build/mingw/Makefile
1052 build/win32/Makefile
1053 build/win32/vs9/Makefile
1054 build/win32/vs10/Makefile
1057 clutter/clutter-config.h
1058 clutter/clutter-version.h
1059 clutter/clutter-version.h.win32
1060 clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1062 clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1064 clutter/cex100/clutter-cex100.h
1067 tests/accessibility/Makefile
1068 tests/conform/Makefile
1069 tests/conform/test-launcher.sh
1071 tests/interactive/Makefile
1072 tests/interactive/wrapper.sh
1073 tests/micro-bench/Makefile
1074 tests/performance/Makefile
1077 doc/reference/Makefile
1078 doc/reference/clutter/Makefile
1079 doc/reference/clutter/clutter-docs.xml
1080 doc/reference/cally/Makefile
1081 doc/reference/cally/cally-docs.xml
1083 doc/cookbook/Makefile
1084 doc/cookbook/clutter-cookbook.xml
1085 doc/cookbook/examples/Makefile
1092 dnl === Summary ===============================================================
1095 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1100 echo " Prefix: ${prefix}"
1101 echo " Libdir: ${libdir}"
1102 echo " Sysconfdir: ${sysconfdir}"
1104 # Compiler/Debug related flags
1106 echo " • Compiler options:"
1107 echo " Clutter debug level: ${enable_debug}"
1108 echo " Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1109 echo " Profiling enabled: ${enable_profile}"
1110 echo " Enable coverage tests: ${enable_gcov}"
1111 echo " Enable deprecated symbols: ${enable_deprecated}"
1115 echo " • Documentation:"
1116 echo " Build API Reference: ${enable_gtk_doc}"
1117 echo " Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1122 echo " Build introspection data: ${enable_introspection}"
1123 echo " Build conformance test suite: ${enable_conformance}"
1124 echo " Build X11-specific tests: ${x11_tests}"
1126 # Clutter backend related flags
1128 echo " • Clutter Backends:"
1130 if test "x$experimental_backend" = "xno"; then
1131 echo " Windowing systems: ${CLUTTER_BACKENDS}"
1133 echo " Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1136 if test "x$experimental_input_backend" = "xno"; then
1137 echo " Input backends: ${CLUTTER_INPUT_BACKENDS}"
1139 echo " Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1142 if test "x$SUPPORT_X11" = "x1"; then
1144 echo " - X11 backend options:"
1145 echo " Enabled extensions: ${X11_EXTS}"
1146 echo " Build X11-specific tests: ${x11_tests}"
1149 if test "x$SUPPORT_CEX100" = "x1"; then
1151 echo " - CEx100 backend options (WARNING: Experimental):"
1152 echo " libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1155 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1157 echo " - Wayland compositor support enabled (WARNING: Experimental)"
1162 # General warning about experimental features
1163 if test "x$experimental_backend" = "xyes"; then
1165 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1166 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1168 echo " The stability of your build might be affected by one or more"
1169 echo " experimental backends or experimental and unsupported features"
1171 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1172 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"