X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/f12328720976ccd09afe73420ff07e6c72478b4c..HEAD:/configure.ac diff --git a/configure.ac b/configure.ac index 1643ad00..88d2ec51 100644 --- a/configure.ac +++ b/configure.ac @@ -37,8 +37,15 @@ mdw_SILENT_RULES AC_PROG_CC AX_CFLAGS_WARN_ALL -AM_PROG_LIBTOOL +LT_INIT mdw_LIBTOOL_VERSION_INFO +case $host_os in + cygwin* | mingw* | pw32* | os2* | darwin* | cegcc*) + TEST_LDFLAGS=-no-fast-install ;; + *) + TEST_LDFLAGS=-no-install ;; +esac +AC_SUBST([TEST_LDFLAGS]) AM_PROG_AS @@ -78,7 +85,8 @@ AC_DEFUN([catacomb_CPU_FAMILIES], $1([i[[3-6]]86,*], [x86], [sysv]) $1([x86_64,cygwin], [amd64], [win]) $1([x86_64,*], [amd64], [sysv]) - $1([arm,* | armv*,*], [armel], [std])]) + $1([arm,* | armv*,*], [armel], [std]) + $1([aarch64,*], [arm64], [std])]) dnl A utility to clear the `seen' flags, used so as to process each CPU or dnl ABI once. @@ -120,7 +128,7 @@ AC_CACHE_CHECK( .intel_syntax noprefix .globl foo foo: - adcd var, 0 + adc dword ptr var, 0 ret .data var: .long 1 @@ -144,7 +152,7 @@ m4_define([catacomb_DEFINE_CPU_OR_ABI], ;;m4_define([catacomb_seen_$3/$$2], [t])])]) catacomb_CPU_FAMILIES([_def]) nil) ;; - *) AC_MSG_ERROR([BUG: unexpected $1 \`$1']) ;; + *) AC_MSG_ERROR([BUG: unexpected $1 `$$1']) ;; esac]) dnl Now that's out the way, we can explain what we're doing. @@ -153,9 +161,9 @@ AC_MSG_CHECKING([CPU family and ABI]) dnl Figure out the target CPU family and ABI. catacomb_CPU_FAMILIES([catacomb_CLEAR_FLAGS]) catacomb_DEFINE_CPU_OR_ABI([CPUFAM], [2], [cpu], - [CPUFAM_], [Define if target CPU is \`$][2\'.]) + [CPUFAM_], [Define if target CPU is `$][2'.]) catacomb_DEFINE_CPU_OR_ABI([ABI], [3], [abi], - [ABI_], [Define if target ABI is \`$][3\'.]) + [ABI_], [Define if target ABI is `$][3'.]) dnl Establish Automake conditions for things. catacomb_CPU_FAMILIES([catacomb_CLEAR_FLAGS]) @@ -178,6 +186,26 @@ case $CPUFAM in *) AC_MSG_RESULT([$CPUFAM/$ABI]) ;; esac +dnl Consider enabling support for assembler-level debugging toys. +AC_ARG_ENABLE([asm-debug], + AS_HELP_STRING([--enable-asm-debug], + [enable assembler debugging features]), + [mdw_asm_debug=$enableval], [mdw_asm_debug=no]) +case $CPUFAM in nil) mdw_asm_debug=no ;; esac +case $mdw_asm_debug in + no) ;; + *) AC_DEFINE([ENABLE_ASM_DEBUG], [1], + [Define to enable assembler-level debugging.]) ;; +esac +AM_CONDITIONAL([ASM_DEBUG], [test x$mdw_asm_debug != xno]) + +dnl Check for leading underscores on C symbols. +LT_SYS_SYMBOL_USCORE +case $sys_symbol_underscore in + yes) AC_DEFINE([SYM_USCORE], [1], + [Define if C symbols are prefixed with an underscore.]) ;; +esac + dnl-------------------------------------------------------------------------- dnl CPU-specific assembler features. @@ -234,7 +262,7 @@ AC_CHECK_TYPE([socklen_t], [], [AC_DEFINE([socklen_t], [int], [Define to `int' if does not define])], [AC_INCLUDES_DEFAULT -#include +@%:@include ]) dnl The maths library. @@ -249,10 +277,11 @@ AC_CACHE_CHECK( [library needed for syslog], [mdw_cv_syslog_lib], [mdw_ORIG_LIBS=$LIBS LIBS= for i in 0 1; do - AC_TRY_LINK([#include ], - [openlog("test", LOG_PID, LOG_DAEMON); - syslog(LOG_ERR, "this is a test");], - [ok=t], [ok=nil]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM( + [[@%:@include ]], + [[openlog("test", LOG_PID, LOG_DAEMON); + syslog(LOG_ERR, "this is a test");]])], + [ok=t], [ok=nil]) case $i,$ok in *,t) mdw_cv_syslog_lib=${LIBS:-none}; break ;; 0,nil) LIBS="-llog" ;; @@ -277,6 +306,9 @@ AC_CHECK_HEADERS([sys/auxv.h]) AC_CHECK_HEADERS([linux/auxvec.h]) AC_CHECK_FUNCS([getauxval]) +dnl Some equipment for measuring CPU performance. +AC_CHECK_HEADERS([linux/perf_event.h]) + 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="" @@ -301,7 +333,7 @@ limits="" limits_sep="" AC_DEFUN([catacomb_COMPILE_TIME_CONSTANT], [case "$2" in =*) - $1="$2"; $1=${$1#=} + $1="$2"; $1=${$1@%:@=} ;; *) AC_CACHE_CHECK([compile-time value of $2], [mdw_cv_constant_$3], @@ -311,11 +343,11 @@ AC_DEFUN([catacomb_COMPILE_TIME_CONSTANT], esac]) AC_DEFUN([catacomb_LIMIT], [catacomb_COMPILE_TIME_CONSTANT([lo], [$2], [$1_min], -[#include -#include ]) +[@%:@include +@%:@include ]) catacomb_COMPILE_TIME_CONSTANT([hi], [$3], [$1_max], -[#include -#include ]) +[@%:@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]) @@ -339,9 +371,9 @@ AC_SUBST([limits]) dnl Figure out other aspects of the implementation's arithmetic. AC_CACHE_CHECK([whether negative numbers use two's complement], [catacomb_cv_neg_twoc], -[AC_TRY_COMPILE( -[#include ], -[int check[2*!!(-INT_MAX == INT_MIN + 1) - 1];], +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM( +[[@%:@include ]], +[[int check[2*!!(-INT_MAX == INT_MIN + 1) - 1];]])], [catacomb_cv_neg_twoc=yes], [catacomb_cv_neg_twoc=no])]) case $catacomb_cv_neg_twoc in @@ -359,18 +391,18 @@ AC_SEARCH_LIBS([clock_gettime], [rt]) CATACOMB_LIBS=$LIBS LIBS=$mdw_ORIG_LIBS if test "$ac_cv_search_clock_gettime" != no; then AC_DEFINE([HAVE_CLOCK_GETTIME], [1], - [Define if you have the \`clock_gettime' function.]) + [Define if you have the `clock_gettime' function.]) fi AC_CHECK_FUNCS([getentropy]) AC_CACHE_CHECK([whether the freewheel noise generator will work], [catacomb_cv_freewheel], -[AC_TRY_LINK( -[#include -#include ], -[struct itimerval itv = { { 0, 0 }, { 0, 5000 } }; +[AC_LINK_IFELSE([AC_LANG_PROGRAM( +[[@%:@include +@%:@include ]], +[[struct itimerval itv = { { 0, 0 }, { 0, 5000 } }; jmp_buf j; setitimer(ITIMER_REAL, &itv, 0); -sigsetjmp(j, 1);], +sigsetjmp(j, 1);]])], [catacomb_cv_freewheel=yes], [catacomb_cv_freewheel=no])]) case $catacomb_cv_freewheel in @@ -399,7 +431,7 @@ dnl Set the master libraries we need. AC_SUBST([CATACOMB_LIBS]) dnl Necessary support libraries. -PKG_CHECK_MODULES([mLib], [mLib >= 2.2.2.1]) +PKG_CHECK_MODULES([mLib], [mLib >= 2.4.1]) AM_CFLAGS="$AM_CFLAGS $mLib_CFLAGS" dnl-------------------------------------------------------------------------- @@ -427,7 +459,7 @@ AC_ARG_ENABLE([mpw], dnl-------------------------------------------------------------------------- dnl Produce output. -AC_CONFIG_HEADER([config/config.h]) +AC_CONFIG_HEADERS([config/config.h]) AC_CONFIG_FILES( [Makefile]