[build] Improve build environment
authorEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 14 Apr 2009 16:16:41 +0000 (17:16 +0100)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 14 Apr 2009 16:16:41 +0000 (17:16 +0100)
* De-crustify the configure.ac file by using AS_IF(), AS_CASE()
  and other useful macros

* Update all the variables

* Fix the pkg-config file Requires:, and expose the flavour
  and API version as variables

* Fix the autogen.sh script

* Use Shave to clean up the libtool and gcc incantations and
  make the output useful again

12 files changed:
Makefile.am
autogen.sh
build/Makefile.am [new file with mode: 0644]
build/autotools/Makefile.am [new file with mode: 0644]
build/autotools/shave-libtool.in [new file with mode: 0644]
build/autotools/shave.in [new file with mode: 0644]
build/autotools/shave.m4 [new file with mode: 0644]
clutter-gtk.pc.in
clutter-gtk/Makefile.am
configure.ac
doc/reference/Makefile.am
examples/Makefile.am

index 5211eca..57c2fd7 100644 (file)
@@ -1,7 +1,13 @@
+ACLOCAL_AMFLAGS = -I build/autotools
+
+V         = @
+Q         = $(V:1=)
+QUIET_GEN = $(Q:@=@echo '  GEN   '$@;)
+
 SUBDIRS = clutter-gtk doc examples
 
 clutter-gtk-0.9.pc: clutter-gtk.pc
-       @cp -f clutter-gtk.pc clutter-gtk-0.9.pc
+       $(QUIET_GEN)cp -f clutter-gtk.pc clutter-gtk-0.9.pc
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = clutter-gtk-0.9.pc
@@ -12,4 +18,4 @@ DISTCLEANFILES = clutter-gtk.pc
 
 EXTRA_DIST = clutter-gtk.pc.in
 
-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-maintainer-flags
index aecfb84..f5feee2 100755 (executable)
@@ -1,4 +1,28 @@
 #! /bin/sh
-gtkdocize || exit 1
-autoreconf -v --install || exit 1
-./configure --enable-maintainer-mode "$@"
+
+PKG_NAME=Clutter-Gtk
+TEST_TYPE=-d
+FILE=clutter-gtk
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+test $TEST_TYPE $FILE || {
+        echo "You must run this script in the top-level $PROJECT directory"
+        exit 1
+}
+
+gtkdocize || exit $?
+
+# we need to patch gtk-doc.make to support pretty output with
+# libtool 1.x.  Should be fixed in the next version of gtk-doc.
+# To be more resilient with the various versions of gtk-doc one
+# can find, just sed gkt-doc.make rather than patch it.
+sed -e 's#) --mode=compile#) --tag=CC --mode=compile#' gtk-doc.make > gtk-doc.temp \
+        && mv gtk-doc.temp gtk-doc.make
+sed -e 's#) --mode=link#) --tag=CC --mode=link#' gtk-doc.make > gtk-doc.temp \
+        && mv gtk-doc.temp gtk-doc.make
+
+ACLOCAL="${ACLOCAL-aclocal} $ACLOCAL_FLAGS" autoreconf -v --install || exit $?
+
+./configure "$@" && echo Now type make to compile $PKG_NAME.
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644 (file)
index 0000000..8c90237
--- /dev/null
@@ -0,0 +1 @@
+SUBDIRS = autotools
diff --git a/build/autotools/Makefile.am b/build/autotools/Makefile.am
new file mode 100644 (file)
index 0000000..a17717f
--- /dev/null
@@ -0,0 +1,3 @@
+EXTRA_DIST = shave-libtool.in shave.in shave.m4
+
+DISTCLEANFILES = shave-libtool shave
diff --git a/build/autotools/shave-libtool.in b/build/autotools/shave-libtool.in
new file mode 100644 (file)
index 0000000..1f3a720
--- /dev/null
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# we need sed
+SED=@SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+}
+
+# the real libtool to use
+LIBTOOL="$1"
+shift
+
+# if 1, don't print anything, the underlaying wrapper will do it
+pass_though=0
+
+# scan the arguments, keep the right ones for libtool, and discover the mode
+preserved_args=
+while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+    --mode=*)
+        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+        preserved_args="$preserved_args $opt"
+        ;;
+    -o)
+        lt_output="$1"
+        preserved_args="$preserved_args $opt"
+       ;;
+    *)
+        preserved_args="$preserved_args $opt"
+        ;;
+      esac
+done
+
+case "$mode" in
+compile)
+    # shave will be called and print the actual CC/CXX/LINK line
+    preserved_args="$preserved_args --shave-mode=$mode"
+    pass_though=1
+    ;;
+link)
+    preserved_args="$preserved_args --shave-mode=$mode"
+    Q="  LINK  "
+    ;;
+*)
+    # let's u
+    # echo "*** libtool: Unimplemented mode: $mode, fill a bug report"
+    ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+if test -z $V; then
+    if test $pass_though -eq 0; then
+        echo "$Q$output"
+    fi
+    $LIBTOOL --silent $preserved_args
+else
+    echo $LIBTOOL $preserved_args
+    $LIBTOOL $preserved_args
+fi
diff --git a/build/autotools/shave.in b/build/autotools/shave.in
new file mode 100644 (file)
index 0000000..5c16f27
--- /dev/null
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# we need sed
+SED=@SED@
+if test -z "$SED" ; then
+SED=sed
+fi
+
+lt_unmangle ()
+{
+   last_result=`echo $1 | $SED -e 's#.libs/##' -e 's#[0-9a-zA-Z_\-\.]*_la-##'`
+}
+
+# the tool to wrap (cc, cxx, ar, ranlib, ..)
+tool="$1"
+shift
+
+# the reel tool (to call)
+REEL_TOOL="$1"
+shift
+
+pass_through=0
+preserved_args=
+while test "$#" -gt 0; do
+    opt="$1"
+    shift
+
+    case $opt in
+    --shave-mode=*)
+        mode=`echo $opt | $SED -e 's/[-_a-zA-Z0-9]*=//'`
+       ;;
+    -o)
+        lt_output="$1"
+        preserved_args="$preserved_args $opt"
+       ;;
+    *)
+        preserved_args="$preserved_args $opt"
+        ;;
+      esac
+done
+
+# mode=link is handled in the libtool wrapper
+case "$mode,$tool" in
+link,*)
+    pass_through=1
+    ;;
+*,cxx)
+    Q="  CXX   "
+    ;;
+*,cc)
+    Q="  CC    "
+    ;;
+*,fc)
+    Q="  FC    "
+    ;;
+*,f77)
+    Q="  F77   "
+    ;;
+*,objc)
+    Q="  OBJC   "
+    ;;
+*,*)
+    # should not happen
+    Q="  CC    "
+    ;;
+esac
+
+lt_unmangle "$lt_output"
+output=$last_result
+
+if test -z $V; then
+    if test $pass_through -eq 0; then
+        echo "$Q$output"
+    fi
+    $REEL_TOOL $preserved_args
+else
+    echo $REEL_TOOL $preserved_args
+    $REEL_TOOL $preserved_args
+fi
diff --git a/build/autotools/shave.m4 b/build/autotools/shave.m4
new file mode 100644 (file)
index 0000000..0a3509e
--- /dev/null
@@ -0,0 +1,77 @@
+dnl Make automake/libtool output more friendly to humans
+dnl  Damien Lespiau <damien.lespiau@gmail.com>
+dnl
+dnl SHAVE_INIT([shavedir],[default_mode])
+dnl
+dnl shavedir: the directory where the shave scripts are, it defaults to
+dnl           $(top_builddir)
+dnl default_mode: (enable|disable) default shave mode.  This parameter
+dnl               controls shave's behaviour when no option has been
+dnl               given to configure.  It defaults to disable.
+dnl
+dnl * SHAVE_INIT should be called late in your configure.(ac|in) file (just
+dnl   before AC_CONFIG_FILE/AC_OUTPUT is perfect.  This macro rewrites CC and
+dnl   LIBTOOL, you don't want the configure tests to have these variables
+dnl   re-defined.
+dnl * This macro requires GNU make's -s option.
+
+AC_DEFUN([_SHAVE_ARG_ENABLE],
+[
+  AC_ARG_ENABLE([shave],
+    AS_HELP_STRING(
+      [--enable-shave],
+      [use shave to make the build pretty [[default=$1]]]),,
+      [enable_shave=$1]
+    )
+])
+
+AC_DEFUN([SHAVE_INIT],
+[
+  dnl you can tweak the default value of enable_shave
+  m4_if([$2], [enable], [_SHAVE_ARG_ENABLE(yes)], [_SHAVE_ARG_ENABLE(no)])
+
+  if test x"$enable_shave" = xyes; then
+    dnl where can we find the shave scripts?
+    m4_if([$1],,
+      [shavedir="$ac_pwd"],
+      [shavedir="$ac_pwd/$1"])
+    AC_SUBST(shavedir)
+
+    dnl make is now quiet
+    AC_SUBST([MAKEFLAGS], [-s])
+    AC_SUBST([AM_MAKEFLAGS], ['`test -z $V && echo -s`'])
+
+    dnl we need sed
+    AC_CHECK_PROG(SED,sed,sed,false)
+
+    dnl substitute libtool
+    SHAVE_SAVED_LIBTOOL=$LIBTOOL
+    LIBTOOL="${SHELL} ${shavedir}/shave-libtool '${SHAVE_SAVED_LIBTOOL}'"
+    AC_SUBST(LIBTOOL)
+
+    dnl substitute cc/cxx
+    SHAVE_SAVED_CC=$CC
+    SHAVE_SAVED_CXX=$CXX
+    SHAVE_SAVED_FC=$FC
+    SHAVE_SAVED_F77=$F77
+    SHAVE_SAVED_OBJC=$OBJC
+    CC="${SHELL} ${shavedir}/shave cc ${SHAVE_SAVED_CC}"
+    CXX="${SHELL} ${shavedir}/shave cxx ${SHAVE_SAVED_CXX}"
+    FC="${SHELL} ${shavedir}/shave fc ${SHAVE_SAVED_FC}"
+    F77="${SHELL} ${shavedir}/shave f77 ${SHAVE_SAVED_F77}"
+    OBJC="${SHELL} ${shavedir}/shave objc ${SHAVE_SAVED_OBJC}"
+    AC_SUBST(CC)
+    AC_SUBST(CXX)
+    AC_SUBST(FC)
+    AC_SUBST(F77)
+    AC_SUBST(OBJC)
+
+    V=@
+  else
+    V=1
+  fi
+  Q='$(V:1=)'
+  AC_SUBST(V)
+  AC_SUBST(Q)
+])
+
index d00ff68..16a88b1 100644 (file)
@@ -1,11 +1,13 @@
 prefix=@prefix@
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+flavour=@CLUTTER_GTK_FLAVOUR@
+apiversion=@CLUTTER_GTK_API_VERSION@
 
 Name: clutter-gtk
 Description: GTK+ widget for Clutter
 Version: @VERSION@
 Libs: -L${libdir} -lclutter-gtk-0.9
 Cflags: -I${includedir}/clutter-0.9/clutter-gtk
-Requires: clutter-x11-0.9 gtk+-2.0
+Requires: @CLUTTER_GTK_REQUIRES@
index 1f487e0..b4ade95 100644 (file)
@@ -9,28 +9,33 @@ INCLUDES = \
         -DGDK_PIXBUF_DISABLE_DEPRECATED         \
         -DGDK_DISABLE_DEPRECATED                \
         -DGTK_DISABLE_DEPRECATED                \
-       $(CLUTTER_DEBUG_FLAGS)                  \
-       $(GCC_FLAGS)                            \
-       $(CLUTTER_CFLAGS)                       \
+       -DCLUTTER_DISABLE_DEPRECATED
+
+AM_CPPFLAGS = \
+       $(CLUTTER_GTK_DEBUG_CFLAGS) \
+       $(MAINTAINER_CFLAGS) \
+       $(CLUTTER_CFLAGS) \
        $(GTK_CFLAGS)
 
 lib_LTLIBRARIES = libclutter-gtk-0.9.la
 
 # please, keep the list sorted alphabetically
-libclutter_gtk_0_9_la_SOURCES = \
-        gtk-clutter-embed.c \
-        gtk-clutter-scrollable.c \
-        gtk-clutter-util.c \
+libclutter_gtk_0_9_la_SOURCES =        \
+        gtk-clutter-embed.c            \
+        gtk-clutter-scrollable.c       \
+        gtk-clutter-util.c             \
         gtk-clutter-viewport.c
+
 libclutter_gtk_0_9_la_LIBADD = $(CLUTTER_LIBS) $(GTK_LIBS)
+
 libclutter_gtk_0_9_la_LDFLAGS = $(CLUTTER_LT_LDFLAGS)
 
 cluttergtkheadersdir = $(includedir)/clutter-0.9/clutter-gtk
 
 # please, keep the list sorted alphabetically
-cluttergtkheaders_HEADERS = \
-        clutter-gtk.h \
-        gtk-clutter-embed.h \
-        gtk-clutter-scrollable.h \
-        gtk-clutter-util.h \
+cluttergtkheaders_HEADERS =            \
+        clutter-gtk.h                  \
+        gtk-clutter-embed.h            \
+        gtk-clutter-scrollable.h       \
+        gtk-clutter-util.h             \
         gtk-clutter-viewport.h
index fe4de51..87597a4 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], [9])
-m4_define([clutter_micro_version], [0])
+m4_define([clutter_gtk_major], [0])
+m4_define([clutter_gtk_minor], [9])
+m4_define([clutter_gtk_micro], [0])
 
-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/gtk-clutter-embed.h])
+AC_CONFIG_SRCDIR([clutter-gtk/clutter-gtk.h])
+AC_CONFIG_MACRO_DIR([build/autotools])
+
 AM_CONFIG_HEADER([config.h])
 
 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,91 +54,115 @@ 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
-
-# Checks for library functions.
-AC_FUNC_MALLOC
-AC_FUNC_MMAP
-AC_CHECK_FUNCS([memset munmap strcasecmp strdup])
-
-CLUTTER_REQUIRED=0.9.0
-
-cluttergtkflavour=x11
+m4_define([clutter_req_version], [0.9.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]),
-            cluttergtkflavour=$with_flavour)
-
-case $cluttergtkflavour in
-
-  x11)
-    AC_DEFINE([HAVE_CLUTTER_GTK_X11], 1, [Using the X11 flavour])
-    PKG_CHECK_MODULES(CLUTTER, clutter-x11-0.9 >= $CLUTTER_REQUIRED)
-    ;;
-    
-  win32)
-    AC_DEFINE([HAVE_CLUTTER_GTK_WIN32], 1, [Using the Win32 flavour])
-    PKG_CHECK_MODULES(CLUTTER, clutter-win32-0.9 >= $CLUTTER_REQUIRED)
-    ;;
-    
-  *)
-    AC_MSG_ERROR([Invalid flavour for Clutter-GTK: use x11 or win32])
-    ;;
-
-esac
+            [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-0.9 >= clutter_req_version)
+          PKG_CHECK_MODULES(GTK, gtk+-x11-2.0 >= gtk_req_version)
+          CLUTTER_GTK_REQUIRES="clutter-x11-0.9 gtk+-x11-2.0"
+        ],
+
+        [win32], [
+          AC_DEFINE([HAVE_CLUTTER_GTK_WIN32], 1, [Using the Win32 flavour])
+          PKG_CHECK_MODULES(CLUTTER, clutter-win32-0.9 >= $CLUTTER_REQUIRED)
+          PKG_CHECK_MODULES(GTK, gtk+-win32-2.0 >= gtk_req_version)
+          CLUTTER_GTK_REQUIRES="clutter-win32-0.9 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)
 
 AC_SUBST(CLUTTER_CFLAGS)
 AC_SUBST(CLUTTER_LIBS)
 
-PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.12)
 AC_SUBST(GTK_CFLAGS)
 AC_SUBST(GTK_LIBS)
 
-dnl ========================================================================
+dnl = Enable debug level ===================================================
 
-if test "x$GCC" = "xyes"; then
-        GCC_FLAGS="-g -Wall"
-fi
+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])
 
-dnl = Enable debug level ===================================================
+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"
+        ],
 
-m4_define([debug_default],
-          m4_if(m4_eval(clutter_minor_version % 2), [1], [yes], [minimum]))
+        [no], [
+          CLUTTER_GTK_DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
+        ],
 
-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)
+        [AC_MSG_ERROR([Invalid argument for --enable-debug])]
+)
 
-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
+AC_SUBST(CLUTTER_GTK_DEBUG_CFLAGS)
 
-AC_SUBST(CLUTTER_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"],
+      [
+        MAINTAINER_CFLAGS="-Werror -Wall -Wshadow -Wcast-align -Wno-uninitialized -Wempty-body -Wformat-security -Winit-self"
+      ]
+)
+
+AC_SUBST(MAINTAINER_CFLAGS)
 
 dnl = GTK Doc check ========================================================
 
-GTK_DOC_CHECK([1.8])
+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)
+
+GTK_DOC_CHECK([1.11])
 
 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
@@ -158,7 +181,8 @@ echo "                 ==================="
 echo ""
 echo "                   prefix:   ${prefix}"
 echo ""
-echo "                  Flavour:   ${cluttergtkflavour}"
+echo "                  Flavour:   ${CLUTTER_GTK_FLAVOUR}"
 echo "              Debug level:   ${enable_debug}"
 echo "            Documentation:   ${enable_gtk_doc}"
+echo "           Compiler flags:   $MAINTAINER_CFLAGS"
 echo ""
index 2a29971..9701c3c 100644 (file)
@@ -1,8 +1,5 @@
 ## Process this file with automake to produce Makefile.in
 
-# We require automake 1.6 at least.
-AUTOMAKE_OPTIONS = 1.6
-
 # This is a blank Makefile.am for using gtk-doc.
 # Copy this to your project's API docs directory and modify the variables to
 # suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
@@ -29,7 +26,7 @@ SCAN_OPTIONS=
 
 # Extra options to supply to gtkdoc-mkdb.
 # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
-MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=gtk_clutter
 
 # Extra options to supply to gtkdoc-mktmpl
 # e.g. MKTMPL_OPTIONS=--only-section-tmpl
@@ -37,7 +34,13 @@ MKTMPL_OPTIONS=
 
 # Extra options to supply to gtkdoc-fixref. Not normally needed.
 # e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
-FIXXREF_OPTIONS=
+FIXXREF_OPTIONS=\
+       --extra-dir=$(G_PREFIX)/share/gtk-doc/html/glib \
+       --extra-dir=$(G_PREFIX)/share/gtk-doc/html/gobject \
+       --extra-dir=$(GDK_PREFIX)/share/gtk-doc/html/gdk \
+       --extra-dir=$(GTK_PREFIX)/share/gtk-doc/html/gtk \
+       --extra-dir=$(GDK_PIXBUF_PREFIX)/share/gtk-doc/html/gdk-pixbuf \
+       --extra-dir=$(CLUTTER_PREFIX)/share/gtk-doc/html/clutter
 
 # Used for dependencies. The docs will be rebuilt if any of these change.
 # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
@@ -55,7 +58,7 @@ HTML_IMAGES=
 
 # Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
 # e.g. content_files=running.sgml building.sgml changes-2.0.sgml
-content_files= version.xml
+content_files=version.xml
 
 # SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
 # These files must be listed here *and* in content_files
index 4abe2de..a59aca3 100644 (file)
@@ -10,7 +10,7 @@ INCLUDES = \
        -I$(srcdir) \
        -I$(top_srcdir)
 
-AM_CPPFLAGS = $(CLUTTER_CFLAGS) $(GTK_CFLAGS)
+AM_CPPFLAGS = $(MAINTAINER_CFLAGS) $(CLUTTER_CFLAGS) $(GTK_CFLAGS)
 
 common_deps = \
        $(top_builddir)/clutter-gtk/libclutter-gtk-0.9.la