cmake_minimum_required(VERSION 3.16)
project(HDMIViewer VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Qt6 – Gui enthält den JPEG-Plugin-Support (QImage::fromData)
# OpenGLWidgets für das GPU-beschleunigte Video-Rendering (Bildglättung/Retro-Optik)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets OpenGL OpenGLWidgets)

# ALSA
find_package(PkgConfig REQUIRED)
pkg_check_modules(ALSA REQUIRED alsa)

# V4L2 Header-Check
include(CheckIncludeFileCXX)
check_include_file_cxx("linux/videodev2.h" HAVE_V4L2)
if(NOT HAVE_V4L2)
    message(FATAL_ERROR "linux/videodev2.h nicht gefunden.")
endif()

set(SOURCES
    src/main.cpp
    src/MainWindow.cpp
    src/VideoWidget.cpp
    src/DeviceDialog.cpp
    src/AudioThread.cpp
    src/CaptureThread.cpp
)

add_executable(hdmi-viewer ${SOURCES})

target_link_libraries(hdmi-viewer
    PRIVATE
    Qt6::Core
    Qt6::Gui
    Qt6::Widgets
    Qt6::OpenGL
    Qt6::OpenGLWidgets
    ${ALSA_LIBRARIES}
)

target_include_directories(hdmi-viewer PRIVATE
    ${ALSA_INCLUDE_DIRS}
    src
)

target_compile_options(hdmi-viewer PRIVATE
    ${ALSA_CFLAGS_OTHER}
    -Wall -Wextra
)

install(TARGETS hdmi-viewer DESTINATION bin)
