cmake_minimum_required(VERSION 3.10)
project(CardMech)
include(mpp/CMakeOptionMacros.txt)
#---------------------------------------------------------------------------------------#

add_compile_options(-Werror=return-type)

#set_option(COMPILER_OPTIMIZE -O3)
set_option(SPACE_DIM 3)
set_option(USE_DATAMESH ON)
set_option(MPP_BUILD_TYPE MppRelease) #[MppDebug, MppDebugFast, MppRelease]

set_option(SUPPRESS_WARNINGS OFF)
set_option(AFFINE_LINEAR_TRAFO ON)
set_option(BUILD_TESTS OFF)

set_option(BUILD_CARDIAC_TESTS ON)
set_option(BUILD_IBTLIBRARY OFF)

set_option(BUILD_TUTORIAL OFF)
set_option(BUILD_TUTORIAL_TESTS OFF)

set_option(CONVERT_VTU OFF)
#---------------------------------------------------------------------------------------#


# include M++
include(mpp/CMakeLists.txt)
#---------------------------------------------------------------------------------------#


# IBT CellModel Library
set(LibCell_DIR ${PROJECT_SOURCE_DIR}/lib/LibCellModel)
include_directories(${LibCell_DIR}/src/CellModel)
include_directories(${LibCell_DIR}/src/Lattice)

if(BUILD_IBTLIBRARY)
    add_subdirectory(${LibCell_DIR}/src/Lattice)
    add_subdirectory(${LibCell_DIR}/src/CellModel)

    set_target_properties(CellModel PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LibCell_DIR}/out)
    set_target_properties(Lattice PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${LibCell_DIR}/out)
    set(IBT_LIBRARIES CellModel Lattice)
else()
    set(IBT_LIBRARIES ${LibCell_DIR}/out/libCellModel.a ${LibCell_DIR}/out/libLattice.a)
endif()
#---------------------------------------------------------------------------------------#


# Include directories
include_directories(${PROJECT_SOURCE_DIR}/src/)
include_directories(${PROJECT_SOURCE_DIR}/src/cellmodels)
include_directories(${PROJECT_SOURCE_DIR}/src/electrophysiology)
include_directories(${PROJECT_SOURCE_DIR}/src/elasticity)
add_subdirectory(${PROJECT_SOURCE_DIR}/src/)
#---------------------------------------------------------------------------------------#

# Tools
add_subdirectory(${PROJECT_SOURCE_DIR}/tools/geometries)


# Executables
add_executable(M++ src/MainCardMech.cpp)
target_link_libraries(M++ COUPLED ELASTICITY ELECTROPHYSIOLOGY)

add_executable(Elphy-M++ src/MainCardMech.cpp)
target_link_libraries(Elphy-M++ COUPLED ELASTICITY ELECTROPHYSIOLOGY)
#---------------------------------------------------------------------------------------#


# Test Executables
if(BUILD_CARDIAC_TESTS)
    include_directories(${PROJECT_SOURCE_DIR}/test/)
    add_subdirectory(${PROJECT_SOURCE_DIR}/test/)
endif()
#---------------------------------------------------------------------------------------#