1# clutter package version number, (as distinct from shared library version)
2# An odd micro number indicates in-progress development, (eg. from git)
3# An even micro number indicates a released version.
4m4_define([clutter_gtk_major], [1])
5m4_define([clutter_gtk_minor], [8])
6m4_define([clutter_gtk_micro], [4])
7m4_define([clutter_gtk_version], [clutter_gtk_major.clutter_gtk_minor.clutter_gtk_micro])
8
9# increase the interface age for each release; if the API changes, set to 0
10m4_define([clutter_gtk_interface_age], [4])
11m4_define([clutter_gtk_binary_age], [m4_eval(100 * clutter_gtk_minor + clutter_gtk_micro)])
12
13m4_define([clutter_gtk_release_status],
14          [m4_if(m4_eval(clutter_gtk_micro % 2), [1],
15                 [git],
16                 [m4_if(m4_eval(clutter_gtk_minor % 2), [1],
17                        [snapshot],
18                        [release])])])
19
20AC_PREREQ([2.63])
21
22AC_INIT([clutter-gtk],
23        [clutter_gtk_version],
24        [http://bugzilla.gnome.org/enter_bug.cgi?product=clutter-gtk],
25        [clutter-gtk],
26        [http://www.clutter-project.org/libraries/clutter-gtk])
27
28AC_CONFIG_HEADERS([config.h])
29AC_CONFIG_SRCDIR([clutter-gtk/clutter-gtk.h])
30AC_CONFIG_AUX_DIR([build])
31AC_CONFIG_MACRO_DIR([build/autotools])
32
33AM_INIT_AUTOMAKE([1.14 subdir-objects foreign -Wno-portability no-define no-dist-gzip dist-xz tar-ustar])
34
35AM_SILENT_RULES([yes])
36
37AC_SUBST([CLUTTER_GTK_MAJOR_VERSION],  [clutter_gtk_major])
38AC_SUBST([CLUTTER_GTK_MINOR_VERSION],  [clutter_gtk_minor])
39AC_SUBST([CLUTTER_GTK_MICRO_VERSION],  [clutter_gtk_micro])
40AC_SUBST([CLUTTER_GTK_API_VERSION],    [1.0])
41AC_SUBST([CLUTTER_GTK_API_VERSION_AM], [1_0])
42AC_SUBST([CLUTTER_GTK_VERSION],        [clutter_gtk_version])
43AC_SUBST([CLUTTER_GTK_RELEASE_STATUS], [clutter_gtk_release_status])
44
45m4_define([lt_current], [m4_eval(100 * clutter_gtk_minor + clutter_gtk_micro - clutter_gtk_interface_age)])
46m4_define([lt_revision], [clutter_gtk_interface_age])
47m4_define([lt_age], [m4_eval(clutter_gtk_binary_age - clutter_gtk_interface_age)])
48CLUTTER_GTK_LT_CURRENT=lt_current
49CLUTTER_GTK_LT_REV=lt_revision
50CLUTTER_GTK_LT_AGE=lt_age
51CLUTTER_GTK_LT_VERSION="$CLUTTER_GTK_LT_CURRENT:$CLUTTER_GTK_LT_REV:$CLUTTER_GTK_LT_AGE"
52CLUTTER_GTK_LT_LDFLAGS="-version-info $CLUTTER_GTK_LT_VERSION"
53
54AC_CANONICAL_HOST
55AC_MSG_CHECKING([if building for some Win32 platform])
56AS_CASE([$host],
57        [*-*-mingw*|*-*-cygwin*],
58        [
59          CLUTTER_GTK_LT_LDFLAGS="$CLUTTER_GTK_LT_LDFLAGS -no-undefined"
60          platform_win32=yes
61        ],
62
63        [platform_win32=no]
64)
65AC_MSG_RESULT([$platform_win32])
66
67AC_SUBST(CLUTTER_GTK_LT_VERSION)
68AC_SUBST(CLUTTER_GTK_LT_LDFLAGS)
69
70dnl ========================================================================
71
72# Checks for programs.
73AM_PROG_CC_C_O
74
75# require libtool >= 2.2
76LT_PREREQ([2.2.6])
77LT_INIT([disable-static])
78
79# Checks for header files.
80AC_HEADER_STDC
81
82AC_CHECK_LIBM
83AC_SUBST(LIBM)
84
85m4_define([clutter_req_version], [1.23.7])
86m4_define([gtk_req_version], [3.21.0])
87
88PKG_CHECK_MODULES([CLUTTER_GTK_DEPS], [clutter-1.0 >= clutter_req_version gtk+-3.0 >= gtk_req_version])
89AC_SUBST([CLUTTER_GTK_DEPS_CFLAGS])
90AC_SUBST([CLUTTER_GTK_DEPS_LIBS])
91
92CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS=""
93case "$host" in
94  *-*-mingw*)
95    dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport)
96    AC_DEFINE([CLUTTER_GTK_EXTERN], [__attribute__((visibility("default"))) __declspec(dllexport) extern],
97              [defines how to decorate public symbols while building])
98    CFLAGS="${CFLAGS} -fvisibility=hidden"
99    ;;
100  *)
101    dnl on other compilers, check if we can do -fvisibility=hidden
102    SAVED_CFLAGS="${CFLAGS}"
103    CFLAGS="-fvisibility=hidden"
104    AC_MSG_CHECKING([for -fvisibility=hidden compiler flag])
105    AC_TRY_COMPILE([], [return 0],
106                   AC_MSG_RESULT(yes)
107                   enable_fvisibility_hidden=yes,
108                   AC_MSG_RESULT(no)
109                   enable_fvisibility_hidden=no)
110    CFLAGS="${SAVED_CFLAGS}"
111
112    AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [
113      AC_DEFINE([CLUTTER_GTK_EXTERN], [__attribute__((visibility("default"))) extern],
114                [defines how to decorate public symbols while building])
115      CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS="-fvisibility=hidden"
116    ])
117    ;;
118esac
119AC_SUBST(CLUTTER_GTK_HIDDEN_VISIBILITY_CFLAGS)
120
121
122m4_define([deprecated_default],
123          [m4_if(m4_eval(clutter_gtk_minor % 2), [1],
124                 [no],
125                 [yes])])
126
127AC_ARG_ENABLE([deprecated],
128              [AS_HELP_STRING([--enable-deprecated=@<:@no/yes@:>@],
129                              [Whether deprecated symbols should be disabled when compiling Clutter-GTK @<:@default=]deprecated_default[@:>
130@])],
131              [],
132              [enable_deprecated=deprecated_default])
133
134AS_CASE([$enable_deprecated],
135
136        [no],
137        [
138          CLUTTER_GTK_DEPRECATED_CFLAGS="-DG_DISABLE_SINGLE_INCLUDES -DCOGL_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED"
139        ],
140
141        [yes],
142        [
143          CLUTTER_GTK_DEPRECATED_CFLAGS="-DGLIB_DISABLE_DEPRECATION_WARNINGS -DCLUTTER_DISABLE_DEPRECATION_WARNINGS -DGDK_DISABLE_DEPRECATION_WARNINGS"
144        ],
145
146        [AC_MSG_ERROR([Unknown argument for --enable-deprecated])]
147)
148
149AC_SUBST([CLUTTER_GTK_DEPRECATED_CFLAGS])
150
151dnl = Enable debug level ===================================================
152
153m4_define([debug_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [minimum])])
154AC_ARG_ENABLE([debug],
155              [AS_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
156                              [Turns on debugging. @<:@default=]debug_default[@:>@])],
157              [],
158              [enable_debug=debug_default])
159
160AS_CASE([$enable_debug],
161
162        [yes],
163        [
164          test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
165          CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG"
166        ],
167
168        [minimum],
169        [
170          CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
171        ],
172
173        [no],
174        [
175          CLUTTER_GTK_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
176        ],
177
178        [AC_MSG_ERROR([Invalid argument for --enable-debug])]
179)
180
181AC_SUBST([CLUTTER_GTK_DEBUG_CFLAGS])
182
183# use strict compiler flags only on development releases
184m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [no])])
185AC_ARG_ENABLE([maintainer-flags],
186              [AS_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
187                              [Use strict compiler flags @<:@default=]maintainer_flags_default[@:>@])],
188              [],
189              [enable_maintainer_flags=maintainer_flags_default])
190
191MAINTAINER_CFLAGS=""
192AS_IF([test "x$enable_maintainer_flags" = "xyes" && test "x$GCC" = "xyes"],
193      [
194        AS_COMPILER_FLAGS([MAINTAINER_CFLAGS],
195                          ["-Wall -Wshadow -Wcast-align -Wuninitialized
196                            -Wno-strict-aliasing -Wempty-body -Wformat
197                            -Wformat-security -Winit-self
198                            -Wdeclaration-after-statement -Wvla"])
199      ]
200)
201
202# strip leading spaces
203MAINTAINER_CFLAGS=${MAINTAINER_CFLAGS#*  }
204AC_SUBST(MAINTAINER_CFLAGS)
205
206dnl = I18N =================================================================
207
208AM_GNU_GETTEXT_VERSION([0.18])
209AM_GNU_GETTEXT([external])
210
211GETTEXT_PACKAGE="cluttergtk-1.0"
212AC_SUBST(GETTEXT_PACKAGE)
213AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,
214                   "$GETTEXT_PACKAGE",
215                   [The prefix for our gettext translation domains.])
216
217dnl = GTK Doc check ========================================================
218
219G_PREFIX=`$PKG_CONFIG --variable=prefix glib-2.0`
220GDK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-3.0`
221GTK_PREFIX=`$PKG_CONFIG --variable=prefix gtk+-3.0`
222GDK_PIXBUF_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
223CLUTTER_PREFIX=`$PKG_CONFIG --variable=prefix clutter-1.0`
224AC_SUBST(G_PREFIX)
225AC_SUBST(GDK_PREFIX)
226AC_SUBST(GTK_PREFIX)
227AC_SUBST(GDK_PIXBUF_PREFIX)
228AC_SUBST(CLUTTER_PREFIX)
229
230GTK_DOC_CHECK([1.24], [--flavour=no-tmpl])
231
232GOBJECT_INTROSPECTION_CHECK([1.32])
233
234AC_CONFIG_FILES([
235        Makefile
236        build/Makefile
237        build/autotools/Makefile
238
239        clutter-gtk/Makefile
240        clutter-gtk/gtk-clutter-version.h
241
242        doc/Makefile
243
244        examples/Makefile
245
246        po/Makefile.in
247
248        clutter-gtk.pc
249])
250
251AC_OUTPUT
252
253dnl ========================================================================
254
255echo ""
256echo " Clutter-GTK $CLUTTER_GTK_VERSION ($CLUTTER_GTK_RELEASE_STATUS)"
257echo ""
258echo "   Prefix: ${prefix}"
259echo "   Libdir: ${libdir}"
260echo ""
261echo "   Debug level: ${enable_debug}"
262echo "   Documentation: ${enable_gtk_doc}"
263echo "   Compiler flags: $CFLAGS $MAINTAINER_CFLAGS"
264echo "   Introspection data: ${enable_introspection}"
265echo "   Enable deprecated symbols: ${enable_deprecated}"
266echo ""
267