clamav/cmake/CheckMallinfo.cmake
John Humlick 18120a0ef0
clamd: Fix bug reporting memory stats, used by clamdtop
ClamD's STATS API reports process memory stats on systems that
provide the `mallinfo()` system call.
This feature is used by ClamDTOP to show process memory usage.
When we switched to the CMake build system, we neglected to add the
check for the `mallinfo()` system call and so broke ClamD memory
usage reporting.

This commit adds the CMake check for `mallinfo()` and sets
HAVE_MALLINFO, if found.

Fixes: https://github.com/Cisco-Talos/clamav/issues/706

Jira: CLAM-2742
2025-03-13 10:38:49 -07:00

26 lines
933 B
CMake

#
# Check for mallinfo(3) sys call.
#
GET_FILENAME_COMPONENT(_selfdir_CheckMallinfo
"${CMAKE_CURRENT_LIST_FILE}" PATH)
# Check that the POSIX compliant uname(2) call works properly (HAVE_UNAME_SYSCALL)
try_run(
# Name of variable to store the run result (process exit status; number) in:
test_run_result
# Name of variable to store the compile result (TRUE or FALSE) in:
test_compile_result
# Binary directory:
${CMAKE_CURRENT_BINARY_DIR}
# Source file to be compiled:
${_selfdir_CheckMallinfo}/CheckMallinfo.c
# Where to store the output produced during compilation:
COMPILE_OUTPUT_VARIABLE test_compile_output
# Where to store the output produced by running the compiled executable:
RUN_OUTPUT_VARIABLE test_run_output )
# Did compilation succeed and process return 0 (success)?
if("${test_compile_result}" AND ("${test_run_result}" EQUAL 0))
set(HAVE_MALLINFO 1)
endif()