]> sigrok.org Git - sigrok-test.git/commitdiff
Build: Modernize Autotools configuration
authorDaniel Elstner <redacted>
Sun, 6 Sep 2015 10:06:27 +0000 (12:06 +0200)
committerDaniel Elstner <redacted>
Thu, 10 Sep 2015 17:55:29 +0000 (19:55 +0200)
Makefile.am
autogen.sh
configure.ac

index dc0e3ccc5b29283b68738d976cc17407586b8414..eb497751e5455683b984bf2551e910fb0409cd1e 100644 (file)
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
 
+ACLOCAL_AMFLAGS = -I m4
+GNUMAKEFLAGS = --no-print-directory
+
+AM_CPPFLAGS = -D_POSIX_C_SOURCE=200112L -DDECODERS_DIR='"$(DECODERS_DIR)"'
+AM_CFLAGS = $(ST_EXTRA_CFLAGS) $(ST_WFLAGS) $(SIGROK_TEST_CFLAGS)
+
 noinst_PROGRAMS = decoder/runtc
 
 decoder_runtc_SOURCES = decoder/runtc.c
-decoder_runtc_CPPFLAGS = -DDECODERS_DIR='"$(DECODERS_DIR)"'
+decoder_runtc_LDADD = $(SIGROK_TEST_LIBS)
 
 MAINTAINERCLEANFILES = ChangeLog
 
 .PHONY: ChangeLog
 ChangeLog:
-       git --git-dir $(top_srcdir)/.git log > ChangeLog || touch ChangeLog
+       git --git-dir '$(top_srcdir)/.git' log >$@ || touch $@
 
index 194375d7747116653f48d46eeb17ca73768fc6ba..692d63019ebd961d52f8bf11026b71a0eea32486 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/sh -e
 ##
 ## This file is part of the sigrok-test project.
 ##
@@ -19,8 +19,7 @@
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
 
-echo "Generating build system..."
-aclocal || exit 1
-automake --add-missing --copy || exit 1
-autoconf || exit 1
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
 
+autoreconf --force --install --verbose "$srcdir"
index c8be068e4de76e4b7cd17ccb871f494e505c334e..a01f0b5eb760c4d9dbe60e857593067be494b32e 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,96 @@ 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.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.4.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.3.0 libsigrokdecode >= 0.4.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.4.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
+
+Detected libraries (required):
+ - glib-2.0 >= 2.24.0.............. $st_glib_version
+ - libsigrok >= 0.3.0.............. $st_libsigrok_version
+ - libsigrokdecode >= 0.4.0........ $st_libsigrokdecode_version
+$st_pkglibs_summary
+_EOF