-LIBSIGROK_LT_CURRENT=0
-LIBSIGROK_LT_REVISION=0
-LIBSIGROK_LT_AGE=0
-LIBSIGROK_LT_VERSION="$LIBSIGROK_LT_CURRENT:$LIBSIGROK_LT_REVISION:$LIBSIGROK_LT_AGE"
-LIBSIGROK_LT_LDFLAGS="-version-info $LIBSIGROK_LT_VERSION"
-AC_SUBST(LIBSIGROK_LT_LDFLAGS)
-
-# Logic analyzer hardware support '--enable' options.
-
-# Disabled by default, unfinished.
-AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa],
- [enable ALSA driver support [default=no]]),
- [LA_ALSA="$enableval"],
- [LA_ALSA=no])
-AM_CONDITIONAL(LA_ALSA, test x$LA_ALSA = xyes)
-if test "x$LA_ALSA" = "xyes"; then
- AC_DEFINE(HAVE_LA_ALSA, 1, [ALSA driver support])
-fi
-
-AC_ARG_ENABLE(asix-sigma, AC_HELP_STRING([--enable-asix-sigma],
- [enable ASIX Sigma support [default=yes]]),
- [LA_ASIX_SIGMA="$enableval"],
- [LA_ASIX_SIGMA=yes])
-AM_CONDITIONAL(LA_ASIX_SIGMA, test x$LA_ASIX_SIGMA = xyes)
-if test "x$LA_ASIX_SIGMA" = "xyes"; then
- AC_DEFINE(HAVE_LA_ASIX_SIGMA, 1, [ASIX Sigma support])
-fi
-
-AC_ARG_ENABLE(chronovu-la8, AC_HELP_STRING([--enable-chronovu-la8],
- [enable ChronoVu LA8 support [default=yes]]),
- [LA_CHRONOVU_LA8="$enableval"],
- [LA_CHRONOVU_LA8=yes])
-AM_CONDITIONAL(LA_CHRONOVU_LA8, test x$LA_CHRONOVU_LA8 = xyes)
-if test "x$LA_CHRONOVU_LA8" = "xyes"; then
- AC_DEFINE(HAVE_LA_CHRONOVU_LA8, 1, [ChronoVu LA8 support])
-fi
-
-AC_ARG_ENABLE(demo, AC_HELP_STRING([--enable-demo],
- [enable demo driver support [default=yes]]),
- [LA_DEMO="$enableval"],
- [LA_DEMO=yes])
-AM_CONDITIONAL(LA_DEMO, test x$LA_DEMO = xyes)
-if test "x$LA_DEMO" = "xyes"; then
- AC_DEFINE(HAVE_LA_DEMO, 1, [Demo driver support])
-fi
-
-# Disabled by default, unfinished.
-AC_ARG_ENABLE(link-mso19, AC_HELP_STRING([--enable-link-mso19],
- [enable Link Instruments MSO-19 support [default=no]]),
- [LA_LINK_MSO19="$enableval"],
- [LA_LINK_MSO19=no])
-AM_CONDITIONAL(LA_LINK_MSO19, test x$LA_LINK_MSO19 = xyes)
-if test "x$LA_LINK_MSO19" = "xyes"; then
- AC_DEFINE(HAVE_LA_LINK_MSO19, 1, [Link Instruments MSO-19 support])
-fi
-
-AC_ARG_ENABLE(ols, AC_HELP_STRING([--enable-ols],
- [enable OpenBench Logic Sniffer (OLS) support [default=yes]]),
- [LA_OLS="$enableval"],
- [LA_OLS=yes])
-AM_CONDITIONAL(LA_OLS, test x$LA_OLS = xyes)
-if test "x$LA_OLS" = "xyes"; then
- AC_DEFINE(HAVE_LA_OLS, 1, [OpenBench Logic Sniffer (OLS) support])
-fi
-
-AC_ARG_ENABLE(saleae-logic, AC_HELP_STRING([--enable-saleae-logic],
- [enable Saleae Logic support [default=yes]]),
- [LA_SALEAE_LOGIC="$enableval"],
- [LA_SALEAE_LOGIC=yes])
-AM_CONDITIONAL(LA_SALEAE_LOGIC, test x$LA_SALEAE_LOGIC = xyes)
-if test "x$LA_SALEAE_LOGIC" = "xyes"; then
- AC_DEFINE(HAVE_LA_SALEAE_LOGIC, 1, [Saleae Logic support])
-fi
-
-AC_ARG_ENABLE(zeroplus-logic-cube,
- AC_HELP_STRING([--enable-zeroplus-logic-cube],
- [enable Zeroplus Logic Cube support [default=yes]]),
- [LA_ZEROPLUS_LOGIC_CUBE="$enableval"],
- [LA_ZEROPLUS_LOGIC_CUBE=yes])
-AM_CONDITIONAL(LA_ZEROPLUS_LOGIC_CUBE, test x$LA_ZEROPLUS_LOGIC_CUBE = xyes)
-if test "x$LA_ZEROPLUS_LOGIC_CUBE" = "xyes"; then
- AC_DEFINE(HAVE_LA_ZEROPLUS_LOGIC_CUBE, 1, [Zeroplus Logic Cube support])
+SR_LIB_VERSION_CURRENT=2
+SR_LIB_VERSION_REVISION=0
+SR_LIB_VERSION_AGE=0
+SR_LIB_VERSION="$SR_LIB_VERSION_CURRENT:$SR_LIB_VERSION_REVISION:$SR_LIB_VERSION_AGE"
+SR_LIB_LDFLAGS="-version-info $SR_LIB_VERSION"
+AC_SUBST(SR_LIB_VERSION_CURRENT)
+AC_SUBST(SR_LIB_VERSION_REVISION)
+AC_SUBST(SR_LIB_VERSION_AGE)
+AC_SUBST(SR_LIB_VERSION)
+AC_SUBST(SR_LIB_LDFLAGS)
+
+AC_ARG_ENABLE(all-drivers, AC_HELP_STRING([--enable-all-drivers],
+ [enable all drivers by default [default=yes]]),
+ [HW_ENABLED_DEFAULT="$enableval"],
+ [HW_ENABLED_DEFAULT="yes"])
+
+# Usage: DRIVER([Device name], [driver-name])
+# An optional third argument [no] disables that driver.
+m4_define([driverize], [m4_tolower(m4_bpatsubst([$1], [[^0-9a-zA-Z-]+], [-]))])
+m4_define([upperize], [m4_toupper(m4_bpatsubst([$1], [[^0-9a-zA-Z_]+], [_]))])
+AC_DEFUN([DRIVER], [
+ if test -z "$3"; then
+ default=$HW_ENABLED_DEFAULT
+ else
+ default="$3"
+ fi
+ AC_ARG_ENABLE($2, AC_HELP_STRING([--enable-$2], [enable $1 support]),
+ [m4_join([], [HW_], upperize([$2]))="$enableval"],
+ [m4_join([], [HW_], upperize([$2]))=$default])
+ dots=$(echo -n ".............................." | cut -c 1-$(expr 32 - $(echo -n $2|wc -c)))
+ driver_summary="${driver_summary} - $2${dots} \${m4_join([], [HW_], upperize([$2]))}@"
+])
+
+DRIVER([Agilent DMM], [agilent-dmm])
+DRIVER([Appa 55II], [appa-55ii])
+DRIVER([ASIX SIGMA/SIGMA2], [asix-sigma])
+DRIVER([Atten PPS3xxx], [atten-pps3xxx])
+DRIVER([BeagleLogic], [beaglelogic])
+DRIVER([Brymen BM86x], [brymen-bm86x])
+DRIVER([Brymen DMM], [brymen-dmm])
+DRIVER([CEM DT-885x], [cem-dt-885x])
+DRIVER([Center 3xx], [center-3xx])
+DRIVER([ChronoVu LA], [chronovu-la])
+DRIVER([Colead SLM], [colead-slm])
+DRIVER([Conrad DIGI 35 CPU], [conrad-digi-35-cpu])
+DRIVER([demo], [demo])
+DRIVER([Fluke DMM], [fluke-dmm])
+DRIVER([fx2lafw], [fx2lafw])
+DRIVER([GMC MH 1x/2x], [gmc-mh-1x-2x])
+DRIVER([Hameg HMO], [hameg-hmo])
+DRIVER([Hantek DSO], [hantek-dso])
+DRIVER([Ikalogic Scanalogic-2], [ikalogic-scanalogic2])
+DRIVER([Ikalogic Scanaplus], [ikalogic-scanaplus])
+DRIVER([Kecheng KC-330B], [kecheng-kc-330b])
+DRIVER([Lascar EL-USB], [lascar-el-usb])
+DRIVER([Manson HCS-3xxx], [manson-hcs-3xxx])
+DRIVER([MIC 985xx], [mic-985xx])
+DRIVER([Motech LPS 30x], [motech-lps-30x])
+DRIVER([Norma DMM], [norma-dmm])
+DRIVER([OpenBench Logic Sniffer], [openbench-logic-sniffer])
+DRIVER([Pipistrello-OLS], [pipistrello-ols])
+DRIVER([Rigol DS], [rigol-ds])
+DRIVER([Saleae Logic16], [saleae-logic16])
+DRIVER([serial DMM], [serial-dmm])
+DRIVER([Sysclk LWLA], [sysclk-lwla])
+DRIVER([Teleinfo], [teleinfo])
+DRIVER([Testo], [testo])
+DRIVER([Tondaj SL-814], [tondaj-sl-814])
+DRIVER([UNI-T DMM], [uni-t-dmm])
+DRIVER([UNI-T UT32x], [uni-t-ut32x])
+DRIVER([Victor DMM], [victor-dmm])
+DRIVER([Yokogawa DL/DLM], [yokogawa-dlm])
+DRIVER([ZEROPLUS Logic Cube], [zeroplus-logic-cube])
+
+AC_ARG_ENABLE(libserialport,
+ AC_HELP_STRING([--disable-libserialport],
+ [disable libserialport support [default=detect]]))
+
+AC_ARG_ENABLE(libftdi,
+ AC_HELP_STRING([--disable-libftdi],
+ [disable libftdi support [default=detect]]))
+
+AC_ARG_ENABLE(libusb,
+ AC_HELP_STRING([--disable-libusb],
+ [disable libusb support [default=detect]]))
+
+# Language binding '--enable' options
+
+AC_ARG_ENABLE(bindings,
+ AC_HELP_STRING([--enable-bindings],
+ [build language bindings [default=yes]]),
+ [BINDINGS_ALL="$enableval"], [BINDINGS_ALL="yes"])
+
+AC_ARG_ENABLE(cxx,
+ AC_HELP_STRING([--enable-cxx],
+ [build C++ bindings [default=yes]]),
+ [BINDINGS_CXX="$enableval"], [BINDINGS_CXX=$BINDINGS_ALL])
+
+AC_ARG_ENABLE(python,
+ AC_HELP_STRING([--enable-python],
+ [build Python bindings [default=yes]]),
+ [BINDINGS_PYTHON="$enableval"], [BINDINGS_PYTHON=$BINDINGS_ALL])
+
+AC_ARG_ENABLE(java,
+ AC_HELP_STRING([--enable-java],
+ [build Java bindings [default=yes]]),
+ [BINDINGS_JAVA="$enableval"], [BINDINGS_JAVA=$BINDINGS_ALL])
+
+AC_ARG_WITH(jni-include-path,
+ AC_HELP_STRING([--with-jni-include-path=path],
+ [specify include path for JNI [default=autodetect]]),
+ [JNI_INCLUDE_DIRS="$withval"], [JNI_INCLUDE_DIRS=auto])
+
+# Check if the C++ compiler supports the C++11 standard.
+
+m4_ifdef([AX_CXX_COMPILE_STDCXX_11], [AX_CXX_COMPILE_STDCXX_11(,[optional])],
+ [AC_MSG_NOTICE([Missing macro m4_toupper(aX_CXX_COMPILE_STDCXX_11), no C++11 check])])
+
+if test "x$HAVE_CXX11" != "x1"; then
+ BINDINGS_CXX="no"; cxx_msg="C++11 compiler required"
+fi
+
+# The C++ bindings use doxygen to parse libsigrok symbols.
+AC_CHECK_PROG([HAVE_DOXYGEN], [doxygen], [yes])
+if test "x$HAVE_DOXYGEN" != "xyes"; then
+ BINDINGS_CXX="no"; cxx_msg="doxygen required"
+fi
+
+# Python is needed for the C++ bindings.
+AC_CHECK_PROG([HAVE_PYTHON], [python], [yes])
+if test "x$HAVE_PYTHON" != "xyes"; then
+ BINDINGS_CXX="no"; cxx_msg="Python required"
+fi
+
+# The Python bindings need Python development files
+PKG_CHECK_MODULES([python], [python >= 2.7],
+ [CXXFLAGS="$CXXFLAGS $python_CFLAGS";
+ CXXLIBS="$CXXLIBS $python_LIBS"],
+[PKG_CHECK_MODULES([python27], [python-2.7 >= 2.7],
+ [CXXFLAGS="$CXXFLAGS $python27_CFLAGS";
+ CXXLIBS="$CXXLIBS $python27_LIBS"],
+ [BINDINGS_PYTHON="no"; python_msg="Python headers required"])])
+
+# The Python bindings need the setuptools Python module.
+m4_ifdef([AX_PYTHON_MODULE], [AX_PYTHON_MODULE([setuptools])],
+ # We'll let it go through even if the macro wasn't found, the python
+ # module may still be there.
+ [HAVE_PYTHON_SETUPTOOLS="yes";
+ AC_MSG_NOTICE([Missing macro m4_toupper(aX_PYTHON_MODULE), no setuptools check])]
+)
+if test "x$HAVE_PYMOD_SETUPTOOLS" != "xyes"; then
+ BINDINGS_PYTHON="no"; python_msg="Python setuptools module required"
+fi
+
+# The Python and Java bindings use swig to generate code.
+AC_CHECK_PROG([HAVE_SWIG], [swig], [yes])
+if test "x$HAVE_SWIG" != "xyes"; then
+ BINDINGS_PYTHON="no"; python_msg="swig required"
+ BINDINGS_JAVA="no"; java_msg="swig required"