agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 1 | cmake_minimum_required(VERSION 3.10) |
| 2 | |
| 3 | # set the project name |
| 4 | set (ProjectName GreenScreen) |
agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 5 | set (Version 2.0.0) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 6 | |
| 7 | project(${ProjectName} VERSION ${Version}) |
| 8 | |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 9 | set (DAEMON ${PROJECT_SOURCE_DIR}/../../daemon) |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 10 | set (JPL_FILE_NAME ${ProjectName}.jpl) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 11 | set (DAEMON_SRC ${DAEMON}/src) |
| 12 | set (CONTRIB_PATH ${DAEMON}/contrib) |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 13 | set (PLUGINS_LIB ${PROJECT_SOURCE_DIR}/../lib) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 14 | set (JPL_DIRECTORY ${PROJECT_BINARY_DIR}/jpl) |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 15 | set (LIBS_DIR ${PROJECT_SOURCE_DIR}/../contrib/Libs) |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 16 | set (ONNX_DIR $ENV{PLUGIN_ENV}/onnxruntime) |
agsantos | 2c8525e | 2021-03-19 11:18:01 -0400 | [diff] [blame] | 17 | set (PREFERENCESFILENAME preferences) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 18 | |
| 19 | if(WIN32) |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 20 | 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) |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 26 | set (LIBRARY_FILE_NAME ${ProjectName}.dll) |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 27 | set (FFMPEG ${CONTRIB_PATH}/build/ffmpeg/Build/win32/x64) |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 28 | else() |
| 29 | message( FATAL_ERROR "\nUse CMake only for Windows! For linux or Android (linux host), use our bash scripts." ) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 30 | endif() |
| 31 | |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 32 | message(Building:\ ${ProjectName}\ ${Version}) |
| 33 | message(Build\ path:\ ${PROJECT_BINARY_DIR}) |
| 34 | message(JPL\ assembling\ path:\ ${JPL_DIRECTORY}) |
| 35 | message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NAME}) |
| 36 | |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 37 | if(NVIDIA) |
| 38 | add_definitions(-DNVIDIA) |
| 39 | set(ONNX_DIR ${ONNX_DIR}/nvidia-gpu) |
| 40 | message(Provider:\ NVIDIA) |
| 41 | set(EXTRA_PATH nvidia-gpu) |
agsantos | 2c8525e | 2021-03-19 11:18:01 -0400 | [diff] [blame] | 42 | set (PREFERENCESFILENAME ${PREFERENCESFILENAME}-accel) |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 43 | else() |
| 44 | set(ONNX_DIR ${ONNX_DIR}/cpu) |
| 45 | message(Provider:\ NONE) |
| 46 | set(EXTRA_PATH cpu) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 47 | endif() |
| 48 | |
| 49 | set(CMAKE_CXX_STANDARD 17) |
| 50 | set(CMAKE_CXX_STANDARD_REQUIRED True) |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 51 | |
| 52 | if(TESTPROCESS) |
| 53 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D__DEBUG__ /MT") |
| 54 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /D__DEBUG__ /MT") |
| 55 | else() |
| 56 | set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MT") |
| 57 | set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") |
| 58 | endif() |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 59 | |
| 60 | set(plugin_SRC main.cpp |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 61 | pluginMediaHandler.cpp |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 62 | videoSubscriber.cpp |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 63 | pluginProcessor.cpp |
agsantos | 1e7736c | 2020-10-28 14:39:13 -0400 | [diff] [blame] | 64 | ./../lib/accel.cpp |
agsantos | c9181b4 | 2020-11-26 12:03:04 -0500 | [diff] [blame] | 65 | ./../lib/frameUtils.cpp |
agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 66 | ./../lib/frameFilter.cpp |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 67 | ./../lib/common.cpp |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 68 | ) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 69 | |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 70 | set(plugin_HDR pluginMediaHandler.h |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 71 | videoSubscriber.h |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 72 | pluginProcessor.h |
agsantos | c9181b4 | 2020-11-26 12:03:04 -0500 | [diff] [blame] | 73 | ./../lib/pluglog.h |
agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 74 | ./../lib/mediaStream.h |
| 75 | ./../lib/audioFormat.h |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 76 | ./../lib/common.h |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 77 | ) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 78 | |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 79 | if(TESTPROCESS) |
| 80 | add_executable(${ProjectName} ${plugin_SRC} |
| 81 | ${plugin_HDR} |
| 82 | ) |
| 83 | else() |
| 84 | add_library(${ProjectName} SHARED ${plugin_SRC} |
| 85 | ${plugin_HDR} |
| 86 | ) |
| 87 | endif() |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 88 | |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 89 | target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR} |
| 90 | ${PROJECT_SOURCE_DIR} |
| 91 | ${PLUGINS_LIB} |
| 92 | ${DAEMON_SRC} |
| 93 | ${CONTRIB_PATH} |
Aline Gondim Santos | ba981bb | 2022-08-02 14:28:04 -0300 | [diff] [blame] | 94 | ${CONTRIB_PATH}/build/fmt/include |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 95 | ${FFMPEG}/include |
| 96 | ${CONTRIB_PATH}/build/opencv/build/install/include |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 97 | ${ONNX_DIR}/../include/session |
| 98 | ${ONNX_DIR}/../include/providers/cuda |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 99 | ${CONTRIB_PATH}/build/yaml-cpp/include |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 100 | ) |
| 101 | target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH} |
Aline Gondim Santos | ba981bb | 2022-08-02 14:28:04 -0300 | [diff] [blame] | 102 | ${CONTRIB_PATH}/build/fmt/msvc/Release |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 103 | ${CONTRIB_PATH}/build/opencv/build/lib/Release |
| 104 | ${CONTRIB_PATH}/build/opencv/build/3rdparty/lib/Release |
agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 105 | ${FFMPEG}/lib |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 106 | ${ONNX_DIR} |
agsantos | dd6a62a | 2021-03-29 17:13:27 -0400 | [diff] [blame] | 107 | ${CONTRIB_PATH}/msvc/lib/x64 |
Aline Gondim Santos | ba981bb | 2022-08-02 14:28:04 -0300 | [diff] [blame] | 108 | ${CONTRIB_PATH}/build/fmt/msvc/Release |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 109 | ${CONTRIB_PATH}/build/yaml-cpp/msvc/Release |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 110 | ) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 111 | |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 112 | target_link_libraries(${ProjectName} PUBLIC libyaml-cppmd libavfilter libswscale libavformat libavcodec libavutil libvpx libx264 libopus libmfx |
Aline Gondim Santos | 1c1a77d | 2022-08-02 14:34:38 -0300 | [diff] [blame] | 113 | libzlib ws2_32 Bcrypt Secur32 opencv_imgproc460 opencv_core460 onnxruntime msvcrt) |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 114 | |
| 115 | add_custom_command( |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 116 | TARGET ${ProjectName} |
| 117 | PRE_BUILD |
Aline Gondim Santos | 7763bff | 2022-07-20 08:04:02 -0300 | [diff] [blame] | 118 | COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/zlib ${CONTRIB_PATH}/src/zlib |
| 119 | COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/ffmpeg/ ${CONTRIB_PATH}/src/ffmpeg |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 120 | COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/../contrib/yaml-cpp ${CONTRIB_PATH}/src/yaml-cpp |
| 121 | COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb yaml-cpp |
Aline Gondim Santos | 7763bff | 2022-07-20 08:04:02 -0300 | [diff] [blame] | 122 | COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb zlib |
| 123 | COMMAND python ${DAEMON}/compat/msvc/winmake.py -fb ffmpeg |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 124 | COMMAND cd ${CONTRIB_PATH}/src/ |
| 125 | COMMAND git checkout * |
agsantos | 5aa3965 | 2020-08-11 18:18:04 -0400 | [diff] [blame] | 126 | ) |
Aline Gondim Santos | 506a693 | 2022-08-25 18:42:32 -0300 | [diff] [blame] | 127 | if(TESTPROCESS) |
| 128 | add_custom_command( |
| 129 | TARGET ${ProjectName} |
| 130 | PRE_BUILD |
| 131 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/testPreferences.yml ${PROJECT_BINARY_DIR}/ |
| 132 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/sample.mp4 ${PROJECT_BINARY_DIR}/ |
| 133 | COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${PROJECT_BINARY_DIR}/Debug |
| 134 | COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${PROJECT_BINARY_DIR}/Debug |
| 135 | COMMAND ${CMAKE_COMMAND} -E make_directory ${PROJECT_SOURCE_DIR}/data/model |
| 136 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${PROJECT_SOURCE_DIR}/data/model |
| 137 | ) |
| 138 | else() |
| 139 | add_custom_command( |
| 140 | TARGET ${ProjectName} |
| 141 | PRE_BUILD |
| 142 | COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} |
| 143 | COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| 144 | COMMAND ${CMAKE_COMMAND} -E copy ${ONNX_DIR}/onnxruntime.dll ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| 145 | COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/data/model |
| 146 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/modelSRC/mModel.onnx ${JPL_DIRECTORY}/data/model |
| 147 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/${PREFERENCESFILENAME}.json ${JPL_DIRECTORY}/data/preferences.json |
| 148 | COMMENT "Assembling Plugin files" |
| 149 | ) |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 150 | add_custom_command( |
| 151 | TARGET ${ProjectName} |
| 152 | POST_BUILD |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 153 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
| 154 | COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 155 | COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} --extraPath=${EXTRA_PATH} |
agsantos | ac1940d | 2020-09-17 10:18:40 -0400 | [diff] [blame] | 156 | COMMENT "Generating JPL archive" |
| 157 | ) |
agsantos | 796b5af | 2020-12-22 19:38:27 -0500 | [diff] [blame] | 158 | endif() |