From b853ec90d56d4f052980d6dd7ef37fa83e6062d3 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Thu, 18 Dec 2014 10:49:59 -0800 Subject: [PATCH] Added configure option for documentation build. Added option with fallback of 'auto' to control building of documentation. Signed-off-by: Jon A. Cruz Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- configure.ac | 66 +++++++++++++++++++++++++++++++++++++------------ doc/Makefile.am | 2 +- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/configure.ac b/configure.ac index 329f2245..374a63aa 100644 --- a/configure.ac +++ b/configure.ac @@ -38,6 +38,7 @@ AM_SILENT_RULES([yes]) # Check for programs AC_PROG_CC_C99 AC_PROG_CXX # Only used by build C++ test +AC_PROG_GREP # Initialize libtool LT_PREREQ([2.2]) @@ -67,23 +68,55 @@ fi AC_SUBST(GCC_CFLAGS) AC_SUBST(GCC_CXXFLAGS) -AC_PATH_PROG(DOXYGEN, [doxygen]) -if test "x$DOXYGEN" = "x"; then - AC_MSG_WARN([doxygen not found - required for documentation]) - have_doxygen="no" -else - have_doxygen="yes" -fi -AM_CONDITIONAL([HAVE_DOXYGEN], [test "x$have_doxygen" = "xyes"]) +AC_ARG_ENABLE([documentation], + [AC_HELP_STRING([--enable-documentation], + [Enable building the documentation (default=auto)])], + [build_documentation="$enableval"], + [build_documentation="auto"]) -AC_PATH_PROG(DOT, dot) -if test "x$DOT" = "x"; then - AC_MSG_WARN([Graphviz's dot not found - required for documentation]) - have_dot="no" -else - have_dot="yes" +if test "x$build_documentation" = "xyes" -o "x$build_documentation" = "xauto"; then + AC_PATH_PROG(DOXYGEN, doxygen) + if test "x$DOXYGEN" = "x"; then + if test "x$build_documentation" = "xyes"; then + AC_MSG_ERROR([Documentation build requested but doxygen not found. Install doxygen or disable the documentation using --disable-documentation]) + fi + else + AC_MSG_CHECKING([for compatible doxygen version]) + doxygen_version=`$DOXYGEN --version` + AS_VERSION_COMPARE([$doxygen_version], [1.6.0], + [AC_MSG_RESULT([no]) + DOXYGEN=""], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([yes])]) + if test "x$DOXYGEN" = "x" -a "x$build_documentation" = "xyes"; then + AC_MSG_ERROR([Doxygen $doxygen_version too old. Doxygen 1.6+ required for documentation build. Install required doxygen version or disable the documentation using --disable-documentation]) + fi + fi + + AC_PATH_PROG(DOT, dot) + if test "x$DOT" = "x"; then + if test "x$build_documentation" = "xyes"; then + AC_MSG_ERROR([Documentation build requested but graphviz's dot not found. Install graphviz or disable the documentation using --disable-documentation]) + fi + else + AC_MSG_CHECKING([for compatible dot version]) + dot_version=`$DOT -V 2>&1|$GREP -oP '(?<=version\W)@<:@0-9.@:>@*(?=\W(.*))'` + AS_VERSION_COMPARE([$dot_version], [2.26.0], + [AC_MSG_RESULT([no]) + DOT=""], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([yes])]) + if test "x$DOT" = "x" -a "x$build_documentation" = "xyes"; then + AC_MSG_ERROR([Graphviz dot $dot_version too old. Graphviz 2.26+ required for documentation build. Install required graphviz version or disable the documentation using --disable-documentation]) + fi + fi + + if test "x$DOXYGEN" != "x" -a "x$DOT" != "x"; then + build_documentation="yes" + else + build_documentation="no" + fi fi -AM_CONDITIONAL([HAVE_DOT], [test "x$have_dot" = "xyes"]) AC_ARG_ENABLE(event-gui, AS_HELP_STRING([--enable-event-gui], [Build the GUI event viewer (default=auto)]), @@ -120,6 +153,7 @@ fi AM_CONDITIONAL(HAVE_VALGRIND, [test "x$VALGRIND" != "x"]) AM_CONDITIONAL(BUILD_TESTS, [test "x$build_tests" = "xyes"]) +AM_CONDITIONAL(BUILD_DOCS, [test "x$build_documentation" = "xyes"]) AC_CONFIG_FILES([Makefile doc/Makefile @@ -134,7 +168,7 @@ AC_OUTPUT AC_MSG_RESULT([ Prefix ${prefix} - Build documentation ${have_doxygen} + Build documentation ${build_documentation} Build tests ${build_tests} Tests use valgrind ${VALGRIND} Build GUI event tool ${build_eventgui} diff --git a/doc/Makefile.am b/doc/Makefile.am index 624326ba..30f60895 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -1,6 +1,6 @@ EXTRA_DIST = touchpad-tap-state-machine.svg touchpad-softbutton-state-machine.svg -if HAVE_DOXYGEN +if BUILD_DOCS noinst_DATA = html/index.html