Files
mxl-multiviewer/CMakeLists.txt
T
2026-05-19 14:56:13 +03:00

115 lines
2.8 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(mxl_multiviewer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(
MXL_MULTIVIEWER_ENABLE_MXL_SDK
"Enable real MXL SDK integration"
OFF
)
find_package(PkgConfig REQUIRED)
find_package(Vulkan REQUIRED)
pkg_check_modules(SDL3 REQUIRED sdl3)
add_executable(mxl_multiviewer
main.cpp
imgui/imgui.cpp
imgui/imgui_draw.cpp
imgui/imgui_tables.cpp
imgui/imgui_widgets.cpp
imgui/backends/imgui_impl_sdl3.cpp
imgui/backends/imgui_impl_vulkan.cpp
AppConfig.cpp
FeedCreate.cpp
FeedTexture.cpp
NoSignalFeed.cpp
MxlFeed.cpp
MxlInstanceCache.cpp
MxlSdkFeed.cpp
SmpteBarsFeed.cpp
SyntheticV210Feed.cpp
TileLayout.cpp
VulkanContext.cpp
VulkanUtils.cpp
Swapchain.cpp
RenderPipeline.cpp
V210ComputeDecoder.cpp
)
target_include_directories(mxl_multiviewer PRIVATE
${SDL3_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/imgui
${CMAKE_SOURCE_DIR}/imgui/backends
)
set_source_files_properties(
imgui/imgui.cpp
imgui/imgui_draw.cpp
imgui/imgui_tables.cpp
imgui/imgui_widgets.cpp
imgui/backends/imgui_impl_sdl3.cpp
imgui/backends/imgui_impl_vulkan.cpp
PROPERTIES COMPILE_OPTIONS "-w"
)
target_link_libraries(mxl_multiviewer PRIVATE
${SDL3_LIBRARIES}
)
target_compile_options(mxl_multiviewer PRIVATE
-Wall
-Wextra
-Wpedantic
)
target_compile_definitions(mxl_multiviewer PRIVATE
MXL_MULTIVIEWER_ENABLE_MXL_SDK=$<BOOL:${MXL_MULTIVIEWER_ENABLE_MXL_SDK}>
)
if(MXL_MULTIVIEWER_ENABLE_MXL_SDK)
set(MXL_SDK_ROOT "" CACHE PATH "Path to MXL SDK root directory")
if(NOT MXL_SDK_ROOT)
message(FATAL_ERROR "MXL_SDK_ROOT must be set when MXL_MULTIVIEWER_ENABLE_MXL_SDK is ON")
endif()
target_include_directories(mxl_multiviewer PRIVATE
${MXL_SDK_ROOT}/lib/include
${MXL_SDK_ROOT}/build/Linux-Clang-Release/lib/include
)
target_link_directories(mxl_multiviewer PRIVATE
${MXL_SDK_ROOT}/build/Linux-Clang-Release/lib
${MXL_SDK_ROOT}/build/Linux-Clang-Release/lib/internal
)
target_link_libraries(mxl_multiviewer PRIVATE
mxl
mxl-common
)
endif()
target_link_libraries(mxl_multiviewer PRIVATE
${SDL3_LIBRARIES}
Vulkan::Vulkan
)
# v210 conversion test
add_executable(v210_test v210_test.cpp)
target_include_directories(v210_test PRIVATE ${CMAKE_SOURCE_DIR})
# Compile compute shader
add_custom_command(
OUTPUT ${CMAKE_SOURCE_DIR}/shaders/bin/v210_decode.comp.spv
COMMAND glslangValidator -V
${CMAKE_SOURCE_DIR}/shaders/v210_decode.comp
-o ${CMAKE_SOURCE_DIR}/shaders/bin/v210_decode.comp.spv
DEPENDS ${CMAKE_SOURCE_DIR}/shaders/v210_decode.comp
COMMENT "Compiling v210_decode.comp to SPIR-V"
)