blob: b19d1fd6e4b9c10ce9e5c486a965887eea5c3131 [file] [log] [blame]
agsantos5aa39652020-08-11 18:18:04 -04001cmake_minimum_required(VERSION 3.10)
2
3# set the project name
4set (ProjectName GreenScreen)
agsantosdd6a62a2021-03-29 17:13:27 -04005set (Version 2.0.0)
agsantos5aa39652020-08-11 18:18:04 -04006
7project(${ProjectName} VERSION ${Version})
8
agsantosac1940d2020-09-17 10:18:40 -04009set (DAEMON ${PROJECT_SOURCE_DIR}/../../daemon)
agsantos796b5af2020-12-22 19:38:27 -050010set (JPL_FILE_NAME ${ProjectName}.jpl)
agsantos5aa39652020-08-11 18:18:04 -040011set (DAEMON_SRC ${DAEMON}/src)
12set (CONTRIB_PATH ${DAEMON}/contrib)
agsantosac1940d2020-09-17 10:18:40 -040013set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib)
agsantos5aa39652020-08-11 18:18:04 -040014set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl)
agsantosac1940d2020-09-17 10:18:40 -040015set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs)
agsantos796b5af2020-12-22 19:38:27 -050016set (ONNX_DIR $ENV{PLUGIN_ENV}/onnxruntime)
agsantos2c8525e2021-03-19 11:18:01 -040017set (PREFERENCESFILENAME preferences)
agsantos5aa39652020-08-11 18:18:04 -040018
19if(WIN32)
agsantosac1940d2020-09-17 10:18:40 -040020 message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
21 if (NOT ${CMAKE_CL_64})
22 message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
23 endif()
24 set (CONTRIB_PLATFORM_CURT x64)
25 set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
agsantos796b5af2020-12-22 19:38:27 -050026 set (LIBRARY_FILE_NAME ${ProjectName}.dll)
agsantosac1940d2020-09-17 10:18:40 -040027 set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
agsantos5aa39652020-08-11 18:18:04 -040028endif()
29
agsantos5aa39652020-08-11 18:18:04 -040030message(Building:\ ${ProjectName}\ ${Version})
31message(Build\ path:\ ${PROJECT_BINARY_DIR})
32message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
33message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
34
agsantos796b5af2020-12-22 19:38:27 -050035if(NVIDIA)
36add_definitions(-DNVIDIA)
37set(ONNX_DIR ${ONNX_DIR}/nvidia-gpu)
38message(Provider:\ NVIDIA)
39set(EXTRA_PATH nvidia-gpu)
agsantos2c8525e2021-03-19 11:18:01 -040040set (PREFERENCESFILENAME ${PREFERENCESFILENAME}-accel)
agsantos796b5af2020-12-22 19:38:27 -050041else()
42set(ONNX_DIR ${ONNX_DIR}/cpu)
43message(Provider:\ NONE)
44set(EXTRA_PATH cpu)
agsantos5aa39652020-08-11 18:18:04 -040045endif()
46
47set(CMAKE_CXX_STANDARD 17)
48set(CMAKE_CXX_STANDARD_REQUIRED True)
49set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
50set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
51
52set(plugin_SRC main.cpp
agsantosac1940d2020-09-17 10:18:40 -040053 pluginMediaHandler.cpp
agsantosac1940d2020-09-17 10:18:40 -040054 videoSubscriber.cpp
agsantos796b5af2020-12-22 19:38:27 -050055 pluginProcessor.cpp
agsantos1e7736c2020-10-28 14:39:13 -040056 ./../lib/accel.cpp
agsantosc9181b42020-11-26 12:03:04 -050057 ./../lib/frameUtils.cpp
agsantosdd6a62a2021-03-29 17:13:27 -040058 ./../lib/frameFilter.cpp
59 ${DAEMON_SRC}/string_utils.cpp
agsantosac1940d2020-09-17 10:18:40 -040060 )
agsantos5aa39652020-08-11 18:18:04 -040061
agsantos796b5af2020-12-22 19:38:27 -050062set(plugin_HDR pluginMediaHandler.h
agsantosac1940d2020-09-17 10:18:40 -040063 videoSubscriber.h
agsantos796b5af2020-12-22 19:38:27 -050064 pluginProcessor.h
agsantosc9181b42020-11-26 12:03:04 -050065 ./../lib/pluglog.h
agsantosdd6a62a2021-03-29 17:13:27 -040066 ./../lib/mediaStream.h
67 ./../lib/audioFormat.h
agsantosac1940d2020-09-17 10:18:40 -040068 )
agsantos5aa39652020-08-11 18:18:04 -040069
70
71
72# add the library
73add_library(${ProjectName} SHARED ${plugin_SRC}
agsantosac1940d2020-09-17 10:18:40 -040074 ${plugin_HDR}
75 )
agsantos5aa39652020-08-11 18:18:04 -040076
agsantos364bbae2020-08-17 11:29:56 -040077if (WIN32)
agsantosac1940d2020-09-17 10:18:40 -040078target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
79 ${PROJECT_SOURCE_DIR}
80 ${PLUGINS_LIB}
81 ${DAEMON_SRC}
82 ${CONTRIB_PATH}
83 ${FFMPEG}/include
84 ${CONTRIB_PATH}/build/opencv/build/install/include
agsantos796b5af2020-12-22 19:38:27 -050085 ${ONNX_DIR}/../include/session
86 ${ONNX_DIR}/../include/providers/cuda
agsantosac1940d2020-09-17 10:18:40 -040087 )
88target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
agsantosac1940d2020-09-17 10:18:40 -040089 ${CONTRIB_PATH}/build/opencv/build/lib/Release
90 ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release
agsantosdd6a62a2021-03-29 17:13:27 -040091 ${FFMPEG}/lib
agsantos796b5af2020-12-22 19:38:27 -050092 ${ONNX_DIR}
agsantosdd6a62a2021-03-29 17:13:27 -040093 ${CONTRIB_PATH}/msvc/lib/x64
agsantosac1940d2020-09-17 10:18:40 -040094 )
agsantos5aa39652020-08-11 18:18:04 -040095
agsantosdd6a62a2021-03-29 17:13:27 -040096target_link_libraries(${ProjectName} PUBLIC libavfilter libswscale libavformat libavcodec libavutil libvpx libx264 libopus libmfx
97 libzlib ws2_32 Bcrypt Crypt32 Secur32 Dnsapi opencv_imgproc411 opencv_core411 onnxruntime msvcrt)
agsantos5aa39652020-08-11 18:18:04 -040098endif()
99
100add_custom_command(
agsantosac1940d2020-09-17 10:18:40 -0400101 TARGET ${ProjectName}
102 PRE_BUILD
agsantos796b5af2020-12-22 19:38:27 -0500103 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
104 COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
105 COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
106 COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/model
107 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${JPL_DIRECTORY}/data/model
agsantos2c8525e2021-03-19 11:18:01 -0400108 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/${PREFERENCESFILENAME}.json ${JPL_DIRECTORY}/data/preferences.json
agsantosac1940d2020-09-17 10:18:40 -0400109 COMMENT "Assembling Plugin files"
agsantos5aa39652020-08-11 18:18:04 -0400110)
111
agsantos364bbae2020-08-17 11:29:56 -0400112if (WIN32)
agsantosac1940d2020-09-17 10:18:40 -0400113 add_custom_command(
114 TARGET ${ProjectName}
115 POST_BUILD
agsantosac1940d2020-09-17 10:18:40 -0400116 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
117 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
agsantos796b5af2020-12-22 19:38:27 -0500118 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} --extraPath=${EXTRA_PATH}
agsantosac1940d2020-09-17 10:18:40 -0400119 COMMENT "Generating JPL archive"
120 )
agsantos364bbae2020-08-17 11:29:56 -0400121
agsantos796b5af2020-12-22 19:38:27 -0500122endif()