]> sigrok.org Git - libsigrok.git/blobdiff - configure.ac
Doxyfile: Set version to 0.4.0.
[libsigrok.git] / configure.ac
index 0380534ae3282462d4e76c0e8df35553a4d336b5..0df658807a570f6600a11587982828cb57d5824c 100644 (file)
@@ -67,7 +67,8 @@ SR_PKG_VERSION_SET([SR_PACKAGE_VERSION], [AC_PACKAGE_VERSION])
 # Carefully read the libtool docs before updating these numbers!
 # The algorithm for determining which number to change (and how) is nontrivial!
 # http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
-SR_LIB_VERSION_SET([SR_LIB_VERSION], [2:0:0])
+# Format: current:revision:age.
+SR_LIB_VERSION_SET([SR_LIB_VERSION], [3:0:0])
 
 AM_CONDITIONAL([WIN32], [test -z "${host_os##mingw*}" || test -z "${host_os##cygwin*}"])
 
@@ -91,6 +92,7 @@ SR_VAR_OPT_PKG([SR_PKGLIBS], [sr_deps_avail])
 SR_PKGLIBS_TESTS=
 SR_PKGLIBS_CXX=
 SR_PKGLIBS_PYTHON=
+SR_PKGLIBS_RUBY=
 SR_EXTRA_LIBS=
 
 SR_ARG_OPT_PKG([libserialport], [LIBSERIALPORT], [NEED_SERIAL],
@@ -223,7 +225,7 @@ SR_DRIVER([Brymen BM86x], [brymen-bm86x], [libusb])
 SR_DRIVER([Brymen DMM], [brymen-dmm], [libserialport])
 SR_DRIVER([CEM DT-885x], [cem-dt-885x], [libserialport])
 SR_DRIVER([Center 3xx], [center-3xx], [libserialport])
-SR_DRIVER([ChronoVu LA], [chronovu-la], [libftdi])
+SR_DRIVER([ChronoVu LA], [chronovu-la], [libusb libftdi])
 SR_DRIVER([Colead SLM], [colead-slm], [libserialport])
 SR_DRIVER([Conrad DIGI 35 CPU], [conrad-digi-35-cpu], [libserialport])
 SR_DRIVER([DER EE DE-5000], [deree-de5000], [libserialport])
@@ -239,8 +241,9 @@ SR_DRIVER([Ikalogic Scanalogic-2], [ikalogic-scanalogic2], [libusb])
 SR_DRIVER([Ikalogic Scanaplus], [ikalogic-scanaplus], [libftdi])
 SR_DRIVER([Kecheng KC-330B], [kecheng-kc-330b], [libusb])
 SR_DRIVER([KERN scale], [kern-scale], [libserialport])
-SR_DRIVER([Korad KDxxxxP], [korad-kdxxxxp], [libserialport])
+SR_DRIVER([Korad KAxxxxP], [korad-kaxxxxp], [libserialport])
 SR_DRIVER([Lascar EL-USB], [lascar-el-usb], [libusb])
+SR_DRIVER([LeCroy LogicStudio], [lecroy-logicstudio], [libusb])
 SR_DRIVER([Manson HCS-3xxx], [manson-hcs-3xxx], [libserialport])
 SR_DRIVER([maynuo-m97], [maynuo-m97])
 SR_DRIVER([MIC 985xx], [mic-985xx], [libserialport])
@@ -281,6 +284,10 @@ AC_ARG_ENABLE([python],
        [AS_HELP_STRING([--enable-python], [build Python bindings [default=yes]])],
        [], [enable_python=$enable_bindings])
 
+AC_ARG_ENABLE([ruby],
+       [AS_HELP_STRING([--enable-ruby], [build Ruby bindings [default=yes]])],
+       [], [enable_ruby=$enable_bindings])
+
 AC_ARG_ENABLE([java],
        [AS_HELP_STRING([--enable-java], [build Java bindings [default=yes]])],
        [], [enable_java=$enable_bindings])
@@ -335,9 +342,18 @@ AS_IF([test "x$BINDINGS_CXX" = xyes],
        [sr_python_missing=],
        [sr_python_missing='C++ bindings'])
 
-# The Python bindings need Python development files.
+# Extract major and minor version number of the Python interpreter.
+sr_pymajor=${PYTHON_VERSION%%.*}
+sr_pyminor=${PYTHON_VERSION#*.}
+
+# The Python bindings need Python development files. Check for either
+# Python 3 or Python 2 headers depending on the interpreter version.
 SR_PKG_CHECK([python_dev], [SR_PKGLIBS_PYTHON],
-       [python >= 2.7], [python2 >= 2.7], [python27 >= 2.7])
+       [python = $PYTHON_VERSION],
+       [python$sr_pymajor = $PYTHON_VERSION],
+       [python$sr_pymajor$sr_pyminor = $PYTHON_VERSION],
+       [python-$PYTHON_VERSION = $PYTHON_VERSION])
+
 AS_IF([test "x$sr_have_python_dev" != xyes],
        [SR_APPEND([sr_python_missing], [', '], [Headers])])
 
@@ -369,6 +385,10 @@ AS_IF([test "x$HAVE_PYMOD_NUMPY" != xyes],
 
 # The Python bindings use SWIG to generate code.
 AC_CHECK_PROGS([SWIG], [swig swig3.0 swig2.0])
+AS_IF([test "x$SWIG" != x],
+    AC_MSG_CHECKING([for $SWIG version])
+    [SWIG_VERSION=`$SWIG -version 2>&1 | sed -n 's/SWIG Version\s*//p'`]
+    AC_MSG_RESULT([$SWIG_VERSION]))
 AS_IF([test "x$SWIG" = x],
        [SR_APPEND([sr_python_missing], [', '], [SWIG])])
 
@@ -376,6 +396,48 @@ AS_IF([test -z "$sr_python_missing"],
        [BINDINGS_PYTHON=$enable_python], [BINDINGS_PYTHON=no])
 AM_CONDITIONAL([BINDINGS_PYTHON], [test "x$BINDINGS_PYTHON" = xyes])
 
+#####################
+##  Ruby bindings  ##
+#####################
+
+AS_IF([test "x$BINDINGS_CXX" = xyes],
+       [sr_ruby_missing=],
+       [sr_ruby_missing='C++ bindings'])
+
+AC_PATH_PROGS(RUBY, ["${RUBY-ruby}"], [])
+AS_IF([test "x$RUBY" != x],
+       AC_MSG_CHECKING([for Ruby version])
+    [RUBY_VERSION=`$RUBY -e 'puts RUBY_VERSION'`]
+    AC_MSG_RESULT([$RUBY_VERSION])
+    [RUBY_DLEXT=`$RUBY -rrbconfig -e 'puts RbConfig::CONFIG[["DLEXT"]]'`]
+    AC_SUBST(RUBY_DLEXT))
+
+AS_IF([test "x$RUBY" = x],
+       [SR_APPEND([sr_ruby_missing], [', '], [Ruby])])
+
+# Extract major and minor version number of the Ruby interpreter.
+sr_rbmajor=${RUBY_VERSION%%.*}
+sr_rbminor=${RUBY_VERSION#*.}
+sr_rbminor=${sr_rbminor%%.*}
+
+# The Ruby bindings need Ruby development files.
+SR_PKG_CHECK([ruby_dev], [SR_PKGLIBS_RUBY],
+       [ruby],
+       [ruby-$sr_rbmajor.$sr_rbminor])
+
+AS_IF([test "x$sr_have_ruby_dev" != xyes],
+       [SR_APPEND([sr_ruby_missing], [', '], [Headers])])
+
+# The Ruby bindings use SWIG >= 3.0.8 to generate code.
+AS_IF([test "x$SWIG" = x],
+       [SR_APPEND([sr_ruby_missing], [', '], [SWIG])],
+       [AS_VERSION_COMPARE($SWIG_VERSION, "3.0.8",
+               [SR_APPEND([sr_ruby_missing], [', '], ['SWIG >= 3.0.8'])])])
+
+AS_IF([test -z "$sr_ruby_missing"],
+       [BINDINGS_RUBY=$enable_ruby], [BINDINGS_RUBY=no])
+AM_CONDITIONAL([BINDINGS_RUBY], [test "x$BINDINGS_RUBY" = xyes])
+
 ####################
 ##  Java bindings ##
 ####################
@@ -431,7 +493,7 @@ AM_CONDITIONAL([BINDINGS_JAVA], [test "x$BINDINGS_JAVA" = xyes])
 ##############################
 
 # Add mandatory dependencies to module list.
-SR_APPEND([SR_PKGLIBS], ['libzip >= 0.11'])
+SR_APPEND([SR_PKGLIBS], ['libzip >= 0.10'])
 AC_SUBST([SR_PKGLIBS])
 
 # Retrieve the compile and link flags for all modules combined.
@@ -444,16 +506,22 @@ PKG_CHECK_MODULES([TESTS], [$SR_PKGLIBS_TESTS glib-2.0 $SR_PKGLIBS])
 AM_COND_IF([BINDINGS_CXX], [
        PKG_CHECK_MODULES([LIBSIGROKCXX], [$SR_PKGLIBS_CXX])
        PKG_CHECK_MODULES([PYSIGROK], [$SR_PKGLIBS_PYTHON $SR_PKGLIBS_CXX])
+       PKG_CHECK_MODULES([RBSIGROK], [$SR_PKGLIBS_RUBY $SR_PKGLIBS_CXX], [AC_SUBST(RBSIGROK_EXTDIR, "lib/$($PKG_CONFIG --variable=sitearch $SR_PKGLIBS_RUBY)/$($PKG_CONFIG --variable=RUBY_BASE_NAME $SR_PKGLIBS_RUBY)/vendor_ruby/$($PKG_CONFIG --variable=ruby_version $SR_PKGLIBS_RUBY)")])
 ])
 
 # Check for specific libusb features, now that we know the CFLAGS.
 AC_LANG([C])
 sr_save_cflags=$CFLAGS
+sr_save_libs=$LIBS
 CFLAGS="$LIBSIGROK_CFLAGS $CFLAGS"
+LIBS="$LIBSIGROK_LIBS $LIBS"
 AC_CHECK_TYPES([libusb_os_handle],
        [sr_have_libusb_os_handle=yes], [sr_have_libusb_os_handle=no],
        [[#include <libusb.h>]])
+AC_CHECK_FUNCS([zip_discard])
+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])])])
 
@@ -475,7 +543,7 @@ m4_define([SR_PREPARE_BINDING_REPORT], [
        test -z "$sr_$1_missing" || sr_report_$1=" (missing: $sr_$1_missing)"
        test "x$enable_$1" = xyes || sr_report_$1=' (disabled)'
 ])
-m4_map_args([SR_PREPARE_BINDING_REPORT], [cxx], [python], [java])
+m4_map_args([SR_PREPARE_BINDING_REPORT], [cxx], [python], [ruby], [java])
 
 cat >&AS_MESSAGE_FD <<_EOF
 
@@ -499,7 +567,7 @@ Compile configuration:
 
 Detected libraries (required):
  - glib-2.0 >= 2.32.0.............. $sr_glib_version
- - libzip >= 0.11.................. $sr_libzip_version
+ - libzip >= 0.10.................. $sr_libzip_version
 
 Detected libraries (optional):
 $sr_pkglibs_summary
@@ -516,6 +584,7 @@ Enabled SCPI backends:
 Enabled language bindings:
  - C++............................. $BINDINGS_CXX$sr_report_cxx
  - Python.......................... $BINDINGS_PYTHON$sr_report_python
+ - Ruby............................ $BINDINGS_RUBY$sr_report_ruby
  - Java............................ $BINDINGS_JAVA$sr_report_java
 
 _EOF