configure.ac 6.23 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.5.2], [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])])

Jonathan Jenkins's avatar
Jonathan Jenkins committed
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 91 92
# check for enable-g
AC_ARG_ENABLE([g],[AS_HELP_STRING([--enable-g],
			[Build with GDB symbols])],
		[use_debug=yes],[use_debug=no])
AM_CONDITIONAL(USE_DEBUG, ["x${use_debug}" = xyes])

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])])
Philip Carns's avatar
Philip Carns committed
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 116 117 118 119 120 121 122
#check for Dumpi
AC_ARG_WITH([dumpi],[AS_HELP_STRING([--with-dumpi@<:@=DIR@:>@],
                        [location of Dumpi installation])])
if test "x${with_dumpi}" != "x" ; then
	AC_CHECK_FILE([${with_dumpi}/lib/libundumpi.la],
                  AM_CONDITIONAL(USE_DUMPI, true),
                  AC_MSG_ERROR(Could not find libundumpi.la))
	DUMPI_CFLAGS="-I${with_dumpi}/include"
#	DUMPI_CFLAGS+=" -I${with_dumpi}/include/dumpi/common" 
#	DUMPI_CFLAGS+=" -I${with_dumpi}/include/dumpi/libdumpi"
#	DUMPI_CFLAGS+=" -I${with_dumpi}/include/dumpi/libundumpi"
123
	DUMPI_LIBS="-L${with_dumpi}/lib/ -lundumpi"
124 125 126 127 128 129
	AC_SUBST(DUMPI_LIBS)
	AC_SUBST(DUMPI_CFLAGS)
else
	AM_CONDITIONAL(USE_DUMPI, false)
fi

130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
# check for Cortex
AC_ARG_WITH([cortex],[AS_HELP_STRING([--with-cortex@<:@=DIR@:>@],
			[location of Cortex installation])])
if test "x${with_cortex}" != "x" ; then
	 AC_CHECK_FILES([${with_cortex}/lib/libcortex.a ${with_cortex}/lib/libcortex-python.a],
		AM_CONDITIONAL(USE_CORTEX, true),
		AC_MSG_ERROR(Could not find Cortex libraries libcortex.a and/or libcortex-python.a))
	CORTEX_CFLAGS="-I${with_cortex}/include"
	CORTEX_LIBS="-L${with_cortex}/lib/ -lcortex-python -lcortex -lstdc++"
	AC_SUBST(CORTEX_LIBS)
	AC_SUBST(CORTEX_CFLAGS)
else
	AM_CONDITIONAL(USE_CORTEX, false)
fi

# check for Python
AC_ARG_WITH([python],[AS_HELP_STRING([--with-python@<:@=DIR@:>@],
			[location of Python 2.7 installation])])
if test "x${with_python}" != "x" ; then
	AC_CHECK_FILE([${with_python}/lib/libpython2.7.a],
		AM_CONDITIONAL(USE_PYTHON, true),
		AC_MSG_ERROR(Could not find Python library))
	PYTHON_CFLAGS="-I${with_python}/include"
	PYTHON_LIBS="-L${with_python}/lib/ -lpython2.7"
	AC_SUBST(PYTHON_LIBS)
	AC_SUBST(PYTHON_CFLAGS)
else
	AM_CONDITIONAL(USE_PYTHON, false)
fi

# check for Boost Python
AC_ARG_WITH([boost],[AS_HELP_STRING([--with-boost@<:@=DIR@:>@],
			[location of Boost Python installation])])
if test "x${with_boost}" != "x" ; then
	AC_CHECK_FILE([${with_boost}/lib/libboost_python.a],
		AM_CONDITIONAL(USE_BOOST, true),
		AC_MSG_ERROR(Could not find Boost Python library libboost_python.a))
	BOOST_CFLAGS="-I${with_boost}/include"
	BOOST_LIBS="-L${with_boost}/lib -lboost_python"
	AC_SUBST(BOOST_LIBS)
	AC_SUBST(BOOST_CFLAGS)
else
	AM_CONDITIONAL(USE_BOOST, false)
fi

Philip Carns's avatar
Philip Carns committed
175 176 177 178 179 180 181 182 183 184 185 186 187
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])
])

188

189
dnl AC_CONFIG_FILES([src/iokernellang/codesparser.y])
Philip Carns's avatar
Philip Carns committed
190 191 192
if test "x$srcdir" != "x."; then
    AC_CONFIG_LINKS([tests/conf:$srcdir/tests/conf])
fi
193 194 195

AC_CONFIG_FILES([Makefile])

196
AC_OUTPUT([maint/codes.pc])