cmake_minimum_required(VERSION 3.16)
project(fbzx)

set(CMAKE_CXX_STANDARD 14)

find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
list(APPEND LINKLIBS SDL2::SDL2)

find_library(PULSESIMPLE_LIB pulse-simple)
if(PULSESIMPLE_LIB)
    find_package(PulseAudio)
    if(PULSEAUDIO_FOUND)
        include_directories(PULSEAUDIO_INCLUDE_DIR)
        list(APPEND LINKLIBS ${PULSESIMPLE_LIB})
        add_definitions(-DD_SOUND_PULSE)
    endif()
endif()

find_package(ALSA)
if(ALSA_FOUND)
    include_directories(ALSA_INCLUDE_DIRS)
    list(APPEND LINKLIBS ${ALSA_LIBRARIES})
    add_definitions(-DD_SOUND_ALSA)
endif()

# OSS
find_file(SYS_SOUNDCARD_H sys/soundcard.h)
if(SYS_SOUNDCARD_H)
    add_definitions(-DD_SOUND_OSS)
endif()



set(Z80FREE_PATH "src/z80free")
add_subdirectory(${Z80FREE_PATH} z80free)
list(APPEND LINKLIBS z80free)

set(SRC_FILES
        cargador.hh
        cargador.cpp
        cmdline.hh
        cmdline.cpp
        computer.hh
        computer.cpp
        emulator.hh
        emulator.cpp
        keyboard.hh
        keyboard.cpp
        llscreen.hh
        llscreen.cpp
        llsound.hh
        llsound.cpp
        menus.hh
        menus.cpp
        microdrive.hh
        microdrive.cpp
        mouse.hh
        mouse.cpp
        osd.hh
        osd.cpp
        screen.hh
        screen.cpp
        signals.hh
        signals.cpp
        spk_ay.hh
        spk_ay.cpp
        tape.hh
        tape.cpp
        )
list(TRANSFORM SRC_FILES PREPEND "src/" OUTPUT_VARIABLE SRC_FILES)

add_executable(fbzx WIN32 ${SRC_FILES})
list(TRANSFORM LINKLIBS PREPEND "PRIVATE;" OUTPUT_VARIABLE LINKLIBS)
target_link_libraries(fbzx ${LINKLIBS})

include(GNUInstallDirs)
install(TARGETS fbzx RUNTIME)
install(FILES data/keymap.bmp DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbzx)
install(FILES data/fbzx.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications)
install(FILES data/fbzx.svg DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pixmaps)
install(FILES AMSTRAD CAPABILITIES COPYING FAQ README.md README.TZX HISTORY.md
        DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/doc/fbzx)
install(FILES fbzx.appdata.xml DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/appdata)

option(NOROMS "Do not install ROMs" OFF)
if(NOT NOROMS)
    install(DIRECTORY data/spectrum-roms DESTINATION ${CMAKE_INSTALL_DATAROOTDIR})
endif()
