@ -10,26 +10,70 @@ package("opencv")
add_versions ( " 4.2.0 " , " 9ccb2192d7e8c03c58fee07051364d94ed7599363f3b0dce1c5e6cc11c1bb0ec " )
add_versions ( " 3.4.9 " , " b7ea364de7273cfb3b771a0d9c111b8b8dfb42ff2bcd2d84681902fb8f49892a " )
add_deps ( " cmake " , " python 3.x " , { kind = " binary " } )
add_deps ( " zlib " )
add_resources ( " 4.5.2 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.5.2.tar.gz " , " 9f52fd3114ac464cb4c9a2a6a485c729a223afb57b9c24848484e55cef0b5c2a " )
add_resources ( " 4.5.1 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.5.1.tar.gz " , " 12c3b1ddd0b8c1a7da5b743590a288df0934e5cef243e036ca290c2e45e425f5 " )
add_resources ( " 4.2.0 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.2.0.tar.gz " , " 8a6b5661611d89baa59a26eb7ccf4abb3e55d73f99bb52d8f7c32265c8a43020 " )
add_resources ( " 3.4.9 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/3.4.9.tar.gz " , " dc7d95be6aaccd72490243efcec31e2c7d3f21125f88286186862cf9edb14a57 " )
add_configs ( " bundled " , { description = " Build 3rd-party libraries with OpenCV. " , default = true , type = " boolean " } )
add_deps ( " cmake " , " python 3.x " )
local features = { " 1394 " ,
" vtk " ,
" eigen " ,
" ffmpeg " ,
" gstreamer " ,
" gtk " ,
" ipp " ,
" halide " ,
" vulkan " ,
" jasper " ,
" openjpeg " ,
" jpeg " ,
" webp " ,
" openexr " ,
" opengl " ,
" png " ,
" tbb " ,
" tiff " ,
" itt " ,
" protobuf " ,
" quirc " }
local default_features = { " 1394 " , " eigen " , " ffmpeg " , " jpeg " , " opengl " , " png " , " protobuf " , " quirc " , " webp " , " tiff " }
local function opencv_is_default ( feature )
for _ , df in ipairs ( default_features ) do
if feature == df then
return true
end
end
return false
end
for _ , feature in ipairs ( features ) do
add_configs ( feature , { description = " Include " .. feature .. " support. " , default = opencv_is_default ( feature ) , type = " boolean " } )
end
add_configs ( " blas " , { description = " Set BLAS vendor. " , default = nil , type = " string " , values = { " mkl " , " openblas " } } )
add_configs ( " cuda " , { description = " Enable CUDA support. " , default = false , type = " boolean " } )
if is_plat ( " macosx " ) then
add_frameworks ( " Foundation " , " CoreFoundation " , " CoreGraphics " , " AppKit " , " OpenCL " )
elseif is_plat ( " linux " ) then
add_syslinks ( " pthread " , " dl " )
elseif is_plat ( " windows " ) then
add_syslinks ( " gdi32 " , " user32 " , " advapi32 " , " comdlg32 " )
add_syslinks ( " gdi32 " , " user32 " , " glu32 " , " opengl32 " , " advapi32" , " comdlg32 " )
end
add_resources ( " 4.5.2 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.5.2.tar.gz " , " 9f52fd3114ac464cb4c9a2a6a485c729a223afb57b9c24848484e55cef0b5c2a " )
add_resources ( " 4.5.1 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.5.1.tar.gz " , " 12c3b1ddd0b8c1a7da5b743590a288df0934e5cef243e036ca290c2e45e425f5 " )
add_resources ( " 4.2.0 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/4.2.0.tar.gz " , " 8a6b5661611d89baa59a26eb7ccf4abb3e55d73f99bb52d8f7c32265c8a43020 " )
add_resources ( " 3.4.9 " , " opencv_contrib " , " https://github.com/opencv/opencv_contrib/archive/3.4.9.tar.gz " , " dc7d95be6aaccd72490243efcec31e2c7d3f21125f88286186862cf9edb14a57 " )
on_load ( " linux " , " macosx " , function ( package )
if package : version ( ) : ge ( " 4.0 " ) then
package : add ( " includedirs " , " include/opencv4 " )
end
if package : config ( " blas " ) then
package : add ( " deps " , package : config ( " blas " ) )
end
if package : config ( " cuda " ) then
package : add ( " deps " , " cuda " , { system = true , configs = { utils = { " cudnn " , " cufft " , " cublas " } } } )
end
end )
on_load ( " windows " , function ( package )
@ -42,44 +86,33 @@ package("opencv")
elseif vs == " 2019 " then vc_ver = " vc16 "
end
package : add ( " linkdirs " , path.join ( arch , vc_ver , linkdir ) )
package : addenv ( " PATH " , path.join ( arch , vc_ver , " bin " ) )
end )
on_install ( " linux " , " macosx " , " windows " , function ( package )
io.replace ( " cmake/OpenCVUtils.cmake " , " if(PKG_CONFIG_FOUND OR PkgConfig_FOUND) " , " if(NOT WIN32 AND (PKG_CONFIG_FOUND OR PkgConfig_FOUND)) " , { plain = true } )
local configs = { " -DCMAKE_OSX_DEPLOYMENT_TARGET= " ,
" -DBUILD_JASPER=OFF " ,
" -DBUILD_JPEG=ON " ,
" -DBUILD_OPENEXR=OFF " ,
" -DBUILD_PERF_TESTS=OFF " ,
" -DBUILD_PNG=OFF " ,
" -DBUILD_TESTS=OFF " ,
" -DBUILD_TIFF=OFF " ,
" -DBUILD_ZLIB=OFF " ,
" -DBUILD_opencv_hdf=OFF " ,
" -DBUILD_opencv_java=OFF " ,
" -DBUILD_opencv_text=ON " ,
" -DOPENCV_ENABLE_NONFREE=ON " ,
" -DOPENCV_GENERATE_PKGCONFIG=ON " ,
" -DWITH_1394=OFF " ,
" -DWITH_CUDA=OFF " ,
" -DWITH_EIGEN=ON " ,
" -DWITH_FFMPEG=ON " ,
" -DWITH_GPHOTO2=OFF " ,
" -DWITH_GSTREAMER=OFF " ,
" -DWITH_JASPER=OFF " ,
" -DWITH_OPENEXR=ON " ,
" -DWITH_OPENGL=OFF " ,
" -DWITH_QT=OFF " ,
" -DWITH_TBB=ON " ,
" -DWITH_VTK=OFF " ,
" -DWITH_ITT=OFF " ,
" -DWITH_IPP=OFF " ,
" -DWITH_LAPACK=OFF " ,
" -DBUILD_opencv_python2=OFF " ,
" -DBUILD_opencv_python3=ON " }
if package : config ( " bundled " ) then
table.insert ( configs , " -DOPENCV_FORCE_3RDPARTY_BUILD=ON " )
end
for _ , feature in ipairs ( features ) do
table.insert ( configs , " -DWITH_ " .. feature : upper ( ) .. " = " .. ( package : config ( feature ) and " ON " or " OFF " ) )
end
if package : config ( " cuda " ) then
table.insert ( configs , " -DWITH_CUDA=ON " )
end
table.insert ( configs , " -DBUILD_SHARED_LIBS= " .. ( package : config ( " shared " ) and " ON " or " OFF " ) )
table.insert ( configs , " -DBUILD_WITH_STATIC_CRT= " .. ( package : config ( " vs_runtime " ) : startswith ( " MT " ) and " ON " or " OFF " ) )
if package : is_plat ( " windows " ) then
table.insert ( configs , " -DBUILD_WITH_STATIC_CRT= " .. ( package : config ( " vs_runtime " ) : startswith ( " MT " ) and " ON " or " OFF " ) )
end
local resourcedir = package : resourcedir ( " opencv_contrib " )
if resourcedir then
import ( " lib.detect.find_path " )
@ -107,15 +140,13 @@ package("opencv")
for _ , f in ipairs ( os.files ( path.join ( instdir , linkdir , " *.lib " ) ) ) do
package : add ( " links " , path.basename ( f ) )
end
package : addenv ( " PATH " , path.join ( arch , vc_ver , " bin " ) )
else
os.trycp ( " 3rdparty/**/*.a " , package : installdir ( " lib " ) )
end
end )
on_test ( function ( package )
if package : is_plat ( " windows " ) then
os.vrun ( " opencv_version " )
end
assert ( package : check_cxxsnippets ( { test = [ [
# include < iostream >
void test ( int argc , char ** argv ) {