# Automake input for strace tests.
#
# Copyright (c) 2011-2016 Dmitry V. Levin <ldv@altlinux.org>
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

OS = linux
ARCH = @arch@
MPERS_NAME =
ARCH_MFLAGS =
AM_CFLAGS = $(WARN_CFLAGS)
AM_CPPFLAGS = $(ARCH_MFLAGS) \
	      -I$(builddir) \
	      -I$(top_builddir)/$(OS)/$(ARCH) \
	      -I$(top_srcdir)/$(OS)/$(ARCH) \
	      -I$(top_builddir)/$(OS) \
	      -I$(top_srcdir)/$(OS) \
	      -I$(top_builddir) \
	      -I$(top_srcdir)
AM_LDFLAGS = $(ARCH_MFLAGS)

libtests_a_SOURCES = \
	errno2name.c \
	error_msg.c \
	get_page_size.c \
	hexdump_strdup.c \
	hexquote_strndup.c \
	inode_of_sockfd.c \
	overflowuid.c \
	print_quoted_string.c \
	tail_alloc.c \
	tests.h \
	tprintf.c \
	# end of libtests_a_SOURCES
libtests_a_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
check_LIBRARIES = libtests.a
LDADD = libtests.a

check_PROGRAMS = \
	_newselect \
	access \
	acct \
	adjtimex \
	aio \
	alarm \
	attach-f-p \
	attach-p-cmd-cmd \
	attach-p-cmd-p \
	bpf \
	caps \
	chmod \
	chown \
	chown32 \
	chroot \
	clock_adjtime \
	clock_nanosleep \
	clock_xettime \
	copy_file_range \
	count-f \
	creat \
	dup \
	dup2 \
	dup3 \
	epoll_create \
	epoll_create1 \
	epoll_ctl \
	epoll_wait \
	eventfd \
	execve \
	execve-v \
	execveat \
	execveat-v \
	faccessat \
	fanotify_mark \
	fchdir \
	fchmod \
	fchmodat \
	fchown \
	fchown32 \
	fchownat \
	fcntl \
	fcntl64 \
	fdatasync \
	file_handle \
	filter-unavailable \
	flock \
	fork-f \
	fstat \
	fstat64 \
	fstatat64 \
	fsync \
	ftruncate \
	ftruncate64 \
	getcwd \
	getdents \
	getdents64 \
	getegid \
	getegid32 \
	geteuid \
	geteuid32 \
	getgid \
	getgid32 \
	getgroups \
	getgroups32 \
	getpgrp \
	getrandom \
	getresgid \
	getresgid32 \
	getresuid \
	getresuid32 \
	getrusage \
	getsid \
	getuid \
	getuid32 \
	getxxid \
	inet-cmsg \
	ioctl \
	ioperm \
	iopl \
	ip_mreq \
	ipc_msg \
	ipc_msgbuf \
	ipc_sem \
	ipc_shm \
	ksysent \
	lchown \
	lchown32 \
	linkat \
	llseek \
	lseek \
	lstat \
	lstat64 \
	membarrier \
	memfd_create \
	mincore \
	mkdir \
	mkdirat \
	mknod \
	mlock2 \
	mlockall \
	mmap \
	mmap64 \
	mmsg \
	mq \
	nanosleep \
	net-accept-connect \
	net-y-unix \
	net-yy-inet \
	net-yy-unix \
	netlink_inet_diag \
	netlink_unix_diag \
	newfstatat \
	old_mmap \
	oldselect \
	open \
	openat \
	pc \
	personality \
	pipe \
	poll \
	ppoll \
	prctl-seccomp-filter-v \
	prctl-seccomp-strict \
	pread64-pwrite64 \
	preadv \
	preadv-pwritev \
	pselect6 \
	pwritev \
	read-write \
	readdir \
	readlink \
	readlinkat \
	readv \
	recvmsg \
	rename \
	renameat\
	restart_syscall \
	rmdir \
	rt_sigpending \
	rt_sigprocmask \
	rt_sigqueueinfo \
	rt_sigsuspend \
	rt_sigtimedwait \
	rt_tgsigqueueinfo \
	sched_get_priority_mxx \
	sched_rr_get_interval \
	sched_xetaffinity \
	sched_xetattr \
	sched_xetparam \
	sched_xetscheduler \
	scm_rights \
	seccomp-filter \
	seccomp-filter-v \
	seccomp-strict \
	select \
	semop \
	sendfile \
	sendfile64 \
	set_ptracer_any \
	setdomainname \
	setfsgid \
	setfsgid32 \
	setfsuid \
	setfsuid32 \
	setgid \
	setgid32 \
	setgroups \
	setgroups32 \
	sethostname \
	setregid \
	setregid32 \
	setresgid \
	setresgid32 \
	setresuid \
	setresuid32 \
	setreuid \
	setreuid32 \
	setuid \
	setuid32 \
	shmxt \
	sigaction \
	sigaltstack \
	signalfd \
	sigreturn \
	sleep \
	splice \
	stack-fcall \
	stat \
	stat64 \
	statfs \
	swap \
	symlink \
	symlinkat \
	sync_file_range \
	sync_file_range2 \
	sysinfo \
	syslog \
	tee \
	time \
	timer_create \
	timer_xettime \
	timerfd_xettime \
	times \
	times-fail \
	truncate \
	truncate64 \
	uio \
	umask \
	umount \
	umount2 \
	umovestr \
	umovestr2 \
	uname \
	unix-pair-send-recv \
	unlinkat \
	userfaultfd \
	utime \
	utimensat \
	vfork-f \
	vmsplice \
	wait \
	xattr \
	xet_robust_list \
	xetitimer \
	xetpgid \
	xetpriority \
	xettimeofday \
	# end of check_PROGRAMS

attach_f_p_LDADD = -lrt -lpthread $(LDADD)
clock_xettime_LDADD = -lrt $(LDADD)
count_f_LDADD = -lpthread $(LDADD)
filter_unavailable_LDADD = -lpthread $(LDADD)
fstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
fstatat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
ftruncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
lstat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
mmap64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
mq_LDADD = -lrt $(LDADD)
newfstatat_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
pc_LDADD = $(dl_LIBS) $(LDADD)
pread64_pwrite64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
preadv_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
preadv_pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
pwritev_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
stat64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
statfs_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
times_LDADD = -lrt $(LDADD)
truncate64_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64
uio_CPPFLAGS = $(AM_CPPFLAGS) -D_FILE_OFFSET_BITS=64

stack_fcall_SOURCES = stack-fcall.c \
	stack-fcall-0.c stack-fcall-1.c stack-fcall-2.c stack-fcall-3.c

if USE_LIBUNWIND
LIBUNWIND_TESTS = strace-k.test
else
LIBUNWIND_TESTS =
endif

DECODER_TESTS = \
	_newselect.test \
	access.test \
	acct.test \
	adjtimex.test \
	aio.test \
	alarm.test \
	bpf.test \
	caps.test \
	chmod.test \
	chown.test \
	chown32.test \
	chroot.test \
	clock_adjtime.test \
	clock_nanosleep.test \
	clock_xettime.test \
	copy_file_range.test \
	creat.test \
	dup.test \
	dup2.test \
	dup3.test \
	epoll_create.test \
	epoll_create1.test \
	epoll_ctl.test \
	epoll_wait.test \
	eventfd.test \
	execve-v.test \
	execve.test \
	execveat-v.test \
	execveat.test \
	faccessat.test \
	fanotify_mark.test \
	fchdir.test \
	fchmod.test \
	fchmodat.test \
	fchown.test \
	fchown32.test \
	fchownat.test \
	fcntl.test \
	fcntl64.test \
	fdatasync.test \
	file_handle.test \
	flock.test \
	fstat.test \
	fstat64.test \
	fstatat64.test \
	fsync.test \
	ftruncate.test \
	ftruncate64.test \
	getcwd.test \
	getdents.test \
	getdents64.test \
	getegid.test \
	getegid32.test \
	geteuid.test \
	geteuid32.test \
	getgid.test \
	getgid32.test \
	getgroups.test \
	getgroups32.test \
	getpgrp.test \
	getrandom.test \
	getresgid.test \
	getresgid32.test \
	getresuid.test \
	getresuid32.test \
	getrusage.test \
	getsid.test \
	getuid.test \
	getuid32.test \
	getxxid.test \
	inet-cmsg.test \
	ioctl.test \
	ioperm.test \
	iopl.test \
	ip_mreq.test \
	ipc_msg.test \
	ipc_msgbuf.test \
	ipc_sem.test \
	ipc_shm.test \
	lchown.test \
	lchown32.test \
	linkat.test \
	llseek.test \
	lseek.test \
	lstat.test \
	lstat64.test \
	membarrier.test \
	memfd_create.test \
	mincore.test \
	mkdir.test \
	mkdirat.test \
	mknod.test \
	mlock2.test \
	mlockall.test \
	mmap.test \
	mmap64.test \
	mmsg.test \
	mq.test \
	nanosleep.test \
	net-y-unix.test \
	net-yy-inet.test \
	net-yy-unix.test \
	net.test \
	newfstatat.test \
	old_mmap.test \
	oldselect.test \
	open.test \
	openat.test \
	personality.test \
	pipe.test \
	poll.test \
	ppoll.test \
	prctl-seccomp-filter-v.test \
	prctl-seccomp-strict.test \
	pread64-pwrite64.test \
	preadv-pwritev.test \
	preadv.test \
	pselect6.test \
	pwritev.test \
	read-write.test \
	readdir.test \
	readlink.test \
	readlinkat.test \
	readv.test \
	recvmsg.test \
	rename.test \
	renameat.test \
	rmdir.test \
	rt_sigpending.test \
	rt_sigprocmask.test \
	rt_sigqueueinfo.test \
	rt_sigsuspend.test \
	rt_sigtimedwait.test \
	rt_tgsigqueueinfo.test \
	sched_get_priority_mxx.test \
	sched_rr_get_interval.test \
	sched_xetaffinity.test \
	sched_xetattr.test \
	sched_xetparam.test \
	sched_xetscheduler.test \
	scm_rights-fd.test \
	seccomp-filter-v.test \
	seccomp-filter.test \
	seccomp-strict.test \
	select.test \
	semop.test \
	sendfile.test \
	sendfile64.test \
	setdomainname.test \
	setfsgid.test \
	setfsgid32.test \
	setfsuid.test \
	setfsuid32.test \
	setgid.test \
	setgid32.test \
	setgroups.test \
	setgroups32.test \
	sethostname.test \
	setregid.test \
	setregid32.test \
	setresgid.test \
	setresgid32.test \
	setresuid.test \
	setresuid32.test \
	setreuid.test \
	setreuid32.test \
	setuid.test \
	setuid32.test \
	shmxt.test \
	sigaction.test \
	sigaltstack.test \
	signalfd.test \
	sigreturn.test \
	splice.test \
	stat.test \
	stat64.test \
	statfs.test \
	sun_path.test \
	swap.test \
	symlink.test \
	symlinkat.test \
	sync_file_range.test \
	sync_file_range2.test \
	sysinfo.test \
	syslog.test \
	tee.test \
	time.test \
	timer_create.test \
	timer_xettime.test \
	timerfd_xettime.test \
	times-fail.test \
	times.test \
	truncate.test \
	truncate64.test \
	uio.test \
	umask.test \
	umount.test \
	umount2.test \
	umovestr.test \
	umovestr2.test \
	uname.test \
	unlinkat.test \
	userfaultfd.test \
	utime.test \
	utimensat.test \
	vmsplice.test \
	wait.test \
	xattr.test \
	xet_robust_list.test \
	xetitimer.test \
	xetpgid.test \
	xetpriority.test \
	xettimeofday.test \
	# end of DECODER_TESTS

MISC_TESTS = \
	attach-f-p.test \
	attach-p-cmd.test \
	bexecve.test \
	count-f.test \
	count.test \
	detach-running.test \
	detach-sleeping.test \
	detach-stopped.test \
	dumpio.test \
	filter-unavailable.test \
	fork-f.test \
	ksysent.test \
	opipe.test \
	pc.test \
	qual_syscall.test \
	redirect.test \
	restart_syscall.test \
	strace-T.test \
	strace-f.test \
	strace-r.test \
	strace-t.test \
	strace-tt.test \
	strace-ttt.test \
	vfork-f.test \
	# end of MISC_TESTS

TESTS = $(DECODER_TESTS) $(MISC_TESTS) $(LIBUNWIND_TESTS)

XFAIL_TESTS_ =
XFAIL_TESTS_m32 = $(LIBUNWIND_TESTS)
XFAIL_TESTS_mx32 = $(LIBUNWIND_TESTS)
XFAIL_TESTS = $(XFAIL_TESTS_$(MPERS_NAME))

TEST_LOG_COMPILER = env
AM_TEST_LOG_FLAGS = STRACE_ARCH=$(ARCH) $(srcdir)/run.sh

EXTRA_DIST = init.sh run.sh match.awk \
	     caps.awk \
	     count-f.expected \
	     dumpio.expected \
	     eventfd.expected \
	     fanotify_mark.expected \
	     filter-unavailable.expected \
	     fstatat.c \
	     fstatx.c \
	     getresugid.c \
	     ip_mreq.expected \
	     ipc.sh \
	     ipc_msgbuf.expected \
	     ksysent.sed \
	     lstatx.c \
	     memfd_create.expected \
	     mq.expected \
	     net.expected \
	     oldselect.expected \
	     pipe.expected \
	     ppoll.expected \
	     ppoll-v.expected \
	     setfsugid.c \
	     setreugid.c \
	     setresugid.c \
	     setugid.c \
	     sigaction.awk \
	     sigaltstack.expected \
	     signalfd.expected \
	     statfs.expected \
	     statx.sh \
	     strace-T.expected \
	     strace-r.expected \
	     struct_flock.c \
	     sun_path.expected \
	     uio.expected \
	     umovestr.expected \
	     wait.expected \
	     xattr.expected \
	     xchownx.c \
	     xselect.c \
	     xstatx.c \
	     $(TESTS)

ksysent.h: $(srcdir)/ksysent.sed
	echo '#include <asm/unistd.h>' | \
		$(CPP) $(AM_CPPFLAGS) $(CPPFLAGS) -dM - > $@.t1
	LC_COLLATE=C sed -n -f $(srcdir)/ksysent.sed < $@.t1 > $@.t2
	mv -f $@.t2 $@
	rm -f $@.t1

BUILT_SOURCES = ksysent.h
CLEANFILES = ksysent.h $(TESTS:=.tmp)
