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
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
   AS_IF([test x$MPI_LAUNCH = x],[])
   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])
         PKG_CHECK_MODULES([YAXT],[yaxt],
           [enable_yaxt=yes
            AC_DEFINE([HAVE_YAXT],,
              [yaxt library is available])
           ],[enable_yaxt=no])
        ])
      dnl if not both scales-ppm and yaxt are available, netcdf can only be
      dnl used in serial mode
      AS_IF([test x$enable_ppm != xyes -o x$enable_yaxt = xno],
        [HAVE_PARALLEL_NC4=0])
     ])
  ],
133
134
  [MPI_LAUNCH="`pwd`/util/serialrun"
   AC_SUBST([MPI_LAUNCH])])
135
136
137
138
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])
139
AM_CONDITIONAL([USE_MPI],[test x"$USE_MPI" = xyes])
140
AC_SUBST([USE_MPI])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
141
142
143
144
#  ----------------------------------------------------------------------
#  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],
145
                             [Create Fortran Interface via iso_c_bindings facility of F2003 [default=no]]).
Uwe Schulzweida's avatar
Uwe Schulzweida committed
146
147
              ,enable_isoc=${enableval},enable_isoc=no)
AM_CONDITIONAL([CREATE_ISOC],[test $enable_isoc = 'yes'])
148
149
150
151
152
153
154
155
156
157
# 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
158
#  Check the module extension of the fortran compiler
159
160
AS_IF([test -n "$FC" && test "X$FC" != "Xno"],
  [ACX_SL_FC_MOD_SUFFIX(,[FCMODEXT=mod])])
161
# -----------------------------------------------------------------------
162
163
# Check for SWIG - Generator for script-language bindings
AC_ARG_ENABLE(swig,
164
165
166
167
              [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"])
168
169
170
#  ----------------------------------------------------------------------
#  Create the Ruby Interface via swig
AC_ARG_ENABLE(ruby,
171
  [AS_HELP_STRING([--enable-ruby],[ruby language bindings [default=no] (EXPERIMENTAL)])],
172
  [AC_CHECK_PROG(RUBY,ruby,ruby)
173
   RUBY_INCLUDES="$($RUBY $srcdir/config/interface.rb)"
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
   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])])
190
#  ----------------------------------------------------------------------
191
#  Create the Python Interface via swig
192
AC_ARG_ENABLE(python,
193
  [AS_HELP_STRING([--enable-python],[python language bindings [default=no] (EXPERIMENTAL)])],
194
  [AC_CHECK_PROG(PYTHON,python,python)
Thomas Jahns's avatar
Thomas Jahns committed
195
196
197
198
199
200
201
202
203
204
205
206
   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"],
207
         [AS_IF([test "x$SWIG" = "x"],
Thomas Jahns's avatar
Thomas Jahns committed
208
209
                [AC_MSG_NOTICE([Python bindings: Swig is disabled, pregenerated files will be used. Use '--enable-swig' for swig usage])],
                [PYTHON=])],
210
211
212
213
214
215
216
217
218
                [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
219
#  ----------------------------------------------------------------------
220
#  Check C / Fortran interface
221
ACX_CHECK_CFINT([$srcdir/src/cfortran.h])
222
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
223

224
AC_SUBST([CPPFLAGS])
Uwe Schulzweida's avatar
Uwe Schulzweida committed
225

226
227
228
229
230
231
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 \
232
233
                 tests/test_cksum_ieg \
                 tests/pio_write_run \
Thomas Jahns's avatar
Thomas Jahns committed
234
235
236
237
                 tests/pio_cksum_mpinonb \
                 tests/pio_cksum_fpguard \
                 tests/pio_cksum_asynch \
                 tests/pio_cksum_writer \
238
                 tests/pio_cksum_cdf \
239
                 util/serialrun],[chmod a+x "$ac_file"])
240

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

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

251
252
AS_IF([test "$ac_cv_prog_cc_c99" = "no"],
      [AC_MSG_NOTICE([
253

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

  Configuration completed.

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