Home | History | Annotate | Download | only in m4
      1 dnl GTEST_LIB_CHECK([minimum version [,
      2 dnl                  action if found [,action if not found]]])
      3 dnl
      4 dnl Check for the presence of the Google Test library, optionally at a minimum
      5 dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines
      6 dnl standard variables for substitution including GTEST_CPPFLAGS,
      7 dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines
      8 dnl GTEST_VERSION as the version of Google Test found. Finally, it provides
      9 dnl optional custom action slots in the event GTEST is found or not.
     10 AC_DEFUN([GTEST_LIB_CHECK],
     11 [
     12 dnl Provide a flag to enable or disable Google Test usage.
     13 AC_ARG_ENABLE([gtest],
     14   [AS_HELP_STRING([--enable-gtest],
     15                   [Enable tests using the Google C++ Testing Framework.
     16                   (Default is enabled.)])],
     17   [],
     18   [enable_gtest=])
     19 AC_ARG_VAR([GTEST_CONFIG],
     20            [The exact path of Google Test's 'gtest-config' script.])
     21 AC_ARG_VAR([GTEST_CPPFLAGS],
     22            [C-like preprocessor flags for Google Test.])
     23 AC_ARG_VAR([GTEST_CXXFLAGS],
     24            [C++ compile flags for Google Test.])
     25 AC_ARG_VAR([GTEST_LDFLAGS],
     26            [Linker path and option flags for Google Test.])
     27 AC_ARG_VAR([GTEST_LIBS],
     28            [Library linking flags for Google Test.])
     29 AC_ARG_VAR([GTEST_VERSION],
     30            [The version of Google Test available.])
     31 HAVE_GTEST="no"
     32 AS_IF([test "x${enable_gtest}" != "xno"],
     33   [AC_MSG_CHECKING([for 'gtest-config'])
     34    AS_IF([test "x${enable_gtest}" != "xyes"],
     35      [AS_IF([test -x "${enable_gtest}/scripts/gtest-config"],
     36         [GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"],
     37         [GTEST_CONFIG="${enable_gtest}/bin/gtest-config"])
     38       AS_IF([test -x "${GTEST_CONFIG}"], [],
     39         [AC_MSG_RESULT([no])
     40          AC_MSG_ERROR([dnl
     41 Unable to locate either a built or installed Google Test.
     42 The specific location '${enable_gtest}' was provided for a built or installed
     43 Google Test, but no 'gtest-config' script could be found at this location.])
     44          ])],
     45      [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])])
     46    AS_IF([test -x "${GTEST_CONFIG}"],
     47      [AC_MSG_RESULT([${GTEST_CONFIG}])
     48       m4_ifval([$1],
     49         [_gtest_min_version="--min-version=$1"
     50          AC_MSG_CHECKING([for Google Test at least version >= $1])],
     51         [_gtest_min_version="--min-version=0"
     52          AC_MSG_CHECKING([for Google Test])])
     53       AS_IF([${GTEST_CONFIG} ${_gtest_min_version}],
     54         [AC_MSG_RESULT([yes])
     55          HAVE_GTEST='yes'],
     56         [AC_MSG_RESULT([no])])],
     57      [AC_MSG_RESULT([no])])
     58    AS_IF([test "x${HAVE_GTEST}" = "xyes"],
     59      [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags`
     60       GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags`
     61       GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags`
     62       GTEST_LIBS=`${GTEST_CONFIG} --libs`
     63       GTEST_VERSION=`${GTEST_CONFIG} --version`
     64       AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])],
     65      [AS_IF([test "x${enable_gtest}" = "xyes"],
     66         [AC_MSG_ERROR([dnl
     67 Google Test was enabled, but no viable version could be found.])
     68          ])])])
     69 AC_SUBST([HAVE_GTEST])
     70 AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"])
     71 AS_IF([test "x$HAVE_GTEST" = "xyes"],
     72   [m4_ifval([$2], [$2])],
     73   [m4_ifval([$3], [$3])])
     74 ])
     75