cmake_minimum_required(VERSION 3.16)
project(chocorecomp CXX)
if(WIN32)
  enable_language(RC)
endif()
set(CMAKE_CXX_STANDARD 17)
if(NOT CMAKE_BUILD_TYPE)
  set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()
file(GLOB GEN_SRC gen/*.cpp)
file(GLOB RT_SRC runtime/*.cpp)
add_executable(darksidechronicles ${RT_SRC} ${GEN_SRC})
target_include_directories(darksidechronicles PRIVATE runtime gen)
# the per-vertex graphics path: worth the extra optimization
set_source_files_properties(runtime/gx_render.cpp runtime/gx_fifo.cpp PROPERTIES COMPILE_OPTIONS "-O3")
if(WIN32)
  # SDL2 development package (SDL2-devel-*-mingw) location
  set(SDL2_DIR "" CACHE PATH "SDL2 mingw dev package root (x86_64-w64-mingw32 subfolder)")
  target_include_directories(darksidechronicles PRIVATE runtime/gl ${SDL2_DIR}/include)
  target_compile_definitions(darksidechronicles PRIVATE SDL_MAIN_HANDLED)
  target_compile_options(darksidechronicles PRIVATE -O2 -fno-strict-aliasing -w -g0)
  target_link_directories(darksidechronicles PRIVATE ${SDL2_DIR}/lib)
  target_sources(darksidechronicles PRIVATE runtime/app.rc)
  target_link_libraries(darksidechronicles PRIVATE SDL2 winmm -static-libgcc -static-libstdc++ -Wl,-Bstatic -lwinpthread -Wl,-Bdynamic)
elseif(USE_SDL)
  target_compile_definitions(darksidechronicles PRIVATE USE_SDL)
  target_compile_options(darksidechronicles PRIVATE -O2 -fno-strict-aliasing -w -g0)
  target_link_libraries(darksidechronicles PRIVATE SDL2 GL pthread)
else()
  target_compile_options(darksidechronicles PRIVATE -O2 -fno-strict-aliasing -w -g0)
  target_link_libraries(darksidechronicles PRIVATE EGL GL pthread)
endif()
