115 lines
2.8 KiB
CMake
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"
|
|
)
|