set(WP_GENERATED "${CMAKE_SOURCE_DIR}/build/pokepark2/generated")

file(GLOB WP_DSP_SOURCES CONFIGURE_DEPENDS "${WP_GENERATED}/dsp/*.cpp")
if(WP_DSP_SOURCES)
    target_sources(wp_engine PRIVATE ${WP_DSP_SOURCES})
    set_source_files_properties(${WP_DSP_SOURCES} PROPERTIES COMPILE_OPTIONS -O2)
else()
    target_sources(wp_engine PRIVATE "${CMAKE_SOURCE_DIR}/engine/src/audio/no_dsp_code.cpp")
endif()

file(GLOB WP_DOL_SOURCES CONFIGURE_DEPENDS "${WP_GENERATED}/dol/*.cpp")
file(GLOB_RECURSE WP_MODULE_SOURCES CONFIGURE_DEPENDS "${WP_GENERATED}/modules/*.cpp")
if(NOT WP_DOL_SOURCES)
    message(STATUS "No generated code in ${WP_GENERATED}/dol: run recompiler/recomp.py to build the game")
    return()
endif()

add_library(pokepark2_code STATIC game.cpp ${WP_DOL_SOURCES})
set_source_files_properties(${WP_DOL_SOURCES} ${WP_MODULE_SOURCES} PROPERTIES COMPILE_OPTIONS "${WP_CODE_OPT}")
target_include_directories(pokepark2_code PUBLIC "${WP_GENERATED}/dol")
if(WP_MODULE_SOURCES)
    target_sources(pokepark2_code PRIVATE ${WP_MODULE_SOURCES})
else()
    target_sources(pokepark2_code PRIVATE "${CMAKE_SOURCE_DIR}/engine/src/core/no_modules.cpp")
endif()
target_link_libraries(pokepark2_code PUBLIC wp_engine)
target_compile_options(pokepark2_code PRIVATE -Wall -Wextra -Wno-unused-label -Wno-unused-parameter -Wno-clobbered)

add_executable(pokepark2)
if(WIN32)
    include("${CMAKE_SOURCE_DIR}/engine/cmake/icon.cmake")
    wp_icon_resource(pokepark2 "${CMAKE_CURRENT_SOURCE_DIR}/res/pokepark2.ico")
endif()
target_link_libraries(pokepark2 PRIVATE wp_app "$<LINK_GROUP:RESCAN,pokepark2_code,wp_engine>")
target_compile_options(pokepark2 PRIVATE -Wall -Wextra)
if(WIN32 AND NOT WP_CONSOLE)
    set_target_properties(pokepark2 PROPERTIES WIN32_EXECUTABLE ON)
endif()
if(TARGET SDL3::SDL3)
    add_custom_command(TARGET pokepark2 POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:SDL3::SDL3> $<TARGET_FILE_DIR:pokepark2>)
endif()

