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