add_library(
    fesa_solver
    STATIC
    analysis/analysis_model.cpp
    analysis/analysis_state.cpp
    assembly/parallel_for.cpp
    assembly/sparse_assembler.cpp
    build_info.cpp
    core/diagnostic.cpp
    core/status.cpp
    elements/euler_beam_3d.cpp
    fem/dof_manager.cpp
    io/abaqus/domain_mapper.cpp
    io/abaqus/input_reader.cpp
    math/matrix.cpp
    math/sparse_matrix.cpp
    math/vector.cpp
    model/domain.cpp
)

target_include_directories(
    fesa_solver
    PUBLIC
        "${PROJECT_SOURCE_DIR}/include"
)

target_link_libraries(
    fesa_solver
    PRIVATE
        Fesa::MKL
        Fesa::TBB
)

# Product warnings are strict without imposing FESA policy on external targets.
target_compile_options(
    fesa_solver
    PRIVATE
        $<$<CXX_COMPILER_ID:MSVC>:/W4 /WX>
)
