mirror of
https://github.com/opencv/opencv.git
synced 2024-11-30 14:29:49 +08:00
238 lines
7.5 KiB
CMake
238 lines
7.5 KiB
CMake
# FIXME: Rework standalone build in more generic maner
|
|
# (Restructure directories, add common pass, etc)
|
|
if(NOT DEFINED OPENCV_INITIAL_PASS)
|
|
cmake_minimum_required(VERSION 3.3)
|
|
project(gapi_standalone)
|
|
include("cmake/standalone.cmake")
|
|
return()
|
|
endif()
|
|
|
|
if(NOT TARGET ade)
|
|
# can't build G-API because of the above reasons
|
|
ocv_module_disable(gapi)
|
|
return()
|
|
endif()
|
|
|
|
if(INF_ENGINE_TARGET)
|
|
ocv_option(OPENCV_GAPI_INF_ENGINE "Build GraphAPI module with Inference Engine support" ON)
|
|
endif()
|
|
|
|
set(the_description "OpenCV G-API Core Module")
|
|
|
|
ocv_add_module(gapi
|
|
REQUIRED
|
|
opencv_imgproc
|
|
OPTIONAL
|
|
opencv_video
|
|
WRAP
|
|
python
|
|
)
|
|
|
|
if(MSVC)
|
|
# Disable obsollete warning C4503 popping up on MSVC <<2017
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4503?view=vs-2019
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4503)
|
|
if (OPENCV_GAPI_INF_ENGINE AND NOT INF_ENGINE_RELEASE VERSION_GREATER "2021000000")
|
|
# Disable IE deprecated code warning C4996 for releases < 2021.1
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4996)
|
|
endif()
|
|
endif()
|
|
|
|
file(GLOB gapi_ext_hdrs
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/*.h"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/cpu/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/fluid/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/gpu/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/infer/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/ocl/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/own/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/render/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/s11n/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/streaming/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/plaidml/*.hpp"
|
|
"${CMAKE_CURRENT_LIST_DIR}/include/opencv2/${name}/util/*.hpp"
|
|
)
|
|
|
|
set(gapi_srcs
|
|
# Front-end part
|
|
src/api/grunarg.cpp
|
|
src/api/gorigin.cpp
|
|
src/api/gmat.cpp
|
|
src/api/garray.cpp
|
|
src/api/gopaque.cpp
|
|
src/api/gscalar.cpp
|
|
src/api/gframe.cpp
|
|
src/api/gkernel.cpp
|
|
src/api/gbackend.cpp
|
|
src/api/gproto.cpp
|
|
src/api/gnode.cpp
|
|
src/api/gcall.cpp
|
|
src/api/gcomputation.cpp
|
|
src/api/operators.cpp
|
|
src/api/kernels_core.cpp
|
|
src/api/kernels_imgproc.cpp
|
|
src/api/kernels_video.cpp
|
|
src/api/kernels_nnparsers.cpp
|
|
src/api/kernels_streaming.cpp
|
|
src/api/render.cpp
|
|
src/api/render_ocv.cpp
|
|
src/api/ginfer.cpp
|
|
src/api/media.cpp
|
|
src/api/rmat.cpp
|
|
|
|
# Compiler part
|
|
src/compiler/gmodel.cpp
|
|
src/compiler/gmodelbuilder.cpp
|
|
src/compiler/gislandmodel.cpp
|
|
src/compiler/gcompiler.cpp
|
|
src/compiler/gcompiled.cpp
|
|
src/compiler/gstreaming.cpp
|
|
src/compiler/passes/helpers.cpp
|
|
src/compiler/passes/dump_dot.cpp
|
|
src/compiler/passes/islands.cpp
|
|
src/compiler/passes/meta.cpp
|
|
src/compiler/passes/kernels.cpp
|
|
src/compiler/passes/exec.cpp
|
|
src/compiler/passes/transformations.cpp
|
|
src/compiler/passes/pattern_matching.cpp
|
|
src/compiler/passes/perform_substitution.cpp
|
|
src/compiler/passes/streaming.cpp
|
|
src/compiler/passes/intrin.cpp
|
|
|
|
# Executor
|
|
src/executor/gexecutor.cpp
|
|
src/executor/gtbbexecutor.cpp
|
|
src/executor/gstreamingexecutor.cpp
|
|
src/executor/gasync.cpp
|
|
|
|
# CPU Backend (currently built-in)
|
|
src/backends/cpu/gcpubackend.cpp
|
|
src/backends/cpu/gcpukernel.cpp
|
|
src/backends/cpu/gcpuimgproc.cpp
|
|
src/backends/cpu/gcpuvideo.cpp
|
|
src/backends/cpu/gcpucore.cpp
|
|
src/backends/cpu/gnnparsers.cpp
|
|
|
|
# Fluid Backend (also built-in, FIXME:move away)
|
|
src/backends/fluid/gfluidbuffer.cpp
|
|
src/backends/fluid/gfluidbackend.cpp
|
|
src/backends/fluid/gfluidimgproc.cpp
|
|
src/backends/fluid/gfluidimgproc_func.dispatch.cpp
|
|
src/backends/fluid/gfluidcore.cpp
|
|
|
|
# OCL Backend (currently built-in)
|
|
src/backends/ocl/goclbackend.cpp
|
|
src/backends/ocl/goclkernel.cpp
|
|
src/backends/ocl/goclimgproc.cpp
|
|
src/backends/ocl/goclcore.cpp
|
|
|
|
# IE Backend. FIXME: should be included by CMake
|
|
# if and only if IE support is enabled
|
|
src/backends/ie/giebackend.cpp
|
|
src/backends/ie/giebackend/giewrapper.cpp
|
|
|
|
# ONNX backend
|
|
src/backends/onnx/gonnxbackend.cpp
|
|
|
|
# Render backend
|
|
src/backends/render/grenderocv.cpp
|
|
src/backends/render/ft_render.cpp
|
|
|
|
# PlaidML Backend
|
|
src/backends/plaidml/gplaidmlcore.cpp
|
|
src/backends/plaidml/gplaidmlbackend.cpp
|
|
|
|
# Common backend code
|
|
src/backends/common/gmetabackend.cpp
|
|
src/backends/common/gcompoundbackend.cpp
|
|
src/backends/common/gcompoundkernel.cpp
|
|
|
|
# Serialization API and routines
|
|
src/api/s11n.cpp
|
|
src/backends/common/serialization.cpp
|
|
|
|
# Streaming backend
|
|
src/backends/streaming/gstreamingbackend.cpp
|
|
|
|
# Python bridge
|
|
src/backends/ie/bindings_ie.cpp
|
|
)
|
|
|
|
ocv_add_dispatched_file(backends/fluid/gfluidimgproc_func SSE4_1 AVX2)
|
|
|
|
ocv_list_add_prefix(gapi_srcs "${CMAKE_CURRENT_LIST_DIR}/")
|
|
|
|
# For IDE users
|
|
ocv_source_group("Src" FILES ${gapi_srcs})
|
|
ocv_source_group("Include" FILES ${gapi_ext_hdrs})
|
|
|
|
ocv_set_module_sources(HEADERS ${gapi_ext_hdrs} SOURCES ${gapi_srcs})
|
|
ocv_module_include_directories("${CMAKE_CURRENT_LIST_DIR}/src")
|
|
|
|
ocv_create_module()
|
|
|
|
ocv_target_link_libraries(${the_module} PRIVATE ade)
|
|
if(OPENCV_GAPI_INF_ENGINE)
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${INF_ENGINE_TARGET})
|
|
endif()
|
|
if(HAVE_TBB)
|
|
ocv_target_link_libraries(${the_module} PRIVATE tbb)
|
|
endif()
|
|
|
|
set(__test_extra_deps "")
|
|
if(OPENCV_GAPI_INF_ENGINE)
|
|
list(APPEND __test_extra_deps ${INF_ENGINE_TARGET})
|
|
endif()
|
|
ocv_add_accuracy_tests(${__test_extra_deps})
|
|
|
|
# FIXME: test binary is linked with ADE directly since ADE symbols
|
|
# are not exported from libopencv_gapi.so in any form - thus
|
|
# there're two copies of ADE code in memory when tests run (!)
|
|
# src/ is specified to include dirs for INTERNAL tests only.
|
|
if(TARGET opencv_test_gapi)
|
|
target_include_directories(opencv_test_gapi PRIVATE "${CMAKE_CURRENT_LIST_DIR}/src")
|
|
target_link_libraries(opencv_test_gapi PRIVATE ade)
|
|
endif()
|
|
|
|
if(HAVE_TBB AND TARGET opencv_test_gapi)
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE tbb)
|
|
endif()
|
|
|
|
if(HAVE_FREETYPE)
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_FREETYPE)
|
|
if(TARGET opencv_test_gapi)
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_FREETYPE)
|
|
endif()
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${FREETYPE_LIBRARIES})
|
|
ocv_target_include_directories(${the_module} PRIVATE ${FREETYPE_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
if(HAVE_PLAIDML)
|
|
ocv_target_compile_definitions(${the_module} PRIVATE -DHAVE_PLAIDML)
|
|
if(TARGET opencv_test_gapi)
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE -DHAVE_PLAIDML)
|
|
endif()
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${PLAIDML_LIBRARIES})
|
|
ocv_target_include_directories(${the_module} SYSTEM PRIVATE ${PLAIDML_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
|
|
if(WIN32)
|
|
# Required for htonl/ntohl on Windows
|
|
ocv_target_link_libraries(${the_module} PRIVATE wsock32 ws2_32)
|
|
endif()
|
|
|
|
if(HAVE_ONNX)
|
|
ocv_target_link_libraries(${the_module} PRIVATE ${ONNX_LIBRARY})
|
|
ocv_target_compile_definitions(${the_module} PRIVATE HAVE_ONNX=1)
|
|
if(TARGET opencv_test_gapi)
|
|
ocv_target_compile_definitions(opencv_test_gapi PRIVATE HAVE_ONNX=1)
|
|
ocv_target_link_libraries(opencv_test_gapi PRIVATE ${ONNX_LIBRARY})
|
|
endif()
|
|
endif()
|
|
|
|
ocv_add_perf_tests()
|
|
ocv_add_samples()
|