ref:main
# Headless Moonlight client for Sunshine end-to-end tests.
#
# Standalone project, not part of the Sunshine build: it needs the full moonlight-common-c library
# (Sunshine only compiles a few of its sources) and a decoder-enabled FFmpeg.
#
#   cmake -S tests/e2e/moonlight_client -B cmake-build-e2e-client -G Ninja
#   ninja -C cmake-build-e2e-client
cmake_minimum_required(VERSION 3.20)
project(sunshine_e2e_moonlight_client LANGUAGES C CXX)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(SUNSHINE_SOURCE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../..")

set(BUILD_SHARED_LIBS OFF)
add_subdirectory("${SUNSHINE_SOURCE_ROOT}/third-party/moonlight-common-c"
        "${CMAKE_CURRENT_BINARY_DIR}/moonlight-common-c")

find_package(Threads REQUIRED)
find_package(CURL REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(FFMPEG REQUIRED IMPORTED_TARGET libavcodec libavutil libswscale)

add_executable(moonlight_e2e_client
        main.cpp
        gamestream.h
        gamestream.cpp)
target_include_directories(moonlight_e2e_client PRIVATE
        "${SUNSHINE_SOURCE_ROOT}/third-party/moonlight-common-c/src")
target_link_libraries(moonlight_e2e_client PRIVATE
        moonlight-common-c
        CURL::libcurl
        OpenSSL::SSL
        OpenSSL::Crypto
        PkgConfig::FFMPEG
        Threads::Threads)