cmake_minimum_required(VERSION 3.20)
project(TrackDesigner VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# ── wxWidgets ─────────────────────────────────────────────────────────────────
find_package(wxWidgets REQUIRED COMPONENTS core base xml adv)
include(${wxWidgets_USE_FILE})

# ── MarklinCommon shared lib ──────────────────────────────────────────────────
add_subdirectory(../MarklinCommon ${CMAKE_BINARY_DIR}/MarklinCommon)

# ── Sources ───────────────────────────────────────────────────────────────────
set(SOURCES
    App.cpp
    MainFrame.cpp
    panels/PalettePanel.cpp
    panels/CanvasPanel.cpp
    panels/PropertiesPanel.cpp
    canvas/CanvasState.cpp
    canvas/Renderer.cpp
)

add_executable(TrackDesigner WIN32 ${SOURCES})

target_include_directories(TrackDesigner PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(TrackDesigner PRIVATE MarklinCommon ${wxWidgets_LIBRARIES})
target_compile_definitions(TrackDesigner PRIVATE ${wxWidgets_DEFINITIONS})

# ── Copy catalog.xml next to executable ──────────────────────────────────────
add_custom_command(TARGET TrackDesigner POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        "${CMAKE_SOURCE_DIR}/../MarklinCommon/data/catalog.xml"
        "$<TARGET_FILE_DIR:TrackDesigner>/catalog.xml"
    COMMENT "Copying catalog.xml to output directory"
)
