configure.ac 4.18 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
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Coypright (c) 2012 pedro.gonnet@durham.ac.uk.
# 
# 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.
# 
# 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.
# 
# 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
22
AC_INIT([SWIFT],[0.1.0])
AC_CONFIG_SRCDIR([src/space.c])
AM_INIT_AUTOMAKE

Peter W. Draper's avatar
Peter W. Draper committed
23
24
AC_USE_SYSTEM_EXTENSIONS
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
Pedro Gonnet's avatar
Pedro Gonnet committed
34
AC_PROG_CC_C99
Peter W. Draper's avatar
Peter W. Draper committed
35
36
AC_C_INLINE

Pedro Gonnet's avatar
Pedro Gonnet committed
37
38
39
40
41
# AX_CC_MAXOPT
AX_FUNC_POSIX_MEMALIGN
AX_GCC_ARCHFLAG([no])
AX_EXT

Peter W. Draper's avatar
Peter W. Draper committed
42

Pedro Gonnet's avatar
Pedro Gonnet committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 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.]))
    
59
60
61
62
63
64
65
66
67
68
69
70
    
# Check for MPI
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"])

    
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# 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
90
# check for zlib
91
92
93
94
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
95
96
97
98
99

# check for memalign
AX_FUNC_POSIX_MEMALIGN

# Check for OpenMP
Peter W. Draper's avatar
Peter W. Draper committed
100
AC_OPENMP
Pedro Gonnet's avatar
Pedro Gonnet committed
101
AC_SUBST(OPENMP_CFLAGS)
102
103
104
105
if test -z "${OPENMP_CFLAGS}"; then
   echo $OPENMP_CFLAGS
   AC_MSG_ERROR(Compiler does not support OpenMP, 1)
fi
Pedro Gonnet's avatar
Pedro Gonnet committed
106

107
# Check for HDF5
108
AX_LIB_HDF5()
109

Pedro Gonnet's avatar
Pedro Gonnet committed
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# check for setaffinity
AC_USE_SYSTEM_EXTENSIONS
AC_CHECK_FUNC( pthread_setaffinity_np , AC_DEFINE([HAVE_SETAFFINITY],[true],
    [Defined if pthread_setaffinity_np exists.]) )
    
# 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
124
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_INTRINSICS_H
Pedro Gonnet's avatar
Pedro Gonnet committed
125
#include <intrinsics.h>
Peter W. Draper's avatar
Peter W. Draper committed
126
#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
127
128
129
AC_MSG_RESULT($rtc_ok)

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

132
133
# .in files.
AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile doc/Makefile doc/Doxyfile])
Pedro Gonnet's avatar
Pedro Gonnet committed
134

135
136
# generate output.
AC_OUTPUT