]> granicus.if.org Git - psmisc/blob - configure.ac
NLS: translation update
[psmisc] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ([2.71])
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])
6 AM_SILENT_RULES([yes])
7 AC_CONFIG_SRCDIR([src/comm.h])
8 AC_CONFIG_HEADERS([config.h])
9
10 dnl Checks for programs.
11 AC_USE_SYSTEM_EXTENSIONS(_GNU_SOURCE)
12 AC_PROG_CXX
13 AC_PROG_LN_S
14 AC_PROG_CC
15
16 AC_DEFUN([PSMISC_PROG_PO4A], [
17   AC_REQUIRE([AM_NLS])
18   AC_CHECK_PROGS([PO4A], [po4a])
19   AS_IF([test "$USE_NLS" = "yes" && test -n "$PO4A"], [
20     USE_PO4A=yes
21   ], [
22     USE_PO4A=no
23   ])
24   AC_SUBST([USE_PO4A])
25 ])
26 PSMISC_PROG_PO4A
27
28 dnl checks for options
29 # SELinux support - off by default
30 DL_LIB=
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"
42   fi
43 fi
44 AC_SUBST([DL_LIB])
45
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])
54 fi
55 if test "$enable_timeout_stat" = "static"; then
56   AC_DEFINE([WITH_TIMEOUT_STAT], [2], [Use timeout on stat calls])
57 fi
58 AM_CONDITIONAL([WANT_TIMEOUT_STAT], [test "$enable_timeout_stat" = "static"])
59
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])
69 fi
70
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"])
76
77 dnl ipv4 only option
78 AC_SUBST([WITH_IPV6])
79 AC_ARG_ENABLE([ipv6],
80   [AS_HELP_STRING([--disable-ipv6], [Disable IPv6 checks (for uClibc)])],
81   [enable_ipv6=$enableval],
82   [enable_ipv6="yes"])
83 if test "$enable_ipv6" = "yes"; then
84   AC_DEFINE([WITH_IPV6], [1], [Use IPv6 checks])
85 fi
86
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])
92           ] )
93         ] )
94   ] )
95 AC_SUBST([TERMCAP_LIB])
96
97 dnl Checks for header files.
98 AC_HEADER_DIRENT
99
100 AC_HEADER_SYS_WAIT
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])
102
103 dnl Checks for typedefs, structures, and compiler characteristics.
104 AC_C_CONST
105 AC_TYPE_PID_T
106 AC_TYPE_SIZE_T
107 AC_CHECK_MEMBERS([struct stat.st_rdev])
108 AC_TYPE_UID_T
109
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='']
120     )
121   CFLAGS="$save_harden_cflags"],
122   [HARDEN_CFLAGS=""
123    HARDEN_LDFLAGS=""])
124 AC_SUBST([HARDEN_CFLAGS])
125 AC_SUBST([HARDEN_LDFLAGS])
126
127 dnl Check for language stuff
128 AM_GNU_GETTEXT_VERSION([0.19.3])
129 AM_GNU_GETTEXT([external])
130
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>])
152
153 case ${host_os} in
154   gnu*)
155     want_fuser=no
156     ;;
157   *)
158     want_fuser=yes
159         ;;
160 esac
161 AM_CONDITIONAL(WANT_FUSER, test $want_fuser = yes)
162
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)
189
190 dnl Checks for library functions.
191 AC_FUNC_CLOSEDIR_VOID
192 AC_FUNC_GETMNTENT
193 AC_PROG_GCC_TRADITIONAL
194 AC_FUNC_LSTAT
195 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
196 AC_FUNC_MALLOC
197 AC_FUNC_MEMCMP
198 AC_FUNC_REALLOC
199 AC_FUNC_STAT
200 AC_CHECK_FUNCS([atexit getmntent memset nl_langinfo rawmemchr regcomp rpmatch setlocale socket strcasecmp strchr strdup strerror strpbrk strrchr strtoul])
201
202 dnl Checks for Large File System
203 AC_SYS_LARGEFILE
204
205 if test x"$DEJAGNU" = x
206 then
207   DEJAGNU="\$(top_srcdir)/testsuite/global-conf.exp"
208 fi
209 AC_SUBST(DEJAGNU)
210         
211 AC_CONFIG_FILES([Makefile
212                  doc/Makefile
213                  icons/Makefile
214                  po/Makefile.in
215                  man-po/Makefile
216                  testsuite/Makefile])
217 AC_OUTPUT