build: Check for gdk-pixbuf
[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], [15])
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                   X11_LIBS="$X11_LIBS $XINPUT_LIBS"
720                   X11_PC_FILES="$X11_PC_FILES xi"
721                   X11_EXTS="$X11_EXTS xi"
722                 ],
723
724                 [no],
725                 [have_xinput2=no],
726
727                 [*],
728                 [AC_MSG_ERROR([Invalid argument for --enable-xinput])]
729         )
730
731         # XKB
732         clutter_save_CPPFLAGS="$CPPFLAGS"
733         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
734
735         clutter_save_LIBS="$LIBS"
736         LIBS="$LIBS $X11_LIBS"
737
738         have_xkb=no
739         AC_CHECK_FUNC([XkbQueryExtension],
740                       [
741                         AC_DEFINE(HAVE_XKB, 1, [Define to use XKB extension])
742                         have_xkb=yes
743
744                         X11_EXTS="$X11_EXTS xkb"
745                       ])
746
747         CPPFLAGS="$clutter_save_CPPFLAGS"
748         LIBS="$clutter_save_LIBS"
749
750         x11_tests=yes
751         BACKEND_PC_FILES="$BACKEND_PC_FILES $X11_PC_FILES"
752         FLAVOUR_LIBS="$FLAVOUR_LIBS $X11_LIBS"
753         FLAVOUR_CFLAGS="$FLAVOUR_CFLAGS $X11_CFLAGS"
754       ]
755 )
756
757 AM_CONDITIONAL([BUILD_XI2], [test "x$have_xinput2" = "xyes"])
758 AM_CONDITIONAL([X11_TESTS], [test "x$x11_tests" = "xyes"])
759
760 X11_EXTS=${X11_EXTS#* }
761
762 AC_CACHE_SAVE
763
764 dnl === Enable GDK-Pixbuf in tests ============================================
765
766 m4_define([pixbuf_default], [yes])
767 AC_ARG_ENABLE([gdk-pixbuf],
768               [AS_HELP_STRING([--enable-gdk-pixbuf=@<:@no/yes@:>@],
769                               [Enable tests using GDK-Pixbuf @<:@default=]pixbuf_default[@:>@])],
770               [enable_pixbuf=$enable_val],
771               [enable_pixbuf=pixbuf_default])
772
773 AS_CASE([$enable_pixbuf],
774
775         [yes],
776         [
777           PKG_CHECK_MODULES([GDK_PIXBUF], [gdk-pixbuf-2.0])
778           AC_SUBST(GDK_PIXBUF_CFLAGS)
779           AC_SUBST(GDK_PIXBUF_LIBS)
780           pixbuf_tests=yes
781         ],
782
783         [no],
784         [
785           pixbuf_tests=no
786         ]
787 )
788
789 AM_CONDITIONAL([PIXBUF_TESTS], [test "x$pixbuf_tests" = "xyes"])
790
791 dnl === Enable debug level ====================================================
792
793 m4_define([debug_default], [m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum])])
794 AC_ARG_ENABLE([debug],
795               [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
796                               [Control Clutter debugging level @<:@default=]debug_default[@:>@])],
797               [],
798               [enable_debug=debug_default])
799
800 AS_CASE([$enable_debug],
801
802         [yes],
803         [
804           test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
805           CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
806         ],
807
808         [minimum],
809         [CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"],
810
811         [no],
812         [CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"],
813
814         [AC_MSG_ERROR([Unknown argument for --enable-debug])]
815 )
816
817 AC_SUBST(CLUTTER_DEBUG_CFLAGS)
818
819 dnl === Enable deprecation guards ==================================================
820
821 m4_define([deprecated_default],
822           [m4_if(m4_eval(clutter_minor_version % 2),
823                  [1],
824                  [no],
825                  [yes])])
826
827 AC_ARG_ENABLE([deprecated],
828               [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
829                               [Whether deprecated symbols should be disabled when compiling Clutter @<:@default=]deprecated_default[@:>@])],
830               [],
831               [enable_deprecated=deprecated_default])
832
833 AS_CASE([$enable_deprecated],
834
835         [no],
836         [
837           CLUTTER_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED"
838         ],
839
840         [yes],
841         [
842           CLUTTER_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS"
843         ],
844
845         [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
846 )
847
848 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
849
850
851 dnl === Conformance test suite ================================================
852
853 AC_ARG_ENABLE([conformance],
854               [AS_HELP_STRING([--enable-conformance=@<:@no/yes@:>@],
855                               [Build conformance test suite @<:@default=yes@:>@])],
856               [],
857               [enable_conformance=yes])
858
859 AM_CONDITIONAL([BUILD_TESTS], [test "x$enable_conformance" = "xyes"])
860
861 dnl === Profiling =============================================================
862
863 m4_define([profile_default], [no])
864 AC_ARG_ENABLE(profile,
865               AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
866                              [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@:>@]),
867               [],
868               [enable_profile=profile_default])
869
870 AS_CASE([$enable_profile],
871
872         [yes],
873         [
874           AS_IF([test "x$GCC" = "xyes"],
875                 [
876                   PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
877                   CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
878                   CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
879
880                   AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
881                 ],
882                 [
883                   AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
884                 ])
885         ],
886
887         [no],
888         [
889           CLUTTER_PROFILE_CFLAGS=""
890           CLUTTER_PROFILE_LDFLAGS=""
891         ],
892
893         [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
894 )
895 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
896 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
897 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
898
899 dnl === Coverage report =======================================================
900
901 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
902
903 AC_MSG_CHECKING([whether to build with gcov testing])
904
905 AC_ARG_ENABLE([gcov],
906               [AS_HELP_STRING([--enable-gcov],
907                               [Whether to enable coverage testing (requires gcc
908 and gcov)])],
909               [],
910               [enable_gcov=no])
911
912 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
913       [
914         AS_IF([test "x$enable_conformance" = "xno"],
915               [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
916               [AC_MSG_RESULT([yes])]
917         )
918
919         GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
920         GCOV_LDFLAGS="-lgcov"
921       ],
922       [AC_MSG_RESULT([no])]
923 )
924
925 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
926 AC_SUBST([GCOV_CFLAGS])
927 AC_SUBST([GCOV_LDFLAGS])
928
929 dnl === Enable strict compiler flags ==========================================
930
931 # use strict compiler flags only when building from git; the rules for
932 # distcheck will take care of turning this on when making a release
933 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
934 AC_ARG_ENABLE([maintainer-flags],
935               [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
936                               [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
937               [],
938               [enable_maintainer_flags=maintainer_flags_default])
939
940 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
941                            -Wall -Wcast-align -Wuninitialized
942                            -Wno-strict-aliasing -Wempty-body -Wformat
943                            -Wformat-security -Wformat-nonliteral -Winit-self
944                            -Wdeclaration-after-statement -Wvla
945                            -Wpointer-arith -Wmissing-declarations
946                            -Waggregate-returns -Wcast-align
947                            -Wredundant-decls"
948
949 AS_CASE([$enable_maintainer_flags],
950         [yes],
951         [
952           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
953         ],
954
955         [no],
956         [
957         ],
958
959         [error],
960         [
961           MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
962           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
963         ],
964
965         [*],
966         [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
967 )
968
969 # strip leading spaces
970 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#*  }
971 AC_SUBST(MAINTAINER_CFLAGS)
972
973 dnl === Dependencies, compiler flags and linker libraries =====================
974 # strip leading space
975 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
976
977 # public dependencies, will fill the Requires: field of clutter.pc
978 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
979 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
980
981 # private dependencies, will fill the Requires.private: field of clutter.pc
982 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
983       [
984         CLUTTER_REQUIRES_PRIVATE=""
985         CLUTTER_DEPS_PRIVATE_CFLAGS=""
986         CLUTTER_DEPS_PRIVATE_LIBS=""
987       ],
988       [
989         CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
990         PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
991       ])
992
993 AC_SUBST(CLUTTER_REQUIRES)
994 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
995
996 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
997 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
998 AC_SUBST(CLUTTER_CFLAGS)
999 AC_SUBST(CLUTTER_LIBS)
1000
1001
1002 dnl === GObject-Introspection check ===========================================
1003
1004 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
1005
1006 dnl === GTK Doc check =========================================================
1007
1008 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
1009
1010 # we don't want to build the documentation from a Git clone unless we
1011 # explicitly tell configure to do so; this allows avoiding to recurse into
1012 # the documentation directory when building Clutter inside Poky for a
1013 # target device that doesn't have gtk-doc installed. for reference
1014 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
1015 #
1016 # we use autogen.sh as it exists only inside the Git clones, and it
1017 # is not packaged into tarballs.
1018 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
1019
1020 # prefixes for fixing gtk-doc references
1021 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
1022 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
1023 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
1024 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
1025 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
1026 AC_SUBST(CAIRO_PREFIX)
1027 AC_SUBST(GLIB_PREFIX)
1028 AC_SUBST(PANGO_PREFIX)
1029 AC_SUBST(COGL_PREFIX)
1030 AC_SUBST(ATK_PREFIX)
1031
1032 dnl === Manual ================================================================
1033
1034 AC_ARG_ENABLE([docs],
1035               [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1036                               [Build optional documentation; requires xsltproc and jw.])],
1037               [enable_docs=$enableval],
1038               [enable_docs=no])
1039
1040 enable_pdfs=no
1041 AS_IF([test "x$enable_docs" = "xyes"],
1042       [
1043         AC_PATH_PROG(JW, [jw], [no])
1044         AS_IF([test "x$JW" = "xno"],
1045               [
1046                 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1047               ],
1048               [enable_pdfs=yes])
1049
1050         AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1051         AS_IF([test "x$XSLTPROC" = "xno"],
1052               [
1053                 AC_MSG_ERROR([xsltproc not found])
1054               ])
1055       ]
1056 )
1057
1058 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1059 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1060
1061 dnl === I18N ==================================================================
1062
1063 AM_GNU_GETTEXT_VERSION([0.17])
1064 AM_GNU_GETTEXT([external])
1065
1066 GETTEXT_PACKAGE="clutter-1.0"
1067 AC_SUBST(GETTEXT_PACKAGE)
1068 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1069                    ["$GETTEXT_PACKAGE"],
1070                    [The prefix for our gettext translation domains.])
1071 AS_ALL_LINGUAS
1072
1073 dnl ===========================================================================
1074
1075 AC_CONFIG_FILES([
1076         Makefile
1077         config.h.win32
1078         README
1079
1080         build/Makefile
1081         build/autotools/Makefile
1082         build/mingw/Makefile
1083         build/win32/Makefile
1084         build/win32/vs9/Makefile
1085         build/win32/vs10/Makefile
1086
1087         clutter/Makefile
1088         clutter/clutter-config.h
1089         clutter/clutter-version.h
1090         clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1091
1092         clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1093
1094         clutter/cex100/clutter-cex100.h
1095
1096         tests/Makefile
1097         tests/accessibility/Makefile
1098         tests/conform/Makefile
1099         tests/conform/test-launcher.sh
1100         tests/data/Makefile
1101         tests/interactive/Makefile
1102         tests/interactive/wrapper.sh
1103         tests/micro-bench/Makefile
1104         tests/performance/Makefile
1105
1106         doc/Makefile
1107         doc/reference/Makefile
1108         doc/reference/clutter/Makefile
1109         doc/reference/clutter/clutter-docs.xml
1110         doc/reference/cally/Makefile
1111         doc/reference/cally/cally-docs.xml
1112         doc/common/Makefile
1113         doc/cookbook/Makefile
1114         doc/cookbook/clutter-cookbook.xml
1115         doc/cookbook/examples/Makefile
1116
1117         po/Makefile.in
1118 ])
1119
1120 AC_OUTPUT
1121
1122 dnl === Summary ===============================================================
1123
1124 echo ""
1125 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1126
1127 # Global flags
1128 echo ""
1129 echo " • Global:"
1130 echo "        Prefix: ${prefix}"
1131 echo "        Libdir: ${libdir}"
1132 echo "        Sysconfdir: ${sysconfdir}"
1133
1134 # Compiler/Debug related flags
1135 echo ""
1136 echo " • Compiler options:"
1137 echo "        Clutter debug level: ${enable_debug}"
1138 echo "        Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1139 echo "        Profiling enabled: ${enable_profile}"
1140 echo "        Enable coverage tests: ${enable_gcov}"
1141 echo "        Enable deprecated symbols: ${enable_deprecated}"
1142
1143 # Documentation
1144 echo ""
1145 echo " • Documentation:"
1146 echo "        Build API Reference: ${enable_gtk_doc}"
1147 echo "        Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1148
1149 # Miscellaneous
1150 echo ""
1151 echo " • Extra:"
1152 echo "        Build introspection data: ${enable_introspection}"
1153 echo "        Build conformance test suite: ${enable_conformance}"
1154 echo "        Build X11-specific tests: ${x11_tests}"
1155 echo "        Build tests using GDK-Pixbuf: ${pixbuf_tests}"
1156
1157 # Clutter backend related flags
1158 echo ""
1159 echo " • Clutter Backends:"
1160
1161 if test "x$experimental_backend" = "xno"; then
1162 echo "        Windowing systems: ${CLUTTER_BACKENDS}"
1163 else
1164 echo "        Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1165 fi
1166
1167 if test "x$experimental_input_backend" = "xno"; then
1168 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS}"
1169 else
1170 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1171 fi
1172
1173 if test "x$SUPPORT_X11" = "x1"; then
1174 echo ""
1175 echo "     - X11 backend options:"
1176 echo "        Enabled extensions: ${X11_EXTS}"
1177 fi
1178
1179 if test "x$SUPPORT_CEX100" = "x1"; then
1180 echo ""
1181 echo "     - CEx100 backend options (WARNING: Experimental):"
1182 echo "        libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1183 fi
1184
1185 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1186 echo ""
1187 echo "     - Wayland compositor support enabled (WARNING: Experimental)"
1188 fi
1189
1190 echo ""
1191
1192 # General warning about experimental features
1193 if test "x$experimental_backend" = "xyes"; then
1194 echo ""
1195 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1196 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1197 echo ""
1198 echo "  The stability of your build might be affected by one or more"
1199 echo "  experimental backends or experimental and unsupported features"
1200 echo ""
1201 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1202 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1203 echo ""
1204 fi