cmake_minimum_required(VERSION 3.16)
project(sun_stream_host VERSION 0.2.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

find_package(PkgConfig REQUIRED)
find_package(Threads REQUIRED)
pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
pkg_check_modules(GSTREAMER REQUIRED IMPORTED_TARGET
    gstreamer-1.0 gstreamer-app-1.0 gstreamer-video-1.0)
pkg_check_modules(GIO_UNIX REQUIRED IMPORTED_TARGET gio-unix-2.0)

add_executable(sun-stream-host src/main.cpp)
target_compile_definitions(sun-stream-host PRIVATE SUN_STREAM_VERSION="${PROJECT_VERSION}")
target_compile_options(sun-stream-host PRIVATE -Wall -Wextra -Wpedantic -Wno-deprecated-declarations)
target_link_libraries(sun-stream-host PRIVATE
    PkgConfig::GTK
    PkgConfig::GSTREAMER
    PkgConfig::GIO_UNIX
    Threads::Threads
    ${CMAKE_DL_LIBS}
)
add_custom_command(TARGET sun-stream-host POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
        $<TARGET_FILE:sun-stream-host>
        $<TARGET_FILE_DIR:sun-stream-host>/sun-engine-host
)

install(TARGETS sun-stream-host RUNTIME DESTINATION bin)
install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/sun-engine-host" DESTINATION bin)

include(CTest)
if(BUILD_TESTING)
    add_test(NAME sun-stream-native-self-test COMMAND sun-stream-host --self-test)
endif()
