configure.ac 4.22 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 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
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.67])
AC_INIT([codes-base], [0.2], [http://trac.mcs.anl.gov/projects/codes/newticket],[],[http://trac.mcs.anl.gov/projects/codes/wiki])

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])])

AC_CONFIG_SRCDIR([README.txt])
AC_CONFIG_HEADERS([codes_config.h])

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

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

# 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)
    AC_MSG_ERROR(CC doesn't appear to be a valid MPI compiler.  See INSTALL document or try adding CC=mpicc to your configure command line.)
)

#
# clear ROSS options
#
ROSS_CFLAGS=""
ROSS_CPPFLAGS=""
ROSS_LDFLAGS=""
ROSS_LIBS=""
ENABLE_ROSS=0
AC_ARG_WITH([ross],[AS_HELP_STRING([--with-ross@<:@=DIR@:>@],
                        [location of ROSS installation])])
#
# if we have ROSS, add ROSS flags
#
if test "x${with_ross}" != "x" ; then
    ORIG_LDFLAGS="${LDFLAGS}"
    ORIG_CPPFLAGS="${CPPFLAGS}"
    ORIG_LIBS="${LIBS}"
    ORIG_CFLAGS="${CFLAGS}"

    checkpath="${with_ross}/bin"
    ROSS_CONFIG=""
    AC_CHECK_PROGS(ROSS_CONFIG, [ross-config], [NOT_FOUND], [$checkpath])
    if test "${ROSS_CONFIG}" = "NOT_FOUND" ; then 
        AC_MSG_ERROR(ROSS not found at: $with_ross)
    fi

    if test "${ROSS_CONFIG}x" != "x" ; then
    
        LDFLAGS=`${with_ross}/bin/ross-config --ldflags`
        CFLAGS=`${with_ross}/bin/ross-config --cflags`
        CPPFLAGS=`${with_ross}/bin/ross-config --cflags`
        LIBS=`${with_ross}/bin/ross-config --libs`

        ENABLE_ROSS=1
        AC_CHECK_LIB([ROSS],[tw_init],,[ENABLE_ROSS=;])
        if test -z "$ENABLE_ROSS" ; then
            ENABLE_ROSS=0
            AC_MSG_ERROR([Could not find usable ROSS library])
        fi

        ENABLE_ROSS=1

        #
        # TODO this is weird... need to add -c back to CPPFLAGS or CHECK_HEADERS
        # tries to compile an exe using a c file that includes ross.h and no
        # main()
        #
        CPPFLAGS_2="${CPPFLAGS}"
        CPPFLAGS="-c ${CPPFLAGS}"
        AC_CHECK_HEADERS([ross.h], [], [ENABLE_ROSS=;])
        if test -z "$ENABLE_ROSS" ; then
            ENABLE_ROSS=0
            AC_MSG_ERROR([Could not find usable ross.h])
        else
            CPPFLAGS="${CPPFLAGS_2}"
            checkpath="$PATH"
            AC_SUBST([ROSS_LDFLAGS],["${LDFLAGS}"])
            AC_SUBST([ROSS_CFLAGS],["${CFLAGS}"])
            AC_SUBST([ROSS_CPPFLAGS],["${CPPFLAGS}"])
            AC_SUBST([ROSS_LIBS],["${LIBS}"])
        fi
        CFLAGS="${ORIG_CFLAGS}"
        CPPFLAGS="${ORIG_CPPFLAGS}"
        LDFLAGS="${ORIG_LDFLAGS}"
        LIBS="${ORIG_LIBS}"

        AC_DEFINE([HAVE_ROSS],[1],[If ROSS is supported on target build platform])
    fi
else
    ENABLE_ROSS=0
    AC_MSG_ERROR([Could not find usable ROSS installation, try --with-ross=DIR])
fi

#
# To reactivate rewriting of the codesparser.y file,
# uncomment next line.
#
# NOTE: this will force the latest bison for building,
# even when building from a dist.
#
#
dnl AC_CONFIG_FILES([src/iokernellang/codesparser.y])

AC_CONFIG_FILES([Makefile])

AC_OUTPUT