pwm: Add a few more test-cases.
[sigrok-test.git] / configure.ac
index 187755930c356d4a00ccc4fbede7b1b373e61403..f0520de45774d5e950d4250f9afb1ff4e0da2ce6 100644 (file)
@@ -23,13 +23,14 @@ AC_PREREQ([2.63])
 
 AC_INIT([sigrok-test], [0.1.0], [sigrok-devel@lists.sourceforge.net],
        [sigrok-test], [http://www.sigrok.org])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_AUX_DIR([autostuff])
 
 # We require at least automake 1.11 (needed for 'silent rules').
-AM_INIT_AUTOMAKE([1.11 -Wall -Werror subdir-objects check-news])
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+AM_INIT_AUTOMAKE([1.11 -Wall -Werror no-define subdir-objects check-news])
+AM_SILENT_RULES([yes])
 
-# Enable more compiler warnings.
-AM_CFLAGS="$AM_CFLAGS -Wall -Wextra -Wmissing-prototypes"
+AC_CANONICAL_HOST
 
 # Checks for programs.
 AC_PROG_CC
@@ -37,95 +38,97 @@ AC_PROG_CC
 # Required for per-target flags or subdir-objects with C sources.
 AM_PROG_CC_C_O
 
+# Get compiler versions.
+SR_PROG_VERSION([$CC], [st_cc_version])
+
+############################
+##  Package dependencies  ##
+############################
+
 # Initialize pkg-config.
 # We require at least 0.22, as "Requires.private" behaviour changed there.
 PKG_PROG_PKG_CONFIG([0.22])
 
-AC_ARG_WITH(decodersdir,
-       AC_HELP_STRING([--with-decodersdir=path],
-       [specify decodersdir [default=DATAROOTDIR/libsigrokdecode/decoders]]),
-       [DECODERS_DIR=$withval], [DECODERS_DIR=$datadir/libsigrokdecode/decoders])
+# Keep track of all checked modules so we can list them at the end.
+ST_PKGLIBS=
+SR_PKG_CHECK_SUMMARY([st_pkglibs_summary])
 
-# Checks for libraries.
+# Python 3 is always needed.
+SR_PKG_CHECK([python3], [ST_PKGLIBS],
+       [python3 >= 3.2], [python-3.5 >= 3.5], [python-3.4 >= 3.4], [python-3.3 >= 3.3], [python-3.2 >= 3.2])
+AS_IF([test "x$sr_have_python3" = xno],
+       [AC_MSG_ERROR([Cannot find Python 3 development headers.])])
 
-# libglib-2.0 is always needed.
-AM_PATH_GLIB_2_0([2.24.0],
-       [AM_CFLAGS="$AM_CFLAGS $GLIB_CFLAGS"; LIBS="$LIBS $GLIB_LIBS"])
+######################
+##  Feature checks  ##
+######################
 
-# Python 3 is always needed.
-# Note: We need to try a few different variants, since some systems have a
-# python3.pc file, others have a python-3.3.pc file, and so on.
-# See also: http://sigrok.org/wiki/Libsigrokdecode/Python
-CPPFLAGS_PYTHON=""
-LDFLAGS_PYTHON=""
-pyver="none"
-PKG_CHECK_MODULES([python3], [python3 >= 3.2],
-       [pyver=`$PKG_CONFIG --modversion python3`;
-       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python3_CFLAGS";
-       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python3_LIBS"],
-[PKG_CHECK_MODULES([python34], [python-3.4 >= 3.4],
-       [pyver=`$PKG_CONFIG --modversion python-3.4`;
-       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python34_CFLAGS";
-       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python34_LIBS"],
-[PKG_CHECK_MODULES([python33], [python-3.3 >= 3.3],
-       [pyver=`$PKG_CONFIG --modversion python-3.3`;
-       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python33_CFLAGS";
-       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python33_LIBS"],
-[PKG_CHECK_MODULES([python32], [python-3.2 >= 3.2],
-       [pyver=`$PKG_CONFIG --modversion python-3.2`;
-       CPPFLAGS_PYTHON="$CPPFLAGS_PYTHON $python32_CFLAGS";
-       LDFLAGS_PYTHON="$LDFLAGS_PYTHON $python32_LIBS"],
-)])])])
-AM_CFLAGS="$AM_CFLAGS $CPPFLAGS_PYTHON"
-AM_LDFLAGS="$AM_LDFLAGS $LDFLAGS_PYTHON"
-
-# libsigrok is always needed.
-PKG_CHECK_MODULES([libsigrok], [libsigrok >= 0.3.0],
-       [AM_CFLAGS="$AM_CFLAGS $libsigrok_CFLAGS";
-       LIBS="$LIBS $libsigrok_LIBS"])
-
-# libsigrokdecode is always needed.
-PKG_CHECK_MODULES([libsigrokdecode], [libsigrokdecode >= 0.3.0],
-       [AM_CFLAGS="$AM_CFLAGS $libsigrokdecode_CFLAGS";
-       LIBS="$LIBS $libsigrokdecode_LIBS"])
+AC_LANG([C])
 
-# Checks for header files.
-AC_CHECK_HEADER([sys/resource.h])
+# Enable the C99 standard if possible.
+ST_EXTRA_CFLAGS=
+SR_CHECK_COMPILE_FLAGS([ST_EXTRA_CFLAGS], [C99],
+       [-std=c99 -c99 -AC99 -qlanglvl=extc99])
 
-AC_SUBST(DECODERS_DIR)
-AC_SUBST(MAKEFLAGS, '--no-print-directory')
-AC_SUBST(AM_LIBTOOLFLAGS, '--silent')
+SR_ARG_ENABLE_WARNINGS([ST_WFLAGS],
+       [-Wall], [-Wall -Wextra -Wmissing-prototypes])
 
-AC_SUBST(AM_CFLAGS)
-AC_SUBST(AM_LDFLAGS)
+# Check host characteristics.
+AC_SYS_LARGEFILE
 
-AC_CONFIG_FILES([Makefile])
+# Checks for header files.
+AC_CHECK_HEADER([sys/resource.h],,
+       [AC_MSG_ERROR([Missing required header sys/resource.h])])
+
+##############################
+##  Finalize configuration  ##
+##############################
+
+# Retrieve the compile and link flags for all modules combined.
+# Also, bail out at this point if any module dependency is not met.
+PKG_CHECK_MODULES([SIGROK_TEST],
+       [glib-2.0 >= 2.24.0 libsigrok >= 0.5.0 libsigrokdecode >= 0.5.0 $ST_PKGLIBS])
+
+# Allow the user to override the location of the protocol decoders.
+AC_ARG_WITH([decodersdir],
+       [AS_HELP_STRING([--with-decodersdir=DIR],
+                       [specify location of protcol decoders [default=auto]])],
+       [st_decodersdir=$withval], [st_decodersdir=auto])
+
+AS_IF([test "x$st_decodersdir" = xauto], [
+       st_decodersdir=`$PKG_CONFIG --variable=decodersdir libsigrokdecode 2>&AS_MESSAGE_LOG_FD`
+       AS_IF([test "[$]?" != 0 || test -z "$st_decodersdir"],
+               [st_decodersdir='$(datadir)/libsigrokdecode/decoders'])
+])
+AC_SUBST([DECODERS_DIR], [$st_decodersdir])
+
+st_glib_version=`$PKG_CONFIG --modversion glib-2.0 2>&AS_MESSAGE_LOG_FD`
+st_libsigrok_version=`$PKG_CONFIG --modversion libsigrok 2>&AS_MESSAGE_LOG_FD`
+st_libsigrokdecode_version=`$PKG_CONFIG --modversion libsigrokdecode 2>&AS_MESSAGE_LOG_FD`
 
+AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
 
-echo
-echo "sigrok-test configuration summary:"
-echo
-echo "  - Package version (major.minor.micro): 0.1.0"
-echo "  - Prefix: $prefix"
-echo
-echo "Detected libraries:"
-echo
-
-if test "x$pyver" = "xnone"; then
-       echo "  - (REQUIRED) python >= 3.2: no"
-else
-       echo "  - (REQUIRED) python >= 3.2: yes ($pyver)"
-fi
-
-# Note: This only works for libs with pkg-config integration.
-for lib in "glib-2.0 >= 2.24.0" "libsigrok >= 0.3.0" "libsigrokdecode >= 0.3.0"; do
-       optional="REQUIRED"
-       if `$PKG_CONFIG --exists $lib`; then
-               ver=`$PKG_CONFIG --modversion $lib`
-               answer="yes ($ver)"
-       else
-               answer="no"
-       fi
-       echo "  - ($optional) $lib: $answer"
-done
+cat >&AS_MESSAGE_FD <<_EOF
+
+sigrok-test configuration summary:
+ - Package version................. $PACKAGE_VERSION
+ - Prefix.......................... $prefix
+ - Decoders directory.............. $st_decodersdir
+ - Building on..................... $build
+ - Building for.................... $host
+
+Compile configuration:
+ - C compiler...................... $CC
+ - C compiler version.............. $st_cc_version
+ - C compiler flags................ $CFLAGS
+ - Additional C compiler flags..... $ST_EXTRA_CFLAGS
+ - C compiler warnings............. $ST_WFLAGS
+ - Linker flags.................... $LDFLAGS
+
+Detected libraries (required):
+ - glib-2.0 >= 2.24.0.............. $st_glib_version
+ - libsigrok >= 0.5.0.............. $st_libsigrok_version
+ - libsigrokdecode >= 0.5.0........ $st_libsigrokdecode_version
+$st_pkglibs_summary
+_EOF