Add dependencies
[clutter-gtk] / configure.ac
index 1b64047..1dfebd3 100644 (file)
@@ -1,52 +1,51 @@
 # clutter package version number, (as distinct from shared library version)
-# An odd micro number indicates in-progress development, (eg. from CVS)
+# An odd micro number indicates in-progress development, (eg. from git)
 # An even micro number indicates a released version.
-m4_define([clutter_major_version], [0])
-m4_define([clutter_minor_version], [4])
-m4_define([clutter_micro_version], [0])
+m4_define([clutter_gtk_major], [0])
+m4_define([clutter_gtk_minor], [10])
+m4_define([clutter_gtk_micro], [2])
 
-m4_define([clutter_version],
-          [clutter_major_version.clutter_minor_version.clutter_micro_version])
-
-m4_define([clutter_api_version],
-          [clutter_major_version.clutter_minor_version])
+m4_define([clutter_gtk_api_version], [clutter_gtk_major.clutter_gtk_minor])
+m4_define([clutter_gtk_version], [clutter_gtk_major.clutter_gtk_minor.clutter_gtk_micro])
 
 # increase the interface age for each release; if the API changes, set to 0
-m4_define([clutter_interface_age], [0])
-m4_define([clutter_binary_age],
-          [m4_eval(100 * clutter_minor_version + clutter_micro_version)])
+m4_define([clutter_gtk_interface_age], [0])
+m4_define([clutter_gtk_binary_age], [m4_eval(100 * clutter_gtk_minor + clutter_gtk_micro)])
 
-AC_PREREQ(2.53)
+AC_PREREQ([2.59])
 
 AC_INIT([clutter-gtk],
-        [clutter_version],
+        [clutter_gtk_version],
         [http://bugzilla.o-hand.com/enter_bug.cgi?product=Clutter])
 AC_CONFIG_SRCDIR([clutter-gtk/clutter-gtk.h])
+AC_CONFIG_MACRO_DIR([build/autotools])
+
 AM_CONFIG_HEADER([config.h])
 
-AM_INIT_AUTOMAKE([1.7])
+AM_INIT_AUTOMAKE([1.9])
 
-CLUTTER_GTK_MAJOR_VERSION=clutter_major_version
-CLUTTER_GTK_MINOR_VERSION=clutter_minor_version
-CLUTTER_GTK_MICRO_VERSION=clutter_micro_version
-CLUTTER_GTK_VERSION=clutter_version
+CLUTTER_GTK_MAJOR_VERSION=clutter_gtk_major
+CLUTTER_GTK_MINOR_VERSION=clutter_gtk_minor
+CLUTTER_GTK_MICRO_VERSION=clutter_gtk_micro
+CLUTTER_GTK_API_VERSION=clutter_gtk_api_version
+CLUTTER_GTK_VERSION=clutter_gtk_version
 AC_SUBST(CLUTTER_GTK_MAJOR_VERSION)
 AC_SUBST(CLUTTER_GTK_MINOR_VERSION)
 AC_SUBST(CLUTTER_GTK_MICRO_VERSION)
+AC_SUBST(CLUTTER_GTK_API_VERSION)
 AC_SUBST(CLUTTER_GTK_VERSION)
 
-m4_define([lt_current],
-          [m4_eval(100 * clutter_minor_version + clutter_micro_version - clutter_interface_age)])
-m4_define([lt_revision], [clutter_interface_age])
-m4_define([lt_age], [m4_eval(clutter_binary_age - clutter_interface_age)])
-CLUTTER_LT_CURRENT=lt_current
-CLUTTER_LT_REV=lt_revision
-CLUTTER_LT_AGE=lt_age
-CLUTTER_LT_VERSION="$CLUTTER_LT_CURRENT:$CLUTTER_LT_REV:$CLUTTER_LT_AGE"
-CLUTTER_LT_LDFLAGS="-version-info $CLUTTER_LT_VERSION"
+m4_define([lt_current], [m4_eval(100 * clutter_gtk_minor + clutter_gtk_micro - clutter_gtk_interface_age)])
+m4_define([lt_revision], [clutter_gtk_interface_age])
+m4_define([lt_age], [m4_eval(clutter_gtk_binary_age - clutter_gtk_interface_age)])
+CLUTTER_GTK_LT_CURRENT=lt_current
+CLUTTER_GTK_LT_REV=lt_revision
+CLUTTER_GTK_LT_AGE=lt_age
+CLUTTER_GTK_LT_VERSION="$CLUTTER_GTK_LT_CURRENT:$CLUTTER_GTK_LT_REV:$CLUTTER_GTK_LT_AGE"
+CLUTTER_GTK_LT_LDFLAGS="-version-info $CLUTTER_GTK_LT_VERSION"
 
-AC_SUBST(CLUTTER_LT_VERSION)
-AC_SUBST(CLUTTER_LT_LDFLAGS)
+AC_SUBST(CLUTTER_GTK_LT_VERSION)
+AC_SUBST(CLUTTER_GTK_LT_LDFLAGS)
 
 dnl ========================================================================
 
@@ -55,68 +54,120 @@ AC_PROG_CC
 AC_DISABLE_STATIC
 AC_PROG_LIBTOOL
 
-# Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS([fcntl.h stdlib.h string.h unistd.h])
-
-# Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
+m4_define([clutter_req_version], [1.0.0])
+m4_define([gtk_req_version], [2.12.0])
+m4_define([flavour_default], [x11])
+AC_ARG_WITH([flavour],
+            [AC_HELP_STRING([--with-flavour=@<:@x11/win32@:>@],
+                            [Select the Clutter backend, default=flavour_default])],
+            [],
+            [with_flavour=flavour_default])
+
+AS_CASE([$with_flavour],
+        [x11], [
+          AC_DEFINE([HAVE_CLUTTER_GTK_X11], 1, [Using the X11 flavour])
+          PKG_CHECK_MODULES(CLUTTER, clutter-x11-1.0 >= clutter_req_version)
+          PKG_CHECK_MODULES(GTK, gtk+-x11-2.0 >= gtk_req_version)
+          CLUTTER_GTK_REQUIRES="clutter-x11-1.0 gtk+-x11-2.0"
+        ],
+
+        [win32], [
+          AC_DEFINE([HAVE_CLUTTER_GTK_WIN32], 1, [Using the Win32 flavour])
+          PKG_CHECK_MODULES(CLUTTER, clutter-win32-1.0 >= $CLUTTER_REQUIRED)
+          PKG_CHECK_MODULES(GTK, gtk+-win32-2.0 >= gtk_req_version)
+          CLUTTER_GTK_REQUIRES="clutter-win32-1.0 gtk+-win32-2.0"
+        ]
+
+        [AC_MSG_ERROR([Invalid argument for --with-flavour])]
+)
+
+CLUTTER_GTK_FLAVOUR=$with_flavour
+AC_SUBST(CLUTTER_GTK_FLAVOUR)
+
+AC_SUBST(CLUTTER_GTK_REQUIRES)
 
-# Checks for library functions.
-AC_FUNC_MALLOC
-AC_FUNC_MMAP
-AC_CHECK_FUNCS([memset munmap strcasecmp strdup])
-
-CLUTTER_REQUIRED=0.4.0
-
-PKG_CHECK_MODULES(CLUTTER, clutter-glx-0.4 >= $CLUTTER_REQUIRED)
 AC_SUBST(CLUTTER_CFLAGS)
 AC_SUBST(CLUTTER_LIBS)
 
-PKG_CHECK_MODULES(GTK, gtk+-2.0)
 AC_SUBST(GTK_CFLAGS)
 AC_SUBST(GTK_LIBS)
 
-dnl ========================================================================
-
-if test "x$GCC" = "xyes"; then
-        GCC_FLAGS="-g -Wall"
-fi
-
 dnl = Enable debug level ===================================================
 
-m4_define([debug_default],
-          m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum]))
-
-AC_ARG_ENABLE(debug,
-              AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
-                             [turn on debugging. yes; All glib asserts, checks and runtime clutter verbose messages. minimum; Just glib cast checks and runtime clutter verbose messagaes. no; No glib asserts or checks and no runtime clutter verbose messages.  @<:@default=debug_default@:>@]),
-,
-              enable_debug=debug_default)
+m4_define([debug_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [minimum])])
+AC_ARG_ENABLE([debug],
+              [AC_HELP_STRING([--enable-debug=@<:@no/minimum/yes@:>@],
+                              [Turns on debugging. @<:@default=debug_default@:>@])],
+              [],
+              [enable_debug=debug_default])
+
+AS_CASE([$enable_debug],
+
+        [yes], [
+          test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
+          CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG"
+        ],
+
+        [minimum], [
+          CLUTTER_GTK_DEBUG_CFLAGS="-DCLUTTER_GTK_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
+        ],
+
+        [no], [
+          CLUTTER_GTK_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
+        ],
+
+        [AC_MSG_ERROR([Invalid argument for --enable-debug])]
+)
+
+AC_SUBST(CLUTTER_GTK_DEBUG_CFLAGS)
+
+# use strict compiler flags only on development releases
+m4_define([maintainer_flags_default], [m4_if(m4_eval(clutter_gtk_minor % 2), [1], [yes], [no])])
+AC_ARG_ENABLE([maintainer-flags],
+              [AC_HELP_STRING([--enable-maintainer-flags=@<:@no/yes@:>@],
+                              [Use strict compiler flags @<:@default=no@:>@])],
+              [],
+              [enable_maintainer_flags=maintainer_flags_default])
+
+MAINTAINER_CFLAGS=""
+AS_IF([test "x$enable_maintainer_flags" = "xyes" && test "x$GCC" = "xyes"],
+      [
+        AS_COMPILER_FLAGS([MAINTAINER_CFLAGS],
+                          ["-Werror -Wall -Wshadow -Wcast-align
+                            -Wno-uninitialized -Wempty-body -Wformat-security
+                            -Winit-self"])
+      ]
+)
+
+AC_SUBST(MAINTAINER_CFLAGS)
 
-if test "x$enable_debug" = "xyes"; then
-  test "$cflags_set" = set || CFLAGS="$CFLAGS -g"
-  CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG"
-else
-  if test "x$enable_debug" = "xno"; then
-    CLUTTER_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
-  else # minimum
-    CLUTTER_DEBUG_CFLAGS="-DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"
-  fi
-fi
+dnl = GTK Doc check ========================================================
 
-AC_SUBST(CLUTTER_DEBUG_CFLAGS)
+G_PREFIX=`$PKG_CONFIG --variable=prefix glib-2.0`
+GDK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-2.0`
+GTK_PREFIX=`$PKG_CONFIG --variable=prefix gtk+-2.0`
+GDK_PIXBUF_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
+CLUTTER_PREFIX=`$PKG_CONFIG --variable=prefix clutter-0.9`
+AC_SUBST(G_PREFIX)
+AC_SUBST(GDK_PREFIX)
+AC_SUBST(GTK_PREFIX)
+AC_SUBST(GDK_PIXBUF_PREFIX)
+AC_SUBST(CLUTTER_PREFIX)
 
-dnl = GTK Doc check ========================================================
+GTK_DOC_CHECK([1.11])
 
-GTK_DOC_CHECK([1.4])
+GOBJECT_INTROSPECTION_CHECK([0.6.3])
 
 dnl ========================================================================
 
-AC_SUBST(GCC_FLAGS)
+SHAVE_INIT([build/autotools], [enable])
 
 AC_CONFIG_FILES([
         Makefile
+        build/Makefile
+        build/autotools/Makefile
+        build/autotools/shave-libtool
+        build/autotools/shave
         clutter-gtk/Makefile
         doc/Makefile
         doc/reference/Makefile
@@ -135,6 +186,9 @@ echo "                 ==================="
 echo ""
 echo "                   prefix:   ${prefix}"
 echo ""
+echo "                  Flavour:   ${CLUTTER_GTK_FLAVOUR}"
 echo "              Debug level:   ${enable_debug}"
 echo "            Documentation:   ${enable_gtk_doc}"
+echo "           Compiler flags:   $MAINTAINER_CFLAGS"
+echo "       Introspection data:   ${enable_introspection}"
 echo ""