-AC_ARG_ENABLE(agilent-dmm, AC_HELP_STRING([--enable-agilent-dmm],
- [enable Agilent DMM support [default=yes]]),
- [HW_AGILENT_DMM="$enableval"],
- [HW_AGILENT_DMM=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(alsa, AC_HELP_STRING([--enable-alsa],
- [enable ALSA driver support [default=yes]]),
- [HW_ALSA="$enableval"],
- [HW_ALSA=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(asix-sigma, AC_HELP_STRING([--enable-asix-sigma],
- [enable ASIX SIGMA/SIGMA2 support [default=yes]]),
- [HW_ASIX_SIGMA="$enableval"],
- [HW_ASIX_SIGMA=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(brymen-dmm, AC_HELP_STRING([--enable-brymen-dmm],
- [enable Brymen DMM support [default=yes]]),
- [HW_BRYMEN_DMM="$enableval"],
- [HW_BRYMEN_DMM=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(chronovu-la8, AC_HELP_STRING([--enable-chronovu-la8],
- [enable ChronoVu LA8 support [default=yes]]),
- [HW_CHRONOVU_LA8="$enableval"],
- [HW_CHRONOVU_LA8=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(colead-slm, AC_HELP_STRING([--enable-colead-slm],
- [enable Colead SLM support [default=yes]]),
- [HW_COLEAD_SLM="$enableval"],
- [HW_COLEAD_SLM=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(demo, AC_HELP_STRING([--enable-demo],
- [enable demo driver support [default=yes]]),
- [HW_DEMO="$enableval"],
- [HW_DEMO=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(fluke-dmm, AC_HELP_STRING([--enable-fluke-dmm],
- [enable Fluke DMM support [default=yes]]),
- [HW_FLUKE_DMM="$enableval"],
- [HW_FLUKE_DMM=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(fx2lafw, AC_HELP_STRING([--enable-fx2lafw],
- [enable fx2lafw support (for FX2 LAs). [default=yes]]),
- [HW_FX2LAFW="$enableval"],
- [HW_FX2LAFW=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(hantek-dso, AC_HELP_STRING([--enable-hantek-dso],
- [enable Hantek DSO support [default=yes]]),
- [HW_HANTEK_DSO="$enableval"],
- [HW_HANTEK_DSO=$HW_ENABLED_DEFAULT])
-
-AC_ARG_ENABLE(ikalogic-scanalogic2, AC_HELP_STRING([--enable-ikalogic-scanalogic2],
- [enable IKALOGIC Scanalogic2 support [default=yes]]),
- [HW_IKALOGIC_SCANALOGIC2="$enableval"],
- [HW_IKALOGIC_SCANALOGIC2=yes])
-AM_CONDITIONAL(HW_IKALOGIC_SCANALOGIC2, test x$HW_IKALOGIC_SCANALOGIC2 = xyes)
-if test "x$HW_IKALOGIC_SCANALOGIC2" = "xyes"; then
- AC_DEFINE(HAVE_HW_IKALOGIC_SCANALOGIC2, 1, [IKALOGIC Scanalogic2 support])
+# 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([DER EE DE-5000], [deree-de5000])
+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([SCPI PPS], [scpi-pps])
+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"