blob: 06be1c09417ac7dc98ec355586ff0d2ce2746fa1 [file] [log] [blame]
yaberauneya9913e822009-11-26 11:27:34 +00001AC_PREREQ(2.61)
Cyril Hrubis70d7e8c2015-09-15 12:50:31 +02002AC_INIT([ltp], [LTP_VERSION], [ltp@lists.linux.it])
yaberauneyaef772532009-10-09 17:55:43 +00003AC_CONFIG_AUX_DIR([.])
4AM_INIT_AUTOMAKE
subrata_modak3d8666c2008-11-11 08:31:27 +00005AC_CONFIG_HEADERS([include/config.h])
Cyril Hrubisedbae292014-07-15 14:57:27 +02006AC_CONFIG_MACRO_DIR([m4])
yaberauneyaef772532009-10-09 17:55:43 +00007AC_CONFIG_FILES([ \
8 include/mk/config.mk \
Cyril Hrubis63b65322016-04-20 18:23:53 +02009 include/mk/config-openposix.mk \
Garrett Cooper4f71cae2010-11-01 21:09:17 -070010 include/mk/features.mk \
yaberauneyaef772532009-10-09 17:55:43 +000011 lib/ltp.pc \
yaberauneyaef772532009-10-09 17:55:43 +000012 m4/Makefile \
yaberauneya0d39b832009-11-20 05:45:41 +000013 execltp \
vapierdf8759f2009-01-18 22:22:40 +000014])
subrata_modak3d8666c2008-11-11 08:31:27 +000015
Petr Vorelb6eab542020-10-05 15:30:44 +020016AC_ARG_VAR(HOSTCC, [The C compiler on the host])
17
Petr Vorel427b1be2018-02-14 23:27:54 +010018AM_MAINTAINER_MODE([enable])
19
yaberauneyaef772532009-10-09 17:55:43 +000020AC_CANONICAL_HOST
21
22AC_PROG_CC
yaberauneyaf7df1402009-10-17 02:24:20 +000023# <= 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, :)])
yaberauneyaef772532009-10-09 17:55:43 +000026AC_PROG_AR
27AC_PROG_LEX
28AC_PROG_RANLIB
yaberauneyaa4bed682009-12-05 23:45:55 +000029AC_DEFUN([AC_PROG_STRIP], [AC_CHECK_TOOL(STRIP, strip, :)])
30AC_PROG_STRIP
yaberauneyaef772532009-10-09 17:55:43 +000031AC_PROG_YACC
32
33AC_PREFIX_DEFAULT(/opt/ltp)
34
Petr Vorel452c5132020-01-29 19:26:27 +010035AC_CHECK_DECLS([IFLA_NET_NS_PID],,,[#include <linux/if_link.h>])
36AC_CHECK_DECLS([MADV_MERGEABLE],,,[#include <sys/mman.h>])
37AC_CHECK_DECLS([PR_CAPBSET_DROP, PR_CAPBSET_READ],,,[#include <sys/prctl.h>])
38
Petr Vorel2ebe5dd2020-09-02 14:43:06 +020039AC_CHECK_HEADERS_ONCE([ \
Petr Vorel452c5132020-01-29 19:26:27 +010040 asm/ldt.h \
yaberauneyaef772532009-10-09 17:55:43 +000041 ifaddrs.h \
Petr Vorelbc2568d2017-10-16 17:41:54 +020042 keyutils.h \
Petr Vorel66923c62017-10-12 20:33:19 +020043 linux/can.h \
Yang Xudf5ce332019-07-30 13:45:32 +080044 linux/cgroupstats.h \
Richard Palethorpea0ce4432018-07-05 16:56:33 +020045 linux/cryptouser.h \
Yang Xudf5ce332019-07-30 13:45:32 +080046 linux/dccp.h \
Petr Vorel452c5132020-01-29 19:26:27 +010047 linux/fs.h \
yaberauneyaef772532009-10-09 17:55:43 +000048 linux/genetlink.h \
Eric Biggersef851012019-03-18 10:13:22 -070049 linux/if_alg.h \
Richard Palethorpedb141702017-11-02 15:34:41 +010050 linux/if_ether.h \
Petr Vorelb6bf84c2020-02-17 15:22:27 +010051 linux/if_packet.h \
Yang Xudf5ce332019-07-30 13:45:32 +080052 linux/keyctl.h \
yaberauneyacb805c42009-12-22 23:10:41 +000053 linux/mempolicy.h \
yaberauneyaef772532009-10-09 17:55:43 +000054 linux/module.h \
55 linux/netlink.h \
Yang Xu3ddc2172019-05-23 10:54:00 +080056 linux/seccomp.h \
Yang Xufe9d9212019-07-12 17:54:35 +080057 linux/securebits.h \
Petr Vorelef12b902020-05-06 13:03:29 +020058 linux/tty.h \
Petr Vorel28a9cd82019-06-17 23:00:49 +020059 linux/types.h \
Christian Amannb3621af2019-03-19 09:07:32 +010060 linux/userfaultfd.h \
Xiao Yangbf8f1d72018-04-04 19:12:54 +080061 netinet/sctp.h \
Petr Vorel839128b2017-10-12 20:33:18 +020062 pthread.h \
yaberauneyaef772532009-10-09 17:55:43 +000063 sys/epoll.h \
Jan Karaf057c1c2013-11-20 23:43:13 +010064 sys/fanotify.h \
Petr Vorel839128b2017-10-12 20:33:18 +020065 sys/inotify.h \
yaberauneyaef772532009-10-09 17:55:43 +000066 sys/prctl.h \
Sandeep Patil524edfb2017-11-08 16:34:36 -080067 sys/shm.h \
Petr Vorel452c5132020-01-29 19:26:27 +010068 sys/timerfd.h \
Petr Vorel0ff33b32017-10-11 15:53:33 +020069 sys/ustat.h \
Petr Vorel2e7b8092019-07-06 22:51:06 +020070 sys/utsname.h \
Petr Vorel839128b2017-10-12 20:33:18 +020071 sys/xattr.h \
Yang Xu208f2312019-10-23 17:00:27 +080072 xfs/xqm.h \
yaberauneyaef772532009-10-09 17:55:43 +000073])
Petr Vorel452c5132020-01-29 19:26:27 +010074AC_CHECK_HEADERS(fts.h, [have_fts=1])
75AC_SUBST(HAVE_FTS_H, $have_fts)
yaberauneyaef772532009-10-09 17:55:43 +000076
Petr Vorel2ebe5dd2020-09-02 14:43:06 +020077AC_CHECK_FUNCS_ONCE([ \
Viresh Kumar1b0e8dd2020-03-20 09:54:02 +053078 clone3 \
Christian Amanna72f4b22019-05-06 12:54:57 +020079 copy_file_range \
Xiao Yang8fd49ce2019-04-05 15:55:39 +080080 epoll_pwait \
81 execveat \
82 fallocate \
83 fchownat \
Viresh Kumar9832fd92020-02-14 17:05:50 +053084 fsconfig \
85 fsmount \
86 fsopen \
87 fspick \
Xiao Yang8fd49ce2019-04-05 15:55:39 +080088 fstatat \
Cyril Hrubis6ab05d52020-06-26 11:57:27 +020089 getauxval \
Khem Raj6d9de5f2019-07-26 11:25:23 -070090 getdents \
91 getdents64 \
Viresh Kumar57a961f2020-01-28 08:31:33 +053092 io_pgetevents \
Vikas Kumar95399bc2020-03-13 11:50:58 +053093 io_uring_setup \
94 io_uring_register \
95 io_uring_enter \
Petr Vorelb6bf84c2020-02-17 15:22:27 +010096 kcmp \
Xiao Yang8fd49ce2019-04-05 15:55:39 +080097 mkdirat \
98 mknodat \
Petr Vorel452c5132020-01-29 19:26:27 +010099 modify_ldt \
Viresh Kumar9832fd92020-02-14 17:05:50 +0530100 move_mount \
Matthew Bobrowski02b39d82019-06-20 19:57:58 +1000101 name_to_handle_at \
Viresh Kumar9832fd92020-02-14 17:05:50 +0530102 open_tree \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800103 openat \
Viresh Kumar1b884d92020-03-16 12:06:15 +0530104 openat2 \
Viresh Kumar54151622020-01-27 14:07:48 +0530105 pidfd_open \
Christian Amanne3c82be2019-06-14 09:28:27 +0200106 pidfd_send_signal \
Yang Xudf5ce332019-07-30 13:45:32 +0800107 pkey_mprotect \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800108 preadv \
109 preadv2 \
Petr Vorel0ff33b32017-10-11 15:53:33 +0200110 profil \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800111 pwritev \
112 pwritev2 \
Alexey Kodanev652e02f2020-09-24 10:17:39 +0300113 rand_r \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800114 readlinkat \
Steve Muckle1010e922019-07-25 14:11:19 -0700115 recvmmsg \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800116 renameat \
117 renameat2 \
Yang Xu4c41cf72019-04-17 14:05:02 +0800118 sched_getcpu \
Steve Muckle1010e922019-07-25 14:11:19 -0700119 sendmmsg \
Cyril Hrubis7cd69c12020-03-18 16:37:54 +0100120 setns \
Xiao Yanga600c362019-04-05 15:46:24 +0800121 sigpending \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800122 splice \
Petr Vorel452c5132020-01-29 19:26:27 +0100123 statx \
Xiao Yang66c59e92019-04-05 17:12:50 +0800124 stime \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800125 sync_file_range \
Petr Vorelb6bf84c2020-02-17 15:22:27 +0100126 syncfs \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800127 tee \
Petr Vorel452c5132020-01-29 19:26:27 +0100128 timerfd_create \
129 timerfd_gettime \
130 timerfd_settime \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800131 unshare \
Petr Vorel0ff33b32017-10-11 15:53:33 +0200132 ustat \
Xiao Yang8fd49ce2019-04-05 15:55:39 +0800133 vmsplice \
Petr Vorel0ff33b32017-10-11 15:53:33 +0200134])
Petr Vorel452c5132020-01-29 19:26:27 +0100135AC_CHECK_FUNCS(mkdtemp,[],AC_MSG_ERROR(mkdtemp() not found!))
136
137AC_CHECK_MEMBERS([struct fanotify_event_info_fid.fsid.__val],,,[#include <sys/fanotify.h>])
138AC_CHECK_MEMBERS([struct perf_event_mmap_page.aux_head],,,[#include <linux/perf_event.h>])
139AC_CHECK_MEMBERS([struct sigaction.sa_sigaction],[],[],[#include <signal.h>])
140
141AC_CHECK_MEMBERS([struct utsname.domainname],,,[
142#define _GNU_SOURCE
143#include <sys/utsname.h>
144])
145
146AC_CHECK_TYPES([enum kcmp_type],,,[#include <linux/kcmp.h>])
147AC_CHECK_TYPES([struct acct_v3],,,[#include <sys/acct.h>])
Yang Xu88412592020-08-21 18:18:39 +0800148AC_CHECK_TYPES([struct af_alg_iv, struct sockaddr_alg],,,[# include <linux/if_alg.h>])
Petr Vorela26fedd2020-08-28 12:46:42 +0200149AC_CHECK_TYPES([struct fanotify_event_info_fid, struct fanotify_event_info_header],,,[#include <sys/fanotify.h>])
Petr Vorel452c5132020-01-29 19:26:27 +0100150AC_CHECK_TYPES([struct file_dedupe_range],,,[#include <linux/fs.h>])
151AC_CHECK_TYPES([struct fs_quota_statv],,,[#include <xfs/xqm.h>])
152AC_CHECK_TYPES([struct if_nextdqblk],,,[#include <linux/quota.h>])
153AC_CHECK_TYPES([struct iovec],,,[#include <sys/uio.h>])
Viresh Kumar3e1fc062020-05-22 12:46:04 +0530154AC_CHECK_TYPES([struct ipc64_perm],,,[#include <sys/ipcbuf.h>])
Yang Xu18987542020-06-11 18:35:13 +0800155AC_CHECK_TYPES([struct loop_config],,,[#include <linux/loop.h>])
Petr Vorel452c5132020-01-29 19:26:27 +0100156
157AC_CHECK_TYPES([struct mmsghdr],,,[
158#define _GNU_SOURCE
159#include <sys/types.h>
160#include <sys/socket.h>
161])
162
Petr Vorela26fedd2020-08-28 12:46:42 +0200163AC_CHECK_TYPES([struct msqid64_ds],,,[#include <sys/msgbuf.h>])
164
Petr Vorel452c5132020-01-29 19:26:27 +0100165AC_CHECK_TYPES([struct rlimit64],,,[
166#define _LARGEFILE64_SOURCE
167#include <sys/resource.h>
168])
169
Petr Vorela26fedd2020-08-28 12:46:42 +0200170AC_CHECK_TYPES([struct semid64_ds],,,[#include <sys/sem.h>])
171AC_CHECK_TYPES([struct shmid64_ds],,,[#include <sys/shmbuf.h>])
172
Petr Vorel452c5132020-01-29 19:26:27 +0100173AC_CHECK_TYPES([struct statx, struct statx_timestamp],,,[
174#define _GNU_SOURCE
175#include <sys/stat.h>
176])
177
178AC_CHECK_TYPES([struct termio],,,[#include <sys/ioctl.h>])
Petr Vorela26fedd2020-08-28 12:46:42 +0200179AC_CHECK_TYPES([struct tpacket_req3],,,[# include <linux/if_packet.h>])
180AC_CHECK_TYPES([struct user_desc, struct modify_ldt_ldt_s],[],[],[#include <asm/ldt.h>])
Petr Vorel452c5132020-01-29 19:26:27 +0100181
182AC_CHECK_TYPES([struct xt_entry_match, struct xt_entry_target],,,[
183#include <sys/types.h>
184#include <netinet/in.h>
185#include <net/if.h>
186#include <limits.h>
187#include <linux/netfilter_ipv4/ip_tables.h>
188])
Petr Vorel25b35652017-10-02 15:33:41 +0200189
Garrett Cooper52288dc2010-11-16 22:01:43 -0800190# Tools knobs
191
Petr Vorel31085e02020-10-05 15:30:53 +0200192# Bash
Garrett Cooper52288dc2010-11-16 22:01:43 -0800193AC_ARG_WITH([bash],
194 [AC_HELP_STRING([--with-bash],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100195 [have the Bourne Again Shell interpreter])],
196 [with_bash=$withval],
197 [with_bash=no]
Garrett Cooper52288dc2010-11-16 22:01:43 -0800198)
199if test "x$with_bash" = xyes; then
200 AC_SUBST([WITH_BASH],["yes"])
201else
202 AC_SUBST([WITH_BASH],["no"])
203fi
204
Petr Vorel31085e02020-10-05 15:30:53 +0200205# metadata
206AC_ARG_ENABLE([metadata],
207 [AC_HELP_STRING([--disable-metadata],
208 [Disable metadata generation (both HTML and PDF, default no)])],
209 [], [enable_metadata=yes]
210)
211AC_ARG_ENABLE([metadata_html],
212 [AC_HELP_STRING([--disable-metadata-html],
213 [Disable metadata HTML generation (default no)])],
214 [], [enable_metadata_html=yes]
215)
216
217AC_ARG_ENABLE([metadata_pdf],
218 [AC_HELP_STRING([--enable-metadata-pdf],
219 [Enable metadata PDF generation (default no)])],
220 [], [enable_metadata_pdf=no]
221)
222
223AC_ARG_WITH([metadata_generator],
224 [AC_HELP_STRING([--with-metadata-generator=asciidoc|asciidoctor],
225 [Specify metadata generator to use (default autodetect)])],
226 [with_metadata_generator=$withval],
227 [with_metadata_generator=detect]
228)
229
230LTP_DOCPARSE
231
232# Expect
Garrett Cooper52288dc2010-11-16 22:01:43 -0800233AC_ARG_WITH([expect],
234 [AC_HELP_STRING([--with-expect],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100235 [have the Tcl/expect library])],
236 [with_expect=$withval],
Garrett Cooper52288dc2010-11-16 22:01:43 -0800237 [with_expect=no]
238)
239if test "x$with_expect" = xyes; then
240 AC_SUBST([WITH_EXPECT],["yes"])
241else
242 AC_SUBST([WITH_EXPECT],["no"])
243fi
244
Anders Roxell39a85a12018-02-05 11:56:04 +0100245# Numa
246AC_ARG_WITH([numa],
247 AC_HELP_STRING([--without-numa],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100248 [without numa support]),
249 [with_numa=$withval],
Anders Roxell39a85a12018-02-05 11:56:04 +0100250 [with_numa=yes]
251)
252
Garrett Cooper52288dc2010-11-16 22:01:43 -0800253# Perl
254AC_ARG_WITH([perl],
255 [AC_HELP_STRING([--with-perl],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100256 [have a perl interpreter])],
257 [with_perl=$withval],
Garrett Cooper52288dc2010-11-16 22:01:43 -0800258 [with_perl=no]
259)
260if test "x$with_perl" = xyes; then
261 AC_SUBST([WITH_PERL],["yes"])
262else
263 AC_SUBST([WITH_PERL],["no"])
264fi
265
266# Python
267AC_ARG_WITH([python],
268 [AC_HELP_STRING([--with-python],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100269 [have a python interpreter])],
270 [with_python=$withval],
Garrett Cooper52288dc2010-11-16 22:01:43 -0800271 [with_python=no]
272)
273if test "x$with_python" = xyes; then
274 AC_SUBST([WITH_PYTHON],["yes"])
275else
276 AC_SUBST([WITH_PYTHON],["no"])
277fi
Anders Roxell7b258152018-02-14 13:04:31 +0100278
279# TI RPC
280AC_ARG_WITH([tirpc],
281 AC_HELP_STRING([--without-tirpc],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100282 [without libtirpc support]),
283 [with_tirpc=$withval],
Anders Roxell7b258152018-02-14 13:04:31 +0100284 [with_tirpc=yes]
285)
Garrett Cooper52288dc2010-11-16 22:01:43 -0800286# END tools knobs
287
288# Testsuites knobs
289
Garrett Cooper92dfd5b2010-11-16 20:02:26 -0800290AC_ARG_WITH([open-posix-testsuite],
291 [AC_HELP_STRING([--with-open-posix-testsuite],
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100292 [compile and install the open posix testsuite])],
293 [with_open_posix_testsuite=$withval],
294 [with_open_posix_testsuite=no]
Garrett Cooper92dfd5b2010-11-16 20:02:26 -0800295)
296if test "x$with_open_posix_testsuite" = xyes; then
297 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["yes"])
298else
299 AC_SUBST([WITH_OPEN_POSIX_TESTSUITE],["no"])
300fi
301
Joerg Vehlow9e7f5682019-11-13 11:41:49 +0100302# TODO: testcases/realtime requires bash and python.
303AC_ARG_WITH([realtime-testsuite],
304 [AC_HELP_STRING([--with-realtime-testsuite],
305 [compile and install the realtime testsuite])],
306 [with_realtime_testsuite=$withval],
307 [with_realtime_testsuite=no]
308)
309
Garrett Cooper92dfd5b2010-11-16 20:02:26 -0800310if test "x$with_realtime_testsuite" = xyes; then
311 AC_SUBST([WITH_REALTIME_TESTSUITE],["yes"])
Garrett Cooper52288dc2010-11-16 22:01:43 -0800312 # Run configure on testcases/realtime as well.
313 AC_CONFIG_SUBDIRS([testcases/realtime])
Garrett Cooper92dfd5b2010-11-16 20:02:26 -0800314else
315 AC_SUBST([WITH_REALTIME_TESTSUITE],["no"])
316fi
317
Li Wang8d47fa72017-10-26 16:51:15 +0800318AC_CONFIG_COMMANDS([syscalls.h], [cd ${ac_top_srcdir}/include/lapi/syscalls; ./regen.sh])
Cyril Hrubisa07008f2017-06-14 17:25:09 +0200319
Petr Vorela50338c2019-04-12 15:48:53 +0200320# custom functions
Petr Vorel452c5132020-01-29 19:26:27 +0100321# NOTE: don't create custom functions for simple checks, put them into this file
Petr Vorela50338c2019-04-12 15:48:53 +0200322LTP_CHECK_ACL_SUPPORT
323LTP_CHECK_ATOMIC_MEMORY_MODEL
324LTP_CHECK_BUILTIN_CLEAR_CACHE
yaberauneyaef772532009-10-09 17:55:43 +0000325LTP_CHECK_CAPABILITY_SUPPORT
Petr Vorela50338c2019-04-12 15:48:53 +0200326LTP_CHECK_CC_WARN_OLDSTYLE
327LTP_CHECK_CLONE_SUPPORTS_7_ARGS
yaberauneyaef772532009-10-09 17:55:43 +0000328LTP_CHECK_CRYPTO
Petr Vorela50338c2019-04-12 15:48:53 +0200329LTP_CHECK_FORTIFY_SOURCE
Petr Vorela50338c2019-04-12 15:48:53 +0200330LTP_CHECK_KERNEL_DEVEL
331LTP_CHECK_KEYUTILS_SUPPORT
Petr Vorel553ca8e2019-11-01 14:48:16 +0100332LTP_CHECK_LIBMNL
yaberauneyaef772532009-10-09 17:55:43 +0000333LTP_CHECK_LINUX_PTRACE
Petr Vorela50338c2019-04-12 15:48:53 +0200334LTP_CHECK_LINUXRANDOM
Petr Vorela50338c2019-04-12 15:48:53 +0200335LTP_CHECK_MREMAP_FIXED
Mike Frysinger9bd940b2010-08-17 17:22:03 -0400336LTP_CHECK_NOMMU_LINUX
yaberauneyaef772532009-10-09 17:55:43 +0000337LTP_CHECK_SELINUX
Jan Stancekf61391e2016-04-13 13:09:23 +0200338LTP_CHECK_SYNC_ADD_AND_FETCH
Petr Vorela50338c2019-04-12 15:48:53 +0200339LTP_CHECK_SYSCALL_EVENTFD
340LTP_CHECK_SYSCALL_FCNTL
Xing Gua3bfea22014-06-17 15:26:30 +0800341
Petr Vorelf4176722018-02-07 11:29:42 +0100342if test "x$with_numa" = xyes; then
343 LTP_CHECK_SYSCALL_NUMA
344 numa_error_msg="test requires libnuma >= 2 and it's development packages"
345else
346 numa_error_msg="NUMA support was disabled during build"
347fi
348AC_DEFINE_UNQUOTED(NUMA_ERROR_MSG, ["$numa_error_msg"], [Error message when no NUMA support])
349
Christian Amanne3c82be2019-06-14 09:28:27 +0200350
Petr Vorela50338c2019-04-12 15:48:53 +0200351LTP_CHECK_SYSCALL_PERF_EVENT_OPEN
Petr Vorela50338c2019-04-12 15:48:53 +0200352LTP_CHECK_SYSCALL_SIGNALFD
353LTP_CHECK_SYSCALL_UTIMENSAT
354LTP_CHECK_TASKSTATS
Petr Vorela50338c2019-04-12 15:48:53 +0200355test "x$with_tirpc" = xyes && LTP_CHECK_TIRPC
Petr Vorela50338c2019-04-12 15:48:53 +0200356LTP_DETECT_HOST_CPU
357
subrata_modak3d8666c2008-11-11 08:31:27 +0000358AC_OUTPUT