AC_INIT(libftdi, 0.20)
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER(config.h)

AC_LANG_C
AC_PROG_CC
AM_PROG_LIBTOOL
AC_PROG_CXX

dnl check for libusb-config
AC_CHECK_TOOL(HAVELIBUSB, libusb-config)

if test ! -z "$HAVELIBUSB"; then
   LIBUSB_CFLAGS=`$HAVELIBUSB --cflags`
   LIBUSB_LIBS=`$HAVELIBUSB --libs`

   CFLAGS="$CFLAGS $LIBUSB_CFLAGS"
   LIBS="$LIBS $LIBUSB_LIBS"
else
   AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation.])
fi

dnl check for version of libusb
AC_MSG_CHECKING([if libusb version is >= 0.1.7])
libusb_version_needed="1007"
libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'`

if test $libusb_version -lt $libusb_version_needed; then
   AC_MSG_RESULT(no)
   AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.7.])
else
   AC_MSG_RESULT(yes)
fi

ENABLE_ASYNC_MODE=0
AC_ARG_WITH(async-mode,
[  --with-async-mode       enable experimental async mode. Linux only.],
[
  AC_MSG_CHECKING(for experimental linux async mode)
  if test "$withval" != "no"; then
    ENABLE_ASYNC_MODE=1
    CFLAGS="$CFLAGS -DLIBFTDI_LINUX_ASYNC_MODE"
    AC_MSG_RESULT(yes)
  else
    AC_MSG_RESULT(no)
  fi
])
AC_SUBST(ENABLE_ASYNC_MODE)

AC_ARG_WITH(examples,
  AS_HELP_STRING([--without-examples], [disable example programs]))
AM_CONDITIONAL(BUILD_EXAMPLES, [test "x$with_examples" != "xno"])

LIBFTDI_MODULES=
LIBFTDI_MODULES_PKGCONFIG=

dnl libftdi C++ wrapper. Needs boost.
AX_BOOST_BASE([1.33])
ENABLE_LIBFTDIPP=0
AC_MSG_CHECKING(if we can build the C++ wrapper)
AC_ARG_ENABLE(libftdipp,
                          AS_HELP_STRING([--enable-libftdipp],
                                                     [enable libftdi C++ wrapper. Needs boost (default: auto)]),
[
    if test "$enableval" != "no"; then
        if test "x$HAVE_BOOST" != "xyes"; then
            AC_MSG_ERROR(Sorry, we need the boost library for the C++ wrapper)
        fi
        ENABLE_LIBFTDIPP=1
    fi
],
[
    dnl Build the wrapper if we got the boost library
    if test "x$HAVE_BOOST" = "xyes"; then
        ENABLE_LIBFTDIPP=1
    fi
])
if test "x$ENABLE_LIBFTDIPP" = "x1"; then
    LIBFTDI_MODULES="$LIBFTDI_MODULES ftdipp"
    LIBFTDI_MODULES_PKGCONFIG="$LIBFTDI_MODULES_PKGCONFIG libftdipp.pc"
    AC_MSG_RESULT(yes)
else
    AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(HAVE_LIBFTDIPP, [test "x$ENABLE_LIBFTDIPP" = "x1"])

dnl check for doxygen
AC_ARG_WITH(docs,
  AS_HELP_STRING([--without-docs], [disable doxygen usage]))
if test "x$with_docs" != "xno"; then
  AC_PATH_PROG(DOXYGEN, doxygen)
else
  DOXYGEN=
fi
AM_CONDITIONAL(HAVE_DOXYGEN, test -n $DOXYGEN)

dnl ============================
dnl Bindings for other languages
dnl ==

dnl ===============
dnl Checks for SWIG
dnl ===============
AC_PATH_PROG([SWIG], [swig])
AM_CONDITIONAL(HAVE_SWIG, test "$SWIG")

dnl =================
dnl Checks for Python
dnl =================
AM_PATH_PYTHON([2.0],
               [],
               [AC_MSG_WARN([Python not found. Python is required to build presage python binding. Python can be obtained from http://www.pyth
on.org])])
if test "$PYTHON"
then
     python_include_path=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"`
     AC_CHECK_HEADERS([${python_include_path}/Python.h],
                      [have_python_header=true],
                      [AC_MSG_WARN([Python.h header file not found. Python development files are required to build presage python binding. Pyt
hon can be obtained from http://www.python.org])],
                      [])
fi
AM_CONDITIONAL(HAVE_PYTHON, test "$PYTHON" -a "x$have_python_header" = "xtrue")

AC_ARG_ENABLE([python-binding],
               AS_HELP_STRING([--enable-python-binding],
                              [build python binding (default=no)]),
               [ac_enable_python_binding=$enableval],
               [ac_enable_python_binding=no])
if test "x$ac_enable_python_binding" = "xyes"
then
    if test ! "$SWIG" -o ! "$PYTHON" -o ! "x$have_python_header" = "xtrue"
    then
        AC_MSG_WARN([Python binding for libftdi cannot be built. Ensure that SWIG and Python packages are available.])
    fi
else
    AC_MSG_NOTICE([Python binding for libftdi will not be built.])
    AC_MSG_NOTICE([Enable Python binding module building with --enable-python-binding])
fi
AM_CONDITIONAL(ENABLE_PYTHON_BINDING, test "x$ac_enable_python_binding" = "xyes")

if test "$SWIG" -a "$PYTHON" -a "x$have_python_header" = "xtrue" -a "x$ac_enable_python_binding" = "xyes"
then
    AC_MSG_NOTICE([Python binding for libftdi will be built.])
    build_python_binding="yes"
else
    build_python_binding="no"
fi

AC_SUBST(LIBFTDI_MODULES)
AC_SUBST(LIBFTDI_MODULES_PKGCONFIG)

AC_CONFIG_FILES([libftdi-config],[chmod a+x libftdi-config])
AC_CONFIG_FILES(Makefile src/Makefile bindings/Makefile bindings/python/Makefile bindings/python/setup.py examples/Makefile doc/Doxyfile doc/Makefile libftdi.pc libftdi.spec)

if test "x$ENABLE_LIBFTDIPP" = "x1"; then
    AC_CONFIG_FILES(ftdipp/Makefile libftdipp.pc)
fi

AC_OUTPUT
