Lumiera
The new emerging NLE for GNU/Linux
#
# CMake-Build for a demo code to use io_uring and output video
#
# Copyright 2025,2026  Hermann Vosseler <Ichthyostega@web.de>
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU GPL version 2+ See the LICENSE file for details.
#
cmake_minimum_required (VERSION 3.20)

# default to Debug build type, unless specified in cache or command line
if (NOT CMAKE_BUILD_TYPE)
    set (CMAKE_BUILD_TYPE Debug CACHE STRING "Default to Debug build")
    set (CMAKE_VERBOSE_MAKEFILE TRUE CACHE STRING "Show full compile commands")
endif()
# optimise debugging symbols for GNU gdb
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb3" CACHE STRING "Special option for debug builds")



project(
    DemoUringVid
    VERSION 1.0
    LANGUAGES CXX
)

add_compile_options("-Wall")

# dependencies via pkg-config
find_package(PkgConfig REQUIRED)
pkg_check_modules(LUR  REQUIRED IMPORTED_TARGET liburing>=2.9)
pkg_check_modules(GTK  REQUIRED IMPORTED_TARGET gtkmm-3.0>=3.20)
pkg_check_modules(XLIB REQUIRED IMPORTED_TARGET x11>=1.7)
pkg_check_modules(EGL  REQUIRED IMPORTED_TARGET egl>=1.5)
pkg_check_modules(GLEW REQUIRED IMPORTED_TARGET glew>=2.2)



# build complete source tree (detect changes on rebuild)
file(GLOB_RECURSE demo_uring_sources CONFIGURE_DEPENDS "*.cpp")
file(GLOB_RECURSE demo_uring_headers CONFIGURE_DEPENDS "*.hpp")

add_executable(demo_uring ${demo_uring_sources} ${demo_uring_headers})
target_compile_features(demo_uring PUBLIC cxx_std_17)
target_include_directories(demo_uring PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)
target_link_libraries(demo_uring PRIVATE PkgConfig::LUR)
target_link_libraries(demo_uring PRIVATE PkgConfig::GTK)
target_link_libraries(demo_uring PRIVATE PkgConfig::XLIB)
target_link_libraries(demo_uring PRIVATE PkgConfig::EGL)
target_link_libraries(demo_uring PRIVATE PkgConfig::GLEW)