build: Allow disabling all tests and examples
[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], [11])
13 m4_define([clutter_micro_version], [3])
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.30])
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([HAVE_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"
861         ],
862
863         [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
864 )
865
866 AC_SUBST([CLUTTER_DEPRECATED_CFLAGS])
867
868
869 dnl === Profiling =============================================================
870
871 m4_define([profile_default], [no])
872 AC_ARG_ENABLE(profile,
873               AS_HELP_STRING([--enable-profile=@<:@no/yes@:>@],
874                              [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@:>@]),
875               [],
876               [enable_profile=profile_default])
877
878 AS_CASE([$enable_profile],
879
880         [yes],
881         [
882           AS_IF([test "x$GCC" = "xyes"],
883                 [
884                   PKG_CHECK_MODULES([PROFILE_DEP], [uprof-0.3])
885                   CLUTTER_PROFILE_CFLAGS="-DCLUTTER_ENABLE_PROFILE $PROFILE_DEP_CFLAGS"
886                   CLUTTER_PROFILE_LDFLAGS="$PROFILE_DEP_LIBS"
887
888                   AS_IF([test "x$enable_debug" = "xyes"], [CLUTTER_PROFILE_CFLAGS+=" -DUPROF_DEBUG"])
889                 ],
890                 [
891                   AC_MSG_ERROR([--enable-profile is currently only supported if using GCC])
892                 ])
893         ],
894
895         [no],
896         [
897           CLUTTER_PROFILE_CFLAGS=""
898           CLUTTER_PROFILE_LDFLAGS=""
899         ],
900
901         [*], [AC_MSG_ERROR([Invalid value for --enable-profile])]
902 )
903 AM_CONDITIONAL(PROFILE, test "x$enable_profile" != "xno")
904 AC_SUBST(CLUTTER_PROFILE_CFLAGS)
905 AC_SUBST(CLUTTER_PROFILE_LDFLAGS)
906
907 dnl === Coverage report =======================================================
908
909 AC_PATH_PROG([GCOV], [gcov], [enable_gcov=no])
910
911 AC_MSG_CHECKING([whether to build with gcov testing])
912
913 AC_ARG_ENABLE([gcov],
914               [AS_HELP_STRING([--enable-gcov],
915                               [Whether to enable coverage testing (requires gcc
916 and gcov)])],
917               [],
918               [enable_gcov=no])
919
920 AS_IF([test "x$enable_gcov" = "xyes" && test "x$GCC" = "xyes"],
921       [
922         AS_IF([test "x$enable_conformance" = "xno"],
923               [AC_MSG_WARN([Conformance test suite is disabled, the coverage report will be incomplete])],
924               [AC_MSG_RESULT([yes])]
925         )
926
927         GCOV_CFLAGS="-g -O0 -fprofile-arcs -ftest-coverage"
928         GCOV_LDFLAGS="-lgcov"
929       ],
930       [AC_MSG_RESULT([no])]
931 )
932
933 AM_CONDITIONAL([GCOV_ENABLED], [test "x$enable_gcov" = "xyes"])
934 AC_SUBST([GCOV_CFLAGS])
935 AC_SUBST([GCOV_LDFLAGS])
936
937 dnl === Enable strict compiler flags ==========================================
938
939 # use strict compiler flags only when building from git; the rules for
940 # distcheck will take care of turning this on when making a release
941 m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_micro_version % 2), [1], [yes], [no])])
942 AC_ARG_ENABLE([maintainer-flags],
943               [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes/error@:>@],
944                               [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
945               [],
946               [enable_maintainer_flags=maintainer_flags_default])
947
948 MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS
949                            -Wall -Wcast-align -Wuninitialized
950                            -Wno-strict-aliasing -Wempty-body -Wformat
951                            -Wformat-security -Wformat-nonliteral -Winit-self
952                            -Wdeclaration-after-statement -Wvla
953                            -Wpointer-arith -Wmissing-declarations
954                            -Wcast-align
955                            -Wredundant-decls"
956
957 AS_CASE([$enable_maintainer_flags],
958         [yes],
959         [
960           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
961         ],
962
963         [no],
964         [
965         ],
966
967         [error],
968         [
969           MAINTAINER_COMPILER_FLAGS="$MAINTAINER_COMPILER_FLAGS -Werror"
970           AS_COMPILER_FLAGS([MAINTAINER_CFLAGS], [$MAINTAINER_COMPILER_FLAGS])
971         ],
972
973         [*],
974         [AC_MSG_ERROR([Invalid option for --enable-maintainer-flags])]
975 )
976
977 # strip leading spaces
978 MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#*  }
979 AC_SUBST(MAINTAINER_CFLAGS)
980
981 dnl === Dependencies, compiler flags and linker libraries =====================
982 # strip leading space
983 BACKEND_PC_FILES=${BACKEND_PC_FILES#* }
984
985 # public dependencies, will fill the Requires: field of clutter.pc
986 CLUTTER_REQUIRES="$CLUTTER_BASE_PC_FILES $BACKEND_PC_FILES"
987 PKG_CHECK_MODULES(CLUTTER_DEPS, [$CLUTTER_REQUIRES])
988
989 # private dependencies, will fill the Requires.private: field of clutter.pc
990 AS_IF([test "x$CLUTTER_BASE_PC_FILES_PRIVATE" = "x" && test "x$BACKEND_PC_FILES_PRIVATE" = "x"],
991       [
992         CLUTTER_REQUIRES_PRIVATE=""
993         CLUTTER_DEPS_PRIVATE_CFLAGS=""
994         CLUTTER_DEPS_PRIVATE_LIBS=""
995       ],
996       [
997         CLUTTER_REQUIRES_PRIVATE="$CLUTTER_BASE_PC_FILES_PRIVATE $BACKEND_PC_FILES_PRIVATE"
998         PKG_CHECK_MODULES(CLUTTER_DEPS_PRIVATE, [$CLUTTER_REQUIRES_PRIVATE])
999       ])
1000
1001 AC_SUBST(CLUTTER_REQUIRES)
1002 AC_SUBST(CLUTTER_REQUIRES_PRIVATE)
1003
1004 CLUTTER_CFLAGS="$FLAVOUR_CFLAGS $CLUTTER_DEPS_CFLAGS $CLUTTER_DEPS_PRIVATE_CFLAGS $CLUTTER_PROFILE_CFLAGS $GLIB_CFLAGS"
1005 CLUTTER_LIBS="$FLAVOUR_LIBS $CLUTTER_DEPS_LIBS $CLUTTER_DEPS_PRIVATE_LIBS $CLUTTER_PROFILE_LDFLAGS $GLIB_LIBS"
1006 AC_SUBST(CLUTTER_CFLAGS)
1007 AC_SUBST(CLUTTER_LIBS)
1008
1009
1010 dnl === GObject-Introspection check ===========================================
1011
1012 GOBJECT_INTROSPECTION_CHECK([gi_req_version])
1013
1014 dnl === GTK Doc check =========================================================
1015
1016 GTK_DOC_CHECK([gtk_doc_req_version], [--flavour no-tmpl])
1017
1018 # we don't want to build the documentation from a Git clone unless we
1019 # explicitly tell configure to do so; this allows avoiding to recurse into
1020 # the documentation directory when building Clutter inside Poky for a
1021 # target device that doesn't have gtk-doc installed. for reference
1022 # see: http://bugzilla.openedhand.com/show_bug.cgi?id=1047
1023 #
1024 # we use autogen.sh as it exists only inside the Git clones, and it
1025 # is not packaged into tarballs.
1026 AM_CONDITIONAL([BUILD_GTK_DOC], [test "x$enable_gtk_doc" = "xyes" || test ! -f "autogen.sh"])
1027
1028 # prefixes for fixing gtk-doc references
1029 CAIRO_PREFIX="`$PKG_CONFIG --variable=prefix cairo`"
1030 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
1031 PANGO_PREFIX="`$PKG_CONFIG --variable=prefix pango`"
1032 COGL_PREFIX="`$PKG_CONFIG --variable=prefix cogl-1.0`"
1033 ATK_PREFIX="`$PKG_CONFIG --variable=prefix atk`"
1034 AC_SUBST(CAIRO_PREFIX)
1035 AC_SUBST(GLIB_PREFIX)
1036 AC_SUBST(PANGO_PREFIX)
1037 AC_SUBST(COGL_PREFIX)
1038 AC_SUBST(ATK_PREFIX)
1039
1040 dnl === Manual ================================================================
1041
1042 AC_ARG_ENABLE([docs],
1043               [AS_HELP_STRING([--enable-docs=@<:@no/yes@:>@],
1044                               [Build optional documentation; requires xsltproc and jw.])],
1045               [enable_docs=$enableval],
1046               [enable_docs=no])
1047
1048 enable_pdfs=no
1049 AS_IF([test "x$enable_docs" = "xyes"],
1050       [
1051         AC_PATH_PROG(JW, [jw], [no])
1052         AS_IF([test "x$JW" = "xno"],
1053               [
1054                 AC_MSG_WARN([jw not found; pdf generation has been disabled])
1055               ],
1056               [enable_pdfs=yes])
1057
1058         AC_PATH_PROG(XSLTPROC, [xsltproc], [no])
1059         AS_IF([test "x$XSLTPROC" = "xno"],
1060               [
1061                 AC_MSG_ERROR([xsltproc not found])
1062               ])
1063       ]
1064 )
1065
1066 AM_CONDITIONAL(ENABLE_DOCS, [test "x$enable_docs" = "xyes"])
1067 AM_CONDITIONAL(ENABLE_PDFS, [test "x$enable_pdfs" = "xyes"])
1068
1069 dnl === I18N ==================================================================
1070
1071 AM_GNU_GETTEXT_VERSION([0.17])
1072 AM_GNU_GETTEXT([external])
1073
1074 GETTEXT_PACKAGE="clutter-1.0"
1075 AC_SUBST(GETTEXT_PACKAGE)
1076 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE],
1077                    ["$GETTEXT_PACKAGE"],
1078                    [The prefix for our gettext translation domains.])
1079 AS_ALL_LINGUAS
1080
1081 dnl = Build optionals =========================================================
1082
1083 dnl === Conformance test suite ================================================
1084
1085 AC_ARG_ENABLE([conformance],
1086               [AS_HELP_STRING([--disable-conformance], [Whether the conformance tests should be built])],
1087               [],
1088               [enable_conformance=yes])
1089
1090 AC_ARG_ENABLE([tests],
1091               [AS_HELP_STRING([--disable-tests], [Whether tests should be built])],
1092               [],
1093               [enable_tests=yes])
1094 AM_CONDITIONAL(BUILD_TESTS, [test "x$enable_tests" = "xyes" && "x$enable_conformance" = "xyes"])
1095
1096 AC_ARG_ENABLE([examples],
1097               [AS_HELP_STRING([--disable-examples], [Whether examples should be built])],
1098               [],
1099               [enable_examples=yes])
1100 AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$enable_examples" = "xyes"])
1101
1102 dnl ===========================================================================
1103
1104 AC_CONFIG_FILES([
1105         Makefile
1106         config.h.win32
1107         README
1108
1109         build/Makefile
1110         build/autotools/Makefile
1111         build/mingw/Makefile
1112         build/win32/Makefile
1113         build/win32/vs9/Makefile
1114         build/win32/vs10/Makefile
1115
1116         clutter/Makefile
1117         clutter/clutter-config.h
1118         clutter/clutter-version.h
1119         clutter/clutter-$CLUTTER_API_VERSION.pc:clutter/clutter.pc.in
1120
1121         clutter/cally/cally-$CLUTTER_API_VERSION.pc:clutter/cally/cally.pc.in
1122
1123         clutter/cex100/clutter-cex100.h
1124
1125         tests/Makefile
1126         tests/accessibility/Makefile
1127         tests/conform/Makefile
1128         tests/conform/test-launcher.sh
1129         tests/data/Makefile
1130         tests/interactive/Makefile
1131         tests/interactive/wrapper.sh
1132         tests/micro-bench/Makefile
1133         tests/performance/Makefile
1134
1135         examples/Makefile
1136
1137         doc/Makefile
1138         doc/reference/Makefile
1139         doc/reference/clutter/Makefile
1140         doc/reference/clutter/clutter-docs.xml
1141         doc/reference/cally/Makefile
1142         doc/reference/cally/cally-docs.xml
1143         doc/common/Makefile
1144         doc/cookbook/Makefile
1145         doc/cookbook/clutter-cookbook.xml
1146         doc/cookbook/examples/Makefile
1147
1148         po/Makefile.in
1149 ])
1150
1151 AC_OUTPUT
1152
1153 dnl === Summary ===============================================================
1154
1155 echo ""
1156 echo "Clutter - $VERSION (${CLUTTER_RELEASE_STATUS})"
1157
1158 # Global flags
1159 echo ""
1160 echo " • Global:"
1161 echo "        Prefix: ${prefix}"
1162 echo "        Libdir: ${libdir}"
1163 echo "        Sysconfdir: ${sysconfdir}"
1164
1165 # Compiler/Debug related flags
1166 echo ""
1167 echo " • Compiler options:"
1168 echo "        Clutter debug level: ${enable_debug}"
1169 echo "        Compiler flags: ${CFLAGS} ${MAINTAINER_CFLAGS}"
1170 echo "        Profiling enabled: ${enable_profile}"
1171 echo "        Enable coverage tests: ${enable_gcov}"
1172 echo "        Enable deprecated symbols: ${enable_deprecated}"
1173
1174 # Documentation
1175 echo ""
1176 echo " • Documentation:"
1177 echo "        Build API Reference: ${enable_gtk_doc}"
1178 echo "        Build Additional Documentation: ${enable_docs} (Generate PDF: ${enable_pdfs})"
1179
1180 # Miscellaneous
1181 echo ""
1182 echo " • Extra:"
1183 echo "        Build introspection data: ${enable_introspection}"
1184 echo "        Build test suites: ${enable_tests}"
1185 if test "x$enable_tests" = "xyes"; then
1186 echo "        Build X11-specific tests: ${x11_tests}"
1187 echo "        Build tests using GDK-Pixbuf: ${pixbuf_tests}"
1188 fi
1189 echo "        Build examples: ${enable_examples}"
1190
1191 # Clutter backend related flags
1192 echo ""
1193 echo " • Clutter Backends:"
1194
1195 if test "x$experimental_backend" = "xno"; then
1196 echo "        Windowing systems: ${CLUTTER_BACKENDS}"
1197 else
1198 echo "        Windowing systems: ${CLUTTER_BACKENDS} (WARNING: Experimental backends enabled)"
1199 fi
1200
1201 if test "x$experimental_input_backend" = "xno"; then
1202 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS}"
1203 else
1204 echo "        Input backends: ${CLUTTER_INPUT_BACKENDS} (WARNING: Experimental backends enabled)"
1205 fi
1206
1207 if test "x$SUPPORT_X11" = "x1"; then
1208 echo ""
1209 echo "     - X11 backend options:"
1210 echo "        Enabled extensions: ${X11_EXTS}"
1211 fi
1212
1213 if test "x$SUPPORT_CEX100" = "x1"; then
1214 echo ""
1215 echo "     - CEx100 backend options (WARNING: Experimental):"
1216 echo "        libGDL include prefix: ${CLUTTER_CEX100_LIBGDL_PREFIX}"
1217 fi
1218
1219 if test "x$SUPPORT_WAYLAND_COMPOSITOR" = "x1"; then
1220 echo ""
1221 echo "     - Wayland compositor support enabled (WARNING: Experimental)"
1222 fi
1223
1224 echo ""
1225
1226 # General warning about experimental features
1227 if test "x$experimental_backend" = "xyes"; then
1228 echo ""
1229 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1230 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1231 echo ""
1232 echo "  The stability of your build might be affected by one or more"
1233 echo "  experimental backends or experimental and unsupported features"
1234 echo ""
1235 echo "*WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING* *WARNING*"
1236 echo "☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠☠"
1237 echo ""
1238 fi