mirror of
https://github.com/opencv/opencv.git
synced 2024-12-15 18:09:11 +08:00
3d9cb5329c
Add experimental support for Apple VisionOS platform #24136 ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch This is dependent on cmake support for VisionOs which is currently in progress. Creating PR now to test that there are no regressions in iOS and macOS builds
198 lines
6.3 KiB
CMake
198 lines
6.3 KiB
CMake
set(the_description "Image I/O")
|
|
ocv_add_module(imgcodecs opencv_imgproc WRAP java objc python)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# CMake file for imgcodecs. See root CMakeLists.txt
|
|
# Some parts taken from version of Hartmut Seichter, HIT Lab NZ.
|
|
# Jose Luis Blanco, 2008
|
|
# ----------------------------------------------------------------------------
|
|
|
|
ocv_clear_vars(GRFMT_LIBS)
|
|
|
|
if(HAVE_WINRT_CX AND NOT WINRT)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /ZW")
|
|
endif()
|
|
|
|
if (HAVE_AVIF)
|
|
ocv_include_directories(${AVIF_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${AVIF_LIBRARY})
|
|
endif()
|
|
|
|
if(HAVE_JPEG)
|
|
ocv_include_directories(${JPEG_INCLUDE_DIR} ${${JPEG_LIBRARY}_BINARY_DIR})
|
|
list(APPEND GRFMT_LIBS ${JPEG_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_WEBP)
|
|
add_definitions(-DHAVE_WEBP)
|
|
ocv_include_directories(${WEBP_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${WEBP_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_SPNG)
|
|
add_definitions(${SPNG_DEFINITIONS})
|
|
ocv_include_directories(${SPNG_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${SPNG_LIBRARY})
|
|
endif()
|
|
|
|
if(HAVE_PNG)
|
|
add_definitions(${PNG_DEFINITIONS})
|
|
ocv_include_directories(${PNG_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${PNG_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_GDCM)
|
|
ocv_include_directories(${GDCM_INCLUDE_DIRS})
|
|
list(APPEND GRFMT_LIBS ${GDCM_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_TIFF)
|
|
ocv_include_directories(${TIFF_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${TIFF_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_OPENJPEG)
|
|
ocv_include_directories(${OPENJPEG_INCLUDE_DIRS})
|
|
list(APPEND GRFMT_LIBS ${OPENJPEG_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_JASPER)
|
|
ocv_include_directories(${JASPER_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${JASPER_LIBRARIES})
|
|
if(OPENCV_IO_FORCE_JASPER)
|
|
add_definitions(-DOPENCV_IMGCODECS_FORCE_JASPER=1)
|
|
else()
|
|
message(STATUS "imgcodecs: Jasper codec is disabled in runtime. Details: https://github.com/opencv/opencv/issues/14058")
|
|
endif()
|
|
endif()
|
|
|
|
if(HAVE_OPENEXR)
|
|
include_directories(SYSTEM ${OPENEXR_INCLUDE_PATHS})
|
|
list(APPEND GRFMT_LIBS ${OPENEXR_LIBRARIES})
|
|
if(OPENCV_IO_FORCE_OPENEXR
|
|
OR NOT BUILD_OPENEXR # external OpenEXR versions are not disabled
|
|
)
|
|
add_definitions(-DOPENCV_IMGCODECS_USE_OPENEXR=1)
|
|
else()
|
|
message(STATUS "imgcodecs: OpenEXR codec is disabled in runtime. Details: https://github.com/opencv/opencv/issues/21326")
|
|
endif()
|
|
endif()
|
|
|
|
if(HAVE_PNG OR HAVE_TIFF OR HAVE_OPENEXR OR HAVE_SPNG)
|
|
ocv_include_directories(${ZLIB_INCLUDE_DIRS})
|
|
list(APPEND GRFMT_LIBS ${ZLIB_LIBRARIES})
|
|
endif()
|
|
|
|
if(HAVE_GDAL)
|
|
include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
|
|
list(APPEND GRFMT_LIBS ${GDAL_LIBRARY})
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_HDR)
|
|
add_definitions(-DHAVE_IMGCODEC_HDR)
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_SUNRASTER)
|
|
add_definitions(-DHAVE_IMGCODEC_SUNRASTER)
|
|
endif()
|
|
|
|
if(HAVE_IMGCODEC_PXM)
|
|
add_definitions(-DHAVE_IMGCODEC_PXM)
|
|
endif()
|
|
|
|
if (HAVE_IMGCODEC_PFM)
|
|
add_definitions(-DHAVE_IMGCODEC_PFM)
|
|
endif()
|
|
|
|
file(GLOB grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.hpp)
|
|
file(GLOB grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/grfmt*.cpp)
|
|
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/bitstrm.cpp)
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/rgbe.cpp)
|
|
list(APPEND grfmt_hdrs ${CMAKE_CURRENT_LIST_DIR}/src/exif.hpp)
|
|
list(APPEND grfmt_srcs ${CMAKE_CURRENT_LIST_DIR}/src/exif.cpp)
|
|
|
|
source_group("Src\\grfmts" FILES ${grfmt_hdrs} ${grfmt_srcs})
|
|
|
|
set(imgcodecs_hdrs
|
|
${CMAKE_CURRENT_LIST_DIR}/src/precomp.hpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.hpp
|
|
)
|
|
|
|
set(imgcodecs_srcs
|
|
${CMAKE_CURRENT_LIST_DIR}/src/loadsave.cpp
|
|
${CMAKE_CURRENT_LIST_DIR}/src/utils.cpp
|
|
)
|
|
|
|
file(GLOB imgcodecs_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}/legacy/*.h"
|
|
)
|
|
|
|
if(APPLE OR APPLE_FRAMEWORK)
|
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.h)
|
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/apple_conversions.mm)
|
|
endif()
|
|
if(IOS OR XROS)
|
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/ios_conversions.mm)
|
|
list(APPEND IMGCODECS_LIBRARIES "-framework UIKit")
|
|
endif()
|
|
if(APPLE AND (NOT IOS) AND (NOT XROS))
|
|
list(APPEND imgcodecs_srcs ${CMAKE_CURRENT_LIST_DIR}/src/macosx_conversions.mm)
|
|
list(APPEND IMGCODECS_LIBRARIES "-framework AppKit")
|
|
endif()
|
|
if(APPLE_FRAMEWORK)
|
|
list(APPEND IMGCODECS_LIBRARIES "-framework Accelerate" "-framework CoreGraphics" "-framework QuartzCore")
|
|
endif()
|
|
|
|
if(TRUE)
|
|
# these variables are set by 'ocv_append_build_options(IMGCODECS ...)'
|
|
foreach(P ${IMGCODECS_INCLUDE_DIRS})
|
|
ocv_include_directories(${P})
|
|
endforeach()
|
|
|
|
foreach(P ${IMGCODECS_LIBRARY_DIRS})
|
|
link_directories(${P})
|
|
endforeach()
|
|
endif()
|
|
|
|
source_group("Src" FILES ${imgcodecs_srcs} ${imgcodecs_hdrs})
|
|
source_group("Include" FILES ${imgcodecs_ext_hdrs})
|
|
ocv_set_module_sources(HEADERS ${imgcodecs_ext_hdrs} SOURCES ${imgcodecs_srcs} ${imgcodecs_hdrs} ${grfmt_srcs} ${grfmt_hdrs})
|
|
ocv_module_include_directories()
|
|
|
|
ocv_create_module(${GRFMT_LIBS} ${IMGCODECS_LIBRARIES})
|
|
|
|
macro(ocv_imgcodecs_configure_target)
|
|
if(APPLE)
|
|
add_apple_compiler_options(${the_module})
|
|
endif()
|
|
|
|
if(MSVC AND NOT BUILD_SHARED_LIBS AND BUILD_WITH_STATIC_CRT)
|
|
set_target_properties(${the_module} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /NODEFAULTLIB:libcmt.lib /DEBUG")
|
|
endif()
|
|
|
|
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wno-deprecated-declarations)
|
|
endmacro()
|
|
|
|
if(NOT BUILD_opencv_world)
|
|
ocv_imgcodecs_configure_target()
|
|
endif()
|
|
|
|
ocv_add_accuracy_tests()
|
|
if(TARGET opencv_test_imgcodecs AND HAVE_JASPER AND "$ENV{OPENCV_IO_ENABLE_JASPER}")
|
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_ENABLE_JASPER_TESTS=1)
|
|
endif()
|
|
if(TARGET opencv_test_imgcodecs AND HAVE_OPENEXR AND "$ENV{OPENCV_IO_ENABLE_OPENEXR}")
|
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_ENABLE_OPENEXR_TESTS=1)
|
|
endif()
|
|
if(TARGET opencv_test_imgcodecs AND ((HAVE_PNG AND NOT (PNG_VERSION VERSION_LESS "1.6.31")) OR HAVE_SPNG))
|
|
# details: https://github.com/glennrp/libpng/commit/68cb0aaee3de6371b81a4613476d9b33e43e95b1
|
|
ocv_target_compile_definitions(opencv_test_imgcodecs PRIVATE OPENCV_IMGCODECS_PNG_WITH_EXIF=1)
|
|
endif()
|
|
ocv_add_perf_tests()
|