blob: 220096e20f777747de2dfa0000a79e5e3c86888a [file] [log] [blame]
cmake_minimum_required(VERSION 3.10)
# set the project name
set (ProjectName GreenScreen)
set (Version 2.0.0)
project(${ProjectName} VERSION ${Version})
set (DAEMON ${PROJECT_SOURCE_DIR}/../daemon)
set (JPL_FILE_NAME ${ProjectName}.jpl)
set (DAEMON_SRC ${DAEMON}/src)
set (CONTRIB_PATH ${DAEMON}/contrib)
set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
set (ONNX_DIR $ENV{PLUGIN_ENV}/onnxruntime)
set (PREFERENCESFILENAME preferences)
if(WIN32)
message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
if (NOT ${CMAKE_CL_64})
message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
endif()
set (CONTRIB_PLATFORM_CURT x64)
set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
set (LIBRARY_FILE_NAME ${ProjectName}.dll)
set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
else()
message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts." )
endif()
message(Building:\ ${ProjectName}\ ${Version})
message(Build\ path:\ ${PROJECT_BINARY_DIR})
message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
if(NVIDIA)
add_definitions(-DNVIDIA)
set(ONNX_DIR ${ONNX_DIR}/nvidia-gpu)
message(Provider:\ NVIDIA)
set(EXTRA_PATH nvidia-gpu)
set (PREFERENCESFILENAME ${PREFERENCESFILENAME}-accel)
else()
set(ONNX_DIR ${ONNX_DIR}/cpu)
message(Provider:\ NONE)
set(EXTRA_PATH cpu)
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
if(TESTPROCESS)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DMSGPACK_NO_BOOST /D__DEBUG__ /MT")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DMSGPACK_NO_BOOST /D__DEBUG__ /MT")
else()
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DMSGPACK_NO_BOOST /MT")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DMSGPACK_NO_BOOST /MT")
endif()
set(plugin_SRC main.cpp
pluginMediaHandler.cpp
videoSubscriber.cpp
pluginProcessor.cpp
./../lib/accel.cpp
./../lib/frameUtils.cpp
./../lib/frameFilter.cpp
./../lib/common.cpp
)
set(plugin_HDR pluginMediaHandler.h
videoSubscriber.h
pluginProcessor.h
./../lib/pluglog.h
./../lib/mediaStream.h
./../lib/audioFormat.h
./../lib/common.h
)
if(TESTPROCESS)
add_executable(${ProjectName} ${plugin_SRC}
${plugin_HDR}
)
else()
add_library(${ProjectName} SHARED ${plugin_SRC}
${plugin_HDR}
)
endif()
target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
${PROJECT_SOURCE_DIR}
${PLUGINS_LIB}
${DAEMON_SRC}
${CONTRIB_PATH}
${CONTRIB_PATH}/build/fmt/include
${FFMPEG}/include
${CONTRIB_PATH}/build/opencv/build/install/include
${ONNX_DIR}/../include/session
${ONNX_DIR}/../include/providers/cuda
${CONTRIB_PATH}/build/yaml-cpp/include
${CONTRIB_PATH}/build/opendht/include
${CONTRIB_PATH}/build/msgpack-c/include
)
target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
${CONTRIB_PATH}/build/fmt/msvc/Release
${CONTRIB_PATH}/build/opencv/build/lib/Release
${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release
${FFMPEG}/lib
${ONNX_DIR}
${CONTRIB_PATH}/msvc/lib/x64
${CONTRIB_PATH}/build/fmt/msvc/Release
${CONTRIB_PATH}/build/yaml-cpp/msvc/Release
)
target_link_libraries(${ProjectName} PUBLIC libyaml-cppmd libavfilter libswscale libavformat
libavcodec libavutil libvpx libx264 libopus libmfx
libzlib ws2_32 Bcrypt Secur32 opencv_imgproc460
opencv_core460 onnxruntime msvcrt)
add_custom_command(
TARGET ${ProjectName}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/ffmpeg/ ${CONTRIB_PATH}/src/ffmpeg
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/../contrib/zlib ${CONTRIB_PATH}/src/zlib
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/../contrib/mp3lame ${CONTRIB_PATH}/src/mp3lame
COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/../contrib/yaml-cpp ${CONTRIB_PATH}/src/yaml-cpp
COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb zlib
COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb ffmpeg
COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb yaml-cpp
COMMAND cd ${CONTRIB_PATH}/src/
COMMAND git checkout *
)
if(TESTPROCESS)
add_custom_command(
TARGET ${ProjectName}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/testPreferences.yml ${PROJECT_BINARY_DIR}/
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/sample.mp4 ${PROJECT_BINARY_DIR}/
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_SOURCE_DIR}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${PROJECT_BINARY_DIR}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${PROJECT_BINARY_DIR}/Debug
COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_SOURCE_DIR}/data/model
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${PROJECT_SOURCE_DIR}/data/model
)
else()
add_custom_command(
TARGET ${ProjectName}
PRE_BUILD
COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/model
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${JPL_DIRECTORY}/data/model
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/${PREFERENCESFILENAME}.json ${JPL_DIRECTORY}/data/preferences.json
COMMENT "Assembling Plugin files"
)
if(NVIDIA)
add_custom_command(
TARGET ${ProjectName}
PRE_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime_providers_shared.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime_providers_shared.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime_providers_cuda.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime_providers_cuda.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
)
endif()
add_custom_command(
TARGET ${ProjectName}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName}
COMMENT "Generating JPL archive"
)
endif()