xref: /minix3/external/bsd/top/dist/configure.ac (revision b89261ba018da33f0bd8cd05f5a1fe9e7a9c837b)
1*b89261baSDavid van Moolenbroek# configure.ac
2*b89261baSDavid van MoolenbroekAC_INIT(top, 3.8beta1)
3*b89261baSDavid van Moolenbroek
4*b89261baSDavid van Moolenbroek# AX_CHECK_VARIADIC_MACROS...
5*b89261baSDavid van Moolenbroek# -----
6*b89261baSDavid van MoolenbroekAC_DEFUN([AX_CHECK_VARIADIC_MACROS],
7*b89261baSDavid van Moolenbroek[AC_MSG_CHECKING([for variadic macros])
8*b89261baSDavid van MoolenbroekAC_COMPILE_IFELSE(AC_LANG_PROGRAM(
9*b89261baSDavid van Moolenbroek[#define a(x, ...) (x, __VA_ARGS__)], []),
10*b89261baSDavid van Moolenbroek	 [AS_VAR_SET(ax_cv_c99_variadic, yes)],
11*b89261baSDavid van Moolenbroek	 [AS_VAR_SET(ax_cv_c99_variadic, no)])
12*b89261baSDavid van MoolenbroekAC_COMPILE_IFELSE(AC_LANG_PROGRAM(
13*b89261baSDavid van Moolenbroek[#define a(x...) (x)], []),
14*b89261baSDavid van Moolenbroek	 [AS_VAR_SET(ax_cv_gnu_variadic, yes)],
15*b89261baSDavid van Moolenbroek	 [AS_VAR_SET(ax_cv_gnu_variadic, no)])
16*b89261baSDavid van Moolenbroek_result=""
17*b89261baSDavid van Moolenbroekif test "$ax_cv_c99_variadic" = "yes"; then
18*b89261baSDavid van Moolenbroek    _result=" c99"
19*b89261baSDavid van Moolenbroek    AC_DEFINE(HAVE_C99_VARIADIC_MACROS, 1, [Supports C99 style variadic macros])
20*b89261baSDavid van Moolenbroekfi
21*b89261baSDavid van Moolenbroekif test "$ax_cv_gnu_variadic" = "yes"; then
22*b89261baSDavid van Moolenbroek    _result="$_result gnu"
23*b89261baSDavid van Moolenbroek    AC_DEFINE(HAVE_GNU_VARIADIC_MACROS, 1, [Supports gnu style variadic macros])
24*b89261baSDavid van Moolenbroekfi
25*b89261baSDavid van Moolenbroekif test "x$_result" = x; then
26*b89261baSDavid van Moolenbroek    _result="no"
27*b89261baSDavid van Moolenbroekfi
28*b89261baSDavid van MoolenbroekAC_MSG_RESULT($_result)
29*b89261baSDavid van Moolenbroek])
30*b89261baSDavid van Moolenbroek
31*b89261baSDavid van Moolenbroek# AC_CHECK_CFLAG...
32*b89261baSDavid van Moolenbroek# -----
33*b89261baSDavid van MoolenbroekAC_DEFUN([AC_CHECK_CFLAG],
34*b89261baSDavid van Moolenbroek[AC_MSG_CHECKING([whether compiler accepts $1])
35*b89261baSDavid van MoolenbroekAS_VAR_PUSHDEF([ac_Flag], [ac_cv_cflag_$1])dnl
36*b89261baSDavid van Moolenbroek_savedcflags=$CFLAGS
37*b89261baSDavid van Moolenbroek_savedwerror_flag=$ac_c_werror_flag
38*b89261baSDavid van Moolenbroekac_c_werror_flag=yes
39*b89261baSDavid van MoolenbroekCFLAGS=$CFLAGS" $1"
40*b89261baSDavid van MoolenbroekAC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AS_VAR_SET(ac_Flag, yes)],
41*b89261baSDavid van Moolenbroek				          [AS_VAR_SET(ac_Flag, no)])
42*b89261baSDavid van MoolenbroekAC_MSG_RESULT([AS_VAR_GET(ac_Flag)])
43*b89261baSDavid van MoolenbroekCFLAGS=$_savedcflags
44*b89261baSDavid van Moolenbroekac_c_werror_flag=$_savedwerror_flag
45*b89261baSDavid van MoolenbroekAS_IF([test AS_VAR_GET(ac_Flag) = yes], [$2], [$3])[]dnl
46*b89261baSDavid van MoolenbroekAS_VAR_POPDEF([ac_Flag])dnl
47*b89261baSDavid van Moolenbroek])# AC_CHECK_CFLAG
48*b89261baSDavid van Moolenbroek
49*b89261baSDavid van Moolenbroekecho "Configuring $PACKAGE_STRING"
50*b89261baSDavid van Moolenbroek
51*b89261baSDavid van MoolenbroekAC_CONFIG_HEADER([config.h])
52*b89261baSDavid van MoolenbroekAC_CANONICAL_BUILD
53*b89261baSDavid van MoolenbroekAC_CANONICAL_HOST
54*b89261baSDavid van MoolenbroekAC_CANONICAL_TARGET
55*b89261baSDavid van Moolenbroek
56*b89261baSDavid van Moolenbroek# options processing
57*b89261baSDavid van MoolenbroekAC_ARG_WITH(module, AC_HELP_STRING([--with-module=NAME],
58*b89261baSDavid van Moolenbroek		    [use the platform module NAME]),
59*b89261baSDavid van Moolenbroek		    [if test ! -f machine/m_$withval.c;
60*b89261baSDavid van Moolenbroek		     then AC_MSG_ERROR([No such module $withval]); fi])
61*b89261baSDavid van Moolenbroek
62*b89261baSDavid van MoolenbroekAC_ARG_WITH(ext, AC_HELP_STRING([--with-ext=EXT],
63*b89261baSDavid van Moolenbroek    [use the extension EXT]),
64*b89261baSDavid van Moolenbroek    [if test -f ext/$withval.c; then
65*b89261baSDavid van Moolenbroek	AC_DEFINE(WITH_EXT, 1, [Include code that utilizes extensions])
66*b89261baSDavid van Moolenbroek	SRC="$SRC ext/$withval.c"
67*b89261baSDavid van Moolenbroek	OBJ="$OBJ $withval.o"
68*b89261baSDavid van Moolenbroek     else
69*b89261baSDavid van Moolenbroek        AC_MSG_ERROR([No such extension $withval])
70*b89261baSDavid van Moolenbroek     fi])
71*b89261baSDavid van Moolenbroek
72*b89261baSDavid van MoolenbroekDEFAULT_TOPN=30
73*b89261baSDavid van MoolenbroekAC_ARG_WITH(default-topn, AC_HELP_STRING([--with-default-topn=N],
74*b89261baSDavid van Moolenbroek    [use N as the default for number of processes]),
75*b89261baSDavid van Moolenbroek    [if test x"$with_default_topn" = xall; then
76*b89261baSDavid van Moolenbroek	DEFAULT_TOPN="-1"
77*b89261baSDavid van Moolenbroek     elif test x`echo $with_default_topn | tr -d '[0-9+-]'` = x; then
78*b89261baSDavid van Moolenbroek	DEFAULT_TOPN=$with_default_topn
79*b89261baSDavid van Moolenbroek     fi])
80*b89261baSDavid van MoolenbroekAC_DEFINE_UNQUOTED(DEFAULT_TOPN, $DEFAULT_TOPN, [Default number of processes to display])
81*b89261baSDavid van MoolenbroekAC_SUBST(DEFAULT_TOPN)
82*b89261baSDavid van Moolenbroek
83*b89261baSDavid van MoolenbroekNOMINAL_TOPN=40
84*b89261baSDavid van MoolenbroekAC_ARG_WITH(nominal-topn, AC_HELP_STRING([--with-nominal-topn=N],
85*b89261baSDavid van Moolenbroek    [use N as the default number of processes for non-terminals]),
86*b89261baSDavid van Moolenbroek    [if test x"$with_nominal_topn" = xall; then
87*b89261baSDavid van Moolenbroek	NOMINAL_TOPN="-1"
88*b89261baSDavid van Moolenbroek     elif test x`echo $with_nominal_topn | tr -d '[0-9+-]'` = x; then
89*b89261baSDavid van Moolenbroek	NOMINAL_TOPN=$with_nominal_topn
90*b89261baSDavid van Moolenbroek     fi])
91*b89261baSDavid van MoolenbroekAC_DEFINE_UNQUOTED(NOMINAL_TOPN, $NOMINAL_TOPN, [Default number of processes to display on non-terminals when topn is all])
92*b89261baSDavid van MoolenbroekAC_SUBST(NOMINAL_TOPN)
93*b89261baSDavid van Moolenbroek
94*b89261baSDavid van MoolenbroekDEFAULT_DELAY=5
95*b89261baSDavid van MoolenbroekAC_ARG_WITH(default-delay, AC_HELP_STRING([--with-default-delay=SEC],
96*b89261baSDavid van Moolenbroek    [use a default delay of SEC seconds]),
97*b89261baSDavid van Moolenbroek    [if test x`echo $with_default_delay | tr -d '[0-9+-]'` = x; then
98*b89261baSDavid van Moolenbroek	DEFAULT_DELAY=$with_default_delay
99*b89261baSDavid van Moolenbroek     fi])
100*b89261baSDavid van MoolenbroekAC_DEFINE_UNQUOTED(DEFAULT_DELAY, $DEFAULT_DELAY, [Default delay])
101*b89261baSDavid van MoolenbroekAC_SUBST(DEFAULT_DELAY)
102*b89261baSDavid van Moolenbroek
103*b89261baSDavid van MoolenbroekAC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug],
104*b89261baSDavid van Moolenbroek    [enable support for debugging output]))
105*b89261baSDavid van Moolenbroekif test "x$enable_debug" = xyes; then
106*b89261baSDavid van Moolenbroek    AC_DEFINE(DEBUG, 1, [Support for debugging output])
107*b89261baSDavid van Moolenbroekfi
108*b89261baSDavid van Moolenbroek
109*b89261baSDavid van MoolenbroekENABLE_KILL=0
110*b89261baSDavid van MoolenbroekAC_ARG_ENABLE(kill, AC_HELP_STRING([--disable-kill],
111*b89261baSDavid van Moolenbroek    [disable kill and renice commands]))
112*b89261baSDavid van Moolenbroekif test x$enable_kill != xno; then
113*b89261baSDavid van Moolenbroek    AC_DEFINE(ENABLE_KILL, 1, [Enable kill and renice])
114*b89261baSDavid van Moolenbroek    ENABLE_KILL=1
115*b89261baSDavid van Moolenbroekfi
116*b89261baSDavid van MoolenbroekAC_SUBST(ENABLE_KILL)
117*b89261baSDavid van Moolenbroek
118*b89261baSDavid van Moolenbroek
119*b89261baSDavid van MoolenbroekAC_ARG_ENABLE(color, AC_HELP_STRING([--disable-color],
120*b89261baSDavid van Moolenbroek    [disable the use of color]))
121*b89261baSDavid van MoolenbroekAC_ARG_ENABLE(colour, AC_HELP_STRING([--disable-colour],
122*b89261baSDavid van Moolenbroek    [synonym for --disable-color]))
123*b89261baSDavid van Moolenbroekif test x$enable_color != xno -a x$enable_colour != xno; then
124*b89261baSDavid van Moolenbroek    AC_DEFINE(ENABLE_COLOR, 1, [Enable color])
125*b89261baSDavid van Moolenbroekfi
126*b89261baSDavid van Moolenbroek
127*b89261baSDavid van MoolenbroekAC_ARG_ENABLE(dualarch, AC_HELP_STRING([--enable-dualarch],
128*b89261baSDavid van Moolenbroek    [enable or disable a dual architecture (32-bit and 64-bit) compile]))
129*b89261baSDavid van Moolenbroek
130*b89261baSDavid van Moolenbroek# check for needed programs
131*b89261baSDavid van MoolenbroekAC_CHECK_PROGS(MAKE, make)
132*b89261baSDavid van MoolenbroekAC_PROG_CC
133*b89261baSDavid van Moolenbroekif test "$ac_cv_c_compiler_gnu" = "yes"; then
134*b89261baSDavid van Moolenbroek    ax_cv_c_compiler_vendor="gnu"
135*b89261baSDavid van Moolenbroekelse
136*b89261baSDavid van Moolenbroek    AX_COMPILER_VENDOR
137*b89261baSDavid van Moolenbroekfi
138*b89261baSDavid van MoolenbroekAC_PROG_AWK
139*b89261baSDavid van MoolenbroekAC_PROG_INSTALL
140*b89261baSDavid van MoolenbroekAC_PATH_PROGS(ISAINFO, isainfo)
141*b89261baSDavid van MoolenbroekAC_PATH_PROGS(ISAEXEC, isaexec, , [$PATH:/usr/lib:/lib])
142*b89261baSDavid van MoolenbroekAC_PATH_PROGS(UNAME, uname)
143*b89261baSDavid van MoolenbroekAC_SUBST(ISAEXEC)
144*b89261baSDavid van Moolenbroek
145*b89261baSDavid van Moolenbroek# system checks require uname
146*b89261baSDavid van Moolenbroekif test "$UNAME"; then
147*b89261baSDavid van Moolenbroek    # we make the version number available as a C preprocessor definition
148*b89261baSDavid van Moolenbroek    AC_MSG_CHECKING(OS revision number)
149*b89261baSDavid van Moolenbroek    osrev=`$UNAME -r | tr -cd ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`
150*b89261baSDavid van Moolenbroek
151*b89261baSDavid van Moolenbroek    if test "$osrev" != "unknown" ; then
152*b89261baSDavid van Moolenbroek        AC_DEFINE_UNQUOTED(OSREV, $osrev, [Define the OS revision.])
153*b89261baSDavid van Moolenbroek	osmajor=`$UNAME -r | sed 's/^\([[0-9]]*\).*$/\1/'`
154*b89261baSDavid van Moolenbroek	if test -n "$osmajor"; then
155*b89261baSDavid van Moolenbroek	    AC_DEFINE_UNQUOTED(OSMAJOR, $osmajor, [Define the major OS revision number.])
156*b89261baSDavid van Moolenbroek	fi
157*b89261baSDavid van Moolenbroek    else
158*b89261baSDavid van Moolenbroek        AC_DEFINE(OSREV, "")
159*b89261baSDavid van Moolenbroek    fi
160*b89261baSDavid van Moolenbroek    AC_MSG_RESULT($osrev)
161*b89261baSDavid van Moolenbroek
162*b89261baSDavid van Moolenbroek    # we make the non-canonicalized hardware type available
163*b89261baSDavid van Moolenbroek    AC_MSG_CHECKING(hardware platform)
164*b89261baSDavid van Moolenbroek    UNAME_HARDWARE=`$UNAME -m`
165*b89261baSDavid van Moolenbroek    if test "$UNAME_HARDWARE" != "unknown"; then
166*b89261baSDavid van Moolenbroek        AC_DEFINE_UNQUOTED(UNAME_HARDWARE, "$UNAME_HARDWARE", [Define the system hardware platform])
167*b89261baSDavid van Moolenbroek    fi
168*b89261baSDavid van Moolenbroek    AC_MSG_RESULT($UNAME_HARDWARE)
169*b89261baSDavid van Moolenbroekfi
170*b89261baSDavid van Moolenbroek
171*b89261baSDavid van Moolenbroek# checks for libraries
172*b89261baSDavid van MoolenbroekAC_CHECK_LIB(elf, elf32_getphdr)
173*b89261baSDavid van MoolenbroekAC_CHECK_LIB(kstat, kstat_open)
174*b89261baSDavid van MoolenbroekAC_CHECK_LIB(kvm, kvm_open)
175*b89261baSDavid van Moolenbroek# -lmld -lmach
176*b89261baSDavid van MoolenbroekAC_CHECK_LIB(mach, vm_statistics)
177*b89261baSDavid van MoolenbroekAC_SEARCH_LIBS(tgetent, termcap curses ncurses)
178*b89261baSDavid van MoolenbroekAC_CHECK_LIB(m, exp)
179*b89261baSDavid van Moolenbroek
180*b89261baSDavid van Moolenbroek# check for libraries required by extension
181*b89261baSDavid van Moolenbroekextlibs=""
182*b89261baSDavid van Moolenbroekif test -n "$with_ext" -a -f "${srcdir}/ext/$with_ext.libs"; then
183*b89261baSDavid van Moolenbroek    AC_MSG_CHECKING(for libraries needed by extensions)
184*b89261baSDavid van Moolenbroek    for lib in `cat "${srcdir}/ext/$with_ext.libs"`
185*b89261baSDavid van Moolenbroek    do
186*b89261baSDavid van Moolenbroek	saveLIBS=$LIBS
187*b89261baSDavid van Moolenbroek	LIBS="$LIBS -l$lib"
188*b89261baSDavid van Moolenbroek	AC_TRY_LINK(, [exit(0);], [extlibs="$extlibs -l$lib"], )
189*b89261baSDavid van Moolenbroek	LIBS=$saveLIBS
190*b89261baSDavid van Moolenbroek    done
191*b89261baSDavid van Moolenbroek    AC_MSG_RESULT($extlibs)
192*b89261baSDavid van Moolenbroek    LIBS="$LIBS$extlibs"
193*b89261baSDavid van Moolenbroekfi
194*b89261baSDavid van Moolenbroek
195*b89261baSDavid van Moolenbroek# checks for header files
196*b89261baSDavid van MoolenbroekAC_HEADER_STDC
197*b89261baSDavid van MoolenbroekAC_CHECK_HEADERS([curses.h getopt.h limits.h math.h stdarg.h sysexits.h termcap.h unistd.h sys/resource.h sys/time.h sys/utsname.h])
198*b89261baSDavid van MoolenbroekAC_CHECK_HEADERS([term.h],,,
199*b89261baSDavid van Moolenbroek[#if HAVE_CURSES_H
200*b89261baSDavid van Moolenbroek#include <curses.h>
201*b89261baSDavid van Moolenbroek#endif
202*b89261baSDavid van Moolenbroek])
203*b89261baSDavid van MoolenbroekAC_HEADER_TIME
204*b89261baSDavid van MoolenbroekAC_MSG_CHECKING(for a good signal.h)
205*b89261baSDavid van MoolenbroekSIGNAL_H="no"
206*b89261baSDavid van Moolenbroekfor f in /usr/include/signal.h /usr/include/sys/signal.h /usr/include/sys/iso/signal_iso.h /usr/include/bits/signum.h; do
207*b89261baSDavid van Moolenbroek    if grep SIGKILL $f >/dev/null 2>&1; then
208*b89261baSDavid van Moolenbroek       SIGNAL_H=$f
209*b89261baSDavid van Moolenbroek       break
210*b89261baSDavid van Moolenbroek    fi
211*b89261baSDavid van Moolenbroekdone
212*b89261baSDavid van MoolenbroekAC_MSG_RESULT($SIGNAL_H)
213*b89261baSDavid van Moolenbroekif test "$SIGNAL_H" = "no"; then
214*b89261baSDavid van Moolenbroek    SIGNAL_H="/dev/null"
215*b89261baSDavid van Moolenbroekfi
216*b89261baSDavid van MoolenbroekAC_SUBST(SIGNAL_H)
217*b89261baSDavid van Moolenbroek
218*b89261baSDavid van Moolenbroek# checks for typedefs, structures, and compiler characteristics.
219*b89261baSDavid van MoolenbroekAX_CHECK_VARIADIC_MACROS
220*b89261baSDavid van MoolenbroekAC_CHECK_DECLS([sys_errlist])
221*b89261baSDavid van MoolenbroekAC_CHECK_DECLS([sys_signame],,,
222*b89261baSDavid van Moolenbroek[#include <signal.h>
223*b89261baSDavid van Moolenbroek/* NetBSD declares sys_siglist in unistd.h.  */
224*b89261baSDavid van Moolenbroek#if HAVE_UNISTD_H
225*b89261baSDavid van Moolenbroek# include <unistd.h>
226*b89261baSDavid van Moolenbroek#endif
227*b89261baSDavid van Moolenbroek])
228*b89261baSDavid van MoolenbroekAC_CHECK_DECLS([tputs, tgoto, tgetent, tgetflag, tgetnum, tgetstr],,,
229*b89261baSDavid van Moolenbroek[#if HAVE_CURSES_H && HAVE_TERM_H
230*b89261baSDavid van Moolenbroek#include <curses.h>
231*b89261baSDavid van Moolenbroek#include <term.h>
232*b89261baSDavid van Moolenbroek#else
233*b89261baSDavid van Moolenbroek#if HAVE_TERMCAP_H
234*b89261baSDavid van Moolenbroek#include <termcap.h>
235*b89261baSDavid van Moolenbroek#else
236*b89261baSDavid van Moolenbroek#if HAVE_CURSES_H
237*b89261baSDavid van Moolenbroek#include <curses.h>
238*b89261baSDavid van Moolenbroek#endif
239*b89261baSDavid van Moolenbroek#endif
240*b89261baSDavid van Moolenbroek#endif
241*b89261baSDavid van Moolenbroek])
242*b89261baSDavid van Moolenbroek
243*b89261baSDavid van Moolenbroek# The third argument to tputs is a putc-like function that takes an
244*b89261baSDavid van Moolenbroek# argument.  On most systems that argument is an int, but on some it
245*b89261baSDavid van Moolenbroek# is a char.  Determine which.
246*b89261baSDavid van MoolenbroekAC_MSG_CHECKING([argument type of tputs putc function])
247*b89261baSDavid van Moolenbroek_savedwerror_flag=$ac_c_werror_flag
248*b89261baSDavid van Moolenbroekac_c_werror_flag=yes
249*b89261baSDavid van MoolenbroekAC_COMPILE_IFELSE(
250*b89261baSDavid van Moolenbroek[AC_LANG_PROGRAM([#ifdef HAVE_TERMCAP_H
251*b89261baSDavid van Moolenbroek#include <termcap.h>
252*b89261baSDavid van Moolenbroek#endif
253*b89261baSDavid van Moolenbroek#ifdef HAVE_CURSES_H
254*b89261baSDavid van Moolenbroek#include <curses.h>
255*b89261baSDavid van Moolenbroek#endif
256*b89261baSDavid van Moolenbroek#ifdef HAVE_TERM_H
257*b89261baSDavid van Moolenbroek#include <term.h>
258*b89261baSDavid van Moolenbroek#endif
259*b89261baSDavid van Moolenbroekint f(char i) { }],
260*b89261baSDavid van Moolenbroek[tputs("a", 1, f);])],
261*b89261baSDavid van Moolenbroek	    [ac_cv_type_tputs_putc="char"],
262*b89261baSDavid van Moolenbroek	    [ac_cv_type_tputs_putc="int"])
263*b89261baSDavid van MoolenbroekAC_MSG_RESULT($ac_cv_type_tputs_putc)
264*b89261baSDavid van MoolenbroekAC_DEFINE_UNQUOTED(TPUTS_PUTC_ARGTYPE, $ac_cv_type_tputs_putc,
265*b89261baSDavid van Moolenbroek			[Define as the type for the argument to the
266*b89261baSDavid van Moolenbroekputc function of tputs ('int' or 'char')])
267*b89261baSDavid van Moolenbroekac_c_werror_flag=$_savedwerror_flag
268*b89261baSDavid van Moolenbroek
269*b89261baSDavid van Moolenbroek# Determine presence of needed types
270*b89261baSDavid van MoolenbroekAC_TYPE_SIGNAL
271*b89261baSDavid van MoolenbroekAC_CHECK_TYPES([id_t, lwpid_t, pid_t, time_t, uid_t])
272*b89261baSDavid van Moolenbroek
273*b89261baSDavid van Moolenbroek# Checks for library functions.
274*b89261baSDavid van MoolenbroekAC_CHECK_FUNCS([getopt getopt_long gettimeofday memcpy setbuffer setpriority setvbuf strcasecmp strchr strerror snprintf sighold sigrelse sigaction sigprocmask sysconf uname vsnprintf])
275*b89261baSDavid van Moolenbroek
276*b89261baSDavid van Moolenbroek# this is needed in the man page
277*b89261baSDavid van Moolenbroekif test "x$ac_cv_func_getopt_long" = "xyes"; then
278*b89261baSDavid van Moolenbroek    HAVE_GETOPT_LONG=1
279*b89261baSDavid van Moolenbroekelse
280*b89261baSDavid van Moolenbroek    HAVE_GETOPT_LONG=0
281*b89261baSDavid van Moolenbroekfi
282*b89261baSDavid van MoolenbroekAC_SUBST(HAVE_GETOPT_LONG)
283*b89261baSDavid van Moolenbroek
284*b89261baSDavid van Moolenbroek# if we dont have snprintf/vsnprint then we need to compile the alternate
285*b89261baSDavid van Moolenbroekif test "x$ac_cv_func_snprintf" != "xyes" -o "x$ac_cv_func_vsnprintf" != "xyes"; then
286*b89261baSDavid van Moolenbroek    SRC="$SRC ap_snprintf.c"
287*b89261baSDavid van Moolenbroek    OBJ="$OBJ ap_snprintf.o"
288*b89261baSDavid van Moolenbroekfi
289*b89261baSDavid van Moolenbroek
290*b89261baSDavid van Moolenbroek
291*b89261baSDavid van Moolenbroek# determine correct user, group, and mode
292*b89261baSDavid van Moolenbroek# these can be overridden later if need be
293*b89261baSDavid van MoolenbroekAC_MSG_CHECKING(for correct ls options)
294*b89261baSDavid van Moolenbroeklslong="ls -l"
295*b89261baSDavid van Moolenbroekif test `$lslong -d . | wc -w` -lt 9; then
296*b89261baSDavid van Moolenbroek   lslong="ls -lg"
297*b89261baSDavid van Moolenbroekfi
298*b89261baSDavid van MoolenbroekAC_MSG_RESULT($lslong)
299*b89261baSDavid van Moolenbroek
300*b89261baSDavid van Moolenbroek
301*b89261baSDavid van Moolenbroek# determine correct module
302*b89261baSDavid van MoolenbroekAC_MSG_CHECKING(for a platform module)
303*b89261baSDavid van Moolenbroekif test "$with_module"; then
304*b89261baSDavid van Moolenbroek    MODULE=$with_module
305*b89261baSDavid van Moolenbroekelse
306*b89261baSDavid van Moolenbroek    case $target_os in
307*b89261baSDavid van Moolenbroek	aix4.2*)	MODULE=aix43;;
308*b89261baSDavid van Moolenbroek	aix4.3*)	MODULE=aix43;;
309*b89261baSDavid van Moolenbroek	aix5*)		MODULE=aix5;;
310*b89261baSDavid van Moolenbroek	dec-osf*)	MODULE=decosf1;;
311*b89261baSDavid van Moolenbroek	osf1*)		MODULE=decosf1;;
312*b89261baSDavid van Moolenbroek	osf4*)		MODULE=decosf1;;
313*b89261baSDavid van Moolenbroek	osf5*)		MODULE=decosf1;;
314*b89261baSDavid van Moolenbroek        freebsd*)	MODULE=freebsd; USE_KMEM=1; USE_FPH=1;;
315*b89261baSDavid van Moolenbroek	hpux7*)		MODULE=hpux7;;
316*b89261baSDavid van Moolenbroek	hpux8*)		MODULE=hpux8;;
317*b89261baSDavid van Moolenbroek	hpux9*)		MODULE=hpux9;;
318*b89261baSDavid van Moolenbroek	hpux10*)	MODULE=hpux10;;
319*b89261baSDavid van Moolenbroek	hpux11*)	MODULE=hpux10;;
320*b89261baSDavid van Moolenbroek	irix5*)		MODULE=irix5;;
321*b89261baSDavid van Moolenbroek	irix6*)		MODULE=irixsgi;;
322*b89261baSDavid van Moolenbroek	linux*)		MODULE=linux; USE_FPH=1; SET_MODE=755;;
323*b89261baSDavid van Moolenbroek        netbsd*)	MODULE=netbsd; SET_MODE=755;;
324*b89261baSDavid van Moolenbroek	solaris2*)	MODULE=sunos5; USE_FPH=1; SET_MODE=755;;
325*b89261baSDavid van Moolenbroek	sunos4*)	MODULE=sunos4;;
326*b89261baSDavid van Moolenbroek	sysv4*)		MODULE=svr4;;
327*b89261baSDavid van Moolenbroek	sysv5*)		MODULE=svr5;;
328*b89261baSDavid van Moolenbroek	darwin*)
329*b89261baSDavid van Moolenbroek	    echo "macosx"
330*b89261baSDavid van Moolenbroek	    echo "The macosx module is untested.  Use at your own risk."
331*b89261baSDavid van Moolenbroek	    echo "If you really want to use this module, please run configure as follows:"
332*b89261baSDavid van Moolenbroek	    echo "    ./configure --with-module=macosx"
333*b89261baSDavid van Moolenbroek	    AC_MSG_ERROR([macosx module unsupported]);;
334*b89261baSDavid van Moolenbroek	*)  echo "none"
335*b89261baSDavid van Moolenbroek	    echo "Configure doesn't recognize this system and doesn't know"
336*b89261baSDavid van Moolenbroek	    echo "what module to assign to it.  Help the cause and run the"
337*b89261baSDavid van Moolenbroek	    echo "following command to let the maintainers know about this"
338*b89261baSDavid van Moolenbroek	    echo "deficiency!  Thanks.  Just cut and paste the following:"
339*b89261baSDavid van Moolenbroekecho "uname -a | mail -s $target_os bill@lefebvre.org"
340*b89261baSDavid van Moolenbroek	    echo ""
341*b89261baSDavid van Moolenbroek	    AC_MSG_ERROR([System type $target_os unrecognized])
342*b89261baSDavid van Moolenbroek    esac
343*b89261baSDavid van Moolenbroekfi
344*b89261baSDavid van MoolenbroekAC_MSG_RESULT($MODULE)
345*b89261baSDavid van MoolenbroekSRC="$SRC machine/m_$MODULE.c"
346*b89261baSDavid van MoolenbroekOBJ="$OBJ m_$MODULE.o"
347*b89261baSDavid van MoolenbroekCLEAN_EXTRA=""
348*b89261baSDavid van MoolenbroekAC_SUBST(SRC)
349*b89261baSDavid van MoolenbroekAC_SUBST(OBJ)
350*b89261baSDavid van MoolenbroekAC_SUBST(CLEAN_EXTRA)
351*b89261baSDavid van MoolenbroekAC_DEFINE_UNQUOTED(MODULE, "$MODULE", [Platform module])
352*b89261baSDavid van Moolenbroek
353*b89261baSDavid van MoolenbroekFIRST_RULE=/dev/null
354*b89261baSDavid van MoolenbroekINSTALL_RULE=config.default.makeinstall
355*b89261baSDavid van Moolenbroek
356*b89261baSDavid van Moolenbroek# extra things that need to be done for certain systems
357*b89261baSDavid van Moolenbroek# also handle setup for 64-bit detection
358*b89261baSDavid van Moolenbroekbits="default"
359*b89261baSDavid van Moolenbroekcase $MODULE in
360*b89261baSDavid van Moolenbroek    aix5)
361*b89261baSDavid van Moolenbroek	AC_CHECK_LIB(perfstat, perfstat_cpu_total)
362*b89261baSDavid van Moolenbroek	if test -f /usr/sbin/bootinfo; then
363*b89261baSDavid van Moolenbroek	    bits="`/usr/sbin/bootinfo -K`"
364*b89261baSDavid van Moolenbroek	    extra_flag="-q64"
365*b89261baSDavid van Moolenbroek	fi
366*b89261baSDavid van Moolenbroek    ;;
367*b89261baSDavid van Moolenbroek    svr5)
368*b89261baSDavid van Moolenbroek        # -lmas
369*b89261baSDavid van Moolenbroek        AC_CHECK_LIB(mas, mas_open)
370*b89261baSDavid van Moolenbroek    ;;
371*b89261baSDavid van Moolenbroek    sunos5)
372*b89261baSDavid van Moolenbroek        if test "$ISAINFO"; then
373*b89261baSDavid van Moolenbroek	    bits="`$ISAINFO -b`"
374*b89261baSDavid van Moolenbroek	    if test "$target_cpu" = "sparc"; then
375*b89261baSDavid van Moolenbroek		extra_flag="-xarch=v9"
376*b89261baSDavid van Moolenbroek	    else
377*b89261baSDavid van Moolenbroek		extra_flag="-xarch=amd64"
378*b89261baSDavid van Moolenbroek	    fi
379*b89261baSDavid van Moolenbroek	fi
380*b89261baSDavid van Moolenbroek    ;;
381*b89261baSDavid van Moolenbroekesac
382*b89261baSDavid van Moolenbroek
383*b89261baSDavid van Moolenbroek# USE_FPH means the module has format_process_header
384*b89261baSDavid van Moolenbroekif test -n "$USE_FPH"; then
385*b89261baSDavid van Moolenbroek    AC_DEFINE(HAVE_FORMAT_PROCESS_HEADER, 1, [Platform module])
386*b89261baSDavid van Moolenbroekfi
387*b89261baSDavid van Moolenbroek
388*b89261baSDavid van Moolenbroek# if we are 64-bit, try to turn on the appropriate flags
389*b89261baSDavid van MoolenbroekAC_MSG_CHECKING(address space size)
390*b89261baSDavid van MoolenbroekARCHFLAG=""
391*b89261baSDavid van Moolenbroekif test "$bits" = "64"; then
392*b89261baSDavid van Moolenbroek    AC_MSG_RESULT(64)
393*b89261baSDavid van Moolenbroek    if test "$ax_cv_c_compiler_vendor" = "gnu"; then
394*b89261baSDavid van Moolenbroek        extra_flag="-m64"
395*b89261baSDavid van Moolenbroek    fi
396*b89261baSDavid van Moolenbroek#   Make sure our compiler accepts the flag we want to use
397*b89261baSDavid van Moolenbroek    AC_CHECK_CFLAG($extra_flag, [ARCHFLAG="$extra_flag"],
398*b89261baSDavid van Moolenbroek				[enable_dualarch="no"])
399*b89261baSDavid van Moolenbroekelse
400*b89261baSDavid van Moolenbroek    AC_MSG_RESULT($bits)
401*b89261baSDavid van Moolenbroekfi
402*b89261baSDavid van MoolenbroekAC_SUBST(ARCHFLAG)
403*b89261baSDavid van Moolenbroek
404*b89261baSDavid van Moolenbroek# Dual architecture handling:  for now this is only enabled on Solaris.
405*b89261baSDavid van Moolenbroek# Config options can explicitly enable or disable dualarch.  Otherwise,
406*b89261baSDavid van Moolenbroek# dualarch is only enabled when we are on a 64-bit system.
407*b89261baSDavid van Moolenbroekif test "$MODULE" = "sunos5"; then
408*b89261baSDavid van Moolenbroek    AC_MSG_CHECKING(for dual architecture compilation)
409*b89261baSDavid van Moolenbroek    if test "x$enable_dualarch" = x; then
410*b89261baSDavid van Moolenbroek#       we must make the determination implicitly
411*b89261baSDavid van Moolenbroek	if test "$bits" = "64"; then
412*b89261baSDavid van Moolenbroek	    enable_dualarch="yes"
413*b89261baSDavid van Moolenbroek	else
414*b89261baSDavid van Moolenbroek	    enable_dualarch="no"
415*b89261baSDavid van Moolenbroek	fi
416*b89261baSDavid van Moolenbroek    fi
417*b89261baSDavid van Moolenbroek    if test "x$enable_dualarch" = "xyes"; then
418*b89261baSDavid van Moolenbroek        AC_MSG_RESULT(yes)
419*b89261baSDavid van Moolenbroek        if test "$target_cpu" = "sparc"; then
420*b89261baSDavid van Moolenbroek	    FIRST_RULE="config.sparcv9.make"
421*b89261baSDavid van Moolenbroek	    INSTALL_RULE="config.sparcv9.makeinstall"
422*b89261baSDavid van Moolenbroek	    CLEAN_EXTRA="$CLEAN_EXTRA sparcv7/* sparcv9/*"
423*b89261baSDavid van Moolenbroek	    mkdir -p sparcv7 sparcv9
424*b89261baSDavid van Moolenbroek	else
425*b89261baSDavid van Moolenbroek	    FIRST_RULE="config.amd64.make"
426*b89261baSDavid van Moolenbroek	    INSTALL_RULE="config.amd64.makeinstall"
427*b89261baSDavid van Moolenbroek	    CLEAN_EXTRA="$CLEAN_EXTRA i386/* amd64/*"
428*b89261baSDavid van Moolenbroek	    mkdir -p i386 amd64
429*b89261baSDavid van Moolenbroek	fi
430*b89261baSDavid van Moolenbroek    else
431*b89261baSDavid van Moolenbroek        AC_MSG_RESULT(no)
432*b89261baSDavid van Moolenbroek    fi
433*b89261baSDavid van Moolenbroekfi
434*b89261baSDavid van Moolenbroek
435*b89261baSDavid van Moolenbroekif test x$enable_dualarch = xyes; then
436*b89261baSDavid van Moolenbroek    AC_DEFINE(ENABLE_DUALARCH, 1, [Enable dual architecture])
437*b89261baSDavid van Moolenbroekfi
438*b89261baSDavid van Moolenbroek
439*b89261baSDavid van MoolenbroekAC_SUBST_FILE(FIRST_RULE)
440*b89261baSDavid van MoolenbroekAC_SUBST_FILE(INSTALL_RULE)
441*b89261baSDavid van Moolenbroek
442*b89261baSDavid van MoolenbroekAC_MSG_CHECKING(for installation settings)
443*b89261baSDavid van Moolenbroek# calculate appropriate settings
444*b89261baSDavid van MoolenbroekOWNER=""
445*b89261baSDavid van MoolenbroekGROUP=""
446*b89261baSDavid van MoolenbroekMODE=""
447*b89261baSDavid van Moolenbroekif test ! -n "$USE_KMEM" -a -d /proc; then
448*b89261baSDavid van Moolenbroek#   make sure we are installed so that we can read /proc
449*b89261baSDavid van Moolenbroek    rm -f conftest.txt
450*b89261baSDavid van Moolenbroek    if test -r /proc/0/psinfo; then
451*b89261baSDavid van Moolenbroek#       system uses solaris-style /proc
452*b89261baSDavid van Moolenbroek	$lslong /proc/0/psinfo >conftest.txt
453*b89261baSDavid van Moolenbroek    elif test -r /proc/1/stat; then
454*b89261baSDavid van Moolenbroek#       linux-style /proc?
455*b89261baSDavid van Moolenbroek	$lslong /proc/1/stat >conftest.txt
456*b89261baSDavid van Moolenbroek    else
457*b89261baSDavid van Moolenbroek	echo "-r--r--r-- 1 bin bin 32 Jan 1 12:00 /foo" >conftest.txt
458*b89261baSDavid van Moolenbroek    fi
459*b89261baSDavid van Moolenbroek
460*b89261baSDavid van Moolenbroek#   set permissions so that we can read stuff in /proc
461*b89261baSDavid van Moolenbroek    if grep '^.......r..' conftest.txt >/dev/null; then
462*b89261baSDavid van Moolenbroek#	world readable
463*b89261baSDavid van Moolenbroek	MODE=755
464*b89261baSDavid van Moolenbroek    elif grep '^....r.....' conftest.txt >/dev/null; then
465*b89261baSDavid van Moolenbroek#	group readable
466*b89261baSDavid van Moolenbroek	MODE=2711
467*b89261baSDavid van Moolenbroek	GROUP=`awk ' { print $4 }'`
468*b89261baSDavid van Moolenbroek    else
469*b89261baSDavid van Moolenbroek#	probably only readable by root
470*b89261baSDavid van Moolenbroek	MODE=4711
471*b89261baSDavid van Moolenbroek	OWNER=`awk ' { print $3 }'`
472*b89261baSDavid van Moolenbroek    fi
473*b89261baSDavid van Moolenbroek
474*b89261baSDavid van Moolenbroekelif test -c /dev/kmem; then
475*b89261baSDavid van Moolenbroek    $lslong -L /dev/kmem >conftest.txt
476*b89261baSDavid van Moolenbroek    if grep '^....r..r..' conftest.txt >/dev/null; then
477*b89261baSDavid van Moolenbroek        MODE=755
478*b89261baSDavid van Moolenbroek    elif grep '^....r..-..' conftest.txt >/dev/null; then
479*b89261baSDavid van Moolenbroek	MODE=2755
480*b89261baSDavid van Moolenbroek	GROUP=`$AWK ' { print $4 }' conftest.txt`
481*b89261baSDavid van Moolenbroek    fi
482*b89261baSDavid van Moolenbroekelse
483*b89261baSDavid van Moolenbroek    MODE=755
484*b89261baSDavid van Moolenbroekfi
485*b89261baSDavid van Moolenbroekrm -f conftest.txt
486*b89261baSDavid van Moolenbroek# let module settings override what we calculated
487*b89261baSDavid van MoolenbroekOWNER=${SET_OWNER:-$OWNER}
488*b89261baSDavid van MoolenbroekGROUP=${SET_GROUP:-$GROUP}
489*b89261baSDavid van MoolenbroekMODE=${SET_MODE:-$MODE}
490*b89261baSDavid van Moolenbroek
491*b89261baSDavid van Moolenbroek# set only those things that require it
492*b89261baSDavid van Moolenbroekresult=""
493*b89261baSDavid van MoolenbroekINSTALL_OPTS_PROG=""
494*b89261baSDavid van Moolenbroekif test x$OWNER != x; then
495*b89261baSDavid van Moolenbroek    result="${result}owner=$OWNER, "
496*b89261baSDavid van Moolenbroek    INSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -o $OWNER"
497*b89261baSDavid van Moolenbroekfi
498*b89261baSDavid van Moolenbroekif test x$GROUP != x; then
499*b89261baSDavid van Moolenbroek    result="${result}group=$GROUP, "
500*b89261baSDavid van Moolenbroek    INSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -g $GROUP"
501*b89261baSDavid van Moolenbroekfi
502*b89261baSDavid van Moolenbroekresult="${result}mode=$MODE"
503*b89261baSDavid van MoolenbroekINSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -m $MODE"
504*b89261baSDavid van Moolenbroek
505*b89261baSDavid van MoolenbroekAC_MSG_RESULT($result)
506*b89261baSDavid van Moolenbroek
507*b89261baSDavid van Moolenbroek# add extra cflags if the compiler accepts them
508*b89261baSDavid van MoolenbroekAX_CFLAGS_WARN_ALL
509*b89261baSDavid van MoolenbroekMODULE_CFLAGS=""
510*b89261baSDavid van Moolenbroekif test "$ax_cv_c_compiler_vendor" = "gnu"; then
511*b89261baSDavid van Moolenbroek    AX_CFLAGS_GCC_OPTION([-fno-strict-aliasing], [MODULE_CFLAGS])
512*b89261baSDavid van Moolenbroek    if test "$target_cpu" = "alpha"; then
513*b89261baSDavid van Moolenbroek	AX_CFLAGS_GCC_OPTION([-mfp-trap-mode=sui -mtrap-precision=i])
514*b89261baSDavid van Moolenbroek    fi
515*b89261baSDavid van Moolenbroekfi
516*b89261baSDavid van Moolenbroek
517*b89261baSDavid van Moolenbroek# Define man page supplement
518*b89261baSDavid van MoolenbroekMAN_SUPPLEMENT=machine/m_$MODULE.man
519*b89261baSDavid van MoolenbroekAC_SUBST_FILE(MAN_SUPPLEMENT)
520*b89261baSDavid van Moolenbroek
521*b89261baSDavid van Moolenbroek# Extra things we want substituted
522*b89261baSDavid van MoolenbroekAC_SUBST(MODULE)
523*b89261baSDavid van MoolenbroekAC_SUBST(MODULE_CFLAGS)
524*b89261baSDavid van MoolenbroekAC_SUBST(INSTALL_OPTS_PROG)
525*b89261baSDavid van Moolenbroek
526*b89261baSDavid van Moolenbroek# wrapup
527*b89261baSDavid van Moolenbroek
528*b89261baSDavid van MoolenbroekAC_CONFIG_FILES(Makefile top.1)
529*b89261baSDavid van MoolenbroekAC_OUTPUT
530