cmake_minimum_required(VERSION 3.16)
project(static_simulation_gui)

list(PREPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

## libigl options
#option(LIBIGL_USE_STATIC_LIBRARY "Use libigl as static library" OFF)
#option(LIBIGL_WITH_PREDICATES "Use exact predicates" ON)
#set(LIBIGL_WITH_OPENGL_GLFW_IMGUI ON CACHE BOOL "Use OpenGL" FORCE)
#set(LIBIGL_WITH_OPENGL_GLFW ON CACHE BOOL "Use GLFW" FORCE)
#set(LIBIGL_WITH_OPENGL ON CACHE BOOL "Use IMGUI" FORCE)
#set(LIBIGL_WITH_PNG ON CACHE BOOL "Use PNG" FORCE)

# Libigl
include(libigl)

# Enable the target igl::glfw
igl_include(core)
igl_include(glfw)
igl_include(imgui)
igl_include(png)
igl_include(predicates)

# Add your project files
file(GLOB SRC_FILES src/main.cpp src/viewer/*.cpp)
add_executable(${PROJECT_NAME} ${SRC_FILES})
target_link_libraries(${PROJECT_NAME} PUBLIC igl::core igl::glfw igl::imgui igl::png)
set(libigl_tutorial_tata_SOURCE_DIR /home/cflin/Documents/CppField/libs/libigl/cmake-build-debug/_deps/libigl_tutorial_tata-src)
target_compile_definitions(${PROJECT_NAME} PUBLIC TUTORIAL_SHARED_PATH="${libigl_tutorial_tata_SOURCE_DIR}")

# Eigen3
include(eigen)
target_link_libraries(${PROJECT_NAME} PUBLIC Eigen3::Eigen)

# JSON Parser
include(json)
target_link_libraries(${PROJECT_NAME} PUBLIC nlohmann::json)

# Logger
include(spdlog)
target_link_libraries(${PROJECT_NAME} PUBLIC spdlog::spdlog)

# TBB
include(tbb)
target_link_libraries(${PROJECT_NAME} PUBLIC TBB::tbb)

# subdirectory
# MshIO
add_subdirectory(${CMAKE_SOURCE_DIR}/3rd/MshIO)
add_subdirectory(${CMAKE_SOURCE_DIR}/src/static_sim)
add_subdirectory(${CMAKE_SOURCE_DIR}/sim-test/rigid-test)

# static sim
target_link_libraries(${PROJECT_NAME} PUBLIC StaticSim)

target_compile_definitions(${PROJECT_NAME} PUBLIC CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}")