1AC_PREREQ(2.64) 2AC_INIT([ltp], [LTP_VERSION], [ltp@lists.linux.it]) 3AC_CONFIG_AUX_DIR([.]) 4AM_INIT_AUTOMAKE 5AC_CONFIG_HEADERS([include/config.h]) 6AC_CONFIG_MACRO_DIR([m4]) 7AC_CONFIG_FILES([ \ 8 include/mk/config.mk \ 9 include/mk/config-openposix.mk \ 10 include/mk/features.mk \ 11 lib/ltp.pc \ 12 m4/Makefile \ 13]) 14 15AC_ARG_VAR(HOSTCC, [The C compiler on the host]) 16 17AM_MAINTAINER_MODE([enable]) 18 19AC_CANONICAL_HOST 20 21AC_PROG_CC 22# <= autoconf 2.61 doesn't have AC_PROG_AR, but 2.63 has it. Not sure about 23# 2.62. 24AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)]) 25AC_PROG_AR 26AC_PROG_RANLIB 27AC_DEFUN([AC_PROG_STRIP], [AC_CHECK_TOOL(STRIP, strip, :)]) 28AC_PROG_STRIP 29AC_PROG_YACC 30 31m4_ifndef([PKG_CHECK_EXISTS], 32 [m4_fatal([must install pkg-config or pkgconfig and pkg.m4 macro (usual dependency), see INSTALL])]) 33 34AC_PREFIX_DEFAULT(/opt/ltp) 35 36AC_CHECK_DECLS([IFLA_NET_NS_PID],,,[#include <linux/if_link.h>]) 37AC_CHECK_DECLS([LANDLOCK_RULE_PATH_BENEATH],,,[#include <linux/landlock.h>]) 38AC_CHECK_DECLS([LANDLOCK_RULE_NET_PORT],,,[#include <linux/landlock.h>]) 39AC_CHECK_DECLS([MADV_MERGEABLE],,,[#include <sys/mman.h>]) 40AC_CHECK_DECLS([NFTA_CHAIN_ID, NFTA_VERDICT_CHAIN_ID],,,[#include <linux/netfilter/nf_tables.h>]) 41AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ],,,[#include <sys/prctl.h>]) 42AC_CHECK_DECLS([SEM_STAT_ANY],,,[#include <sys/sem.h>]) 43 44AC_CHECK_HEADERS_ONCE([ \ 45 asm/ldt.h \ 46 asm/prctl.h \ 47 cpuid.h \ 48 emmintrin.h \ 49 ifaddrs.h \ 50 keyutils.h \ 51 linux/can.h \ 52 linux/cgroupstats.h \ 53 linux/cryptouser.h \ 54 linux/close_range.h \ 55 linux/dccp.h \ 56 linux/futex.h \ 57 linux/genetlink.h \ 58 linux/if_alg.h \ 59 linux/if_ether.h \ 60 linux/if_packet.h \ 61 linux/io_uring.h \ 62 linux/ioprio.h \ 63 linux/keyctl.h \ 64 linux/landlock.h \ 65 linux/mempolicy.h \ 66 linux/module.h \ 67 linux/mount.h \ 68 linux/netlink.h \ 69 linux/openat2.h \ 70 linux/seccomp.h \ 71 linux/securebits.h \ 72 linux/tls.h \ 73 linux/tty.h \ 74 linux/types.h \ 75 linux/userfaultfd.h \ 76 netinet/sctp.h \ 77 pthread.h \ 78 sys/epoll.h \ 79 sys/fanotify.h \ 80 sys/inotify.h \ 81 sys/pidfd.h 82 sys/prctl.h \ 83 sys/random.h \ 84 sys/shm.h \ 85 sys/timerfd.h \ 86 sys/ustat.h \ 87 sys/utsname.h \ 88 sys/xattr.h \ 89 xfs/xqm.h \ 90]) 91AC_CHECK_HEADERS(fts.h, [have_fts=1]) 92AC_SUBST(HAVE_FTS_H, $have_fts) 93AC_CHECK_HEADERS(linux/vm_sockets.h, [], [], [#include <sys/socket.h>]) 94 95AC_CHECK_FUNCS_ONCE([ \ 96 cachestat \ 97 clone3 \ 98 close_range \ 99 copy_file_range \ 100 epoll_pwait \ 101 epoll_pwait2 \ 102 execveat \ 103 faccessat2 \ 104 fallocate \ 105 fsconfig \ 106 fsmount \ 107 fsopen \ 108 fspick \ 109 fstatat \ 110 getauxval \ 111 getcontext \ 112 getcpu \ 113 getdents \ 114 getdents64 \ 115 io_pgetevents \ 116 io_uring_setup \ 117 io_uring_register \ 118 io_uring_enter \ 119 kcmp \ 120 mallinfo \ 121 mallinfo2 \ 122 mallopt \ 123 modify_ldt \ 124 mount_setattr \ 125 move_mount \ 126 name_to_handle_at \ 127 open_tree \ 128 openat \ 129 openat2 \ 130 pidfd_getfd \ 131 pidfd_open \ 132 pidfd_send_signal \ 133 pkey_mprotect \ 134 preadv \ 135 preadv2 \ 136 profil \ 137 pwritev \ 138 pwritev2 \ 139 quotactl_fd \ 140 rand_r \ 141 recvmmsg \ 142 renameat2 \ 143 sched_getcpu \ 144 sendmmsg \ 145 sethostid \ 146 setns \ 147 sigpending \ 148 splice \ 149 statx \ 150 stime \ 151 sync_file_range \ 152 syncfs \ 153 tee \ 154 timerfd_create \ 155 timerfd_gettime \ 156 timerfd_settime \ 157 unshare \ 158 ustat \ 159 vmsplice \ 160]) 161AC_CHECK_FUNCS(mkdtemp,[],AC_MSG_ERROR(mkdtemp() not found!)) 162 163AC_CHECK_MEMBERS([struct fanotify_event_info_fid.fsid.__val],,,[#include <sys/fanotify.h>]) 164AC_CHECK_MEMBERS([struct perf_event_mmap_page.aux_head],,,[#include <linux/perf_event.h>]) 165AC_CHECK_MEMBERS([struct sigaction.sa_sigaction],[],[],[#include <signal.h>]) 166AC_CHECK_MEMBERS([struct statx.stx_mnt_id, struct statx.stx_dio_mem_align],,,[ 167#define _GNU_SOURCE 168#include <sys/stat.h> 169]) 170 171AC_CHECK_MEMBERS([struct utsname.domainname],,,[ 172#define _GNU_SOURCE 173#include <sys/utsname.h> 174]) 175 176AC_CHECK_TYPES([enum kcmp_type],,,[#include <linux/kcmp.h>]) 177AC_CHECK_TYPES([struct acct_v3],,,[#include <sys/acct.h>]) 178AC_CHECK_TYPES([struct af_alg_iv, struct sockaddr_alg],,,[# include <linux/if_alg.h>]) 179AC_CHECK_TYPES([struct clone_args],,,[#include <sched.h>]) 180AC_CHECK_TYPES([struct fanotify_event_info_fid, struct fanotify_event_info_error, 181 struct fanotify_event_info_header, struct fanotify_event_info_pidfd],,,[#include <sys/fanotify.h>]) 182AC_CHECK_TYPES([struct file_clone_range],,,[#include <linux/fs.h>]) 183AC_CHECK_TYPES([struct file_dedupe_range],,,[#include <linux/fs.h>]) 184 185AC_CHECK_TYPES([struct file_handle],,,[ 186#define _GNU_SOURCE 187#include <fcntl.h> 188]) 189 190AC_CHECK_TYPES([struct fs_quota_statv],,,[ 191#define _GNU_SOURCE 192#include <xfs/xqm.h> 193]) 194 195AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>]) 196AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>]) 197AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>]) 198AC_CHECK_TYPES([struct loop_config],,,[#include <linux/loop.h>]) 199AC_CHECK_TYPES([struct landlock_path_beneath_attr],,,[#include <linux/landlock.h>]) 200AC_CHECK_TYPES([struct landlock_net_port_attr],,,[#include <linux/landlock.h>]) 201 202AC_CHECK_TYPES([struct mmsghdr],,,[ 203#define _GNU_SOURCE 204#include <sys/types.h> 205#include <sys/socket.h> 206]) 207 208AC_CHECK_TYPES([struct msqid64_ds],,,[#include <sys/msgbuf.h>]) 209 210AC_CHECK_TYPES([struct rlimit64],,,[ 211#define _LARGEFILE64_SOURCE 212#include <sys/resource.h> 213]) 214 215AC_CHECK_TYPES([struct semun],,,[#include <sys/sem.h>]) 216AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>]) 217AC_CHECK_TYPES([struct shmid64_ds],,,[#include <sys/shmbuf.h>]) 218 219AC_CHECK_TYPES([struct statx, struct statx_timestamp],,,[ 220#define _GNU_SOURCE 221#include <sys/stat.h> 222]) 223 224AC_CHECK_TYPES([struct termio],,,[#include <sys/ioctl.h>]) 225AC_CHECK_TYPES([struct tpacket_req3],,,[# include <linux/if_packet.h>]) 226AC_CHECK_TYPES([struct user_desc, struct modify_ldt_ldt_s],[],[],[#include <asm/ldt.h>]) 227 228AC_CHECK_TYPES([struct xt_entry_match, struct xt_entry_target],,,[ 229#include <sys/types.h> 230#include <netinet/in.h> 231#include <net/if.h> 232#include <limits.h> 233#include <linux/netfilter_ipv4/ip_tables.h> 234]) 235 236AC_CHECK_TYPES([struct __kernel_itimerspec],,,[#include <linux/time_types.h>]) 237AC_CHECK_TYPES([struct __kernel_old_timespec],,,[#include <linux/time_types.h>]) 238AC_CHECK_TYPES([struct __kernel_old_timeval],,,[#include <linux/time_types.h>]) 239AC_CHECK_TYPES([struct __kernel_old_itimerval],,,[#include <linux/time_types.h>]) 240AC_CHECK_TYPES([struct __kernel_old_itimerspec],,,[#include <linux/time_types.h>]) 241AC_CHECK_TYPES([struct __kernel_timespec],,,[#include <linux/time_types.h>]) 242 243AC_CHECK_TYPES([struct __kernel_timex],,,[#include <sys/timex.h>]) 244AC_CHECK_TYPES([struct __kernel_timex_timeval],,,[#include <sys/timex.h>]) 245 246AC_CHECK_TYPES([struct __kernel_old_timeval, struct __kernel_old_timespec, struct __kernel_timespec, 247 struct __kernel_old_itimerspec, struct __kernel_itimerspec, 248 struct __kernel_old_itimerval],,,[#include <sys/socket.h>]) 249 250AC_CHECK_TYPES([struct futex_waitv],,,[#include <linux/futex.h>]) 251AC_CHECK_TYPES([struct mount_attr],,,[ 252#ifdef HAVE_MOUNT_SETATTR 253# include <sys/mount.h> 254#elif HAVE_LINUX_MOUNT_H 255# include <linux/mount.h> 256#endif 257]) 258 259AC_CHECK_TYPES([struct cachestat_range],,,[#include <sys/mman.h>]) 260AC_CHECK_TYPES([struct cachestat],,,[#include <sys/mman.h>]) 261AC_CHECK_TYPES([struct mnt_id_req],,,[#include <linux/mount.h>]) 262AC_CHECK_TYPES([struct statmount],,,[#include <linux/mount.h>]) 263 264# Tools knobs 265 266# Bash 267AC_ARG_WITH([bash], 268 [AS_HELP_STRING([--with-bash], 269 [have the Bourne Again Shell interpreter])], 270 [with_bash=$withval], 271 [with_bash=no] 272) 273if test "x$with_bash" = xyes; then 274 AC_SUBST([WITH_BASH],["yes"]) 275else 276 AC_SUBST([WITH_BASH],["no"]) 277fi 278 279# metadata 280AC_ARG_ENABLE([metadata], 281 [AS_HELP_STRING([--disable-metadata], 282 [Disable metadata generation (both HTML and PDF, default no)])], 283 [], [enable_metadata=yes] 284) 285AC_ARG_ENABLE([metadata_html], 286 [AS_HELP_STRING([--disable-metadata-html], 287 [Disable metadata HTML generation (default no)])], 288 [], [enable_metadata_html=yes] 289) 290 291AC_ARG_ENABLE([metadata_pdf], 292 [AS_HELP_STRING([--enable-metadata-pdf], 293 [Enable metadata PDF generation (default no)])], 294 [], [enable_metadata_pdf=no] 295) 296 297AC_ARG_WITH([metadata_generator], 298 [AS_HELP_STRING([--with-metadata-generator=asciidoc|asciidoctor], 299 [Specify metadata generator to use (default autodetect)])], 300 [with_metadata_generator=$withval], 301 [with_metadata_generator=detect] 302) 303 304LTP_DOCPARSE 305 306# Expect 307AC_ARG_WITH([expect], 308 [AS_HELP_STRING([--with-expect], 309 [have the Tcl/expect library])], 310 [with_expect=$withval], 311 [with_expect=no] 312) 313if test "x$with_expect" = xyes; then 314 AC_SUBST([WITH_EXPECT],["yes"]) 315else 316 AC_SUBST([WITH_EXPECT],["no"]) 317fi 318 319# Numa 320AC_ARG_WITH([numa], 321 AS_HELP_STRING([--without-numa], 322 [without numa support]), 323 [with_numa=$withval], 324 [with_numa=yes] 325) 326 327# Perl 328AC_ARG_WITH([perl], 329 [AS_HELP_STRING([--with-perl], 330 [have a perl interpreter])], 331 [with_perl=$withval], 332 [with_perl=no] 333) 334if test "x$with_perl" = xyes; then 335 AC_SUBST([WITH_PERL],["yes"]) 336else 337 AC_SUBST([WITH_PERL],["no"]) 338fi 339 340# Python 341AC_ARG_WITH([python], 342 [AS_HELP_STRING([--with-python], 343 [have a python interpreter])], 344 [with_python=$withval], 345 [with_python=no] 346) 347if test "x$with_python" = xyes; then 348 AC_SUBST([WITH_PYTHON],["yes"]) 349else 350 AC_SUBST([WITH_PYTHON],["no"]) 351fi 352 353# TI RPC 354AC_ARG_WITH([tirpc], 355 AS_HELP_STRING([--without-tirpc], 356 [without libtirpc support]), 357 [with_tirpc=$withval], 358 [with_tirpc=yes] 359) 360# END tools knobs 361 362# Testsuites knobs 363 364AC_ARG_WITH([open-posix-testsuite], 365 [AS_HELP_STRING([--with-open-posix-testsuite], 366 [compile and install the open posix testsuite])], 367 [with_open_posix_testsuite=$withval], 368 [with_open_posix_testsuite=no] 369) 370 371# Allow setting the directoy, where the open posix testsuite is installed to. 372# If nothing is defined, we have to pass our default value to submake 373AC_ARG_WITH([open-posix-testdir], 374 [AS_HELP_STRING([--with-open-posix-testdir=<dir>], 375 [set the directory, where the open posix testsuite will be installed under prefix])], 376 [], 377 [ac_configure_args="$ac_configure_args --with-open-posix-testdir=testcases/open_posix_testsuite"] 378) 379 380if test "x$with_open_posix_testsuite" = xyes; then 381 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["yes"]) 382 AC_CONFIG_SUBDIRS([testcases/open_posix_testsuite]) 383else 384 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["no"]) 385fi 386 387# TODO: testcases/realtime requires bash and python. 388AC_ARG_WITH([realtime-testsuite], 389 [AS_HELP_STRING([--with-realtime-testsuite], 390 [unused, kept for compatibility reason])], 391 [with_realtime_testsuite=$withval], 392 [with_realtime_testsuite=no] 393) 394 395if test "x$with_realtime_testsuite" = xyes; then 396 AC_SUBST([WITH_REALTIME_TESTSUITE],["yes"]) 397else 398 AC_SUBST([WITH_REALTIME_TESTSUITE],["no"]) 399fi 400 401AC_CONFIG_COMMANDS([syscalls.h], [cd ${ac_top_srcdir}/include/lapi/syscalls; ./generate_syscalls.sh ../syscalls.h; cd - >/dev/null]) 402 403# custom functions 404# NOTE: don't create custom functions for simple checks, put them into this file 405LTP_CHECK_ACL_SUPPORT 406LTP_CHECK_ATOMIC_MEMORY_MODEL 407LTP_CHECK_BUILTIN_CLEAR_CACHE 408LTP_CHECK_CAPABILITY_SUPPORT 409LTP_CHECK_CC_WARN_OLDSTYLE 410LTP_CHECK_CRYPTO 411LTP_CHECK_FORTIFY_SOURCE 412LTP_CHECK_KERNEL_DEVEL 413LTP_CHECK_KEYUTILS_SUPPORT 414LTP_CHECK_LIBMNL 415LTP_CHECK_LINUXRANDOM 416LTP_CHECK_SELINUX 417LTP_CHECK_SYNC_ADD_AND_FETCH 418LTP_CHECK_SYSCALL_EVENTFD 419LTP_CHECK_SYSCALL_FCNTL 420LTP_CHECK_FSVERITY 421 422AX_CHECK_COMPILE_FLAG([-no-pie], [LTP_CFLAGS_NOPIE=1]) 423AX_CHECK_COMPILE_FLAG([-ffixed-ebp], [LTP_CFLAGS_FFIXED_EBP=1]) 424AC_SUBST([LTP_CFLAGS_NOPIE]) 425AC_SUBST([LTP_CFLAGS_FFIXED_EBP]) 426 427if test "x$with_numa" = xyes; then 428 LTP_CHECK_SYSCALL_NUMA 429 numa_error_msg="test requires libnuma development packages with LIBNUMA_API_VERSION >= 2" 430else 431 numa_error_msg="NUMA support was disabled during build" 432fi 433AC_DEFINE_UNQUOTED(NUMA_ERROR_MSG, ["$numa_error_msg"], [Error message when no NUMA support]) 434 435 436LTP_CHECK_SYSCALL_SIGNALFD 437LTP_CHECK_SYSCALL_UTIMENSAT 438LTP_CHECK_TASKSTATS 439test "x$with_tirpc" = xyes && LTP_CHECK_TIRPC 440LTP_DETECT_HOST_CPU 441 442AC_MSG_CHECKING([whether linker can handle KVM payloads]) 443ltp_backup_ldflags="$LDFLAGS" 444ltp_backup_flags="$[]_AC_LANG_PREFIX[]FLAGS" 445LDFLAGS="-T ${srcdir}/testcases/kernel/kvm/linker/${HOST_CPU}.lds" 446_AC_LANG_PREFIX[]FLAGS= 447AC_LINK_IFELSE([AC_LANG_PROGRAM()], 448 [ 449 AC_MSG_RESULT([yes]) 450 AC_SUBST([WITH_KVM_TESTSUITE],["yes"]) 451 have_kvm=yes 452 ], 453 [ 454 AC_MSG_RESULT([no]) 455 AC_SUBST([WITH_KVM_TESTSUITE],["no"]) 456 have_kvm=no 457 ]) 458_AC_LANG_PREFIX[]FLAGS="$ltp_backup_flags" 459LDFLAGS="$ltp_backup_ldflags" 460 461AC_OUTPUT 462 463cat << EOF 464 465TESTSUITES 466KVM testsuite: $have_kvm 467open posix testsuite: ${with_open_posix_testsuite:-no} 468TI-RPC testsuite: ${with_tirpc:-yes} 469 470LIBRARIES 471keyutils: ${have_keyutils:-yes} 472libacl: ${have_libacl:-no} 473libaio: ${have_libaio:-no} (aio: ${have_aio:-no}) 474libcap: $cap_libs (newer: ${has_newer_libcap:-no}) 475libcrypto: ${have_libcrypto:-no} (sha: ${have_sha:-no}) 476libmnl: ${have_libmnl:-yes} 477libnuma: ${have_libnuma:-no} (headers: ${have_numa_headers:-yes}, v2 headers: ${have_numa_headers_v2:-no}) 478libtirpc: ${have_libtirpc:-no} 479glibc SUN-RPC: ${have_rpc_glibc:-no} 480 481METADATA 482metadata generator: $with_metadata_generator 483HTML metadata: $with_metadata_html 484PDF metadata: $with_metadata_pdf 485EOF 486 487if test "x$with_realtime_testsuite" = xyes; then 488 AC_MSG_WARN([--with-realtime-testsuite has no effect and is kept for compatibilty reason. It will be removed in the future.]) 489fi 490