Release Clutter 1.9.16 (1.10 release candidate 1)
[profile/ivi/clutter.git] / configure.ac
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
4 #
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
8 # After the release:
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], [16])
14
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:
18 #
19 #  (<minor> * 100 + <micro>) - <interface_age>
20 #
21 # this allows using the same soname for different micro-releases in case
22 # no API was added or deprecated. for instance:
23 #
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
31 #   ...
32 #
33 # • for development releases: keep clutter_interface_age to 0
34 m4_define([clutter_interface_age], [0])
35
36 m4_define([clutter_binary_age], [m4_eval(100 * clutter_minor_version + clutter_micro_version)])
37
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],
41                                                                  [release])])])
42
43 m4_define([clutter_version], [clutter_major_version.clutter_minor_version.clutter_micro_version])
44
45 # change this only when breaking the API
46 m4_define([clutter_api_version], [1.0])
47
48 AC_PREREQ([2.63])
49
50 AC_INIT([clutter],
51         [clutter_version],
52         [http://bugzilla.gnome.org/enter_bug.cgi?product=clutter],
53         [clutter],
54         [http://www.clutter-project.org])
55
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])
60
61 AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
62 AM_SILENT_RULES([yes])
63
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])
71
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
77 CLUTTER_LT_AGE=lt_age
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])
83
84 AC_PROG_SED
85
86 dnl = Preliminary platform checks =============================================
87
88 AC_CANONICAL_HOST
89
90 platform_win32=no
91 platform_quartz=no
92 platform_linux=no
93
94 AC_MSG_CHECKING([if building for some Win32 platform])
95 AS_CASE([$host],
96         [*-*-mingw*|*-*-cygwin*],
97         [
98           CLUTTER_LT_LDFLAGS="$CLUTTER_LT_LDFLAGS -no-undefined"
99           platform_win32=yes
100         ],
101
102         [*-*-linux*],
103         [
104           platform_linux=yes
105         ],
106
107         []
108 )
109 AC_MSG_RESULT([$platform_win32])
110
111 AM_CONDITIONAL(OS_WIN32, [test "$platform_win32" = "yes"])
112
113 AC_CHECK_HEADER([OpenGL/gl.h], [platform_quartz=yes], [platform_quartz=no])
114 AM_CONDITIONAL(OS_QUARTZ, [test "$platform_quartz" = "yes"])
115
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"])
120
121 AC_SUBST(CLUTTER_LT_LDFLAGS)
122
123 AC_CACHE_SAVE
124
125 dnl = Dependencies =========================================================
126
127 # Checks for programs.
128 AM_PROG_CC_C_O
129
130 # require libtool >= 2.2
131 LT_PREREQ([2.2.6])
132 LT_INIT([disable-static])
133
134 # Checks for header files.
135 AC_HEADER_STDC
136
137 # required versions for dependencies
138 m4_define([glib_req_version],           [2.31.19])
139 m4_define([cogl_req_version],           [1.9.6])
140 m4_define([json_glib_req_version],      [0.12.0])
141 m4_define([atk_req_version],            [2.1.5])
142 m4_define([cairo_req_version],          [1.10])
143 m4_define([pango_req_version],          [1.20])
144 m4_define([gi_req_version],             [0.9.5])
145 m4_define([uprof_req_version],          [0.3])
146 m4_define([gtk_doc_req_version],        [1.15])
147 m4_define([xfixes_req_version],         [3])
148 m4_define([xcomposite_req_version],     [0.4])
149 m4_define([gdk_req_version],            [3.3.18])
150
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])
163
164 # Checks for typedefs, structures, and compiler characteristics.
165 AM_PATH_GLIB_2_0([glib_req_version],
166                  [],
167                  [AC_MSG_ERROR([glib-2.0 is required])],
168                  [gobject gthread gmodule-no-export])
169
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])],
174               [],
175               [
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; }],
180                             [
181                               AC_MSG_RESULT([yes])
182                               enable_Bsymbolic=yes
183                             ],
184                             [
185                               AC_MSG_RESULT([no])
186                               enable_Bsymbolic=no
187                             ])
188                 LDFLAGS="${saved_LDFLAGS}"
189               ])
190
191 AS_IF([test "x$enable_Bsymbolic" = "xyes"], [CLUTTER_LINK_FLAGS=-Wl[,]-Bsymbolic-functions])
192 AC_SUBST(CLUTTER_LINK_FLAGS)
193
194 AC_CACHE_SAVE
195
196 dnl ========================================================================
197
198 FLAVOUR_LIBS=""
199 FLAVOUR_CFLAGS=""
200 CLUTTER_BACKENDS=""
201 CLUTTER_INPUT_BACKENDS=""
202 CLUTTER_CONFIG_DEFINES=
203
204 experimental_backend=no
205 experimental_input_backend=no
206
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"
209
210 # private base dependencies
211 CLUTTER_BASE_PC_FILES_PRIVATE=""
212
213 # backend specific pkg-config files
214 BACKEND_PC_FILES=""
215
216 # private backend specific dependencies
217 BACKEND_PC_FILES_PRIVATE=""
218
219 dnl === Clutter windowing system backend ======================================
220
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],
224               [enable_x11=check])
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],
232               [enable_osx=check])
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],
236               [enable_gdk=check])
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],
240               [enable_wayland=no])
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],
244               [enable_egl=no])
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],
248               [enable_cex100=no])
249
250 dnl Define default values
251 AS_IF([test "x$enable_x11" = "xcheck"],
252       [
253         AS_IF([test "x$platform_glx" = "xyes"], [enable_x11=yes], [enable_x11=no])
254       ])
255
256 AS_IF([test "x$enable_win32" = "xcheck"],
257       [
258         AS_IF([test "x$platform_win32" = "xyes"], [enable_win32=yes], [enable_win32=no])
259       ])
260
261 AS_IF([test "x$enable_osx" = "xcheck"],
262       [
263         AS_IF([test "x$platform_quartz" = "xyes"], [enable_osx=yes], [enable_osx=no])
264       ])
265
266 AS_IF([test "x$enable_gdk" = "xcheck"],
267       [
268         PKG_CHECK_EXISTS([gdk-3.0 >= gdk_req_version], [enable_gdk=yes], [enable_gdk=no])
269       ])
270
271 dnl Per-backend rules
272 AS_IF([test "x$enable_x11" = "xyes"],
273       [
274         CLUTTER_BACKENDS="$CLUTTER_BACKENDS x11"
275         CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS x11"
276
277         SUPPORT_X11=1
278         SUPPORT_GLX=1
279         SUPPORT_COGL=1
280
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],
285                          [
286                            AC_DEFINE([HAVE_PANGO_FT2], [1], [Supports PangoFt2])
287                            BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE pangoft2"
288                          ],
289                          [])
290
291         AC_DEFINE([HAVE_CLUTTER_GLX], [1], [Have the GLX backend])
292       ])
293
294 AS_IF([test "x$enable_gdk" = "xyes"],
295       [
296         CLUTTER_BACKENDS="$CLUTTER_BACKENDS gdk"
297         CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS gdk"
298
299         SUPPORT_GDK=1
300         SUPPORT_COGL=1
301
302         BACKEND_PC_FILES="$BACKEND_PC_FILES gdk-3.0"
303       ])
304
305 AS_IF([test "x$enable_wayland" = "xyes"],
306       [
307         CLUTTER_BACKENDS="$CLUTTER_BACKENDS wayland"
308         CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS wayland"
309
310         experimental_backend="yes"
311
312         SUPPORT_WAYLAND=1
313
314         PKG_CHECK_EXISTS([wayland-client xkbcommon gdk-pixbuf-2.0],
315                          [
316                             BACKEND_PC_FILES="$BACKEND_PC_FILES wayland-client xkbcommon",
317                             BACKEND_PC_FILES_PRIVATE="$BACKEND_PC_FILES_PRIVATE gdk-pixbuf-2.0"
318                          ],
319                          [])
320
321         AC_DEFINE([HAVE_CLUTTER_WAYLAND], [1], [Have the Wayland client backend])
322       ])
323
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)])],
330               [],
331               [AS_IF([test "x$SUPPORT_EGL" = "x1"],
332                      [enable_wayland_compositor=yes],
333                      [enable_wayland_compositor=no])
334               ])
335
336 AS_IF([test "x$enable_wayland_compositor" = "xyes"],
337       [
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])
344       ])
345
346 AM_CONDITIONAL(SUPPORT_WAYLAND_COMPOSITOR, [test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"])
347
348 AS_IF([test "x$enable_wayland_compositor" != "xyes" -a "x$enable_wayland" != "xyes"],
349       [
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"
354       ])
355
356 AS_IF([test "x$enable_cex100" = "xyes"],
357       [
358         CLUTTER_BACKENDS="$CLUTTER_BACKENDS cex100"
359
360         experimental_backend="yes"
361
362         SUPPORT_COGL=1
363         SUPPORT_CEX100=1
364
365         have_gdl=no
366         AC_CHECK_HEADERS([libgdl.h], [have_gdl=yes])
367
368         AS_IF([test "x$have_gdl" = "xno"],
369               [
370                 AC_CHECK_HEADERS([CE4100/libgdl.h],
371                                  [
372                                    FLAVOUR_CFLAGS="-I/usr/include/CE4100"
373                                    have_gdl=yes
374                                    CLUTTER_CEX100_LIBGDL_PREFIX=CE4100/
375                                  ])
376               ])
377
378         AS_IF([test "x$have_gdl" = "xno"],
379               [AC_MSG_ERROR([libgdl.h not found but the CEx100 backend has been explicitly enabled])])
380
381         AC_SUBST(CLUTTER_CEX100_LIBGDL_PREFIX)
382
383         FLAVOUR_LIBS="$FLAVOUR_LIBS -lgdl"
384
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])
388       ])
389
390 AS_IF([test "x$enable_egl" = "xyes"],
391       [
392         CLUTTER_BACKENDS="$CLUTTER_BACKENDS egl"
393
394         experimental_backend="yes"
395
396         SUPPORT_EGL=1
397         SUPPORT_COGL=1
398
399         FLAVOUR_LIBS="$FLAVOUR_LIBS $TSLIB_LIBS $EVDEV_LIBS"
400         FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $TSLIB_CFLAGS $EVDEV_CFLAGS"
401
402         AC_DEFINE([CLUTTER_EGL_BACKEND_GENERIC], [1], [Use Generic EGL backend])
403
404         AC_DEFINE([HAVE_CLUTTER_EGL], [1], [Have the EGL backend])
405       ])
406
407 AS_IF([test "x$enable_osx" = "xyes"],
408       [
409         CLUTTER_BACKENDS="$CLUTTER_BACKENDS osx"
410         CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS osx"
411
412         AC_DEFINE([HAVE_CLUTTER_OSX], [1], [Have the OSX backend])
413
414         FLAVOUR_LIBS="$FLAVOUR_LIBS -framework Cocoa -framework OpenGL"
415
416         SUPPORT_OSX=1
417       ])
418
419 AS_IF([test "x$enable_win32" = "xyes"],
420       [
421         CLUTTER_BACKENDS="$CLUTTER_BACKENDS win32"
422         CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS win32"
423
424         AC_DEFINE([HAVE_CLUTTER_WIN32], [1], [Have the Win32 backend])
425
426         FLAVOUR_LIBS="$FLAVOUR_LIBS -lopengl32 -lgdi32 -lwinmm"
427         FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS -D_WIN32_WINNT=0x0500"
428
429         AC_CHECK_TOOL(WINDRES, [windres], [AC_MSG_ERROR([*** windres is required])])
430
431         SUPPORT_WIN32=1
432       ])
433
434 AS_IF([test "x$CLUTTER_BACKENDS" = "x"],
435       [
436         AC_MSG_ERROR([No backend enabled. You need to enable at least one backend.])
437       ])
438
439 # additional input backends
440
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],
444               [enable_tslib=no])
445 AC_ARG_ENABLE([evdev-input],
446               [AS_HELP_STRING([--enable-evdev-input=@<:@yes/no@:>@], [Enable evdev for input events (default=no)])],
447               [enable_evdev=$enableval],
448               [enable_evdev=no])
449
450 AS_IF([test "x$enable_tslib" = "xyes"],
451       [
452         PKG_CHECK_MODULES(TSLIB, [tslib-1.0], [have_tslib=yes], [have_tslib=no])
453         AS_IF([test "x$have_tslib" = "xyes"],
454               [
455                 CLUTTER_INPUT_BACKENDS="$CLUTTER_INPUT_BACKENDS tslib"
456                 experimental_input_backend="yes"
457                 AC_DEFINE([HAVE_TSLIB], [1], [Have tslib for touchscreen handling])
458                 SUPPORT_TSLIB=1
459               ])
460       ])
461
462 AS_IF([test "x$enable_evdev" = "xyes"],
463       [
464         PKG_CHECK_MODULES(EVDEV, [gudev-1.0 xkbcommon], [have_evdev=yes], [have_evdev=no])
465         AS_IF([test "x$have_evdev" = "xyes"],
466               [
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])
471                 SUPPORT_EVDEV=1
472               ])
473       ])
474
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"])
484
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"])
489
490 AM_CONDITIONAL(NEED_XKB_UTILS, [test "x$have_evdev" = "xyes" -O "x$SUPPORT_WAYLAND" = "x1"])
491
492 dnl Instead of using AM_CFLAGS to ensure
493 dnl COGL_ENABLE_EXPERIMENTAL_2_0_API is defined while compiling clutter
494 dnl and cogl code we use a define in config.h instead. This helps ensure
495 dnl other tools such as glib-mkenums and gir-scanner don't end up
496 dnl using the define also.
497 AC_DEFINE([COGL_ENABLE_EXPERIMENTAL_2_0_API], [1], [Can use Cogl 2.0 API internally])
498
499 dnl strip leading spaces
500 CLUTTER_BACKENDS=${CLUTTER_BACKENDS#* }
501 AC_SUBST(CLUTTER_BACKENDS)
502
503 CLUTTER_INPUT_BACKENDS=${CLUTTER_INPUT_BACKENDS#* }
504 AC_SUBST(CLUTTER_INPUT_BACKENDS)
505
506 AC_CACHE_SAVE
507
508 dnl === Clutter configuration =================================================
509
510 # windowing systems
511 AS_IF([test "x$SUPPORT_X11" = "x1"],
512       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
513 #define CLUTTER_WINDOWING_X11 \"x11\"
514 #define CLUTTER_INPUT_X11 \"x11\""])
515 AS_IF([test "x$SUPPORT_GDK" = "x1"],
516       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
517 #define CLUTTER_WINDOWING_GDK \"gdk\"
518 #define CLUTTER_INPUT_GDK \"gdk\""])
519 AS_IF([test "x$SUPPORT_GLX" = "x1"],
520       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
521 #define CLUTTER_WINDOWING_GLX \"glx\""])
522 AS_IF([test "x$SUPPORT_EGL" = "x1"],
523       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
524 #define CLUTTER_WINDOWING_EGL \"eglnative\""])
525 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
526       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
527 #define CLUTTER_WINDOWING_WAYLAND \"wayland\""])
528 AS_IF([test "x$SUPPORT_OSX" = "x1"],
529       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
530 #define CLUTTER_WINDOWING_OSX \"osx\"
531 #define CLUTTER_INPUT_OSX \"osx\""])
532 AS_IF([test "x$SUPPORT_WIN32" = "x1"],
533       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
534 #define CLUTTER_WINDOWING_WIN32 \"win32\"
535 #define CLUTTER_INPUT_WIN32 \"win32\""])
536 AS_IF([test "x$SUPPORT_CEX100" = "x1"],
537       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
538 #define CLUTTER_WINDOWING_CEX100 \"cex100\""])
539 AS_IF([test "x$SUPPORT_EVDEV" = "x1"],
540       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
541 #define CLUTTER_INPUT_EVDEV \"evdev\""])
542 AS_IF([test "x$SUPPORT_TSLIB" = "x1"],
543       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
544 #define CLUTTER_INPUT_TSLIB \"tslib\""])
545 AS_IF([test "x$SUPPORT_WAYLAND" = "x1"],
546       [CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
547 #define CLUTTER_INPUT_WAYLAND \"wayland\""])
548
549 # the 'null' input backend is special
550 CLUTTER_CONFIG_DEFINES="$CLUTTER_CONFIG_DEFINES
551 #define CLUTTER_INPUT_NULL \"null\""
552
553 AC_SUBST([CLUTTER_CONFIG_DEFINES])
554
555 dnl === Clutter substitutions kept for backwards compatibility ================
556 AC_SUBST([CLUTTER_WINSYS],       [deprecated])
557 AC_SUBST([CLUTTER_WINSYS_BASE],  [deprecated])
558 AC_SUBST([CLUTTER_STAGE_TYPE],   [deprecated])
559 AC_SUBST([CLUTTER_SONAME_INFIX], [deprecated])
560 AC_SUBST([CLUTTER_FLAVOUR],      [deprecated])
561 AC_SUBST([CLUTTER_COGL],         [deprecated])
562 AC_SUBST([COGL_DRIVER],          [deprecated])
563
564 dnl === X11 checks, only for X11-based backends ===============================
565 X11_PC_FILES=""
566 X11_EXTS=""
567 x11_tests=no
568
569 AS_IF([test "x$SUPPORT_X11" = "x1"],
570       [
571         # base X11 includes and libraries
572         AC_MSG_CHECKING([for X11])
573
574         # start with pkg-config
575         PKG_CHECK_EXISTS([x11], [have_x11=yes], [have_x11=no])
576         AS_IF([test "x$have_x11" = "xyes"],
577               [
578                 X11_PC_FILES="x11"
579
580                 # we actually need to ask for CFLAGS and LIBS
581                 X11_CFLAGS=`$PKG_CONFIG --cflags $X11_PC_FILES`
582                 X11_LIBS=`$PKG_CONFIG --libs $X11_PC_FILES`
583
584                 AC_MSG_RESULT([found])
585               ],
586               [
587                 # no pkg-config, let's go old school
588                 AC_PATH_X
589
590                 AS_IF([test "x$no_x" = "xyes"],
591                       [AC_MSG_ERROR([No X11 Libraries found])],
592                       [
593                         AS_IF([test "x$x_includes" != "xNONE" && test -n "$x_includes"],
594                               [X11_CFLAGS=-I`echo $x_includes | sed -e "s/:/ -I/g"`])
595
596                         AS_IF([test "x$x_libraries" != "xNONE" && test -n "$x_libraries"],
597                               [X11_LIBS=-L`echo $x_libraries | sed -e "s/:/ -L/g"`])
598
599                         AC_MSG_RESULT([found])
600                       ]
601                 )
602               ]
603         )
604
605         # XEXT (required)
606         AC_MSG_CHECKING([for XEXT extension])
607         PKG_CHECK_EXISTS([xext], [have_xext=yes], [have_xext=no])
608         AS_IF([test "x$have_xext" = "xyes"],
609               [
610                 AC_DEFINE(HAVE_XEXT, [1], [Define to 1 if we have the XEXT X extension])
611
612                 X11_LIBS="$X11_LIBS -lXext"
613                 X11_PC_FILES="$X11_PC_FILES xext"
614                 X11_EXTS="$X11_EXTS xext"
615
616                 AC_MSG_RESULT([found])
617               ],
618               [AC_MSG_ERROR([Not found])]
619         )
620
621         # XFIXES (required)
622         AC_MSG_CHECKING([for XFIXES extension >= $XFIXES_REQ_VERSION])
623         PKG_CHECK_EXISTS([xfixes >= $XFIXES_REQ_VERSION], [have_xfixes=yes], [have_xfixes=no])
624         AS_IF([test "x$have_xfixes" = "xyes"],
625               [
626                 AC_DEFINE(HAVE_XFIXES, [1], [Define to 1 if we have the XFIXES X extension])
627
628                 X11_LIBS="$X11_LIBS -lXfixes"
629                 X11_PC_FILES="$X11_PC_FILES xfixes >= $XFIXES_REQ_VERSION"
630                 X11_EXTS="$X11_EXTS xfixes"
631
632                 AC_MSG_RESULT([found])
633               ],
634               [AC_MSG_ERROR([Not found])]
635         )
636
637         # XDAMAGE (required)
638         AC_MSG_CHECKING([for XDAMAGE extension])
639         PKG_CHECK_EXISTS([xdamage], [have_xdamage=yes], [have_xdamage=no])
640         AS_IF([test "x$have_xdamage" = "xyes"],
641               [
642                 AC_DEFINE(HAVE_XDAMAGE, [1], [Define to 1 if we have the XDAMAGE X extension])
643
644                 X11_LIBS="$X11_LIBS -lXdamage"
645                 X11_PC_FILES="$X11_PC_FILES xdamage"
646                 X11_EXTS="$X11_EXTS xdamage"
647
648                 AC_MSG_RESULT([found])
649               ],
650               [AC_MSG_ERROR([not found])]
651         )
652
653         # XCOMPOSITE (optional)
654         AC_MSG_CHECKING([for XCOMPOSITE extension >= $XCOMPOSITE_REQ_VERSION])
655         PKG_CHECK_EXISTS([xcomposite >= $XCOMPOSITE_REQ_VERSION], [have_xcomposite=yes], [have_xcomposite=no])
656         AS_IF([test "x$have_xcomposite" = "xyes"],
657               [
658                 AC_DEFINE(HAVE_XCOMPOSITE, [1], [Define to 1 if we have the XCOMPOSITE X extension])
659
660                 X11_LIBS="$X11_LIBS -lXcomposite"
661                 X11_PC_FILES="$X11_PC_FILES xcomposite >= $XCOMPOSITE_REQ_VERSION"
662                 X11_EXTS="$X11_EXTS xcomposite"
663
664                 AC_MSG_RESULT([found])
665               ],
666               [AC_MSG_ERROR([not found])]
667         )
668
669         # X Generic Extensions (optional)
670         clutter_save_CPPFLAGS="$CPPFLAGS"
671         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
672
673         clutter_save_LIBS="$LIBS"
674         LIBS="$LIBS $X11_LIBS"
675
676         have_xge=no
677         AC_CHECK_FUNC([XGetEventData],
678                       [
679                         AC_DEFINE([HAVE_XGE], [1], [Define to 1 if X Generic Extensions is available])
680                         have_xge=yes
681                         X11_EXTS="$X11_EXTS xge"
682                       ])
683
684         CPPFLAGS="$clutter_save_CPPFLAGS"
685         LIBS="$clutter_save_LIBS"
686
687         # XI (optional)
688         AC_ARG_ENABLE([xinput],
689                       [AS_HELP_STRING([--enable-xinput], [Use the XI X extension])],
690                       [],
691                       [enable_xinput=yes])
692
693         AS_IF([test "x$enable_xinput" = "xyes"],
694               [
695                 PKG_CHECK_EXISTS([xi], [have_xinput=yes], [have_xinput=no])
696               ],
697               [
698                 have_xinput=no
699               ])
700
701         AS_CASE([$have_xinput],
702
703                 [yes],
704                 [
705                   AC_CHECK_HEADERS([X11/extensions/XInput2.h],
706                                    [
707                                      have_xinput2=yes
708                                      AC_DEFINE([HAVE_XINPUT_2],
709                                                [1],
710                                                [Define to 1 if XI2 is available])
711                                    ],
712                                    [
713                                      have_xinput2=no
714                                      AC_DEFINE([HAVE_XINPUT],
715                                                [1],
716                                                [Define to 1 if XInput is available])
717                                    ])
718
719                   clutter_save_LIBS="$LIBS"
720                   LIBS="$LIBS -lXi"
721
722                   AC_CHECK_FUNC([XIAllowTouchEvents],
723                                 [
724                                   AC_CHECK_MEMBER([XIScrollClassInfo.number],
725                                                   [
726                                                     have_xinput_2_2=yes
727                                                     AC_DEFINE([XINPUT_2_2], [1], [Define to 1 if XInput 2.2 is available])
728                                                   ],
729                                                   [have_xinput_2_2=no],
730                                                   [[#include <X11/extensions/XInput2.h>]])])
731
732                   LIBS="$clutter_save_LIBS"
733
734                   X11_LIBS="$X11_LIBS $XINPUT_LIBS"
735                   X11_PC_FILES="$X11_PC_FILES xi"
736
737                   AS_IF([test "x$have_xinput_2_2" = "xyes"],
738                         [X11_EXTS="$X11_EXTS xi2.2"],
739                         [X11_EXTS="$X11_EXTS xi2.0"])
740                 ],
741
742                 [no],
743                 [have_xinput2=no],
744
745                 [*],
746                 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
747         )
748
749         # XKB
750         clutter_save_CPPFLAGS="$CPPFLAGS"
751         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
752
753         clutter_save_LIBS="$LIBS"
754         LIBS="$LIBS $X11_LIBS"
755
756         have_xkb=no
757         AC_CHECK_FUNC([XkbQueryExtension],
758                       [
759                         AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
760                         have_xkb=yes
761
762                         X11_EXTS="$X11_EXTS xkb"
763                       ])
764
765         CPPFLAGS="$clutter_save_CPPFLAGS"
766         LIBS="$clutter_save_LIBS"
767
768         x11_tests=yes
769         BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
770         FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
771         FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
772       ]
773 )
774
775 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
776 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
777
778 X11_EXTS=${X11_EXTS#* }
779
780 AC_CACHE_SAVE
781
782 dnl === Enable GDK-Pixbuf in tests ============================================
783
784 m4_define([pixbuf_default], [yes])
785 AC_ARG_ENABLE([gdk-pixbuf],
786               [AS_HELP_STRING([--enable-gdk-pixbuf=@<:@no/yes@:>@],
787                               [Enable tests using GDK-Pixbuf @<:@default=]pixbuf_default[@:>@])],
788               [enable_pixbuf=$enable_val],
789               [enable_pixbuf=pixbuf_default])
790
791 AS_CASE([$enable_pixbuf],
792
793         [yes],
794         [
795           PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0])
796           AC_SUBST(GDK_PIXBUF_CFLAGS)
797           AC_SUBST(GDK_PIXBUF_LIBS)
798           pixbuf_tests=yes
799         ],
800
801         [no],
802         [
803           pixbuf_tests=no
804         ]
805 )
806
807 AM_CONDITIONAL([PIXBUF_TESTS], [test "x$pixbuf_tests" = "xyes"])
808
809 dnl === Enable debug level ====================================================
810
811 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
812 AC_ARG_ENABLE([debug],
813               [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
814                               [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
815               [],
816               [enable_debug=debug_default])
817
818 AS_CASE([$enable_debug],
819
820         [yes],
821         [
822           test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
823           CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
824         ],
825
826         [minimum],
827         [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
828
829         [no],
830         [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
831
832         [AC_MSG_ERROR([Unknown argument for --enable-debug])]
833 )
834
835 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
836
837 dnl === Enable deprecation guards ==================================================
838
839 m4_define([deprecated_default],
840           [m4_if(m4_eval(clutter_minor_version % 2),
841                  [1],
842                  [no],
843                  [yes])])
844
845 AC_ARG_ENABLE([deprecated],
846               [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
847                               [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
848               [],
849               [enable_deprecated=deprecated_default])
850
851 AS_CASE([$enable_deprecated],
852
853         [no],
854         [
855           CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
856         ],
857
858         [yes],
859         [
860           CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
861         ],
862
863         [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
864 )
865
866 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
867
868
869 dnl === Conformance test suite ================================================
870
871 AC_ARG_ENABLE([conformance],
872               [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
873                               [Build conformance test suite @<:@default=yes@:>@])],
874               [],
875               [enable_conformance=yes])
876
877 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
878
879 dnl === Profiling =============================================================
880
881 m4_define([profile_default], [no])
882 AC_ARG_ENABLE(profile,
883               AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
884                              [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@:>@]),
885               [],
886               [enable_profile=profile_default])
887
888 AS_CASE([$enable_profile],
889
890         [yes],
891         [
892           AS_IF([test "x$GCC" = "xyes"],
893                 [
894                   PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
895                   CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
896                   CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
897
898                   AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
899                 ],
900                 [
901                   AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
902                 ])
903         ],
904
905         [no],
906         [
907           CLUTTER_PROFILE_CFLAGS=""
908           CLUTTER_PROFILE_LDFLAGS=""
909         ],
910
911         [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
912 )
913 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
914 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
915 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
916
917 dnl === Coverage report =======================================================
918
919 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
920
921 AC_MSG_CHECKING([whether to build with gcov testing])
922
923 AC_ARG_ENABLE([gcov],
924               [AS_HELP_STRING([--enable-gcov],
925                               [Whether to enable coverage testing (requires gcc
926 and gcov)])],
927               [],
928               [enable_gcov=no])
929
930 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
931       [
932         AS_IF([test "x$enable_conformance" = "xno"],
933               [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
934               [AC_MSG_RESULT([yes])]
935         )
936
937         GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
938         GCOV_LDFLAGS="-lgcov"
939       ],
940       [AC_MSG_RESULT([no])]
941 )
942
943 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
944 AC_SUBST([GCOV_CFLAGS])
945 AC_SUBST([GCOV_LDFLAGS])
946
947 dnl === Enable strict compiler flags ==========================================
948
949 # use strict compiler flags only when building from git; the rules for
950 # distcheck will take care of turning this on when making a release
951 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
952 AC_ARG_ENABLE([maintainer-flags],
953               [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
954                               [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
955               [],
956               [enable_maintainer_flags=maintainer_flags_default])
957
958 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
959                            -Wall -Wcast-align -Wuninitialized
960                            -Wno-strict-aliasing -Wempty-body -Wformat
961                            -Wformat-security -Wformat-nonliteral -Winit-self
962                            -Wdeclaration-after-statement -Wvla
963                            -Wpointer-arith -Wmissing-declarations
964                            -Waggregate-returns -Wcast-align
965                            -Wredundant-decls"
966
967 AS_CASE([$enable_maintainer_flags],
968         [yes],
969         [
970           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
971         ],
972
973         [no],
974         [
975         ],
976
977         [error],
978         [
979           MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
980           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
981         ],
982
983         [*],
984         [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
985 )
986
987 # strip leading spaces
988 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#*  }
989 AC_SUBST(MAINTAINER_CFLAGS)
990
991 dnl === Dependencies, compiler flags and linker libraries =====================
992 # strip leading space
993 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
994
995 # public dependencies, will fill the Requires: field of clutter.pc
996 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
997 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
998
999 # private dependencies, will fill the Requires.private: field of clutter.pc
1000 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
1001       [
1002         CLUTTER_REQUIRES_PRIVATE=""
1003         CLUTTER_DEPS_PRIVATE_CFLAGS=""
1004         CLUTTER_DEPS_PRIVATE_LIBS=""
1005       ],
1006       [
1007         CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
1008         PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
1009       ])
1010
1011 AC_SUBST(CLUTTER_REQUIRES)
1012 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
1013
1014 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
1015 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
1016 AC_SUBST(CLUTTER_CFLAGS)
1017 AC_SUBST(CLUTTER_LIBS)
1018
1019
1020 dnl === GObject-Introspection check ===========================================
1021
1022 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
1023
1024 dnl === GTK Doc check =========================================================
1025
1026 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
1027
1028 # we don't want to build the documentation from a Git clone unless we
1029 # explicitly tell configure to do so; this allows avoiding to recurse into
1030 # the documentation directory when building Clutter inside Poky for a
1031 # target device that doesn't have gtk-doc installed. for reference
1032 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
1033 #
1034 # we use autogen.sh as it exists only inside the Git clones, and it
1035 # is not packaged into tarballs.
1036 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
1037
1038 # prefixes for fixing gtk-doc references
1039 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
1040 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
1041 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
1042 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
1043 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
1044 AC_SUBST(CAIRO_PREFIX)
1045 AC_SUBST(GLIB_PREFIX)
1046 AC_SUBST(PANGO_PREFIX)
1047 AC_SUBST(COGL_PREFIX)
1048 AC_SUBST(ATK_PREFIX)
1049
1050 dnl === Manual ================================================================
1051
1052 AC_ARG_ENABLE([docs],
1053               [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1054                               [Build optional documentation; requires xsltproc and jw.])],
1055               [enable_docs=$enableval],
1056               [enable_docs=no])
1057
1058 enable_pdfs=no
1059 AS_IF([test "x$enable_docs" = "xyes"],
1060       [
1061         AC_PATH_PROG(JW, [jw], [no])
1062         AS_IF([test "x$JW" = "xno"],
1063               [
1064                 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1065               ],
1066               [enable_pdfs=yes])
1067
1068         AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1069         AS_IF([test "x$XSLTPROC" = "xno"],
1070               [
1071                 AC_MSG_ERROR([xsltproc not found])
1072               ])
1073       ]
1074 )
1075
1076 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1077 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1078
1079 dnl === I18N ==================================================================
1080
1081 AM_GNU_GETTEXT_VERSION([0.17])
1082 AM_GNU_GETTEXT([external])
1083
1084 GETTEXT_PACKAGE="clutter-1.0"
1085 AC_SUBST(GETTEXT_PACKAGE)
1086 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1087                    ["$GETTEXT_PACKAGE"],
1088                    [The prefix for our gettext translation domains.])
1089 AS_ALL_LINGUAS
1090
1091 dnl ===========================================================================
1092
1093 AC_CONFIG_FILES([
1094         Makefile
1095         config.h.win32
1096         README
1097
1098         build/Makefile
1099         build/autotools/Makefile
1100         build/mingw/Makefile
1101         build/win32/Makefile
1102         build/win32/vs9/Makefile
1103         build/win32/vs10/Makefile
1104
1105         clutter/Makefile
1106         clutter/clutter-config.h
1107         clutter/clutter-version.h
1108         clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1109
1110         clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1111
1112         clutter/cex100/clutter-cex100.h
1113
1114         tests/Makefile
1115         tests/accessibility/Makefile
1116         tests/conform/Makefile
1117         tests/conform/test-launcher.sh
1118         tests/data/Makefile
1119         tests/interactive/Makefile
1120         tests/interactive/wrapper.sh
1121         tests/micro-bench/Makefile
1122         tests/performance/Makefile
1123
1124         doc/Makefile
1125         doc/reference/Makefile
1126         doc/reference/clutter/Makefile
1127         doc/reference/clutter/clutter-docs.xml
1128         doc/reference/cally/Makefile
1129         doc/reference/cally/cally-docs.xml
1130         doc/common/Makefile
1131         doc/cookbook/Makefile
1132         doc/cookbook/clutter-cookbook.xml
1133         doc/cookbook/examples/Makefile
1134
1135         po/Makefile.in
1136 ])
1137
1138 AC_OUTPUT
1139
1140 dnl === Summary ===============================================================
1141
1142 echo ""
1143 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1144
1145 # Global flags
1146 echo ""
1147 echo " • Global:"
1148 echo "        Prefix: ${prefix}"
1149 echo "        Libdir: ${libdir}"
1150 echo "        Sysconfdir: ${sysconfdir}"
1151
1152 # Compiler/Debug related flags
1153 echo ""
1154 echo " • Compiler options:"
1155 echo "        Clutter debug level: ${enable_debug}"
1156 echo "        Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1157 echo "        Profiling enabled: ${enable_profile}"
1158 echo "        Enable coverage tests: ${enable_gcov}"
1159 echo "        Enable deprecated symbols: ${enable_deprecated}"
1160
1161 # Documentation
1162 echo ""
1163 echo " • Documentation:"
1164 echo "        Build API Reference: ${enable_gtk_doc}"
1165 echo "        Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1166
1167 # Miscellaneous
1168 echo ""
1169 echo " • Extra:"
1170 echo "        Build introspection data: ${enable_introspection}"
1171 echo "        Build conformance test suite: ${enable_conformance}"
1172 echo "        Build X11-specific tests: ${x11_tests}"
1173 echo "        Build tests using GDK-Pixbuf: ${pixbuf_tests}"
1174
1175 # Clutter backend related flags
1176 echo ""
1177 echo " • Clutter Backends:"
1178
1179 if test "x$experimental_backend" = "xno"; then
1180 echo "        Windowing systems: ${CLUTTER_BACKENDS}"
1181 else
1182 echo "        Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1183 fi
1184
1185 if test "x$experimental_input_backend" = "xno"; then
1186 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS}"
1187 else
1188 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1189 fi
1190
1191 if test "x$SUPPORT_X11" = "x1"; then
1192 echo ""
1193 echo "     - X11 backend options:"
1194 echo "        Enabled extensions: ${X11_EXTS}"
1195 fi
1196
1197 if test "x$SUPPORT_CEX100" = "x1"; then
1198 echo ""
1199 echo "     - CEx100 backend options (WARNING: Experimental):"
1200 echo "        libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1201 fi
1202
1203 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1204 echo ""
1205 echo "     - Wayland compositor support enabled (WARNING: Experimental)"
1206 fi
1207
1208 echo ""
1209
1210 # General warning about experimental features
1211 if test "x$experimental_backend" = "xyes"; then
1212 echo ""
1213 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1214 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1215 echo ""
1216 echo "  The stability of your build might be affected by one or more"
1217 echo "  experimental backends or experimental and unsupported features"
1218 echo ""
1219 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1220 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1221 echo ""
1222 fi