blob: 552a6b1827bb66d4569d5f20e1617f5bdfca6cc9 [file] [log] [blame]
agsantos5aa39652020-08-11 18:18:04 -04001cmake_minimum_required(VERSION 3.10)
2
3# set the project name
4set (ProjectName GreenScreen)
agsantosc9181b42020-11-26 12:03:04 -05005set (Version 1.0.2)
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)
agsantos5aa39652020-08-11 18:18:04 -040017
18if(WIN32)
agsantosac1940d2020-09-17 10:18:40 -040019 message(OS:\ WINDOWS\ ${CMAKE_SYSTEM_PROCESSOR})
20 if (NOT ${CMAKE_CL_64})
21 message( FATAL_ERROR "\nUse CMake only for x64 Windows" )
22 endif()
23 set (CONTRIB_PLATFORM_CURT x64)
24 set (CONTRIB_PLATFORM ${CONTRIB_PLATFORM_CURT}-windows)
agsantos796b5af2020-12-22 19:38:27 -050025 set (LIBRARY_FILE_NAME ${ProjectName}.dll)
agsantosac1940d2020-09-17 10:18:40 -040026 set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64)
agsantos5aa39652020-08-11 18:18:04 -040027endif()
28
agsantos5aa39652020-08-11 18:18:04 -040029message(Building:\ ${ProjectName}\ ${Version})
30message(Build\ path:\ ${PROJECT_BINARY_DIR})
31message(JPL\ assembling\ path:\ ${JPL_DIRECTORY})
32message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME})
33
agsantos796b5af2020-12-22 19:38:27 -050034if(NVIDIA)
35add_definitions(-DNVIDIA)
36set(ONNX_DIR ${ONNX_DIR}/nvidia-gpu)
37message(Provider:\ NVIDIA)
38set(EXTRA_PATH nvidia-gpu)
39else()
40set(ONNX_DIR ${ONNX_DIR}/cpu)
41message(Provider:\ NONE)
42set(EXTRA_PATH cpu)
agsantos5aa39652020-08-11 18:18:04 -040043endif()
44
45set(CMAKE_CXX_STANDARD 17)
46set(CMAKE_CXX_STANDARD_REQUIRED True)
47set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
48set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
49
50set(plugin_SRC main.cpp
agsantosac1940d2020-09-17 10:18:40 -040051 pluginMediaHandler.cpp
agsantosac1940d2020-09-17 10:18:40 -040052 videoSubscriber.cpp
agsantos796b5af2020-12-22 19:38:27 -050053 pluginProcessor.cpp
agsantos1e7736c2020-10-28 14:39:13 -040054 ./../lib/accel.cpp
agsantosc9181b42020-11-26 12:03:04 -050055 ./../lib/frameUtils.cpp
agsantosac1940d2020-09-17 10:18:40 -040056 )
agsantos5aa39652020-08-11 18:18:04 -040057
agsantos796b5af2020-12-22 19:38:27 -050058set(plugin_HDR pluginMediaHandler.h
agsantosac1940d2020-09-17 10:18:40 -040059 videoSubscriber.h
agsantos796b5af2020-12-22 19:38:27 -050060 pluginProcessor.h
agsantosc9181b42020-11-26 12:03:04 -050061 ./../lib/accel.h
62 ./../lib/frameScaler.h
63 ./../lib/frameUtils.h
64 ./../lib/pluglog.h
agsantosac1940d2020-09-17 10:18:40 -040065 )
agsantos5aa39652020-08-11 18:18:04 -040066
67
68
69# add the library
70add_library(${ProjectName} SHARED ${plugin_SRC}
agsantosac1940d2020-09-17 10:18:40 -040071 ${plugin_HDR}
72 )
agsantos5aa39652020-08-11 18:18:04 -040073
agsantos364bbae2020-08-17 11:29:56 -040074if (WIN32)
agsantosac1940d2020-09-17 10:18:40 -040075target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR}
76 ${PROJECT_SOURCE_DIR}
77 ${PLUGINS_LIB}
78 ${DAEMON_SRC}
79 ${CONTRIB_PATH}
80 ${FFMPEG}/include
81 ${CONTRIB_PATH}/build/opencv/build/install/include
agsantos796b5af2020-12-22 19:38:27 -050082 ${ONNX_DIR}/../include/session
83 ${ONNX_DIR}/../include/providers/cuda
agsantosac1940d2020-09-17 10:18:40 -040084 )
85target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH}
agsantosac1940d2020-09-17 10:18:40 -040086 ${CONTRIB_PATH}/build/opencv/build/lib/Release
87 ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release
88 ${FFMPEG}/bin
agsantos796b5af2020-12-22 19:38:27 -050089 ${ONNX_DIR}
agsantosac1940d2020-09-17 10:18:40 -040090 )
agsantos5aa39652020-08-11 18:18:04 -040091
agsantos796b5af2020-12-22 19:38:27 -050092target_link_libraries(${ProjectName} PUBLIC swscale avutil libpng libjpeg-turbo opencv_imgcodecs411 opencv_imgproc411 opencv_core411 onnxruntime zlib)
agsantos5aa39652020-08-11 18:18:04 -040093endif()
94
95add_custom_command(
agsantosac1940d2020-09-17 10:18:40 -040096 TARGET ${ProjectName}
97 PRE_BUILD
agsantos796b5af2020-12-22 19:38:27 -050098 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName}
99 COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
100 COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
101 COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/model
102 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${JPL_DIRECTORY}/data/model
103 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/preferences-onnx.json ${JPL_DIRECTORY}/data/preferences.json
agsantosac1940d2020-09-17 10:18:40 -0400104 COMMENT "Assembling Plugin files"
agsantos5aa39652020-08-11 18:18:04 -0400105)
106
agsantos364bbae2020-08-17 11:29:56 -0400107if (WIN32)
agsantosac1940d2020-09-17 10:18:40 -0400108 add_custom_command(
109 TARGET ${ProjectName}
110 POST_BUILD
agsantosac1940d2020-09-17 10:18:40 -0400111 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
112 COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM}
agsantos796b5af2020-12-22 19:38:27 -0500113 COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} --extraPath=${EXTRA_PATH}
agsantosac1940d2020-09-17 10:18:40 -0400114 COMMENT "Generating JPL archive"
115 )
agsantos364bbae2020-08-17 11:29:56 -0400116
agsantos796b5af2020-12-22 19:38:27 -0500117endif()