configure.ac 10.5 KB
Newer Older
1
#  Process this file with autoconf to produce a configure script.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
2

3
AC_INIT([cdi], [1.5.6], [http://code.zmaw.de/projects/cdi])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
4

Uwe Schulzweida's avatar
Uwe Schulzweida committed
5
6
echo "configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}"

Uwe Schulzweida's avatar
Uwe Schulzweida committed
7
CONFIG_ABORT=yes
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
AC_CONFIG_AUX_DIR([config])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_HOST
AC_CANONICAL_BUILD

# Checks for username, hostname and system type
USERNAME=$LOGNAME
if test -z "$USERNAME" ; then USERNAME=$USER; fi;
if test -z "$USERNAME" ; then USERNAME="unknown"; fi;
AC_DEFINE_UNQUOTED([USER_NAME],["$USERNAME"], [User name])
AC_SUBST([USER_NAME],["$USERNAME"])
AS_IF([test -z "$HOST"],
      [HOST=unknown
       AS_IF([test -x /bin/hostname],[HOST=$(hostname)],
             [AS_IF([test -x /bin/uname],
                    [HOST=$(uname -n)])])])
AC_DEFINE_UNQUOTED([HOST_NAME],["$HOST"],[Host name])
AC_SUBST([HOST_NAME],["$HOST"])
AC_DEFINE_UNQUOTED([SYSTEM_TYPE],["$ac_cv_build"], [System type])
AC_SUBST([SYSTEM_TYPE],["$ac_cv_build"])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
28
29

AM_INIT_AUTOMAKE
30
31
32
33
34
35
AM_CONFIG_HEADER([src/config.h])
AM_MAINTAINER_MODE([disable])

# Set up libtool.
AC_MSG_NOTICE([setting up libtool])
LT_INIT([pic-only])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
36

37
38
# Check building environment
AC_CHECK_TOOL([CC],[gcc],[:])
39
AC_PROG_CC_C99
40
AC_PROG_FC
41
42
43
44
45
AS_IF([test -n "$FC" && test "X$FC" != "Xno"],
  [AC_FC_SRCEXT([f90])
   AC_LANG_PUSH([Fortran])
   AC_PROG_FPP
   AC_LANG_POP([Fortran])])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
46
47
AC_PROG_F77
AC_PROG_RANLIB
48
AC_PROG_CXX
49
50
AC_CHECK_PROG(SED,sed,sed,false)
AC_CHECK_PROG(GREP,grep,grep,false)
51
52
53
54
55
56
57
58
59
60
61
62
AC_PROG_INSTALL
AC_CHECK_TOOL([AR],[ar],[:])
AC_CHECK_TOOL([CPP],[cpp],[:])
AC_CHECK_TOOL([LD],[ld],[:])
AC_CHECK_TOOL([NM],[nm],[:])
AC_CHECK_TOOL([AS],[as],[:])
AC_CHECK_TOOL([DLLTOOL],[dlltool],[:])
AC_CHECK_TOOL([OBJDUMP],[objdump],[:])
AC_CHECK_TOOL([STRIP],[strip],[:])
AC_CHECK_TOOL([RANLIB],[ranlib],[:])
#  ----------------------------------------------------------------------
# Check large file support on 32 bit systems
Uwe Schulzweida's avatar
Uwe Schulzweida committed
63
AC_SYS_LARGEFILE
64
65
#  ----------------------------------------------------------------------
# Checks for library functions.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
66
AC_FUNC_MMAP
67
68
#  ----------------------------------------------------------------------
# Checks for library malloc.
Uwe Schulzweida's avatar
Uwe Schulzweida committed
69
AC_CHECK_LIB(malloc, malloc)
70
#  ----------------------------------------------------------------------
71
72
# Checks for structures.
AC_CHECK_MEMBERS([struct stat.st_blksize])
73
#  ----------------------------------------------------------------------
Uwe Schulzweida's avatar
Uwe Schulzweida committed
74
75
# Checks for header files
AC_CHECK_HEADERS(malloc.h)
76
#  ----------------------------------------------------------------------
Uwe Schulzweida's avatar
Uwe Schulzweida committed
77
78
# Checks for the availability of functions
AC_CHECK_FUNCS(mallinfo)
79
#  ----------------------------------------------------------------------
80
# Checks for the availability of ANSI-C99 functions
81
82
AC_CHECK_DECLS([isnan],,,[AC_INCLUDES_DEFAULT
@%:@include <math.h>])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
83
84
85
86
#  ----------------------------------------------------------------------
#  Check for math library
AC_CHECK_LIB(m, floor)
#  ----------------------------------------------------------------------
87
88
# Add basic configure options
ACX_OPTIONS
Uwe Schulzweida's avatar
Uwe Schulzweida committed
89
#  ----------------------------------------------------------------------
90
# Compile with MPI support
91
AC_ARG_ENABLE(mpi,AS_HELP_STRING([--enable-mpi],[Compile with MPI compiler [default=no]]),enable_mpi=yes,enable_mpi=no)
92
93
AS_IF([test x"${enable_mpi}" = x"yes"],
      [USE_MPI=yes])
94
HAVE_PARALLEL_NC4=0
95
AS_IF([test x"$USE_MPI" = xyes],
96
  [AC_DEFINE([USE_MPI],[1],[parallel I/O requested and available])
Thomas Jahns's avatar
Thomas Jahns committed
97
   AC_PATH_PROGS([MPI_LAUNCH],[mpirun mpiexec],[])
98
   AS_IF([test x$MPI_LAUNCH = x],[])
99
100
101
   PKG_CHECK_MODULES([YAXT],[yaxt],
     [AC_DEFINE([HAVE_YAXT],,[yaxt library is available])],
     [AC_MSG_FAILURE([Required yaxt library unavailable.])])
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
   AS_IF([test x"$ENABLE_NC4" = xyes],
     [AC_CHECK_HEADERS([netcdf_par.h],
        [AC_CHECK_DECL([MPI_Bcast],
           [HAVE_PARALLEL_NC4=1],
           [AC_MSG_WARN([The supplied netCDF library does not support MPI parallel invocations])],
           [AC_INCLUDES_DEFAULT
@%:@include <netcdf_par.h>])],
        [AC_CHECK_DECL([MPI_Bcast],
           [HAVE_PARALLEL_NC4=1],
           [AC_MSG_WARN([The supplied netCDF library does not support MPI parallel invocations])],
           [AC_INCLUDES_DEFAULT
@%:@include <netcdf.h>])
])
      dnl parallel netCDF support still requires ScalES-PPM and YAXT to
      dnl re-arrange the data when running with more than one collector
      AS_IF([test $HAVE_PARALLEL_NC4 = 1],
        [PKG_CHECK_MODULES([PPM_CORE],[scales-ppm-core],
           [enable_ppm=yes
            AC_DEFINE([HAVE_PPM_CORE],,
              [ScalES PPM C core library is available])
           ],
           [enable_ppm=no])
        ])
      dnl if not both scales-ppm and yaxt are available, netcdf can only be
      dnl used in serial mode
127
      AS_IF([test x$enable_ppm != xyes],
128
129
130
        [HAVE_PARALLEL_NC4=0])
     ])
  ],
131
132
  [MPI_LAUNCH="`pwd`/util/serialrun"
   AC_SUBST([MPI_LAUNCH])])
133
134
135
136
AS_IF([test $HAVE_PARALLEL_NC4 -gt 0],
  [AC_DEFINE([HAVE_PARALLEL_NC4],[1],
             [netCDF library does support MPI parallel invocations])])
AC_SUBST([HAVE_PARALLEL_NC4])
137
AM_CONDITIONAL([USE_MPI],[test x"$USE_MPI" = xyes])
138
AC_SUBST([USE_MPI])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
139
140
141
142
#  ----------------------------------------------------------------------
#  Create the Fortran Interface via iso_c_binding module (Fortran 2003 Standard)
AC_ARG_ENABLE(iso-c-interface,
              AS_HELP_STRING([--enable-iso-c-interface],
143
                             [Create Fortran Interface via iso_c_bindings facility of F2003 [default=no]]).
Uwe Schulzweida's avatar
Uwe Schulzweida committed
144
145
              ,enable_isoc=${enableval},enable_isoc=no)
AM_CONDITIONAL([CREATE_ISOC],[test $enable_isoc = 'yes'])
146
147
148
149
150
151
152
153
154
155
# in case the Fortran interface uses the more modern F90-style interface,
# the FCFLAGS for users of the library have to include a switch to use the
# .mod file
CDI_F90_INTERFACE_FCFLAGS=''
AS_IF([test "x${enable_isoc}" = "xyes"],
  [AC_LANG_PUSH([Fortran])
   ACX_SL_FC_CHECK_MOD_PATH_FLAG
   AC_LANG_POP([Fortran])
   CDI_F90_INTERFACE_FCFLAGS="${FC_MOD_FLAG}${includedir}"])
AC_SUBST([CDI_F90_INTERFACE_FCFLAGS])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
156
#  Check the module extension of the fortran compiler
157
158
AS_IF([test -n "$FC" && test "X$FC" != "Xno"],
  [ACX_SL_FC_MOD_SUFFIX(,[FCMODEXT=mod])])
159
# -----------------------------------------------------------------------
160
161
# Check for SWIG - Generator for script-language bindings
AC_ARG_ENABLE(swig,
162
163
164
165
              [AS_HELP_STRING([--enable-swig],[use swig to create extra bindings [default=no] (EXPERIMENTAL)])],
              [AC_CHECK_PROG(SWIG,swig,swig)],
              [enable_swig=no])
AM_CONDITIONAL(ENABLE_SWIG,[test "x$SWIG" != "x"])
166
167
168
#  ----------------------------------------------------------------------
#  Create the Ruby Interface via swig
AC_ARG_ENABLE(ruby,
169
  [AS_HELP_STRING([--enable-ruby],[ruby language bindings [default=no] (EXPERIMENTAL)])],
170
  [AC_CHECK_PROG(RUBY,ruby,ruby)
171
   RUBY_INCLUDES="$($RUBY $srcdir/config/interface.rb)"
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
   save_CPPFLAGS=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $RUBY_INCLUDES"
   AC_CHECK_HEADER([ruby.h],,[enable_ruby=no
                              RUBY=
                             ])
   CPPFLAGS=$save_CPPFLAGS
   AS_IF([test "x$RUBY" != "x"],
         [AS_IF([test "x$SWIG" = "x"],
                [AC_MSG_NOTICE([Ruby bindings: Swig is disabled, pregenerated files will be used. Use '--enable-swig' for swig usage])])],
                [AS_IF([test `$SWIG -help 2>&1 | $GREP -c '\-ruby *- Generate'` = 0],
                       [AC_MSG_NOTICE([No (swig does not support -ruby option)])
                        enable_ruby=no
                       ])])],
  [enable_ruby=no])
AM_CONDITIONAL(ENABLE_RUBY,[test "x$enable_ruby" != "xno"])
AS_IF([test "x$enable_ruby" != "xno"],[AC_SUBST([ENABLE_RUBY],[true])],[AC_SUBST([ENABLE_RUBY],[false])])
188
#  ----------------------------------------------------------------------
189
#  Create the Python Interface via swig
190
AC_ARG_ENABLE(python,
191
  [AS_HELP_STRING([--enable-python],[python language bindings [default=no] (EXPERIMENTAL)])],
192
  [AC_CHECK_PROG(PYTHON,python,python)
Thomas Jahns's avatar
Thomas Jahns committed
193
194
195
196
197
198
199
200
201
202
203
204
   enable_python=no
   for PYTHON_INCLUDES in \
     "-I`$PYTHON -c 'from distutils import sysconfig;print sysconfig.get_python_inc()'`" \
     "-I`$PYTHON -c 'from distutils import sysconfig;print sysconfig.get_python_lib(1,1)' | $SED 's/lib/include/'`"
   do
     save_CPPFLAGS=$CPPFLAGS
     CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
     AC_CHECK_HEADER([Python.h],[enable_python=yes
       break])
     CPPFLAGS=$save_CPPFLAGS
   done
   AS_IF([test "x$enable_python" != "xno"],
205
         [AS_IF([test "x$SWIG" = "x"],
Thomas Jahns's avatar
Thomas Jahns committed
206
207
                [AC_MSG_NOTICE([Python bindings: Swig is disabled, pregenerated files will be used. Use '--enable-swig' for swig usage])],
                [PYTHON=])],
208
209
210
211
212
213
214
215
216
                [AS_IF([test `$SWIG -help 2>&1 | $GREP -c '\-python *- Generate'` = 0],
                       [AC_MSG_NOTICE([No (swig does not support -python option)])
                        enable_python=no
                       ])])],
  [enable_python=no])
AM_CONDITIONAL(ENABLE_PYTHON, [test "x$enable_python" != "xno"])
AS_IF([test "x$enable_python" != "xno"],[AC_SUBST([ENABLE_PYTHON],[true])],[AC_SUBST([ENABLE_PYTHON],[false])])
#  ----------------------------------------------------------------------
AM_CONDITIONAL(CREATE_INTERFACES, [test  "x$enable_ruby" = "xyes" -o "x$enable_python" = "xyes"])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
217
#  ----------------------------------------------------------------------
218
#  Check C / Fortran interface
219
ACX_CHECK_CFINT([$srcdir/src/cfortran.h])
220
AM_CONDITIONAL([USE_FC],[test -n "$FC" && test "X$FC" != "Xno" && test x$acx_cv_check_cfint = "xyes"])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
221

222
AC_SUBST([CPPFLAGS])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
223

224
225
226
227
228
229
AC_CONFIG_FILES([tests/test_cksum_grib \
                 tests/test_cksum_nc \
                 tests/test_cksum_nc2 \
                 tests/test_cksum_nc4 \
                 tests/test_cksum_extra \
                 tests/test_cksum_service \
230
231
                 tests/test_cksum_ieg \
                 tests/pio_write_run \
Thomas Jahns's avatar
Thomas Jahns committed
232
233
234
235
                 tests/pio_cksum_mpinonb \
                 tests/pio_cksum_fpguard \
                 tests/pio_cksum_asynch \
                 tests/pio_cksum_writer \
236
                 tests/pio_cksum_cdf \
237
                 util/serialrun],[chmod a+x "$ac_file"])
238

239
240
AC_OUTPUT([Makefile src/Makefile interfaces/Makefile app/Makefile \
	tests/Makefile examples/Makefile cdi.settings \
Uwe Schulzweida's avatar
Uwe Schulzweida committed
241
	examples/pio/Makefile src/pkgconfig/cdi.pc])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
242

243
244
245
#  ----------------------------------------------------------------------
#  Show configuration
AC_MSG_NOTICE([CDI is configured with the following options:])
246
./config.status cdi.settings
247
cat cdi.settings
248

249
250
AS_IF([test "$ac_cv_prog_cc_c99" = "no"],
      [AC_MSG_NOTICE([
251

252
253
  Warning: The C compiler does not accept ANSI C99 source code!
])])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
254
255
256
257
258
259
AC_MSG_NOTICE([

  Configuration completed.

    You can now say 'make' to compile the CDI package and 'make install' to install it afterwards.
])