X-Git-Url: https://sigrok.org/gitweb/?p=sigrok-cli.git;a=blobdiff_plain;f=configure.ac;h=af9c8603d68513827f9866602bbcf68db44e641c;hp=1d480c6e7328d938e38b6a77af0b2291d9252535;hb=7930408d655ee55d4aee839eb8feee707d9e5843;hpb=b4dfa44d2982067e2447356ca3b33dfc00264622 diff --git a/configure.ac b/configure.ac index 1d480c6..af9c860 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ ## -## This file is part of the sigrok project. +## This file is part of the sigrok-cli project. ## ## Copyright (C) 2010 Bert Vermeulen ## @@ -17,98 +17,107 @@ ## along with this program. If not, see . ## -AC_PREREQ([2.61]) +# We require at least autoconf 2.63 (AC_INIT format changed there). +AC_PREREQ([2.63]) -AC_INIT([sigrok-cli], [0.1], [sigrok-devel@lists.sourceforge.net], - [sigrok-cli], [http://www.sigrok.org]) - -AC_CONFIG_SRCDIR([sigrok-cli.c]) - -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_MACRO_DIR([autostuff]) +AC_INIT([sigrok-cli], [0.7.0], [sigrok-devel@lists.sourceforge.net], + [sigrok-cli], [http://www.sigrok.org]) +AC_CONFIG_SRCDIR([sigrok-cli.h]) +AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([autostuff]) +AC_CONFIG_HEADERS([config.h]) -AM_INIT_AUTOMAKE([-Wall -Werror foreign std-options]) -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -AH_TOP([#ifndef SIGROK_CLI_CONFIG_H -#define SIGROK_CLI_CONFIG_H /* To stop multiple inclusions. */]) -AH_BOTTOM([#endif /* SIGROK_CLI_CONFIG_H */]) +# We require at least automake 1.11 (needed for 'silent rules'). +AM_INIT_AUTOMAKE([1.11 -Wall -Werror no-define std-options check-news]) +AM_SILENT_RULES([yes]) -CFLAGS="-g -Wall -Wextra" +AC_CANONICAL_HOST # Checks for programs. AC_PROG_CC -AC_PROG_CPP AC_PROG_INSTALL -AC_PROG_LN_S -# Initialize libtool. -LT_INIT +# Set the standard the C library headers should conform to. +AH_VERBATIM([_POSIX_C_SOURCE], [/* The targeted POSIX standard. */ +#ifndef _POSIX_C_SOURCE +# define _POSIX_C_SOURCE 200112L +#endif]) + +# Get compiler versions. +SR_PROG_VERSION([$CC], [sc_cc_version]) + +# Set up the sigrok-cli version defines. +SR_PKG_VERSION_SET([SC_PACKAGE_VERSION], [AC_PACKAGE_VERSION]) + +############################# +## Optional dependencies ## +############################# # Initialize pkg-config. # We require at least 0.22, as "Requires.private" behaviour changed there. PKG_PROG_PKG_CONFIG([0.22]) -# Checks for libraries. +# Keep track of all checked modules so we can list them at the end. +SR_PKG_CHECK_SUMMARY([sc_pkglibs_summary]) -AM_PATH_GLIB_2_0([2.22.0], - [CFLAGS="$CFLAGS $GLIB_CFLAGS"; LIBS="$LIBS $GLIB_LIBS"]) +# Collect the pkg-config module names of all dependencies. +SR_VAR_OPT_PKG([SC_PKGLIBS]) -PKG_CHECK_MODULES([libsigrok], [libsigrok], - [CFLAGS="$CFLAGS $libsigrok_CFLAGS"; - LIBS="$LIBS $libsigrok_LIBS"]) +SR_ARG_OPT_PKG([libsigrokdecode], [SRD],, + [libsigrokdecode >= 0.5.0]) -PKG_CHECK_MODULES([libsigrokdecode], [libsigrokdecode], - [CFLAGS="$CFLAGS $libsigrokdecode_CFLAGS"; - LIBS="$LIBS $libsigrokdecode_LIBS"]) +###################### +## Feature checks ## +###################### -# Checks for header files. -# These are already checked: inttypes.h stdint.h stdlib.h string.h unistd.h. -AC_CHECK_HEADERS([sys/time.h termios.h]) +AC_LANG([C]) -# Checks for typedefs, structures, and compiler characteristics. -AC_C_INLINE -AC_TYPE_INT8_T -AC_TYPE_INT16_T -AC_TYPE_INT32_T -AC_TYPE_INT64_T -AC_TYPE_UINT8_T -AC_TYPE_UINT16_T -AC_TYPE_UINT32_T -AC_TYPE_UINT64_T -AC_TYPE_SIZE_T +# Enable the C99 standard if possible. +SC_EXTRA_CFLAGS= +SR_CHECK_COMPILE_FLAGS([SC_EXTRA_CFLAGS], [C99], + [-std=c99 -c99 -AC99 -qlanglvl=extc99]) -# Checks for library functions. -AC_CHECK_FUNCS([strcasecmp strchr strerror strstr strtol]) +SR_ARG_ENABLE_WARNINGS([SC_WFLAGS], [-Wall], [-Wall -Wextra]) -AC_SUBST(MAKEFLAGS, '--no-print-directory') -AC_SUBST(AM_LIBTOOLFLAGS, '--silent') +# Check host characteristics. +AC_SYS_LARGEFILE -AC_CONFIG_FILES([Makefile - doc/Makefile]) +############################## +## Finalize configuration ## +############################## -AC_OUTPUT +# 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_CLI], + [glib-2.0 >= 2.32.0 libsigrok >= 0.5.0 $SC_PKGLIBS]) -echo -echo "sigrok-cli configuration summary:" -echo -echo " - Package version: $VERSION" -echo " - Prefix: $prefix" -echo -echo "Detected libraries:" -echo - -# Note: This only works for libs with pkg-config integration. -for lib in "glib-2.0" "libsigrok" "libsigrokdecode"; do - if `$PKG_CONFIG --exists $lib`; then - ver=`$PKG_CONFIG --modversion $lib` - answer="yes ($ver)" - else - answer="no" - fi - echo " - $lib: $answer" -done - -echo +sc_glib_version=`$PKG_CONFIG --modversion glib-2.0 2>&AS_MESSAGE_LOG_FD` +sc_libsigrok_version=`$PKG_CONFIG --modversion libsigrok 2>&AS_MESSAGE_LOG_FD` + +AC_CONFIG_FILES([Makefile contrib/sigrok-cli_cross.nsi]) + +AC_OUTPUT +cat >&AS_MESSAGE_FD <<_EOF + +sigrok-cli configuration summary: + - Package version................. $SC_PACKAGE_VERSION + - Prefix.......................... $prefix + - Building on..................... $build + - Building for.................... $host + +Compile configuration: + - C compiler...................... $CC + - C compiler version.............. $sc_cc_version + - C compiler flags................ $CFLAGS + - Additional C compiler flags..... $SC_EXTRA_CFLAGS + - C compiler warnings............. $SC_WFLAGS + - Linker flags.................... $LDFLAGS + +Detected libraries (required): + - glib-2.0 >= 2.32.0.............. $sc_glib_version + - libsigrok >= 0.5.0.............. $sc_libsigrok_version + +Detected libraries (optional): +$sc_pkglibs_summary +_EOF