2011-03-01 22:21:30 +01:00
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
2011-03-06 22:52:50 +01:00
|
|
|
AC_PREREQ([2.65])
|
2015-11-24 19:34:21 +01:00
|
|
|
dnl Get version number from git
|
2015-12-19 10:07:20 +01:00
|
|
|
m4_define([git_revision], m4_esyscmd_s([./autover.sh]))
|
2026-02-13 11:37:07 +01:00
|
|
|
AC_INIT([SnapRAID CLI], [git_revision], [], [snapraid], [https://www.snapraid.it])
|
2026-04-30 11:38:01 +02:00
|
|
|
AC_CANONICAL_HOST
|
|
|
|
|
AC_CANONICAL_BUILD
|
|
|
|
|
AC_CANONICAL_TARGET
|
2014-03-06 18:53:44 +01:00
|
|
|
AM_INIT_AUTOMAKE([foreign no-dependencies subdir-objects])
|
2026-06-24 00:15:15 +02:00
|
|
|
AC_CONFIG_SRCDIR([os/os.h])
|
2015-08-05 09:42:11 +02:00
|
|
|
AC_CONFIG_HEADERS([config.h])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2026-02-08 15:26:30 +01:00
|
|
|
dnl Enables as many system-specific extensions as reasonably possible
|
|
|
|
|
AC_USE_SYSTEM_EXTENSIONS
|
|
|
|
|
|
2026-04-30 11:38:01 +02:00
|
|
|
dnl Macro directory
|
|
|
|
|
AC_CONFIG_MACRO_DIRS([m4])
|
|
|
|
|
|
2011-03-01 22:21:30 +01:00
|
|
|
dnl Checks for programs.
|
|
|
|
|
AC_PROG_CC
|
2013-06-27 21:59:19 +02:00
|
|
|
AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind],[])
|
2025-01-23 20:32:26 +01:00
|
|
|
AC_CHECK_PROG([WINE],[wine64],[wine64],[])
|
2025-03-29 16:09:35 +01:00
|
|
|
AC_CHECK_PROG([SDE],[sde64],[sde64],[])
|
2011-04-28 23:58:31 +02:00
|
|
|
AC_CHECK_PROG([ADVD2],[advd2],[advd2],[])
|
|
|
|
|
AM_CONDITIONAL(HAVE_ADVD2, [test x"$ADVD2" != x])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2026-06-04 09:09:55 +02:00
|
|
|
# Compile a quick test program using a syntax unique to C99 and newer
|
|
|
|
|
AC_MSG_CHECKING([if compiler supports C99 or newer features])
|
|
|
|
|
AC_COMPILE_IFELSE([
|
|
|
|
|
AC_LANG_PROGRAM([[]], [[
|
|
|
|
|
int x = 0;
|
|
|
|
|
x++;
|
|
|
|
|
int y = x;
|
|
|
|
|
int array[y];
|
|
|
|
|
]])
|
|
|
|
|
], [
|
|
|
|
|
AC_MSG_RESULT([yes])
|
|
|
|
|
], [
|
|
|
|
|
AC_MSG_RESULT([no])
|
|
|
|
|
AC_MSG_ERROR([A C99-compliant compiler or newer is required to build this package.])
|
|
|
|
|
])
|
|
|
|
|
|
2026-03-04 15:59:10 +01:00
|
|
|
# Check if we are targeting Windows
|
|
|
|
|
is_windows=no
|
|
|
|
|
AS_CASE([$host_os], [mingw*|msys*|cygwin*], [is_windows=yes])
|
|
|
|
|
AM_CONDITIONAL([HOST_WINDOWS], [test "x$is_windows" = "xyes"])
|
|
|
|
|
|
|
|
|
|
# Check for Windows-specific tools only if on Windows
|
|
|
|
|
if test "x$is_windows" = "xyes"; then
|
|
|
|
|
AC_CHECK_TOOL([WINDMC], [windmc])
|
|
|
|
|
AC_CHECK_TOOL([WINDRES], [windres])
|
|
|
|
|
fi
|
|
|
|
|
|
2026-01-08 11:17:17 +01:00
|
|
|
dnl Options to improve stacktrace (some disabled as no crash reported by years)
|
2026-04-30 11:38:01 +02:00
|
|
|
AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], CFLAGS="$CFLAGS -fno-omit-frame-pointer", [])
|
|
|
|
|
# AX_CHECK_COMPILE_FLAG([-fno-inline-functions-called-once], CFLAGS="$CFLAGS -fno-inline-functions-called-once", [])
|
|
|
|
|
# AX_CHECK_COMPILE_FLAG([-fno-inline-small-functions], CFLAGS="$CFLAGS -fno-inline-small-functions", [])
|
|
|
|
|
# AX_CHECK_COMPILE_FLAG([-fno-optimize-sibling-calls], CFLAGS="$CFLAGS -fno-optimize-sibling-calls", [])
|
|
|
|
|
AX_CHECK_COMPILE_FLAG([-rdynamic], CFLAGS="$CFLAGS -rdynamic", [])
|
2020-05-18 15:21:42 +02:00
|
|
|
# This the new default for gcc 10
|
2026-04-30 11:38:01 +02:00
|
|
|
AX_CHECK_COMPILE_FLAG([-fno-common], CFLAGS="$CFLAGS -fno-common", [])
|
2015-12-02 23:21:33 +01:00
|
|
|
|
2015-01-24 14:34:53 +01:00
|
|
|
dnl Checks for system.
|
2011-03-01 22:21:30 +01:00
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
|
|
2026-04-30 11:38:01 +02:00
|
|
|
dnl Checks for architecture
|
|
|
|
|
AC_C_BIGENDIAN
|
|
|
|
|
|
2011-03-01 22:21:30 +01:00
|
|
|
dnl Checks for header files.
|
2011-03-12 10:09:59 +01:00
|
|
|
AC_HEADER_ASSERT
|
2011-03-01 22:21:30 +01:00
|
|
|
AC_HEADER_DIRENT
|
2015-01-24 14:10:23 +01:00
|
|
|
AC_HEADER_SYS_WAIT
|
2025-03-13 15:56:18 +01:00
|
|
|
AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h limits.h time.h sys/time.h])
|
2026-01-10 16:57:04 +01:00
|
|
|
AC_CHECK_HEADERS([unistd.h getopt.h io.h inttypes.h byteswap.h])
|
2026-06-24 00:15:15 +02:00
|
|
|
AC_CHECK_HEADERS([pthread.h math.h syslog.h grp.h pwd.h])
|
2026-03-31 12:48:03 +02:00
|
|
|
AC_CHECK_HEADERS([sys/file.h sys/ioctl.h sys/sysmacros.h sys/mkdev.h sys/mount.h])
|
2026-06-06 18:54:31 +02:00
|
|
|
AC_CHECK_HEADERS([linux/fiemap.h linux/fs.h linux/btrfs.h execinfo.h])
|
|
|
|
|
AC_CHECK_HEADERS([mach/mach_time.h sys/sysctl.h])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2026-05-09 17:44:08 +02:00
|
|
|
# Check for the close_range(...,CLOSE_RANGE_CLOEXEC)
|
|
|
|
|
AC_CHECK_HEADERS([linux/close_range.h])
|
|
|
|
|
AC_CHECK_FUNCS([close_range])
|
|
|
|
|
AC_MSG_CHECKING([for CLOSE_RANGE_CLOEXEC])
|
|
|
|
|
AC_COMPILE_IFELSE([
|
|
|
|
|
AC_LANG_PROGRAM([[
|
|
|
|
|
#ifdef HAVE_LINUX_CLOSE_RANGE_H
|
|
|
|
|
#include <linux/close_range.h>
|
|
|
|
|
#endif
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
]], [[
|
|
|
|
|
unsigned int flags = CLOSE_RANGE_CLOEXEC;
|
|
|
|
|
]])
|
|
|
|
|
], [
|
|
|
|
|
AC_MSG_RESULT([yes])
|
|
|
|
|
AC_DEFINE([HAVE_CLOSE_RANGE_CLOEXEC], [1], [Define if CLOSE_RANGE_CLOEXEC is available])
|
|
|
|
|
], [
|
|
|
|
|
AC_MSG_RESULT([no])
|
|
|
|
|
])
|
|
|
|
|
|
2011-03-01 22:21:30 +01:00
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
|
|
|
AC_C_CONST
|
|
|
|
|
AC_C_INLINE
|
|
|
|
|
AC_C_RESTRICT
|
|
|
|
|
AC_C_VOLATILE
|
|
|
|
|
AC_TYPE_SIZE_T
|
2011-03-06 22:52:50 +01:00
|
|
|
AC_TYPE_OFF_T
|
|
|
|
|
AC_TYPE_SIZE_T
|
|
|
|
|
AC_TYPE_SSIZE_T
|
|
|
|
|
AC_TYPE_UINT32_T
|
|
|
|
|
AC_TYPE_UINT64_T
|
|
|
|
|
AC_TYPE_UINT8_T
|
2011-06-26 17:47:34 +02:00
|
|
|
AC_TYPE_INT8_T
|
2013-10-02 23:05:22 +02:00
|
|
|
AC_STRUCT_DIRENT_D_INO
|
|
|
|
|
AC_STRUCT_DIRENT_D_TYPE
|
2014-09-30 21:54:49 +02:00
|
|
|
AC_CHECK_MEMBERS([struct stat.st_nlink, struct stat.st_mtim.tv_nsec, struct stat.st_mtimensec, struct stat.st_mtimespec.tv_nsec], [], [], [[
|
2013-08-25 22:39:58 +02:00
|
|
|
#if HAVE_SYS_TYPES_H
|
2012-09-19 23:18:47 +02:00
|
|
|
#include <sys/types.h>
|
2013-08-25 22:39:58 +02:00
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_STAT_H
|
2012-09-19 23:18:47 +02:00
|
|
|
#include <sys/stat.h>
|
2013-08-25 22:39:58 +02:00
|
|
|
#endif
|
|
|
|
|
#if HAVE_UNISTD_H
|
2012-09-19 23:18:47 +02:00
|
|
|
#include <unistd.h>
|
2013-08-25 22:39:58 +02:00
|
|
|
#endif
|
|
|
|
|
]])
|
2022-08-17 16:36:29 +02:00
|
|
|
|
|
|
|
|
dnl Checks for library functions.
|
|
|
|
|
AC_CHECK_FUNCS([memset strchr strerror strrchr mkdir gettimeofday strtoul])
|
|
|
|
|
AC_CHECK_FUNCS([getopt getopt_long snprintf vsnprintf sigaction])
|
|
|
|
|
AC_CHECK_FUNCS([ftruncate fallocate access])
|
2025-12-26 11:48:25 +01:00
|
|
|
AC_CHECK_FUNCS([fsync posix_fadvise sync_file_range syncfs])
|
2026-01-10 16:57:04 +01:00
|
|
|
AC_CHECK_FUNCS([getc_unlocked ferror_unlocked])
|
2022-08-17 16:36:29 +02:00
|
|
|
AC_CHECK_FUNCS([futimes futimens futimesat localtime_r lutimes utimensat])
|
|
|
|
|
AC_CHECK_FUNCS([fstatat flock])
|
|
|
|
|
AC_CHECK_FUNCS([mach_absolute_time])
|
|
|
|
|
AC_CHECK_FUNCS([backtrace backtrace_symbols])
|
|
|
|
|
AC_SEARCH_LIBS([clock_gettime], [rt])
|
|
|
|
|
AC_CHECK_FUNCS([clock_gettime])
|
2026-05-09 17:44:08 +02:00
|
|
|
AC_CHECK_FUNCS([fexecve pipe2])
|
2022-08-17 16:36:29 +02:00
|
|
|
AC_SEARCH_LIBS([exp], [m])
|
2026-05-21 12:21:36 +02:00
|
|
|
AC_CHECK_FUNCS([eaccess faccessat])
|
2022-08-17 16:36:29 +02:00
|
|
|
|
|
|
|
|
dnl Checks for statfs for linux avoiding to include sys/mount.h that is required only in darwin
|
|
|
|
|
dnl In glibc since 7eae6a91e9b1670330c9f15730082c91c0b1d570, milestone 2.36, sys/mount.h defines fsconfig_command which conflicts with linux/mount.h
|
|
|
|
|
AC_CHECK_HEADERS([sys/vfs.h sys/statfs.h])
|
|
|
|
|
AC_CHECK_DECLS([statfs], [], [
|
|
|
|
|
AC_CHECK_HEADERS([sys/param.h sys/mount.h])
|
|
|
|
|
], [[
|
|
|
|
|
#if HAVE_SYS_VFS_H
|
|
|
|
|
#include <sys/vfs.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_STATFS_H
|
|
|
|
|
#include <sys/statfs.h>
|
|
|
|
|
#endif
|
|
|
|
|
]])
|
|
|
|
|
AC_CHECK_FUNCS([statfs])
|
|
|
|
|
|
2013-08-25 22:39:58 +02:00
|
|
|
AC_CHECK_MEMBERS([struct statfs.f_type], [], [], [[
|
2013-08-29 00:23:14 +02:00
|
|
|
#if HAVE_SYS_PARAM_H
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_MOUNT_H
|
|
|
|
|
#include <sys/mount.h>
|
|
|
|
|
#endif
|
2013-08-25 22:39:58 +02:00
|
|
|
#if HAVE_SYS_VFS_H
|
|
|
|
|
#include <sys/vfs.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_STATFS_H
|
|
|
|
|
#include <sys/statfs.h>
|
|
|
|
|
#endif
|
2012-09-19 23:18:47 +02:00
|
|
|
]])
|
2022-08-17 16:36:29 +02:00
|
|
|
|
2016-01-09 11:18:32 +01:00
|
|
|
AC_CHECK_MEMBERS([struct statfs.f_fstypename], [], [], [[
|
|
|
|
|
#if HAVE_SYS_PARAM_H
|
|
|
|
|
#include <sys/param.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_MOUNT_H
|
|
|
|
|
#include <sys/mount.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_VFS_H
|
|
|
|
|
#include <sys/vfs.h>
|
|
|
|
|
#endif
|
|
|
|
|
#if HAVE_SYS_STATFS_H
|
|
|
|
|
#include <sys/statfs.h>
|
|
|
|
|
#endif
|
|
|
|
|
]])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2026-04-30 11:38:01 +02:00
|
|
|
dnl Checks for libraries
|
|
|
|
|
have_pthreads=no
|
|
|
|
|
AS_IF([test "x$is_windows" = "xyes"], [
|
|
|
|
|
AC_MSG_NOTICE([Windows native threads support enabled])
|
|
|
|
|
], [
|
|
|
|
|
AC_CHECK_HEADERS([pthread.h])
|
|
|
|
|
AX_PTHREAD([
|
|
|
|
|
thread_model="pthreads"
|
|
|
|
|
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
|
|
|
|
LIBS="$PTHREAD_LIBS $LIBS"
|
|
|
|
|
AC_DEFINE([HAVE_PTHREAD], [1], [Define to 1 if POSIX threads are available])
|
|
|
|
|
AC_MSG_NOTICE([POSIX threads support enabled])
|
|
|
|
|
], [
|
|
|
|
|
AC_MSG_WARN([Single-threaded version])
|
|
|
|
|
])
|
|
|
|
|
])
|
|
|
|
|
AM_CONDITIONAL([HAVE_PTHREAD], [test "x$have_pthreads" = "xyes"])
|
|
|
|
|
|
2015-12-10 22:50:20 +01:00
|
|
|
dnl Checks for libblkid
|
2016-01-02 13:01:48 +01:00
|
|
|
AC_ARG_WITH([blkid],
|
|
|
|
|
AS_HELP_STRING([--without-blkid], [Ignore presence of blkid and disable it]))
|
|
|
|
|
AS_IF([test "x$with_blkid" != "xno"],
|
|
|
|
|
[AC_SEARCH_LIBS([blkid_probe_all], [blkid], [have_blkid=yes], [have_blkid=no])],
|
|
|
|
|
[have_blkid=no])
|
|
|
|
|
AS_IF([test "x$have_blkid" = "xyes"],
|
|
|
|
|
[
|
|
|
|
|
AC_CHECK_HEADERS([blkid/blkid.h])
|
|
|
|
|
AC_CHECK_FUNCS([blkid_devno_to_devname blkid_get_tag_value])
|
|
|
|
|
],
|
|
|
|
|
[AS_IF([test "x$with_blkid" = "xyes"],
|
|
|
|
|
[AC_MSG_ERROR([blkid requested but not found])
|
|
|
|
|
])
|
|
|
|
|
])
|
2015-12-10 22:50:20 +01:00
|
|
|
|
2011-03-01 22:21:30 +01:00
|
|
|
dnl Checks for compiler
|
|
|
|
|
AC_CHECK_CC_OPT([-Wall], CFLAGS="$CFLAGS -Wall", [])
|
2011-03-29 23:55:31 +02:00
|
|
|
AC_CHECK_CC_OPT([-Wextra], CFLAGS="$CFLAGS -Wextra", [])
|
2015-08-05 09:42:11 +02:00
|
|
|
AC_CHECK_CC_OPT([-Wuninitialized], CFLAGS="$CFLAGS -Wuninitialized", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Wshadow], CFLAGS="$CFLAGS -Wshadow", [])
|
2026-06-04 00:34:51 +02:00
|
|
|
AC_CHECK_CC_OPT([-Wshorten-64-to-32], CFLAGS="$CFLAGS -Wshorten-64-to-32", [])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2021-12-08 15:48:25 +01:00
|
|
|
dnl Disable warning about zero-length-bounds raised by gcc 10 on linux kernel header on the fm_extents field
|
|
|
|
|
AC_CHECK_CC_OPT([-Wno-zero-length-bounds], CFLAGS="$CFLAGS -Wno-zero-length-bounds", [])
|
|
|
|
|
|
2016-01-08 22:43:04 +01:00
|
|
|
dnl Checks for asm
|
|
|
|
|
AC_ARG_ENABLE([asm],
|
|
|
|
|
AS_HELP_STRING([--disable-asm], [Disable inline assembly]))
|
2026-05-28 01:12:17 +02:00
|
|
|
AS_IF([test "x$enable_asm" != "xno"], [
|
|
|
|
|
AC_DEFINE([HAVE_ASSEMBLY], [1], [Define to 1 if inline assembly should be used.])
|
|
|
|
|
])
|
2016-01-08 22:43:04 +01:00
|
|
|
|
2011-04-30 10:59:02 +02:00
|
|
|
dnl Checks for test environment
|
|
|
|
|
AS_CASE([$host],
|
2014-03-22 11:43:43 +01:00
|
|
|
[*-*-mingw*],
|
|
|
|
|
[
|
|
|
|
|
TESTENV="$WINE"
|
|
|
|
|
FAILENV="$TESTENV"
|
|
|
|
|
],
|
2016-11-14 21:16:40 +01:00
|
|
|
[POSIX=1]
|
2011-04-30 10:59:02 +02:00
|
|
|
)
|
2016-11-14 21:16:40 +01:00
|
|
|
AM_CONDITIONAL(HAVE_POSIX, [test x"$POSIX" != x])
|
2025-02-03 17:41:54 -06:00
|
|
|
AM_CONDITIONAL(HAVE_DISK_ARBITRATION, [test "$(uname)" == Darwin])
|
2011-04-30 10:59:02 +02:00
|
|
|
|
2011-06-21 23:57:09 +02:00
|
|
|
AC_ARG_ENABLE([profiler],
|
|
|
|
|
[AS_HELP_STRING([--enable-profiler],[enable the use of gprof for code coverage])],
|
|
|
|
|
[
|
2015-01-02 15:53:15 +01:00
|
|
|
CFLAGS="-O2 -pg -g -pthread"
|
2011-06-21 23:57:09 +02:00
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
2011-04-30 10:59:02 +02:00
|
|
|
AC_ARG_ENABLE([coverage],
|
|
|
|
|
[AS_HELP_STRING([--enable-coverage],[enable the use of gcov for code coverage])],
|
|
|
|
|
[
|
2015-01-02 15:53:15 +01:00
|
|
|
CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage -pthread"
|
2011-04-30 10:59:02 +02:00
|
|
|
],
|
|
|
|
|
[])
|
2011-03-20 13:54:05 +01:00
|
|
|
|
2011-04-30 10:59:02 +02:00
|
|
|
AC_ARG_ENABLE([valgrind],
|
|
|
|
|
[AS_HELP_STRING([--enable-valgrind],[enable the use of valgrind in testing])],
|
|
|
|
|
[
|
2025-10-27 17:11:27 +01:00
|
|
|
TESTENV="$VALGRIND --leak-check=full --suppressions=valgrind.supp --error-exitcode=1"
|
2014-03-22 11:43:43 +01:00
|
|
|
FAILENV="$VALGRIND --error-exitcode=1"
|
2013-06-27 21:59:19 +02:00
|
|
|
CFLAGS="$CFLAGS -DCHECKER"
|
2015-10-30 22:32:49 +01:00
|
|
|
MEMORY_CHECKER=1
|
2013-06-27 21:59:19 +02:00
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([sgcheck],
|
|
|
|
|
[AS_HELP_STRING([--enable-sgcheck],[enable the use of sgcheck in testing])],
|
|
|
|
|
[
|
2015-10-30 22:32:49 +01:00
|
|
|
TESTENV="$VALGRIND --tool=exp-sgcheck --suppressions=valgrind.supp --error-exitcode=1"
|
2014-03-22 11:43:43 +01:00
|
|
|
FAILENV="$TESTENV"
|
2013-02-24 18:00:53 +01:00
|
|
|
CFLAGS="$CFLAGS -DCHECKER"
|
2015-10-30 22:32:49 +01:00
|
|
|
MEMORY_CHECKER=1
|
2011-04-30 10:59:02 +02:00
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
2015-10-30 22:32:49 +01:00
|
|
|
AC_ARG_ENABLE([helgrind],
|
|
|
|
|
[AS_HELP_STRING([--enable-helgrind],[enable the use of helgrind in testing])],
|
|
|
|
|
[
|
2025-10-27 17:11:27 +01:00
|
|
|
TESTENV="$VALGRIND --tool=helgrind --suppressions=valgrind.supp --fair-sched=try --error-exitcode=1"
|
2015-10-30 22:32:49 +01:00
|
|
|
FAILENV="$TESTENV"
|
|
|
|
|
CFLAGS="$CFLAGS -DCHECKER"
|
|
|
|
|
THREAD_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([drd],
|
|
|
|
|
[AS_HELP_STRING([--enable-drd],[enable the use of drd in testing])],
|
|
|
|
|
[
|
2025-10-27 17:11:27 +01:00
|
|
|
TESTENV="$VALGRIND --tool=drd --suppressions=valgrind.supp --fair-sched=try --error-exitcode=1"
|
2015-10-30 22:32:49 +01:00
|
|
|
FAILENV="$TESTENV"
|
|
|
|
|
CFLAGS="$CFLAGS -DCHECKER"
|
|
|
|
|
THREAD_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
2016-01-08 18:19:53 +01:00
|
|
|
AC_ARG_ENABLE([asan],
|
|
|
|
|
[AS_HELP_STRING([--enable-asan],[enable the use of AddressSanitizer in testing])],
|
|
|
|
|
[
|
|
|
|
|
CFLAGS="$CFLAGS -DCHECKER -fsanitize=address"
|
|
|
|
|
MEMORY_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([msan],
|
|
|
|
|
[AS_HELP_STRING([--enable-msan],[enable the use of MemorySanitizer in testing])],
|
|
|
|
|
[
|
|
|
|
|
CFLAGS="$CFLAGS -DCHECKER -fsanitize=memory"
|
|
|
|
|
MEMORY_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([ubsan],
|
|
|
|
|
[AS_HELP_STRING([--enable-ubsan],[enable the use of UndefinedBehaviourSanitizer in testing])],
|
|
|
|
|
[
|
2025-10-27 17:11:27 +01:00
|
|
|
CFLAGS="$CFLAGS -DCHECKER -fsanitize=undefined -fno-sanitize=function"
|
2016-01-08 18:19:53 +01:00
|
|
|
MEMORY_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AC_ARG_ENABLE([tsan],
|
|
|
|
|
[AS_HELP_STRING([--enable-tsan],[enable the use of ThreadSanitizer in testing])],
|
|
|
|
|
[
|
|
|
|
|
CFLAGS="$CFLAGS -DCHECKER -fsanitize=thread"
|
|
|
|
|
dnl Use MEMORY_CHECKER instead of THREAD_CHECKER to run the full and long test
|
|
|
|
|
MEMORY_CHECKER=1
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
|
|
|
|
AM_CONDITIONAL(HAVE_MEMORY_CHECKER, [test x"$MEMORY_CHECKER" != x])
|
2015-10-30 22:32:49 +01:00
|
|
|
AM_CONDITIONAL(HAVE_THREAD_CHECKER, [test x"$THREAD_CHECKER" != x])
|
|
|
|
|
|
2014-11-04 22:52:33 +01:00
|
|
|
AC_ARG_ENABLE([sde],
|
|
|
|
|
[AS_HELP_STRING([--enable-sde],[enable the use of SDE emulator in testing])],
|
2017-10-12 23:16:59 +02:00
|
|
|
dnl p4p -> Pentium4 Prescott with SSE2
|
2014-11-12 21:56:33 +01:00
|
|
|
dnl mrm -> Merom with SSSE3
|
|
|
|
|
dnl nhm -> Nehalem with SSE4.2
|
|
|
|
|
dnl hsw -> Haswell with AVX2
|
2026-04-16 10:03:07 +02:00
|
|
|
dnl knl -> Knights Landing with AVX512F
|
|
|
|
|
dnl skx -> Skylake Xeon with AVX512BW
|
2014-11-04 22:52:33 +01:00
|
|
|
[
|
2025-03-29 16:09:35 +01:00
|
|
|
TESTENV_SSE2="$SDE -chip-check-exe-only -p4p --"
|
|
|
|
|
TESTENV_SSSE3="$SDE -chip-check-exe-only -mrm --"
|
2014-11-12 21:56:33 +01:00
|
|
|
TESTENV_SSE42="$SDE -nhm --"
|
|
|
|
|
TESTENV_AVX2="$SDE -hsw --"
|
2026-04-16 10:03:07 +02:00
|
|
|
TESTENV_AVX512="$SDE -skx --"
|
2014-11-04 22:52:33 +01:00
|
|
|
EMULATOR=1
|
2017-10-12 23:16:59 +02:00
|
|
|
# Target CPU compatible with P4 Prescott
|
|
|
|
|
CFLAGS="$CFLAGS -march=athlon64"
|
2014-11-04 22:52:33 +01:00
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
AM_CONDITIONAL(HAVE_EMULATOR, [test x"$EMULATOR" != x])
|
|
|
|
|
|
2013-02-24 18:00:53 +01:00
|
|
|
AC_ARG_ENABLE([debug],
|
|
|
|
|
[AS_HELP_STRING([--enable-debug],[enable debugging])],
|
|
|
|
|
[
|
2015-12-16 23:25:36 +01:00
|
|
|
CFLAGS="-Og -g -pthread -Wall -Wextra"
|
|
|
|
|
AC_CHECK_CC_OPT([-rdynamic], CFLAGS="$CFLAGS -rdynamic", [])
|
2013-02-24 18:00:53 +01:00
|
|
|
],
|
|
|
|
|
[])
|
2011-04-30 10:59:02 +02:00
|
|
|
|
2016-11-06 16:10:40 +01:00
|
|
|
AC_ARG_ENABLE([warning-as-error],
|
|
|
|
|
[AS_HELP_STRING([--enable-warning-as-error],[stop build on warnings])],
|
2016-11-06 16:47:26 +01:00
|
|
|
[
|
|
|
|
|
AC_CHECK_CC_OPT([-Werror], CFLAGS="$CFLAGS -Werror", [])
|
|
|
|
|
dnl This avoid the Darwin error: clang: error: argument unused during compilation: '-pthread'
|
|
|
|
|
dnl See: https://llvm.org/bugs/show_bug.cgi?id=7798
|
|
|
|
|
AC_CHECK_CC_OPT([-Wno-error=unused-command-line-argument], CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument", [])
|
|
|
|
|
],
|
2016-11-06 16:10:40 +01:00
|
|
|
[])
|
|
|
|
|
|
2014-03-10 21:59:25 +01:00
|
|
|
AC_ARG_ENABLE([warning],
|
|
|
|
|
[AS_HELP_STRING([--enable-warning],[enable extra warning])],
|
|
|
|
|
[
|
|
|
|
|
AC_CHECK_CC_OPT([-Wpointer-arith], CFLAGS="$CFLAGS -Wpointer-arith", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Wcast-qual], CFLAGS="$CFLAGS -Wcast-qual", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Wunused], CFLAGS="$CFLAGS -Wunused", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Wunreachable-code], CFLAGS="$CFLAGS -Wunreachable-code", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Wpadded], CFLAGS="$CFLAGS -Wpadded", [])
|
|
|
|
|
AC_CHECK_CC_OPT([-Weverything], CFLAGS="$CFLAGS -Weverything", [])
|
|
|
|
|
],
|
|
|
|
|
[])
|
|
|
|
|
|
2026-05-11 09:21:39 +02:00
|
|
|
# WITH_TOOL(NAME, BINARY, DESCRIPTION)
|
|
|
|
|
# Adds --with-NAME=PATH option. Defines NAME_PATH if given.
|
|
|
|
|
AC_DEFUN([WITH_TOOL], [
|
|
|
|
|
AC_ARG_WITH([$1],
|
|
|
|
|
[AS_HELP_STRING([--with-$1=PATH],
|
|
|
|
|
[absolute path to the $2 executable ($3)])],
|
|
|
|
|
[
|
|
|
|
|
AS_CASE([$withval],
|
|
|
|
|
[/*], [],
|
|
|
|
|
[AC_MSG_ERROR([--with-$1 requires an absolute path (got '$withval')])])
|
|
|
|
|
AS_IF([test ! -x "$withval"],
|
|
|
|
|
[AC_MSG_WARN([$2 not found or not executable at '$withval'])])
|
|
|
|
|
AC_DEFINE_UNQUOTED(m4_toupper([$1_PATH]), ["$withval"],
|
|
|
|
|
[Absolute path to $2, set at configure time.])
|
|
|
|
|
AC_MSG_NOTICE([$2: $withval])
|
|
|
|
|
],
|
|
|
|
|
[
|
|
|
|
|
AC_MSG_NOTICE([$2: use runtime discovery])
|
|
|
|
|
])
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
WITH_TOOL([smartctl], [smartctl], [S.M.A.R.T. monitoring])
|
|
|
|
|
WITH_TOOL([zfs], [zfs], [ZFS pool management])
|
|
|
|
|
WITH_TOOL([zpool], [zpool], [ZFS pool status])
|
|
|
|
|
WITH_TOOL([bcachefs], [bcachefs], [Bcachefs management])
|
|
|
|
|
|
2011-04-30 10:59:02 +02:00
|
|
|
AC_ARG_VAR([TESTENV], [Test environment])
|
2014-03-22 11:43:43 +01:00
|
|
|
AC_ARG_VAR([FAILENV], [Test environment for failing tests])
|
2014-11-04 22:52:33 +01:00
|
|
|
AC_ARG_VAR([TESTENV_SSE2], [Test environment for SSE2])
|
|
|
|
|
AC_ARG_VAR([TESTENV_SSSE3], [Test environment for SSSE3])
|
2014-11-12 21:56:33 +01:00
|
|
|
AC_ARG_VAR([TESTENV_SSE42], [Test environment for SSE42])
|
2014-11-04 22:52:33 +01:00
|
|
|
AC_ARG_VAR([TESTENV_AVX2], [Test environment for AVX2])
|
2026-04-16 10:03:07 +02:00
|
|
|
AC_ARG_VAR([TESTENV_AVX512], [Test environment for AVX512])
|
2014-11-04 22:52:33 +01:00
|
|
|
|
2011-03-01 22:21:30 +01:00
|
|
|
AC_CONFIG_FILES([Makefile])
|
2026-03-09 16:22:51 +01:00
|
|
|
AC_CONFIG_FILES([pkg/snapraid.info pkg/control pkg/snapraid.spec pkg/.PKGINFO pkg/PKGBUILD pkg/.SRCINFO])
|
2026-02-13 11:37:07 +01:00
|
|
|
AC_CONFIG_FILES([makeslackware.sh], [chmod a+x makeslackware.sh])
|
2026-02-25 13:42:34 +01:00
|
|
|
AC_CONFIG_FILES([makeslackdist.sh], [chmod a+x makeslackdist.sh])
|
2026-02-13 11:37:07 +01:00
|
|
|
AC_CONFIG_FILES([pkg/snapraid.SlackBuild], [chmod a+x pkg/snapraid.SlackBuild])
|
|
|
|
|
AC_CONFIG_FILES([makedeb.sh], [chmod a+x makedeb.sh])
|
|
|
|
|
AC_CONFIG_FILES([makerpm.sh], [chmod a+x makerpm.sh])
|
2026-03-09 16:22:51 +01:00
|
|
|
AC_CONFIG_FILES([makearch.sh], [chmod a+x makearch.sh])
|
|
|
|
|
AC_CONFIG_FILES([makearchdist.sh], [chmod a+x makearchdist.sh])
|
2011-03-01 22:21:30 +01:00
|
|
|
|
2026-02-13 11:37:07 +01:00
|
|
|
AC_OUTPUT
|