CMakeLists.txt 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451
  1. # FIXME: Rework standalone build in more generic maner
  2. # (Restructure directories, add common pass, etc)
  3. if(NOT DEFINED OPENCV_INITIAL_PASS)
  4. cmake_minimum_required(VERSION 3.3)
  5. project(gapi_standalone)
  6. include("cmake/standalone.cmake")
  7. return()
  8. endif()
  9. if(NOT TARGET ade)
  10. # can't build G-API because of the above reasons
  11. ocv_module_disable(gapi)
  12. return()
  13. endif()
  14. if(TARGET ocv.3rdparty.openvino)
  15. # TODO: remove OPENCV_GAPI_INF_ENGINE option
  16. set(initial_value ON)
  17. if(DEFINED OPENCV_GAPI_INF_ENGINE)
  18. set(initial_value ${OPENCV_GAPI_INF_ENGINE})
  19. message(WARNING "OPENCV_GAPI_INF_ENGINE option is deprecated. Use OPENCV_GAPI_WITH_OPENVINO option instead.")
  20. endif()
  21. ocv_option(OPENCV_GAPI_WITH_OPENVINO "G-API: Enable OpenVINO Toolkit support" ${initial_value})
  22. endif()
  23. set(the_description "OpenCV G-API Core Module")
  24. ocv_add_module(gapi
  25. REQUIRED
  26. opencv_imgproc
  27. OPTIONAL
  28. opencv_video opencv_calib3d
  29. WRAP
  30. python
  31. )
  32. if(MSVC)
  33. if(MSVC_VERSION LESS 1910)
  34. # Disable obsolete warning C4503 popping up on MSVC << 15 2017
  35. # https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503?view=vs-2019
  36. # and IE deprecated code warning C4996
  37. ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4503 /wd4996)
  38. endif()
  39. ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4702) # MSVS 2015/2017/2019 on x86 and ARM
  40. endif()
  41. file(GLOB gapi_ext_hdrs
  42. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp"
  43. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp"
  44. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h"
  45. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/cpu/*.hpp"
  46. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/fluid/*.hpp"
  47. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/gpu/*.hpp"
  48. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/infer/*.hpp"
  49. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/oak/*.hpp"
  50. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/ocl/*.hpp"
  51. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/own/*.hpp"
  52. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/plaidml/*.hpp"
  53. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/python/*.hpp"
  54. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/render/*.hpp"
  55. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/s11n/*.hpp"
  56. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/*.hpp"
  57. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/gstreamer/*.hpp"
  58. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/onevpl/*.hpp"
  59. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/plaidml/*.hpp"
  60. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/util/*.hpp"
  61. "${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/pysrc/*.hpp"
  62. )
  63. set(gapi_srcs
  64. # Front-end part
  65. src/api/grunarg.cpp
  66. src/api/gorigin.cpp
  67. src/api/gmat.cpp
  68. src/api/garray.cpp
  69. src/api/gopaque.cpp
  70. src/api/gscalar.cpp
  71. src/api/gframe.cpp
  72. src/api/gkernel.cpp
  73. src/api/gbackend.cpp
  74. src/api/gcommon.cpp
  75. src/api/gproto.cpp
  76. src/api/gnode.cpp
  77. src/api/gcall.cpp
  78. src/api/gcomputation.cpp
  79. src/api/operators.cpp
  80. src/api/kernels_core.cpp
  81. src/api/kernels_imgproc.cpp
  82. src/api/kernels_video.cpp
  83. src/api/kernels_nnparsers.cpp
  84. src/api/kernels_ot.cpp
  85. src/api/kernels_streaming.cpp
  86. src/api/kernels_stereo.cpp
  87. src/api/render.cpp
  88. src/api/render_ocv.cpp
  89. src/api/ginfer.cpp
  90. src/api/media.cpp
  91. src/api/rmat.cpp
  92. # Compiler part
  93. src/compiler/gmodel.cpp
  94. src/compiler/gmodelbuilder.cpp
  95. src/compiler/gislandmodel.cpp
  96. src/compiler/gcompiler.cpp
  97. src/compiler/gcompiled.cpp
  98. src/compiler/gstreaming.cpp
  99. src/compiler/passes/helpers.cpp
  100. src/compiler/passes/dump_dot.cpp
  101. src/compiler/passes/islands.cpp
  102. src/compiler/passes/meta.cpp
  103. src/compiler/passes/kernels.cpp
  104. src/compiler/passes/exec.cpp
  105. src/compiler/passes/transformations.cpp
  106. src/compiler/passes/pattern_matching.cpp
  107. src/compiler/passes/perform_substitution.cpp
  108. src/compiler/passes/streaming.cpp
  109. src/compiler/passes/intrin.cpp
  110. # Executor
  111. src/executor/gabstractexecutor.cpp
  112. src/executor/gabstractstreamingexecutor.cpp
  113. src/executor/gexecutor.cpp
  114. src/executor/gtbbexecutor.cpp
  115. src/executor/gthreadedexecutor.cpp
  116. src/executor/gstreamingexecutor.cpp
  117. src/executor/gasync.cpp
  118. src/executor/thread_pool.cpp
  119. # CPU Backend (currently built-in)
  120. src/backends/cpu/gcpubackend.cpp
  121. src/backends/cpu/gcpukernel.cpp
  122. src/backends/cpu/gcpuimgproc.cpp
  123. src/backends/cpu/gcpustereo.cpp
  124. src/backends/cpu/gcpuvideo.cpp
  125. src/backends/cpu/gcpucore.cpp
  126. src/backends/cpu/gcpuot.cpp
  127. src/backends/cpu/gnnparsers.cpp
  128. # Fluid Backend (also built-in, FIXME:move away)
  129. src/backends/fluid/gfluidbuffer.cpp
  130. src/backends/fluid/gfluidbackend.cpp
  131. src/backends/fluid/gfluidimgproc.cpp
  132. src/backends/fluid/gfluidimgproc_func.dispatch.cpp
  133. src/backends/fluid/gfluidcore.cpp
  134. src/backends/fluid/gfluidcore_func.dispatch.cpp
  135. # OAK Backend (optional)
  136. src/backends/oak/goak.cpp
  137. src/backends/oak/goakbackend.cpp
  138. src/backends/oak/goak_memory_adapters.cpp
  139. # OCL Backend (currently built-in)
  140. src/backends/ocl/goclbackend.cpp
  141. src/backends/ocl/goclkernel.cpp
  142. src/backends/ocl/goclimgproc.cpp
  143. src/backends/ocl/goclcore.cpp
  144. # IE Backend. FIXME: should be included by CMake
  145. # if and only if IE support is enabled
  146. src/backends/ie/giebackend.cpp
  147. src/backends/ie/giebackend/giewrapper.cpp
  148. # OV Backend. FIXME: should be included by CMake
  149. # if and only if OV support is enabled
  150. src/backends/ov/govbackend.cpp
  151. # ONNX backend
  152. src/backends/onnx/gonnxbackend.cpp
  153. src/backends/onnx/dml_ep.cpp
  154. src/backends/onnx/coreml_ep.cpp
  155. # Render backend
  156. src/backends/render/grenderocv.cpp
  157. src/backends/render/ft_render.cpp
  158. # PlaidML Backend
  159. src/backends/plaidml/gplaidmlcore.cpp
  160. src/backends/plaidml/gplaidmlbackend.cpp
  161. # Common backend code
  162. src/backends/common/gmetabackend.cpp
  163. src/backends/common/gcompoundbackend.cpp
  164. src/backends/common/gcompoundkernel.cpp
  165. # Serialization API and routines
  166. src/api/s11n.cpp
  167. src/backends/common/serialization.cpp
  168. # Streaming backend
  169. src/backends/streaming/gstreamingbackend.cpp
  170. # Python bridge
  171. src/backends/ie/bindings_ie.cpp
  172. src/backends/onnx/bindings_onnx.cpp
  173. src/backends/ov/bindings_ov.cpp
  174. src/backends/python/gpythonbackend.cpp
  175. # Queue Streaming source
  176. src/streaming/queue_source.cpp
  177. # OpenVPL Streaming source
  178. src/streaming/onevpl/source.cpp
  179. src/streaming/onevpl/source_priv.cpp
  180. src/streaming/onevpl/file_data_provider.cpp
  181. src/streaming/onevpl/cfg_params.cpp
  182. src/streaming/onevpl/cfg_params_parser.cpp
  183. src/streaming/onevpl/utils.cpp
  184. src/streaming/onevpl/default.cpp
  185. src/streaming/onevpl/data_provider_interface_exception.cpp
  186. src/streaming/onevpl/accelerators/surface/base_frame_adapter.cpp
  187. src/streaming/onevpl/accelerators/surface/cpu_frame_adapter.cpp
  188. src/streaming/onevpl/accelerators/surface/dx11_frame_adapter.cpp
  189. src/streaming/onevpl/accelerators/surface/surface.cpp
  190. src/streaming/onevpl/accelerators/surface/surface_pool.cpp
  191. src/streaming/onevpl/accelerators/utils/shared_lock.cpp
  192. src/streaming/onevpl/accelerators/accel_policy_cpu.cpp
  193. src/streaming/onevpl/accelerators/accel_policy_dx11.cpp
  194. src/streaming/onevpl/accelerators/accel_policy_va_api.cpp
  195. src/streaming/onevpl/accelerators/dx11_alloc_resource.cpp
  196. src/streaming/onevpl/engine/engine_session.cpp
  197. src/streaming/onevpl/engine/processing_engine_base.cpp
  198. src/streaming/onevpl/engine/decode/decode_engine_legacy.cpp
  199. src/streaming/onevpl/engine/decode/decode_session.cpp
  200. src/streaming/onevpl/engine/transcode/transcode_engine_legacy.cpp
  201. src/streaming/onevpl/engine/transcode/transcode_session.cpp
  202. src/streaming/onevpl/engine/preproc/preproc_engine.cpp
  203. src/streaming/onevpl/engine/preproc/preproc_session.cpp
  204. src/streaming/onevpl/engine/preproc/preproc_dispatcher.cpp
  205. src/streaming/onevpl/engine/preproc_engine_interface.cpp
  206. src/streaming/onevpl/demux/async_mfp_demux_data_provider.cpp
  207. src/streaming/onevpl/data_provider_dispatcher.cpp
  208. src/streaming/onevpl/cfg_param_device_selector.cpp
  209. src/streaming/onevpl/device_selector_interface.cpp
  210. # GStreamer Streaming source
  211. src/streaming/gstreamer/gstreamer_pipeline_facade.cpp
  212. src/streaming/gstreamer/gstreamerpipeline.cpp
  213. src/streaming/gstreamer/gstreamersource.cpp
  214. src/streaming/gstreamer/gstreamer_buffer_utils.cpp
  215. src/streaming/gstreamer/gstreamer_media_adapter.cpp
  216. src/streaming/gstreamer/gstreamerenv.cpp
  217. # Python Custom Stream source
  218. src/pysrc/python_stream_source.cpp
  219. # Utils (ITT tracing)
  220. src/utils/itt.cpp
  221. )
  222. file(GLOB_RECURSE gapi_3rdparty_srcs
  223. "${CMAKE_CURRENT_LIST_DIR}/src/3rdparty/vasot/src/*.cpp"
  224. )
  225. ocv_add_dispatched_file(backends/fluid/gfluidimgproc_func SSE4_1 AVX2)
  226. ocv_add_dispatched_file(backends/fluid/gfluidcore_func SSE4_1 AVX2)
  227. ocv_list_add_prefix(gapi_srcs "${CMAKE_CURRENT_LIST_DIR}/")
  228. # For IDE users
  229. ocv_source_group("Src" FILES ${gapi_srcs} ${gapi_3rdparty_srcs})
  230. ocv_source_group("Include" FILES ${gapi_ext_hdrs})
  231. ocv_set_module_sources(HEADERS ${gapi_ext_hdrs} SOURCES ${gapi_srcs} ${gapi_3rdparty_srcs})
  232. ocv_module_include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
  233. # VAS Object Tracking includes
  234. ocv_module_include_directories(${CMAKE_CURRENT_LIST_DIR}/src/3rdparty/vasot/include)
  235. ocv_create_module()
  236. ocv_target_link_libraries(${the_module} PRIVATE ade)
  237. if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
  238. ocv_target_link_libraries(${the_module} PRIVATE ocv.3rdparty.openvino)
  239. ocv_install_used_external_targets(ocv.3rdparty.openvino)
  240. endif()
  241. if(HAVE_TBB)
  242. ocv_target_link_libraries(${the_module} PRIVATE tbb)
  243. endif()
  244. # TODO: Consider support of ITT in G-API standalone mode.
  245. if(CV_TRACE AND HAVE_ITT)
  246. ocv_target_compile_definitions(${the_module} PRIVATE -DOPENCV_WITH_ITT=1)
  247. ocv_module_include_directories(${ITT_INCLUDE_DIRS})
  248. ocv_target_link_libraries(${the_module} PRIVATE ${ITT_LIBRARIES})
  249. endif()
  250. set(__test_extra_deps "")
  251. if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
  252. list(APPEND __test_extra_deps ocv.3rdparty.openvino)
  253. endif()
  254. ocv_add_accuracy_tests(${__test_extra_deps})
  255. # FIXME: test binary is linked with ADE directly since ADE symbols
  256. # are not exported from libopencv_gapi.so in any form - thus
  257. # there're two copies of ADE code in memory when tests run (!)
  258. # src/ is specified to include dirs for INTERNAL tests only.
  259. if(TARGET opencv_test_gapi)
  260. target_include_directories(opencv_test_gapi PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
  261. target_link_libraries(opencv_test_gapi PRIVATE ade)
  262. endif()
  263. if(HAVE_TBB AND TARGET opencv_test_gapi)
  264. ocv_target_link_libraries(opencv_test_gapi PRIVATE tbb)
  265. endif()
  266. if(HAVE_FREETYPE)
  267. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_FREETYPE)
  268. if(TARGET opencv_test_gapi)
  269. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_FREETYPE)
  270. endif()
  271. ocv_target_link_libraries(${the_module} PRIVATE ${FREETYPE_LIBRARIES})
  272. ocv_target_include_directories(${the_module} PRIVATE ${FREETYPE_INCLUDE_DIRS})
  273. endif()
  274. if(HAVE_OAK)
  275. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_OAK)
  276. if(TARGET opencv_test_gapi)
  277. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_OAK)
  278. endif()
  279. ocv_target_link_libraries(${the_module} PRIVATE depthai::core)
  280. endif()
  281. if(HAVE_PLAIDML)
  282. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_PLAIDML)
  283. if(TARGET opencv_test_gapi)
  284. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_PLAIDML)
  285. endif()
  286. ocv_target_link_libraries(${the_module} PRIVATE ${PLAIDML_LIBRARIES})
  287. ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${PLAIDML_INCLUDE_DIRS})
  288. endif()
  289. if(HAVE_GAPI_ONEVPL)
  290. if(TARGET opencv_test_gapi)
  291. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_ONEVPL)
  292. ocv_target_link_libraries(opencv_test_gapi PRIVATE ${VPL_IMPORTED_TARGETS})
  293. if(MSVC)
  294. target_compile_options(opencv_test_gapi PUBLIC "/wd4201")
  295. endif()
  296. if(HAVE_D3D11 AND HAVE_OPENCL)
  297. ocv_target_include_directories(opencv_test_gapi SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
  298. endif()
  299. endif()
  300. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_ONEVPL)
  301. ocv_target_link_libraries(${the_module} PRIVATE ${VPL_IMPORTED_TARGETS})
  302. if(HAVE_DIRECTX AND HAVE_D3D11)
  303. ocv_target_link_libraries(${the_module} PRIVATE d3d11 dxgi)
  304. endif()
  305. if(WIN32)
  306. ocv_target_link_libraries(${the_module} PRIVATE mf mfuuid mfplat shlwapi mfreadwrite)
  307. endif()
  308. if(HAVE_D3D11 AND HAVE_OPENCL)
  309. ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
  310. endif()
  311. if(UNIX AND HAVE_VA)
  312. ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${VA_INCLUDE_DIR})
  313. ocv_target_link_libraries(${the_module} PRIVATE ${VA_LIBRARIES})
  314. if(TARGET opencv_test_gapi)
  315. ocv_target_include_directories(opencv_test_gapi SYSTEM PRIVATE ${VA_INCLUDE_DIR})
  316. ocv_target_link_libraries(opencv_test_gapi PRIVATE ${VA_LIBRARIES})
  317. endif()
  318. endif()
  319. endif()
  320. ocv_option(OPENCV_GAPI_GSTREAMER "Build G-API with GStreamer support" HAVE_GSTREAMER)
  321. if(HAVE_GSTREAMER AND OPENCV_GAPI_GSTREAMER)
  322. if(TARGET opencv_test_gapi)
  323. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_GSTREAMER)
  324. ocv_target_link_libraries(opencv_test_gapi PRIVATE ocv.3rdparty.gstreamer)
  325. endif()
  326. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_GSTREAMER)
  327. ocv_target_link_libraries(${the_module} PRIVATE ocv.3rdparty.gstreamer)
  328. endif()
  329. if(WIN32)
  330. # Required for htonl/ntohl on Windows
  331. ocv_target_link_libraries(${the_module} PRIVATE wsock32 ws2_32)
  332. endif()
  333. ocv_option(OPENCV_GAPI_MSMF "Build G-API with MS Media Foundation support" HAVE_MSMF)
  334. if(HAVE_MSMF AND OPENCV_GAPI_MSMF)
  335. if(TARGET opencv_test_gapi)
  336. ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_GAPI_MSMF)
  337. endif()
  338. ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_GAPI_MSMF)
  339. ocv_target_link_libraries(${the_module} PRIVATE ocv.3rdparty.msmf)
  340. endif()
  341. if(HAVE_DIRECTML)
  342. ocv_target_compile_definitions(${the_module} PRIVATE HAVE_DIRECTML=1)
  343. endif()
  344. if(HAVE_ONNX)
  345. ocv_target_link_libraries(${the_module} PRIVATE ${ONNX_LIBRARY})
  346. ocv_target_compile_definitions(${the_module} PRIVATE HAVE_ONNX=1)
  347. if(HAVE_ONNX_DML)
  348. ocv_target_compile_definitions(${the_module} PRIVATE HAVE_ONNX_DML=1)
  349. endif()
  350. if(TARGET opencv_test_gapi)
  351. ocv_target_compile_definitions(opencv_test_gapi PRIVATE HAVE_ONNX=1)
  352. ocv_target_link_libraries(opencv_test_gapi PRIVATE ${ONNX_LIBRARY})
  353. endif()
  354. endif()
  355. ocv_install_3rdparty_licenses(vasot "${CMAKE_CURRENT_SOURCE_DIR}/src/3rdparty/vasot/LICENSE.txt")
  356. ocv_add_perf_tests()
  357. ocv_add_samples()
  358. # Required for sample with inference on host
  359. if(TARGET example_gapi_onevpl_infer_with_advanced_device_selection)
  360. if(TARGET ocv.3rdparty.openvino AND OPENCV_GAPI_WITH_OPENVINO)
  361. ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE ocv.3rdparty.openvino)
  362. endif()
  363. if(HAVE_DIRECTX AND HAVE_D3D11)
  364. ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE d3d11 dxgi)
  365. endif()
  366. if(HAVE_D3D11 AND HAVE_OPENCL)
  367. ocv_target_include_directories(example_gapi_onevpl_infer_with_advanced_device_selection SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
  368. endif()
  369. if(UNIX AND HAVE_VA)
  370. message(STATUS "GAPI VPL samples with VAAPI")
  371. ocv_target_include_directories(example_gapi_onevpl_infer_with_advanced_device_selection SYSTEM PRIVATE ${VA_INCLUDE_DIR})
  372. ocv_target_link_libraries(example_gapi_onevpl_infer_with_advanced_device_selection PRIVATE ${VA_LIBRARIES})
  373. endif()
  374. endif()
  375. if(TARGET example_gapi_pipeline_modeling_tool)
  376. if(WIN32)
  377. ocv_target_link_libraries(example_gapi_pipeline_modeling_tool winmm.lib)
  378. endif()
  379. endif()
  380. # perf test dependencies postprocessing
  381. if(HAVE_GAPI_ONEVPL)
  382. # NB: TARGET opencv_perf_gapi doesn't exist before `ocv_add_perf_tests`
  383. # src/ is specified to include dirs for INTERNAL tests only.
  384. if(TARGET opencv_perf_gapi)
  385. target_include_directories(opencv_perf_gapi PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
  386. ocv_target_compile_definitions(opencv_perf_gapi PRIVATE -DHAVE_ONEVPL)
  387. ocv_target_link_libraries(opencv_perf_gapi PRIVATE ${VPL_IMPORTED_TARGETS})
  388. if(HAVE_D3D11 AND HAVE_OPENCL)
  389. ocv_target_include_directories(opencv_perf_gapi SYSTEM PRIVATE ${OPENCL_INCLUDE_DIRS})
  390. endif()
  391. endif()
  392. endif()