QortalOS Brooklyn for Raspberry Pi 4
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

121 lines
2.7 KiB

cmake_minimum_required(VERSION 2.8)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}")
project( server )
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
SET(USE_CUDA on CACHE BOOL "Use CUDA")
SET(USE_WDDM on CACHE BOOL "Use WDDM for screen capture")
SET(USE_NVENC on CACHE BOOL "Use Nvidia encoder")
# BOOST
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package( Boost REQUIRED COMPONENTS thread )
if(Boost_FOUND)
message("Boost found!")
endif()
include_directories(${Boost_INCLUDE_DIR})
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
# FFMPEG
set(FFMPEG_ROOT "" CACHE FILEPATH "Root of the FFMPEG directory, which has README.txt")
if (FFMPEG_ROOT)
FIND_PATH( FFMPEG_INCLUDE_DIR libavcodec/avcodec.h
${FFMPEG_ROOT}/include
)
include_directories(${FFMPEG_INCLUDE_DIR})
FIND_LIBRARY( FFMPEG_LIBRARY_avcodec avcodec
${FFMPEG_ROOT}/lib
)
FIND_LIBRARY( FFMPEG_LIBRARY_avutil avutil
${FFMPEG_ROOT}/lib
)
if (FFMPEG_LIBRARY_avcodec AND FFMPEG_LIBRARY_avutil)
set (FFMPEG_FOUND 1)
set (FFMPEG_LIBRARIES "${FFMPEG_LIBRARY_avcodec};${FFMPEG_LIBRARY_avutil}")
message("FFMPEG found!")
endif()
endif()
# DXGI and CUDA
if (USE_CUDA)
find_package(CUDA)
endif()
if(CUDA_FOUND)
set (HAS_CUDA 1)
message("CUDA found!")
include_directories(${CUDA_TOOLKIT_INCLUDE})
CUDA_ADD_LIBRARY(cudalib STATIC
color_conversion.h
color_conversion.cu
OPTIONS -arch sm_30
)
TARGET_LINK_LIBRARIES(cudalib ${CUDA_LIBRARIES})
set (CUDA_LINK_LIBRARIES "${CUDA_CUDA_LIBRARY};${CUDA_CUDART_LIBRARY};cudalib")
endif()
if (USE_WDDM OR USE_NVENC)
find_package( DirectX )
endif()
include_directories(${DXGI_INCLUDES})
include_directories(${Boost_INCLUDE_DIRS})
if (USE_WDDM AND DIRECTX_FOUND)
set (HAS_WDDM 1)
SET(Capture_HEADER
wddm.h
WDDMCapture.h
)
SET(Capture_LIBRARIES
"${DXGI_LIBRARIES}"
)
else()
SET(Capture_HEADER
GDICapture.h
)
endif()
if (DIRECTX_FOUND AND USE_NVENC)
set (HAS_NVENC 1)
#files for NVEncoder
SET(ENCODER_SOURCE
NvEncoder/NvHWEncoder.cpp
)
SET(ENCODER_HEADERS
NV_encoding.hpp
NvEncoder/NvEncoder.h
NvEncoder/NvHWEncoder.h
NvEncoder/nvEncodeAPI.h
)
elseif (FFMPEG_FOUND)
set (HAS_FFMPEG 1)
SET(ENCODER_SOURCE
)
SET(ENCODER_HEADERS
FFMPEG_encoding.hpp
)
SET(ENCODER_LIBRARIES
"${FFMPEG_LIBRARIES}"
)
endif()
SET(COMMON_SOURCE
config.h
bounded_buffer.h
Capture.h
fps.h
monitor.h
params.h
)
add_executable( server server.cpp ${COMMON_SOURCE} ${ENCODER_SOURCE} ${ENCODER_HEADERS} ${Capture_HEADER} )
target_link_libraries( server ${Boost_LIBRARIES} ${ENCODER_LIBRARIES} ${Capture_LIBRARIES} ${CUDA_LINK_LIBRARIES})
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_SOURCE_DIR}/config.h)