1 |
|
---|
2 | # -*- Autoconf -*-
|
---|
3 | # Process this file with autoconf to produce a configure script.
|
---|
4 |
|
---|
5 | AC_PREREQ([2.60])
|
---|
6 | AC_INIT([VMG], [0.1], [tremolo-devel@ins.uni-bonn.de])
|
---|
7 |
|
---|
8 | AC_MSG_NOTICE([****************************************************************])
|
---|
9 | AC_MSG_NOTICE([* Configuring solver VMG *])
|
---|
10 | AC_MSG_NOTICE([****************************************************************])
|
---|
11 |
|
---|
12 | AC_CONFIG_SRCDIR([src/mg.cpp])
|
---|
13 | AC_CONFIG_AUX_DIR([build-aux])
|
---|
14 | AC_CONFIG_MACRO_DIR([m4])
|
---|
15 | AC_CONFIG_HEADERS([libvmg_config.h])
|
---|
16 | AM_INIT_AUTOMAKE([1.7 dist-bzip2 1.5 parallel-tests color-tests tar-pax subdir-objects])
|
---|
17 |
|
---|
18 | # We use mostly C++, but may need Fortran compiler infos for Lapack.
|
---|
19 | AC_LANG([C++])
|
---|
20 |
|
---|
21 | # use libtool
|
---|
22 | LT_INIT([static])
|
---|
23 |
|
---|
24 | # Release version switch
|
---|
25 | AC_MSG_CHECKING(whether to enable debug version)
|
---|
26 | AC_ARG_ENABLE([debug],
|
---|
27 | AS_HELP_STRING([--enable-debug], [Compile with debug settings]),
|
---|
28 | enable_debug=$enableval,
|
---|
29 | enable_debug="no")
|
---|
30 | AC_MSG_RESULT($enable_debug)
|
---|
31 | AS_IF([test "$enable_debug" = "no"], [
|
---|
32 | AC_DEFINE([RELEASE], [1], [Release])
|
---|
33 | AC_DEFINE([NDEBUG], [1], [Skip asserts])
|
---|
34 | ])
|
---|
35 |
|
---|
36 | # One-sided communications
|
---|
37 | AC_MSG_CHECKING(whether to enable one-sided MPI2 communications)
|
---|
38 | AC_ARG_ENABLE([one_sided],
|
---|
39 | AS_HELP_STRING([--enable-one-sided], [Enable use of one-sided communications as according to MPI2 standard]),
|
---|
40 | enable_one_sided=$enableval,
|
---|
41 | enable_one_sided="no")
|
---|
42 | AC_MSG_RESULT($enable_one_sided)
|
---|
43 | AS_IF([test "$enable_one_sided" = "yes"], [
|
---|
44 | AC_DEFINE([VMG_ONE_SIDED], [1], [Enable use of one-sided MPI2 communications])
|
---|
45 | ])
|
---|
46 |
|
---|
47 | # Interpolating B-Spline degree
|
---|
48 | AC_ARG_VAR(BSPLINE_DEG, [Degree of interpolating B-Splines. Must be in [3-6].])
|
---|
49 | if test -z "$BSPLINE_DEG"
|
---|
50 | then
|
---|
51 | BSPLINE_DEG=3
|
---|
52 | fi
|
---|
53 | AC_MSG_CHECKING(interpolation b-spline degree)
|
---|
54 | AC_DEFINE_UNQUOTED([BSPLINE_DEGREE], ${BSPLINE_DEG}, [Interpolating B-Spline degree])
|
---|
55 | AC_MSG_RESULT(${BSPLINE_DEG})
|
---|
56 |
|
---|
57 | # Debugging switches
|
---|
58 | AC_MSG_CHECKING(whether to enable debugging)
|
---|
59 | AC_ARG_ENABLE([debug],
|
---|
60 | AS_HELP_STRING([--enable-debug], [Enable debugging]),
|
---|
61 | enable_debug=$enableval,
|
---|
62 | enable_debug="no")
|
---|
63 | AS_IF([test "x$enable_fcs_debug" != "x"],[enable_debug="yes"])
|
---|
64 | AC_MSG_RESULT($enable_debug)
|
---|
65 | AS_IF([test "$enable_debug" = "yes"], [
|
---|
66 | CXXFLAGS=${CXXFLAGS-"-g -O0 -Wall"}
|
---|
67 | AC_DEFINE([DEBUG], [1], [Debugging])
|
---|
68 | ])
|
---|
69 |
|
---|
70 | AC_MSG_CHECKING(whether to enable debug checking of matrices)
|
---|
71 | AC_ARG_ENABLE([debug-check-matrices],
|
---|
72 | AS_HELP_STRING([--enable-debug-check-matrices], [Enable matrix validity checks]),
|
---|
73 | enable_debug_check_matrices=$enableval,
|
---|
74 | enable_debug_check_matrices="no")
|
---|
75 | AC_MSG_RESULT($enable_debug_check_matrices)
|
---|
76 | AS_IF([test "$enable_debug_check_matrices" = "yes"], [
|
---|
77 | AC_DEFINE([DEBUG_MATRIX_CHECKS], [1], [Matrix validity checks])
|
---|
78 | ])
|
---|
79 |
|
---|
80 | AC_MSG_CHECKING(whether to enable MPE profiling)
|
---|
81 | AC_ARG_ENABLE([mpe],
|
---|
82 | AS_HELP_STRING([--enable-mpe], [Enable MPE parallel profiling]),
|
---|
83 | enable_mpe=$enableval,
|
---|
84 | enable_mpe="no")
|
---|
85 | AC_MSG_RESULT($enable_mpe)
|
---|
86 |
|
---|
87 | AC_MSG_CHECKING(whether to enable MPI_Barrier debugging)
|
---|
88 | AC_ARG_ENABLE([debug-barrier],
|
---|
89 | AS_HELP_STRING([--enable-debug-barrier], [Enable MPI_Barrier debugging]),
|
---|
90 | enable_debug_barrier=$enableval,
|
---|
91 | enable_debug_barrier="no")
|
---|
92 | AC_MSG_RESULT($enable_debug_barrier)
|
---|
93 | AS_IF([test "$enable_debug_barrier" = "yes"], [
|
---|
94 | AC_DEFINE([DEBUG_BARRIER], [1], [MPI_Barrier debugging])
|
---|
95 | ])
|
---|
96 |
|
---|
97 | # Several output switches
|
---|
98 | AC_MSG_CHECKING(whether to enable info output)
|
---|
99 | AC_ARG_ENABLE([output-info],
|
---|
100 | AS_HELP_STRING([--enable-output-info], [Enable info output]),
|
---|
101 | enable_output_info=$enableval,
|
---|
102 | enable_output_info="no")
|
---|
103 | AS_IF([test "x$enable_fcs_info" != "x"],[enable_output_info="yes"])
|
---|
104 | AC_MSG_RESULT($enable_output_info)
|
---|
105 | AS_IF([test "$enable_output_info" = "yes"], [
|
---|
106 | AC_DEFINE([OUTPUT_INFO], [1], [Output level info])
|
---|
107 | ])
|
---|
108 |
|
---|
109 | AC_MSG_CHECKING(whether to enable debug output)
|
---|
110 | AC_ARG_ENABLE([output-debug],
|
---|
111 | AS_HELP_STRING([--enable-output-debug], [Enable debug output]),
|
---|
112 | enable_output_debug=$enableval,
|
---|
113 | enable_output_debug="no")
|
---|
114 | AS_IF([test "x$enable_fcs_debug" != "x"],[enable_output_debug="yes"])
|
---|
115 | AC_MSG_RESULT($enable_output_debug)
|
---|
116 | AS_IF([test "$enable_output_debug" = "yes"], [
|
---|
117 | AC_DEFINE([OUTPUT_DEBUG], [1], [Output level debug])
|
---|
118 | ])
|
---|
119 |
|
---|
120 | AC_MSG_CHECKING(whether to enable timing output)
|
---|
121 | AC_ARG_ENABLE([output-timing],
|
---|
122 | AS_HELP_STRING([--enable-output-timing], [Enable timing output]),
|
---|
123 | enable_output_timing=$enableval,
|
---|
124 | enable_output_timing="no")
|
---|
125 | AS_IF([test "x$enable_fcs_timing" != "x"],[enable_output_timing="yes"])
|
---|
126 | AC_MSG_RESULT($enable_output_timing)
|
---|
127 | AS_IF([test "$enable_output_timing" = "yes"], [
|
---|
128 | AC_DEFINE([OUTPUT_TIMING], [1], [Output level timing])
|
---|
129 | ])
|
---|
130 |
|
---|
131 |
|
---|
132 | # Checks for programs.
|
---|
133 | AM_MISSING_PROG([DOXYGEN], [doxygen])
|
---|
134 |
|
---|
135 | # Get the C MPI compiler, because the following AC_FC_WRAPPERS macro works better if CC is from the same "family" as FC (which is MPI).
|
---|
136 | AX_PROG_CC_MPI(,,AC_MSG_FAILURE([The VMG solver requires an MPI C compiler.]))
|
---|
137 |
|
---|
138 | # Do not even look for a non-MPI C++ compiler if MPICXX is set.
|
---|
139 | if test -n "$MPICXX" && test -z "$CXX"; then
|
---|
140 | CXX=$MPICXX
|
---|
141 | fi
|
---|
142 | ACX_MPI([AC_DEFINE([HAVE_MPI], [1],
|
---|
143 | [Define if building the MPI parallel version])
|
---|
144 | CXX=$MPICXX
|
---|
145 | LIBS="$MPILIBS $LIBS"
|
---|
146 | AC_DEFINE([MPICH_SKIP_MPICXX], [1], [Skip C++ bindings])
|
---|
147 | AC_DEFINE([OMPI_SKIP_MPICXX], [1], [Skip C++ bindings])
|
---|
148 | AC_DEFINE([MPI_NO_CPPBIND], [1], [Skip C++ bindings])
|
---|
149 | AC_DEFINE([_MPICC_H], [1], [Skip C++ bindings])
|
---|
150 | AC_DEFINE([MPIBULL_SKIP_MPICXX], [1], [Skip C++ bindings])]
|
---|
151 | if test "$enable_mpe" = "yes"; then
|
---|
152 | AC_DEFINE([HAVE_MPE], [1], [Use MPE parallel profiler])
|
---|
153 | fi,
|
---|
154 | [AC_DEFINE([sequent], [1],
|
---|
155 | [Define if building the serial version])])
|
---|
156 |
|
---|
157 | # Get the Fortran MPI compiler, for Lapack.
|
---|
158 | AC_LANG_PUSH([Fortran])
|
---|
159 | # Do not even look for a non-MPI Fortran compiler if MPIFC is set.
|
---|
160 | AX_PROG_FC_MPI(,,AC_MSG_FAILURE([The VMG solver requires an MPI Fortran compiler.]))
|
---|
161 |
|
---|
162 | # Find out how to call Fortran functions from C.
|
---|
163 | AC_FC_WRAPPERS
|
---|
164 | AC_LANG_POP([Fortran])
|
---|
165 |
|
---|
166 | # Check for the restrict keyword.
|
---|
167 | AC_C_RESTRICT
|
---|
168 |
|
---|
169 | AM_OPTIONS_VTK
|
---|
170 | AM_PATH_VTK([5.8.0],
|
---|
171 | [AC_DEFINE([HAVE_VTK], [1], [VTK present on system])])
|
---|
172 |
|
---|
173 | AC_SUBST([VTK_CXXFLAGS])
|
---|
174 | AC_SUBST([VTK_LDFLAGS])
|
---|
175 | AC_SUBST([VTK_LIBS])
|
---|
176 |
|
---|
177 | # Boost
|
---|
178 | BOOST_REQUIRE([1.34])
|
---|
179 |
|
---|
180 | # Boost headers with libraries
|
---|
181 | BOOST_SYSTEM
|
---|
182 | BOOST_FILESYSTEM
|
---|
183 | BOOST_TEST
|
---|
184 |
|
---|
185 | AM_CONDITIONAL([COND_HAVE_BOOST_UNIT_TEST], [test x"$boost_cv_lib_unit_test_framework" = xyes])
|
---|
186 | AM_CONDITIONAL([COND_HAVE_BOOST_UNIT_TEST_LIB], [test x"$boost_cv_lib_unit_test_framework" = xyes])
|
---|
187 |
|
---|
188 | # use libtool
|
---|
189 | LT_INIT([static])
|
---|
190 | AC_SUBST([LIBTOOL_DEPS])
|
---|
191 |
|
---|
192 | dnl superceded by libtool
|
---|
193 | dnl AC_PROG_RANLIB
|
---|
194 | dnl 4_ifdef([AM_PROG_AR], [AM_PROG_AR])
|
---|
195 |
|
---|
196 | # Define these substitions here to keep all version information in one place.
|
---|
197 | # For information on how to properly maintain the library version information,
|
---|
198 | # refer to the libtool manual, section "Updating library version information":
|
---|
199 | # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
|
---|
200 | AC_SUBST([VMG_SO_VERSION], [1:0:0])
|
---|
201 | AC_SUBST([VMG_API_VERSION], [1.0.0])
|
---|
202 |
|
---|
203 | # Checks for libraries.
|
---|
204 | AC_CHECK_LIB([m], [sqrt])
|
---|
205 | AX_LAPACK
|
---|
206 | AM_CONDITIONAL([HAVE_LAPACK], [test "x$ax_lapack_ok" = xyes])
|
---|
207 |
|
---|
208 | # Checks for header files.
|
---|
209 |
|
---|
210 | # Checks for types.
|
---|
211 |
|
---|
212 | # Set up FCS library arguments.
|
---|
213 | m4_ifdef([AX_FCS_CONFIG_SOLVER_ARGS],[AX_FCS_CONFIG_SOLVER_ARGS])
|
---|
214 |
|
---|
215 | # Set up FCS library.
|
---|
216 | m4_ifdef([AX_FCS_CONFIG_SOLVER],[AX_FCS_CONFIG_SOLVER])
|
---|
217 |
|
---|
218 | # Set up FCS types
|
---|
219 | m4_ifdef([AX_FCS_TYPES],
|
---|
220 | [AC_DEFINE([vmg_float], [fcs_float],
|
---|
221 | [Define to the primary interface and computation floating type.])
|
---|
222 | AC_DEFINE([vmg_int], [fcs_int],
|
---|
223 | [Define to the primary integer type for particle indices.])],
|
---|
224 | [AC_DEFINE([vmg_float], [double],
|
---|
225 | [Define to the primary interface and computation floating type.])
|
---|
226 | AC_DEFINE([vmg_int], [int],
|
---|
227 | [Define to the primary integer type for particle indices.])])
|
---|
228 |
|
---|
229 | # Set up information for FCS package if inside the FCS tree.
|
---|
230 | have_fcs="no"
|
---|
231 | m4_ifdef([AX_FCS_PACKAGE_RESET],[
|
---|
232 | AX_FCS_PACKAGE_RESET
|
---|
233 | AX_FCS_PACKAGE_ADD([vmg_LIBS],[-lfcs_vmg])
|
---|
234 | AX_FCS_PACKAGE_ADD([vmg_LIBS_A],[src/libfcs_vmg.a])
|
---|
235 | AX_FCS_PACKAGE_ADD([vmg_LDADD],[$VTK_LDFLAGS $VTK_LIBS $BOOST_SYSTEM_LDFLAGS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LDFLAGS $BOOST_FILESYSTEM_LIBS $LAPACK_LIBS $BLAS_LIBS])
|
---|
236 | AX_FCS_PACKAGE_ADD([CXXLIBS_USE],[yes])
|
---|
237 | have_fsc="yes"
|
---|
238 | ])
|
---|
239 | AM_CONDITIONAL(COND_HAVE_FCS, [test x"have_fcs" = xyes])
|
---|
240 |
|
---|
241 | # Checks for structures.
|
---|
242 |
|
---|
243 | # Checks for compiler characteristics.
|
---|
244 |
|
---|
245 | # Checks for library functions.
|
---|
246 |
|
---|
247 | # Checks for system services
|
---|
248 |
|
---|
249 | # we save the cache here because the tests below fail more commonly
|
---|
250 |
|
---|
251 | # package information
|
---|
252 | AC_CONFIG_FILES([
|
---|
253 | VMG.pc:VMG.pc.in])
|
---|
254 |
|
---|
255 | AC_CONFIG_FILES([Makefile
|
---|
256 | src/Makefile
|
---|
257 | doc/Makefile
|
---|
258 | test/Makefile])
|
---|
259 |
|
---|
260 | AC_OUTPUT
|
---|