configure.ac 4.3 KB
Newer Older
Pedro Gonnet's avatar
Pedro Gonnet committed
1

2
# This file is part of SWIFT.
Pedro Gonnet's avatar
Pedro Gonnet committed
3
# Coypright (c) 2012 pedro.gonnet@durham.ac.uk.
4
#
Pedro Gonnet's avatar
Pedro Gonnet committed
5
6
7
8
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
9
#
Pedro Gonnet's avatar
Pedro Gonnet committed
10
11
12
13
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
14
#
Pedro Gonnet's avatar
Pedro Gonnet committed
15
16
17
18
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# init the project
19
20
21
AC_INIT([SWIFT],[0.1.0])
AC_CONFIG_SRCDIR([src/space.c])
AM_INIT_AUTOMAKE
Peter W. Draper's avatar
Peter W. Draper committed
22
AC_USE_SYSTEM_EXTENSIONS
23

Peter W. Draper's avatar
Peter W. Draper committed
24
LT_INIT
Pedro Gonnet's avatar
Pedro Gonnet committed
25
26
27
28
29
30
31
32

# my own macro collection
AC_CONFIG_MACRO_DIR([m4])

# generate header file
AM_CONFIG_HEADER(config.h)

# find and test the compiler
Peter W. Draper's avatar
Peter W. Draper committed
33
AC_PROG_CC
34
35
36
37
38
39
40
41
42
43
44
45
AM_PROG_CC_C_O

# Check for MPI. Need to do this before characterising the compiler (C99 mode).
AC_ARG_ENABLE([mpi],
    [AS_HELP_STRING([--enable-mpi],[compile with functionality for distributed-memory parallelim using MPI @<:@default=yes@:>@])],
    [if test "x$enable_mpi" != "xno"
     then
        ACX_MPI([ CC="$MPICC" AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.]) ])
     fi],
    [ACX_MPI([ CC="$MPICC" AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.]) ])])
AM_CONDITIONAL([HAVEMPI],[test -n "$MPICC"])

Pedro Gonnet's avatar
Pedro Gonnet committed
46
AC_PROG_CC_C99
Peter W. Draper's avatar
Peter W. Draper committed
47
48
AC_C_INLINE

49
AX_CC_MAXOPT
Pedro Gonnet's avatar
Pedro Gonnet committed
50
51
52
AX_FUNC_POSIX_MEMALIGN
AX_GCC_ARCHFLAG([no])

53
54
55
56
57
#  Check SSE & AVX support.
AX_EXT
if test "$SIMD_FLAGS" != ""; then
   CFLAGS="$CFLAGS $SIMD_FLAGS"
fi
Peter W. Draper's avatar
Peter W. Draper committed
58

Pedro Gonnet's avatar
Pedro Gonnet committed
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# autoconf stuff
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_HEADER_STDC

# check for the libraries we will need
AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR(something is wrong with the math library!))

# Check for pthreads
ACX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
    CC="$PTHREAD_CC" LDFLAGS="$PTHREAD_LIBS $LIBS"],
    AC_MSG_ERROR([Could not find a working version of
    the pthread library. Make sure you have the library and header files installed
    or use CPPFLAGS and LDFLAGS if the library is installed in a
    non-standard location.]))
74

75
76
77
78
79
80
81
82
83
84
85

# Check for OpenMP
AC_OPENMP
AC_SUBST(OPENMP_CFLAGS)
if test -z "${OPENMP_CFLAGS}"; then
   echo $OPENMP_CFLAGS
   AC_MSG_ERROR(Compiler does not support OpenMP, 1)
else
   CFLAGS="$CFLAGS $OPENMP_CFLAGS"
fi

86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# Check for metis
AC_ARG_WITH([metis],
    [AS_HELP_STRING([--with-metis=PATH],[prefix where the metis library is installed @<:@default=yes@:>@])],
    [if test "x$with_metis" != "xno"
     then
        if test "x$with_metis" != "xyes" -a "x$with_metis" != "x"
        then
            METIS_LDFLAGS="-L$with_metis -lmetis"
        else
            METIS_LDFLAGS="-lmetis"
        fi
        AC_CHECK_LIB([metis],[METIS_PartGraphKway],,AC_MSG_ERROR(something is wrong with the metis library!),$METIS_LDFLAGS)
        AC_DEFINE([HAVE_METIS],[true],[The metis library appears to be present.])
	AC_DEFINE(WITH_METIS, 1, [METIS library installed])
     fi])
AC_SUBST(METIS_LDFLAGS)
AM_CONDITIONAL([HAVEMETIS],[test -n "$METIS_LDFLAGS"])


Pedro Gonnet's avatar
Pedro Gonnet committed
105
# check for zlib
106
107
108
109
AC_CHECK_LIB(z,gzopen,[
    AC_DEFINE([HAVE_LIBZ],[1],[Set to 1 if zlib is installed.])
    LDFLAGS="$LDFLAGS -lz"
    ],[])
Pedro Gonnet's avatar
Pedro Gonnet committed
110
111


112
# Check for HDF5
113
AX_LIB_HDF5()
114

Pedro Gonnet's avatar
Pedro Gonnet committed
115
116
117
# check for setaffinity
AC_CHECK_FUNC( pthread_setaffinity_np , AC_DEFINE([HAVE_SETAFFINITY],[true],
    [Defined if pthread_setaffinity_np exists.]) )
118

Pedro Gonnet's avatar
Pedro Gonnet committed
119
120
121
122
123
124
125
126
127
# Check for timing functions needed by cycle.h
AC_HEADER_TIME
AC_CHECK_HEADERS([sys/time.h c_asm.h intrinsics.h mach/mach_time.h])
AC_CHECK_TYPE([hrtime_t],[AC_DEFINE(HAVE_HRTIME_T, 1, [Define to 1 if hrtime_t is defined in <sys/time.h>])],,[#if HAVE_SYS_TIME_H
#include <sys/time.h>
#endif])
AC_CHECK_FUNCS([gethrtime read_real_time time_base_to_time clock_gettime mach_absolute_time])
AC_MSG_CHECKING([for _rtc intrinsic])
rtc_ok=yes
Peter W. Draper's avatar
Peter W. Draper committed
128
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_INTRINSICS_H
Pedro Gonnet's avatar
Pedro Gonnet committed
129
#include <intrinsics.h>
Peter W. Draper's avatar
Peter W. Draper committed
130
#endif]], [[_rtc()]])],[AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])],[rtc_ok=no])
Pedro Gonnet's avatar
Pedro Gonnet committed
131
132
133
AC_MSG_RESULT($rtc_ok)

# make the documentation
134
DX_INIT_DOXYGEN(libswift,doc/Doxyfile,doc/)
Pedro Gonnet's avatar
Pedro Gonnet committed
135

136
137
# .in files.
AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile doc/Makefile doc/Doxyfile])
Pedro Gonnet's avatar
Pedro Gonnet committed
138

139
140
# generate output.
AC_OUTPUT