cmake_minimum_required(VERSION 3.5) project(IFEM_Apps) # Add local modules set(IFEM_PATH ${PROJECT_SOURCE_DIR}/..) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${IFEM_PATH}/cmake/Modules) set(IFEM_COMMON_APP_BUILD 1) find_package(IFEM REQUIRED) enable_testing() include_directories(${IFEM_INCLUDES}) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${IFEM_CXX_FLAGS}") if(NOT IFEM_AS_SUBMODULE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPROFILE_LEVEL=2") endif() set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Poisson) add_subdirectory(IFEM-Poisson) elseif(EXISTS ${PROJECT_SOURCE_DIR}/Poisson) add_subdirectory(Poisson) endif() set(HAVE_ADVDIFF FALSE) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-AdvectionDiffusion) add_subdirectory(IFEM-AdvectionDiffusion) set(HAVE_ADVDIFF TRUE) elseif(EXISTS ${PROJECT_SOURCE_DIR}/AdvectionDiffusion) add_subdirectory(AdvectionDiffusion) set(HAVE_ADVDIFF TRUE) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Darcy) add_subdirectory(IFEM-Darcy) elseif(EXISTS ${PROJECT_SOURCE_DIR}/Darcy) add_subdirectory(Darcy) endif() set(HAVE_BEAMEX FALSE) set(HAVE_FINITEDEF FALSE) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Elasticity) set(ELASTICITY_SRC IFEM-Elasticity) else() set(ELASTICITY_SRC Elasticity) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${ELASTICITY_SRC}) add_subdirectory(${ELASTICITY_SRC}) add_subdirectory(${ELASTICITY_SRC}/Beam) add_subdirectory(${ELASTICITY_SRC}/Shell) add_subdirectory(${ELASTICITY_SRC}/Linear) if(EXISTS ${PROJECT_SOURCE_DIR}/${ELASTICITY_SRC}/IFEM-BeamEx) set(BEAMEX_SRC ${ELASTICITY_SRC}/IFEM-BeamEx) else() set(BEAMEX_SRC ${ELASTICITY_SRC}/BeamEx) endif() if (EXISTS ${PROJECT_SOURCE_DIR}/${BEAMEX_SRC}) add_subdirectory(${BEAMEX_SRC}) add_subdirectory(${BEAMEX_SRC}/BeamSim) set(HAVE_BEAMEX TRUE) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${ELASTICITY_SRC}/IFEM-FiniteDeformation) set(FINITEDEF_SRC ${ELASTICITY_SRC}/IFEM-FiniteDeformation) else() set(FINITEDEF_SRC ${ELASTICITY_SRC}/FiniteDeformation) endif() if (EXISTS ${PROJECT_SOURCE_DIR}/${FINITEDEF_SRC}) add_subdirectory(${FINITEDEF_SRC}) add_subdirectory(${FINITEDEF_SRC}/Nonlinear) set(HAVE_FINITEDEF TRUE) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-ThermoElasticity) add_subdirectory(IFEM-ThermoElasticity) elseif(EXISTS ${PROJECT_SOURCE_DIR}/ThermoElasticity) add_subdirectory(ThermoElasticity) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-PoroElasticity) set(POROELAST_DIR IFEM-PoroElasticity) elseif(EXISTS ${PROJECT_SOURCE_DIR}/PoroElasticity) set(POROELAST_DIR PoroElasticity) endif() if(POROELAST_DIR) add_subdirectory(${POROELAST_DIR}) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-THM) add_subdirectory(IFEM-THM) elseif(EXISTS ${PROJECT_SOURCE_DIR}/THM) add_subdirectory(THM) endif() endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-OpenFrac) add_subdirectory(IFEM-OpenFrac) elseif(EXISTS ${PROJECT_SOURCE_DIR}/FractureDynamics) add_subdirectory(FractureDynamics) endif() endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Stokes) set(STOKES_SRC IFEM-Stokes) else() set(STOKES_SRC Stokes) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${STOKES_SRC}) add_subdirectory(${PROJECT_SOURCE_DIR}/${STOKES_SRC}) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-NavierStokes) set(NAVIERSTOKES_SRC IFEM-NavierStokes) else() set(NAVIERSTOKES_SRC NavierStokes) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${NAVIERSTOKES_SRC}) add_subdirectory(${NAVIERSTOKES_SRC}) if (HAVE_ADVDIFF) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Boussinesq) set(BOUSSINESQ_SRC IFEM-Boussinesq) else() set(BOUSSINESQ_SRC Boussinesq) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${BOUSSINESQ_SRC}) add_subdirectory(${BOUSSINESQ_SRC}) endif() endif() if (HAVE_BEAMEX AND HAVE_FINITEDEF) if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-FSI) set(FSI_SRC IFEM-FSI) else() set(FSI_SRC FSI) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/${FSI_SRC}) add_subdirectory(${FSI_SRC}) endif() endif() endif() endif() if(EXISTS ${PROJECT_SOURCE_DIR}/SIMRA-PostProc) add_subdirectory(SIMRA-PostProc) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-HM) add_subdirectory(IFEM-HM) elseif(EXISTS ${PROJECT_SOURCE_DIR}/HM) add_subdirectory(HM) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-CoSTA) add_subdirectory(IFEM-CoSTA) elseif(EXISTS ${PROJECT_SOURCE_DIR}/CoSTA) add_subdirectory(CoSTA) endif() if(EXISTS ${PROJECT_SOURCE_DIR}/IFEM-Burgers) add_subdirectory(IFEM-Burgers) elseif(EXISTS ${PROJECT_SOURCE_DIR}/Burgers) add_subdirectory(Burgers) endif() # Add 'check' target which builds all test applications, then executes the tests add_check_target()