1AC_PREREQ(2.61) 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 execltp \ 14]) 15 16AC_ARG_VAR(HOSTCC, [The C compiler on the host]) 17 18AM_MAINTAINER_MODE([enable]) 19 20AC_CANONICAL_HOST 21 22AC_PROG_CC 23# <= autoconf 2.61 doesn't have AC_PROG_AR, but 2.63 has it. Not sure about 24# 2.62. 25AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)]) 26AC_PROG_AR 27AC_PROG_LEX 28AC_PROG_RANLIB 29AC_DEFUN([AC_PROG_STRIP], [AC_CHECK_TOOL(STRIP, strip, :)]) 30AC_PROG_STRIP 31AC_PROG_YACC 32 33m4_ifndef([PKG_CHECK_EXISTS], 34 [m4_fatal([must install pkg-config or pkgconfig and pkg.m4 macro (usual dependency), see INSTALL])]) 35 36AC_PREFIX_DEFAULT(/opt/ltp) 37 38AC_CHECK_DECLS([IFLA_NET_NS_PID],,,[#include <linux/if_link.h>]) 39AC_CHECK_DECLS([MADV_MERGEABLE],,,[#include <sys/mman.h>]) 40AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ],,,[#include <sys/prctl.h>]) 41AC_CHECK_DECLS([SEM_STAT_ANY],,,[#include <sys/sem.h>]) 42 43AC_CHECK_HEADERS_ONCE([ \ 44 asm/ldt.h \ 45 ifaddrs.h \ 46 keyutils.h \ 47 linux/can.h \ 48 linux/cgroupstats.h \ 49 linux/cryptouser.h \ 50 linux/close_range.h \ 51 linux/dccp.h \ 52 linux/fs.h \ 53 linux/genetlink.h \ 54 linux/if_alg.h \ 55 linux/if_ether.h \ 56 linux/if_packet.h \ 57 linux/io_uring.h \ 58 linux/keyctl.h \ 59 linux/mempolicy.h \ 60 linux/module.h \ 61 linux/netlink.h \ 62 linux/openat2.h \ 63 linux/seccomp.h \ 64 linux/securebits.h \ 65 linux/tty.h \ 66 linux/types.h \ 67 linux/userfaultfd.h \ 68 netinet/sctp.h \ 69 pthread.h \ 70 sys/epoll.h \ 71 sys/fanotify.h \ 72 sys/inotify.h \ 73 sys/prctl.h \ 74 sys/shm.h \ 75 sys/timerfd.h \ 76 sys/ustat.h \ 77 sys/utsname.h \ 78 sys/xattr.h \ 79 xfs/xqm.h \ 80]) 81AC_CHECK_HEADERS(fts.h, [have_fts=1]) 82AC_SUBST(HAVE_FTS_H, $have_fts) 83 84AC_CHECK_FUNCS_ONCE([ \ 85 clone3 \ 86 close_range \ 87 copy_file_range \ 88 epoll_pwait \ 89 execveat \ 90 fallocate \ 91 fchownat \ 92 fsconfig \ 93 fsmount \ 94 fsopen \ 95 fspick \ 96 fstatat \ 97 getauxval \ 98 getdents \ 99 getdents64 \ 100 io_pgetevents \ 101 io_uring_setup \ 102 io_uring_register \ 103 io_uring_enter \ 104 kcmp \ 105 mallinfo \ 106 mallopt \ 107 mkdirat \ 108 mknodat \ 109 modify_ldt \ 110 move_mount \ 111 name_to_handle_at \ 112 open_tree \ 113 openat \ 114 openat2 \ 115 pidfd_open \ 116 pidfd_send_signal \ 117 pkey_mprotect \ 118 preadv \ 119 preadv2 \ 120 profil \ 121 pwritev \ 122 pwritev2 \ 123 rand_r \ 124 readlinkat \ 125 recvmmsg \ 126 renameat \ 127 renameat2 \ 128 sched_getcpu \ 129 sendmmsg \ 130 setns \ 131 sigpending \ 132 splice \ 133 statx \ 134 stime \ 135 sync_file_range \ 136 syncfs \ 137 tee \ 138 timerfd_create \ 139 timerfd_gettime \ 140 timerfd_settime \ 141 unshare \ 142 ustat \ 143 vmsplice \ 144]) 145AC_CHECK_FUNCS(mkdtemp,[],AC_MSG_ERROR(mkdtemp() not found!)) 146 147AC_CHECK_MEMBERS([struct fanotify_event_info_fid.fsid.__val],,,[#include <sys/fanotify.h>]) 148AC_CHECK_MEMBERS([struct perf_event_mmap_page.aux_head],,,[#include <linux/perf_event.h>]) 149AC_CHECK_MEMBERS([struct sigaction.sa_sigaction],[],[],[#include <signal.h>]) 150 151AC_CHECK_MEMBERS([struct utsname.domainname],,,[ 152#define _GNU_SOURCE 153#include <sys/utsname.h> 154]) 155 156AC_CHECK_TYPES([enum kcmp_type],,,[#include <linux/kcmp.h>]) 157AC_CHECK_TYPES([struct acct_v3],,,[#include <sys/acct.h>]) 158AC_CHECK_TYPES([struct af_alg_iv, struct sockaddr_alg],,,[# include <linux/if_alg.h>]) 159AC_CHECK_TYPES([struct clone_args],,,[#include <sched.h>]) 160AC_CHECK_TYPES([struct fanotify_event_info_fid, struct fanotify_event_info_header],,,[#include <sys/fanotify.h>]) 161AC_CHECK_TYPES([struct file_dedupe_range],,,[#include <linux/fs.h>]) 162 163AC_CHECK_TYPES([struct file_handle],,,[ 164#define _GNU_SOURCE 165#include <fcntl.h> 166]) 167 168AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>]) 169AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>]) 170AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>]) 171AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>]) 172AC_CHECK_TYPES([struct loop_config],,,[#include <linux/loop.h>]) 173 174AC_CHECK_TYPES([struct __kernel_itimerspec],,,[#include <linux/time_types.h>]) 175AC_CHECK_TYPES([struct __kernel_old_timespec],,,[#include <linux/time_types.h>]) 176AC_CHECK_TYPES([struct __kernel_old_timeval],,,[#include <linux/time_types.h>]) 177AC_CHECK_TYPES([struct __kernel_timespec],,,[#include <linux/time_types.h>]) 178 179AC_CHECK_TYPES([struct __kernel_timex],,,[#include <sys/timex.h>]) 180AC_CHECK_TYPES([struct __kernel_timex_timeval],,,[#include <sys/timex.h>]) 181 182AC_CHECK_TYPES([struct mmsghdr],,,[ 183#define _GNU_SOURCE 184#include <sys/types.h> 185#include <sys/socket.h> 186]) 187 188AC_CHECK_TYPES([struct msqid64_ds],,,[#include <sys/msgbuf.h>]) 189 190AC_CHECK_TYPES([struct rlimit64],,,[ 191#define _LARGEFILE64_SOURCE 192#include <sys/resource.h> 193]) 194 195AC_CHECK_TYPES([struct semun],,,[#include <sys/sem.h>]) 196AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>]) 197AC_CHECK_TYPES([struct shmid64_ds],,,[#include <sys/shmbuf.h>]) 198 199AC_CHECK_TYPES([struct statx, struct statx_timestamp],,,[ 200#define _GNU_SOURCE 201#include <sys/stat.h> 202]) 203 204AC_CHECK_TYPES([struct termio],,,[#include <sys/ioctl.h>]) 205AC_CHECK_TYPES([struct tpacket_req3],,,[# include <linux/if_packet.h>]) 206AC_CHECK_TYPES([struct user_desc, struct modify_ldt_ldt_s],[],[],[#include <asm/ldt.h>]) 207 208AC_CHECK_TYPES([struct xt_entry_match, struct xt_entry_target],,,[ 209#include <sys/types.h> 210#include <netinet/in.h> 211#include <net/if.h> 212#include <limits.h> 213#include <linux/netfilter_ipv4/ip_tables.h> 214]) 215 216# Tools knobs 217 218# Bash 219AC_ARG_WITH([bash], 220 [AC_HELP_STRING([--with-bash], 221 [have the Bourne Again Shell interpreter])], 222 [with_bash=$withval], 223 [with_bash=no] 224) 225if test "x$with_bash" = xyes; then 226 AC_SUBST([WITH_BASH],["yes"]) 227else 228 AC_SUBST([WITH_BASH],["no"]) 229fi 230 231# metadata 232AC_ARG_ENABLE([metadata], 233 [AC_HELP_STRING([--disable-metadata], 234 [Disable metadata generation (both HTML and PDF, default no)])], 235 [], [enable_metadata=yes] 236) 237AC_ARG_ENABLE([metadata_html], 238 [AC_HELP_STRING([--disable-metadata-html], 239 [Disable metadata HTML generation (default no)])], 240 [], [enable_metadata_html=yes] 241) 242 243AC_ARG_ENABLE([metadata_pdf], 244 [AC_HELP_STRING([--enable-metadata-pdf], 245 [Enable metadata PDF generation (default no)])], 246 [], [enable_metadata_pdf=no] 247) 248 249AC_ARG_WITH([metadata_generator], 250 [AC_HELP_STRING([--with-metadata-generator=asciidoc|asciidoctor], 251 [Specify metadata generator to use (default autodetect)])], 252 [with_metadata_generator=$withval], 253 [with_metadata_generator=detect] 254) 255 256LTP_DOCPARSE 257 258# Expect 259AC_ARG_WITH([expect], 260 [AC_HELP_STRING([--with-expect], 261 [have the Tcl/expect library])], 262 [with_expect=$withval], 263 [with_expect=no] 264) 265if test "x$with_expect" = xyes; then 266 AC_SUBST([WITH_EXPECT],["yes"]) 267else 268 AC_SUBST([WITH_EXPECT],["no"]) 269fi 270 271# Numa 272AC_ARG_WITH([numa], 273 AC_HELP_STRING([--without-numa], 274 [without numa support]), 275 [with_numa=$withval], 276 [with_numa=yes] 277) 278 279# Perl 280AC_ARG_WITH([perl], 281 [AC_HELP_STRING([--with-perl], 282 [have a perl interpreter])], 283 [with_perl=$withval], 284 [with_perl=no] 285) 286if test "x$with_perl" = xyes; then 287 AC_SUBST([WITH_PERL],["yes"]) 288else 289 AC_SUBST([WITH_PERL],["no"]) 290fi 291 292# Python 293AC_ARG_WITH([python], 294 [AC_HELP_STRING([--with-python], 295 [have a python interpreter])], 296 [with_python=$withval], 297 [with_python=no] 298) 299if test "x$with_python" = xyes; then 300 AC_SUBST([WITH_PYTHON],["yes"]) 301else 302 AC_SUBST([WITH_PYTHON],["no"]) 303fi 304 305# TI RPC 306AC_ARG_WITH([tirpc], 307 AC_HELP_STRING([--without-tirpc], 308 [without libtirpc support]), 309 [with_tirpc=$withval], 310 [with_tirpc=yes] 311) 312# END tools knobs 313 314# Testsuites knobs 315 316AC_ARG_WITH([open-posix-testsuite], 317 [AC_HELP_STRING([--with-open-posix-testsuite], 318 [compile and install the open posix testsuite])], 319 [with_open_posix_testsuite=$withval], 320 [with_open_posix_testsuite=no] 321) 322if test "x$with_open_posix_testsuite" = xyes; then 323 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["yes"]) 324else 325 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["no"]) 326fi 327 328# TODO: testcases/realtime requires bash and python. 329AC_ARG_WITH([realtime-testsuite], 330 [AC_HELP_STRING([--with-realtime-testsuite], 331 [compile and install the realtime testsuite])], 332 [with_realtime_testsuite=$withval], 333 [with_realtime_testsuite=no] 334) 335 336if test "x$with_realtime_testsuite" = xyes; then 337 AC_SUBST([WITH_REALTIME_TESTSUITE],["yes"]) 338 # Run configure on testcases/realtime as well. 339 AC_CONFIG_SUBDIRS([testcases/realtime]) 340else 341 AC_SUBST([WITH_REALTIME_TESTSUITE],["no"]) 342fi 343 344AC_CONFIG_COMMANDS([syscalls.h], [cd ${ac_top_srcdir}/include/lapi/syscalls; ./regen.sh]) 345 346# custom functions 347# NOTE: don't create custom functions for simple checks, put them into this file 348LTP_CHECK_ACL_SUPPORT 349LTP_CHECK_ATOMIC_MEMORY_MODEL 350LTP_CHECK_BUILTIN_CLEAR_CACHE 351LTP_CHECK_CAPABILITY_SUPPORT 352LTP_CHECK_CC_WARN_OLDSTYLE 353LTP_CHECK_CLONE_SUPPORTS_7_ARGS 354LTP_CHECK_CRYPTO 355LTP_CHECK_FORTIFY_SOURCE 356LTP_CHECK_KERNEL_DEVEL 357LTP_CHECK_KEYUTILS_SUPPORT 358LTP_CHECK_LIBMNL 359LTP_CHECK_LINUX_PTRACE 360LTP_CHECK_LINUXRANDOM 361LTP_CHECK_MREMAP_FIXED 362LTP_CHECK_NOMMU_LINUX 363LTP_CHECK_SELINUX 364LTP_CHECK_SYNC_ADD_AND_FETCH 365LTP_CHECK_SYSCALL_EVENTFD 366LTP_CHECK_SYSCALL_FCNTL 367 368if test "x$with_numa" = xyes; then 369 LTP_CHECK_SYSCALL_NUMA 370 numa_error_msg="test requires libnuma development packages with LIBNUMA_API_VERSION >= 2" 371else 372 numa_error_msg="NUMA support was disabled during build" 373fi 374AC_DEFINE_UNQUOTED(NUMA_ERROR_MSG, ["$numa_error_msg"], [Error message when no NUMA support]) 375 376 377LTP_CHECK_SYSCALL_PERF_EVENT_OPEN 378LTP_CHECK_SYSCALL_SIGNALFD 379LTP_CHECK_SYSCALL_UTIMENSAT 380LTP_CHECK_TASKSTATS 381test "x$with_tirpc" = xyes && LTP_CHECK_TIRPC 382LTP_DETECT_HOST_CPU 383 384AC_OUTPUT 385