source: configure.ac@ 661d2d

Action_Thermostats Add_AtomRandomPerturbation Add_FitFragmentPartialChargesAction Add_RotateAroundBondAction Add_SelectAtomByNameAction Added_ParseSaveFragmentResults AddingActions_SaveParseParticleParameters Adding_Graph_to_ChangeBondActions Adding_MD_integration_tests Adding_ParticleName_to_Atom Adding_StructOpt_integration_tests AtomFragments Automaking_mpqc_open AutomationFragmentation_failures Candidate_v1.5.4 Candidate_v1.6.0 Candidate_v1.6.1 ChangeBugEmailaddress ChangingTestPorts ChemicalSpaceEvaluator CombiningParticlePotentialParsing Combining_Subpackages Debian_Package_split Debian_package_split_molecuildergui_only Disabling_MemDebug Docu_Python_wait EmpiricalPotential_contain_HomologyGraph EmpiricalPotential_contain_HomologyGraph_documentation Enable_parallel_make_install Enhance_userguide Enhanced_StructuralOptimization Enhanced_StructuralOptimization_continued Example_ManyWaysToTranslateAtom Exclude_Hydrogens_annealWithBondGraph FitPartialCharges_GlobalError Fix_BoundInBox_CenterInBox_MoleculeActions Fix_ChargeSampling_PBC Fix_ChronosMutex Fix_FitPartialCharges Fix_FitPotential_needs_atomicnumbers Fix_ForceAnnealing Fix_IndependentFragmentGrids Fix_ParseParticles Fix_ParseParticles_split_forward_backward_Actions Fix_PopActions Fix_QtFragmentList_sorted_selection Fix_Restrictedkeyset_FragmentMolecule Fix_StatusMsg Fix_StepWorldTime_single_argument Fix_Verbose_Codepatterns Fix_fitting_potentials Fixes ForceAnnealing_goodresults ForceAnnealing_oldresults ForceAnnealing_tocheck ForceAnnealing_with_BondGraph ForceAnnealing_with_BondGraph_continued ForceAnnealing_with_BondGraph_continued_betteresults ForceAnnealing_with_BondGraph_contraction-expansion FragmentAction_writes_AtomFragments FragmentMolecule_checks_bonddegrees GeometryObjects Gui_Fixes Gui_displays_atomic_force_velocity ImplicitCharges IndependentFragmentGrids IndependentFragmentGrids_IndividualZeroInstances IndependentFragmentGrids_IntegrationTest IndependentFragmentGrids_Sole_NN_Calculation JobMarket_RobustOnKillsSegFaults JobMarket_StableWorkerPool JobMarket_unresolvable_hostname_fix MoreRobust_FragmentAutomation ODR_violation_mpqc_open PartialCharges_OrthogonalSummation PdbParser_setsAtomName PythonUI_with_named_parameters QtGui_reactivate_TimeChanged_changes Recreated_GuiChecks Rewrite_FitPartialCharges RotateToPrincipalAxisSystem_UndoRedo SaturateAtoms_findBestMatching SaturateAtoms_singleDegree StoppableMakroAction Subpackage_CodePatterns Subpackage_JobMarket Subpackage_LinearAlgebra Subpackage_levmar Subpackage_mpqc_open Subpackage_vmg Switchable_LogView ThirdParty_MPQC_rebuilt_buildsystem TrajectoryDependenant_MaxOrder TremoloParser_IncreasedPrecision TremoloParser_MultipleTimesteps TremoloParser_setsAtomName Ubuntu_1604_changes stable
Last change on this file since 661d2d was 48d20d, checked in by Frederik Heber <heber@…>, 12 years ago

Added new action FitPotentialAction to fit empirical potentials.

  • moved functionality from levmartester into new Action.
  • removed levmartester.
  • needs both enable-levmar and path to libs/include with-levmar. This allows checking as distinct enable switch.
  • added regression test Fragmentation/FitPotential for morse and harmonic_angle fit to water molecule. Using awk to check on L2 error.
  • added take-best-of option such that fits is done as many times and best (in terms of l2 error) is used. This should make regression test FitPotential more stable (right now we take best of 5).
  • DOCU: extended construct documentation due to new PotentialTypes construct.
  • DOCU: made construct lists items appear alphabetically.
  • DOCU: extended installation documentation with VTK and levmar.
  • DOCU: also URLs for scafacos, VTK, and levmar.
  • Property mode set to 100644
File size: 13.1 KB
Line 
1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ(2.59)
5AC_INIT(MoleCuilder, 1.3.14, [heber@ins.uni-bonn.de], [molecuilder], [http://trac.ins.uni-bonn.de/projects/molecuilder/])
6AC_CONFIG_AUX_DIR([build-aux])
7AC_CONFIG_SRCDIR([src/builder.cpp])
8AC_CONFIG_HEADER([config.h libmolecuilder_config.h])
9AC_CONFIG_MACRO_DIR([m4])
10AC_CONFIG_SUBDIRS([LinearAlgebra])
11
12# parallel-tests: use parallel test druver
13# color-tests: us coloring to indicate success/failure when available
14# tar-pax: use newer tar implementation with longer filename (>99 chars)
15AM_INIT_AUTOMAKE([dist-bzip2 1.5 parallel-tests color-tests tar-pax])
16
17# Checks for programs.
18AC_PROG_CXX
19AC_PROG_INSTALL
20
21# check for cppunit (taken from svn.apache.org/../xmlbeanscxx)
22AM_PATH_CPPUNIT(1.9.6)
23AM_CONDITIONAL(CONDCPPUNIT, test "$CPPUNIT_LIBS")
24
25dnl Check if we have enable python
26# python module
27AC_MSG_CHECKING(whether to enable python module)
28AC_ARG_ENABLE(
29 [python],
30 AS_HELP_STRING([--enable-python],[turn on python module [default=yes]]),
31 enable_python=$enableval,
32 enable_python="yes")
33AC_MSG_RESULT($enable_python)
34AS_IF([test x"$enable_python" != x"no"],[
35 # Python (for boost::python)
36 AM_PATH_PYTHON([2.2])
37 AX_PYTHON
38 AC_DEFINE(HAVE_PYTHON,1, ["Build python module and scripts."])
39])
40AM_CONDITIONAL([CONDPYTHON], [test x"$enable_python" != x"no"])
41AC_SUBST(HAVE_PYTHON)
42
43dnl Check if we have enable qtgui
44# Qt programs
45AC_ARG_WITH(
46 [Qt-bin],
47 [AS_HELP_STRING([--with-Qt-bin], [give path to Qt binaries])],
48 [have_qtgui_path=$withval
49 enable_qtgui="yes"],
50 have_qtgui_path="")
51AC_MSG_CHECKING(whether to enable Qt-based GUI)
52AC_ARG_ENABLE(
53 [qtgui],
54 AS_HELP_STRING([--enable-qtgui],[turn on Qt GUI compilation [default=yes]]),
55 enable_qtgui=$enableval,
56 enable_qtgui="yes")
57AC_MSG_RESULT($enable_qtgui)
58AS_IF([test x"$enable_qtgui" != x"no"],[
59 AC_PATH_PROGS([QT_MOC],
60 [moc-qt4 moc],
61 [AC_MSG_ERROR(["Qts moc not found, please use --with-Qt-bin."])],
62 [$have_qtgui_path]
63 )
64 AC_PATH_PROGS([QT_RCC],
65 [rcc-qt4 rcc],
66 [AC_MSG_ERROR(["Qts rcc not found, please use --with-Qt-bin."])],
67 [$have_qtgui_path]
68 )
69 AC_PATH_PROGS([QT_UIC],
70 [uic-qt4 uic],
71 [AC_MSG_ERROR(["Qts uic not found, please use --with-Qt-bin."])],
72 [$have_qtgui_path]
73 )
74 PKG_CHECK_MODULES([QT], [QtCore QtGui Qt3D], [
75 ])
76 AC_SUBST([QT_CFLAGS])
77 AC_SUBST([QT_LIBS])
78 AC_DEFINE(HAVE_QTGUI,1, ["Build Qt-based GUI"])
79])
80AM_CONDITIONAL([CONDQTGUI], [test x"$enable_qtgui" != x"no"])
81AC_SUBST(HAVE_QTGUI)
82
83# use doxygen
84DX_HTML_FEATURE(ON)
85DX_PS_FEATURE(OFF)
86DX_PDF_FEATURE(OFF)
87DX_INIT_DOXYGEN(MoleCuilder, Doxyfile, ${docdir})
88
89# use libtool
90LT_INIT([static])
91
92# Define these substitions here to keep all version information in one place.
93# For information on how to properly maintain the library version information,
94# refer to the libtool manual, section "Updating library version information":
95# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
96AC_SUBST([MOLECUILDER_SO_VERSION], [11:5:1])
97AC_SUBST([MOLECUILDER_API_VERSION], [1.3.14])
98
99dnl this macro is used to get the arguments supplied
100dnl to the configure script (./configure --enable-debug)
101dnl Check if we have enable debug support.
102AC_MSG_CHECKING(whether to enable debugging)
103have_debug="no"
104AC_ARG_ENABLE(
105 [debug],
106 AS_HELP_STRING([--enable-debug],[turn on debugging [default=no]]),
107 enable_debug=$enableval,
108 enable_debug="no")
109AC_MSG_RESULT($enable_debug)
110AS_IF([test x"$enable_debug" = x"yes"],[
111 AC_DEFINE(MEMDEBUG,1, ["Use memory debugger."])
112 AC_DEFINE(HAVE_DEBUG,1, ["Use debug setting to compile code."])
113 have_debug="yes"
114],[
115 AS_IF([test x"$enable_debug" = x"full"],[
116 AC_DEFINE(MEMDEBUG,1, ["Use memory debugger."])
117 AC_DEFINE(LOG_OBSERVER,1, ["Use observer log."])
118 AC_DEFINE(HAVE_DEBUG,2, ["Use debug setting to compile code."])
119 AC_DEFINE(QT_DEBUG,, ["Enable Qt debug messages."])
120 have_debug="full"
121 ],[
122 AC_DEFINE(NDEBUG,1, ["Don't compile in debugging code."])
123 AC_DEFINE(HAVE_DEBUG,0, ["Use debug setting to compile code."])
124 AC_DEFINE(QT_NO_DEBUG,, ["Disable Qt debug messages."])
125 have_debug="no"
126 ])
127])
128AC_SUBST(HAVE_DEBUG)
129
130dnl this macro is used to get the arguments supplied
131dnl to the configure script (./configure --enable-debug)
132dnl Check if we have enable debug support.
133AC_MSG_CHECKING(whether to enable internal caching/lazy evaluation)
134AC_ARG_ENABLE(
135 [cache],
136 AS_HELP_STRING([--enable-cache],[turn on internal lazy evaluation [default=yes]]),
137 enable_cache=$enableval,
138 enable_cache="yes")
139AC_MSG_RESULT($enable_cache)
140AS_IF([test x"$enable_cache" != x"no"],[
141 AC_DEFINE(HAVE_CACHE,1, ["cache variables to speed up the code."])
142],[
143 AC_DEFINE(NO_CACHING,1, ["Don't use caching code."])
144 AC_DEFINE(HAVE_CACHE,0, ["cache variables to speed up the code."])
145])
146AC_SUBST(HAVE_CACHE)
147
148# Checks for libraries.
149AC_CHECK_LIB(m, sqrt, , AC_MSG_ERROR([compatible libc math library not found]))
150
151# Boost
152BOOST_REQUIRE([1.40])
153
154# Boost headers only
155BOOST_ANY
156BOOST_ARRAY
157BOOST_BIMAP
158BOOST_BIND
159BOOST_CAST
160BOOST_CONVERSION
161BOOST_EXCEPTION
162BOOST_FOREACH
163BOOST_FUNCTION
164BOOST_FUSION
165BOOST_GRAPH
166BOOST_ITERATOR
167BOOST_MULTIARRAY
168BOOST_MPL
169BOOST_PREPROCESSOR
170BOOST_RANDOM
171BOOST_SMART_PTR
172BOOST_STRING_ALGO
173BOOST_TOKENIZER
174
175# Boost headers with libraries
176BOOST_FILESYSTEM
177BOOST_IOSTREAMS
178BOOST_PROGRAM_OPTIONS
179AS_IF([test x"$enable_python" != x"no"], [BOOST_PYTHON])
180BOOST_SERIALIZATION
181BOOST_THREADS
182
183
184# CodePatterns library (needs fixes w.r.t Notifications giving note when destroyed)
185AM_PATH_CODEPATTERNS([1.2.6], $have_debug,,[AC_MSG_ERROR([Missing CodePatterns library, please specify PKG_CONFIG_PATH or use --with-codepatterns...])])
186
187# JobMarket library (needs boost/archive/iserializer.hpp before MemDebug.hpp)
188AC_ARG_ENABLE(
189 [jobmarket],
190 AS_HELP_STRING([--enable-jobmarket],[turn on JobMarket feature [default=yes]]),
191 enable_jobmarket=$enableval,
192 enable_jobmarket="yes")
193AC_MSG_RESULT($enable_jobmarket)
194AS_IF([test x"$enable_jobmarket" != x"no"],[
195 # JobMarket library (needs newer ax_jobmarket.m4 and smaller fixes)
196 AM_PATH_JOBMARKET([1.1.3], $have_debug,[
197 # the following is only required if we have JobMarket
198 BOOST_ASIO
199 AC_DEFINE(HAVE_JOBMARKET,1, ["use JobMarket to calculate fragment jobs."])
200 ],[
201 enable_jobmarket="no"
202 ])
203]
204#[
205# AC_DEFINE(HAVE_JOBMARKET,0, ["use JobMarket to calculate fragment jobs."])
206#]
207)
208AC_SUBST(HAVE_JOBMARKET)
209AM_CONDITIONAL([CONDJOBMARKET], [test x"$enable_jobmarket" = x"yes"])
210
211# VMG library
212AC_MSG_CHECKING(whether to compile in long-range support via VMG)
213AC_ARG_ENABLE(
214 [vmg],
215 [AS_HELP_STRING([--enable-vmg], [turn on long-range potential calculation via VMG [default=no]])],
216 [enable_vmg=$enableval],
217 enable_vmg="no")
218AC_MSG_RESULT($enable_vmg)
219AS_IF([test x"$enable_vmg" != x"no"],[
220 PKG_CHECK_MODULES(VMG, VMG >= 0.1)
221 AC_SUBST(VMG_CFLAGS)
222 AC_SUBST(VMG_LIBS)
223 AC_DEFINE(HAVE_VMG,1, ["use VMG to calculate long-range contributions."])
224
225 # check whether to use mpi
226 AC_ARG_WITH(
227 [vmg-mpi],
228 [AS_HELP_STRING([--with-vmg-mpi], [whether to use MPI for communication in VMGJobs])],
229 [with_vmg_mpi=yes],
230 [with_vmg_mpi=no])
231 AS_IF(
232 [test "x$with_vmg_mpi" != xno],
233 [
234 AC_LANG_SAVE
235 AC_LANG_CPLUSPLUS
236 LX_FIND_MPI
237 AC_LANG_RESTORE
238 AS_IF([test "x$have_CXX_mpi" = xyes],[
239 AC_DEFINE([MPICH_SKIP_MPICXX], [1], [Skip C++ bindings])
240 AC_DEFINE([OMPI_SKIP_MPICXX], [1], [Skip C++ bindings])
241 AC_DEFINE([MPI_NO_CPPBIND], [1], [Skip C++ bindings])
242 AC_DEFINE([_MPICC_H], [1], [Skip C++ bindings])
243 AC_DEFINE([MPIBULL_SKIP_MPICXX], [1], [Skip C++ bindings])
244 ])
245 ],
246 [])
247])
248AM_CONDITIONAL([CONDVMG], [test x"$enable_vmg" = x"yes"])
249AM_CONDITIONAL([CONDVMGMPI], [test x"$have_CXX_mpi" = x"yes"])
250
251
252# Check for Levenberg-Marquardt implementation
253AC_ARG_ENABLE(
254 [levmar],
255 AS_HELP_STRING([--enable-levmar],[turn on LevMar feature [default=no]]),
256 enable_levmar=$enableval,
257 enable_levmar="no")
258AS_IF([test x"$enable_levmar" = x"yes"],[
259 AX_LAPACK([enable_levmar=yes],[enable_levmar=no])])
260AC_MSG_CHECKING(whether to compile in Levenberg-Marquardt)
261AS_IF([test x"$enable_levmar" = x"yes"],[
262 AC_ARG_WITH(
263 [levmar],
264 [AS_HELP_STRING([--with-levmar], [give path to LevMar package])],
265 [have_levmar_path=$withval],
266 [enable_levmar=no])
267 ],[enable_levmar=no])
268AC_MSG_RESULT($enable_levmar)
269AS_IF([test x"$enable_levmar" = x"yes"],[
270 LEVMAR_CPPFLAGS="-I${have_levmar_path}/include"
271 LEVMAR_LDFLAGS="-L${have_levmar_path}/lib"
272 LEVMAR_LIBS="-llevmar"
273 AC_SUBST(LEVMAR_CPPFLAGS)
274 AC_SUBST(LEVMAR_LDFLAGS)
275 AC_SUBST(LEVMAR_LIBS)
276 AC_DEFINE(HAVE_LEVMAR,1, ["use levmar for non-linear minimisation/potential fitting."])
277 ])
278AM_CONDITIONAL([CONDLEVMAR], [test x"$enable_levmar" = x"yes"])
279
280# Checks for header files.
281AC_HEADER_STDC
282AC_CHECK_HEADERS([sys/time.h])
283AC_HEADER_STDBOOL
284
285AC_FUNC_MALLOC
286AC_FUNC_REALLOC
287AC_CHECK_FUNCS([floor pow sqrt strchr])
288
289# Checks for typedefs, structures, and compiler characteristics.
290AC_C_CONST
291AC_C_INLINE
292AC_C_RESTRICT
293AC_TYPE_SIZE_T
294
295# Checks for library functions.
296# check for GNU Scientific Library
297AC_CHECK_HEADERS([gsl/gsl_blas.h])
298AC_SEARCH_LIBS(dnrm2, gslblas gslcblas goto blas cblas)
299AC_SEARCH_LIBS(cblas_dnrm2, gslblas gslcblas blas cblas)
300AC_SEARCH_LIBS(gsl_blas_dnrm2,, gsl)
301#AC_CHECK_LIB(gsl, gsl_blas_dnrm2, , [AC_MSG_ERROR(["No working BLAS found for GSL, stopping."])])
302AC_CHECK_LIB(gsl, main)
303
304# use CppUnit TestRunner or not
305AC_MSG_CHECKING(whether to enable ECut TestRunnerClient)
306AC_ARG_ENABLE(
307 [ecut],
308 AS_HELP_STRING([--enable-ecut],[Use ECut TestRunnerClient [default=no]]),
309 enable_ecut=$disableval,
310 enable_ecut="no")
311AC_MSG_RESULT($enable_ecut)
312AS_IF([test x"$enable_ecut" = x"yes"],[
313 AC_DEFINE(HAVE_ECUT,1, ["Use ECut TestRunnerClient instead of our own."])
314 AC_SUBST(HAVE_ECUT)
315])
316AM_CONDITIONAL([CONDECUT], [test x"$enable_ecut" = x"yes"])
317
318# with valgrinding testsuite or not
319AC_MSG_CHECKING(whether to enable valgrind memory checking in testsuite)
320AC_ARG_ENABLE(
321 [valgrind],
322 AS_HELP_STRING([--enable-valgrind],[Use Valgrind on the testsuite [default=no]]),
323 enable_valgrind=$enableval,
324 enable_valgrind="no")
325AC_MSG_RESULT($enable_valgrind)
326AS_IF([test x"$enable_valgrind" = x"yes"], [
327 AC_CHECK_HEADER([valgrind/valgrind.h],
328 [
329 # check header
330 AC_DEFINE(HAVE_VALGRIND_TESTSUITE,1, ["Use Valgrind to check the testsuite."])
331 # check path
332 AC_PATH_PROG(VALGRIND, [valgrind], [/bin/false])
333 # set variables
334 AC_SUBST(HAVE_VALGRIND_TESTSUITE)
335 AC_SUBST(VALGRIND)
336 ],
337 [
338 AC_MSG_ERROR(["Valgrind support requested but headers not available."])
339 ]
340 )
341])
342
343# Check for "extern inline", using a modified version
344# of the test for AC_C_INLINE from acspecific.mt
345AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline,
346[ac_cv_c_extern_inline=no
347AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x);
348extern $ac_cv_c_inline double foo(double x) { return x+1.0; };
349double foo (double x) { return x + 1.0; };],
350[ foo(1.0) ],
351[ac_cv_c_extern_inline="yes"])
352])
353
354if test "$ac_cv_c_inline" != no ; then
355 AC_DEFINE(HAVE_INLINE,1, ["May use inline routines"])
356 AC_SUBST(HAVE_INLINE)
357fi
358
359#AC_MSG_NOTICE(["CFLAGS: $CFLAGS, CXXFLAGS: $CXXFLAGS, LDFLAGS: $LDFLAGS, CC: $CC, CXX:, $CXX, MPICC: $MPICC, MPILIBS: $MPILIBS, LIBS: $LIBS"])
360
361# test suite
362
363AC_CONFIG_FILES([
364 tests/Makefile])
365
366AC_CONFIG_TESTDIR(tests/CodeChecks)
367AC_CONFIG_FILES([
368 tests/CodeChecks/atlocal
369 tests/CodeChecks/Makefile])
370
371AC_CONFIG_TESTDIR(tests/Fragmentations)
372AC_CONFIG_FILES([
373 tests/Fragmentations/atlocal
374 tests/Fragmentations/Makefile])
375AC_CONFIG_FILES([tests/Fragmentations/analyzer], [chmod +x tests/Fragmentations/analyzer])
376AC_CONFIG_FILES([tests/Fragmentations/joiner], [chmod +x tests/Fragmentations/joiner])
377AC_CONFIG_FILES([tests/Fragmentations/molecuilder], [chmod +x tests/Fragmentations/molecuilder])
378
379AC_CONFIG_TESTDIR(tests/JobMarket)
380AC_CONFIG_FILES([
381 tests/JobMarket/atlocal
382 tests/JobMarket/Makefile])
383AC_CONFIG_FILES([tests/JobMarket/molecuilder], [chmod +x tests/JobMarket/molecuilder])
384
385AC_CONFIG_TESTDIR(tests/regression)
386AC_CONFIG_FILES([
387 tests/regression/atlocal
388 tests/regression/Makefile])
389AC_CONFIG_FILES([tests/regression/molecuilder], [chmod +x tests/regression/molecuilder])
390
391AC_CONFIG_TESTDIR(tests/Tesselations)
392AC_CONFIG_FILES([
393 tests/Tesselations/atlocal
394 tests/Tesselations/Makefile])
395AC_CONFIG_FILES([tests/Tesselations/molecuilder], [chmod +x tests/Tesselations/molecuilder])
396
397AC_CONFIG_FILES([
398 doc/molecuilder.xml])
399AC_CONFIG_FILES([
400 MoleCuilder.pc:MoleCuilder.pc.in])
401AC_CONFIG_FILES([
402 Makefile
403 doc/Makefile
404 src/Makefile
405 data/icons/Makefile
406 utils/Makefile
407])
408AC_CONFIG_FILES([
409 src/unittests/Makefile
410])
411
412# produce python scripts and tests only when python's present
413AM_COND_IF([CONDPYTHON],[
414 AC_CONFIG_TESTDIR([tests/Python])
415 AC_CONFIG_FILES([utils/Python/boxmaker.py:utils/Python/boxmaker.py.in], [chmod +x utils/Python/boxmaker.py])
416 AC_CONFIG_FILES([utils/Python/python_wrapper:utils/Python/python_wrapper.in], [chmod +x utils/Python/python_wrapper])
417 AC_CONFIG_FILES([tests/Python/run], [chmod +x tests/Python/run])
418 AC_CONFIG_FILES([tests/Python/atlocal])
419 AC_CONFIG_FILES([tests/Python/Makefile])
420])
421
422AC_OUTPUT
Note: See TracBrowser for help on using the repository browser.