jfaustin's picture
secretion-scores (#4)
a3f3d91 verified
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.68])
AC_INIT([FreeSASA], [2.0.1])
AM_INIT_AUTOMAKE([foreign])
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADERS([config.h])
m4_include([m4/ax_compare_version.m4])
AC_DEFINE([REPORTBUG], ["Report bugs to <https://github.com/mittinatten/freesasa/issues>"], [Bug report string])
AC_DEFINE([HOMEPAGE], ["<http://freesasa.github.io>"], [Project homepage])
AC_DEFINE([FREESASA_XMLNS], ["http://freesasa.github.io/"], [XML namespace])
# Checks for programs.
AC_PROG_CC
AC_PROG_RANLIB
AC_PROG_INSTALL
# Checks for libraries.
AC_CHECK_LIB([m], [sqrt])
AC_CHECK_LIB([dl], [dlsym])
# Checks for header files.
AC_FUNC_ALLOCA
AC_CHECK_HEADERS([inttypes.h libintl.h malloc.h stddef.h stdlib.h string.h strings.h sys/time.h unistd.h dlfcn.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_INLINE
AC_TYPE_SIZE_T
AC_C_RESTRICT
AC_TYPE_INT16_T
AC_TYPE_INT32_T
AC_TYPE_INT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
# use C99
AC_PROG_CC_C99
AC_C_INLINE
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_CHECK_FUNCS([memset mkdir sqrt strchr strdup strerror strncasecmp getopt_long getline])
AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile doc/Doxyfile
tests/Makefile bindings/Makefile share/Makefile
bindings/python/setup.py])
AC_CONFIG_FILES([tests/test-cli], [chmod +x tests/test-cli])
AC_CONFIG_FILES([bindings/check-python], [chmod +x bindings/check-python])
# Optionally disable thread support
AC_ARG_ENABLE([threads],
AS_HELP_STRING([--disable-threads],
[Build without support for multiple threads]))
if test "x$enable_threads" != "xno"; then
AC_CHECK_LIB([pthread], [pthread_create])
AC_CHECK_HEADER([pthread.h])
fi
if test "$ac_cv_header_pthread_h" != yes || \
test "$ac_cv_lib_pthread_pthread_create" != yes; then
AC_DEFINE([USE_THREADS], [0], [])
AM_CONDITIONAL([USE_THREADS], false)
echo "Building without thread support"
else
AC_DEFINE([USE_THREADS], [1], [Define if threads should be used.])
AM_CONDITIONAL([USE_THREADS], true)
fi
# disable XML
AC_ARG_ENABLE([xml],
AS_HELP_STRING([--disable-xml],
[Build without support for XML output]))
AC_DEFINE([USE_XML], [0], [Define if XML should be included.])
AM_CONDITIONAL([USE_XML], false)
AC_SUBST([LIBXML_FOR_PY_BINDINGS], [])
if test "x$enable_xml" != "xno" ; then
AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[])
PKG_CHECK_MODULES([libxml2], [libxml-2.0],
[AC_DEFINE([USE_XML], [1])
AC_SUBST([LIBXML_FOR_PY_BINDINGS], ['"xml2"'])
AC_SUBST([USE_XML], [yes])
AM_CONDITIONAL([USE_XML], true)],
[AC_MSG_ERROR([Library libxml2 not found, install library or build without (using --disable-xml).])])
else
AC_MSG_NOTICE([Building without support for XML output.])
fi
# Disable json-c
AC_ARG_ENABLE([json],
AS_HELP_STRING([--enable-json],
[Build without support for JSON output]))
AC_DEFINE([USE_JSON], [0], [Define if JSON should be included])
AC_SUBST([JSONC_FOR_PY_BINDINGS], [])
AM_CONDITIONAL([USE_JSON], false)
if test "x$enable_json" != "xno" ; then
AC_CHECK_LIB([json-c], [json_object_get],
[AC_CHECK_HEADER([json-c/json_object.h],
[AC_DEFINE([USE_JSON], [1])
AC_SUBST([JSONC_FOR_PY_BINDINGS], ['"json-c"'])
AC_SUBST([USE_JSON], [yes])
AM_CONDITIONAL([USE_JSON], true)])])
AM_COND_IF([USE_JSON],[],
[AC_MSG_ERROR([Library JSON-C not found, install library or build without (using --disable-json).])])
AC_CHECK_PROG([JSONLINT],[jsonlint],[jsonlint],[])
else
AC_MSG_NOTICE([Building without support for JSON output.])
fi
# Which Python
AC_ARG_WITH([python],
AS_HELP_STRING([--with-python=<python-binary>], [Specify which python to use.]),
[python_bin=$withval],[python_bin=python])
# Enable Python-bindings
AC_ARG_ENABLE([python-bindings],
[AS_HELP_STRING([--enable-python-bindings],
[Build Python bindings using Cython])])
AM_CONDITIONAL([HAVE_CYTHON],false)
if test "x$enable_python_bindings" = "xyes" ; then
AC_CHECK_PROG([PYTHON], [$python_bin], [$python_bin])
AC_CHECK_PROG([CYTHON], [cython], [cython])
AM_CONDITIONAL([HAVE_CYTHON], [test -n "$CYTHON" && test -n "$PYTHON"])
AM_COND_IF([HAVE_CYTHON],[],[AC_MSG_ERROR([Cython not available, can not build Python bindings])])
fi
# Enable parser generation with Flex/Bison
AC_ARG_ENABLE([parser-generator],
[AS_HELP_STRING([--enable-parser-generator],
[Regenerate parser/lexer using Flex and Bison (for developers)])])
AM_CONDITIONAL([GENERATE_PARSER],false)
if test "x$enable_parser_generator" = "xyes" ; then
AC_PROG_LEX
AC_CHECK_PROGS([YACC], [bison byacc yacc])
AM_CONDITIONAL([GENERATE_PARSER], [test -n $LEX && test "x$LEX" != "x:" && test -n $YACC])
AM_COND_IF([GENERATE_PARSER],[],
[AC_MSG_ERROR([Lexer and/or parser generator missing. Install Flex/lex and/or Bison/Yacc or configure without flag --enable-parser-generator.])])
fi
# Enable Doxygen
AC_ARG_ENABLE([doxygen],
[AS_HELP_STRING([--enable-doxygen],
[Build Doxygen html-documentation])])
AM_CONDITIONAL([HAVE_DOXYGEN],false)
if test "x$enable_doxygen" = "xyes" ; then
AC_CHECK_PROG(DOXYGEN, doxygen, doxygen)
AM_CONDITIONAL([HAVE_DOXYGEN],[test -n "$DOXYGEN"])
AM_COND_IF([HAVE_DOXYGEN],[build_doc=yes],
[AC_MSG_ERROR([Doxygen not available, can not build documentation. Install library or configure without --enable-doxygen.])])
if test -n "$DOXYGEN"; then
DOXYGEN_V=`doxygen --version`
DOXYGEN_REQ=1.8.8
AX_COMPARE_VERSION([$DOXYGEN_V],[lt],[$DOXYGEN_REQ],
[echo "Warning: Doxygen should preferrably be of version $DOXYGEN_REQ or higher (found $DOXYGEN_V)"])
fi
fi
AM_CONDITIONAL([BUILD_DOC],[test -n "$build_doc"])
# Enable testing
AC_ARG_ENABLE([check],
[AS_HELP_STRING([--enable-check],
[Enable the Check unit testing framework])])
AM_CONDITIONAL([USE_CHECK],false)
AC_DEFINE([USE_CHECK],[0],[Build with Check unit testing framework])
AC_SUBST([CHECK_FOR_PY_BINDINGS], [])
if test "x$enable_check" = "xyes" ; then
AC_CHECK_LIB(rt, setitimer) # necessary on some platforms
AC_CHECK_LIB([check],[suite_create],
[],
[AC_MSG_ERROR[Library Check not available, install libary or configure without flag --enable-check]])
AC_DEFINE([USE_CHECK], [1])
AC_SUBST([CHECK_FOR_PY_BINDINGS], ['"check"'])
AM_CONDITIONAL([USE_CHECK], true)
fi
# Enable gcov
AC_ARG_ENABLE([gcov],
[AS_HELP_STRING([--enable-gcov],
[Compile with Gcov to measure coverage])])
AM_CONDITIONAL([COND_GCOV],false)
if test "x$enable_gcov" = "xyes" ; then
AC_CHECK_LIB([gcov], [__gcov_init], [], [AC_MSG_ERROR([Missing gcov library])])
AM_CONDITIONAL([COND_GCOV],true)
fi
# Disable test for CLI
AC_ARG_ENABLE([CLI-tests],
AS_HELP_STRING([--disable-CLI-tests],
[Disable testing of command-line interface. These take time and
disabling them can help speed up development when only unit
tests are needed.]))
if test "x$enable_CLI_tests" != "xno" ; then
AM_CONDITIONAL([RUN_CLI_TESTS],true)
else
AM_CONDITIONAL([RUN_CLI_TESTS],false)
fi
AC_OUTPUT