aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac529
1 files changed, 529 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 000000000000..c7fc28fafcce
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,529 @@
+# configure.ac
+AC_INIT(top, 3.8beta1)
+
+# AX_CHECK_VARIADIC_MACROS...
+# -----
+AC_DEFUN([AX_CHECK_VARIADIC_MACROS],
+[AC_MSG_CHECKING([for variadic macros])
+AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
+[#define a(x, ...) (x, __VA_ARGS__)], []),
+ [AS_VAR_SET(ax_cv_c99_variadic, yes)],
+ [AS_VAR_SET(ax_cv_c99_variadic, no)])
+AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
+[#define a(x...) (x)], []),
+ [AS_VAR_SET(ax_cv_gnu_variadic, yes)],
+ [AS_VAR_SET(ax_cv_gnu_variadic, no)])
+_result=""
+if test "$ax_cv_c99_variadic" = "yes"; then
+ _result=" c99"
+ AC_DEFINE(HAVE_C99_VARIADIC_MACROS, 1, [Supports C99 style variadic macros])
+fi
+if test "$ax_cv_gnu_variadic" = "yes"; then
+ _result="$_result gnu"
+ AC_DEFINE(HAVE_GNU_VARIADIC_MACROS, 1, [Supports gnu style variadic macros])
+fi
+if test "x$_result" = x; then
+ _result="no"
+fi
+AC_MSG_RESULT($_result)
+])
+
+# AC_CHECK_CFLAG...
+# -----
+AC_DEFUN([AC_CHECK_CFLAG],
+[AC_MSG_CHECKING([whether compiler accepts $1])
+AS_VAR_PUSHDEF([ac_Flag], [ac_cv_cflag_$1])dnl
+_savedcflags=$CFLAGS
+_savedwerror_flag=$ac_c_werror_flag
+ac_c_werror_flag=yes
+CFLAGS=$CFLAGS" $1"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [AS_VAR_SET(ac_Flag, yes)],
+ [AS_VAR_SET(ac_Flag, no)])
+AC_MSG_RESULT([AS_VAR_GET(ac_Flag)])
+CFLAGS=$_savedcflags
+ac_c_werror_flag=$_savedwerror_flag
+AS_IF([test AS_VAR_GET(ac_Flag) = yes], [$2], [$3])[]dnl
+AS_VAR_POPDEF([ac_Flag])dnl
+])# AC_CHECK_CFLAG
+
+echo "Configuring $PACKAGE_STRING"
+
+AC_CONFIG_HEADER([config.h])
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
+# options processing
+AC_ARG_WITH(module, AC_HELP_STRING([--with-module=NAME],
+ [use the platform module NAME]),
+ [if test ! -f machine/m_$withval.c;
+ then AC_MSG_ERROR([No such module $withval]); fi])
+
+AC_ARG_WITH(ext, AC_HELP_STRING([--with-ext=EXT],
+ [use the extension EXT]),
+ [if test -f ext/$withval.c; then
+ AC_DEFINE(WITH_EXT, 1, [Include code that utilizes extensions])
+ SRC="$SRC ext/$withval.c"
+ OBJ="$OBJ $withval.o"
+ else
+ AC_MSG_ERROR([No such extension $withval])
+ fi])
+
+DEFAULT_TOPN=30
+AC_ARG_WITH(default-topn, AC_HELP_STRING([--with-default-topn=N],
+ [use N as the default for number of processes]),
+ [if test x"$with_default_topn" = xall; then
+ DEFAULT_TOPN="-1"
+ elif test x`echo $with_default_topn | tr -d '[0-9+-]'` = x; then
+ DEFAULT_TOPN=$with_default_topn
+ fi])
+AC_DEFINE_UNQUOTED(DEFAULT_TOPN, $DEFAULT_TOPN, [Default number of processes to display])
+AC_SUBST(DEFAULT_TOPN)
+
+NOMINAL_TOPN=40
+AC_ARG_WITH(nominal-topn, AC_HELP_STRING([--with-nominal-topn=N],
+ [use N as the default number of processes for non-terminals]),
+ [if test x"$with_nominal_topn" = xall; then
+ NOMINAL_TOPN="-1"
+ elif test x`echo $with_nominal_topn | tr -d '[0-9+-]'` = x; then
+ NOMINAL_TOPN=$with_nominal_topn
+ fi])
+AC_DEFINE_UNQUOTED(NOMINAL_TOPN, $NOMINAL_TOPN, [Default number of processes to display on non-terminals when topn is all])
+AC_SUBST(NOMINAL_TOPN)
+
+DEFAULT_DELAY=5
+AC_ARG_WITH(default-delay, AC_HELP_STRING([--with-default-delay=SEC],
+ [use a default delay of SEC seconds]),
+ [if test x`echo $with_default_delay | tr -d '[0-9+-]'` = x; then
+ DEFAULT_DELAY=$with_default_delay
+ fi])
+AC_DEFINE_UNQUOTED(DEFAULT_DELAY, $DEFAULT_DELAY, [Default delay])
+AC_SUBST(DEFAULT_DELAY)
+
+AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug],
+ [enable support for debugging output]))
+if test "x$enable_debug" = xyes; then
+ AC_DEFINE(DEBUG, 1, [Support for debugging output])
+fi
+
+ENABLE_KILL=0
+AC_ARG_ENABLE(kill, AC_HELP_STRING([--disable-kill],
+ [disable kill and renice commands]))
+if test x$enable_kill != xno; then
+ AC_DEFINE(ENABLE_KILL, 1, [Enable kill and renice])
+ ENABLE_KILL=1
+fi
+AC_SUBST(ENABLE_KILL)
+
+
+AC_ARG_ENABLE(color, AC_HELP_STRING([--disable-color],
+ [disable the use of color]))
+AC_ARG_ENABLE(colour, AC_HELP_STRING([--disable-colour],
+ [synonym for --disable-color]))
+if test x$enable_color != xno -a x$enable_colour != xno; then
+ AC_DEFINE(ENABLE_COLOR, 1, [Enable color])
+fi
+
+AC_ARG_ENABLE(dualarch, AC_HELP_STRING([--enable-dualarch],
+ [enable or disable a dual architecture (32-bit and 64-bit) compile]))
+
+# check for needed programs
+AC_CHECK_PROGS(MAKE, make)
+AC_PROG_CC
+if test "$ac_cv_c_compiler_gnu" = "yes"; then
+ ax_cv_c_compiler_vendor="gnu"
+else
+ AX_COMPILER_VENDOR
+fi
+AC_PROG_AWK
+AC_PROG_INSTALL
+AC_PATH_PROGS(ISAINFO, isainfo)
+AC_PATH_PROGS(ISAEXEC, isaexec, , [$PATH:/usr/lib:/lib])
+AC_PATH_PROGS(UNAME, uname)
+AC_SUBST(ISAEXEC)
+
+# system checks require uname
+if test "$UNAME"; then
+ # we make the version number available as a C preprocessor definition
+ AC_MSG_CHECKING(OS revision number)
+ osrev=`$UNAME -r | tr -cd ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`
+
+ if test "$osrev" != "unknown" ; then
+ AC_DEFINE_UNQUOTED(OSREV, $osrev, [Define the OS revision.])
+ osmajor=`$UNAME -r | sed 's/^\([[0-9]]*\).*$/\1/'`
+ if test -n "$osmajor"; then
+ AC_DEFINE_UNQUOTED(OSMAJOR, $osmajor, [Define the major OS revision number.])
+ fi
+ else
+ AC_DEFINE(OSREV, "")
+ fi
+ AC_MSG_RESULT($osrev)
+
+ # we make the non-canonicalized hardware type available
+ AC_MSG_CHECKING(hardware platform)
+ UNAME_HARDWARE=`$UNAME -m`
+ if test "$UNAME_HARDWARE" != "unknown"; then
+ AC_DEFINE_UNQUOTED(UNAME_HARDWARE, "$UNAME_HARDWARE", [Define the system hardware platform])
+ fi
+ AC_MSG_RESULT($UNAME_HARDWARE)
+fi
+
+# checks for libraries
+AC_CHECK_LIB(elf, elf32_getphdr)
+AC_CHECK_LIB(kstat, kstat_open)
+AC_CHECK_LIB(kvm, kvm_open)
+# -lmld -lmach
+AC_CHECK_LIB(mach, vm_statistics)
+AC_SEARCH_LIBS(tgetent, termcap curses ncurses)
+AC_CHECK_LIB(m, exp)
+
+# check for libraries required by extension
+extlibs=""
+if test -n "$with_ext" -a -f "${srcdir}/ext/$with_ext.libs"; then
+ AC_MSG_CHECKING(for libraries needed by extensions)
+ for lib in `cat "${srcdir}/ext/$with_ext.libs"`
+ do
+ saveLIBS=$LIBS
+ LIBS="$LIBS -l$lib"
+ AC_TRY_LINK(, [exit(0);], [extlibs="$extlibs -l$lib"], )
+ LIBS=$saveLIBS
+ done
+ AC_MSG_RESULT($extlibs)
+ LIBS="$LIBS$extlibs"
+fi
+
+# checks for header files
+AC_HEADER_STDC
+AC_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])
+AC_CHECK_HEADERS([term.h],,,
+[#if HAVE_CURSES_H
+#include <curses.h>
+#endif
+])
+AC_HEADER_TIME
+AC_MSG_CHECKING(for a good signal.h)
+SIGNAL_H="no"
+for f in /usr/include/signal.h /usr/include/sys/signal.h /usr/include/sys/iso/signal_iso.h /usr/include/bits/signum.h; do
+ if grep SIGKILL $f >/dev/null 2>&1; then
+ SIGNAL_H=$f
+ break
+ fi
+done
+AC_MSG_RESULT($SIGNAL_H)
+if test "$SIGNAL_H" = "no"; then
+ SIGNAL_H="/dev/null"
+fi
+AC_SUBST(SIGNAL_H)
+
+# checks for typedefs, structures, and compiler characteristics.
+AX_CHECK_VARIADIC_MACROS
+AC_CHECK_DECLS([sys_errlist])
+AC_CHECK_DECLS([sys_signame],,,
+[#include <signal.h>
+/* NetBSD declares sys_siglist in unistd.h. */
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+])
+AC_CHECK_DECLS([tputs, tgoto, tgetent, tgetflag, tgetnum, tgetstr],,,
+[#if HAVE_CURSES_H && HAVE_TERM_H
+#include <curses.h>
+#include <term.h>
+#else
+#if HAVE_TERMCAP_H
+#include <termcap.h>
+#else
+#if HAVE_CURSES_H
+#include <curses.h>
+#endif
+#endif
+#endif
+])
+
+# The third argument to tputs is a putc-like function that takes an
+# argument. On most systems that argument is an int, but on some it
+# is a char. Determine which.
+AC_MSG_CHECKING([argument type of tputs putc function])
+_savedwerror_flag=$ac_c_werror_flag
+ac_c_werror_flag=yes
+AC_COMPILE_IFELSE(
+[AC_LANG_PROGRAM([#ifdef HAVE_TERMCAP_H
+#include <termcap.h>
+#endif
+#ifdef HAVE_CURSES_H
+#include <curses.h>
+#endif
+#ifdef HAVE_TERM_H
+#include <term.h>
+#endif
+int f(char i) { }],
+[tputs("a", 1, f);])],
+ [ac_cv_type_tputs_putc="char"],
+ [ac_cv_type_tputs_putc="int"])
+AC_MSG_RESULT($ac_cv_type_tputs_putc)
+AC_DEFINE_UNQUOTED(TPUTS_PUTC_ARGTYPE, $ac_cv_type_tputs_putc,
+ [Define as the type for the argument to the
+putc function of tputs ('int' or 'char')])
+ac_c_werror_flag=$_savedwerror_flag
+
+# Determine presence of needed types
+AC_TYPE_SIGNAL
+AC_CHECK_TYPES([id_t, lwpid_t, pid_t, time_t, uid_t])
+
+# Checks for library functions.
+AC_CHECK_FUNCS([getopt getopt_long gettimeofday memcpy setbuffer setpriority setvbuf strcasecmp strchr strerror snprintf sighold sigrelse sigaction sigprocmask sysconf uname vsnprintf])
+
+# this is needed in the man page
+if test "x$ac_cv_func_getopt_long" = "xyes"; then
+ HAVE_GETOPT_LONG=1
+else
+ HAVE_GETOPT_LONG=0
+fi
+AC_SUBST(HAVE_GETOPT_LONG)
+
+# if we dont have snprintf/vsnprint then we need to compile the alternate
+if test "x$ac_cv_func_snprintf" != "xyes" -o "x$ac_cv_func_vsnprintf" != "xyes"; then
+ SRC="$SRC ap_snprintf.c"
+ OBJ="$OBJ ap_snprintf.o"
+fi
+
+
+# determine correct user, group, and mode
+# these can be overridden later if need be
+AC_MSG_CHECKING(for correct ls options)
+lslong="ls -l"
+if test `$lslong -d . | wc -w` -lt 9; then
+ lslong="ls -lg"
+fi
+AC_MSG_RESULT($lslong)
+
+
+# determine correct module
+AC_MSG_CHECKING(for a platform module)
+if test "$with_module"; then
+ MODULE=$with_module
+else
+ case $target_os in
+ aix4.2*) MODULE=aix43;;
+ aix4.3*) MODULE=aix43;;
+ aix5*) MODULE=aix5;;
+ dec-osf*) MODULE=decosf1;;
+ osf1*) MODULE=decosf1;;
+ osf4*) MODULE=decosf1;;
+ osf5*) MODULE=decosf1;;
+ freebsd*) MODULE=freebsd; USE_KMEM=1; USE_FPH=1;;
+ hpux7*) MODULE=hpux7;;
+ hpux8*) MODULE=hpux8;;
+ hpux9*) MODULE=hpux9;;
+ hpux10*) MODULE=hpux10;;
+ hpux11*) MODULE=hpux10;;
+ irix5*) MODULE=irix5;;
+ irix6*) MODULE=irixsgi;;
+ linux*) MODULE=linux; USE_FPH=1; SET_MODE=755;;
+ netbsd*) MODULE=netbsd; SET_MODE=755;;
+ solaris2*) MODULE=sunos5; USE_FPH=1; SET_MODE=755;;
+ sunos4*) MODULE=sunos4;;
+ sysv4*) MODULE=svr4;;
+ sysv5*) MODULE=svr5;;
+ darwin*)
+ echo "macosx"
+ echo "The macosx module is untested. Use at your own risk."
+ echo "If you really want to use this module, please run configure as follows:"
+ echo " ./configure --with-module=macosx"
+ AC_MSG_ERROR([macosx module unsupported]);;
+ *) echo "none"
+ echo "Configure doesn't recognize this system and doesn't know"
+ echo "what module to assign to it. Help the cause and run the"
+ echo "following command to let the maintainers know about this"
+ echo "deficiency! Thanks. Just cut and paste the following:"
+echo "uname -a | mail -s $target_os bill@lefebvre.org"
+ echo ""
+ AC_MSG_ERROR([System type $target_os unrecognized])
+ esac
+fi
+AC_MSG_RESULT($MODULE)
+SRC="$SRC machine/m_$MODULE.c"
+OBJ="$OBJ m_$MODULE.o"
+CLEAN_EXTRA=""
+AC_SUBST(SRC)
+AC_SUBST(OBJ)
+AC_SUBST(CLEAN_EXTRA)
+AC_DEFINE_UNQUOTED(MODULE, "$MODULE", [Platform module])
+
+FIRST_RULE=/dev/null
+INSTALL_RULE=config.default.makeinstall
+
+# extra things that need to be done for certain systems
+# also handle setup for 64-bit detection
+bits="default"
+case $MODULE in
+ aix5)
+ AC_CHECK_LIB(perfstat, perfstat_cpu_total)
+ if test -f /usr/sbin/bootinfo; then
+ bits="`/usr/sbin/bootinfo -K`"
+ extra_flag="-q64"
+ fi
+ ;;
+ svr5)
+ # -lmas
+ AC_CHECK_LIB(mas, mas_open)
+ ;;
+ sunos5)
+ if test "$ISAINFO"; then
+ bits="`$ISAINFO -b`"
+ if test "$target_cpu" = "sparc"; then
+ extra_flag="-xarch=v9"
+ else
+ extra_flag="-xarch=amd64"
+ fi
+ fi
+ ;;
+esac
+
+# USE_FPH means the module has format_process_header
+if test -n "$USE_FPH"; then
+ AC_DEFINE(HAVE_FORMAT_PROCESS_HEADER, 1, [Platform module])
+fi
+
+# if we are 64-bit, try to turn on the appropriate flags
+AC_MSG_CHECKING(address space size)
+ARCHFLAG=""
+if test "$bits" = "64"; then
+ AC_MSG_RESULT(64)
+ if test "$ax_cv_c_compiler_vendor" = "gnu"; then
+ extra_flag="-m64"
+ fi
+# Make sure our compiler accepts the flag we want to use
+ AC_CHECK_CFLAG($extra_flag, [ARCHFLAG="$extra_flag"],
+ [enable_dualarch="no"])
+else
+ AC_MSG_RESULT($bits)
+fi
+AC_SUBST(ARCHFLAG)
+
+# Dual architecture handling: for now this is only enabled on Solaris.
+# Config options can explicitly enable or disable dualarch. Otherwise,
+# dualarch is only enabled when we are on a 64-bit system.
+if test "$MODULE" = "sunos5"; then
+ AC_MSG_CHECKING(for dual architecture compilation)
+ if test "x$enable_dualarch" = x; then
+# we must make the determination implicitly
+ if test "$bits" = "64"; then
+ enable_dualarch="yes"
+ else
+ enable_dualarch="no"
+ fi
+ fi
+ if test "x$enable_dualarch" = "xyes"; then
+ AC_MSG_RESULT(yes)
+ if test "$target_cpu" = "sparc"; then
+ FIRST_RULE="config.sparcv9.make"
+ INSTALL_RULE="config.sparcv9.makeinstall"
+ CLEAN_EXTRA="$CLEAN_EXTRA sparcv7/* sparcv9/*"
+ mkdir -p sparcv7 sparcv9
+ else
+ FIRST_RULE="config.amd64.make"
+ INSTALL_RULE="config.amd64.makeinstall"
+ CLEAN_EXTRA="$CLEAN_EXTRA i386/* amd64/*"
+ mkdir -p i386 amd64
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+fi
+
+if test x$enable_dualarch = xyes; then
+ AC_DEFINE(ENABLE_DUALARCH, 1, [Enable dual architecture])
+fi
+
+AC_SUBST_FILE(FIRST_RULE)
+AC_SUBST_FILE(INSTALL_RULE)
+
+AC_MSG_CHECKING(for installation settings)
+# calculate appropriate settings
+OWNER=""
+GROUP=""
+MODE=""
+if test ! -n "$USE_KMEM" -a -d /proc; then
+# make sure we are installed so that we can read /proc
+ rm -f conftest.txt
+ if test -r /proc/0/psinfo; then
+# system uses solaris-style /proc
+ $lslong /proc/0/psinfo >conftest.txt
+ elif test -r /proc/1/stat; then
+# linux-style /proc?
+ $lslong /proc/1/stat >conftest.txt
+ else
+ echo "-r--r--r-- 1 bin bin 32 Jan 1 12:00 /foo" >conftest.txt
+ fi
+
+# set permissions so that we can read stuff in /proc
+ if grep '^.......r..' conftest.txt >/dev/null; then
+# world readable
+ MODE=755
+ elif grep '^....r.....' conftest.txt >/dev/null; then
+# group readable
+ MODE=2711
+ GROUP=`awk ' { print $4 }'`
+ else
+# probably only readable by root
+ MODE=4711
+ OWNER=`awk ' { print $3 }'`
+ fi
+
+elif test -c /dev/kmem; then
+ $lslong -L /dev/kmem >conftest.txt
+ if grep '^....r..r..' conftest.txt >/dev/null; then
+ MODE=755
+ elif grep '^....r..-..' conftest.txt >/dev/null; then
+ MODE=2755
+ GROUP=`$AWK ' { print $4 }' conftest.txt`
+ fi
+else
+ MODE=755
+fi
+rm -f conftest.txt
+# let module settings override what we calculated
+OWNER=${SET_OWNER:-$OWNER}
+GROUP=${SET_GROUP:-$GROUP}
+MODE=${SET_MODE:-$MODE}
+
+# set only those things that require it
+result=""
+INSTALL_OPTS_PROG=""
+if test x$OWNER != x; then
+ result="${result}owner=$OWNER, "
+ INSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -o $OWNER"
+fi
+if test x$GROUP != x; then
+ result="${result}group=$GROUP, "
+ INSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -g $GROUP"
+fi
+result="${result}mode=$MODE"
+INSTALL_OPTS_PROG="$INSTALL_OPTS_PROG -m $MODE"
+
+AC_MSG_RESULT($result)
+
+# add extra cflags if the compiler accepts them
+AX_CFLAGS_WARN_ALL
+MODULE_CFLAGS=""
+if test "$ax_cv_c_compiler_vendor" = "gnu"; then
+ AX_CFLAGS_GCC_OPTION([-fno-strict-aliasing], [MODULE_CFLAGS])
+ if test "$target_cpu" = "alpha"; then
+ AX_CFLAGS_GCC_OPTION([-mfp-trap-mode=sui -mtrap-precision=i])
+ fi
+fi
+
+# Define man page supplement
+MAN_SUPPLEMENT=machine/m_$MODULE.man
+AC_SUBST_FILE(MAN_SUPPLEMENT)
+
+# Extra things we want substituted
+AC_SUBST(MODULE)
+AC_SUBST(MODULE_CFLAGS)
+AC_SUBST(INSTALL_OPTS_PROG)
+
+# wrapup
+
+AC_CONFIG_FILES(Makefile top.1)
+AC_OUTPUT