+ AC_MSG_WARN(m4_normalize([dot (from the graphviz suite) not found,
+ documentation rebuild not possible]))
+fi
+
+# Check for pylint
+AC_ARG_VAR(PYLINT, [pylint path])
+AC_PATH_PROG(PYLINT, [pylint], [])
+if test -z "$PYLINT"
+then
+ AC_MSG_WARN([pylint not found, checking code will not be possible])
+fi
+
+# Check for socat
+AC_ARG_VAR(SOCAT, [socat path])
+AC_PATH_PROG(SOCAT, [socat], [])
+if test -z "$SOCAT"
+then
+ AC_MSG_ERROR([socat not found])
+fi
+
+if test "$enable_htools" != "no"; then
+
+# Check for ghc
+AC_ARG_VAR(GHC, [ghc path])
+AC_PATH_PROG(GHC, [ghc], [])
+if test -z "$GHC"; then
+ if test "$enable_htools" != "check"; then
+ AC_MSG_FAILURE([ghc not found, htools compilation will not possible])
+ fi
+fi
+
+# Check for ghc-pkg
+HTOOLS_MODULES=
+AC_ARG_VAR(GHC_PKG, [ghc-pkg path])
+AC_PATH_PROG(GHC_PKG, [ghc-pkg], [])
+if test -z "$GHC_PKG"; then
+ if test "$enable_htools" != "check"; then
+ AC_MSG_FAILURE([ghc-pkg not found, htools compilation will not be possible])
+ fi
+else
+ # check for modules
+ AC_MSG_NOTICE([checking for required haskell modules])
+ HTOOLS_NOCURL=-DNO_CURL
+ if test "$enable_htools_rapi" != "no"; then
+ AC_MSG_CHECKING([curl])
+ GHC_PKG_CURL=$($GHC_PKG latest curl)
+ if test -z "$GHC_PKG_CURL"; then
+ if test "$enable_htools_rapi" = "check"; then
+ AC_MSG_WARN(m4_normalize([The curl library not found, htools will be
+ compiled without RAPI support]))
+ else
+ AC_MSG_FAILURE(m4_normalize([The curl library was not found, but it has
+ been requested]))
+ fi
+ else
+ HTOOLS_NOCURL=
+ fi
+ AC_MSG_RESULT($GHC_PKG_CURL)
+ fi
+ AC_SUBST(GHC_PKG_CURL)
+ AC_SUBST(HTOOLS_NOCURL)
+ AC_MSG_CHECKING([parallel])
+ GHC_PKG_PARALLEL=$($GHC_PKG --simple-output list 'parallel-3.*')
+ if test -n "$GHC_PKG_PARALLEL"
+ then
+ HTOOLS_PARALLEL3=-DPARALLEL3
+ else
+ GHC_PKG_PARALLEL=$($GHC_PKG --simple-output list 'parallel-2.*')
+ fi
+ if test -z "$GHC_PKG_PARALLEL"
+ then
+ GHC_PKG_PARALLEL=$($GHC_PKG --simple-output list 'parallel-1.*')
+ fi
+ AC_SUBST(GHC_PKG_PARALLEL)
+ AC_SUBST(HTOOLS_PARALLEL3)
+ AC_MSG_RESULT($GHC_PKG_PARALLEL)
+ AC_MSG_CHECKING([json])
+ GHC_PKG_JSON=$($GHC_PKG latest json)
+ AC_MSG_RESULT($GHC_PKG_JSON)
+ AC_MSG_CHECKING([network])
+ GHC_PKG_NETWORK=$($GHC_PKG latest network)
+ AC_MSG_RESULT($GHC_PKG_NETWORK)
+ AC_MSG_CHECKING([QuickCheck 2.x])
+ GHC_PKG_QUICKCHECK=$($GHC_PKG --simple-output list 'QuickCheck-2.*')
+ AC_MSG_RESULT($GHC_PKG_QUICKCHECK)
+ if test -z "$GHC_PKG_PARALLEL" || test -z "$GHC_PKG_JSON" || \
+ test -z "$GHC_PKG_NETWORK"; then
+ if test "$enable_htools" != "check"; then
+ AC_MSG_FAILURE(m4_normalize([Required Haskell modules not found, htools
+ compilation disabled]))
+ fi
+ else
+ # we leave the other modules to be auto-selected
+ HTOOLS_MODULES="-package $GHC_PKG_PARALLEL"
+ fi
+ if test -z "$GHC_PKG_QUICKCHECK"; then
+ AC_MSG_WARN(m4_normalize([The QuickCheck 2.x module was not found,
+ you won't be able to run Haskell unittests]))
+ fi
+fi
+AC_SUBST(HTOOLS_MODULES)
+AC_SUBST(GHC_PKG_QUICKCHECK)
+
+if test "$enable_htools" != "no"; then
+ if test -z "$GHC" || test -z "$HTOOLS_MODULES"; then
+ AC_MSG_WARN(m4_normalize([Haskell compiler/required libraries not found,
+ htools compilation disabled]))
+ else
+ HTOOLS=yes
+ fi