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