configure.ac 6.52 KB
Newer Older
1 2 3 4
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.67])
5
AC_INIT([codes], [0.6.0], [http://trac.mcs.anl.gov/projects/codes/newticket],[],[http://www.mcs.anl.gov/projects/codes/])
6
LT_INIT
7 8 9 10 11 12 13 14 15

AC_CANONICAL_TARGET
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST

AM_INIT_AUTOMAKE([foreign subdir-objects -Wall])

m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

16
AC_CONFIG_SRCDIR([doc/BUILD_STEPS])
17
AC_CONFIG_HEADERS([codes_config.h])
18 19 20 21 22 23 24 25 26 27 28 29 30

AX_PROG_BISON([],[AC_MSG_WARN([Could not find bison])])
AX_PROG_FLEX([],[AC_MSG_WARN([Could not find flex])])
AC_SUBST([BISON])
AC_SUBST([FLEX])

# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
AC_PROG_CXX
AC_PROG_CXXCPP
AC_PROG_RANLIB

31 32
PKG_PROG_PKG_CONFIG

33 34 35 36
if test -z "$PKG_CONFIG" ; then
    AC_MSG_ERROR([pkg-config is required. Please install the pkg-config program on your PATH or set the PKG_CONFIG environment variable to the appropriate package.])
fi

Jonathan Jenkins's avatar
Jonathan Jenkins committed
37 38 39
# Check for C99
AC_PROG_CC_C99

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
AC_REQUIRE_CPP

# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h string.h unistd.h execinfo.h pthread.h malloc.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_INT8_T
AC_TYPE_INT16_T
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_UINT8_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T

60 61 62 63 64
# Add warning flags by default
AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
AX_CHECK_COMPILE_FLAG([-Wextra], [CFLAGS="$CFLAGS -Wextra"])
AX_CHECK_COMPILE_FLAG([-Wshadow], [CFLAGS="$CFLAGS -Wshadow"])

65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
# Checks for library functions.
AC_CHECK_FUNCS([memset])
AC_CHECK_LIB([pthread],[pthread_create],,[AC_MSG_ERROR([Could not find pthread_create!])])
AC_CHECK_LIB([m],[sqrt],,[AC_MSG_ERROR([Could not find sqrt!])])


AX_PROG_BISON_CLFEATURES([],[AC_MSG_WARN([Could not find bison])],
[bison_ok="yes"], [bison_ok="no"])
AC_SUBST([bison_ok])

dnl Check to see if CC is an MPI compiler
AC_MSG_CHECKING(whether the mpicc compiler works)
AC_TRY_COMPILE([#include <mpi.h>], [int ret = MPI_Init(0, (void*)0)],
    AC_MSG_RESULT(yes),
    AC_MSG_RESULT(no)
80
    AC_MSG_ERROR(CC doesnt appear to be a valid MPI compiler.  See INSTALL document or try adding CC=mpicc to your configure command line.)
81 82
)

83 84 85
# check for ROSS
PKG_CHECK_MODULES_STATIC([ROSS], [ross], [],
                  [AC_MSG_ERROR([Could not find working ross installation via pkg-config])])
86

Matthieu Dorier's avatar
Matthieu Dorier committed
87 88 89 90
# check for enable-g
AC_ARG_ENABLE([g],[AS_HELP_STRING([--enable-g],
			[Build with GDB symbols])],
		[use_debug=yes],[use_debug=no])
91
AM_CONDITIONAL(USE_DEBUG, [test "x${use_debug}" = xyes])
Matthieu Dorier's avatar
Matthieu Dorier committed
92

93
# check for Darshan
94 95 96 97 98 99
AC_ARG_WITH([darshan],[AS_HELP_STRING([--with-darshan],
                        [Build with the darshan workload support])],
                      [use_darshan=yes],[use_darshan=no])
if test "x${use_darshan}" = xyes ; then
    PKG_CHECK_MODULES_STATIC([DARSHAN], [darshan-util], [],
                      [AC_MSG_ERROR([Could not find working darshan installation via pkg-config])])
100 101 102
    DARSHAN_VER=`pkg-config --modversion darshan-util`
    AX_COMPARE_VERSION([$DARSHAN_VER],[ge],[2.3],[],
        [AC_MSG_ERROR([Found Darshan $DARSHAN_VER but 2.3 or greater is needed])])
103
fi
104
AM_CONDITIONAL(USE_DARSHAN, [test "x${use_darshan}" = xyes])
105

106

107 108 109 110 111
# check for Recorder
AM_CONDITIONAL(USE_RECORDER, true)
RECORDER_CPPFLAGS="-DUSE_RECORDER=1"
AC_SUBST(RECORDER_CPPFLAGS)

112 113 114 115
#check for Dumpi
AC_ARG_WITH([dumpi],[AS_HELP_STRING([--with-dumpi@<:@=DIR@:>@],
                        [location of Dumpi installation])])
if test "x${with_dumpi}" != "x" ; then
116 117 118 119 120
	CFLAGS="-I${with_dumpi}/include"
	LIBS="-L${with_dumpi}/lib/ -lundumpi"
    AC_CHECK_LIB([undumpi],
                 [undumpi_open], [], [AC_MSG_ERROR(Could not find dumpi)])
    AM_CONDITIONAL(USE_DUMPI, true)
121
	DUMPI_CFLAGS="-I${with_dumpi}/include"
122
	DUMPI_LIBS="-L${with_dumpi}/lib/ -lundumpi"
123 124
    AC_SUBST(DUMPI_LIBS)
    AC_SUBST(DUMPI_CFLAGS)
125 126 127 128
else
	AM_CONDITIONAL(USE_DUMPI, false)
fi

129 130 131
# check for Cortex
AC_ARG_WITH([cortex],[AS_HELP_STRING([--with-cortex@<:@=DIR@:>@],
			[location of Cortex installation])])
132 133 134 135 136 137 138 139 140 141

# check for Python
AC_ARG_WITH([python],[AS_HELP_STRING([--with-python@<:@=DIR@:>@],
			[location of Python 2.7 installation])])

# check for Boost Python
AC_ARG_WITH([boost],[AS_HELP_STRING([--with-boost@<:@=DIR@:>@],
			[location of Boost Python installation])])

if [ test "x${with_python}" != "x" -a "x${with_boost}" != "x"] ; then
142
        AC_CHECK_FILES([${with_python}/lib/libpython2.7.so ${with_boost}/lib/libboost_python.a],
143 144 145 146 147 148 149 150 151 152
                AM_CONDITIONAL(USE_PYTHON, true),
                AC_MSG_ERROR(Could not find Python and/or Boost-Python libraries))
        PYTHON_CFLAGS="-I${with_python}/include -I${with_boost}/include"
        PYTHON_LIBS="-L${with_boost}/lib -lboost_python -L${with_python}/lib/ -lpython2.7"
        AC_SUBST(PYTHON_LIBS)
        AC_SUBST(PYTHON_CFLAGS)
else
        AM_CONDITIONAL(USE_PYTHON, false)
fi

153
if test "x${with_cortex}" != "x" ; then
154
	 AC_CHECK_FILES([${with_cortex}/lib/libcortex.a ${with_cortex}/lib/libcortex-mpich.a],
155
		AM_CONDITIONAL(USE_CORTEX, true),
156
		AC_MSG_ERROR(Could not find Cortex libraries libcortex.a and/or libcortex-mpich.a))
157
	CORTEX_CFLAGS="-I${with_cortex}/include"
158
	CORTEX_LIBS="-L${with_cortex}/lib/ -lcortex-mpich -lcortex -lstdc++"
159 160 161 162 163 164
	AC_SUBST(CORTEX_LIBS)
	AC_SUBST(CORTEX_CFLAGS)
else
	AM_CONDITIONAL(USE_CORTEX, false)
fi

165 166 167 168 169 170 171 172
if [ test "x${with_cortex}" != "x" -a "x${with_python}" != "x" -a "x${with_boost}" != "x"] ; then
	AC_CHECK_FILE([${with_cortex}/lib/libcortex-python.a],
		AM_CONDITIONAL(USE_CORTEX_PYTHON, true),
		AC_MSG_ERROR(Could not find library libcortex-python.a))
	CORTEX_PYTHON_CFLAGS="-I${with_cortex}/include"
	CORTEX_PYTHON_LIBS="-L${with_cortex}/lib/ -lcortex-python"
	AC_SUBST(CORTEX_PYTHON_LIBS)
	AC_SUBST(CORTEX_PYTHON_CFLAGS)
173
else
174
	AM_CONDITIONAL(USE_CORTEX_PYTHON, false)
175 176
fi

177 178 179 180 181 182 183 184 185 186 187 188 189
dnl ======================================================================
dnl  Try harder to be valgrind safe
dnl ======================================================================
AC_ARG_ENABLE(valgrind-clean,
        [AS_HELP_STRING(
                [--enable-valgrind-clean],
                [Try harder to avoid valgrind warnings])
        ])

AS_IF([test "x$enable_valgrind_clean" = "xyes"], [
      AC_DEFINE([VALGRIND], [1], [If enabling valgrind-clean build])
])

190

191
dnl AC_CONFIG_FILES([src/iokernellang/codesparser.y])
192 193 194
if test "x$srcdir" != "x."; then
    AC_CONFIG_LINKS([tests/conf:$srcdir/tests/conf])
fi
195 196 197

AC_CONFIG_FILES([Makefile])

198
AC_OUTPUT([maint/codes.pc])
199
AC_OUTPUT([src/network-workloads/conf/dragonfly-custom/modelnet-test-dragonfly-1728-nodes.conf])
200