1 dnl Process this file with autoconf to produce a configure script.
3 AC_CONFIG_MACRO_DIR([m4])
4 AC_INIT([psmisc],[m4_esyscmd(misc/git-version-gen .tarball-version)],[],[],[],[https://www.gitlab.com/psmisc/psmisc])
5 AM_INIT_AUTOMAKE([foreign 1.11 subdir-objects -Wall -Wno-portability tar-pax no-dist-gzip dist-xz])
7 AC_CONFIG_SRCDIR([src/comm.h])
8 AC_CONFIG_HEADERS([config.h])
10 dnl Checks for programs.
11 AC_USE_SYSTEM_EXTENSIONS(_GNU_SOURCE)
16 AC_DEFUN([PSMISC_PROG_PO4A], [
18 AC_CHECK_PROGS([PO4A], [po4a])
19 AS_IF([test "$USE_NLS" = "yes" && test -n "$PO4A"], [
28 dnl checks for options
29 # SELinux support - off by default
31 AC_SUBST([WITH_SELINUX])
32 AC_ARG_ENABLE([selinux],
33 [AS_HELP_STRING([--enable-selinux], [Enable Security-Enhanced Linux features])],
34 [enable_selinux=$enableval],
35 [enable_selinux="no"])
36 if test "$enable_selinux" = "yes"; then
37 AC_DEFINE([WITH_SELINUX], [1], [Use Security-Enhanced Linux features])
38 AC_SEARCH_LIBS([dlopen], [dl], [],
39 [AC_MSG_ERROR([dynamic linking unavailable, circumvent with --disable-selinux])])
40 if test "x$ac_cv_search_dlopen" != "xnone required"; then
41 DL_LIB="$ac_cv_search_dlopen"
46 # Call fork before all stat calls to stop hanging on NFS mounts
47 AC_SUBST([WITH_TIMEOUT_STAT])
48 AC_ARG_ENABLE([timeout_stat],
49 [AS_HELP_STRING([--enable-timeout-stat], [Use a timeout on stat calls (optional with argument "static" for a static background process)])],
50 [enable_timeout_stat=$enableval],
51 [enable_timeout_stat="no"])
52 if test "$enable_timeout_stat" = "yes"; then
53 AC_DEFINE([WITH_TIMEOUT_STAT], [1], [Use timeout on stat calls])
55 if test "$enable_timeout_stat" = "static"; then
56 AC_DEFINE([WITH_TIMEOUT_STAT], [2], [Use timeout on stat calls])
58 AM_CONDITIONAL([WANT_TIMEOUT_STAT], [test "$enable_timeout_stat" = "static"])
60 # Use string search for network based file systems but only if the system
61 # has /proc/self/mountinfo
62 AC_SUBST([WITH_MOUNTINFO_LIST])
63 AC_ARG_ENABLE([mountinfo_list],
64 [AS_HELP_STRING([--enable-mountinfo-list], [Use the list in /proc/self/mountinfo to replace stat(2) syscall on network file systems shares])],
65 [enable_mountinfo_list="yes"],
66 [enable_mountinfo_list="no"])
67 if test "$enable_mountinfo_list" = "yes" -a -e /proc/self/mountinfo ; then
68 AC_DEFINE([WITH_MOUNTINFO_LIST], [1], [Use list in /proc/self/mountinfo to replace stat calls])
71 # Enable hardened compile and link flags
72 AC_ARG_ENABLE([harden_flags],
73 [AS_HELP_STRING([--disable-harden-flags], [disable hardened compilier and linker flags])],
74 [enable_harden_flags=$enableval],
75 [enable_harden_flags="yes"])
80 [AS_HELP_STRING([--disable-ipv6], [Disable IPv6 checks (for uClibc)])],
81 [enable_ipv6=$enableval],
83 if test "$enable_ipv6" = "yes"; then
84 AC_DEFINE([WITH_IPV6], [1], [Use IPv6 checks])
87 dnl Checks for libraries.
88 AC_CHECK_LIB([tinfo], [tgetent], [TERMCAP_LIB=-ltinfo],
89 [ AC_CHECK_LIB([ncurses], [tgetent], [TERMCAP_LIB=-lncurses],
90 [ AC_CHECK_LIB([termcap], [tgetent], [TERMCAP_LIB=-ltermcap],
91 [ AC_MSG_ERROR([Cannot find tinfo, ncurses or termcap libraries])
95 AC_SUBST([TERMCAP_LIB])
97 dnl Checks for header files.
101 AC_CHECK_HEADERS([arpa/inet.h fcntl.h langinfo.h libintl.h limits.h locale.h mntent.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h termios.h unistd.h])
103 dnl Checks for typedefs, structures, and compiler characteristics.
107 AC_CHECK_MEMBERS([struct stat.st_rdev])
110 # Check that harden CFLAGS and LDFLAGS will compile
111 AS_IF([test "$enable_harden_flags" = "yes"],
112 HARDEN_CFLAGS="-g -O2 -fstack-protector-strong -Wformat -Werror=format-security"
113 [HARDEN_LDFLAGS="-Wl,-z,relro"]
114 [ AC_MSG_CHECKING([compiler supports harden flags])
115 save_harden_cflags="$CFLAGS"
116 CFLAGS="$CFLAGS $HARDEN_CFLAGS"
117 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,,)],
118 [AC_MSG_RESULT([yes])],
119 [AC_MSG_RESULT([no]); HARDEN_CFLAGS='']
121 CFLAGS="$save_harden_cflags"],
124 AC_SUBST([HARDEN_CFLAGS])
125 AC_SUBST([HARDEN_LDFLAGS])
127 dnl Check for language stuff
128 AM_GNU_GETTEXT_VERSION([0.19.3])
129 AM_GNU_GETTEXT([external])
131 dnl Must be after the gettext stuff as it sets build_cpu
132 AC_CHECK_MEMBERS([struct user_regs_struct.orig_eax,
133 struct user_regs_struct.eax,
134 struct user_regs_struct.ebx,
135 struct user_regs_struct.ecx,
136 struct user_regs_struct.edx,
137 struct user_regs_struct.orig_rax,
138 struct user_regs_struct.rax,
139 struct user_regs_struct.rdi,
140 struct user_regs_struct.rsi,
141 struct user_regs_struct.rdx], [],[],
142 [#include <bits/types.h>
143 #include <sys/user.h>])
144 AC_CHECK_MEMBERS([struct pt_regs.orig_gpr3,
145 struct pt_regs.gpr], [],[], [#include <linux/ptrace.h>])
146 AC_CHECK_MEMBERS([struct pt_regs.uregs],[],[], [#include <asm/ptrace.h>])
147 AC_CHECK_MEMBERS([struct user_pt_regs.regs],[],[], [#include <asm/ptrace.h>])
148 AC_CHECK_MEMBERS([struct pt_regs.regs,
149 struct pt_regs.cp0_status],[],[], [#include <asm/ptrace.h>])
150 AC_CHECK_MEMBERS([struct pt_regs.orig_d0,
151 struct pt_regs.d0],[],[], [#include <asm/ptrace.h>])
161 AM_CONDITIONAL(WANT_FUSER, test $want_fuser = yes)
163 AM_CONDITIONAL(WANT_PEEKFD_I386,
164 test $ac_cv_member_struct_user_regs_struct_orig_eax = yes &&
165 test $ac_cv_member_struct_user_regs_struct_eax = yes &&
166 test $ac_cv_member_struct_user_regs_struct_ebx = yes &&
167 test $ac_cv_member_struct_user_regs_struct_ecx = yes &&
168 test $ac_cv_member_struct_user_regs_struct_edx = yes )
169 AM_CONDITIONAL(WANT_PEEKFD_X86_64,
170 test $ac_cv_member_struct_user_regs_struct_orig_rax = yes &&
171 test $ac_cv_member_struct_user_regs_struct_rax = yes &&
172 test $ac_cv_member_struct_user_regs_struct_rdi = yes &&
173 test $ac_cv_member_struct_user_regs_struct_rsi = yes &&
174 test $ac_cv_member_struct_user_regs_struct_rdx = yes )
175 AM_CONDITIONAL(WANT_PEEKFD_PPC,
176 test $ac_cv_member_struct_pt_regs_orig_gpr3 = yes &&
177 test $ac_cv_member_struct_pt_regs_gpr = yes )
178 AM_CONDITIONAL(WANT_PEEKFD_ARM,
179 test $ac_cv_member_struct_pt_regs_uregs = yes)
180 AM_CONDITIONAL(WANT_PEEKFD_ARM64,
181 test $ac_cv_member_struct_user_pt_regs_regs = yes)
182 AM_CONDITIONAL(WANT_PEEKFD_MIPS,
183 test $build_cpu = mipsel &&
184 test $ac_cv_member_struct_pt_regs_regs = yes &&
185 test $ac_cv_member_struct_pt_regs_cp0_status = yes)
186 AM_CONDITIONAL(WANT_PEEKFD_M68K,
187 test $ac_cv_member_struct_pt_regs_orig_d0 = yes &&
188 test $ac_cv_member_struct_pt_regs_d0 = yes)
190 dnl Checks for library functions.
191 AC_FUNC_CLOSEDIR_VOID
193 AC_PROG_GCC_TRADITIONAL
195 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
200 AC_CHECK_FUNCS([atexit getmntent memset nl_langinfo rawmemchr regcomp rpmatch setlocale socket strcasecmp strchr strdup strerror strpbrk strrchr strtoul])
202 dnl Checks for Large File System
205 if test x"$DEJAGNU" = x
207 DEJAGNU="\$(top_srcdir)/testsuite/global-conf.exp"
211 AC_CONFIG_FILES([Makefile