[gnome-builder/wip/chergert/libidemm-merge: 25/27] build: fix build for libidemm



commit d3c4e8d5ad1b09c426a5c30b05266b5b7721c4b3
Author: Christian Hergert <christian hergert me>
Date:   Sun Apr 24 17:04:40 2016 -0700

    build: fix build for libidemm

 Makefile.am                                    |    2 +
 build/autotools/ax_append_compile_flags.m4     |    8 +-
 build/autotools/ax_cxx_compile_stdcxx.m4       |  556 +++++++++++++++++++++++
 build/autotools/ax_cxx_compile_stdcxx_11.m4    |  157 +------
 build/autotools/mm-ax_cxx_compile_stdcxx.m4    |  561 ++++++++++++++++++++++++
 build/autotools/mm-ax_cxx_compile_stdcxx_11.m4 |  171 +++++++
 build/autotools/mm-common.m4                   |   47 ++
 build/autotools/mm-common.m4.in                |   47 ++
 build/autotools/mm-dietlib.m4                  |  118 +++++
 build/autotools/mm-doc.m4                      |  252 +++++++++++
 build/autotools/mm-module.m4                   |   87 ++++
 build/autotools/mm-pkg.m4                      |  123 ++++++
 build/autotools/mm-warnings.m4                 |  123 ++++++
 configure.ac                                   |    5 +-
 libidemm/configure.ac                          |    9 +-
 libidemm/idemm/Makefile.am                     |    5 +
 libidemm/tools/Makefile.am                     |    2 -
 plugins/hello-cpp/configure.ac                 |    2 +-
 18 files changed, 2118 insertions(+), 157 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index e840a5d..bc679e6 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,5 +1,7 @@
 SUBDIRS = . build contrib data libide libidemm src plugins tools po tests doc help
 
+ACLOCAL_AMFLAGS = -I build/autotools
+
 INTLTOOL_FILES = \
        intltool-extract.in \
        intltool-merge.in \
diff --git a/build/autotools/ax_append_compile_flags.m4 b/build/autotools/ax_append_compile_flags.m4
index dc7b866..2bb27ef 100644
--- a/build/autotools/ax_append_compile_flags.m4
+++ b/build/autotools/ax_append_compile_flags.m4
@@ -4,7 +4,7 @@
 #
 # SYNOPSIS
 #
-#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
+#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
 #
 # DESCRIPTION
 #
@@ -20,6 +20,8 @@
 #   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
 #   force the compiler to issue an error when a bad flag is given.
 #
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
 #   NOTE: This macro depends on the AX_APPEND_FLAG and
 #   AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
 #   AX_APPEND_LINK_FLAGS.
@@ -54,12 +56,12 @@
 #   modified version of the Autoconf Macro, you may extend this special
 #   exception to the GPL to apply to your modified version as well.
 
-#serial 4
+#serial 5
 
 AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
 [AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
 AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
 for flag in $1; do
-  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3])
+  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
 done
 ])dnl AX_APPEND_COMPILE_FLAGS
diff --git a/build/autotools/ax_cxx_compile_stdcxx.m4 b/build/autotools/ax_cxx_compile_stdcxx.m4
new file mode 100644
index 0000000..8adc765
--- /dev/null
+++ b/build/autotools/ax_cxx_compile_stdcxx.m4
@@ -0,0 +1,556 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXX to
+#   enable support.  VERSION may be '11' (for the C++11 standard) or '14'
+#   (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz redhat com>
+#   Copyright (c) 2012 Zack Weinberg <zackw panix com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr ices utexas edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov google com>
+#   Copyright (c) 2015 Paul Norman <penorman mac com>
+#   Copyright (c) 2015 Moritz Klammler <moritz klammler eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+#serial 3
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [],
+        [$1], [14], [],
+        [$1], [17], [m4_fatal([support for C++17 not yet implemented in AX_CXX_COMPILE_STDCXX])],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+  ax_cv_cxx_compile_cxx$1,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+    [ax_cv_cxx_compile_cxx$1=yes],
+    [ax_cv_cxx_compile_cxx$1=no])])
+  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++$1 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX$1=0
+    AC_MSG_NOTICE([No compiler with C++$1 support was found])
+  else
+    HAVE_CXX$1=1
+    AC_DEFINE(HAVE_CXX$1,1,
+              [define if the compiler supports basic C++$1 syntax])
+  fi
+  AC_SUBST(HAVE_CXX$1)
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_seperators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
diff --git a/build/autotools/ax_cxx_compile_stdcxx_11.m4 b/build/autotools/ax_cxx_compile_stdcxx_11.m4
index 516da37..b3d4bfd 100644
--- a/build/autotools/ax_cxx_compile_stdcxx_11.m4
+++ b/build/autotools/ax_cxx_compile_stdcxx_11.m4
@@ -4,23 +4,19 @@
 #
 # SYNOPSIS
 #
-#   AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
+#   AX_CXX_COMPILE_STDCXX_11([ext|noext], [mandatory|optional])
 #
 # DESCRIPTION
 #
 #   Check for baseline language coverage in the compiler for the C++11
-#   standard; if necessary, add switches to CXXFLAGS to enable support.
+#   standard; if necessary, add switches to CXX to enable support.
 #
-#   The first argument, if specified, indicates whether you insist on an
-#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
-#   -std=c++11).  If neither is specified, you get whatever works, with
-#   preference for an extended mode.
-#
-#   The second argument, if specified 'mandatory' or if left unspecified,
-#   indicates that baseline C++11 support is required and that the macro
-#   should error out if no mode with that support is found.  If specified
-#   'optional', then configuration proceeds regardless, after defining
-#   HAVE_CXX11 if and only if a supporting mode is found.
+#   This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
+#   macro with the version set to C++11.  The two optional arguments are
+#   forwarded literally as the second and third argument respectively.
+#   Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
+#   more information.  If you want to use this macro, you also need to
+#   download the ax_cxx_compile_stdcxx.m4 file.
 #
 # LICENSE
 #
@@ -29,144 +25,15 @@
 #   Copyright (c) 2013 Roy Stogner <roystgnr ices utexas edu>
 #   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov google com>
 #   Copyright (c) 2015 Paul Norman <penorman mac com>
+#   Copyright (c) 2015 Moritz Klammler <moritz klammler eu>
 #
 #   Copying and distribution of this file, with or without modification, are
 #   permitted in any medium without royalty provided the copyright notice
 #   and this notice are preserved. This file is offered as-is, without any
 #   warranty.
 
-#serial 13
-
-m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
-  template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
-
-    struct Base {
-    virtual void f() {}
-    };
-    struct Child : public Base {
-    virtual void f() override {}
-    };
-
-    typedef check<check<bool>> right_angle_brackets;
-
-    int a;
-    decltype(a) b;
-
-    typedef check<int> check_type;
-    check_type c;
-    check_type&& cr = static_cast<check_type&&>(c);
-
-    auto d = a;
-    auto l = [](){};
-    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
-    struct use_l { use_l() { l(); } };
-
-    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
-    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
-    namespace test_template_alias_sfinae {
-        struct foo {};
-
-        template<typename T>
-        using member = typename T::member_type;
-
-        template<typename T>
-        void func(...) {}
-
-        template<typename T>
-        void func(member<T>*) {}
-
-        void test();
-
-        void test() {
-            func<foo>(0);
-        }
-    }
-
-    // Check for C++11 attribute support
-    void noret [[noreturn]] () { throw 0; }
-]])
-
-AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
-  m4_if([$1], [], [],
-        [$1], [ext], [],
-        [$1], [noext], [],
-        [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
-  m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
-        [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
-        [$2], [optional], [ax_cxx_compile_cxx11_required=false],
-        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
-  AC_LANG_PUSH([C++])dnl
-  ac_success=no
-  AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
-  ax_cv_cxx_compile_cxx11,
-  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
-    [ax_cv_cxx_compile_cxx11=yes],
-    [ax_cv_cxx_compile_cxx11=no])])
-  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
-    ac_success=yes
-  fi
-
-  m4_if([$1], [noext], [], [dnl
-  if test x$ac_success = xno; then
-    for switch in -std=gnu++11 -std=gnu++0x; do
-      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
-      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
-                     $cachevar,
-        [ac_save_CXXFLAGS="$CXXFLAGS"
-         CXXFLAGS="$CXXFLAGS $switch"
-         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
-          [eval $cachevar=yes],
-          [eval $cachevar=no])
-         CXXFLAGS="$ac_save_CXXFLAGS"])
-      if eval test x\$$cachevar = xyes; then
-        CXXFLAGS="$CXXFLAGS $switch"
-        ac_success=yes
-        break
-      fi
-    done
-  fi])
+#serial 15
 
-  m4_if([$1], [ext], [], [dnl
-  if test x$ac_success = xno; then
-    dnl HP's aCC needs +std=c++11 according to:
-    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
-    dnl Cray's crayCC needs "-h std=c++11"
-    for switch in -std=c++11 -std=c++0x +std=c++11 "-h std=c++11"; do
-      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
-      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
-                     $cachevar,
-        [ac_save_CXXFLAGS="$CXXFLAGS"
-         CXXFLAGS="$CXXFLAGS $switch"
-         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
-          [eval $cachevar=yes],
-          [eval $cachevar=no])
-         CXXFLAGS="$ac_save_CXXFLAGS"])
-      if eval test x\$$cachevar = xyes; then
-        CXXFLAGS="$CXXFLAGS $switch"
-        ac_success=yes
-        break
-      fi
-    done
-  fi])
-  AC_LANG_POP([C++])
-  if test x$ax_cxx_compile_cxx11_required = xtrue; then
-    if test x$ac_success = xno; then
-      AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
-    fi
-  else
-    if test x$ac_success = xno; then
-      HAVE_CXX11=0
-      AC_MSG_NOTICE([No compiler with C++11 support was found])
-    else
-      HAVE_CXX11=1
-      AC_DEFINE(HAVE_CXX11,1,
-                [define if the compiler supports basic C++11 syntax])
-    fi
+include([ax_cxx_compile_stdcxx.m4])
 
-    AC_SUBST(HAVE_CXX11)
-  fi
-])
+AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX([11], [$1], [$2])])
diff --git a/build/autotools/mm-ax_cxx_compile_stdcxx.m4 b/build/autotools/mm-ax_cxx_compile_stdcxx.m4
new file mode 100644
index 0000000..7cc8e3e
--- /dev/null
+++ b/build/autotools/mm-ax_cxx_compile_stdcxx.m4
@@ -0,0 +1,561 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   MM_AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXXFLAGS to
+#   enable support.  VERSION may be '11' (for the C++11 standard) or '14'
+#   (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz redhat com>
+#   Copyright (c) 2012 Zack Weinberg <zackw panix com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr ices utexas edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov google com>
+#   Copyright (c) 2015 Paul Norman <penorman mac com>
+#   Copyright (c) 2015 Moritz Klammler <moritz klammler eu>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved.  This file is offered as-is, without any
+#   warranty.
+
+# Copied from ax_cxx_compile_stdcxx.m4 and added MM_ prefix to avoid
+# possible conflict with AX_CXX_COMPILE_STDCXX in other modules.
+
+#serial 1
+
+dnl  This macro is based on the code from the MM_AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([MM_AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [],
+        [$1], [14], [],
+        [$1], [17], [m4_fatal([support for C++17 not yet implemented in MM_AX_CXX_COMPILE_STDCXX])],
+        [m4_fatal([invalid first argument `$1' to MM_AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to MM_AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to MM_AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+  ax_cv_cxx_compile_cxx$1,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+    [ax_cv_cxx_compile_cxx$1=yes],
+    [ax_cv_cxx_compile_cxx$1=no])])
+  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++$1 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for switch in -std=c++$1 -std=c++0x +std=c++$1 "-h std=c++$1"; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  else
+    if test x$ac_success = xno; then
+      HAVE_CXX$1=0
+      AC_MSG_NOTICE([No compiler with C++$1 support was found])
+    else
+      HAVE_CXX$1=1
+      AC_DEFINE(HAVE_CXX$1,1,
+                [define if the compiler supports basic C++$1 syntax])
+    fi
+
+    AC_SUBST(HAVE_CXX$1)
+  fi
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_MM_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _MM_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_MM_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _MM_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _MM_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+
+dnl  Tests for new features in C++11
+
+m4_define([_MM_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// If the compiler admits that it is not ready for C++11, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201103L
+
+#error "This is not a C++11 compiler"
+
+#else
+
+namespace cxx11
+{
+
+  namespace test_static_assert
+  {
+
+    template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+  }
+
+  namespace test_final_override
+  {
+
+    struct Base
+    {
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual void f() override {}
+    };
+
+  }
+
+  namespace test_double_right_angle_brackets
+  {
+
+    template < typename T >
+    struct check {};
+
+    typedef check<void> single_type;
+    typedef check<check<void>> double_type;
+    typedef check<check<check<void>>> triple_type;
+    typedef check<check<check<check<void>>>> quadruple_type;
+
+  }
+
+  namespace test_decltype
+  {
+
+    int
+    f()
+    {
+      int a = 1;
+      decltype(a) b = 2;
+      return a + b;
+    }
+
+  }
+
+  namespace test_type_deduction
+  {
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static const bool value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static const bool value = true;
+    };
+
+    template < typename T1, typename T2 >
+    auto
+    add(T1 a1, T2 a2) -> decltype(a1 + a2)
+    {
+      return a1 + a2;
+    }
+
+    int
+    test(const int c, volatile int v)
+    {
+      static_assert(is_same<int, decltype(0)>::value == true, "");
+      static_assert(is_same<int, decltype(c)>::value == false, "");
+      static_assert(is_same<int, decltype(v)>::value == false, "");
+      auto ac = c;
+      auto av = v;
+      auto sumi = ac + av + 'x';
+      auto sumf = ac + av + 1.0;
+      static_assert(is_same<int, decltype(ac)>::value == true, "");
+      static_assert(is_same<int, decltype(av)>::value == true, "");
+      static_assert(is_same<int, decltype(sumi)>::value == true, "");
+      static_assert(is_same<int, decltype(sumf)>::value == false, "");
+      static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
+      return (sumf > 0.0) ? sumi : add(c, v);
+    }
+
+  }
+
+  namespace test_noexcept
+  {
+
+    int f() { return 0; }
+    int g() noexcept { return 0; }
+
+    static_assert(noexcept(f()) == false, "");
+    static_assert(noexcept(g()) == true, "");
+
+  }
+
+  namespace test_constexpr
+  {
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
+    {
+      return *s ? strlen_c_r(s + 1, acc + 1) : acc;
+    }
+
+    template < typename CharT >
+    unsigned long constexpr
+    strlen_c(const CharT *const s) noexcept
+    {
+      return strlen_c_r(s, 0UL);
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("1") == 1UL, "");
+    static_assert(strlen_c("example") == 7UL, "");
+    static_assert(strlen_c("another\0example") == 7UL, "");
+
+  }
+
+  namespace test_rvalue_references
+  {
+
+    template < int N >
+    struct answer
+    {
+      static constexpr int value = N;
+    };
+
+    answer<1> f(int&)       { return answer<1>(); }
+    answer<2> f(const int&) { return answer<2>(); }
+    answer<3> f(int&&)      { return answer<3>(); }
+
+    void
+    test()
+    {
+      int i = 0;
+      const int c = 0;
+      static_assert(decltype(f(i))::value == 1, "");
+      static_assert(decltype(f(c))::value == 2, "");
+      static_assert(decltype(f(0))::value == 3, "");
+    }
+
+  }
+
+  namespace test_uniform_initialization
+  {
+
+    struct test
+    {
+      static const int zero {};
+      static const int one {1};
+    };
+
+    static_assert(test::zero == 0, "");
+    static_assert(test::one == 1, "");
+
+  }
+
+  namespace test_lambdas
+  {
+
+    void
+    test1()
+    {
+      auto lambda1 = [](){};
+      auto lambda2 = lambda1;
+      lambda1();
+      lambda2();
+    }
+
+    int
+    test2()
+    {
+      auto a = [](int i, int j){ return i + j; }(1, 2);
+      auto b = []() -> int { return '0'; }();
+      auto c = [=](){ return a + b; }();
+      auto d = [&](){ return c; }();
+      auto e = [a, &b](int x) mutable {
+        const auto identity = [](int y){ return y; };
+        for (auto i = 0; i < a; ++i)
+          a += b--;
+        return x + identity(a + b);
+      }(0);
+      return a + b + c + d + e;
+    }
+
+    int
+    test3()
+    {
+      const auto nullary = [](){ return 0; };
+      const auto unary = [](int x){ return x; };
+      using nullary_t = decltype(nullary);
+      using unary_t = decltype(unary);
+      const auto higher1st = [](nullary_t f){ return f(); };
+      const auto higher2nd = [unary](nullary_t f1){
+        return [unary, f1](unary_t f2){ return f2(unary(f1())); };
+      };
+      return higher1st(nullary) + higher2nd(nullary)(unary);
+    }
+
+  }
+
+  namespace test_variadic_templates
+  {
+
+    template <int...>
+    struct sum;
+
+    template <int N0, int... N1toN>
+    struct sum<N0, N1toN...>
+    {
+      static constexpr auto value = N0 + sum<N1toN...>::value;
+    };
+
+    template <>
+    struct sum<>
+    {
+      static constexpr auto value = 0;
+    };
+
+    static_assert(sum<>::value == 0, "");
+    static_assert(sum<1>::value == 1, "");
+    static_assert(sum<23>::value == 23, "");
+    static_assert(sum<1, 2>::value == 3, "");
+    static_assert(sum<5, 5, 11>::value == 21, "");
+    static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
+
+  }
+
+  // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+  // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
+  // because of this.
+  namespace test_template_alias_sfinae
+  {
+
+    struct foo {};
+
+    template<typename T>
+    using member = typename T::member_type;
+
+    template<typename T>
+    void func(...) {}
+
+    template<typename T>
+    void func(member<T>*) {}
+
+    void test();
+
+    void test() { func<foo>(0); }
+
+  }
+
+}  // namespace cxx11
+
+#endif  // __cplusplus >= 201103L
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_MM_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_seperators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
diff --git a/build/autotools/mm-ax_cxx_compile_stdcxx_11.m4 b/build/autotools/mm-ax_cxx_compile_stdcxx_11.m4
new file mode 100644
index 0000000..47aa97a
--- /dev/null
+++ b/build/autotools/mm-ax_cxx_compile_stdcxx_11.m4
@@ -0,0 +1,171 @@
+# ============================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
+# ============================================================================
+#
+# SYNOPSIS
+#
+#   MM_AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the C++11
+#   standard; if necessary, add switches to CXXFLAGS to enable support.
+#
+#   The first argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for an extended mode.
+#
+#   The second argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline C++11 support is required and that the macro
+#   should error out if no mode with that support is found.  If specified
+#   'optional', then configuration proceeds regardless, after defining
+#   HAVE_CXX11 if and only if a supporting mode is found.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz redhat com>
+#   Copyright (c) 2012 Zack Weinberg <zackw panix com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr ices utexas edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov google com>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+# Copied from ax_cxx_compile_stdcxx_11.m4 and added MM_ prefix to avoid
+# possible conflict with AX_CXX_COMPILE_STDCXX_11 in other modules.
+
+#serial 11
+
+m4_define([_MM_AX_CXX_COMPILE_STDCXX_11_testbody], [[
+  template <typename T>
+    struct check
+    {
+      static_assert(sizeof(int) <= sizeof(T), "not big enough");
+    };
+
+    struct Base {
+    virtual void f() {}
+    };
+    struct Child : public Base {
+    virtual void f() override {}
+    };
+
+    typedef check<check<bool>> right_angle_brackets;
+
+    int a;
+    decltype(a) b;
+
+    typedef check<int> check_type;
+    check_type c;
+    check_type&& cr = static_cast<check_type&&>(c);
+
+    auto d = a;
+    auto l = [](){};
+    // Prevent Clang error: unused variable 'l' [-Werror,-Wunused-variable]
+    struct use_l { use_l() { l(); } };
+
+    // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
+    // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function because of this
+    namespace test_template_alias_sfinae {
+        struct foo {};
+
+        template<typename T>
+        using member = typename T::member_type;
+
+        template<typename T>
+        void func(...) {}
+
+        template<typename T>
+        void func(member<T>*) {}
+
+        void test();
+
+        void test() {
+            func<foo>(0);
+        }
+    }
+]])
+
+AC_DEFUN([MM_AX_CXX_COMPILE_STDCXX_11], [dnl
+  m4_if([$1], [], [],
+        [$1], [ext], [],
+        [$1], [noext], [],
+        [m4_fatal([invalid argument `$1' to MM_AX_CXX_COMPILE_STDCXX_11])])dnl
+  m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
+        [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
+        [$2], [optional], [ax_cxx_compile_cxx11_required=false],
+        [m4_fatal([invalid second argument `$2' to MM_AX_CXX_COMPILE_STDCXX_11])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
+  ax_cv_cxx_compile_cxx11,
+  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_11_testbody])],
+    [ax_cv_cxx_compile_cxx11=yes],
+    [ax_cv_cxx_compile_cxx11=no])])
+  if test x$ax_cv_cxx_compile_cxx11 = xyes; then
+    ac_success=yes
+  fi
+
+  m4_if([$1], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for switch in -std=gnu++11 -std=gnu++0x; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_11_testbody])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$1], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    for switch in -std=c++11 -std=c++0x +std=c++11; do
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
+                     $cachevar,
+        [ac_save_CXXFLAGS="$CXXFLAGS"
+         CXXFLAGS="$CXXFLAGS $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_MM_AX_CXX_COMPILE_STDCXX_11_testbody])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXXFLAGS="$ac_save_CXXFLAGS"])
+      if eval test x\$$cachevar = xyes; then
+        CXXFLAGS="$CXXFLAGS $switch"
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx11_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
+    fi
+  else
+    if test x$ac_success = xno; then
+      HAVE_CXX11=0
+      AC_MSG_NOTICE([No compiler with C++11 support was found])
+    else
+      HAVE_CXX11=1
+      AC_DEFINE(HAVE_CXX11,1,
+                [define if the compiler supports basic C++11 syntax])
+    fi
+
+    AC_SUBST(HAVE_CXX11)
+  fi
+])
+
diff --git a/build/autotools/mm-common.m4 b/build/autotools/mm-common.m4
new file mode 100644
index 0000000..f753d1b
--- /dev/null
+++ b/build/autotools/mm-common.m4
@@ -0,0 +1,47 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## macros/mm-common.m4.  Generated from mm-common.m4.in by configure.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20090814
+
+## _MM_PRE_INIT
+##
+## Private pre-initialization macro for use with AC_REQUIRE().  For now,
+## all it does is register a forbidden token pattern with autom4te, so
+## that unexpanded macro calls in the output can be caught.
+##
+AC_DEFUN([_MM_PRE_INIT], [m4_pattern_forbid([^_?MM_])])
+
+## _MM_PREREQ(this-package, this-version, min-version, user-package)
+##
+m4_define([_MM_PREREQ],
+[dnl
+m4_if(m4_quote(m4_version_compare([$2], [$3])), [-1],
+      [m4_fatal([$4 requires $1 $3 (version $2 is installed)])])[]dnl
+])
+
+## MM_PREREQ(min-version)
+##
+## Require at least mm-common <min-version> to be installed, otherwise
+## abort with a fatal error message.  The version is checked statically
+## at the time the configure script is generated.
+##
+AC_DEFUN([MM_PREREQ],
+[dnl
+m4_assert([$# >= 1])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+_MM_PREREQ([mm-common], [0.9.9], [$1], m4_defn([AC_PACKAGE_NAME]))[]dnl
+])
diff --git a/build/autotools/mm-common.m4.in b/build/autotools/mm-common.m4.in
new file mode 100644
index 0000000..b616327
--- /dev/null
+++ b/build/autotools/mm-common.m4.in
@@ -0,0 +1,47 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## @configure_input@
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20090814
+
+## _MM_PRE_INIT
+##
+## Private pre-initialization macro for use with AC_REQUIRE().  For now,
+## all it does is register a forbidden token pattern with autom4te, so
+## that unexpanded macro calls in the output can be caught.
+##
+AC_DEFUN([_MM_PRE_INIT], [m4_pattern_forbid([^_?MM_])])
+
+## _MM_PREREQ(this-package, this-version, min-version, user-package)
+##
+m4_define([_MM_PREREQ],
+[dnl
+m4_if(m4_quote(m4_version_compare([$2], [$3])), [-1],
+      [m4_fatal([$4 requires $1 $3 (version $2 is installed)])])[]dnl
+])
+
+## MM_PREREQ(min-version)
+##
+## Require at least mm-common <min-version> to be installed, otherwise
+## abort with a fatal error message.  The version is checked statically
+## at the time the configure script is generated.
+##
+AC_DEFUN([MM_PREREQ],
+[dnl
+m4_assert([$# >= 1])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+_MM_PREREQ([ PACKAGE_NAME@], [ PACKAGE_VERSION@], [$1], m4_defn([AC_PACKAGE_NAME]))[]dnl
+])
diff --git a/build/autotools/mm-dietlib.m4 b/build/autotools/mm-dietlib.m4
new file mode 100644
index 0000000..4a2b360
--- /dev/null
+++ b/build/autotools/mm-dietlib.m4
@@ -0,0 +1,118 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## This file is part of mm-common.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20091224
+
+## _MM_PROG_GCC_VISIBILITY_CHECK
+##
+## Implementation helper macro of MM_PROG_GCC_VISIBILITY().  Pulled
+## in through AC_REQUIRE() so that it will only be expanded once.
+##
+m4_define([_MM_PROG_GCC_VISIBILITY_CHECK],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_CACHE_CHECK([for GCC symbol visibility options],
+               [mm_cv_gcc_visibility_cxxflags],
+[dnl
+mm_save_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="$CXXFLAGS -fvisibility=hidden -fvisibility-inlines-hidden"
+dnl
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#pragma GCC visibility push(default)
+namespace Mm { void __attribute__((__visibility__("hidden"))) mmfunc(); }
+void Mm::mmfunc() {}
+#pragma GCC visibility pop
+]], [[Mm::mmfunc();]])],
+[mm_cv_gcc_visibility_cxxflags='-fvisibility=hidden -fvisibility-inlines-hidden'],
+[mm_cv_gcc_visibility_cxxflags=none])
+dnl
+CXXFLAGS=$mm_save_CXXFLAGS])[]dnl
+])
+
+## MM_PROG_GCC_VISIBILITY(variable-name)
+##
+## Check whether the compiler supports the GNU C++ symbol visibility
+## attributes and command-line options.  If explicit symbol visibility is
+## supported, the compiler command-line options for hiding all symbols by
+## default are made available through the specified substitution variable
+## <variable-name>.
+##
+## See also <http://gcc.gnu.org/wiki/Visibility> for more information on
+## symbol visibility and the attributes supported by GCC.
+##
+AC_DEFUN([MM_PROG_GCC_VISIBILITY],
+[dnl
+m4_assert([$# >= 1])[]dnl
+AC_LANG_ASSERT([C++])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_PROG_GCC_VISIBILITY_CHECK])[]dnl
+AS_IF([test "x$mm_cv_gcc_visibility_cxxflags" != xnone],
+      [$1=$mm_cv_gcc_visibility_cxxflags], [$1=])
+AC_SUBST([$1])[]dnl
+])
+
+## _MM_ARG_DISABLE_DEPRECATED_API_OPTION
+##
+## Implementation helper macro of MM_ARG_DISABLE_DEPRECATED_API().  Pulled
+## in through AC_REQUIRE() so that it will only be expanded once.
+##
+m4_define([_MM_ARG_DISABLE_DEPRECATED_API_OPTION],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_ARG_ENABLE([deprecated-api],
+              [AS_HELP_STRING([--disable-deprecated-api],
+                              [omit deprecated API from the library])],
+              [mm_enable_deprecated_api=$enableval],
+              [mm_enable_deprecated_api=yes])[]dnl
+AS_IF([test "x$mm_enable_deprecated_api" = xno],
+      [AC_MSG_WARN([[Deprecated API will not be built, breaking compatibility.
+Do not use this option for distribution packages.]])],
+      [AC_MSG_NOTICE([[Deprecated API will be built, for backwards-compatibility.]])])
+AM_CONDITIONAL([DISABLE_DEPRECATED_API], [test "x$mm_enable_deprecated_api" = xno])[]dnl
+])
+
+## _MM_ARG_DISABLE_DEPRECATED_API_DEFINE(define-prefix [define-prefix ...])
+##
+## Implementation helper macro of MM_ARG_DISABLE_DEPRECATED_API().  Expands
+## to a list of AC_DEFINE() calls, one for each prefix in the argument list.
+##
+m4_define([_MM_ARG_DISABLE_DEPRECATED_API_DEFINE],
+[m4_foreach_w([mm_prefix], [$1],
+[AC_DEFINE(m4_defn([mm_prefix])[_DISABLE_DEPRECATED], [1],
+           [Define to omit deprecated API from the library.])
+])])
+
+## MM_ARG_DISABLE_DEPRECATED_API([define-prefix [define-prefix ...]])
+##
+## Provide the --disable-deprecated-api configure option, which may be used
+## to trim the size of the resulting library at the cost of breaking binary
+## compatibility.  By default, deprecated API will be built.
+##
+## Each <define-prefix> in the whitespace-separated argument list is expanded
+## to a C preprocessor macro name <define-prefix>_DISABLE_DEPRECATED, which
+## will be defined to 1 in the generated configuration header if the option
+## to disable deprecated API is used.  The DISABLE_DEPRECATED_API Automake
+## conditional is provided as well.
+##
+AC_DEFUN([MM_ARG_DISABLE_DEPRECATED_API],
+[dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_ARG_DISABLE_DEPRECATED_API_OPTION])[]dnl
+AS_IF([test "x$mm_enable_deprecated_api" = xno],
+      [_MM_ARG_DISABLE_DEPRECATED_API_DEFINE(
+        m4_ifval([$1], [[$1]], [AS_TR_CPP(m4_defn([AC_PACKAGE_TARNAME]))]))])[]dnl
+])
diff --git a/build/autotools/mm-doc.m4 b/build/autotools/mm-doc.m4
new file mode 100644
index 0000000..1e89f7d
--- /dev/null
+++ b/build/autotools/mm-doc.m4
@@ -0,0 +1,252 @@
+## Copyright (c) 2009, 2010, 2011  Openismus GmbH  <http://www.openismus.com/>
+##
+## This file is part of mm-common.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20110327
+
+## _MM_CONFIG_DOCTOOL_DIR
+##
+## Query pkg-config for the location of the documentation utilities
+## shared by the GNOME C++ bindings.  This is the code path invoked
+## from MM_CONFIG_DOCTOOL_DIR when called without a directory name.
+##
+m4_define([_MM_CONFIG_DOCTOOL_DIR],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_REQUIRE([PKG_PROG_PKG_CONFIG])[]dnl
+dnl
+AC_MSG_CHECKING([location of documentation utilities])
+AS_IF([test "x$MMDOCTOOLDIR" = x],
+[
+  MMDOCTOOLDIR=`$PKG_CONFIG --variable=doctooldir mm-common-util 2>&AS_MESSAGE_LOG_FD`
+  AS_IF([test "[$]?" -ne 0],
+        [AC_MSG_ERROR([[not found
+The required module mm-common-util could not be found on this system.  If you
+are running a binary distribution and the mm-common package is installed,
+make sure that any separate development package for mm-common is installed
+as well.  If you built mm-common yourself, it may be necessary to adjust
+the PKG_CONFIG_PATH environment variable for pkg-config to find it.
+]])])
+])
+AC_MSG_RESULT([$MMDOCTOOLDIR])[]dnl
+])
+
+## MM_CONFIG_DOCTOOL_DIR([directory])
+##
+## Define the location of the documentation utilities shared by the
+## GNOME C++ binding modules.  If the <directory> argument is given,
+## it should name a directory relative to the toplevel directory of
+## the source tree.
+##
+## The directory name is used by mm-common-prepare as the destination
+## for copying the required files into the source tree.  The files are not
+## distributed if first parameter is empty.
+##
+AC_DEFUN([MM_CONFIG_DOCTOOL_DIR],
+[dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([MM_CHECK_GNU_MAKE])[]dnl
+m4_ifval([$1], [MMDOCTOOLDIR='[$]{top_srcdir}/$1'], [AC_REQUIRE([_MM_CONFIG_DOCTOOL_DIR])])
+AM_CONDITIONAL([DIST_DOCTOOLS], [test 'x$1' != 'x'])dnl
+AC_SUBST([MMDOCTOOLDIR])[]dnl
+])
+
+## _MM_ARG_ENABLE_DOCUMENTATION
+##
+## Implementation of MM_ARG_ENABLE_DOCUMENTATION, pulled in indirectly
+## through AC_REQUIRE() to make sure it is expanded only once.
+##
+m4_define([_MM_ARG_ENABLE_DOCUMENTATION],
+[dnl
+AC_PROVIDE([$0])[]dnl
+dnl
+AC_ARG_VAR([DOT], [path to dot utility])[]dnl
+AC_ARG_VAR([DOXYGEN], [path to Doxygen utility])[]dnl
+AC_ARG_VAR([XSLTPROC], [path to xsltproc utility])[]dnl
+dnl
+AC_PATH_PROG([DOT], [dot], [dot])
+AC_PATH_PROG([DOXYGEN], [doxygen], [doxygen])
+AC_PATH_PROG([XSLTPROC], [xsltproc], [xsltproc])
+dnl
+AC_ARG_ENABLE([documentation],
+              [AS_HELP_STRING([--disable-documentation],
+                              [do not build or install the documentation])],
+              [ENABLE_DOCUMENTATION=$enableval],
+              [ENABLE_DOCUMENTATION=auto])
+AS_IF([test "x$ENABLE_DOCUMENTATION" != xno],
+[
+  mm_err=
+  AS_IF([test "x$MMDOCTOOLDIR" = x], [mm_err='dnl
+The mm-common-util module is available, but the installation of mm-common on this
+machine is missing the shared documentation utilities of the GNOME C++
+bindings.  It may be necessary to upgrade to a more recent release of
+mm-common in order to build '$PACKAGE_NAME' and install the documentation.'],
+        [test "x$PERL" = xperl], [mm_err='Perl is required for installing the documentation.'],
+        [test "x$USE_MAINTAINER_MODE" != xno],
+  [
+    test "x$DOT" != xdot || mm_err=' dot'
+    test "x$DOXYGEN" != xdoxygen || mm_err="$mm_err doxygen"
+    test "x$XSLTPROC" != xxsltproc || mm_err="$mm_err xsltproc"
+    test -z "$mm_err" || mm_err='The documentation cannot be generated because
+not all of the required tools are available:'$mm_err
+  ])
+  AS_IF([test -z "$mm_err"], [ENABLE_DOCUMENTATION=yes],
+        [test "x$ENABLE_DOCUMENTATION" = xyes], [AC_MSG_FAILURE([[$mm_err]])],
+        [ENABLE_DOCUMENTATION=no; AC_MSG_WARN([[$mm_err]])])
+])
+AM_CONDITIONAL([ENABLE_DOCUMENTATION], [test "x$ENABLE_DOCUMENTATION" = xyes])
+AC_SUBST([DOXYGEN_TAGFILES], [[]])
+AC_SUBST([DOCINSTALL_FLAGS], [[]])[]dnl
+])
+
+## MM_ARG_ENABLE_DOCUMENTATION
+##
+## Provide the --disable-documentation configure option.  By default,
+## the documentation will be included in the build.  If not explicitly
+## disabled, also check whether the necessary tools are installed, and
+## abort if any are missing.
+##
+## The tools checked for are Perl, dot, Doxygen and xsltproc.  The
+## substitution variables PERL, DOT, DOXYGEN and XSLTPROC are set to
+## the command paths, unless overridden in the user environment.
+##
+## If the package provides the --enable-maintainer-mode option, the
+## tools dot, Doxygen and xsltproc are mandatory only when maintainer
+## mode is enabled.  Perl is required for the installdox utility even
+## if not in maintainer mode.
+##
+AC_DEFUN([MM_ARG_ENABLE_DOCUMENTATION],
+[dnl
+AC_BEFORE([$0], [MM_ARG_WITH_TAGFILE_DOC])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([MM_CONFIG_DOCTOOL_DIR])[]dnl
+AC_REQUIRE([MM_PATH_PERL])[]dnl
+AC_REQUIRE([_MM_ARG_ENABLE_DOCUMENTATION])[]dnl
+])
+
+## _MM_TR_URI(shell-expression)
+##
+## Internal macro that expands to a reusable shell construct which
+## functions as a poor man's filesystem path to URI translator.
+## The input <shell-expression> is expanded within double quotes.
+##
+m4_define([_MM_TR_URI],
+[dnl
+[`expr "X$1" : 'X\(.*[^\\/]\)[\\/]*' 2>&]AS_MESSAGE_LOG_FD[ |]dnl
+[ sed 's|[\\]|/|g;s| |%20|g;s|^/|file:///|;s|^.:/|file:///&|' 2>&]AS_MESSAGE_LOG_FD[`]dnl
+])
+
+## _MM_ARG_WITH_TAGFILE_DOC(option-basename, pkg-variable, tagfilename, [module])
+##
+m4_define([_MM_ARG_WITH_TAGFILE_DOC],
+[dnl
+  AC_MSG_CHECKING([for $1 documentation])
+  AC_ARG_WITH([$1-doc],
+              [AS_HELP_STRING([[--with-$1-doc=[TAGFILE ]HTMLREFDIR]],
+                              [Link to external $1 documentation]m4_ifval([$4], [[ [auto]]]))],
+  [
+    mm_htmlrefdir=`[expr "X $withval" : ' * \(.*\)' 2>&]AS_MESSAGE_LOG_FD`
+    mm_tagname=`[expr "X/$withval" : '[^ ]*[\\/]\([^\\/@]*\)@' 2>&]AS_MESSAGE_LOG_FD`
+    mm_tagpath=`[expr "X$withval" : 'X\([^ ]*\)@' 2>&]AS_MESSAGE_LOG_FD`
+    test "x$mm_tagname" != x || mm_tagname="$3"
+    test "x$mm_tagpath" != x || mm_tagpath=$mm_tagname[]dnl
+  ], [
+    mm_htmlrefdir=
+    mm_tagname="$3"
+    mm_tagpath=$mm_tagname[]dnl
+  ])
+  # Prepend working direcory if the tag file path starts with ./ or ../
+  AS_CASE([$mm_tagpath], [[.[\\/]*|..[\\/]*]], [mm_tagpath=`pwd`/$mm_tagpath])
+
+m4_ifval([$4], [dnl
+  # If no local directory was specified, get the default from the .pc file
+  AS_IF([test "x$mm_htmlrefdir" = x],
+  [
+    mm_htmlrefdir=`$PKG_CONFIG --variable=htmlrefdir "$4" 2>&AS_MESSAGE_LOG_FD`dnl
+  ])
+  # If the user specified a Web URL, allow it to override the public location
+  AS_CASE([$mm_htmlrefdir], [[http://*|https://*]], [mm_htmlrefpub=$mm_htmlrefdir],
+  [
+    mm_htmlrefpub=`$PKG_CONFIG --variable=htmlrefpub "$4" 2>&AS_MESSAGE_LOG_FD`
+    test "x$mm_htmlrefpub" != x || mm_htmlrefpub=$mm_htmlrefdir
+    test "x$mm_htmlrefdir" != x || mm_htmlrefdir=$mm_htmlrefpub
+  ])
+  # The user-supplied tag-file name takes precedence if it includes the path
+  AS_CASE([$mm_tagpath], [[*[\\/]*]],,
+  [
+    mm_doxytagfile=`$PKG_CONFIG --variable=doxytagfile "$4" 2>&AS_MESSAGE_LOG_FD`
+    test "x$mm_doxytagfile" = x || mm_tagpath=$mm_doxytagfile
+  ])
+  # Remove trailing slashes and translate to URI
+  mm_htmlrefpub=_MM_TR_URI([$mm_htmlrefpub])
+])[]dnl
+  mm_htmlrefdir=_MM_TR_URI([$mm_htmlrefdir])
+
+  AC_MSG_RESULT([$mm_tagpath $mm_htmlrefdir])
+
+  AS_IF([test "x$USE_MAINTAINER_MODE" != xno && test ! -f "$mm_tagpath"],
+        [AC_MSG_WARN([Doxygen tag file $3 not found])])
+  AS_IF([test "x$mm_htmlrefdir" = x],
+        [AC_MSG_WARN([Location of external $1 documentation not set])],
+        [AS_IF([test "x$DOCINSTALL_FLAGS" = x],
+               [DOCINSTALL_FLAGS="-l '$mm_tagname $mm_htmlrefdir/'"],
+               [DOCINSTALL_FLAGS="$DOCINSTALL_FLAGS -l '$mm_tagname $mm_htmlrefdir/'"])])
+
+  AS_IF([test "x$mm_$2" = x], [mm_val=$mm_tagpath], [mm_val="$mm_tagpath=$mm_$2"])
+  AS_IF([test "x$DOXYGEN_TAGFILES" = x],
+        [DOXYGEN_TAGFILES=[\]"$mm_val[\]"],
+        [DOXYGEN_TAGFILES="$DOXYGEN_TAGFILES "[\]"$mm_val[\]"])[]dnl
+])
+
+## MM_ARG_WITH_TAGFILE_DOC(tagfilename, [module])
+##
+## Provide a --with-<tagfilebase>-doc=[/path/tagfile ]htmlrefdir configure
+## option, which may be used to specify the location of a tag file and the
+## path to the corresponding HTML reference documentation.  If the project
+## provides the maintainer mode option and maintainer mode is not enabled,
+## the user does not have to provide the full path to the tag file.  The
+## full path is only required for rebuilding the documentation.
+##
+## If the optional <module> argument has been specified, and either the tag
+## file or the HTML location have not been overridden by the user already,
+## try to retrieve the missing paths automatically via pkg-config.  Also ask
+## pkg-config for the URI to the online documentation, for use as the preset
+## location when the documentation is generated.
+##
+## A warning message will be shown if the HTML path could not be determined.
+## If maintainer mode is active, a warning is also displayed if the tag file
+## could not be found.
+##
+## The results are appended to the substitution variables DOXYGEN_TAGFILES
+## and DOCINSTALL_FLAGS, using the following format:
+##
+##  DOXYGEN_TAGFILES = "/path/tagfile=htmlrefpub" [...]
+##  DOCINSTALL_FLAGS = -l 'tagfile htmlrefdir' [...]
+##
+## The substitutions are intended to be used for the Doxygen configuration,
+## and as argument list to the doc-install.pl or installdox utility.
+##
+AC_DEFUN([MM_ARG_WITH_TAGFILE_DOC],
+[dnl
+m4_assert([$# >= 1])[]dnl
+m4_ifval([$2], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])])[]dnl
+AC_REQUIRE([MM_CONFIG_DOCTOOL_DIR])[]dnl
+AC_REQUIRE([_MM_ARG_ENABLE_DOCUMENTATION])[]dnl
+dnl
+AS_IF([test "x$ENABLE_DOCUMENTATION" != xno],
+      [_MM_ARG_WITH_TAGFILE_DOC(m4_quote(m4_bpatsubst([$1], [[+]*\([-+][0123456789]\|[._]\).*$])),
+                                [htmlref]m4_ifval([$2], [[pub]], [[dir]]), [$1], [$2])])[]dnl
+])
diff --git a/build/autotools/mm-module.m4 b/build/autotools/mm-module.m4
new file mode 100644
index 0000000..028edea
--- /dev/null
+++ b/build/autotools/mm-module.m4
@@ -0,0 +1,87 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## This file is part of mm-common.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20091228
+
+## _MM_INIT_MODULE_VERSION(basename, BASENAME, [major], [minor], [micro])
+##
+m4_define([_MM_INIT_MODULE_VERSION],
+[dnl
+m4_ifval([$3],
+[AC_SUBST([$2][_MAJOR_VERSION], [$3])
+AC_DEFINE([$2][_MAJOR_VERSION], [$3], [Major version number of $1.])
+])[]dnl
+m4_ifval([$4],
+[AC_SUBST([$2][_MINOR_VERSION], [$4])
+AC_DEFINE([$2][_MINOR_VERSION], [$4], [Minor version number of $1.])
+])[]dnl
+m4_ifval([$5],
+[AC_SUBST([$2][_MICRO_VERSION], [$5])
+AC_DEFINE([$2][_MICRO_VERSION], [$5], [Micro version number of $1.])
+])[]dnl
+])
+
+## _MM_INIT_MODULE_SUBST(module-name, module-version, basename, api-version, BASENAME)
+##
+m4_define([_MM_INIT_MODULE_SUBST],
+[dnl
+AC_SUBST([$5][_MODULE_NAME], ['$1'])
+AC_SUBST([$5][_VERSION], ['$2'])
+m4_ifval([$4],
+[AC_SUBST([$5][_API_VERSION], ['$4'])
+])[]dnl
+_MM_INIT_MODULE_VERSION([$3], [$5], m4_bpatsubst([$2], [[^0123456789]+], [,]))[]dnl
+])
+
+## _MM_INIT_MODULE_BASENAME(module-name, module-version, basename, api-version)
+##
+m4_define([_MM_INIT_MODULE_BASENAME],
+          [_MM_INIT_MODULE_SUBST([$1], [$2], [$3], [$4],
+                                 m4_quote(AS_TR_CPP(m4_quote(m4_translit([$3], [+], [X])))))])
+
+## MM_INIT_MODULE(module-name, [module-version])
+##
+## Set up substitution variables and macro definitions for a module with
+## the specified pkg-config <module-name> and <module-version> triplet.
+## If no <module-version> is specified, it defaults to the expansion of
+## AC_PACKAGE_VERSION.
+##
+## Substitutions: <BASENAME>_MODULE_NAME        <module-name>
+##                <BASENAME>_VERSION            <module-version>
+##                <BASENAME>_API_VERSION        <api-version>
+##                <BASENAME>_MAJOR_VERSION      <major>
+##                <BASENAME>_MINOR_VERSION      <minor>
+##                <BASENAME>_MICRO_VERSION      <micro>
+##
+## Macro defines: <BASENAME>_MAJOR_VERSION      <major>
+##                <BASENAME>_MINOR_VERSION      <minor>
+##                <BASENAME>_MICRO_VERSION      <micro>
+##
+## Where:         <BASENAME>                    AS_TR_CPP(<basename> =~ tr/+/X/)
+##                <basename>[-<api-version>]    <module-name>
+##                <major>.<minor>.<micro>[.*]   <module-version>
+##
+AC_DEFUN([MM_INIT_MODULE],
+[dnl
+m4_assert([$# >= 1])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([MM_CHECK_GNU_MAKE])[]dnl
+_MM_INIT_MODULE_BASENAME([$1],
+                 m4_quote(m4_ifval([$2], [$2], m4_defn([AC_PACKAGE_VERSION]))),
+                 m4_quote(m4_bpatsubst([$1], [[-.0123456789]+$])),
+                 m4_quote(m4_bregexp([$1], [-?\([.0123456789]+\)$], [\1])))[]dnl
+])
diff --git a/build/autotools/mm-pkg.m4 b/build/autotools/mm-pkg.m4
new file mode 100644
index 0000000..86f94d2
--- /dev/null
+++ b/build/autotools/mm-pkg.m4
@@ -0,0 +1,123 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## This file is part of mm-common.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20090822
+
+## _MM_CHECK_GNU_MAKE
+##
+## Implementation of MM_CHECK_GNU_MAKE.
+##
+m4_define([_MM_CHECK_GNU_MAKE],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_MSG_CHECKING([whether [$]{MAKE-make} supports GNU make features])
+cat >conftest.make <<'_MMEOF'
+override reverse = [$](2)[$](subst ,, )[$](1)
+override result := [$](word 2,[$](call reverse,success,failure))
+all: ; test '[$](result)' = success
+.PHONY: all
+_MMEOF
+AS_IF([[$]{MAKE-make} -f conftest.make >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD],
+      [mm_gnu_make=yes], [mm_gnu_make=no])
+rm -f conftest.make
+AC_MSG_RESULT([$mm_gnu_make])
+AS_IF([test "x$mm_gnu_make" != xyes],
+      [AC_MSG_FAILURE([[The GNU make program is required to build $PACKAGE_NAME.]])])[]dnl
+])
+
+## MM_CHECK_GNU_MAKE
+##
+## Check whether the installed make program supports GNU make features.
+## If the test fails, display an error message and abort.
+##
+AC_DEFUN([MM_CHECK_GNU_MAKE],
+[dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_CHECK_GNU_MAKE])[]dnl
+])
+
+## _MM_PATH_PERL
+##
+## Internal helper macro for MM_PATH_PERL.
+##
+m4_define([_MM_PATH_PERL],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_ARG_VAR([PERL], [path to Perl interpreter])[]dnl
+AC_PATH_PROG([PERL], [perl], [perl])[]dnl
+])
+
+## MM_PATH_PERL
+##
+## Locate the Perl interpreter and set the substitution variable PERL
+## to the full path to the perl executable if found, or to 'perl' if
+## not found.  Also call AC_ARG_VAR() on the PERL variable.
+##
+AC_DEFUN([MM_PATH_PERL],
+[dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_PATH_PERL])[]dnl
+])
+
+## _MM_CHECK_PERL(min-version, [action-if-found], [action-if-not-found])
+##
+## Internal helper macro for MM_CHECK_PERL.
+##
+m4_define([_MM_CHECK_PERL],
+[dnl
+AS_IF([$PERL -e "require v$1; exit 0;" >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD],
+      [$2], m4_ifval([$2$3], [[$3]],
+            [[AC_MSG_FAILURE([[At least Perl ]$1[ is required to build $PACKAGE_NAME.]])]]))[]dnl
+])
+
+## MM_CHECK_PERL([min-version], [action-if-found], [action-if-not-found])
+##
+## Run MM_PATH_PERL and then check whether the Perl interpreter can be
+## executed and whether it meets the version requirement of <min-version>
+## or later.  Execute <action-if-found> on success, otherwise execute
+## <action-if-not-found>.  The default value of <min-version> is 5.6.0
+## if the argument is empty.
+##
+AC_DEFUN([MM_CHECK_PERL],
+[dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_PATH_PERL])[]dnl
+_MM_CHECK_PERL(m4_ifval([$1], [[$1]], [[5.6.0]]), [$2], [$3])[]dnl
+])
+
+## MM_PKG_CONFIG_SUBST(variable, arguments, [action-if-found], [action-if-not-found])
+##
+## Run the pkg-config utility with the specified command-line <arguments>
+## and capture its standard output in the named shell <variable>.  If the
+## command exited successfully, execute <action-if-found> in the shell if
+## specified.  If the command failed, run <action-if-not-found> if given,
+## otherwise ignore the error.
+##
+AC_DEFUN([MM_PKG_CONFIG_SUBST],
+[dnl
+m4_assert([$# >= 2])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([PKG_PROG_PKG_CONFIG])[]dnl
+AC_MSG_CHECKING([for $1])
+dnl
+AS_IF([test -z "[$]{$1+set}"],
+      [$1=`$PKG_CONFIG $2 2>&AS_MESSAGE_LOG_FD`
+       AS_IF([test "[$]?" -eq 0], [$3], [$4])])
+dnl
+AC_MSG_RESULT([[$]$1])
+AC_SUBST([$1])[]dnl
+])
diff --git a/build/autotools/mm-warnings.m4 b/build/autotools/mm-warnings.m4
new file mode 100644
index 0000000..840a4fc
--- /dev/null
+++ b/build/autotools/mm-warnings.m4
@@ -0,0 +1,123 @@
+## Copyright (c) 2009  Openismus GmbH  <http://www.openismus.com/>
+##
+## This file is part of mm-common.
+##
+## mm-common is free software: you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published
+## by the Free Software Foundation, either version 2 of the License,
+## or (at your option) any later version.
+##
+## mm-common is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with mm-common.  If not, see <http://www.gnu.org/licenses/>.
+
+#serial 20091103
+
+## _MM_ARG_ENABLE_WARNINGS_OPTION
+##
+## Implementation helper macro of MM_ARG_ENABLE_WARNINGS().  Pulled in
+## through AC_REQUIRE() so that it is only expanded once.
+##
+m4_define([_MM_ARG_ENABLE_WARNINGS_OPTION],
+[dnl
+AC_PROVIDE([$0])[]dnl
+AC_ARG_ENABLE([warnings],
+              [AS_HELP_STRING([[--enable-warnings[=min|max|fatal|no]]],
+                              [set compiler pedantry level [default=min]])],
+              [mm_enable_warnings=$enableval],
+              [mm_enable_warnings=min])[]dnl
+])
+
+## MM_ARG_ENABLE_WARNINGS(variable, min-flags, max-flags, [deprecation-prefixes])
+##
+## Provide the --enable-warnings configure argument, set to "min" by default.
+## <min-flags> and <max-flags> should be space-separated lists of compiler
+## warning flags to use with --enable-warnings=min or --enable-warnings=max,
+## respectively.  Warning level "fatal" is the same as "max" but in addition
+## enables -Werror mode.
+##
+## If not empty, <deprecation-prefixes> should be a list of module prefixes
+## which is expanded to -D<module>_DISABLE_DEPRECATED flags if fatal warnings
+## are enabled, too.
+##
+## For instance, your configure.ac file might use the macro like this:
+##
+##   MM_ARG_ENABLE_WARNINGS([EXAMPLE_WFLAGS],
+##                          [-Wall],
+##                          [-pedantic -Wall -Wextra],
+##                          [G PANGO ATK GDK GDK_PIXBUF GTK])
+##
+## Your Makefile.am could then contain a line such as this:
+##
+##   AM_CFLAGS = $(EXAMPLE_WFLAGS)
+##
+## In order to determine the warning options to use with the C++ compiler,
+## call AC_LANG([C++]) first to change the current language.  If different
+## output variables are used, it is also fine to call MM_ARG_ENABLE_WARNINGS
+## repeatedly, once for each language setting.
+##
+## You may force people to fix warnings when creating release tarballs by
+## adding this line to your Makefile.am:
+##
+##   DISTCHECK_CONFIGURE_FLAGS = --enable-warnings=fatal
+##
+AC_DEFUN([MM_ARG_ENABLE_WARNINGS],
+[dnl
+m4_assert([$# >= 3])[]dnl
+AC_REQUIRE([_MM_PRE_INIT])[]dnl
+AC_REQUIRE([_MM_ARG_ENABLE_WARNINGS_OPTION])[]dnl
+dnl
+AS_CASE([$ac_compile],
+        [[*'$CXXFLAGS '*]], [mm_lang='C++' mm_cc=$CXX mm_conftest="conftest.[$]{ac_ext-cc}"],
+        [[*'$CFLAGS '*]],   [mm_lang=C mm_cc=$CC mm_conftest="conftest.[$]{ac_ext-c}"],
+        [AC_MSG_ERROR([[current language is neither C nor C++]])])
+dnl
+AC_MSG_CHECKING([which $mm_lang compiler warning flags to use])
+m4_ifval([$4], [mm_deprecation_flags=
+])mm_tested_flags=
+dnl
+AS_CASE([$mm_enable_warnings],
+        [no],    [mm_warning_flags=],
+        [max],   [mm_warning_flags="$3"],
+        [fatal], [mm_warning_flags="$3 -Werror"[]m4_ifval([$4], [
+         for mm_prefix in $4
+         do
+           mm_deprecation_flags="$mm_deprecation_flags-D[$]{mm_prefix}_DISABLE_DEPRECATED "
+         done])],
+        [mm_warning_flags="$2"])
+dnl
+AS_IF([test "x$mm_warning_flags" != x],
+[
+  # Keep in mind that the dummy source must be devoid of any
+  # problems that might cause diagnostics.
+  AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+int main(int argc, char** argv) { return !argv ? 0 : argc; }
+]])])
+  for mm_flag in $mm_warning_flags
+  do
+    # Test whether the compiler accepts the flag.  Look at standard output,
+    # since GCC only shows a warning message if an option is not supported.
+    mm_cc_out=`$mm_cc $mm_tested_flags $mm_flag -c "$mm_conftest" 2>&1 || echo failed`
+    rm -f "conftest.[$]{OBJEXT-o}"
+
+    AS_IF([test "x$mm_cc_out" = x],
+          [AS_IF([test "x$mm_tested_flags" = x],
+                 [mm_tested_flags=$mm_flag],
+                 [mm_tested_flags="$mm_tested_flags $mm_flag"])],
+[cat <<_MMEOF >&AS_MESSAGE_LOG_FD
+$mm_cc: $mm_cc_out
+_MMEOF
+])
+  done
+  rm -f "$mm_conftest"
+])
+mm_all_flags=m4_ifval([$4], [$mm_deprecation_flags])$mm_tested_flags
+AC_SUBST([$1], [$mm_all_flags])
+dnl
+test "x$mm_all_flags" != x || mm_all_flags=none
+AC_MSG_RESULT([$mm_all_flags])[]dnl
+])
diff --git a/configure.ac b/configure.ac
index 7ece79e..f411000 100644
--- a/configure.ac
+++ b/configure.ac
@@ -546,7 +546,6 @@ echo "  Global File Search ................... : ${enable_file_search_plugin}"
 echo "  GNOME Code Assistance ................ : ${enable_gnome_code_assistance_plugin}"
 echo "  HTML Autocompletion .................. : ${enable_html_completion_plugin}"
 echo "  HTML and Markdown Preview ............ : ${enable_html_preview_plugin}"
-echo "  Example C++.............. ............ : ${enable_hello_cpp_plugin}"
 echo "  JHBuild .............................. : ${enable_jhbuild_plugin}"
 echo "  MinGW ................................ : ${enable_mingw_plugin}"
 echo "  Project Creation ..................... : ${enable_create_project_plugin}"
@@ -563,6 +562,10 @@ echo "  Vala Language Pack ................... : ${enable_vala_pack_plugin}"
 echo "  Xdg-App .............................. : ${enable_xdg_app_plugin}"
 echo "  XML Language Pack .................... : ${enable_xml_pack_plugin}"
 echo ""
+echo " Example Plugins"
+echo ""
+echo "  Example C++ .......................... : ${enable_hello_cpp_plugin}"
+echo ""
 echo " Templates"
 echo ""
 echo "  Autotools ............................ : ${enable_autotools_templates}"
diff --git a/libidemm/configure.ac b/libidemm/configure.ac
index aee3725..c6b506f 100644
--- a/libidemm/configure.ac
+++ b/libidemm/configure.ac
@@ -1,4 +1,5 @@
 m4_define([gtkmm_required_version], [3.19.12])
+m4_define([glibmm_required_version], [2.48.0])
 
 AC_SUBST([IDEMM_SO_VERSION], [0:0:0])
 
@@ -12,9 +13,6 @@ MM_ARG_ENABLE_DOCUMENTATION
 MM_PKG_CONFIG_SUBST([GMMPROC_DIR], [--variable=gmmprocdir glibmm-2.4])
 MM_PKG_CONFIG_SUBST([GMMPROC_EXTRA_M4_DIR], [--variable=gmmprocm4dir cairomm-1.0 pangomm-1.4 atkmm-1.6 
gtkmm-3.0])
 
-PKG_CHECK_MODULES(IDEMM,    [gtkmm-3.0 >= gtkmm_required_version])
-
-
 AC_ARG_ENABLE([idemm],
               [AS_HELP_STRING([--enable-idemm=@<:@yes/no@:>@],
                               [Build idemm library (C++ wrapper for libide])],
@@ -22,8 +20,9 @@ AC_ARG_ENABLE([idemm],
              [enable_idemm=auto])
 
 AS_IF([test x$enable_idemm != xno],[
-        PKG_CHECK_MODULES(GTKMM,
-                         [gtkmm-3.0 >= gtkmm_required_version],
+        PKG_CHECK_MODULES(IDEMM,
+                         [gtkmm-3.0 >= gtkmm_required_version
+                          glibmm-2.4 >= glibmm_required_version],
                          [have_gtkmm=yes],
                          [have_gtkmm=no])
 
diff --git a/libidemm/idemm/Makefile.am b/libidemm/idemm/Makefile.am
index fb2adf0..3c4b528 100644
--- a/libidemm/idemm/Makefile.am
+++ b/libidemm/idemm/Makefile.am
@@ -1,8 +1,11 @@
 if ENABLE_IDEMM
 
 lib_LTLIBRARIES = libidemm-1.0.la
+
 include $(srcdir)/../src/filelist.am
+
 include $(srcdir)/filelist.am
+
 include $(top_srcdir)/libidemm/compile-binding.am
 
 local_cppflags = $(binding_includes) $(binding_cppflags) -DLIBIDEMM_BUILD=1
@@ -22,3 +25,5 @@ libidemm_1_0_la_LDFLAGS =
 libidemm_1_0_la_LIBADD  = $(IDEMM_LIBS)
 
 endif
+
+-include $(top_srcdir)/git.mk
diff --git a/libidemm/tools/Makefile.am b/libidemm/tools/Makefile.am
index 1d4ce8d..c8a5a6a 100644
--- a/libidemm/tools/Makefile.am
+++ b/libidemm/tools/Makefile.am
@@ -1,7 +1,5 @@
 if ENABLE_IDEMM
 
-AUTOMAKE_OPTIONS = subdir-objects
-
 include $(srcdir)/m4/filelist.am
 
 noinst_PROGRAMS = extra_defs_gen/generate_defs_libide
diff --git a/plugins/hello-cpp/configure.ac b/plugins/hello-cpp/configure.ac
index 39217bb..fe123fe 100644
--- a/plugins/hello-cpp/configure.ac
+++ b/plugins/hello-cpp/configure.ac
@@ -4,7 +4,7 @@ AC_ARG_ENABLE([hello-cpp-plugin],
               [AS_HELP_STRING([--enable-hello-cpp-plugin=@<:@yes/no@:>@],
                               [Build example C++ plugin with gtkmm.])],
               [enable_hello_cpp_plugin=$enableval],
-              [enable_hello_cpp_plugin=auto])
+              [enable_hello_cpp_plugin=no])
 
 AS_IF([test x$enable_hello_cpp_plugin != xno],[
        AM_COND_IF([ENABLE_IDEMM], [have_idemm=yes], [have_idemm=no])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]