cmake_minimum_required(VERSION 3.1)
project(SofaTetGen)

add_subdirectory(extlibs/tetgen)

set(SOFATETGEN_MAJOR_VERSION 0)
set(SOFATETGEN_MINOR_VERSION 1)
set(SOFATETGEN_VERSION ${SOFATETGEN_MAJOR_VERSION}.${SOFATETGEN_MINOR_VERSION})

set(HEADER_FILES
    config.h
)

set(SOURCE_FILES
    initSofaTetGen.cpp
)

list(APPEND HEADER_FILES
    engine/MeshTetrahedrizationEngine.h
    engine/TetraMeshCoarseningEngine.h
    engine/TetraMeshConverterEngine.h
    )

list(APPEND SOURCE_FILES
    engine/MeshTetrahedrizationEngine.cpp
    engine/TetraMeshCoarseningEngine.cpp
    engine/TetraMeshConverterEngine.cpp
    )

set(PYTHON_FILES
    python/SofaTetGen/__init__.py
    python/SofaTetGen/API.py
)

set(EXAMPLE_FILES
    examples/TetraMeshCoarseningEngine.py
    examples/test_scene.py
    examples/test_scene_interior_constraint.py
    examples/MeshTetrahedrizationEngine.py
    examples/TetraMeshConverterEngine.py
    )

set(README_FILES
    README.md
)

include_directories(extlibs)

find_package(SofaFramework REQUIRED)
#find_package(Flexible REQUIRED)

# Config files and install rules for pythons scripts
sofa_set_python_directory(${PROJECT_NAME} "python")

add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SOURCE_FILES} ${PYTHON_FILES} ${EXAMPLE_FILES} ${README_FILES})
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-DSOFA_BUILD_SOFATETGEN")
#target_link_libraries(${PROJECT_NAME} SofaCore Flexible TetGen)
target_link_libraries(${PROJECT_NAME} SofaCore tetgen)

target_include_directories(${PROJECT_NAME} PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>")
target_include_directories(${PROJECT_NAME} PRIVATE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
target_include_directories(${PROJECT_NAME} PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>")
#target_include_directories(${PROJECT_NAME} PUBLIC  "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}extlibs/tetgen>")
target_include_directories(${PROJECT_NAME} PUBLIC  "$<INSTALL_INTERFACE:include>")

set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${SOFATETGEN_VERSION})

sofa_create_package(${PROJECT_NAME} ${SOFATETGEN_VERSION} ${PROJECT_NAME} ${PROJECT_NAME})

