X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/ba6e6b64033b1f9de49feccb5c9cd438354481f7..3e248c3b5b309bc03eb5f70762d3f5671d51f996:/configure.ac diff --git a/configure.ac b/configure.ac index 9aff84a..dc7434a 100644 --- a/configure.ac +++ b/configure.ac @@ -46,10 +46,14 @@ AC_SUBST(AM_CFLAGS) dnl-------------------------------------------------------------------------- dnl C programming environment. +dnl Find out if we're cross-compiling. +AM_CONDITIONAL([CROSS_COMPILING], [test "$cross_compiling" = yes]) + dnl Various standard types. AC_CHECK_TYPE([pid_t], [int]) AC_TYPE_UID_T AC_CHECK_TYPE([ssize_t], [int]) +AC_CHECK_TYPE([socklen_t], [int]) dnl The maths library. mdw_ORIG_LIBS=$LIBS @@ -58,6 +62,70 @@ AC_SEARCH_LIBS([sqrt], [m]) AC_SUBST([CATACOMB_LIBS], [$LIBS]) LIBS=$mdw_ORIG_LIBS +dnl Find out whether very long integer types are available. +AC_CHECK_HEADERS([stdint.h]) +AC_SUBST([have_stdint_h]) +AC_C_LONG_LONG + +dnl Find the bit lengths of the obvious integer types. This will be useful +dnl when deciding on a representation for multiprecision integers. +type_bits="" type_bits_sep="" +AC_DEFUN([catacomb_UINT_BITS], + [mdw_UINT_BITS([$2], [$1]) + type_bits="$type_bits$type_bits_sep('$1', $[]$1_bits)" + type_bits_sep=", "]) +catacomb_UINT_BITS([uchar], [unsigned char]) +catacomb_UINT_BITS([ushort], [unsigned short]) +catacomb_UINT_BITS([uint], [unsigned int]) +catacomb_UINT_BITS([ulong], [unsigned long]) +if test "$ac_cv_c_long_long" = "yes"; then + catacomb_UINT_BITS([ullong], [unsigned long long]) +fi +if test "$ac_cv_header_stdint_h" = "yes"; then + catacomb_UINT_BITS([uintmax], [uintmax_t]) +fi +AC_SUBST([type_bits]) + +dnl Determine the limits of common C integer types. +limits="" limits_sep="" +AC_DEFUN([catacomb_COMPILE_TIME_CONSTANT], + [case "$2" in + =*) + $1="$2"; $1=${$1#=} + ;; + *) + AC_CACHE_CHECK([compile-time value of $2], [mdw_cv_constant_$3], + [mdw_PROBE_CONSTANT([mdw_cv_constant_$3], [$2], [$4])]) + $1=$mdw_cv_constant_$3 + ;; + esac]) +AC_DEFUN([catacomb_LIMIT], +[catacomb_COMPILE_TIME_CONSTANT([lo], [$2], [$1_min], +[#include +#include ]) + catacomb_COMPILE_TIME_CONSTANT([hi], [$3], [$1_max], +[#include +#include ]) + limits="$limits$limits_sep('$1', $lo, $hi)" limits_sep=", "]) +catacomb_LIMIT([SCHAR], [SCHAR_MIN], [SCHAR_MAX]) +catacomb_LIMIT([CHAR], [CHAR_MIN], [CHAR_MAX]) +catacomb_LIMIT([UCHAR], [=0], [UCHAR_MAX]) +catacomb_LIMIT([UINT8], [=0], [=0xff]) +catacomb_LIMIT([SHRT], [SHRT_MIN], [SHRT_MAX]) +catacomb_LIMIT([USHRT], [=0], [USHRT_MAX]) +catacomb_LIMIT([UINT16], [=0], [=0xffff]) +catacomb_LIMIT([INT], [INT_MIN], [INT_MAX]) +catacomb_LIMIT([UINT], [=0], [UINT_MAX]) +catacomb_LIMIT([LONG], [LONG_MIN], [LONG_MAX]) +catacomb_LIMIT([ULONG], [=0], [ULONG_MAX]) +catacomb_LIMIT([UINT32], [=0], [=0xffffffff]) +if test "$ac_cv_c_long_long" = "yes"; then + catacomb_LIMIT([LLONG], [LLONG_MIN], [LLONG_MAX]) + catacomb_LIMIT([ULLONG], [=0], [ULLONG_MAX]) +fi +catacomb_LIMIT([SIZET], [=0], [~(size_t)0]) +AC_SUBST([limits]) + dnl Functions used for noise-gathering. AC_CHECK_FUNCS([setgroups]) AC_CACHE_CHECK([whether the freewheel noise generator will work], @@ -88,7 +156,7 @@ dnl Memory locking support. AC_CHECK_FUNCS([mlock]) dnl Necessary support libraries. -PKG_CHECK_MODULES([mLib], [mLib >= 2.0.4]) +PKG_CHECK_MODULES([mLib], [mLib >= 2.2.1]) AM_CFLAGS="$AM_CFLAGS $mLib_CFLAGS" dnl-------------------------------------------------------------------------- @@ -119,7 +187,15 @@ dnl Produce output. AC_CONFIG_HEADER([config/config.h]) AC_CONFIG_FILES( - [Makefile]) + [Makefile] + [base/Makefile] + [key/Makefile] + [math/Makefile] + [misc/Makefile] + [pub/Makefile] + [rand/Makefile] + [symm/Makefile] + [progs/Makefile]) AC_OUTPUT dnl----- That's all, folks --------------------------------------------------