forked from Qortal/Brooklyn
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
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) |