cmake_minimum_required(VERSION 3.20)

project(ocean-simulation)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(third_party/directx)
add_subdirectory(third_party/spdlog)
add_subdirectory(third_party/imgui)
add_subdirectory(third_party/glm)

file(GLOB_RECURSE CPP_SOURCE_FILES "src/*.cpp" "src/*.h")

add_executable(ocean-simulation WIN32 ${CPP_SOURCE_FILES})

target_include_directories(
  ocean-simulation
  PRIVATE
    ${CMAKE_SOURCE_DIR}/third_party/glm
)

target_compile_definitions(ocean-simulation
  PRIVATE
    UNICODE
    _UNICODE
    _CRT_SECURE_NO_WARNINGS
)

target_link_libraries(
  ocean-simulation
  DirectX-Headers
  spdlog
  imgui
  glm
  d3d12.lib
  dxgi.lib
  dxcompiler.lib
  dxguid.lib
  kernel32.lib
  user32.lib
  gdi32.lib
)

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ocean-simulation)

set_target_properties(ocean-simulation PROPERTIES
    VS_DEBUGGER_WORKING_DIRECTORY "$(ProjectDir)..\\"
)