cmake_minimum_required(VERSION 3.25)

project(mikemon VERSION 0.1 LANGUAGES CXX C)
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS OFF)

option(TRACY_ENABLE "Enable Tracy profiling" OFF)

# SDL
set(SDL_SHARED OFF)
set(SDL_STATIC ON)
add_subdirectory(libs/SDL3)

# wgpu
add_subdirectory(libs/wgpu)

# SDL3_mixer
set(BUILD_SHARED_LIBS ${SDL_SHARED})
set(SDLMIXER_OPUS    ON)
set(SDLMIXER_AIFF    OFF)
set(SDLMIXER_WAVE    OFF)
set(SDLMIXER_VOC     OFF)
set(SDLMIXER_AU      OFF)
set(SDLMIXER_FLAC    OFF)
set(SDLMIXER_GME     OFF)
set(SDLMIXER_MOD     OFF)
set(SDLMIXER_MP3     OFF)
set(SDLMIXER_MIDI    OFF)
set(SDLMIXER_WAVPACK OFF)
add_subdirectory(libs/SDL3_mixer)

# Dear ImGui
add_library(imgui STATIC
    libs/imgui/imgui.cpp
    libs/imgui/imgui_draw.cpp
    libs/imgui/imgui_demo.cpp
    libs/imgui/imgui_tables.cpp
    libs/imgui/imgui_widgets.cpp
    libs/imgui/backends/imgui_impl_sdl3.cpp
    libs/imgui/backends/imgui_impl_wgpu.cpp
)
target_include_directories(imgui PUBLIC
    libs/imgui
    libs/imgui/backends
)
target_link_libraries(imgui PRIVATE SDL3::SDL3 wgpu)
target_compile_definitions(imgui PRIVATE IMGUI_IMPL_WEBGPU_BACKEND_WGPU=1)

# stb_image
add_library(stb_image STATIC libs/stb/stb_image.c)
target_include_directories(stb_image INTERFACE libs/stb)

# tracy
option(TRACY_ONLY_LOCALHOST "" ON)
add_subdirectory(libs/tracy)

add_executable(mikemon
    src/log.cpp
    src/smol-atlas.cpp
    src/math_graphics.cpp
    src/change_directory.c
    src/shaders/shaders.c
    src/main.cpp
)
target_link_libraries(mikemon
    PRIVATE
        SDL3::SDL3
        SDL3_mixer::SDL3_mixer
        stb_image
        imgui
        TracyClient
        wgpu
)
