###########################################################################
#
#  Copyright (c) Kitware Inc.
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0.txt
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
###########################################################################

cmake_minimum_required(VERSION 2.8.8)
project(SAMRAI C CXX Fortran)

set(KITS algorithm apputils geometry hierarchy mathops mesh patchdata solvers utilities transfer)

set(DBL_SNAN_IS_BROKEN 1)
set(FLT_SNAN_IS_BROKEN 1)
set(HAVE_CMATH 1)
set(HAVE_CMATH_ISNAN 1)
set(HAVE_EXCEPTION_HANDLING 1)
set(HAVE_HDF5 1)
set(HAVE_INTTYPES_H 1)
set(HAVE_IOMANIP_LEFT 1)
set(HAVE_ISO_SSTREAM 1)
set(HAVE_MALLINFO 1)
set(HAVE_MALLOC_H 1)
set(HAVE_MEMBER_FUNCTION_SPECIALIZATION 1)
set(HAVE_MEMORY_H 1)
set(HAVE_MPI 1)
set(HAVE_NAMESPACE 1)
set(HAVE_NEW_PLACEMENT_OPERATOR 1)
set(HAVE_SILO 1)
set(HAVE_SSTREAM 1)
set(HAVE_STANDARD_STATIC_DATA_SPECIALIZATION 1)
set(HAVE_STATIC_DATA_INSTANTIATION 1)
set(HAVE_STDINT_H 1)
set(HAVE_STDLIB_H 1)
set(HAVE_STRINGIZE 1)
set(HAVE_STRINGS_H 1)
set(HAVE_STRING_H 1)
set(HAVE_SYS_STAT_H 1)
set(HAVE_SYS_TYPES_H 1)
set(HAVE_TEMPLATE_COMPLEX 1)
set(HAVE_UNISTD_H 1)
set(LACKS_CUBES 1)
set(LACKS_ELEVEN 1)
set(LACKS_HYPRE 1)
set(LACKS_ISNAN_TEMPLATE 1)
set(LACKS_PROPER_XDR_HEADER 1)
set(LACKS_SUNDIALS 1)
set(LACKS_TAU 1)
set(LACKS_VAMPIR 1)
set(LACKS_X11 1)
set(NAN_IS_BROKEN 1)
set(OSTRSTREAM_TYPE_IS_BROKEN 1)
set(STDC_HEADERS 1)
set(X_DISPLAY_MISSING 1)
set(REQUIRES_CMATH 1)
set(INCLUDE_TEMPLATE_IMPLEMENTATION 1)

configure_file(${CMAKE_CURRENT_BINARY_DIR}/SAMRAI_config.h.in
        ${CMAKE_CURRENT_BINARY_DIR}/include/SAMRAI_config.h)

include(${FIND_M4})

# FindMPI
find_package(MPI)
include_directories(${MPI_CXX_INCLUDE_PATH})

# FindHDF5
set(ENV{HDF5_ROOT} ${HDF5_ROOT})
find_package(HDF5)
include_directories(${HDF5_INCLUDE_DIRS})

# FindSILO
include_directories(${SILO_ROOT}/include)

set(FortranM4_SRCS
        source/algorithm/hyperbolic/algs_upfluxsum2d.m4
        source/algorithm/hyperbolic/algs_upfluxsum1d.m4
        source/algorithm/hyperbolic/algs_upfluxsum3d.m4
        source/algorithm/femutils/standard/algs_nodeouternodeops2d.m4
        source/algorithm/femutils/standard/algs_nodeouternodeops3d.m4
        source/geometry/cartesian/operators/fortran/geom_cartcoarsen3d.m4
        source/geometry/cartesian/operators/fortran/geom_cartrefine1d.m4
        source/geometry/cartesian/operators/fortran/geom_cartcoarsen1d.m4
        source/geometry/cartesian/operators/fortran/geom_cartrefine3d.m4
        source/geometry/cartesian/operators/fortran/geom_cartcoarsen2d.m4
        source/geometry/cartesian/operators/fortran/geom_cartrefine2d.m4
        source/mesh/gridding/mesh_coarsentags1d.m4
        source/mesh/gridding/mesh_coarsentags2d.m4
        source/mesh/gridding/mesh_coarsentags3d.m4
        source/patchdata/fortran/pdat_dbugfort3d.m4
        source/patchdata/fortran/pdat_dbugfort2d.m4
        source/patchdata/fortran/pdat_dbugfort1d.m4
        source/patchdata/operators/constant/fortran/pdat_conrefine3d.m4
        source/patchdata/operators/constant/fortran/pdat_conrefine1d.m4
        source/patchdata/operators/constant/fortran/pdat_concoarsen1d.m4
        source/patchdata/operators/constant/fortran/pdat_concoarsen2d.m4
        source/patchdata/operators/constant/fortran/pdat_concoarsen3d.m4
        source/patchdata/operators/constant/fortran/pdat_conrefine2d.m4
        source/patchdata/operators/time_interpolate/fortran/pdat_lintimint2d.m4
        source/patchdata/operators/time_interpolate/fortran/pdat_lintimint3d.m4
        source/patchdata/operators/time_interpolate/fortran/pdat_lintimint1d.m4
        source/apputils/embedded_boundary/appu_ebdry2d.m4
        source/apputils/embedded_boundary/appu_ebdry3d.m4
        source/apputils/boundary/appu_cartbdry3d.m4
        source/apputils/boundary/appu_cartbdry2d.m4
        )

set(M4ARGS "")
set(F_EXT ".f")
add_m4_sources(samrai_fortran_SRCS "" .f ${FortranM4_SRCS})

set(samrai_solvers_inlined_SRCS
        source/solvers/vectors/SAMRAIVectorReal.C
        source/solvers/vectors/Sundials_SAMRAIVector.C
        source/solvers/vectors/PETSc_SAMRAIVectorReal.C
        source/solvers/nonlinear/NonlinearSolverStrategy.C
        source/solvers/poisson/RobinBcCoefStrategy.C
        source/solvers/poisson/CellPoissonFACOps.C
        source/solvers/poisson/SimpleCellRobinBcCoefs.C
        source/solvers/poisson/CartesianRobinBcHelper.C
        source/solvers/poisson/LocationIndexRobinBcCoefs.C
        source/solvers/poisson/GhostCellRobinBcCoefs.C
        source/solvers/poisson/CellPoissonFACSolver.C
        source/solvers/poisson/CellPoissonHypreSolver.C
        source/solvers/packages/petsc/PETScAbstractVectorReal.C
        source/solvers/packages/petsc/SNES_SAMRAIContext.C
        source/solvers/packages/sundials/kinsol/KINSOL_SAMRAIContext.C
        source/solvers/FAC/FACOperatorStrategy.C
        source/solvers/FAC/FACPreconditioner.C
        )

set(samrai_solvers_SRCS
        source/solvers/packages/sundials/kinsol/KINSOLAbstractFunctions.C
        source/solvers/packages/sundials/kinsol/KINSOLSolver.C
        source/solvers/packages/sundials/vector/SundialsAbstractVector.C
        source/solvers/packages/sundials/vector/solv_NVector.C
        source/solvers/packages/sundials/cvode/CVODESolver.C
        source/solvers/packages/sundials/cvode/CVODEAbstractFunctions.C
        source/solvers/packages/petsc/SNESAbstractFunctions.C
        source/solvers/poisson/PoissonSpecifications.C
        )

set(samrai_algorithm_inlined_SRCS
        source/algorithm/hyperbolic/HyperbolicLevelIntegrator.C
        source/algorithm/hyperbolic/HyperbolicPatchStrategy.C
        source/algorithm/time_refinement/TimeRefinementLevelStrategy.C
        source/algorithm/time_refinement/TimeRefinementIntegrator.C
        source/algorithm/femutils/standard/MblkPatchBoundaryNodeSum.C
        source/algorithm/femutils/standard/OuteredgeSumTransaction.C
        source/algorithm/femutils/standard/PatchBoundaryEdgeSum.C
        source/algorithm/femutils/standard/OuternodeSumTransactionFactory.C
        source/algorithm/femutils/standard/PatchBoundaryNodeSum.C
        source/algorithm/femutils/standard/OuteredgeSumTransactionFactory.C
        source/algorithm/femutils/standard/OuternodeSumTransaction.C
        source/algorithm/femutils/locally_active/LocallyActiveDataOuternodeSumTransactionFactory.C
        source/algorithm/femutils/locally_active/LocallyActiveDataPatchBoundaryNodeSum.C
        source/algorithm/femutils/locally_active/LocallyActiveDataPatchBoundaryEdgeSum.C
        source/algorithm/femutils/locally_active/LocallyActiveDataOuteredgeSumTransactionFactory.C
        source/algorithm/implicit/ImplicitEquationStrategy.C
        source/algorithm/implicit/ImplicitIntegrator.C
        source/algorithm/method_of_lines/MethodOfLinesIntegrator.C
        source/algorithm/method_of_lines/MethodOfLinesPatchStrategy.C
        )

set(samrai_algorithm_SRCS)

set(samrai_hierarchy_SRCS
        source/hierarchy/variables/ComponentSelector.C
        source/hierarchy/patches/ProcessorMapping.C
        source/hierarchy/variables/VariableContext.C
        )

set(samrai_hierarchy_inlined_SRCS
        source/hierarchy/boxes/BoxList.C
        source/hierarchy/boxes/BoxArray.C
        source/hierarchy/boxes/BoxTreeNode.C
        source/hierarchy/boxes/Box.C
        source/hierarchy/boxes/BoxIOUtility.C
        source/hierarchy/boxes/Index.C
        source/hierarchy/boxes/IntVector.C
        source/hierarchy/boxes/BoxGraph.C
        source/hierarchy/boxes/BoxComm.C
        source/hierarchy/boxes/BinaryTree.C
        source/hierarchy/boxes/BoxTop.C
        source/hierarchy/boxes/BoxGraphUtilities.C
        source/hierarchy/boxes/BoxTree.C
        source/hierarchy/boxes/BoxUtilities.C
        source/hierarchy/patches/PatchHierarchy.C
        source/hierarchy/patches/PatchLevel.C
        source/hierarchy/patches/CoarseFineBoundary.C
        source/hierarchy/patches/BoundaryLookupTable.C
        source/hierarchy/patches/PatchGeometry.C
        source/hierarchy/patches/GridGeometry.C
        source/hierarchy/patches/PatchFactory.C
        source/hierarchy/patches/BasePatchLevel.C
        source/hierarchy/patches/BoundaryBox.C
        source/hierarchy/patches/Patch.C
        source/hierarchy/patches/BasePatchHierarchy.C
        source/hierarchy/patches/BoundaryBoxUtils.C
        source/hierarchy/patches/PatchLevelFactory.C
        source/hierarchy/patches/PatchConfigurationUtilities.C
        source/hierarchy/variables/PatchDescriptor.C
        source/hierarchy/variables/LocallyActiveDataPatchLevelManager.C
        source/hierarchy/variables/LocallyActiveVariableDatabase.C
        source/hierarchy/variables/BoxOverlap.C
        source/hierarchy/variables/PatchData.C
        source/hierarchy/variables/VariableDatabase.C
        source/hierarchy/variables/BoxGeometry.C
        source/hierarchy/variables/PatchDataFactory.C
        source/hierarchy/variables/Variable.C
        source/hierarchy/multiblock/MultiblockGridGeometry.C
        source/hierarchy/multiblock/MBUtilities.C
        source/hierarchy/multiblock/MultiblockPatchLevel.C
        source/hierarchy/multiblock/MultiblockDataTranslator.C
        source/hierarchy/multiblock/MultiblockPatchHierarchy.C
        source/hierarchy/dlbg/LayerHierarchy.C
        source/hierarchy/dlbg/LayerEdgeSet.C
        source/hierarchy/dlbg/LayerNodeSet.C
        source/hierarchy/dlbg/LayerNode.C
        )

set(samrai_geometry_inlined_SRCS
        source/geometry/skeleton/patch_geom/SkeletonPatchGeometry.C
        source/geometry/skeleton/operators/SkeletonRefine.C
        source/geometry/skeleton/operators/SkeletonCoarsen.C
        source/geometry/skeleton/grid_geom/SkeletonGridGeometry.C
        source/geometry/cartesian/patch_geom/CartesianPatchGeometry.C
        source/geometry/cartesian/operators/outerside/CartesianOutersideDoubleWeightedAverage.C
        source/geometry/cartesian/operators/cell/CartesianCellFloatLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellFloatWeightedAverage.C
        source/geometry/cartesian/operators/cell/CartesianCellDoubleLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellFloatConservativeLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellDoubleConservativeLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellComplexConservativeLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellDoubleWeightedAverage.C
        source/geometry/cartesian/operators/cell/CartesianCellComplexLinearRefine.C
        source/geometry/cartesian/operators/cell/CartesianCellComplexWeightedAverage.C
        source/geometry/cartesian/operators/edge/CartesianEdgeFloatWeightedAverage.C
        source/geometry/cartesian/operators/edge/CartesianEdgeFloatConservativeLinearRefine.C
        source/geometry/cartesian/operators/edge/CartesianEdgeDoubleConservativeLinearRefine.C
        source/geometry/cartesian/operators/edge/CartesianEdgeDoubleWeightedAverage.C
        source/geometry/cartesian/operators/edge/CartesianEdgeComplexWeightedAverage.C
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceComplexWeightedAverage.C
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceDoubleWeightedAverage.C
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceFloatWeightedAverage.C
        source/geometry/cartesian/operators/side/CartesianSideDoubleWeightedAverage.C
        source/geometry/cartesian/operators/side/CartesianSideComplexWeightedAverage.C
        source/geometry/cartesian/operators/side/CartesianSideFloatConservativeLinearRefine.C
        source/geometry/cartesian/operators/side/CartesianSideDoubleConservativeLinearRefine.C
        source/geometry/cartesian/operators/side/CartesianSideFloatWeightedAverage.C
        source/geometry/cartesian/operators/node/CartesianNodeFloatLinearRefine.C
        source/geometry/cartesian/operators/node/CartesianNodeDoubleLinearRefine.C
        source/geometry/cartesian/operators/node/CartesianNodeComplexLinearRefine.C
        source/geometry/cartesian/operators/face/CartesianFaceDoubleWeightedAverage.C
        source/geometry/cartesian/operators/face/CartesianFaceDoubleConservativeLinearRefine.C
        source/geometry/cartesian/operators/face/CartesianFaceFloatWeightedAverage.C
        source/geometry/cartesian/operators/face/CartesianFaceFloatConservativeLinearRefine.C
        source/geometry/cartesian/operators/face/CartesianFaceComplexWeightedAverage.C
        source/geometry/cartesian/grid_geom/CartesianGridGeometry.C
        source/geometry/multiblock/patch_geom/BlockPatchGeometry.C
        source/geometry/multiblock/grid_geom/BlockGridGeometry.C
        )

set(samrai_geometry_SRCS)

set(samrai_toolbox_inlined_SRCS
        source/toolbox/memory/Array.C
        source/toolbox/memory/ConstPointer.C
        source/toolbox/memory/Pointer.C
        source/toolbox/base/MathUtilities.C
        source/toolbox/base/List.C
        )

set(samrai_toolbox_SRCS
        source/toolbox/base/PIO.C
        source/toolbox/base/SAMRAIManager.C
        source/toolbox/base/Logger.C
        source/toolbox/base/ParallelBuffer.C
        source/toolbox/base/ShutdownRegistry.C
        source/toolbox/base/Utilities.C
        source/toolbox/base/IEEE.C
        source/toolbox/base/MathUtilitiesSpecial.C
        source/toolbox/base/Tracer.C
        source/toolbox/timers/TimerManager.C
        source/toolbox/timers/Timer.C
        source/toolbox/timers/Statistic.C
        source/toolbox/timers/StatTransaction.C
        source/toolbox/timers/Statistician.C
        source/toolbox/timers/Clock.C
        source/toolbox/parallel/Schedule.C
        source/toolbox/parallel/AsyncCommStage.C
        source/toolbox/parallel/JobRelauncher.C
        source/toolbox/parallel/Transaction.C
        source/toolbox/parallel/AsyncCommGroup.C
        source/toolbox/parallel/SAMRAI_MPI.C
        source/toolbox/stream/FileStream.C
        source/toolbox/stream/XDRStream.C
        source/toolbox/stream/MessageStream.C
        source/toolbox/stream/AbstractStream.C
        source/toolbox/restartdb/HDFDatabaseFactory.C
        source/toolbox/restartdb/SiloDatabase.C
        source/toolbox/restartdb/RestartManager.C
        source/toolbox/restartdb/SiloDatabaseFactory.C
        source/toolbox/restartdb/NullDatabase.C
        source/toolbox/restartdb/HDFDatabase.C
        source/toolbox/memory/Arena.C
        source/toolbox/memory/MemoryUtilities.C
        source/toolbox/memory/DescribedClass.C
        source/toolbox/memory/ArenaManager.C
        source/toolbox/memory/FixedArena.C
        source/toolbox/memory/ConstPointerBase.C
        source/toolbox/memory/StandardArena.C
        source/toolbox/memory/ScratchArena.C
        source/toolbox/memory/ReferenceCounter.C
        source/toolbox/memory/PointerBase.C
        source/toolbox/memory/ArraySpecial.C
        source/toolbox/inputdb/Parser.C
        source/toolbox/inputdb/InputManager.C
        source/toolbox/inputdb/Scanner.C
        source/toolbox/inputdb/Grammar.C
        source/toolbox/database/MemoryDatabaseFactory.C
        source/toolbox/database/Database.C
        source/toolbox/database/Serializable.C
        source/toolbox/database/DatabaseBox.C
        source/toolbox/database/MemoryDatabase.C
        )

set(samrai_mesh_inlined_SRCS
        source/mesh/load_balance/LoadBalanceStrategy.C
        source/mesh/load_balance/BalanceUtilities.C
        source/mesh/load_balance/LoadBalancer.C
        source/mesh/gridding/TagAndInitializeStrategy.C
        source/mesh/gridding/GriddingAlgorithm.C
        source/mesh/gridding/StandardTagAndInitialize.C
        source/mesh/gridding/StandardTagAndInitStrategy.C
        source/mesh/gridding/BaseGriddingAlgorithm.C
        source/mesh/clustering/BoxGeneratorStrategy.C
        source/mesh/clustering/AsyncBergerRigoutsosNode.C
        source/mesh/clustering/AsyncBergerRigoutsos.C
        source/mesh/clustering/HistogramBox.C
        source/mesh/clustering/BergerRigoutsos.C
        source/mesh/multiblock/MultiblockGriddingTagger.C
        source/mesh/multiblock/MultiblockGriddingAlgorithm.C
        )

set(samrai_mesh_SRCS
        source/mesh/load_balance/SpatialKey.C
        )

set(samrai_patchdata_inlined_SRCS
        source/patchdata/outeredge/OuteredgeVariable.C
        source/patchdata/outeredge/OuteredgeDataFactory.C
        source/patchdata/outeredge/OuteredgeData.C
        source/patchdata/outerside/OutersideData.C
        source/patchdata/outerside/OutersideVariable.C
        source/patchdata/outerside/OutersideDataFactory.C
        source/patchdata/outernode/OuternodeDataFactory.C
        source/patchdata/outernode/OuternodeData.C
        source/patchdata/outernode/OuternodeVariable.C
        source/patchdata/cell/CellDataFactory.C
        source/patchdata/cell/CellIndex.C
        source/patchdata/cell/CellData.C
        source/patchdata/cell/CellIterator.C
        source/patchdata/cell/CellVariable.C
        source/patchdata/array/CopyOperation.C
        source/patchdata/array/ArrayDataOperationUtilities.C
        source/patchdata/array/ArrayDataIterator.C
        source/patchdata/array/ArrayData.C
        source/patchdata/array/SumOperation.C
        source/patchdata/multiblock/MultiblockEdgeDataTranslator.C
        source/patchdata/multiblock/MultiblockCellDataTranslator.C
        source/patchdata/multiblock/MBDataUtilities.C
        source/patchdata/multiblock/MultiblockSideDataTranslator.C
        source/patchdata/multiblock/MultiblockFaceDataTranslator.C
        source/patchdata/multiblock/MultiblockNodeDataTranslator.C
        source/patchdata/boxgeometry/OuterfaceGeometry.C
        source/patchdata/boxgeometry/NodeOverlap.C
        source/patchdata/boxgeometry/FaceGeometry.C
        source/patchdata/boxgeometry/SideOverlap.C
        source/patchdata/boxgeometry/FirstLayerCellFillPattern.C
        source/patchdata/boxgeometry/SecondLayerNodeFillPattern.C
        source/patchdata/boxgeometry/OuternodeGeometry.C
        source/patchdata/boxgeometry/CellOverlap.C
        source/patchdata/boxgeometry/FirstLayerNodeFillPattern.C
        source/patchdata/boxgeometry/EdgeOverlap.C
        source/patchdata/boxgeometry/SideGeometry.C
        source/patchdata/boxgeometry/SecondLayerNodeNoCornersFillPattern.C
        source/patchdata/boxgeometry/FaceOverlap.C
        source/patchdata/boxgeometry/OuteredgeGeometry.C
        source/patchdata/boxgeometry/CellGeometry.C
        source/patchdata/boxgeometry/FirstLayerCellNoCornersFillPattern.C
        source/patchdata/boxgeometry/EdgeGeometry.C
        source/patchdata/boxgeometry/NodeGeometry.C
        source/patchdata/boxgeometry/OutersideGeometry.C
        source/patchdata/edge/EdgeVariable.C
        source/patchdata/edge/EdgeDataFactory.C
        source/patchdata/edge/EdgeIterator.C
        source/patchdata/edge/EdgeData.C
        source/patchdata/edge/EdgeIndex.C
        source/patchdata/operators/constant/outernode/OuternodeDoubleConstantCoarsen.C
        source/patchdata/operators/constant/cell/CellFloatConstantRefine.C
        source/patchdata/operators/constant/cell/CellDoubleConstantRefine.C
        source/patchdata/operators/constant/cell/CellIntegerConstantRefine.C
        source/patchdata/operators/constant/cell/CellComplexConstantRefine.C
        source/patchdata/operators/constant/edge/EdgeIntegerConstantRefine.C
        source/patchdata/operators/constant/edge/EdgeComplexConstantRefine.C
        source/patchdata/operators/constant/edge/EdgeDoubleConstantRefine.C
        source/patchdata/operators/constant/edge/EdgeFloatConstantRefine.C
        source/patchdata/operators/constant/outerface/OuterfaceDoubleConstantRefine.C
        source/patchdata/operators/constant/outerface/OuterfaceFloatConstantRefine.C
        source/patchdata/operators/constant/outerface/OuterfaceIntegerConstantRefine.C
        source/patchdata/operators/constant/outerface/OuterfaceComplexConstantRefine.C
        source/patchdata/operators/constant/side/SideComplexConstantRefine.C
        source/patchdata/operators/constant/side/SideDoubleConstantRefine.C
        source/patchdata/operators/constant/side/SideIntegerConstantRefine.C
        source/patchdata/operators/constant/side/SideFloatConstantRefine.C
        source/patchdata/operators/constant/node/NodeDoubleInjection.C
        source/patchdata/operators/constant/node/NodeFloatInjection.C
        source/patchdata/operators/constant/node/NodeIntegerInjection.C
        source/patchdata/operators/constant/node/NodeComplexInjection.C
        source/patchdata/operators/constant/face/FaceDoubleConstantRefine.C
        source/patchdata/operators/constant/face/FaceIntegerConstantRefine.C
        source/patchdata/operators/constant/face/FaceComplexConstantRefine.C
        source/patchdata/operators/constant/face/FaceFloatConstantRefine.C
        source/patchdata/operators/time_interpolate/outerside/OutersideFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/outerside/OutersideComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/outerside/OutersideDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/cell/CellComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/cell/CellFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/cell/CellDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/edge/EdgeDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/edge/EdgeComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/edge/EdgeFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/outerface/OuterfaceFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/outerface/OuterfaceComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/outerface/OuterfaceDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/side/SideFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/side/SideDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/side/SideComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/node/NodeFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/node/NodeDoubleLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/node/NodeComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/face/FaceFloatLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/face/FaceComplexLinearTimeInterpolateOp.C
        source/patchdata/operators/time_interpolate/face/FaceDoubleLinearTimeInterpolateOp.C
        source/patchdata/index/IndexData.C
        source/patchdata/index/IndexVariable.C
        source/patchdata/index/IndexDataFactory.C
        source/patchdata/outerface/OuterfaceDataFactory.C
        source/patchdata/outerface/OuterfaceVariable.C
        source/patchdata/outerface/OuterfaceData.C
        source/patchdata/side/SideData.C
        source/patchdata/side/SideIterator.C
        source/patchdata/side/SideIndex.C
        source/patchdata/side/SideDataFactory.C
        source/patchdata/side/SideVariable.C
        source/patchdata/node/NodeIndex.C
        source/patchdata/node/NodeDataFactory.C
        source/patchdata/node/NodeIterator.C
        source/patchdata/node/NodeVariable.C
        source/patchdata/node/NodeData.C
        source/patchdata/face/FaceVariable.C
        source/patchdata/face/FaceDataFactory.C
        source/patchdata/face/FaceIndex.C
        source/patchdata/face/FaceIterator.C
        source/patchdata/face/FaceData.C
        )

set(samrai_patchdata_SRCS)

set(samrai_mathops_inlined_SRCS
        source/mathops/hierarchy/HierarchyDataOpsComplex.C
        source/mathops/hierarchy/HierarchyDataOpsReal.C
        source/mathops/hierarchy/HierarchyDataOpsInteger.C
        source/mathops/hierarchy/HierarchyDataOpsManager.C
        source/mathops/cell/PatchCellDataOpsComplex.C
        source/mathops/cell/HierarchyCellDataOpsReal.C
        source/mathops/cell/PatchCellDataNormOpsReal.C
        source/mathops/cell/PatchCellDataNormOpsComplex.C
        source/mathops/cell/HierarchyCellDataOpsInteger.C
        source/mathops/cell/PatchCellDataOpsReal.C
        source/mathops/cell/HierarchyCellDataOpsComplex.C
        source/mathops/cell/PatchCellDataBasicOps.C
        source/mathops/cell/PatchCellDataMiscellaneousOpsReal.C
        source/mathops/cell/PatchCellDataOpsInteger.C
        source/mathops/array/ArrayDataNormOpsComplex.C
        source/mathops/array/ArrayDataBasicOps.C
        source/mathops/array/ArrayDataMiscellaneousOpsReal.C
        source/mathops/array/ArrayDataNormOpsInteger.C
        source/mathops/array/ArrayDataNormOpsReal.C
        source/mathops/edge/HierarchyEdgeDataOpsComplex.C
        source/mathops/edge/PatchEdgeDataMiscellaneousOpsReal.C
        source/mathops/edge/PatchEdgeDataOpsInteger.C
        source/mathops/edge/PatchEdgeDataBasicOps.C
        source/mathops/edge/PatchEdgeDataNormOpsComplex.C
        source/mathops/edge/PatchEdgeDataOpsReal.C
        source/mathops/edge/PatchEdgeDataOpsComplex.C
        source/mathops/edge/HierarchyEdgeDataOpsInteger.C
        source/mathops/edge/PatchEdgeDataNormOpsReal.C
        source/mathops/edge/HierarchyEdgeDataOpsReal.C
        source/mathops/side/PatchSideDataOpsReal.C
        source/mathops/side/PatchSideDataMiscellaneousOpsReal.C
        source/mathops/side/PatchSideDataOpsInteger.C
        source/mathops/side/PatchSideDataOpsComplex.C
        source/mathops/side/PatchSideDataNormOpsComplex.C
        source/mathops/side/PatchSideDataBasicOps.C
        source/mathops/side/HierarchySideDataOpsReal.C
        source/mathops/side/PatchSideDataNormOpsReal.C
        source/mathops/side/HierarchySideDataOpsInteger.C
        source/mathops/side/HierarchySideDataOpsComplex.C
        source/mathops/node/HierarchyNodeDataOpsInteger.C
        source/mathops/node/PatchNodeDataNormOpsComplex.C
        source/mathops/node/PatchNodeDataOpsInteger.C
        source/mathops/node/PatchNodeDataMiscellaneousOpsReal.C
        source/mathops/node/PatchNodeDataOpsComplex.C
        source/mathops/node/PatchNodeDataBasicOps.C
        source/mathops/node/PatchNodeDataOpsReal.C
        source/mathops/node/HierarchyNodeDataOpsComplex.C
        source/mathops/node/PatchNodeDataNormOpsReal.C
        source/mathops/node/HierarchyNodeDataOpsReal.C
        source/mathops/face/HierarchyFaceDataOpsReal.C
        source/mathops/face/HierarchyFaceDataOpsComplex.C
        source/mathops/face/PatchFaceDataMiscellaneousOpsReal.C
        source/mathops/face/PatchFaceDataNormOpsComplex.C
        source/mathops/face/PatchFaceDataNormOpsReal.C
        source/mathops/face/PatchFaceDataOpsInteger.C
        source/mathops/face/HierarchyFaceDataOpsInteger.C
        source/mathops/face/PatchFaceDataOpsComplex.C
        source/mathops/face/PatchFaceDataBasicOps.C
        source/mathops/face/PatchFaceDataOpsReal.C
        )

set(samrai_mathops_SRCS)

set(samrai_transfer_inlined_SRCS
        source/transfer/multiblock/MultiblockRefineSchedule.C
        source/transfer/multiblock/MultiblockRefinePatchStrategy.C
        source/transfer/multiblock/MultiblockCoarsenAlgorithm.C
        source/transfer/multiblock/MultiblockCoarsenSchedule.C
        source/transfer/multiblock/MultiblockRefineAlgorithm.C
        source/transfer/multiblock/MultiblockCoarsenPatchStrategy.C
        source/transfer/datamovers/standard/CoarsenTransactionFactory.C
        source/transfer/datamovers/standard/CoarsenSchedule.C
        source/transfer/datamovers/standard/RefineAlgorithm.C
        source/transfer/datamovers/standard/RefineClasses.C
        source/transfer/datamovers/standard/RefinePatchStrategy.C
        source/transfer/datamovers/standard/StandardRefineTransactionFactory.C
        source/transfer/datamovers/standard/CoarsenAlgorithm.C
        source/transfer/datamovers/standard/RefineTransactionFactory.C
        source/transfer/datamovers/standard/FillBoxSet.C
        source/transfer/datamovers/standard/StandardCoarsenTransactionFactory.C
        source/transfer/datamovers/standard/RefineTimeTransaction.C
        source/transfer/datamovers/standard/RefineCopyTransaction.C
        source/transfer/datamovers/standard/RefineSchedule.C
        source/transfer/datamovers/standard/CoarsenCopyTransaction.C
        source/transfer/datamovers/standard/CoarsenClasses.C
        source/transfer/datamovers/standard/CoarsenPatchStrategy.C
        source/transfer/datamovers/locally_active/LocallyActiveDataFillBoxSet.C
        source/transfer/datamovers/locally_active/LocallyActiveDataRefinePatchStrategy.C
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineAlgorithm.C
        source/transfer/datamovers/locally_active/StandardLocallyActiveDataRefineTransactionFactory.C
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenTransactionFactory.C
        source/transfer/datamovers/locally_active/StandardLocallyActiveDataCoarsenTransactionFactory.C
        source/transfer/datamovers/locally_active/LocallyActiveDataFillBox.C
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenSchedule.C
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineSchedule.C
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenPatchStrategy.C
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenAlgorithm.C
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineTransactionFactory.C
        source/transfer/operators/TimeInterpolateOperator.C
        source/transfer/operators/CoarsenOperator.C
        source/transfer/operators/BoxGeometryFillPattern.C
        source/transfer/operators/Geometry.C
        source/transfer/operators/VariableFillPattern.C
        source/transfer/operators/RefineOperator.C
        )

set(samrai_transfer_SRCS)

set(samrai_apputils_inlined_SRCS
        source/apputils/embedded_boundary/BoundaryNode.C
        source/apputils/embedded_boundary/EmbeddedBoundaryShapeSphere.C
        source/apputils/embedded_boundary/EmbeddedBoundaryShape.C
        source/apputils/embedded_boundary/EmbeddedBoundaryShapePolygon.C
        source/apputils/embedded_boundary/EmbeddedBoundaryGeometry.C
        source/apputils/embedded_boundary/ElevenPatchInterface.C
        source/apputils/embedded_boundary/CubesPatchInterface.C
        source/apputils/embedded_boundary/CutCell.C
        source/apputils/plotting/CartesianVizamraiDataWriter.C
        source/apputils/plotting/VisItDataWriter.C
        source/apputils/plotting/VisDerivedDataStrategy.C
        source/apputils/plotting/VisMaterialsDataStrategy.C
        )

set(samrai_apputils_SRCS
        source/apputils/boundary/BoundaryUtilityStrategy.C
        source/apputils/boundary/CartesianBoundaryUtilities3.C
        source/apputils/boundary/CartesianBoundaryUtilities2.C
        source/apputils/plotting/appu_cpdat2buf2d.f
        source/apputils/plotting/appu_cpdat2buf3d.f
        )

if(NOT DEFINED INCLUDE_TEMPLATE_IMPLEMENTATION)

    foreach(kit ${KITS})
        set(samrai_${kit}_SRCS
                ${samrai_${kit}_inlined_SRCS}
                ${samrai_${kit}_SRCS}
                )
    endforeach()

endif()

#include(templates.cmake)

include_directories(
        source/solvers
        source/solvers/templates
        source/solvers/templates/automaticXd
        source/solvers/templates/automaticNond
        source/solvers/vectors
        source/solvers/nonlinear
        source/solvers/poisson
        source/solvers/packages
        source/solvers/packages/petsc
        source/solvers/packages/sundials
        source/solvers/packages/sundials/kinsol
        source/solvers/packages/sundials/vector
        source/solvers/packages/sundials/cvode
        source/solvers/FAC
        source/algorithm
        source/algorithm/hyperbolic
        source/algorithm/templates
        source/algorithm/templates/automaticXd
        source/algorithm/time_refinement
        source/algorithm/femutils
        source/algorithm/femutils/standard
        source/algorithm/femutils/locally_active
        source/algorithm/implicit
        source/algorithm/method_of_lines
        source/hierarchy
        source/hierarchy/templates
        source/hierarchy/templates/automaticXd
        source/hierarchy/templates/special
        source/hierarchy/boxes
        source/hierarchy/patches
        source/hierarchy/variables
        source/hierarchy/multiblock
        source/hierarchy/dlbg
        source/geometry
        source/geometry/templates
        source/geometry/templates/automaticXd
        source/geometry/skeleton
        source/geometry/skeleton/patch_geom
        source/geometry/skeleton/operators
        source/geometry/skeleton/grid_geom
        source/geometry/cartesian
        source/geometry/cartesian/patch_geom
        source/geometry/cartesian/operators
        source/geometry/cartesian/operators/outerside
        source/geometry/cartesian/operators/cell
        source/geometry/cartesian/operators/edge
        source/geometry/cartesian/operators/fortran
        source/geometry/cartesian/operators/outerface
        source/geometry/cartesian/operators/side
        source/geometry/cartesian/operators/node
        source/geometry/cartesian/operators/face
        source/geometry/cartesian/grid_geom
        source/geometry/multiblock
        source/geometry/multiblock/patch_geom
        source/geometry/multiblock/grid_geom
        source/toolbox
        source/toolbox/base
        source/toolbox/templates
        source/toolbox/templates/special
        source/toolbox/templates/automaticNond
        source/toolbox/timers
        source/toolbox/parallel
        source/toolbox/stream
        source/toolbox/restartdb
        source/toolbox/memory
        source/toolbox/inputdb
        source/toolbox/database
        source/mesh
        source/mesh/templates
        source/mesh/templates/automaticXd
        source/mesh/templates/automaticNond
        source/mesh/load_balance
        source/mesh/gridding
        source/mesh/clustering
        source/mesh/multiblock
        source/patchdata
        source/patchdata/outeredge
        source/patchdata/outerside
        source/patchdata/templates
        source/patchdata/templates/automaticXd
        source/patchdata/templates/special
        source/patchdata/templates/automaticNond
        source/patchdata/outernode
        source/patchdata/cell
        source/patchdata/array
        source/patchdata/array/array_access
        source/patchdata/multiblock
        source/patchdata/boxgeometry
        source/patchdata/edge
        source/patchdata/fortran
        source/patchdata/operators
        source/patchdata/operators/constant
        source/patchdata/operators/constant/outernode
        source/patchdata/operators/constant/cell
        source/patchdata/operators/constant/edge
        source/patchdata/operators/constant/fortran
        source/patchdata/operators/constant/outerface
        source/patchdata/operators/constant/side
        source/patchdata/operators/constant/node
        source/patchdata/operators/constant/face
        source/patchdata/operators/time_interpolate
        source/patchdata/operators/time_interpolate/outerside
        source/patchdata/operators/time_interpolate/cell
        source/patchdata/operators/time_interpolate/edge
        source/patchdata/operators/time_interpolate/fortran
        source/patchdata/operators/time_interpolate/outerface
        source/patchdata/operators/time_interpolate/side
        source/patchdata/operators/time_interpolate/node
        source/patchdata/operators/time_interpolate/face
        source/patchdata/index
        source/patchdata/outerface
        source/patchdata/side
        source/patchdata/node
        source/patchdata/face
        source/mathops
        source/mathops/hierarchy
        source/mathops/templates
        source/mathops/templates/automaticXd
        source/mathops/cell
        source/mathops/array
        source/mathops/edge
        source/mathops/side
        source/mathops/node
        source/mathops/face
        source/transfer
        source/transfer/templates
        source/transfer/templates/automaticXd
        source/transfer/templates/special
        source/transfer/multiblock
        source/transfer/datamovers
        source/transfer/datamovers/standard
        source/transfer/datamovers/locally_active
        source/transfer/operators
        source/apputils
        source/apputils/templates
        source/apputils/templates/automaticXd
        source/apputils/templates/special
        source/apputils/plotting
        source/apputils/embedded_boundary
        source/apputils/boundary
        ${CMAKE_CURRENT_BINARY_DIR}/include
        ${CMAKE_CURRENT_SOURCE_DIR}/include
)

add_library(samrai_fortran_lib OBJECT ${samrai_fortran_SRCS})
if(BUILD_SHARED_LIBS)
    set_target_properties(samrai_fortran_lib PROPERTIES COMPILE_FLAGS "-fPIC")
endif()

set(SAMRAI_KIT_OBJECTS $<TARGET_OBJECTS:samrai_fortran_lib>)
foreach(kit ${KITS})
    if(DEFINED samrai_${kit}_SRCS)

        add_library(samrai_${kit}_lib OBJECT ${samrai_${kit}_SRCS})
        set_target_properties(samrai_${kit}_lib PROPERTIES COMPILE_DEFINITIONS NDIM=3)
        if(BUILD_SHARED_LIBS)
            set_target_properties(samrai_${kit}_lib PROPERTIES COMPILE_FLAGS "-fPIC")
        endif()
        list(APPEND SAMRAI_KIT_OBJECTS $<TARGET_OBJECTS:samrai_${kit}_lib>)
    endif()

endforeach()

file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/SAMRAI.C
        "// Dummy file needed to drive single lib build.")

add_library(SAMRAI ${CMAKE_CURRENT_BINARY_DIR}/SAMRAI.C
        ${SAMRAI_KIT_OBJECTS}
        )

# Installation targets
set(samrai_HEADERS
        source/solvers/vectors/SAMRAIVectorReal.h
        source/solvers/vectors/Sundials_SAMRAIVector.h
        source/solvers/vectors/PETSc_SAMRAIVectorReal.h
        source/solvers/nonlinear/NonlinearSolverStrategy.h
        source/solvers/poisson/SimpleCellRobinBcCoefs.h
        source/solvers/poisson/LocationIndexRobinBcCoefs.h
        source/solvers/poisson/CellPoissonFACSolver.h
        source/solvers/poisson/GhostCellRobinBcCoefs.h
        source/solvers/poisson/RobinBcCoefStrategy.h
        source/solvers/poisson/CellPoissonFACOps.h
        source/solvers/poisson/PoissonSpecifications.h
        source/solvers/poisson/CartesianRobinBcHelper.h
        source/solvers/poisson/CellPoissonHypreSolver.h
        source/solvers/packages/petsc/PETScAbstractVectorReal.h
        source/solvers/packages/petsc/SNESAbstractFunctions.h
        source/solvers/packages/petsc/SNES_SAMRAIContext.h
        source/solvers/packages/sundials/kinsol/KINSOL_SAMRAIContext.h
        source/solvers/packages/sundials/kinsol/KINSOLSolver.h
        source/solvers/packages/sundials/kinsol/KINSOLAbstractFunctions.h
        source/solvers/packages/sundials/vector/SundialsAbstractVector.h
        source/solvers/packages/sundials/vector/nvector.h
        source/solvers/packages/sundials/vector/solv_NVector.h
        source/solvers/packages/sundials/cvode/CVODEAbstractFunctions.h
        source/solvers/packages/sundials/cvode/CVODESolver.h
        source/solvers/FAC/FACOperatorStrategy.h
        source/solvers/FAC/FACPreconditioner.h
        source/algorithm/hyperbolic/HyperbolicLevelIntegrator.h
        source/algorithm/hyperbolic/HyperbolicPatchStrategy.h
        source/algorithm/time_refinement/TimeRefinementIntegrator.h
        source/algorithm/time_refinement/TimeRefinementLevelStrategy.h
        source/algorithm/femutils/standard/OuternodeSumTransactionFactory.h
        source/algorithm/femutils/standard/PatchBoundaryEdgeSum.h
        source/algorithm/femutils/standard/OuteredgeSumTransaction.h
        source/algorithm/femutils/standard/OuternodeSumTransaction.h
        source/algorithm/femutils/standard/OuteredgeSumTransactionFactory.h
        source/algorithm/femutils/standard/PatchBoundaryNodeSum.h
        source/algorithm/femutils/standard/MblkPatchBoundaryNodeSum.h
        source/algorithm/femutils/locally_active/LocallyActiveDataOuternodeSumTransactionFactory.h
        source/algorithm/femutils/locally_active/LocallyActiveDataPatchBoundaryEdgeSum.h
        source/algorithm/femutils/locally_active/LocallyActiveDataPatchBoundaryNodeSum.h
        source/algorithm/femutils/locally_active/LocallyActiveDataOuteredgeSumTransactionFactory.h
        source/algorithm/implicit/ImplicitIntegrator.h
        source/algorithm/implicit/ImplicitEquationStrategy.h
        source/algorithm/method_of_lines/MethodOfLinesPatchStrategy.h
        source/algorithm/method_of_lines/MethodOfLinesIntegrator.h
        source/hierarchy/boxes/BoxList.h
        source/hierarchy/boxes/BoxArray.h
        source/hierarchy/boxes/BoxGraph.h
        source/hierarchy/boxes/BoxUtilities.h
        source/hierarchy/boxes/BoxTop.h
        source/hierarchy/boxes/IntVector.h
        source/hierarchy/boxes/BoxIOUtility.h
        source/hierarchy/boxes/BoxTreeNode.h
        source/hierarchy/boxes/BoxGraphUtilities.h
        source/hierarchy/boxes/BoxTree.h
        source/hierarchy/boxes/BoxComm.h
        source/hierarchy/boxes/BinaryTree.h
        source/hierarchy/boxes/Index.h
        source/hierarchy/boxes/Box.h
        source/hierarchy/patches/PatchFactory.h
        source/hierarchy/patches/CoarseFineBoundary.h
        source/hierarchy/patches/PatchLevelFactory.h
        source/hierarchy/patches/BoundaryLookupTable.h
        source/hierarchy/patches/BoundaryBoxUtils.h
        source/hierarchy/patches/PatchGeometry.h
        source/hierarchy/patches/GridGeometry.h
        source/hierarchy/patches/Patch.h
        source/hierarchy/patches/ProcessorMapping.h
        source/hierarchy/patches/PatchHierarchy.h
        source/hierarchy/patches/BoundaryBox.h
        source/hierarchy/patches/BasePatchLevel.h
        source/hierarchy/patches/PatchLevel.h
        source/hierarchy/patches/ErrorCheckIntTypes.h
        source/hierarchy/patches/BasePatchHierarchy.h
        source/hierarchy/patches/PatchConfigurationUtilities.h
        source/hierarchy/variables/VariableContext.h
        source/hierarchy/variables/VariableDatabase.h
        source/hierarchy/variables/BoxOverlap.h
        source/hierarchy/variables/PatchData.h
        source/hierarchy/variables/LocallyActiveDataPatchLevelManager.h
        source/hierarchy/variables/BoxGeometry.h
        source/hierarchy/variables/Variable.h
        source/hierarchy/variables/PatchDescriptor.h
        source/hierarchy/variables/ComponentSelector.h
        source/hierarchy/variables/PatchDataFactory.h
        source/hierarchy/variables/LocallyActiveVariableDatabase.h
        source/hierarchy/multiblock/MultiblockDataTranslator.h
        source/hierarchy/multiblock/MultiblockGridGeometry.h
        source/hierarchy/multiblock/MultiblockPatchLevel.h
        source/hierarchy/multiblock/MultiblockPatchHierarchy.h
        source/hierarchy/multiblock/MBUtilities.h
        source/hierarchy/dlbg/LayerNodeSet.h
        source/hierarchy/dlbg/LayerEdgeSet.h
        source/hierarchy/dlbg/LayerNode.h
        source/hierarchy/dlbg/LayerHierarchy.h
        source/geometry/skeleton/patch_geom/SkeletonPatchGeometry.h
        source/geometry/skeleton/operators/SkeletonRefine.h
        source/geometry/skeleton/operators/SkeletonCoarsen.h
        source/geometry/skeleton/grid_geom/SkeletonGridGeometry.h
        source/geometry/cartesian/patch_geom/CartesianPatchGeometry.h
        source/geometry/cartesian/operators/outerside/CartesianOutersideDoubleWeightedAverage.h
        source/geometry/cartesian/operators/cell/CartesianCellComplexWeightedAverage.h
        source/geometry/cartesian/operators/cell/CartesianCellComplexLinearRefine.h
        source/geometry/cartesian/operators/cell/CartesianCellDoubleConservativeLinearRefine.h
        source/geometry/cartesian/operators/cell/CartesianCellDoubleLinearRefine.h
        source/geometry/cartesian/operators/cell/CartesianCellFloatConservativeLinearRefine.h
        source/geometry/cartesian/operators/cell/CartesianCellComplexConservativeLinearRefine.h
        source/geometry/cartesian/operators/cell/CartesianCellFloatWeightedAverage.h
        source/geometry/cartesian/operators/cell/CartesianCellDoubleWeightedAverage.h
        source/geometry/cartesian/operators/cell/CartesianCellFloatLinearRefine.h
        source/geometry/cartesian/operators/edge/CartesianEdgeFloatConservativeLinearRefine.h
        source/geometry/cartesian/operators/edge/CartesianEdgeDoubleWeightedAverage.h
        source/geometry/cartesian/operators/edge/CartesianEdgeDoubleConservativeLinearRefine.h
        source/geometry/cartesian/operators/edge/CartesianEdgeFloatWeightedAverage.h
        source/geometry/cartesian/operators/edge/CartesianEdgeComplexWeightedAverage.h
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceFloatWeightedAverage.h
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceComplexWeightedAverage.h
        source/geometry/cartesian/operators/outerface/CartesianOuterfaceDoubleWeightedAverage.h
        source/geometry/cartesian/operators/side/CartesianSideDoubleWeightedAverage.h
        source/geometry/cartesian/operators/side/CartesianSideDoubleConservativeLinearRefine.h
        source/geometry/cartesian/operators/side/CartesianSideFloatWeightedAverage.h
        source/geometry/cartesian/operators/side/CartesianSideComplexWeightedAverage.h
        source/geometry/cartesian/operators/side/CartesianSideFloatConservativeLinearRefine.h
        source/geometry/cartesian/operators/node/CartesianNodeDoubleLinearRefine.h
        source/geometry/cartesian/operators/node/CartesianNodeFloatLinearRefine.h
        source/geometry/cartesian/operators/node/CartesianNodeComplexLinearRefine.h
        source/geometry/cartesian/operators/face/CartesianFaceComplexWeightedAverage.h
        source/geometry/cartesian/operators/face/CartesianFaceDoubleWeightedAverage.h
        source/geometry/cartesian/operators/face/CartesianFaceFloatConservativeLinearRefine.h
        source/geometry/cartesian/operators/face/CartesianFaceFloatWeightedAverage.h
        source/geometry/cartesian/operators/face/CartesianFaceDoubleConservativeLinearRefine.h
        source/geometry/cartesian/grid_geom/CartesianGridGeometry.h
        source/geometry/multiblock/patch_geom/BlockPatchGeometry.h
        source/geometry/multiblock/grid_geom/BlockGridGeometry.h
        source/mesh/load_balance/BalanceUtilities.h
        source/mesh/load_balance/LoadBalanceStrategy.h
        source/mesh/load_balance/SpatialKey.h
        source/mesh/load_balance/LoadBalancer.h
        source/mesh/gridding/BaseGriddingAlgorithm.h
        source/mesh/gridding/GriddingAlgorithm.h
        source/mesh/gridding/TagAndInitializeStrategy.h
        source/mesh/gridding/StandardTagAndInitStrategy.h
        source/mesh/gridding/StandardTagAndInitialize.h
        source/mesh/clustering/AsyncBergerRigoutsos.h
        source/mesh/clustering/BoxGeneratorStrategy.h
        source/mesh/clustering/BergerRigoutsos.h
        source/mesh/clustering/AsyncBergerRigoutsosNode.h
        source/mesh/clustering/HistogramBox.h
        source/mesh/multiblock/MultiblockGriddingTagger.h
        source/mesh/multiblock/MultiblockGriddingAlgorithm.h
        source/patchdata/outeredge/OuteredgeVariable.h
        source/patchdata/outeredge/OuteredgeDataFactory.h
        source/patchdata/outeredge/OuteredgeData.h
        source/patchdata/outerside/OutersideData.h
        source/patchdata/outerside/OutersideVariable.h
        source/patchdata/outerside/OutersideDataFactory.h
        source/patchdata/outernode/OuternodeData.h
        source/patchdata/outernode/OuternodeVariable.h
        source/patchdata/outernode/OuternodeDataFactory.h
        source/patchdata/cell/CellVariable.h
        source/patchdata/cell/CellData.h
        source/patchdata/cell/CellIndex.h
        source/patchdata/cell/CellIterator.h
        source/patchdata/cell/CellDataFactory.h
        source/patchdata/array/ArrayDataIterator.h
        source/patchdata/array/ArrayData.h
        source/patchdata/array/CopyOperation.h
        source/patchdata/array/array_access/ArrayDataAccess.h
        source/patchdata/array/array_access/MDA_Access.h
        source/patchdata/array/SumOperation.h
        source/patchdata/array/ArrayDataOperationUtilities.h
        source/patchdata/multiblock/MBDataUtilities.h
        source/patchdata/multiblock/MultiblockFaceDataTranslator.h
        source/patchdata/multiblock/MultiblockEdgeDataTranslator.h
        source/patchdata/multiblock/MultiblockNodeDataTranslator.h
        source/patchdata/multiblock/MultiblockCellDataTranslator.h
        source/patchdata/multiblock/MultiblockSideDataTranslator.h
        source/patchdata/boxgeometry/NodeGeometry.h
        source/patchdata/boxgeometry/FirstLayerCellFillPattern.h
        source/patchdata/boxgeometry/OuternodeGeometry.h
        source/patchdata/boxgeometry/NodeOverlap.h
        source/patchdata/boxgeometry/OuterfaceGeometry.h
        source/patchdata/boxgeometry/CellOverlap.h
        source/patchdata/boxgeometry/SideOverlap.h
        source/patchdata/boxgeometry/FirstLayerCellNoCornersFillPattern.h
        source/patchdata/boxgeometry/EdgeGeometry.h
        source/patchdata/boxgeometry/OutersideGeometry.h
        source/patchdata/boxgeometry/EdgeOverlap.h
        source/patchdata/boxgeometry/SideGeometry.h
        source/patchdata/boxgeometry/FaceOverlap.h
        source/patchdata/boxgeometry/SecondLayerNodeFillPattern.h
        source/patchdata/boxgeometry/FaceGeometry.h
        source/patchdata/boxgeometry/OuteredgeGeometry.h
        source/patchdata/boxgeometry/FirstLayerNodeFillPattern.h
        source/patchdata/boxgeometry/SecondLayerNodeNoCornersFillPattern.h
        source/patchdata/boxgeometry/CellGeometry.h
        source/patchdata/edge/EdgeDataFactory.h
        source/patchdata/edge/EdgeVariable.h
        source/patchdata/edge/EdgeData.h
        source/patchdata/edge/EdgeIterator.h
        source/patchdata/edge/EdgeIndex.h
        source/patchdata/operators/constant/outernode/OuternodeDoubleConstantCoarsen.h
        source/patchdata/operators/constant/cell/CellDoubleConstantRefine.h
        source/patchdata/operators/constant/cell/CellIntegerConstantRefine.h
        source/patchdata/operators/constant/cell/CellComplexConstantRefine.h
        source/patchdata/operators/constant/cell/CellFloatConstantRefine.h
        source/patchdata/operators/constant/edge/EdgeIntegerConstantRefine.h
        source/patchdata/operators/constant/edge/EdgeDoubleConstantRefine.h
        source/patchdata/operators/constant/edge/EdgeComplexConstantRefine.h
        source/patchdata/operators/constant/edge/EdgeFloatConstantRefine.h
        source/patchdata/operators/constant/outerface/OuterfaceIntegerConstantRefine.h
        source/patchdata/operators/constant/outerface/OuterfaceDoubleConstantRefine.h
        source/patchdata/operators/constant/outerface/OuterfaceComplexConstantRefine.h
        source/patchdata/operators/constant/outerface/OuterfaceFloatConstantRefine.h
        source/patchdata/operators/constant/side/SideDoubleConstantRefine.h
        source/patchdata/operators/constant/side/SideComplexConstantRefine.h
        source/patchdata/operators/constant/side/SideFloatConstantRefine.h
        source/patchdata/operators/constant/side/SideIntegerConstantRefine.h
        source/patchdata/operators/constant/node/NodeFloatInjection.h
        source/patchdata/operators/constant/node/NodeIntegerInjection.h
        source/patchdata/operators/constant/node/NodeDoubleInjection.h
        source/patchdata/operators/constant/node/NodeComplexInjection.h
        source/patchdata/operators/constant/face/FaceDoubleConstantRefine.h
        source/patchdata/operators/constant/face/FaceIntegerConstantRefine.h
        source/patchdata/operators/constant/face/FaceComplexConstantRefine.h
        source/patchdata/operators/constant/face/FaceFloatConstantRefine.h
        source/patchdata/operators/time_interpolate/outerside/OutersideComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/outerside/OutersideDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/outerside/OutersideFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/cell/CellComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/cell/CellDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/cell/CellFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/edge/EdgeDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/edge/EdgeComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/edge/EdgeFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/outerface/OuterfaceFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/outerface/OuterfaceDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/outerface/OuterfaceComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/side/SideComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/side/SideFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/side/SideDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/node/NodeComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/node/NodeFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/node/NodeDoubleLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/face/FaceComplexLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/face/FaceFloatLinearTimeInterpolateOp.h
        source/patchdata/operators/time_interpolate/face/FaceDoubleLinearTimeInterpolateOp.h
        source/patchdata/index/IndexVariable.h
        source/patchdata/index/IndexDataFactory.h
        source/patchdata/index/IndexData.h
        source/patchdata/outerface/OuterfaceVariable.h
        source/patchdata/outerface/OuterfaceData.h
        source/patchdata/outerface/OuterfaceDataFactory.h
        source/patchdata/side/SideData.h
        source/patchdata/side/SideVariable.h
        source/patchdata/side/SideDataFactory.h
        source/patchdata/side/SideIndex.h
        source/patchdata/side/SideIterator.h
        source/patchdata/node/NodeData.h
        source/patchdata/node/NodeDataFactory.h
        source/patchdata/node/NodeVariable.h
        source/patchdata/node/NodeIterator.h
        source/patchdata/node/NodeIndex.h
        source/patchdata/face/FaceIndex.h
        source/patchdata/face/FaceDataFactory.h
        source/patchdata/face/FaceVariable.h
        source/patchdata/face/FaceData.h
        source/patchdata/face/FaceIterator.h
        source/mathops/hierarchy/HierarchyDataOpsManager.h
        source/mathops/hierarchy/HierarchyDataOpsComplex.h
        source/mathops/hierarchy/HierarchyDataOpsInteger.h
        source/mathops/hierarchy/HierarchyDataOpsReal.h
        source/mathops/cell/PatchCellDataMiscellaneousOpsReal.h
        source/mathops/cell/PatchCellDataOpsComplex.h
        source/mathops/cell/PatchCellDataOpsReal.h
        source/mathops/cell/HierarchyCellDataOpsInteger.h
        source/mathops/cell/HierarchyCellDataOpsReal.h
        source/mathops/cell/PatchCellDataOpsInteger.h
        source/mathops/cell/HierarchyCellDataOpsComplex.h
        source/mathops/cell/PatchCellDataBasicOps.h
        source/mathops/cell/PatchCellDataNormOpsReal.h
        source/mathops/cell/PatchCellDataNormOpsComplex.h
        source/mathops/array/ArrayDataNormOpsReal.h
        source/mathops/array/ArrayDataMiscellaneousOpsReal.h
        source/mathops/array/ArrayDataNormOpsInteger.h
        source/mathops/array/ArrayDataNormOpsComplex.h
        source/mathops/array/ArrayDataBasicOps.h
        source/mathops/edge/PatchEdgeDataBasicOps.h
        source/mathops/edge/PatchEdgeDataOpsInteger.h
        source/mathops/edge/PatchEdgeDataOpsComplex.h
        source/mathops/edge/PatchEdgeDataMiscellaneousOpsReal.h
        source/mathops/edge/PatchEdgeDataNormOpsComplex.h
        source/mathops/edge/HierarchyEdgeDataOpsComplex.h
        source/mathops/edge/HierarchyEdgeDataOpsInteger.h
        source/mathops/edge/PatchEdgeDataNormOpsReal.h
        source/mathops/edge/PatchEdgeDataOpsReal.h
        source/mathops/edge/HierarchyEdgeDataOpsReal.h
        source/mathops/side/PatchSideDataNormOpsComplex.h
        source/mathops/side/PatchSideDataBasicOps.h
        source/mathops/side/HierarchySideDataOpsComplex.h
        source/mathops/side/PatchSideDataOpsInteger.h
        source/mathops/side/PatchSideDataOpsReal.h
        source/mathops/side/HierarchySideDataOpsReal.h
        source/mathops/side/PatchSideDataNormOpsReal.h
        source/mathops/side/PatchSideDataOpsComplex.h
        source/mathops/side/PatchSideDataMiscellaneousOpsReal.h
        source/mathops/side/HierarchySideDataOpsInteger.h
        source/mathops/node/HierarchyNodeDataOpsInteger.h
        source/mathops/node/PatchNodeDataNormOpsReal.h
        source/mathops/node/PatchNodeDataBasicOps.h
        source/mathops/node/PatchNodeDataOpsReal.h
        source/mathops/node/HierarchyNodeDataOpsReal.h
        source/mathops/node/PatchNodeDataOpsComplex.h
        source/mathops/node/HierarchyNodeDataOpsComplex.h
        source/mathops/node/PatchNodeDataMiscellaneousOpsReal.h
        source/mathops/node/PatchNodeDataOpsInteger.h
        source/mathops/node/PatchNodeDataNormOpsComplex.h
        source/mathops/face/PatchFaceDataOpsReal.h
        source/mathops/face/PatchFaceDataMiscellaneousOpsReal.h
        source/mathops/face/PatchFaceDataNormOpsReal.h
        source/mathops/face/PatchFaceDataBasicOps.h
        source/mathops/face/PatchFaceDataOpsInteger.h
        source/mathops/face/HierarchyFaceDataOpsInteger.h
        source/mathops/face/HierarchyFaceDataOpsComplex.h
        source/mathops/face/HierarchyFaceDataOpsReal.h
        source/mathops/face/PatchFaceDataOpsComplex.h
        source/mathops/face/PatchFaceDataNormOpsComplex.h
        source/transfer/multiblock/MultiblockRefineSchedule.h
        source/transfer/multiblock/MultiblockRefinePatchStrategy.h
        source/transfer/multiblock/MultiblockCoarsenAlgorithm.h
        source/transfer/multiblock/MultiblockCoarsenPatchStrategy.h
        source/transfer/multiblock/MultiblockRefineAlgorithm.h
        source/transfer/multiblock/MultiblockCoarsenSchedule.h
        source/transfer/datamovers/standard/RefineAlgorithm.h
        source/transfer/datamovers/standard/CoarsenClasses.h
        source/transfer/datamovers/standard/CoarsenAlgorithm.h
        source/transfer/datamovers/standard/RefineCopyTransaction.h
        source/transfer/datamovers/standard/FillBoxSet.h
        source/transfer/datamovers/standard/RefineTransactionFactory.h
        source/transfer/datamovers/standard/StandardCoarsenTransactionFactory.h
        source/transfer/datamovers/standard/RefineSchedule.h
        source/transfer/datamovers/standard/CoarsenSchedule.h
        source/transfer/datamovers/standard/CoarsenPatchStrategy.h
        source/transfer/datamovers/standard/RefineTimeTransaction.h
        source/transfer/datamovers/standard/RefinePatchStrategy.h
        source/transfer/datamovers/standard/RefineClasses.h
        source/transfer/datamovers/standard/StandardRefineTransactionFactory.h
        source/transfer/datamovers/standard/CoarsenTransactionFactory.h
        source/transfer/datamovers/standard/CoarsenCopyTransaction.h
        source/transfer/datamovers/locally_active/LocallyActiveDataFillBox.h
        source/transfer/datamovers/locally_active/StandardLocallyActiveDataRefineTransactionFactory.h
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineTransactionFactory.h
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenPatchStrategy.h
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineSchedule.h
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenTransactionFactory.h
        source/transfer/datamovers/locally_active/LocallyActiveDataFillBoxSet.h
        source/transfer/datamovers/locally_active/LocallyActiveDataRefinePatchStrategy.h
        source/transfer/datamovers/locally_active/StandardLocallyActiveDataCoarsenTransactionFactory.h
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenAlgorithm.h
        source/transfer/datamovers/locally_active/LocallyActiveDataCoarsenSchedule.h
        source/transfer/datamovers/locally_active/LocallyActiveDataRefineAlgorithm.h
        source/transfer/operators/RefineOperator.h
        source/transfer/operators/VariableFillPattern.h
        source/transfer/operators/Geometry.h
        source/transfer/operators/TimeInterpolateOperator.h
        source/transfer/operators/BoxGeometryFillPattern.h
        source/transfer/operators/CoarsenOperator.h
        source/apputils/plotting/VisItDataWriter.h
        source/apputils/plotting/CartesianVizamraiDataWriter.h
        source/apputils/plotting/VisDerivedDataStrategy.h
        source/apputils/plotting/VisMaterialsDataStrategy.h
        source/apputils/embedded_boundary/EmbeddedBoundaryDefines.h
        source/apputils/embedded_boundary/CutCell.h
        source/apputils/embedded_boundary/EmbeddedBoundaryGeometry.h
        source/apputils/embedded_boundary/EmbeddedBoundaryShapePolygon.h
        source/apputils/embedded_boundary/EmbeddedBoundaryShape.h
        source/apputils/embedded_boundary/BoundaryNode.h
        source/apputils/embedded_boundary/EmbeddedBoundaryShapeSphere.h
        source/apputils/embedded_boundary/ElevenPatchInterface.h
        source/apputils/embedded_boundary/CubesPatchInterface.h
        source/apputils/boundary/CartesianBoundaryDefines.h
        source/apputils/boundary/CartesianBoundaryUtilities2.h
        source/apputils/boundary/CartesianBoundaryUtilities3.h
        source/apputils/boundary/BoundaryUtilityStrategy.h
        source/solvers/vectors/PETSc_SAMRAIVectorReal.I
        source/solvers/vectors/Sundials_SAMRAIVector.I
        source/solvers/vectors/SAMRAIVectorReal.I
        source/solvers/poisson/CellPoissonFACOps.I
        source/solvers/poisson/PoissonSpecifications.I
        source/solvers/poisson/CellPoissonFACSolver.I
        source/solvers/poisson/CellPoissonHypreSolver.I
        source/solvers/FAC/FACPreconditioner.I
        source/algorithm/time_refinement/TimeRefinementIntegrator.I
        source/algorithm/implicit/ImplicitIntegrator.I
        source/hierarchy/boxes/BoxList.I
        source/hierarchy/boxes/BoxArray.I
        source/hierarchy/boxes/IntVector.I
        source/hierarchy/boxes/BoxGraph.I
        source/hierarchy/boxes/Box.I
        source/hierarchy/boxes/BinaryTree.I
        source/hierarchy/boxes/Index.I
        source/hierarchy/patches/PatchLevel.I
        source/hierarchy/patches/PatchHierarchy.I
        source/hierarchy/patches/ProcessorMapping.I
        source/hierarchy/patches/BoundaryLookupTable.I
        source/hierarchy/patches/PatchFactory.I
        source/hierarchy/patches/PatchLevelFactory.I
        source/hierarchy/patches/PatchGeometry.I
        source/hierarchy/patches/GridGeometry.I
        source/hierarchy/patches/Patch.I
        source/hierarchy/patches/BoundaryBox.I
        source/hierarchy/variables/VariableDatabase.I
        source/hierarchy/variables/PatchDataFactory.I
        source/hierarchy/variables/LocallyActiveDataPatchLevelManager.I
        source/hierarchy/variables/Variable.I
        source/hierarchy/variables/VariableContext.I
        source/hierarchy/variables/BoxOverlap.I
        source/hierarchy/variables/BoxGeometry.I
        source/hierarchy/variables/PatchDescriptor.I
        source/hierarchy/variables/ComponentSelector.I
        source/hierarchy/variables/PatchData.I
        source/hierarchy/dlbg/LayerEdgeSet.I
        source/hierarchy/dlbg/LayerNode.I
        source/hierarchy/dlbg/LayerHierarchy.I
        source/hierarchy/dlbg/LayerNodeSet.I
        source/geometry/cartesian/patch_geom/CartesianPatchGeometry.I
        source/geometry/cartesian/grid_geom/CartesianGridGeometry.I
        source/mesh/load_balance/SpatialKey.I
        source/mesh/gridding/GriddingAlgorithm.I
        source/mesh/gridding/StandardTagAndInitialize.I
        source/mesh/clustering/HistogramBox.I
        source/patchdata/outeredge/OuteredgeDataFactory.I
        source/patchdata/outeredge/OuteredgeData.I
        source/patchdata/outerside/OutersideData.I
        source/patchdata/outerside/OutersideDataFactory.I
        source/patchdata/outernode/OuternodeData.I
        source/patchdata/outernode/OuternodeDataFactory.I
        source/patchdata/cell/CellData.I
        source/patchdata/cell/CellDataFactory.I
        source/patchdata/cell/CellIndex.I
        source/patchdata/cell/CellIterator.I
        source/patchdata/array/ArrayData.I
        source/patchdata/array/SumOperation.I
        source/patchdata/array/CopyOperation.I
        source/patchdata/array/ArrayDataIterator.I
        source/patchdata/boxgeometry/OuteredgeGeometry.I
        source/patchdata/boxgeometry/FaceOverlap.I
        source/patchdata/boxgeometry/OuterfaceGeometry.I
        source/patchdata/boxgeometry/FaceGeometry.I
        source/patchdata/boxgeometry/OuternodeGeometry.I
        source/patchdata/boxgeometry/EdgeGeometry.I
        source/patchdata/boxgeometry/NodeOverlap.I
        source/patchdata/boxgeometry/EdgeOverlap.I
        source/patchdata/boxgeometry/CellOverlap.I
        source/patchdata/boxgeometry/NodeGeometry.I
        source/patchdata/boxgeometry/SideGeometry.I
        source/patchdata/boxgeometry/CellGeometry.I
        source/patchdata/boxgeometry/SideOverlap.I
        source/patchdata/boxgeometry/OutersideGeometry.I
        source/patchdata/edge/EdgeIndex.I
        source/patchdata/edge/EdgeData.I
        source/patchdata/edge/EdgeIterator.I
        source/patchdata/edge/EdgeDataFactory.I
        source/patchdata/index/IndexData.I
        source/patchdata/outerface/OuterfaceData.I
        source/patchdata/outerface/OuterfaceDataFactory.I
        source/patchdata/side/SideIterator.I
        source/patchdata/side/SideIndex.I
        source/patchdata/side/SideDataFactory.I
        source/patchdata/side/SideData.I
        source/patchdata/node/NodeIndex.I
        source/patchdata/node/NodeDataFactory.I
        source/patchdata/node/NodeData.I
        source/patchdata/node/NodeIterator.I
        source/patchdata/face/FaceData.I
        source/patchdata/face/FaceIterator.I
        source/patchdata/face/FaceIndex.I
        source/patchdata/face/FaceDataFactory.I
        source/transfer/datamovers/standard/FillBoxSet.I
        source/apputils/embedded_boundary/EmbeddedBoundaryShapePolygon.I
        source/apputils/embedded_boundary/EmbeddedBoundaryShapeSphere.I
        source/geometry/cartesian/operators/fortran/geom_m4cartcoarsenops3d.i
        source/geometry/cartesian/operators/fortran/geom_m4cartcoarsenops1d.i
        source/geometry/cartesian/operators/fortran/geom_m4cartopstuff.i
        source/geometry/cartesian/operators/fortran/geom_m4cartrefineops1d.i
        source/geometry/cartesian/operators/fortran/geom_m4cartcoarsenops2d.i
        source/geometry/cartesian/operators/fortran/geom_m4cartrefineops3d.i
        source/geometry/cartesian/operators/fortran/geom_m4cartrefineops2d.i
        source/patchdata/fortran/pdat_m4arrdim2d.i
        source/patchdata/fortran/pdat_dbugstuff3d.i
        source/patchdata/fortran/pdat_m4arrdim1d.i
        source/patchdata/fortran/pdat_m4arrdim3d.i
        source/patchdata/fortran/pdat_dbugstuff2d.i
        source/patchdata/fortran/pdat_dbugstuff1d.i
        source/patchdata/operators/constant/fortran/pdat_m4conrefineops2d.i
        source/patchdata/operators/constant/fortran/pdat_m4concoarsenops1d.i
        source/patchdata/operators/constant/fortran/pdat_m4conrefineops3d.i
        source/patchdata/operators/constant/fortran/pdat_m4concoarsenops3d.i
        source/patchdata/operators/constant/fortran/pdat_m4conrefineops1d.i
        source/patchdata/operators/constant/fortran/pdat_m4concoarsenops2d.i
        source/patchdata/operators/constant/fortran/pdat_m4conopstuff.i
        source/patchdata/operators/time_interpolate/fortran/pdat_m4lintimeintops2d.i
        source/patchdata/operators/time_interpolate/fortran/pdat_m4lintimeintops1d.i
        source/patchdata/operators/time_interpolate/fortran/pdat_m4lintimeintops3d.i
        source/apputils/embedded_boundary/ebparams.i
        source/apputils/boundary/appu_cartbdryparams2d.i
        source/apputils/boundary/appu_cartbdryparams3d.i
        ${CMAKE_CURRENT_BINARY_DIR}/include/SAMRAI_config.h
        )
set(samrai_toolbox_HEADERS
        source/toolbox/base/List.I
        source/toolbox/base/IEEE.I
        source/toolbox/base/Tracer.I
        source/toolbox/base/MathUtilities.I
        source/toolbox/base/Boolean.h
        source/toolbox/base/Logger.h
        source/toolbox/base/PIO.h
        source/toolbox/base/Complex.h
        source/toolbox/base/Tracer.h
        source/toolbox/base/MathUtilities.h
        source/toolbox/base/IEEE.h
        source/toolbox/base/ShutdownRegistry.h
        source/toolbox/base/ParallelBuffer.h
        source/toolbox/base/SAMRAIManager.h
        source/toolbox/base/List.h
        source/toolbox/base/Utilities.h
        source/toolbox/timers/Timer.I
        source/toolbox/timers/Statistic.I
        source/toolbox/timers/Clock.h
        source/toolbox/timers/StatTransaction.h
        source/toolbox/timers/Statistic.h
        source/toolbox/timers/Statistician.h
        source/toolbox/timers/TimerManager.h
        source/toolbox/timers/Timer.h
        source/toolbox/parallel/SAMRAI_MPI.I
        source/toolbox/parallel/AsyncCommGroup.I
        source/toolbox/parallel/SAMRAI_MPI.h
        source/toolbox/parallel/Transaction.h
        source/toolbox/parallel/Schedule.h
        source/toolbox/parallel/AsyncCommGroup.h
        source/toolbox/parallel/JobRelauncher.h
        source/toolbox/parallel/AsyncCommStage.h
        source/toolbox/parallel/RelaunchableJob.h
        source/toolbox/stream/XDRStream.I
        source/toolbox/stream/MessageStream.I
        source/toolbox/stream/FileStream.I
        source/toolbox/stream/AbstractStream.I
        source/toolbox/stream/AbstractStream.h
        source/toolbox/stream/FileStream.h
        source/toolbox/stream/IOStream.h
        source/toolbox/stream/MessageStream.h
        source/toolbox/stream/XDRStream.h
        source/toolbox/restartdb/RestartManager.I
        source/toolbox/restartdb/NullDatabase.I
        source/toolbox/restartdb/RestartManager.h
        source/toolbox/restartdb/HDFDatabaseFactory.h
        source/toolbox/restartdb/SiloDatabaseFactory.h
        source/toolbox/restartdb/NullDatabase.h
        source/toolbox/restartdb/SiloDatabase.h
        source/toolbox/restartdb/HDFDatabase.h
        source/toolbox/inputdb/Parser.I
        source/toolbox/inputdb/InputDatabase.h
        source/toolbox/inputdb/Grammar.h
        source/toolbox/inputdb/Parser.h
        source/toolbox/inputdb/InputManager.h
        source/toolbox/database/Serializable.I
        source/toolbox/database/Database.I
        source/toolbox/database/MemoryDatabase.I
        source/toolbox/database/DatabaseBox.I
        source/toolbox/database/MemoryDatabaseFactory.h
        source/toolbox/database/DatabaseFactory.h
        source/toolbox/database/Database.h
        source/toolbox/database/MemoryDatabase.h
        source/toolbox/database/DatabaseBox.h
        source/toolbox/database/Serializable.h
        source/toolbox/memory/PointerBase.I
        source/toolbox/memory/ScratchArena.I
        source/toolbox/memory/StandardArena.I
        source/toolbox/memory/Array.I
        source/toolbox/memory/Pointer.I
        source/toolbox/memory/Arena.I
        source/toolbox/memory/ConstPointerBase.I
        source/toolbox/memory/ConstPointer.I
        source/toolbox/memory/ReferenceCounter.I
        source/toolbox/memory/MemoryUtilities.h
        source/toolbox/memory/StandardArena.h
        source/toolbox/memory/ReferenceCounter.h
        source/toolbox/memory/ArenaManager.h
        source/toolbox/memory/Arena.h
        source/toolbox/memory/PointerBase.h
        source/toolbox/memory/FixedArena.h
        source/toolbox/memory/ScratchArena.h
        source/toolbox/memory/Array.h
        source/toolbox/memory/Pointer.h
        source/toolbox/memory/DescribedClass.h
        source/toolbox/memory/ConstPointerBase.h
        source/toolbox/memory/ConstPointer.h
        )

if(DEFINED INCLUDE_TEMPLATE_IMPLEMENTATION)
    set(samrai_toolbox_HEADERS
            ${samrai_toolbox_HEADERS}
            ${samrai_toolbox_inlined_SRCS}
            )
    foreach(kit ${KITS})
        list(APPEND samrai_HEADERS ${samrai_${kit}_inlined_SRCS})
    endforeach()
endif()

install(TARGETS SAMRAI DESTINATION lib)
install(FILES ${samrai_HEADERS} DESTINATION include/samrai)
install(FILES ${samrai_toolbox_HEADERS} DESTINATION include/samrai/tbox)