configure.ac 6.26 KB
Newer Older
Hisham Muhammad's avatar
Hisham Muhammad committed
1
2
3
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

4
AC_PREREQ(2.65)
5
AC_INIT([htop],[1.0],[loderunner@users.sourceforge.net])
6
7
8
9
10
11

# The following two lines are required by hwloc scripts
AC_USE_SYSTEM_EXTENSIONS
AC_CANONICAL_TARGET

AM_INIT_AUTOMAKE([1.11])
Hisham Muhammad's avatar
Hisham Muhammad committed
12
13
AC_CONFIG_SRCDIR([htop.c])
AC_CONFIG_HEADER([config.h])
14
AC_CONFIG_MACRO_DIR([m4])
Hisham Muhammad's avatar
Hisham Muhammad committed
15
16
17

# Checks for programs.
AC_PROG_CC
18
19
AM_PROG_CC_C_O

20
21
AC_DISABLE_SHARED
AC_ENABLE_STATIC
22
AC_PROG_LIBTOOL
Hisham Muhammad's avatar
Hisham Muhammad committed
23
24

# Checks for libraries.
25
26
AC_CHECK_LIB([m], [ceil], [], [missing_libraries="$missing_libraries libm"])

Hisham Muhammad's avatar
Hisham Muhammad committed
27
28
29
# Checks for header files.
AC_HEADER_DIRENT
AC_HEADER_STDC
30
31
32
AC_CHECK_HEADERS([stdlib.h string.h strings.h sys/param.h sys/time.h unistd.h curses.h],[:],[
  missing_headers="$missing_headers $ac_header"
])
33
AC_CHECK_HEADERS([execinfo.h],[:],[:])
34

Hisham Muhammad's avatar
Hisham Muhammad committed
35
36
37
38
39
40
41
42
43
44
45
46
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_UID_T

# Checks for library functions.
AC_FUNC_CLOSEDIR_VOID
AC_TYPE_SIGNAL
AC_FUNC_STAT
AC_CHECK_FUNCS([memmove strncasecmp strstr strdup])

47
save_cflags="${CFLAGS}"
Hisham Muhammad's avatar
Hisham Muhammad committed
48
49
50
51
52
CFLAGS="${CFLAGS} -std=c99"
AC_MSG_CHECKING([whether gcc -std=c99 option works])
AC_TRY_COMPILE(AC_INCLUDES_DEFAULT, [char *a; a = strdup("foo"); int i = 0; i++; // C99],
   AC_MSG_RESULT([yes]),
   AC_MSG_ERROR([htop is written in C99. A newer version of gcc is required.]))
53
CFLAGS="$save_cflags"
Hisham Muhammad's avatar
Hisham Muhammad committed
54
55
56
57
58
59

PROCDIR=/proc
AC_ARG_WITH(proc, [  --with-proc=DIR      Location of a Linux-compatible proc filesystem (default=/proc).],

   if test -n "$withval"; then
      AC_DEFINE_UNQUOTED(PROCDIR, "$withval", [Path of proc filesystem])
60
      PROCDIR="$withval"
Hisham Muhammad's avatar
Hisham Muhammad committed
61
62
63
   fi,
   AC_DEFINE(PROCDIR, "/proc", [Path of proc filesystem]))

64
65
AC_ARG_ENABLE(openvz, [AC_HELP_STRING([--enable-openvz], [enable OpenVZ support])], ,enable_openvz="no")
if test "x$enable_openvz" = xyes; then
66
67
68
   AC_DEFINE(HAVE_OPENVZ, 1, [Define if openvz support enabled.])
fi

69
70
71
72
73
AC_ARG_ENABLE(cgroup, [AC_HELP_STRING([--enable-cgroup], [enable cgroups support])], ,enable_cgroup="no")
if test "x$enable_cgroup" = xyes; then
   AC_DEFINE(HAVE_CGROUP, 1, [Define if cgroup support enabled.])
fi

Hisham Muhammad's avatar
Hisham Muhammad committed
74
75
76
77
78
79
80
81
82
83
84
AC_ARG_ENABLE(vserver, [AC_HELP_STRING([--enable-vserver], [enable VServer support])], ,enable_vserver="no")
if test "x$enable_vserver" = xyes; then
    AC_DEFINE(HAVE_VSERVER, 1, [Define if vserver support enabled.])
fi

AC_ARG_ENABLE(ancient_vserver, [AC_HELP_STRING([--enable-ancient-vserver], [enable ancient VServer support (implies --enable-vserver)])], ,enable_ancient_vserver="no")
if test "x$enable_ancient_vserver" = xyes; then
    AC_DEFINE(HAVE_VSERVER, 1, [Define if vserver support enabled.])
    AC_DEFINE(HAVE_ANCIENT_VSERVER, 1, [Define if ancient vserver support enabled.])
fi

85
AC_ARG_ENABLE(taskstats, [AC_HELP_STRING([--enable-taskstats], [enable per-task IO Stats (taskstats kernel sup required)])], ,enable_taskstats="yes")
86
87
88
89
if test "x$enable_taskstats" = xyes; then
    AC_DEFINE(HAVE_TASKSTATS, 1, [Define if taskstats support enabled.])
fi

90
AC_ARG_ENABLE(unicode, [AC_HELP_STRING([--enable-unicode], [enable Unicode support])], ,enable_unicode="yes")
91
if test "x$enable_unicode" = xyes; then
92
93
94
95
   AC_CHECK_LIB([ncursesw], [refresh], [], [
      missing_libraries="$missing_libraries libncursesw"
      AC_MSG_ERROR([You may want to use --disable-unicode or install libncursesw.])
   ])
96
97
98
   AC_CHECK_HEADERS([ncursesw/curses.h],[:],
        [AC_CHECK_HEADERS([ncurses/ncurses.h],[:],
          [AC_CHECK_HEADERS([ncurses.h],[:],[missing_headers="$missing_headers $ac_header"])])])
99
100
else
   AC_CHECK_LIB([ncurses], [refresh], [], [missing_libraries="$missing_libraries libncurses"])
Hisham Muhammad's avatar
Hisham Muhammad committed
101
   AC_CHECK_HEADERS([curses.h],[:],[missing_headers="$missing_headers $ac_header"])
102
103
fi

104
105
106
107
108
109
110
if test ! -z "$missing_libraries"; then
  AC_MSG_ERROR([missing libraries: $missing_libraries])
fi
if test ! -z "$missing_headers"; then
  AC_MSG_ERROR([missing headers: $missing_headers])
fi

111
if test "$cross_compiling" = "no"; then
112
113
AC_CHECK_FILE($PROCDIR/stat,,AC_MSG_ERROR(Cannot find /proc/stat. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
AC_CHECK_FILE($PROCDIR/meminfo,,AC_MSG_ERROR(Cannot find /proc/meminfo. Make sure you have a Linux-compatible /proc filesystem mounted. See the file README for help.))
114
fi
Hisham Muhammad's avatar
Hisham Muhammad committed
115

116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
AC_ARG_ENABLE(native_affinity, [AC_HELP_STRING([--enable-native-affinity], [enable native sched_setaffinity and sched_getaffinity for affinity support, disables hwloc])], ,enable_native_affinity="yes")
if test "x$enable_native_affinity" = xyes; then
   AC_MSG_CHECKING([for usable sched_setaffinity])
   AC_RUN_IFELSE([
     AC_LANG_PROGRAM([[
       #include <sched.h>
       #include <errno.h>
       static cpu_set_t cpuset;
       ]], [[
       CPU_ZERO(&cpuset);
       sched_setaffinity(0, sizeof(cpu_set_t), &cpuset);
       if (errno == ENOSYS) return 1;
       ]])],
     [AC_DEFINE(HAVE_NATIVE_AFFINITY, 1, [Define if native sched_setaffinity and sched_getaffinity are to be used.])
      AC_MSG_RESULT([yes])],
     [AC_MSG_RESULT([no])])
fi

134
##### hwloc
135
AC_ARG_ENABLE(system-hwloc, [AC_HELP_STRING([--enable-system-hwloc], [use the copy of hwloc from your system and not the one bundled with the htop sources. (hwloc required)])], ,enable_system_hwloc="no")
136
enable_xml=no
137
AC_ARG_ENABLE(hwloc, [AC_HELP_STRING([--enable-hwloc], [enable hwloc support for CPU affinity])],, test "x$enable_native_affinity" = xno && enable_hwloc="yes")
138
if test "x$enable_hwloc" = xyes
139
then
140
141
142
143
144
145
146
147
   if test "x$enable_system_hwloc" = xyes
   then
      AC_CHECK_LIB([hwloc], [hwloc_linux_get_tid_cpubind], [], [missing_libraries="$missing_libraries libhwloc"])
      AC_CHECK_HEADERS([hwloc.h],[:], [missing_headers="$missing_headers $ac_header"])

   else
      HWLOC_SETUP_CORE([hwloc-1.2.1], [hwloc_bundled=yes], [hwloc_bundled=no])
   fi
148
149
fi
HWLOC_DO_AM_CONDITIONALS
150
151
152
153
154
155
156
AM_CONDITIONAL([HAVE_HWLOC], [test "x$hwloc_bundled" = "xyes" -o "x$hwloc_system" = "xyes"])
AM_CONDITIONAL([HAVE_BUNDLED_HWLOC], [test "x$hwloc_bundled" = "xyes"])
if test "x$hwloc_system" = "xyes"; then
   AC_DEFINE([HAVE_SYSTEM_HWLOC], 1, [Have system hwloc])
   AC_DEFINE([HAVE_HWLOC], 1, [Have hwloc])
elif test "x$hwloc_bundled" = "xyes"; then
   AC_DEFINE([HAVE_BUNDLED_HWLOC], 1, [Use bundled hwloc])
157
   AC_DEFINE([HAVE_HWLOC], 1, [Have hwloc])
158
fi
159
#####
160

Hisham Muhammad's avatar
Hisham Muhammad committed
161
AC_CONFIG_FILES([Makefile htop.1])
Hisham Muhammad's avatar
Hisham Muhammad committed
162
AC_OUTPUT