@@ -4,7 +4,6 @@ project(pymoose)
44set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR} /cmake_modules" )
55include (CheckCXXCompiler.cmake)
66include (CheckIncludeFileCXX)
7- include (FindPkgConfig)
87
98# getgit revision number
109find_program ( GIT_EXEC git )
@@ -78,6 +77,7 @@ option(WITH_BOOST_ODE "Use boost library ode2 library instead of GSL" OFF)
7877option (WITH_GSL "Use gsl-library. Alternative is WITH_BOOST" ON )
7978option (PARALLELIZED_CLOCK "High level parallelization of moose::Clock (alpha)" OFF )
8079option (USE_PRIVATE_RNG "Stochastic Objects use their private RNG" ON )
80+ option (WITH_ASAN "Use AddressSanitizer in DEBUG mode." OFF )
8181
8282
8383############################ BUILD CONFIGURATION #################################
@@ -87,7 +87,7 @@ add_definitions(-DUSE_GENESIS_PARSER)
8787
8888if (DEBUG OR "${CMAKE_BUILD_TYPE} " STREQUAL "Debug" )
8989 message (STATUS "Building for Debug/Unit testing" )
90- add_definitions (-DDO_UNIT_TESTS)
90+ add_definitions (-DDO_UNIT_TESTS -O )
9191 set (CMAKE_BUILD_TYPE Debug)
9292elseif (ENABLE_UNIT_TESTS)
9393 MESSAGE (STATUS "Enabled Unit tests" )
@@ -109,8 +109,14 @@ if(GPROF AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
109109 set (CMAKE_EXE_LINKER_FLAGS_DEBUG "-pg" )
110110endif ()
111111
112- find_package (Threads)
113-
112+ if (WITH_ASAN AND "${CMAKE_BUILD_TYPE} " STREQUAL "Debug" )
113+ message (STATUS "Compiling with ASAN" )
114+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} \
115+ -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address" )
116+ set (CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} \
117+ -fno-omit-frame-pointer -fsanitize=leak -fsanitize=address" )
118+ set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fsanitize=address" )
119+ endif ()
114120
115121################################### TARGETS ####################################
116122
@@ -132,8 +138,6 @@ if(WITH_BOOST_ODE)
132138 set (WITH_GSL OFF )
133139endif (WITH_BOOST_ODE)
134140
135- include_directories (msg basecode)
136-
137141set_target_properties (libmoose PROPERTIES COMPILE_DEFINITIONS "MOOSE_LIB" )
138142set_target_properties (libmoose PROPERTIES PREFIX "" )
139143
@@ -143,11 +147,10 @@ set(STATIC_LIBRARIES "" )
143147set (SYSTEM_SHARED_LIBS ${LibXML2_LIBRARIES} )
144148
145149# BOOST ode library performs better than GSL and ideally should be made default.
146- # Making boost default means that we get rid of gsl. Boost does not have a very
147- # good matrix library; it has ublas which is not well maintained and emit a lot
150+ # Unfortunately Boost does not have a very good matrix library; it has ublas
151+ # which is not well maintained and emit a lot
148152# of warning during compilation. Nonetheless, WITH_BOOST_ODE works fine and
149- # produce results quicker than GSL. Both boost ode and ublas are in moose source
150- # tree ./external/odeint-v2 and ./external/boost-numeric-bindings
153+ # produce results quicker than GSL.
151154if (WITH_GSL)
152155 find_package (GSL 1.16 REQUIRED)
153156 if (NOT GSL_FOUND)
@@ -172,13 +175,14 @@ if(WITH_GSL)
172175 # top level.
173176 include_directories ( ${GSL_INCLUDE_DIRS} )
174177elseif (WITH_BOOST_ODE)
175- find_package (Boost 1.44 REQUIRED)
176- find_package ( LAPACK REQUIRED )
178+ find_package (Boost 1.53 REQUIRED)
179+ find_package (LAPACK REQUIRED)
177180endif ()
178181
179182# if boost ode is being used, don't use GSL.
180183if (WITH_BOOST_ODE)
181184 add_definitions (-DUSE_BOOST_ODE -UUSE_GSL)
185+ include_directories (${Boost_INCLUDE_DIRS} )
182186endif ()
183187
184188# Openmpi
@@ -202,6 +206,7 @@ if(WITH_BOOST_ODE)
202206 list (APPEND SYSTEM_SHARED_LIBS ${Boost_LIBRARIES} )
203207endif (WITH_BOOST_ODE)
204208
209+ find_package ( Threads )
205210list (APPEND SYSTEM_SHARED_LIBS ${CMAKE_THREAD_LIBS_INIT} )
206211
207212# These libraries could be static of dynamic. We need to discrimate between
@@ -265,6 +270,7 @@ list(APPEND MOOSE_LIBRARIES
265270 msg
266271 benchmarks
267272 shell
273+ randnum
268274 scheduling
269275 moose_mpi
270276 biophysics
@@ -441,6 +447,7 @@ set(PYMOOSE_TEST_DIRECTORY ${CMAKE_SOURCE_DIR}/tests/python)
441447# Collect all python script in tests folder and run them.
442448file (GLOB PY_TEST_SCRIPTS "${PYMOOSE_TEST_DIRECTORY} /test_*.py" )
443449
450+
444451# Run python tests.
445452foreach ( _test_script ${PY_TEST_SCRIPTS} )
446453 get_filename_component ( _test_name ${_test_script} NAME_WE )
@@ -453,6 +460,36 @@ foreach( _test_script ${PY_TEST_SCRIPTS} )
453460 )
454461endforeach ( )
455462
463+ # Alpha tests. These should not run by default.
464+ set (MOOSE_ALPHA_TEST_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /tests/alpha)
465+ file (GLOB PY_ALPHA_TEST_SCRIPTS "${PYMOOSE_ALPHA_TEST_DIRECTORY} /*.py" )
466+ foreach ( _test_script ${PY_ALPHA_TEST_SCRIPTS} )
467+ get_filename_component ( _test_name ${_test_script} NAME_WE )
468+ add_test ( NAME ${_test_name}
469+ COMMAND ${PYTHON_EXECUTABLE} ${_test_script}
470+ CONFIGURATIONS Devel
471+ WORKING_DIRECTORY ${PYMOOSE_ALPHA_TEST_DIRECTORY}
472+ )
473+ set_tests_properties ( ${_test_name}
474+ PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} /python"
475+ )
476+ endforeach ( )
477+
478+ # Regression and github issues. These should not run by default.
479+ set (PYMOOSE_ISSUES_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} /tests/issues)
480+ file (GLOB PY_ISSUES_SCRIPTS "${PYMOOSE_ISSUES_DIRECTORY} /*.py" )
481+ foreach ( _test_script ${PY_ISSUES_SCRIPTS} )
482+ get_filename_component ( _test_name ${_test_script} NAME_WE )
483+ add_test ( NAME ${_test_name}
484+ COMMAND ${PYTHON_EXECUTABLE} ${_test_script}
485+ CONFIGURATIONS Devel
486+ WORKING_DIRECTORY ${PYMOOSE_ISSUES_DIRECTORY}
487+ )
488+ set_tests_properties ( ${_test_name}
489+ PROPERTIES ENVIRONMENT "PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR} /python"
490+ )
491+ endforeach ( )
492+
456493# add pylint target.
457494set (PYSCRIPTS_DIR ${CMAKE_CURRENT_SOURCE_DIR} /python )
458495file (GLOB_RECURSE PY_SCRIPTS "python/*.py" )
@@ -476,4 +513,5 @@ foreach( _py_script ${PY_SCRIPTS} )
476513endforeach ( )
477514
478515############################ CPACK ######################################
516+ # This is not maintained anymore since packaging is done using OpenBuildService
479517include (${CMAKE_CURRENT_SOURCE_DIR} /cmake_moose_cpack.cmake)
0 commit comments