cmake_minimum_required(VERSION 3.10)

set(EXECUTABLE_OUTPUT_PATH "bin")
set(CMAKE_CXX_FLAGS "-O3")
SET(CMAKE_CXX_STANDARD 11)
set(CMAKE_C_FLAGS "-O3")
SET(CMAKE_C_STANDARD 11)

if(NOT DEFINED CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE RelWithDebInfo)
endif()

project(raptor)

# Linux-only build: SDL2 + ALSA (PipeWire serves ALSA). Windows/Android/OSX
# support was stripped from this fork — see ../PLAN.md.

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})

include_directories(./include/textscreen/include/)
include_directories(./include/TinySoundFont/)

add_subdirectory(./include/textscreen/include)

set(SOURCE_FILES
    src/tile.cpp
    src/gssapi.cpp
    src/objects.cpp
    src/tile_a.cpp
    src/windows.cpp
    src/flame.cpp
    src/joyapi.cpp
    src/kbdapi.cpp
    src/glbapi.cpp
    src/i_video.cpp
    src/musapi.cpp
    src/i_upscale.cpp
    src/movie_a.cpp
    src/ptrapi_a.cpp
    src/swdapi.cpp
    src/imsapi.cpp
    src/store.cpp
    src/i_oplmusic.cpp
    src/bonus.cpp
    src/anims.cpp
    src/shadow.cpp
    src/movie.cpp
    src/m_misc.cpp
    src/shots.cpp
    src/opl3.cpp
    src/eshot.cpp
    src/gfxapi_a.cpp
    src/dspapi.cpp
    src/vmemapi.cpp
    src/rap.cpp
    src/demo.cpp
    src/prefapi.cpp
    src/gfxapi.cpp
    src/intro.cpp
    src/help.cpp
    src/input.cpp
    src/fx.cpp
    src/ptrapi.cpp
    src/loadsave.cpp
    src/enemy.cpp
    src/mpuwinmm.cpp
    src/mputsf.cpp
    src/mpualsa.cpp
    src/mpucorea.cpp
    src/mpucorem.cpp
    )

set(SOURCE_SETUP_FILES
    src/setup/input.cpp
    src/setup/main.cpp
    src/setup/music.cpp
    src/setup/prefapi.cpp
    src/setup/sound.cpp
    src/setup/txt_joyinput.cpp
    src/setup/txt_keyinput.cpp
    src/setup/txt_mouseinput.cpp
    )

find_package(ALSA REQUIRED)
add_executable( ${PROJECT_NAME} ${SOURCE_FILES} )
target_link_libraries(raptor
    textscreen
    asound
    SDL2::SDL2main
    SDL2::SDL2
    )

add_executable( raptorsetup ${SOURCE_SETUP_FILES} )
target_link_libraries(raptorsetup
    textscreen
    SDL2::SDL2main
    SDL2::SDL2
    )
