From 70cc96407302cf0fd4eee2b6a401253ed50fe4df Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 20 Sep 2020 11:16:06 -0400 Subject: [PATCH 1/1] autotools: use system tomsfastmath if possible. --- configure.ac | 2 ++ libclamav/Makefile.am | 10 ++++++++-- libclamav/bignum.h | 6 +++++- libclamav/xdp.c | 2 +- m4/reorganization/libs/tomsfastmath.m4 | 12 ++++++++++++ 5 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 m4/reorganization/libs/tomsfastmath.m4 diff --git a/configure.ac b/configure.ac index 8e0e810f8..773787e49 100644 --- a/configure.ac +++ b/configure.ac @@ -104,6 +104,7 @@ m4_include([m4/reorganization/libs/libmspack.m4]) if test "x$use_internal_mspack" = "xno"; then mspack_msg="External, $LIBMSPACK_CFLAGS $LIBMSPACK_LIBS" fi +m4_include([m4/reorganization/libs/tomsfastmath.m4]) AM_MAINTAINER_MODE m4_include([m4/reorganization/libs/libz.m4]) @@ -376,6 +377,7 @@ fi CL_MSG_STATUS([yara ],[$enable_yara],[$enable_yara]) CL_MSG_STATUS([fts ],[yes],[$lfs_fts_msg]) +CL_MSG_STATUS([tomsfastmath],[yes],[$tomsfastmath_msg]) # Yep, downgrading the compiler avoids the bug too: # 4.0.x, and 4.1.0 are the known buggy versions diff --git a/libclamav/Makefile.am b/libclamav/Makefile.am index ae655cfec..240fa23f8 100644 --- a/libclamav/Makefile.am +++ b/libclamav/Makefile.am @@ -588,8 +588,10 @@ libclamav_la_SOURCES += yara_arena.c \ yara_clam.h endif -libclamav_la_SOURCES += bignum.h\ - bignum_fast.h\ +libclamav_la_SOURCES += bignum.h + +if !SYSTEM_TOMSFASTMATH +libclamav_la_SOURCES += bignum_fast.h\ tomsfastmath/addsub/fp_add.c\ tomsfastmath/addsub/fp_add_d.c\ tomsfastmath/addsub/fp_addmod.c\ @@ -671,6 +673,10 @@ libclamav_la_SOURCES += bignum.h\ tomsfastmath/sqr/fp_sqr_comba_generic.c\ tomsfastmath/sqr/fp_sqr_comba_small_set.c\ tomsfastmath/sqr/fp_sqrmod.c +else +libclamav_la_CFLAGS += $(TOMSFASTMATH_CFLAGS) +libclamav_la_LIBADD += $(TOMSFASTMATH_LIBS) +endif .PHONY2: version.h.tmp version.c: version.h diff --git a/libclamav/bignum.h b/libclamav/bignum.h index 8fdc956bb..56dfa957e 100644 --- a/libclamav/bignum.h +++ b/libclamav/bignum.h @@ -1,9 +1,13 @@ #ifndef BIGNUM_H_ #define BIGNUM_H_ +#if HAVE_SYSTEM_TOMSFASTMATH +#include +#else #define TFM_CHECK - #include "bignum_fast.h" +#endif + typedef fp_int mp_int; #define mp_cmp fp_cmp #define mp_toradix_n(a, b, c, d) fp_toradix_n(a, b, c, d) diff --git a/libclamav/xdp.c b/libclamav/xdp.c index 87423421d..6370221ff 100644 --- a/libclamav/xdp.c +++ b/libclamav/xdp.c @@ -52,7 +52,7 @@ #include "scanners.h" #include "conv.h" #include "xdp.h" -#include "bignum_fast.h" +#include "bignum.h" #include "filetypes.h" static char *dump_xdp(cli_ctx *ctx, const char *start, size_t sz); diff --git a/m4/reorganization/libs/tomsfastmath.m4 b/m4/reorganization/libs/tomsfastmath.m4 new file mode 100644 index 000000000..2a821a14d --- /dev/null +++ b/m4/reorganization/libs/tomsfastmath.m4 @@ -0,0 +1,12 @@ +dnl Check for system tomsfastmath +PKG_CHECK_MODULES([TOMSFASTMATH], [tomsfastmath], [have_system_tomsfastmath=yes], [have_system_tomsfastmath=no]) + +AM_CONDITIONAL([SYSTEM_TOMSFASTMATH], [test "x$have_system_tomsfastmath" = "xyes"]) + +if test "x$have_system_tomsfastmath" = "xyes"; then + AC_DEFINE([HAVE_SYSTEM_TOMSFASTMATH], [1], [link against system-wide tomsfastmath library]) + tomsfastmath_msg="External, $TOMSFASTMATH_CFLAGS $TOMSFASTMATH_LIBS" +else + AC_DEFINE([HAVE_SYSTEM_TOMSFASTMATH], [0], [don't link against system-wide tomsfastmath library]) + tomsfastmath_msg="Internal" +fi -- 2.26.2