]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fix mallopt configure checks
authorMaria Matejka <mq@ucw.cz>
Mon, 16 Dec 2024 08:50:20 +0000 (09:50 +0100)
committerMaria Matejka <mq@ucw.cz>
Mon, 16 Dec 2024 08:50:20 +0000 (09:50 +0100)
Some systems do have malloc.h but don't have mallopt.

aclocal.m4
configure.ac
sysdep/unix/alloc.c

index 48285b21918032c25b1df97753076a9338d04ba3..893925058db0e9b4fd6a447af0be480ea3f3f068 100644 (file)
@@ -86,6 +86,30 @@ AC_DEFUN([BIRD_CHECK_PTHREADS],
   CFLAGS="$bird_tmp_cflags"
 ])
 
+AC_DEFUN([BIRD_CHECK_MALLOPT],
+[
+  AC_CACHE_CHECK(
+    [for mallopt],
+    [bird_cv_mallopt],
+    [
+      AC_COMPILE_IFELSE(
+       [
+         AC_LANG_PROGRAM(
+           [
+             #include <malloc.h>
+           ],
+           [
+             mallopt(M_ARENA_MAX, 1);
+           ]
+         )
+       ],
+       [bird_cv_mallopt=yes],
+       [bird_cv_mallopt=no]
+      )
+    ]
+  )
+])
+
 AC_DEFUN([BIRD_CHECK_MPLS_KERNEL],
 [
   AC_CACHE_CHECK(
index a991945235cd3775186b24021eac1f1351a737d0..ae7b9467d1f678ff3065876f79b8f83fdc423683 100644 (file)
@@ -371,13 +371,17 @@ esac
 AC_CHECK_HEADERS_ONCE([alloca.h syslog.h stdatomic.h])
 AC_CHECK_HEADER([sys/mman.h], [AC_DEFINE([HAVE_MMAP], [1], [Define to 1 if mmap() is available.])], have_mman=no)
 AC_CHECK_FUNC([aligned_alloc], [AC_DEFINE([HAVE_ALIGNED_ALLOC], [1], [Define to 1 if aligned_alloc() is available.])], have_aligned_alloc=no)
-AC_CHECK_HEADER([malloc.h], [AC_DEFINE([HAVE_MALLOC_H], [1], [Define to 1 if malloc.h is available.])], have_malloc_h=no)
-AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#include <sys/socket.h>])
-
 if test "$have_aligned_alloc" = "no" && test "$have_mman" = "no" ; then
   AC_MSG_ERROR([No means of aligned alloc found. Need mmap() or aligned_alloc().])
 fi
 
+BIRD_CHECK_MALLOPT
+if test "$bird_cv_mallopt" = "yes" ; then
+  AC_DEFINE([HAVE_MALLOPT], [1], [Define to 1 if mallopt() is available.])
+fi
+
+AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [#include <sys/socket.h>])
+
 
 AC_C_BIGENDIAN(
   [AC_DEFINE([CPU_BIG_ENDIAN], [1], [Define to 1 if cpu is big endian])],
index 74618dfb843a5d9d8e9015469f8c2513bcc36a2d..fcf855082eb75bf3126a793c30fdac423d8390f6 100644 (file)
@@ -18,7 +18,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 
-#ifdef HAVE_MALLOC_H
+#ifdef HAVE_MALLOPT
 # include <malloc.h>
 #endif
 
@@ -505,7 +505,7 @@ page_dump(struct dump_request *dreq)
 void
 resource_sys_init(void)
 {
-#ifdef HAVE_MALLOC_H
+#ifdef HAVE_MALLOPT
   if (!mallopt(M_ARENA_MAX, 1))
     log(L_WARN "Failed to disable multiple malloc arenas, memory consumption may skyrocket.");
 #endif