X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=configure.ac;h=ea386c0d3270b7d2946a471fb60a528ecf56fe98;hb=ebf6aa306f5993252abb78787502b20134e1593c;hp=90291772580af6fd3dd7cb8e9218bc4531dcd28c;hpb=672a5e8ffbbba0ec0f8996a4e90fec04afaadd8f;p=libsigrok.git diff --git a/configure.ac b/configure.ac index 90291772..ea386c0d 100644 --- a/configure.ac +++ b/configure.ac @@ -321,6 +321,7 @@ SR_DRIVER([HP 3457A], [hp-3457a]) SR_DRIVER([HP 3478A], [hp-3478a], [libgpib]) SR_DRIVER([hp-59306a], [hp-59306a]) SR_DRIVER([Hung-Chang DSO-2100], [hung-chang-dso-2100], [libieee1284]) +SR_DRIVER([ICStation USBRelay], [icstation-usbrelay], [serial_comm]) SR_DRIVER([Ikalogic Scanalogic-2], [ikalogic-scanalogic2], [libusb]) SR_DRIVER([Ikalogic Scanaplus], [ikalogic-scanaplus], [libftdi]) SR_DRIVER([IPDBG LA], [ipdbg-la]) @@ -401,14 +402,41 @@ AC_ARG_ENABLE([java], sr_cxx_missing= -# Check if the C++ compiler supports the C++11 standard. -AX_CXX_COMPILE_STDCXX([11], [noext], [optional]) -AS_IF([test "x$HAVE_CXX11" != x1], +# Check if the C++ compiler supports at least the C++11 standard. +# Get the highest of the available C++17/C++14/C++11 standards. +# This transparently amends CXXFLAGS to pick the detected standard. +HAVE_MODERN_CXX= +AS_IF([test "x$HAVE_MODERN_CXX" = x], + [AX_CXX_COMPILE_STDCXX([17], [noext], [optional])]) +AS_IF([test "x$HAVE_CXX17" = x1], + [HAVE_MODERN_CXX=yes]) +AS_IF([test "x$HAVE_MODERN_CXX" = x], + [AX_CXX_COMPILE_STDCXX([14], [noext], [optional])]) +AS_IF([test "x$HAVE_CXX14" = x1], + [HAVE_MODERN_CXX=yes]) +AS_IF([test "x$HAVE_MODERN_CXX" = x], + [AX_CXX_COMPILE_STDCXX([11], [noext], [optional])]) +AS_IF([test "x$HAVE_CXX11" = x1], + [HAVE_MODERN_CXX=yes]) +AS_IF([test "x$HAVE_MODERN_CXX" = x], [SR_APPEND([sr_cxx_missing], [', '], ['C++11'])]) # The C++ bindings need glibmm. -SR_PKG_CHECK([glibmm], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0]) +# Prefer glibmm-2.4 for backwards compatibility. +# Accept glibmm-2.68 when glibmm-2.4 is not available. +sr_have_glibmm=no AS_IF([test "x$sr_have_glibmm" != xyes], + [SR_PKG_CHECK([glibmm24], [SR_PKGLIBS_CXX], [glibmm-2.4 >= 2.32.0])]) +AS_IF([test "x$sr_have_glibmm24" = xyes], + [SR_APPEND([SR_GLIBMM_REQUIRES], ['glibmm-2.4 >= 2.32.0']) + sr_have_glibmm=yes]) +AS_IF([test "x$sr_have_glibmm" != xyes], + [SR_PKG_CHECK([glibmm268], [SR_PKGLIBS_CXX], [glibmm-2.68 >= 2.68.0])]) +AS_IF([test "x$sr_have_glibmm268" = xyes], + [SR_APPEND([SR_GLIBMM_REQUIRES], ['glibmm-2.68 >= 2.68.0']) + sr_have_glibmm=yes]) +AS_IF([test "x$sr_have_glibmm" = xyes], + [AC_SUBST(SR_GLIBMM_REQUIRES)], [SR_APPEND([sr_cxx_missing], [', '], [glibmm])]) # The C++ bindings use Doxygen to parse libsigrok symbols. @@ -438,6 +466,16 @@ AM_COND_IF([BINDINGS_CXX], [ AS_IF([test "x$sr_cv_have_stoi_stod" = xyes], [AC_DEFINE([HAVE_STOI_STOD], [1], [Specifies whether we have the stoi and stod functions.])]) + # In theory std::stoul() should have identical availability + # as std::stoi() and std::stod() have. All of them are C++11. + # But we play it safe here, and check support individually. + AC_CACHE_CHECK([for stoul], [sr_cv_have_stoul], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[(void) std::stoul("1");]])], + [sr_cv_have_stoul=yes], [sr_cv_have_stoul=no])]) + AS_IF([test "x$sr_cv_have_stoul" = xyes], + [AC_DEFINE([HAVE_STOUL], [1], + [Specifies whether we have the std::stoul function.])]) ]) ####################### @@ -616,6 +654,7 @@ AM_COND_IF([BINDINGS_CXX], [ ]) # Check for specific libusb features, now that we know the CFLAGS. +# Also check for version dependent libftdi features. AC_LANG([C]) sr_save_cflags=$CFLAGS sr_save_libs=$LIBS @@ -625,12 +664,10 @@ AC_CHECK_TYPES([libusb_os_handle], [sr_have_libusb_os_handle=yes], [sr_have_libusb_os_handle=no], [[#include ]]) AC_CHECK_FUNCS([zip_discard]) +AC_CHECK_FUNCS([ftdi_tciflush ftdi_tcoflush ftdi_tcioflush]) LIBS=$sr_save_libs CFLAGS=$sr_save_cflags -AM_COND_IF([NEED_USB], [AS_CASE([$sr_have_libusb_os_handle:$host_os], [no:mingw*], - [AC_MSG_ERROR([Windows builds require the event-abstraction branch of libusb])])]) - sr_glib_version=`$PKG_CONFIG --modversion glib-2.0 2>&AS_MESSAGE_LOG_FD` sr_libzip_version=`$PKG_CONFIG --modversion libzip 2>&AS_MESSAGE_LOG_FD` sr_zlib_version=`$PKG_CONFIG --modversion zlib 2>&AS_MESSAGE_LOG_FD`