add_library(gldoze_mesh_splitter_support STATIC
  src/mesh_document.cpp
  src/mesh_analysis.cpp
  src/mesh_loader.cpp
  src/mesh_preview_renderer.cpp
  src/mesh_splitter_ui.cpp
  src/mesh_splitter_app.cpp
)
target_include_directories(gldoze_mesh_splitter_support
  PUBLIC
    ${CMAKE_CURRENT_LIST_DIR}/src
    ${GLDOZE_REPO_ROOT}
)
target_link_libraries(gldoze_mesh_splitter_support PUBLIC gldoze_widgets)
gldoze_apply_dev_warnings(gldoze_mesh_splitter_support)

if(GLDOZE_BUILD_MESH_SPLITTER)
  add_executable(gldoze_mesh_splitter src/main.cpp)
  target_link_libraries(gldoze_mesh_splitter PRIVATE gldoze_mesh_splitter_support)
  set_target_properties(gldoze_mesh_splitter PROPERTIES
	  RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
  )
  gldoze_apply_dev_warnings(gldoze_mesh_splitter)

  include(GNUInstallDirs)
  install(TARGETS gldoze_mesh_splitter
	  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
	  COMPONENT GLDozeDesktop
  )
endif()

if(BUILD_TESTING)
  add_executable(mesh_splitter_core_test
    tests/mesh_splitter_core_test.cpp
    src/mesh_document.cpp
    src/mesh_analysis.cpp
  )
  target_include_directories(mesh_splitter_core_test PRIVATE ${CMAKE_CURRENT_LIST_DIR}/src)
  target_link_libraries(mesh_splitter_core_test PRIVATE gldoze_project_options)
  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
    target_compile_options(mesh_splitter_core_test PRIVATE -UNDEBUG)
  endif()
  gldoze_apply_dev_warnings(mesh_splitter_core_test)
  add_test(NAME mesh_splitter_core COMMAND mesh_splitter_core_test)

  add_executable(mesh_splitter_loader_test tests/mesh_splitter_loader_test.cpp)
  target_link_libraries(mesh_splitter_loader_test PRIVATE gldoze_mesh_splitter_support)
  if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
    target_compile_options(mesh_splitter_loader_test PRIVATE -UNDEBUG)
  endif()
  gldoze_apply_dev_warnings(mesh_splitter_loader_test)
  add_test(NAME mesh_splitter_loader COMMAND mesh_splitter_loader_test)
endif()
