Added configure option for documentation build.
authorJon A. Cruz <jonc@osg.samsung.com>
Thu, 18 Dec 2014 18:49:59 +0000 (10:49 -0800)
committerPeter Hutterer <peter.hutterer@who-t.net>
Thu, 18 Dec 2014 22:39:59 +0000 (08:39 +1000)
Added option with fallback of 'auto' to control building of documentation.

Signed-off-by: Jon A. Cruz <jonc@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
configure.ac
doc/Makefile.am

index 329f224548487c7851a7f5bb3d158f5a173ef187..374a63aa4aa20dcca31e463fd9f5d095bd57e921 100644 (file)
@@ -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_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"
+AC_ARG_ENABLE([documentation],
+             [AC_HELP_STRING([--enable-documentation],
+                             [Enable building the documentation (default=auto)])],
+             [build_documentation="$enableval"],
+             [build_documentation="auto"])
+
+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}
index 624326ba7d073ad3ab6a99ac95633383f2491128..30f60895603aa2abad3ce69380a4133b524b674d 100644 (file)
@@ -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