Specify source files explicitly rather than with glob

Files which constitutes compilation units are now specified explicitly
in the file CMakeLists_files.cmake rather than identified through a
glob. If this file is updated, a reconfigure should be triggered.

This also enables us to specify exactly which headers that should be
distributed as part of the installation package, and which programs
that should be used for unit testing.
This commit is contained in:
Roland Kaufmann 2013-03-04 12:25:20 +01:00
parent 0bfe185d43
commit 234be65229
4 changed files with 388 additions and 78 deletions

View File

@ -113,18 +113,10 @@ opm_auto_dirs ()
# put libraries in lib/
opm_out_dirs ()
# identify the compilation units in the library
# identify the compilation units in the library; sources in opm/,
# tests files in tests/, examples in tutorials/ and examples/
opm_sources (${project})
# enumerate all testing programs in test/ directory
opm_find_tests ()
# tutorial programs are found in the tutorials/ directory
opm_find_tutorials ()
# example programs are found in the examples/ directory
opm_find_examples ()
### --- begin AGMG specific --- ###
# Algebraic Multigrid must be compiled together with our program;
# if it is not available, then remove our corresponding component
@ -151,13 +143,11 @@ if (NOT SuiteSparse_FOUND)
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/core/linalg/call_umfpack.c
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/core/linalg/LinearSolverUmfpack.cpp
)
list (REMOVE_ITEM tutorial_SOURCES
${PROJECT_SOURCE_DIR}/${tutorial_DIR}/tutorial2.cpp
${PROJECT_SOURCE_DIR}/${tutorial_DIR}/tutorial3.cpp
${PROJECT_SOURCE_DIR}/${tutorial_DIR}/tutorial4.cpp
)
list (REMOVE_ITEM examples_SOURCES
${PROJECT_SOURCE_DIR}/${examples_DIR}/spu_2p.cpp
${PROJECT_SOURCE_DIR}/tutorials/tutorial2.cpp
${PROJECT_SOURCE_DIR}/tutorials/tutorial3.cpp
${PROJECT_SOURCE_DIR}/tutorials/tutorial4.cpp
${PROJECT_SOURCE_DIR}/examples/spu_2p.cpp
)
endif (NOT SuiteSparse_FOUND)
@ -226,8 +216,7 @@ opm_cmake_config (${project})
# routines to build satellites such as tests, tutorials and samples
include (OpmSatellites)
# tutorial programs are found in the tutorials/ directory
opm_compile_satellites (${project} tutorial "" "")
# example programs are found in the tutorials/ and examples/ directory
opm_compile_satellites (${project} examples "" "")
# infrastructure for testing
@ -249,7 +238,7 @@ cond_disable_test ("ERT")
### --- end opm-core specific --- ###
# make datafiles necessary for tests available in output directory
opm_data (tests datafiles "${tests_DIR}" "*.xml")
opm_data (tests datafiles "${tests_DIR}")
opm_compile_satellites (${project} tests "" "${tests_REGEXP}")
# use this target to run all tests

334
CMakeLists_files.cmake Normal file
View File

@ -0,0 +1,334 @@
# -*- mode: cmake; tab-width: 2; indent-tabs-mode: t; truncate-lines: t; compile-command: "cmake -Wdev" -*-
# vim: set filetype=cmake autoindent tabstop=2 shiftwidth=2 noexpandtab softtabstop=2 nowrap:
# This file sets up five lists:
# MAIN_SOURCE_FILES List of compilation units which will be included in
# the library. If it isn't on this list, it won't be
# part of the library. Please try to keep it sorted to
# maintain sanity.
#
# TEST_SOURCE_FILES List of programs that will be run as unit tests.
#
# TEST_DATA_FILES Files from the source three that should be made
# available in the corresponding location in the build
# tree in order to run tests there.
#
# EXAMPLE_SOURCE_FILES Other programs that will be compiled as part of the
# build, but which is not part of the library nor is
# run as tests.
#
# PUBLIC_HEADER_FILES List of public header files that should be
# distributed together with the library. The source
# files can of course include other files than these;
# you should only add to this list if the *user* of
# the library needs it.
# originally generated with the command:
# find opm -name '*.c*' -printf '\t%p\n' | sort
list (APPEND MAIN_SOURCE_FILES
opm/core/eclipse/EclipseGridInspector.cpp
opm/core/eclipse/EclipseGridParser.cpp
opm/core/fluid/blackoil/BlackoilPvtProperties.cpp
opm/core/fluid/BlackoilPropertiesBasic.cpp
opm/core/fluid/BlackoilPropertiesFromDeck.cpp
opm/core/fluid/blackoil/SinglePvtDead.cpp
opm/core/fluid/blackoil/SinglePvtDeadSpline.cpp
opm/core/fluid/blackoil/SinglePvtInterface.cpp
opm/core/fluid/blackoil/SinglePvtLiveGas.cpp
opm/core/fluid/blackoil/SinglePvtLiveOil.cpp
opm/core/fluid/IncompPropertiesBasic.cpp
opm/core/fluid/IncompPropertiesFromDeck.cpp
opm/core/fluid/PvtPropertiesBasic.cpp
opm/core/fluid/PvtPropertiesIncompFromDeck.cpp
opm/core/fluid/RockBasic.cpp
opm/core/fluid/RockCompressibility.cpp
opm/core/fluid/RockFromDeck.cpp
opm/core/fluid/SatFuncGwseg.cpp
opm/core/fluid/SatFuncSimple.cpp
opm/core/fluid/SatFuncStone2.cpp
opm/core/fluid/SaturationPropsBasic.cpp
opm/core/fluid/SaturationPropsFromDeck.cpp
opm/core/grid.c
opm/core/grid/cart_grid.c
opm/core/grid/cornerpoint_grid.c
opm/core/grid/cpgpreprocess/facetopology.c
opm/core/grid/cpgpreprocess/geometry.c
opm/core/grid/cpgpreprocess/mxgrdecl.c
opm/core/grid/cpgpreprocess/preprocess.c
opm/core/grid/cpgpreprocess/processgrid.c
opm/core/grid/cpgpreprocess/uniquepoints.c
opm/core/GridManager.cpp
opm/core/linalg/call_umfpack.c
opm/core/linalg/LinearSolverAGMG.cpp
opm/core/linalg/LinearSolverFactory.cpp
opm/core/linalg/LinearSolverInterface.cpp
opm/core/linalg/LinearSolverIstl.cpp
opm/core/linalg/LinearSolverUmfpack.cpp
opm/core/linalg/sparse_sys.c
opm/core/newwells.c
opm/core/pressure/cfsh.c
opm/core/pressure/CompressibleTpfa.cpp
opm/core/pressure/flow_bc.c
opm/core/pressure/FlowBCManager.cpp
opm/core/pressure/fsh.c
opm/core/pressure/fsh_common_impl.c
opm/core/pressure/ifsh.c
opm/core/pressure/IncompTpfa.cpp
opm/core/pressure/mimetic/hybsys.c
opm/core/pressure/mimetic/hybsys_global.c
opm/core/pressure/mimetic/mimetic.c
opm/core/pressure/msmfem/coarse_conn.c
opm/core/pressure/msmfem/coarse_sys.c
opm/core/pressure/msmfem/dfs.c
opm/core/pressure/msmfem/hash_set.c
opm/core/pressure/msmfem/ifsh_ms.c
opm/core/pressure/msmfem/partition.c
opm/core/pressure/tpfa/cfs_tpfa.c
opm/core/pressure/tpfa/cfs_tpfa_residual.c
opm/core/pressure/tpfa/compr_bc.c
opm/core/pressure/tpfa/compr_quant.c
opm/core/pressure/tpfa/compr_quant_general.c
opm/core/pressure/tpfa/compr_source.c
opm/core/pressure/tpfa/ifs_tpfa.c
opm/core/pressure/tpfa/trans_tpfa.c
opm/core/pressure/well.c
opm/core/simulator/SimulatorCompressibleTwophase.cpp
opm/core/simulator/SimulatorIncompTwophase.cpp
opm/core/simulator/SimulatorReport.cpp
opm/core/simulator/SimulatorTimer.cpp
opm/core/transport/reorder/DGBasis.cpp
opm/core/transport/reorder/nlsolvers.c
opm/core/transport/reorder/reordersequence.cpp
opm/core/transport/reorder/tarjan.c
opm/core/transport/reorder/TransportModelCompressibleTwophase.cpp
opm/core/transport/reorder/TransportModelInterface.cpp
opm/core/transport/reorder/TransportModelTracerTof.cpp
opm/core/transport/reorder/TransportModelTracerTofDiscGal.cpp
opm/core/transport/reorder/TransportModelTwophase.cpp
opm/core/transport/spu_explicit.c
opm/core/transport/spu_implicit.c
opm/core/transport/transport_source.c
opm/core/utility/miscUtilitiesBlackoil.cpp
opm/core/utility/miscUtilities.cpp
opm/core/utility/MonotCubicInterpolator.cpp
opm/core/utility/parameters/Parameter.cpp
opm/core/utility/parameters/ParameterGroup.cpp
opm/core/utility/parameters/ParameterTools.cpp
opm/core/utility/parameters/ParameterXML.cpp
opm/core/utility/parameters/tinyxml/tinystr.cpp
opm/core/utility/parameters/tinyxml/tinyxml.cpp
opm/core/utility/parameters/tinyxml/tinyxmlerror.cpp
opm/core/utility/parameters/tinyxml/tinyxmlparser.cpp
opm/core/utility/parameters/tinyxml/xmltest.cpp
opm/core/utility/StopWatch.cpp
opm/core/utility/VelocityInterpolation.cpp
opm/core/utility/WachspressCoord.cpp
opm/core/utility/writeECLData.cpp
opm/core/utility/writeVtkData.cpp
opm/core/vag_format/vag.cpp
opm/core/wells/InjectionSpecification.cpp
opm/core/wells/ProductionSpecification.cpp
opm/core/wells/WellCollection.cpp
opm/core/wells/WellsGroup.cpp
opm/core/wells/WellsManager.cpp
)
# originally generated with the command:
# find tests -name '*.cpp' -a ! -wholename '*/not-unit/*' -printf '\t%p\n' | sort
list (APPEND TEST_SOURCE_FILES
tests/test_dgbasis.cpp
tests/test_sparsevector.cpp
tests/test_sparsetable.cpp
tests/test_velocityinterpolation.cpp
tests/test_quadratures.cpp
tests/test_wells.cpp
tests/test_wachspresscoord.cpp
tests/test_column_extract.cpp
tests/test_geom2d.cpp
tests/test_param.cpp
)
# originally generated with the command:
# find tests -name '*.xml' -a ! -wholename '*/not-unit/*' -printf '\t%p\n' | sort
list (APPEND TEST_DATA_FILES
tests/extratestdata.xml
tests/testdata.xml
)
# originally generated with the command:
# find tutorials examples -name '*.c*' -printf '\t%p\n' | sort
list (APPEND EXAMPLE_SOURCE_FILES
examples/compute_tof.cpp
examples/compute_tof_from_files.cpp
examples/import_rewrite.cpp
examples/refine_wells.cpp
examples/scaneclipsedeck.c
examples/sim_2p_comp_reorder.cpp
examples/sim_2p_incomp_reorder.cpp
examples/sim_wateroil.cpp
examples/spu_2p.cpp
examples/wells_example.cpp
tutorials/tutorial1.cpp
tutorials/tutorial2.cpp
tutorials/tutorial3.cpp
tutorials/tutorial4.cpp
)
# originally generated with the command:
# find opm -name '*.h*' -a ! -name '*-pch.hpp' -printf '\t%p\n' | sort
list (APPEND PUBLIC_HEADER_FILES
opm/core/transport/ImplicitTransport.hpp
opm/core/transport/SimpleFluid2pWrapper.hpp
opm/core/transport/CSRMatrixBlockAssembler.hpp
opm/core/transport/ImplicitAssembly.hpp
opm/core/transport/CSRMatrixUmfpackSolver.hpp
opm/core/transport/GravityColumnSolver_impl.hpp
opm/core/transport/spu_implicit.h
opm/core/transport/transport_source.h
opm/core/transport/SinglePointUpwindTwoPhase.hpp
opm/core/transport/JacobianSystem.hpp
opm/core/transport/reorder/TransportModelTwophase.hpp
opm/core/transport/reorder/TransportModelTracerTof.hpp
opm/core/transport/reorder/TransportModelCompressibleTwophase.hpp
opm/core/transport/reorder/DGBasis.hpp
opm/core/transport/reorder/reordersequence.h
opm/core/transport/reorder/tarjan.h
opm/core/transport/reorder/TransportModelInterface.hpp
opm/core/transport/reorder/nlsolvers.h
opm/core/transport/reorder/TransportModelTracerTofDiscGal.hpp
opm/core/transport/GravityColumnSolver.hpp
opm/core/transport/NormSupport.hpp
opm/core/transport/spu_explicit.h
opm/core/eclipse/SpecialEclipseFields.hpp
opm/core/eclipse/EclipseUnits.hpp
opm/core/eclipse/EclipseGridParserHelpers.hpp
opm/core/eclipse/CornerpointChopper.hpp
opm/core/eclipse/EclipseGridParser.hpp
opm/core/eclipse/EclipseGridInspector.hpp
opm/core/GridManager.hpp
opm/core/linalg/blas_lapack.h
opm/core/linalg/LinearSolverAGMG.hpp
opm/core/linalg/LinearSolverFactory.hpp
opm/core/linalg/LinearSolverUmfpack.hpp
opm/core/linalg/LinearSolverIstl.hpp
opm/core/linalg/call_umfpack.h
opm/core/linalg/sparse_sys.h
opm/core/linalg/LinearSolverInterface.hpp
opm/core/newwells.h
opm/core/vag_format/vag.hpp
opm/core/doxygen_main.hpp
opm/core/simulator/SimulatorIncompTwophase.hpp
opm/core/simulator/WellState.hpp
opm/core/simulator/SimulatorCompressibleTwophase.hpp
opm/core/simulator/SimulatorReport.hpp
opm/core/simulator/SimulatorTimer.hpp
opm/core/simulator/TwophaseState.hpp
opm/core/simulator/BlackoilState.hpp
opm/core/utility/linearInterpolation.hpp
opm/core/utility/WachspressCoord.hpp
opm/core/utility/initState_impl.hpp
opm/core/utility/initState.hpp
opm/core/utility/NonuniformTableLinear.hpp
opm/core/utility/Units.hpp
opm/core/utility/DataMap.hpp
opm/core/utility/linInt.hpp
opm/core/utility/parameters/ParameterXML.hpp
opm/core/utility/parameters/ParameterGroup_impl.hpp
opm/core/utility/parameters/Parameter.hpp
opm/core/utility/parameters/ParameterTools.hpp
opm/core/utility/parameters/ParameterRequirement.hpp
opm/core/utility/parameters/ParameterMapItem.hpp
opm/core/utility/parameters/ParameterGroup.hpp
opm/core/utility/parameters/tinyxml/tinystr.h
opm/core/utility/parameters/tinyxml/tinyxml.h
opm/core/utility/parameters/ParameterStrings.hpp
opm/core/utility/miscUtilitiesBlackoil.hpp
opm/core/utility/MonotCubicInterpolator.hpp
opm/core/utility/UniformTableLinear.hpp
opm/core/utility/writeVtkData.hpp
opm/core/utility/Average.hpp
opm/core/utility/Factory.hpp
opm/core/utility/VelocityInterpolation.hpp
opm/core/utility/SparseVector.hpp
opm/core/utility/StopWatch.hpp
opm/core/utility/buildUniformMonotoneTable.hpp
opm/core/utility/ErrorMacros.hpp
opm/core/utility/miscUtilities.hpp
opm/core/utility/ColumnExtract.hpp
opm/core/utility/RootFinders.hpp
opm/core/utility/SparseTable.hpp
opm/core/utility/have_boost_redef.hpp
opm/core/utility/writeECLData.hpp
opm/core/grid/CellQuadrature.hpp
opm/core/grid/cornerpoint_grid.h
opm/core/grid/cpgpreprocess/geometry.h
opm/core/grid/cpgpreprocess/uniquepoints.h
opm/core/grid/cpgpreprocess/mxgrdecl.h
opm/core/grid/cpgpreprocess/preprocess.h
opm/core/grid/cpgpreprocess/grdecl.h
opm/core/grid/cpgpreprocess/facetopology.h
opm/core/grid/cart_grid.h
opm/core/grid/FaceQuadrature.hpp
opm/core/pressure/TPFAPressureSolver.hpp
opm/core/pressure/fsh_common_impl.h
opm/core/pressure/msmfem/dfs.h
opm/core/pressure/msmfem/coarse_conn.h
opm/core/pressure/msmfem/hash_set.h
opm/core/pressure/msmfem/partition.h
opm/core/pressure/msmfem/ifsh_ms.h
opm/core/pressure/msmfem/coarse_sys.h
opm/core/pressure/IncompTpfa.hpp
opm/core/pressure/HybridPressureSolver.hpp
opm/core/pressure/fsh.h
opm/core/pressure/flow_bc.h
opm/core/pressure/tpfa/compr_quant_general.h
opm/core/pressure/tpfa/compr_bc.h
opm/core/pressure/tpfa/trans_tpfa.h
opm/core/pressure/tpfa/compr_quant.h
opm/core/pressure/tpfa/cfs_tpfa_residual.h
opm/core/pressure/tpfa/ifs_tpfa.h
opm/core/pressure/tpfa/compr_source.h
opm/core/pressure/tpfa/cfs_tpfa.h
opm/core/pressure/mimetic/hybsys_global.h
opm/core/pressure/mimetic/hybsys.h
opm/core/pressure/mimetic/mimetic.h
opm/core/pressure/FlowBCManager.hpp
opm/core/pressure/CompressibleTpfa.hpp
opm/core/pressure/TPFACompressiblePressureSolver.hpp
opm/core/wells/InjectionSpecification.hpp
opm/core/wells/WellsGroup.hpp
opm/core/wells/WellsManager.hpp
opm/core/wells/ProductionSpecification.hpp
opm/core/wells/WellCollection.hpp
opm/core/fluid/SaturationPropsInterface.hpp
opm/core/fluid/SaturationPropsFromDeck_impl.hpp
opm/core/fluid/RockFromDeck.hpp
opm/core/fluid/BlackoilPropertiesBasic.hpp
opm/core/fluid/RockCompressibility.hpp
opm/core/fluid/PvtPropertiesIncompFromDeck.hpp
opm/core/fluid/IncompPropertiesBasic.hpp
opm/core/fluid/SaturationPropsFromDeck.hpp
opm/core/fluid/SaturationPropsBasic.hpp
opm/core/fluid/BlackoilPropertiesFromDeck.hpp
opm/core/fluid/BlackoilPropertiesInterface.hpp
opm/core/fluid/blackoil/SinglePvtInterface.hpp
opm/core/fluid/blackoil/BlackoilPhases.hpp
opm/core/fluid/blackoil/SinglePvtDeadSpline.hpp
opm/core/fluid/blackoil/SinglePvtLiveOil.hpp
opm/core/fluid/blackoil/SinglePvtConstCompr.hpp
opm/core/fluid/blackoil/SinglePvtDead.hpp
opm/core/fluid/blackoil/phaseUsageFromDeck.hpp
opm/core/fluid/blackoil/BlackoilPvtProperties.hpp
opm/core/fluid/blackoil/SinglePvtLiveGas.hpp
opm/core/fluid/SimpleFluid2p.hpp
opm/core/fluid/IncompPropertiesInterface.hpp
opm/core/fluid/PvtPropertiesBasic.hpp
opm/core/fluid/SatFuncSimple.hpp
opm/core/fluid/SatFuncGwseg.hpp
opm/core/fluid/IncompPropertiesFromDeck.hpp
opm/core/fluid/RockBasic.hpp
opm/core/fluid/SatFuncStone2.hpp
opm/core/grid.h
opm/core/well.h
opm/core/GridAdapter.hpp
)

View File

@ -16,28 +16,53 @@ macro (opm_auto_dirs)
endmacro (opm_auto_dirs)
macro (opm_sources opm)
# find all the source code (note that these variables have name after
# the target library and not the project). the documentation recommends
# against using globs to enumerate source code, but if you list the
# files explicitly you'll change the build files every time you add to
# the project as well as having to rebuild completely anyway.
file (GLOB_RECURSE ${opm}_C_SOURCES "${${opm}_DIR}/[^.]*.c")
file (GLOB_RECURSE ${opm}_CXX_SOURCES "${${opm}_DIR}/[^.]*.cpp")
file (GLOB_RECURSE ${opm}_C_HEADERS "${${opm}_DIR}/[^.]*.h")
file (GLOB_RECURSE ${opm}_CXX_HEADERS "${${opm}_DIR}/[^.]*.hpp")
# this is necessary to set so that we know where we are going to
# execute the test programs (and make datafiles available)
set (tests_DIR "tests")
# remove pre-compile headers from output list
file (GLOB_RECURSE ${opm}_PRECOMP_CXX_HEADER "${${opm}_DIR}/${${opm}_NAME}-pch.hpp")
if ("${${opm}_PRECOMP_CXX_HEADER}" MATCHES ";")
message (FATAL_ERROR "There can only be one precompiled header!")
endif ("${${opm}_PRECOMP_CXX_HEADER}" MATCHES ";")
list (REMOVE_ITEM ${opm}_CXX_HEADERS
${PROJECT_SOURCE_DIR}/${${opm}_PRECOMP_CXX_HEADER}
# how to retrieve the "fancy" name from the filename
set (tests_REGEXP
"^test_([^/]*)$"
"^([^/]*)_test$"
)
# merge both languages into one compilation/installation
set (${opm}_SOURCES ${${opm}_C_SOURCES} ${${opm}_CXX_SOURCES})
set (${opm}_HEADERS ${${opm}_C_HEADERS} ${${opm}_CXX_HEADERS})
# start out with defined, empty lists which will be specified externally
set (MAIN_SOURCE_FILES)
set (EXAMPLE_SOURCE_FILES)
set (TEST_SOURCE_FILES)
set (TEST_DATA_FILES)
set (PUBLIC_HEADER_FILES)
# read the list of components from this file; it should set the above
# lists (which are generic names)
include (${PROJECT_SOURCE_DIR}/CMakeLists_files.cmake)
# rename from "friendly" names to ones that fit the "almost-structural"
# scheme used in the .cmake modules, converting them to absolute file
# names in the process
foreach (_file IN LISTS MAIN_SOURCE_FILES)
list (APPEND ${opm}_SOURCES ${PROJECT_SOURCE_DIR}/${_file})
endforeach (_file)
foreach (_file IN LISTS PUBLIC_HEADER_FILES)
list (APPEND ${opm}_HEADERS ${PROJECT_SOURCE_DIR}/${_file})
endforeach (_file)
foreach (_file IN LISTS TEST_SOURCE_FILES)
list (APPEND tests_SOURCES ${PROJECT_SOURCE_DIR}/${_file})
endforeach (_file)
foreach (_file IN LISTS TEST_DATA_FILES)
list (APPEND tests_DATA ${PROJECT_SOURCE_DIR}/${_file})
endforeach (_file)
foreach (_file IN LISTS EXAMPLE_SOURCE_FILES)
list (APPEND examples_SOURCES ${PROJECT_SOURCE_DIR}/${_file})
endforeach (_file)
# identify pre-compile header; if the project is called opm-foobar,
# then it should be in opm/foobar/opm-foobar-pch.hpp
string (REPLACE "-" "/" opm_NAME_AS_DIR ${${opm}_NAME})
set (${opm}_PRECOMP_CXX_HEADER "${opm_NAME_AS_DIR}/${${opm}_NAME}-pch.hpp")
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/${${opm}_PRECOMP_CXX_HEADER})
set (${opm}_PRECOMP_CXX_HEADER "")
endif (NOT EXISTS ${PROJECT_SOURCE_DIR}/${${opm}_PRECOMP_CXX_HEADER})
endmacro (opm_sources opm)
# disable an entire directory from sources
@ -60,36 +85,3 @@ macro (opm_disable_source opm)
endforeach (_file)
endforeach (_exp)
endmacro (opm_disable_source opm reldir)
macro (opm_find_tests)
# every C++ program prefixed with test_ under tests/ directory should
# be automatically set up as a test
set (tests_DIR "tests")
file (GLOB_RECURSE tests_SOURCES
"${tests_DIR}/test_*.cpp"
"${tests_DIR}/*_test.cpp"
)
file (GLOB_RECURSE not_tests_SOURCES
"${tests_DIR}/not-unit/test_*.cpp"
"${tests_DIR}/not-unit/*_test.cpp"
)
# how to retrieve the "fancy" name from the filename
set (tests_REGEXP
"^test_([^/]*)$"
"^([^/]*)_test$"
)
if (tests_SOURCES AND not_tests_SOURCES)
list (REMOVE_ITEM tests_SOURCES ${not_tests_SOURCES})
endif (tests_SOURCES AND not_tests_SOURCES)
endmacro (opm_find_tests)
macro (opm_find_tutorials)
# enumerate tutorials in project
set (tutorial_DIR "tutorials")
file (GLOB tutorial_SOURCES "${tutorial_DIR}/tutorial[0-9].cpp")
endmacro (opm_find_tutorials)
macro (opm_find_examples)
set (examples_DIR "examples")
file (GLOB examples_SOURCES "${examples_DIR}/*.cpp")
endmacro (opm_find_examples)

View File

@ -108,9 +108,9 @@ endmacro (opm_compile_satellites opm prefix)
#
# Example:
#
# opm_data (tests datafiles "tests/" "*.xml")
# opm_data (tests datafiles "tests/")
#
macro (opm_data satellite target dirname files)
macro (opm_data satellite target dirname)
# even if there are no datafiles, create the directory so the
# satellite programs have a homedir to run in
execute_process (
@ -124,11 +124,6 @@ macro (opm_data satellite target dirname files)
# provide datafiles as inputs for the tests, by copying them
# to a tests/ directory in the output tree (if different)
set (${satellite}_INPUT_FILES)
set (${satellite}_DATA)
foreach (_fileset IN ITEMS ${files})
file (GLOB _fileset_DATA "${dirname}/${_fileset}")
list (APPEND ${satellite}_DATA ${_fileset_DATA})
endforeach (_fileset)
if (NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR)
foreach (input_datafile IN LISTS ${satellite}_DATA)
file (RELATIVE_PATH rel_datafile "${PROJECT_SOURCE_DIR}" ${input_datafile})