cmake_minimum_required(VERSION 3.16)
project(rtspviewer LANGUAGES CXX)

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

find_package(Qt5 REQUIRED COMPONENTS Core Gui Qml Quick)
find_package(PkgConfig REQUIRED)

pkg_check_modules(
   GSTREAMER
   REQUIRED
   IMPORTED_TARGET
   gstreamer-1.0
   gstreamer-app-1.0
   gstreamer-video-1.0
   gstreamer-rtsp-1.0
)

if(NOT DEFINED ENV{ARCH_TRIPLET})
   message(FATAL_ERROR "ARCH_TRIPLET is not set. Build this project with Clickable.")
endif()

set(ARCH "$ENV{ARCH}")
set(ARCH_TRIPLET "$ENV{ARCH_TRIPLET}")
set(CLICK_FRAMEWORK "$ENV{CLICK_FRAMEWORK}")
set(APPARMOR_POLICY "$ENV{APPARMOR_POLICY}")

configure_file(
   ${CMAKE_CURRENT_SOURCE_DIR}/manifest.json.in
   ${CMAKE_CURRENT_BINARY_DIR}/manifest.json
   @ONLY
)

configure_file(
   ${CMAKE_CURRENT_SOURCE_DIR}/rtspviewer.apparmor.in
   ${CMAKE_CURRENT_BINARY_DIR}/rtspviewer.apparmor
   @ONLY
)

qt5_add_resources(APP_RESOURCES resources.qrc)

add_executable(
   rtspviewer
   src/main.cpp
   src/RtspPlayer.cpp
   src/RtspPlayer.h
   src/VideoItem.cpp
   src/VideoItem.h
   ${APP_RESOURCES}
)

target_include_directories(
   rtspviewer
   PRIVATE
   ${CMAKE_CURRENT_SOURCE_DIR}/src
)

target_link_libraries(
   rtspviewer
   PRIVATE
   Qt5::Core
   Qt5::Gui
   Qt5::Qml
   Qt5::Quick
   PkgConfig::GSTREAMER
)

install(
   TARGETS rtspviewer
   RUNTIME DESTINATION lib/${ARCH_TRIPLET}/bin
)

install(
   FILES
   ${CMAKE_CURRENT_BINARY_DIR}/manifest.json
   ${CMAKE_CURRENT_BINARY_DIR}/rtspviewer.apparmor
   ${CMAKE_CURRENT_SOURCE_DIR}/rtspviewer.desktop
   DESTINATION .
)

install(
   DIRECTORY assets
   DESTINATION .
)

