mirror of https://github.com/xzeldon/htop.git
409 lines
16 KiB
Plaintext
409 lines
16 KiB
Plaintext
|
dnl -*- Autoconf -*-
|
||
|
dnl
|
||
|
dnl Copyright (c) 2009 INRIA. All rights reserved.
|
||
|
dnl Copyright (c) 2009, 2011 Université Bordeaux 1
|
||
|
dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||
|
dnl University Research and Technology
|
||
|
dnl Corporation. All rights reserved.
|
||
|
dnl Copyright (c) 2004-2005 The Regents of the University of California.
|
||
|
dnl All rights reserved.
|
||
|
dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
|
||
|
dnl University of Stuttgart. All rights reserved.
|
||
|
dnl Copyright © 2010 INRIA. All rights reserved.
|
||
|
dnl Copyright © 2006-2011 Cisco Systems, Inc. All rights reserved.
|
||
|
dnl
|
||
|
dnl See COPYING in top-level directory.
|
||
|
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
# Probably only ever invoked by hwloc's configure.ac
|
||
|
AC_DEFUN([HWLOC_BUILD_STANDALONE],[
|
||
|
hwloc_mode=standalone
|
||
|
])dnl
|
||
|
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
# Probably only ever invoked by hwloc's configure.ac
|
||
|
AC_DEFUN([HWLOC_DEFINE_ARGS],[
|
||
|
# Embedded mode, or standalone?
|
||
|
AC_ARG_ENABLE([embedded-mode],
|
||
|
AC_HELP_STRING([--enable-embedded-mode],
|
||
|
[Using --enable-embedded-mode puts the HWLOC into "embedded" mode. The default is --disable-embedded-mode, meaning that the HWLOC is in "standalone" mode.]))
|
||
|
|
||
|
# Change the symbol prefix?
|
||
|
AC_ARG_WITH([hwloc-symbol-prefix],
|
||
|
AC_HELP_STRING([--with-hwloc-symbol-prefix=STRING],
|
||
|
[STRING can be any valid C symbol name. It will be prefixed to all public HWLOC symbols. Default: "hwloc_"]))
|
||
|
|
||
|
# Debug mode?
|
||
|
AC_ARG_ENABLE([debug],
|
||
|
AC_HELP_STRING([--enable-debug],
|
||
|
[Using --enable-debug enables various hwloc maintainer-level debugging controls. This option is not recomended for end users.]))
|
||
|
|
||
|
# Doxygen?
|
||
|
AC_ARG_ENABLE([doxygen],
|
||
|
[AC_HELP_STRING([--enable-doxygen],
|
||
|
[enable support for building Doxygen documentation (note that this option is ONLY relevant in developer builds; Doxygen documentation is pre-built for tarball builds and this option is therefore ignored)])])
|
||
|
|
||
|
# Picky?
|
||
|
AC_ARG_ENABLE(picky,
|
||
|
AC_HELP_STRING([--disable-picky],
|
||
|
[When in developer checkouts of hwloc and compiling with gcc, the default is to enable maximum compiler pickyness. Using --disable-picky or --enable-picky overrides any default setting]))
|
||
|
|
||
|
# Cairo?
|
||
|
AC_ARG_ENABLE([cairo],
|
||
|
AS_HELP_STRING([--disable-cairo],
|
||
|
[Disable the Cairo back-end of hwloc's lstopo command]))
|
||
|
|
||
|
# XML?
|
||
|
AC_ARG_ENABLE([xml],
|
||
|
AS_HELP_STRING([--disable-xml],
|
||
|
[Disable the XML back-end of hwloc's lstopo command]))
|
||
|
])dnl
|
||
|
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
dnl We only build documentation if this is a developer checkout.
|
||
|
dnl Distribution tarballs just install pre-built docuemntation that was
|
||
|
dnl included in the tarball.
|
||
|
|
||
|
# Probably only ever invoked by hwloc's configure.ac
|
||
|
AC_DEFUN([HWLOC_SETUP_DOCS],[
|
||
|
cat <<EOF
|
||
|
|
||
|
###
|
||
|
### Configuring hwloc documentation
|
||
|
###
|
||
|
EOF
|
||
|
|
||
|
AC_MSG_CHECKING([if this is a developer build])
|
||
|
AS_IF([test ! -d "$srcdir/.svn" -a ! -d "$srcdir/.hg" -a ! -d "$srcdir/.git"],
|
||
|
[AC_MSG_RESULT([no (doxygen generation is optional)])],
|
||
|
[AC_MSG_RESULT([yes])])
|
||
|
|
||
|
# Generating the doxygen output requires a few tools. If we
|
||
|
# don't have all of them, refuse the build the docs.
|
||
|
AC_ARG_VAR([DOXYGEN], [Location of the doxygen program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([DOXYGEN], [doxygen])
|
||
|
HWLOC_DOXYGEN_VERSION=`doxygen --version 2> /dev/null`
|
||
|
|
||
|
AC_ARG_VAR([PDFLATEX], [Location of the pdflatex program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([PDFLATEX], [pdflatex])
|
||
|
|
||
|
AC_ARG_VAR([MAKEINDEX], [Location of the makeindex program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([MAKEINDEX], [makeindex])
|
||
|
|
||
|
AC_ARG_VAR([FIG2DEV], [Location of the fig2dev program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([FIG2DEV], [fig2dev])
|
||
|
|
||
|
AC_ARG_VAR([GS], [Location of the gs program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([GS], [gs])
|
||
|
|
||
|
AC_ARG_VAR([EPSTOPDF], [Location of the epstopdf program (required for building the hwloc doxygen documentation)])
|
||
|
AC_PATH_TOOL([EPSTOPDF], [epstopdf])
|
||
|
|
||
|
AC_MSG_CHECKING([if can build doxygen docs])
|
||
|
AS_IF([test "x$DOXYGEN" != "x" -a "x$PDFLATEX" != "x" -a "x$MAKEINDEX" != "x" -a "x$FIG2DEV" != "x" -a "x$GS" != "x" -a "x$EPSTOPDF" != "x"],
|
||
|
[hwloc_generate_doxs=yes], [hwloc_generate_doxs=no])
|
||
|
AC_MSG_RESULT([$hwloc_generate_doxs])
|
||
|
|
||
|
# Linux and OS X take different sed arguments.
|
||
|
AC_PROG_SED
|
||
|
AC_MSG_CHECKING([if the sed -i option requires an argument])
|
||
|
rm -f conftest
|
||
|
cat > conftest <<EOF
|
||
|
hello
|
||
|
EOF
|
||
|
$SED -i -e s/hello/goodbye/ conftest 2> /dev/null
|
||
|
AS_IF([test -f conftest-e],
|
||
|
[SED_I="$SED -i ''"
|
||
|
AC_MSG_RESULT([yes])],
|
||
|
[SED_I="$SED -i"
|
||
|
AC_MSG_RESULT([no])])
|
||
|
rm -f conftest conftest-e
|
||
|
AC_SUBST([SED_I])
|
||
|
|
||
|
# Making the top-level README requires w3m or lynx.
|
||
|
AC_ARG_VAR([W3M], [Location of the w3m program (required to building the top-level hwloc README file)])
|
||
|
AC_PATH_TOOL([W3M], [w3m])
|
||
|
AC_ARG_VAR([LYNX], [Location of the lynx program (required to building the top-level hwloc README file)])
|
||
|
AC_PATH_TOOL([LYNX], [lynx])
|
||
|
|
||
|
AC_MSG_CHECKING([if can build top-level README])
|
||
|
AS_IF([test "x$W3M" != "x"],
|
||
|
[hwloc_generate_readme=yes
|
||
|
HWLOC_W3_GENERATOR=$W3M],
|
||
|
[AS_IF([test "x$LYNX" != "x"],
|
||
|
[hwloc_generate_readme=yes
|
||
|
HWLOC_W3_GENERATOR="$LYNX -dump -nolist"],
|
||
|
[hwloc_generate_readme=no])])
|
||
|
AC_SUBST(HWLOC_W3_GENERATOR)
|
||
|
AC_MSG_RESULT([$hwloc_generate_readme])
|
||
|
|
||
|
# If any one of the above tools is missing, we will refuse to make dist.
|
||
|
AC_MSG_CHECKING([if will build doxygen docs])
|
||
|
AS_IF([test "x$hwloc_generate_doxs" = "xyes" -a "x$enable_doxygen" != "xno"],
|
||
|
[], [hwloc_generate_doxs=no])
|
||
|
AC_MSG_RESULT([$hwloc_generate_doxs])
|
||
|
|
||
|
# See if we want to install the doxygen docs
|
||
|
AC_MSG_CHECKING([if will install doxygen docs])
|
||
|
AS_IF([test "x$hwloc_generate_doxs" = "xyes" -o \
|
||
|
-f "$srcdir/doc/doxygen-doc/man/man3/hwloc_distribute.3" -a \
|
||
|
-f "$srcdir/doc/doxygen-doc/hwloc-a4.pdf" -a \
|
||
|
-f "$srcdir/doc/doxygen-doc/hwloc-letter.pdf"],
|
||
|
[hwloc_install_doxs=yes],
|
||
|
[hwloc_install_doxs=no])
|
||
|
AC_MSG_RESULT([$hwloc_install_doxs])
|
||
|
|
||
|
# For the common developer case, if we're in a developer checkout and
|
||
|
# using the GNU compilers, turn on maximum warnings unless
|
||
|
# specifically disabled by the user.
|
||
|
AC_MSG_CHECKING([whether to enable "picky" compiler mode])
|
||
|
hwloc_want_picky=0
|
||
|
AS_IF([test "$GCC" = "yes"],
|
||
|
[AS_IF([test -d "$srcdir/.svn" -o -d "$srcdir/.hg" -o -d "$srcdir/.git"],
|
||
|
[hwloc_want_picky=1])])
|
||
|
if test "$enable_picky" = "yes"; then
|
||
|
if test "$GCC" = "yes"; then
|
||
|
AC_MSG_RESULT([yes])
|
||
|
hwloc_want_picky=1
|
||
|
else
|
||
|
AC_MSG_RESULT([no])
|
||
|
AC_MSG_WARN([Warning: --enable-picky used, but is currently only defined for the GCC compiler set -- automatically disabled])
|
||
|
hwloc_want_picky=0
|
||
|
fi
|
||
|
elif test "$enable_picky" = "no"; then
|
||
|
AC_MSG_RESULT([no])
|
||
|
hwloc_want_picky=0
|
||
|
else
|
||
|
if test "$hwloc_want_picky" = 1; then
|
||
|
AC_MSG_RESULT([yes (default)])
|
||
|
else
|
||
|
AC_MSG_RESULT([no (default)])
|
||
|
fi
|
||
|
fi
|
||
|
if test "$hwloc_want_picky" = 1; then
|
||
|
add="-Wall -Wunused-parameter -Wundef -Wno-long-long -Wsign-compare"
|
||
|
add="$add -Wmissing-prototypes -Wstrict-prototypes"
|
||
|
add="$add -Wcomment -pedantic"
|
||
|
|
||
|
CFLAGS="$CFLAGS $add"
|
||
|
fi
|
||
|
|
||
|
# Generate some files for the docs
|
||
|
AC_CONFIG_FILES(
|
||
|
hwloc_config_prefix[doc/Makefile]
|
||
|
hwloc_config_prefix[doc/doxygen-config.cfg])
|
||
|
])
|
||
|
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
# Probably only ever invoked by hwloc's configure.ac
|
||
|
AC_DEFUN([HWLOC_SETUP_UTILS],[
|
||
|
cat <<EOF
|
||
|
|
||
|
###
|
||
|
### Configuring hwloc command line utilities
|
||
|
###
|
||
|
EOF
|
||
|
|
||
|
hwloc_build_utils=yes
|
||
|
|
||
|
# Cairo support
|
||
|
hwloc_cairo_happy=
|
||
|
if test "x$enable_cairo" != "xno"; then
|
||
|
HWLOC_PKG_CHECK_MODULES([CAIRO], [cairo], [cairo_fill],
|
||
|
[hwloc_cairo_happy=yes],
|
||
|
[hwloc_cairo_happy=no])
|
||
|
if test "x$hwloc_cairo_happy" = "xyes"; then
|
||
|
AC_PATH_XTRA
|
||
|
CFLAGS_save=$CFLAGS
|
||
|
LIBS_save=$LIBS
|
||
|
|
||
|
CFLAGS="$CFLAGS $X_CFLAGS"
|
||
|
LIBS="$LIBS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS"
|
||
|
AC_CHECK_HEADERS([X11/Xlib.h], [
|
||
|
AC_CHECK_HEADERS([X11/Xutil.h X11/keysym.h], [
|
||
|
AC_CHECK_LIB([X11], [XOpenDisplay], [
|
||
|
enable_X11=yes
|
||
|
AC_SUBST([HWLOC_X11_LIBS], ["-lX11"])
|
||
|
AC_DEFINE([HWLOC_HAVE_X11], [1], [Define to 1 if X11 libraries are available.])
|
||
|
])]
|
||
|
)],,
|
||
|
[[#include <X11/Xlib.h>]]
|
||
|
)
|
||
|
if test "x$enable_X11" != "xyes"; then
|
||
|
AC_MSG_WARN([X11 headers not found, Cairo/X11 back-end disabled])
|
||
|
hwloc_cairo_happy=no
|
||
|
fi
|
||
|
|
||
|
CFLAGS=$CFLAGS_save
|
||
|
LIBS=$LIBS_save
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
if test "x$hwloc_cairo_happy" = "xyes"; then
|
||
|
AC_DEFINE([HWLOC_HAVE_CAIRO], [1], [Define to 1 if you have the `cairo' library.])
|
||
|
else
|
||
|
AS_IF([test "$enable_cairo" = "yes"],
|
||
|
[AC_MSG_WARN([--enable-cairo requested, but Cairo/X11 support was not found])
|
||
|
AC_MSG_ERROR([Cannot continue])])
|
||
|
fi
|
||
|
|
||
|
AC_CHECK_TYPES([wchar_t], [
|
||
|
AC_CHECK_FUNCS([putwc])
|
||
|
], [], [[#include <wchar.h>]])
|
||
|
|
||
|
AC_CHECK_HEADERS([locale.h], [
|
||
|
AC_CHECK_FUNCS([setlocale])
|
||
|
])
|
||
|
AC_CHECK_HEADERS([langinfo.h], [
|
||
|
AC_CHECK_FUNCS([nl_langinfo])
|
||
|
])
|
||
|
hwloc_old_LIBS="$LIBS"
|
||
|
chosen_curses=""
|
||
|
for curses in ncurses curses
|
||
|
do
|
||
|
for lib in "" -ltermcap -l${curses}w -l$curses
|
||
|
do
|
||
|
AC_MSG_CHECKING(termcap support using $curses and $lib)
|
||
|
LIBS="$hwloc_old_LIBS $lib"
|
||
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||
|
#include <$curses.h>
|
||
|
#include <term.h>
|
||
|
]], [[tparm(NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0)]])], [
|
||
|
AC_MSG_RESULT(yes)
|
||
|
AC_SUBST([HWLOC_TERMCAP_LIBS], ["$LIBS"])
|
||
|
AC_DEFINE([HWLOC_HAVE_LIBTERMCAP], [1],
|
||
|
[Define to 1 if you have a library providing the termcap interface])
|
||
|
chosen_curses=$curses
|
||
|
], [
|
||
|
AC_MSG_RESULT(no)
|
||
|
])
|
||
|
test "x$chosen_curses" != "x" && break
|
||
|
done
|
||
|
test "x$chosen_curses" != "x" && break
|
||
|
done
|
||
|
if test "$chosen_curses" = ncurses
|
||
|
then
|
||
|
AC_DEFINE([HWLOC_USE_NCURSES], [1], [Define to 1 if ncurses works, preferred over curses])
|
||
|
fi
|
||
|
LIBS="$hwloc_old_LIBS"
|
||
|
unset hwloc_old_LIBS
|
||
|
|
||
|
_HWLOC_CHECK_DIFF_U
|
||
|
|
||
|
# Only generate this if we're building the utilities
|
||
|
AC_CONFIG_FILES(
|
||
|
hwloc_config_prefix[utils/Makefile]
|
||
|
hwloc_config_prefix[hwloc.pc])
|
||
|
])dnl
|
||
|
|
||
|
#-----------------------------------------------------------------------
|
||
|
|
||
|
# Probably only ever invoked by hwloc's configure.ac
|
||
|
AC_DEFUN([HWLOC_SETUP_TESTS],[
|
||
|
cat <<EOF
|
||
|
|
||
|
###
|
||
|
### Configuring hwloc tests
|
||
|
###
|
||
|
EOF
|
||
|
|
||
|
hwloc_build_tests=yes
|
||
|
|
||
|
# linux-libnuma.h testing requires libnuma with numa_bitmask_alloc()
|
||
|
AC_CHECK_DECL([numa_bitmask_alloc], [hwloc_have_linux_libnuma=yes], [],
|
||
|
[#include <numa.h>])
|
||
|
|
||
|
AC_CHECK_HEADERS([infiniband/verbs.h], [
|
||
|
AC_CHECK_LIB([ibverbs], [ibv_open_device],
|
||
|
[AC_DEFINE([HAVE_LIBIBVERBS], 1, [Define to 1 if we have -libverbs])
|
||
|
hwloc_have_libibverbs=yes])
|
||
|
])
|
||
|
|
||
|
AC_CHECK_HEADERS([myriexpress.h], [
|
||
|
AC_MSG_CHECKING(if MX_NUMA_NODE exists)
|
||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <myriexpress.h>]],
|
||
|
[[int a = MX_NUMA_NODE;]],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
AC_CHECK_LIB([myriexpress], [mx_get_info],
|
||
|
[AC_DEFINE([HAVE_MYRIEXPRESS], 1, [Define to 1 if we have -lmyriexpress])
|
||
|
hwloc_have_myriexpress=yes])],
|
||
|
[AC_MSG_RESULT(no)])])])
|
||
|
|
||
|
AC_CHECK_HEADERS([cuda.h], [
|
||
|
AC_MSG_CHECKING(if CUDA_VERSION >= 3020)
|
||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||
|
#include <cuda.h>
|
||
|
#ifndef CUDA_VERSION
|
||
|
#error CUDA_VERSION undefined
|
||
|
#elif CUDA_VERSION < 3020
|
||
|
#error CUDA_VERSION too old
|
||
|
#endif]], [[int i = 3;]])],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
AC_CHECK_LIB([cuda], [cuInit],
|
||
|
[AC_DEFINE([HAVE_CUDA], 1, [Define to 1 if we have -lcuda])
|
||
|
hwloc_have_cuda=yes])],
|
||
|
[AC_MSG_RESULT(no)])])
|
||
|
|
||
|
AC_CHECK_HEADERS([cuda_runtime_api.h], [
|
||
|
AC_MSG_CHECKING(if CUDART_VERSION >= 3020)
|
||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||
|
#include <cuda_runtime_api.h>
|
||
|
#ifndef CUDART_VERSION
|
||
|
#error CUDART_VERSION undefined
|
||
|
#elif CUDART_VERSION < 3020
|
||
|
#error CUDART_VERSION too old
|
||
|
#endif]], [[int i = 3;]])],
|
||
|
[AC_MSG_RESULT(yes)
|
||
|
AC_CHECK_LIB([cudart], [cudaGetDeviceCount],
|
||
|
[AC_DEFINE([HAVE_CUDART], 1, [Define to 1 if we have -lcudart])
|
||
|
hwloc_have_cudart=yes])],
|
||
|
[AC_MSG_RESULT(no)])])
|
||
|
|
||
|
if test "x$enable_xml" != "xno"; then
|
||
|
AC_CHECK_PROGS(XMLLINT, [xmllint])
|
||
|
fi
|
||
|
|
||
|
AC_CHECK_PROGS(BUNZIPP, bunzip2, false)
|
||
|
|
||
|
_HWLOC_CHECK_DIFF_U
|
||
|
|
||
|
# Only generate these files if we're making the tests
|
||
|
AC_CONFIG_FILES(
|
||
|
hwloc_config_prefix[tests/Makefile]
|
||
|
hwloc_config_prefix[tests/linux/Makefile]
|
||
|
hwloc_config_prefix[tests/linux/gather/Makefile]
|
||
|
hwloc_config_prefix[tests/xml/Makefile]
|
||
|
hwloc_config_prefix[tests/ports/Makefile]
|
||
|
hwloc_config_prefix[tests/linux/hwloc-gather-topology]
|
||
|
hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh]
|
||
|
hwloc_config_prefix[tests/linux/test-topology.sh]
|
||
|
hwloc_config_prefix[tests/xml/test-topology.sh]
|
||
|
hwloc_config_prefix[utils/test-hwloc-calc.sh]
|
||
|
hwloc_config_prefix[utils/test-hwloc-distrib.sh])
|
||
|
|
||
|
AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/hwloc-gather-topology ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[utils/test-hwloc-calc.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh])
|
||
|
|
||
|
# These links are only needed in standalone mode. It would
|
||
|
# be nice to m4 foreach this somehow, but whenever I tried
|
||
|
# it, I got obscure "invalid tag" errors from
|
||
|
# AC_CONFIG_LINKS. :-\ Since these tests are only run when
|
||
|
# built in standalone mode, only generate them in
|
||
|
# standalone mode.
|
||
|
AC_CONFIG_LINKS(
|
||
|
hwloc_config_prefix[tests/ports/topology.c]:hwloc_config_prefix[src/topology.c]
|
||
|
hwloc_config_prefix[tests/ports/traversal.c]:hwloc_config_prefix[src/traversal.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-synthetic.c]:hwloc_config_prefix[src/topology-synthetic.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-solaris.c]:hwloc_config_prefix[src/topology-solaris.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-aix.c]:hwloc_config_prefix[src/topology-aix.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-osf.c]:hwloc_config_prefix[src/topology-osf.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-windows.c]:hwloc_config_prefix[src/topology-windows.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-darwin.c]:hwloc_config_prefix[src/topology-darwin.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-freebsd.c]:hwloc_config_prefix[src/topology-freebsd.c]
|
||
|
hwloc_config_prefix[tests/ports/topology-hpux.c]:hwloc_config_prefix[src/topology-hpux.c])
|
||
|
])
|
||
|
])dnl
|