You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

769 lines
31 KiB

REM @echo off
REM POSSIBLE OPTIONS:
REM %1%: "x86_64", "x86", "arm", "arm64"
REM %2%: "gpu", build with CUDA
REM %2%: "core", build only the core components
REM %2%: "mini", build only the minimum components (fewer components than "core" option above)
REM %3%: "intel_inf", build with intel compiler and using OpenVino
REM %3%: "intel", build with intel compiler
REM %3%: "inf", build with OpenVino
REM %3%: "WindowsStore10", target UWP
REM %3%: "vs2015", force to build with vs_2015, it may no longer work as of 2020
REM %3%: "commercial", use to enable optimization with targeting 32-bit architecture
REM %4%: "nonfree", build the nonfree module
REM %4%: "openni", build the openni module
REM %4%: "depthai", build the openni module
REM %5%: "doc", this flag indicates if we should build the documentation
REM %6%: "package", this flag indicates if we should build the ".zip" and ".exe" package
REM %7%: "build", if set to "build", the script will also build the target
REM %8%: "nuget", this flag indicates if we should build the nuget package
REM %9%: Use this field for the CUDA_ARCH_BIN_OPTION if you want to specify it manually. e.g. "6.1"
SET BUILD_FOLDER=build_%1%
SET BUILD_TOOLS_FOLDER=C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
IF "%1%"=="x86" GOTO ENV_x86
IF "%1%"=="x86_64" GOTO ENV_x64
IF "%1%"=="arm" GOTO ENV_ARM
IF "%1%"=="arm64" GOTO ENV_ARM64
GOTO ENV_END
:ENV_x86
REM SET BUILD_FOLDER=%BUILD_FOLDER%_x86
ECHO "BUILDING x86 solution in %BUILD_FOLDER%"
IF EXIST "%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvars32.bat" SET ENV_SETUP_SCRIPT=%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvars32.bat
GOTO ENV_END
:ENV_x64
REM SET BUILD_FOLDER=%BUILD_FOLDER%_x64
ECHO "BUILDING x86_64 solution in %BUILD_FOLDER%"
IF EXIST "%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvars64.bat" SET ENV_SETUP_SCRIPT=%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvars64.bat
GOTO ENV_END
:ENV_ARM
REM SET BUILD_FOLDER=%BUILD_FOLDER%_ARM
ECHO "BUILDING ARM solution in %BUILD_FOLDER%"
IF EXIST "%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvarsamd64_arm.bat" SET ENV_SETUP_SCRIPT=%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvarsamd64_arm.bat
SET DEPTHAI_BUILD_FLAG=-DEMGU_CV_WITH_DEPTHAI:BOOL=FALSE
GOTO ENV_END
:ENV_ARM64
REM SET BUILD_FOLDER=%BUILD_FOLDER%_ARM64
ECHO "BUILDING ARM64 solution in %BUILD_FOLDER%"
IF EXIST "%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvarsamd64_arm64.bat" SET ENV_SETUP_SCRIPT=%BUILD_TOOLS_FOLDER%\vc\Auxiliary\Build\vcvarsamd64_arm64.bat
SET DEPTHAI_BUILD_FLAG=-DEMGU_CV_WITH_DEPTHAI:BOOL=FALSE
:ENV_END
IF "%ENV_SETUP_SCRIPT%"=="" GOTO ENV_SETUP_END
call "%ENV_SETUP_SCRIPT%"
@echo on
:ENV_SETUP_END
pushd %~p0
cd ..\..
SET ROOT_SRC_FOLDER=%cd%
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
SET NETFX_CORE=""
IF "%3%"=="WindowsPhone81" SET NETFX_CORE="TRUE"
IF "%3%"=="WindowsStore81" SET NETFX_CORE="TRUE"
IF "%3%"=="WindowsStore10" SET NETFX_CORE="TRUE"
SET OS_MODE=
IF "%1%"=="x86_64" SET OS_MODE= Win64
IF "%1%"=="arm" SET OS_MODE= ARM
IF "%1%"=="arm64" SET OS_MODE= ARM64
SET BUILD_ARCH=
IF "%1%"=="x86_64" SET BUILD_ARCH=-A x64
IF "%1%"=="x86" SET BUILD_ARCH=-A Win32
IF "%1%"=="arm" SET BUILD_ARCH=-A ARM
IF "%1%"=="arm64" SET BUILD_ARCH=-A ARM64
SET PROGRAMFILES_DIR_X86=%programfiles(x86)%
if NOT EXIST "%PROGRAMFILES_DIR_X86%" SET PROGRAMFILES_DIR_X86=%programfiles%
SET PROGRAMFILES_DIR=%programfiles%
REM Find CMake
SET CMAKE="cmake.exe"
IF EXIST "%PROGRAMFILES_DIR_X86%\CMake 2.8\bin\cmake.exe" SET CMAKE="%PROGRAMFILES_DIR_X86%\CMake 2.8\bin\cmake.exe"
IF EXIST "%PROGRAMFILES_DIR_X86%\CMake\bin\cmake.exe" SET CMAKE="%PROGRAMFILES_DIR_X86%\CMake\bin\cmake.exe"
IF EXIST "%PROGRAMFILES_DIR%\CMake\bin\cmake.exe" SET CMAKE="%PROGRAMFILES_DIR%\CMake\bin\cmake.exe"
IF EXIST "%PROGRAMW6432%\CMake\bin\cmake.exe" SET CMAKE="%PROGRAMW6432%\CMake\bin\cmake.exe"
IF EXIST "CMakeCache.txt" del CMakeCache.txt
REM Find Visual Studio or Msbuild
SET VS2005="%VS80COMNTOOLS%..\IDE\devenv.com"
SET VS2008="%VS90COMNTOOLS%..\IDE\devenv.com"
SET VS2010="%VS100COMNTOOLS%..\IDE\devenv.com"
SET VS2012="%VS110COMNTOOLS%..\IDE\devenv.com"
SET VS2013="%VS120COMNTOOLS%..\IDE\devenv.com"
SET VS2015="%VS140COMNTOOLS%..\IDE\devenv.com"
FOR /F "tokens=* USEBACKQ" %%F IN (`..\miscellaneous\vswhere.exe -version [15.0^,16.0^) -property installationPath`) DO SET VS2017_DIR=%%F
SET VS2017="%VS2017_DIR%\Common7\IDE\devenv.com"
FOR /F "tokens=* USEBACKQ" %%F IN (`..\miscellaneous\vswhere.exe -version [16.0^,17.0^) -property installationPath`) DO SET VS2019_DIR=%%F
SET VS2019="%VS2019_DIR%\Common7\IDE\devenv.com"
FOR /F "tokens=* USEBACKQ" %%F IN (`..\miscellaneous\vswhere.exe -version [17.0^,18.0^) -property installationPath`) DO SET VS2022_DIR=%%F
SET VS2022="%VS2022_DIR%\Common7\IDE\devenv.com"
FOR /F "tokens=* USEBACKQ" %%F IN (`..\miscellaneous\vswhere.exe -products * -property installationPath`) DO SET VS_BUILDTOOLS=%%F
IF EXIST "%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe" SET MSBUILD35=%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe
IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5\MSBuild.exe" SET MSBUILD35=%windir%\Microsoft.NET\Framework64\v3.5\MSBuild.exe
IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe" SET MSBUILD40=%windir%\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe
IF EXIST "%BUILD_TOOLS_FOLDER%\MSBuild\Current\Bin\MSBuild.exe" SET MSBUILD_BUILDTOOLS=%BUILD_TOOLS_FOLDER%\MSBuild\Current\Bin\MSBuild.exe
IF EXIST "%MSBUILD35%" SET DEVENV="%MSBUILD35%"
IF EXIST "%MSBUILD40%" SET DEVENV="%MSBUILD40%"
IF EXIST "%MSBUILD_BUILDTOOLS%" SET DEVENV="%MSBUILD_BUILDTOOLS%"
IF EXIST %VS2005% SET DEVENV=%VS2005%
IF EXIST %VS2008% SET DEVENV=%VS2008%
IF EXIST %VS2010% SET DEVENV=%VS2010%
IF "%4%"=="openni" GOTO SET_BUILD_TYPE
IF EXIST %VS2012% SET DEVENV=%VS2012%
IF EXIST %VS2013% SET DEVENV=%VS2013%
IF EXIST %VS2015% SET DEVENV=%VS2015%
REM CUDA 8.5 only support VS2015, if we target GPU we will stop checking for newer version of Visual Studio
REM IF "%2%"=="gpu" GOTO SET_BUILD_TYPE
REM For windows phone or store 81 build we should use VS2015
IF "%3%"=="WindowsPhone81" GOTO SET_BUILD_TYPE
REM Only check for VS2017 if there are no other suitable Visual Studio installation
REM We may default to VS2017 once CUDA 9 supports VS2017
REM IF EXIST %DEVENV% GOTO SET_BUILD_TYPE
IF "%3%"=="vs2015" GOTO SET_BUILD_TYPE
IF EXIST %VS2017% SET DEVENV=%VS2017%
REM CUDA 9 only support VS2017, if we target GPU we will stop checking for newer version of Visual Studio
REM Intel compiler is not compatible with VS2019 16.2, if we are compiling with Intel compiler, skip VS2019
REM IF "%3%"=="intel" GOTO SET_BUILD_TYPE
REM IF "%3%"=="intel_inf" GOTO SET_BUILD_TYPE
IF EXIST %VS2019% SET DEVENV=%VS2019%
IF EXIST %VS2022% SET DEVENV=%VS2022%
:SET_BUILD_TYPE
IF %DEVENV%=="%MSBUILD35%" SET BUILD_TYPE=/property:Configuration=Release
IF %DEVENV%=="%MSBUILD40%" SET BUILD_TYPE=/property:Configuration=Release
IF %DEVENV%=="%MSBUILD_BUILDTOOLS%" SET BUILD_TYPE=/property:Configuration=Release
IF %DEVENV%==%VS2005% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2008% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2010% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2012% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2013% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2015% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2017% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2019% SET BUILD_TYPE=/Build Release
IF %DEVENV%==%VS2022% SET BUILD_TYPE=/Build Release
IF %DEVENV%=="%MSBUILD35%" SET CMAKE_CONF="Visual Studio 12 2005%OS_MODE%"
IF %DEVENV%=="%MSBUILD40%" SET CMAKE_CONF="Visual Studio 16" %BUILD_ARCH%
IF %DEVENV%=="%MSBUILD_BUILDTOOLS%" SET CMAKE_CONF="Visual Studio 16" %BUILD_ARCH%
IF %DEVENV%==%VS2005% SET CMAKE_CONF="Visual Studio 8 2005%OS_MODE%"
IF %DEVENV%==%VS2008% SET CMAKE_CONF="Visual Studio 9 2008%OS_MODE%"
IF %DEVENV%==%VS2010% SET CMAKE_CONF="Visual Studio 10%OS_MODE%"
IF %DEVENV%==%VS2012% SET CMAKE_CONF="Visual Studio 11%OS_MODE%"
IF %DEVENV%==%VS2013% SET CMAKE_CONF="Visual Studio 12%OS_MODE%"
IF %DEVENV%==%VS2015% SET CMAKE_CONF="Visual Studio 14%OS_MODE%"
IF %DEVENV%==%VS2017% SET CMAKE_CONF="Visual Studio 15%OS_MODE%"
IF %DEVENV%==%VS2019% SET CMAKE_CONF="Visual Studio 16" %BUILD_ARCH%
IF %DEVENV%==%VS2022% SET CMAKE_CONF="Visual Studio 17" %BUILD_ARCH%
SET INSTALL_FOLDER=%cd%\install
SET HDF5_DIR=%INSTALL_FOLDER:\=/%/cmake/hdf5
SET OPENVINO_INSTALL_DIR=%INSTALL_FOLDER:\=/%/runtime/cmake
SET TBB_INSTALL_DIR=%ROOT_SRC_FOLDER:\=/%/3rdParty/openvino/temp/tbb/cmake
SET VTK_INSTALL_DIR=%INSTALL_FOLDER:\=/%/lib/cmake/vtk-9.2
SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_BUILD_TYPE:STRING="Release" -DCMAKE_INSTALL_PREFIX:STRING="%INSTALL_FOLDER:\=/%" -DCMAKE_FIND_ROOT_PATH:STRING="%INSTALL_FOLDER:\=/%;%OPENVINO_INSTALL_DIR%;%TBB_INSTALL_DIR%;%VTK_INSTALL_DIR%"
REM -DCMAKE_CXX_STANDARD:STRING=17
IF NOT "%3%"=="WindowsStore10" GOTO END_CONFIG_WINDOWS_STORE_10_GENERAL_CMAKE_CONFIG_FLAGS
SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_SYSTEM_NAME:String="WindowsStore"
IF %DEVENV%==%VS2017% SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_SYSTEM_VERSION:String="10.0.14393.0"
IF %DEVENV%==%VS2019% SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_SYSTEM_VERSION:String="10.0.18362.0"
IF %DEVENV%==%VS2022% SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_SYSTEM_VERSION:String="10.0.18362.0"
IF %DEVENV%=="%MSBUILD_BUILDTOOLS%" SET GENERAL_CMAKE_CONFIG_FLAGS=%GENERAL_CMAKE_CONFIG_FLAGS% -DCMAKE_SYSTEM_VERSION:String="10.0.18362.0"
:END_CONFIG_WINDOWS_STORE_10_GENERAL_CMAKE_CONFIG_FLAGS
REM Setup common flags
SET EMGU_CV_CMAKE_CONFIG_FLAGS= -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% ^
-DBUILD_DOCS:BOOL=FALSE ^
-DBUILD_TESTS:BOOL=FALSE ^
-DBUILD_opencv_apps:BOOL=FALSE ^
-DBUILD_opencv_java:BOOL=FALSE ^
-DBUILD_opencv_python2:BOOL=FALSE ^
-DBUILD_opencv_python3:BOOL=FALSE ^
-DBUILD_opencv_python_bindings_generator:BOOL=FALSE ^
-DBUILD_opencv_python_tests:BOOL=FALSE ^
-DBUILD_opencv_ts:BOOL=FALSE ^
-DBUILD_WITH_DEBUG_INFO:BOOL=FALSE ^
-DBUILD_WITH_STATIC_CRT:BOOL=FALSE ^
-DWITH_OPENGL:BOOL=FALSE ^
-DCMAKE_DISABLE_FIND_PACKAGE_PNG:BOOL=TRUE ^
-DCMAKE_IGNORE_PATH:STRING="C:/python-virt/python37/Library;C:/python-virt/python37/Library/include;C:/python-virt/python37/Library/lib" ^
-DVIDEOIO_PLUGIN_LIST:STRING="ffmpeg"
REM -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB:BOOL=TRUE ^
REM -DWITH_VULKAN:BOOL=TRUE ^
REM -DCMAKE_DISABLE_FIND_PACKAGE_BZip2:BOOL=TRUE ^
REM For Freetype, removed the "d" postfix for debug mode.
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
REM -DDISABLE_FORCE_DEBUG_POSTFIX:BOOL=TRUE
REM Setup the contrib modules
IF "%2%"=="mini" GOTO CONFIG_MINI
IF "%2%"=="core" GOTO CONFIG_CORE
:CONFIG_FULL
cd ..
REM Don't build freetype or HDF for ARM.
IF "%1%"=="arm" GOTO END_BUILD_HDF
IF "%1%"=="arm64" GOTO END_BUILD_HDF
:BUILD_FREETYPE
cd 3rdParty
cd freetype2
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% ^
-DCMAKE_DISABLE_FIND_PACKAGE_ZLIB:BOOL=TRUE ^
-DCMAKE_DISABLE_FIND_PACKAGE_BZip2:BOOL=TRUE ^
-DCMAKE_DISABLE_FIND_PACKAGE_PNG:BOOL=TRUE ^
-DCMAKE_DISABLE_FIND_PACKAGE_HarfBuzz:BOOL=TRUE ^
..
%CMAKE% --build . --config Release --target INSTALL
cd ..
cd ..
cd ..
SET FREETYPE_DIR=%cd%\3rdParty\freetype2\%BUILD_FOLDER%
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DFreetype_DIR:STRING=%FREETYPE_DIR%
:BUILD_HARBUZZ
cd harfbuzz
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% -DHB_HAVE_FREETYPE:BOOL=TRUE ..
%CMAKE% --build . --config Release --target INSTALL
cd ..
cd ..
REM SET HARFBUZZ_DIR=%cd%\harfbuzz\%BUILD_FOLDER%
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DHarfbuzz_DIR:STRING=%HARFBUZZ_DIR%
IF "%3%"=="WindowsStore10" GOTO END_BUILD_HDF
REM IF NOT "%3%"=="WindowsStore10" GOTO BUILD_HDF
REM SET HDF5_WIN_STORE10_FLAGS=-DH5_LDOUBLE_TO_LONG_SPECIAL_RUN:STRING="FAILED_TO_RUN" -DH5_LDOUBLE_TO_LONG_SPECIAL_RUN__TRYRUN_OUTPUT:STRING=""
REM SET HDF5_WIN_STORE10_FLAGS=%HDF5_WIN_STORE10_FLAGS% -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN:STRING="FAILED_TO_RUN" -DH5_LONG_TO_LDOUBLE_SPECIAL_RUN__TRYRUN_OUTPUT:STRING=""
REM SET HDF5_WIN_STORE10_FLAGS=%HDF5_WIN_STORE10_FLAGS% -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN:STRING="FAILED_TO_RUN" -DH5_LDOUBLE_TO_LLONG_ACCURATE_RUN__TRYRUN_OUTPUT:STRING=""
REM SET HDF5_WIN_STORE10_FLAGS=%HDF5_WIN_STORE10_FLAGS% -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN:STRING="FAILED_TO_RUN" -DH5_LLONG_TO_LDOUBLE_CORRECT_RUN__TRYRUN_OUTPUT:STRING=""
REM SET HDF5_WIN_STORE10_FLAGS=%HDF5_WIN_STORE10_FLAGS% -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN:STRING="FAILED_TO_RUN" -DH5_NO_ALIGNMENT_RESTRICTIONS_RUN__TRYRUN_OUTPUT:STRING=""
:BUILD_HDF
cd hdf5
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% -DBUILD_SHARED_LIBS:BOOL=FALSE -DBUILD_TESTING:BOOL=FALSE -DHDF5_BUILD_EXAMPLES:BOOL=FALSE -DHDF5_BUILD_TOOLS:BOOL=FALSE ..
%CMAKE% --build . --config Release --target INSTALL
cd ..
cd ..
SET HDF5_DIR=%BUILD_FOLDER%\install\cmake
:END_BUILD_HDF
cd %BUILD_FOLDER%
SET OPENCV_EXTRA_MODULES_DIR=%cd%\..\opencv_contrib\modules
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DOPENCV_EXTRA_MODULES_PATH:String="%OPENCV_EXTRA_MODULES_DIR:\=/%"
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEMGU_CV_WITH_TESSERACT:BOOL=TRUE
IF %NETFX_CORE%=="TRUE" GOTO END_BUILD_VTK
IF "%1%"=="arm" GOTO END_BUILD_VTK
IF "%1%"=="arm64" GOTO END_BUILD_VTK
IF "%3%"=="inf" GOTO BUILD_VTK
IF "%3%"=="intel_inf" GOTO BUILD_VTK
GOTO END_BUILD_VTK
:BUILD_VTK
cd ..
cd vtk
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
SET VTK_BUILD_DIR=%cd%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% -DBUILD_TESTING:BOOL=FALSE -DBUILD_SHARED_LIBS:BOOL=TRUE -DVTK_MODULE_ENABLE_VTK_RenderingContext2D:STRING="YES" -DVTK_MODULE_ENABLE_VTK_IOImage:STRING="YES" -DVTK_MODULE_ENABLE_VTK_IOGeometry:STRING="YES" -DVTK_MODULE_ENABLE_VTK_IOExport:STRING="YES" -DVTK_MODULE_ENABLE_VTK_RenderingFreeType:STRING="YES" -DVTK_MODULE_ENABLE_VTK_png:STRING="YES" ..
%CMAKE% --build . --config Release --target INSTALL
cd ..
cd ..
cd %BUILD_FOLDER%
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DVTK_DIR:String="%VTK_BUILD_DIR:\=/%"
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DDEPTHAI_OPENCV_SUPPORT:BOOL=TRUE
:END_BUILD_VTK
GOTO END_CONFIG_CORE
:CONFIG_MINI
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DBUILD_opencv_3d:BOOL=FALSE -DBUILD_opencv_calib:BOOL=FALSE -DBUILD_opencv_dnn:BOOL=FALSE -DBUILD_opencv_ml:BOOL=FALSE -DBUILD_opencv_photo:BOOL=FALSE -DBUILD_opencv_features2d:BOOL=FALSE -DBUILD_opencv_gapi:BOOL=FALSE -DBUILD_opencv_flann:BOOL=FALSE -DBUILD_opencv_video:BOOL=FALSE
:END_CONFIG_MINI
:CONFIG_CORE
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEMGU_CV_WITH_TESSERACT:BOOL=FALSE -DEMGU_CV_WITH_FREETYPE:BOOL=FALSE
SET DEPTHAI_BUILD_FLAG=-DEMGU_CV_WITH_DEPTHAI:BOOL=FALSE
:END_CONFIG_CORE
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% %DEPTHAI_BUILD_FLAG%
SET BUILD_TYPE=OPEN_SOURCE
REM GPU performance test on windows cause compilation error, skipping it now
IF "%2%"=="gpu" GOTO NO_PERFORMANCE_TEST
REM Intel compiler performance test on windows cause compilation error, skipping it now
IF "%3%"=="intel" GOTO NO_PERFORMANCE_TEST
IF "%3%"=="intel_inf" GOTO NO_PERFORMANCE_TEST
REM NETFX_CORE performance test cause compilation issue, skipping it now
IF %NETFX_CORE%=="" GOTO WITH_PERFORMANCE_TEST
:NO_PERFORMANCE_TEST
REM BUILD WITHOUT PERFORMANCE TEST
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DBUILD_opencv_ts:BOOL=OFF ^
-DBUILD_PERF_TESTS:BOOL=OFF
GOTO END_PERFORMANCE_TEST
:WITH_PERFORMANCE_TEST
REM BUDILD WITH PERFORMANCE TEST
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DBUILD_opencv_ts:BOOL=ON ^
-DBUILD_PERF_TESTS:BOOL=ON
:END_PERFORMANCE_TEST
IF NOT "%4%"=="openni" GOTO END_OF_OPENNI
:WITH_OPENNI
SET OPENNI_LIB_DIR=%OPEN_NI_LIB%
IF "%OS_MODE%"==" Win64" SET OPENNI_LIB_DIR=%OPEN_NI_LIB64%
SET OPENNI_PS_BIN_DIR=%OPENNI_LIB_DIR%\..\..\PrimeSense\Sensor\Bin
IF "%OS_MODE%"==" Win64" SET OPENNI_PS_BIN_DIR=%OPENNI_LIB_DIR%\..\..\PrimeSense\Sensor\Bin64
IF EXIST "%OPENNI_LIB_DIR%" SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_OPENNI:BOOL=TRUE ^
-DOPENNI_INCLUDE_DIR:String="%OPEN_NI_INCLUDE:\=/%" ^
-DOPENNI_LIB_DIR:String="%OPENNI_LIB_DIR:\=/%" ^
-DOPENNI_PRIME_SENSOR_MODULE_BIN_DIR:String="%OPENNI_PS_BIN_DIR:\=/%"
:END_OF_OPENNI
IF NOT "%4%"=="nonfree" GOTO END_OF_NONFREE
:WITH_NONFREE
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DOPENCV_ENABLE_NONFREE:BOOL=TRUE
:END_OF_NONFREE
IF NOT "%4%"=="depthai" GOTO END_OF_DEPTHAI
:WITH_DEPTHAI
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DEMGU_CV_WITH_DEPTHAI:BOOL=TRUE
:END_OF_DEPTHAI
IF "%5%"=="doc" ^
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEMGU_CV_DOCUMENTATION_BUILD:BOOL=TRUE
REM IF "%5%"=="htmldoc" ^
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEMGU_CV_DOCUMENTATION_BUILD:BOOL=TRUE
cd ..
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DCMAKE_INSTALL_PREFIX:STRING="%INSTALL_FOLDER:\=/%"
cd eigen
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% ..
%CMAKE% --build . --config Release --target INSTALL
SET EIGEN_DIR=%cd%
cd ..
cd ..
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEigen3_DIR:STRING=%EIGEN_DIR%
cd %BUILD_FOLDER%
IF NOT "%2%"=="gpu" GOTO WITHOUT_GPU
REM IF %DEVENV%==%VS2012% GOTO END_OF_GPU
REM IF %DEVENV%==%VS2013% GOTO END_OF_GPU
:WITH_GPU
REM SET CUDA_HOST_COMPILER=%DEVENV%
IF %DEVENV%==%VS2008% SET CUDA_HOST_COMPILER=%VS90COMNTOOLS%..\..\VC\bin\cl.exe
IF %DEVENV%==%VS2010% SET CUDA_HOST_COMPILER=%VS100COMNTOOLS%..\..\VC\bin\cl.exe
IF %DEVENV%==%VS2012% SET CUDA_HOST_COMPILER=%VS110COMNTOOLS%..\..\VC\bin\cl.exe
IF %DEVENV%==%VS2013% SET CUDA_HOST_COMPILER=%VS120COMNTOOLS%..\..\VC\bin\cl.exe
IF %DEVENV%==%VS2015% SET CUDA_HOST_COMPILER=%VS140COMNTOOLS%..\..\VC\bin\cl.exe
for /d %%i in ( "%VS2017_DIR%\VC\Tools\MSVC\*" ) do SET VS2017_CUDA_HOST_COMPILER=%%i\bin\Hostx64\x64\cl.exe
IF %DEVENV%==%VS2017% SET CUDA_HOST_COMPILER=%VS2017_CUDA_HOST_COMPILER%
for /d %%i in ( "%VS2019_DIR%\VC\Tools\MSVC\*" ) do SET VS2019_CUDA_HOST_COMPILER=%%i\bin\Hostx64\x64\cl.exe
IF %DEVENV%==%VS2019% SET CUDA_HOST_COMPILER=%VS2019_CUDA_HOST_COMPILER%
for /d %%i in ( "%VS2022_DIR%\VC\Tools\MSVC\*" ) do SET VS2022_CUDA_HOST_COMPILER=%%i\bin\Hostx64\x64\cl.exe
IF %DEVENV%==%VS2022% SET CUDA_HOST_COMPILER=%VS2022_CUDA_HOST_COMPILER%
for /d %%i in ( "%BUILD_TOOLS_FOLDER%\VC\Tools\MSVC\14.2*" ) do SET BUILDTOOLS_CUDA_HOST_COMPILER=%%i\bin\Hostx64\x64\cl.exe
IF %DEVENV%=="%MSBUILD_BUILDTOOLS%" SET CUDA_HOST_COMPILER=%BUILDTOOLS_CUDA_HOST_COMPILER%
REM Find cuda. Use latest Cuda release for 64 bit and Cuda 6.5 for 32bit
REM We cannot use latest Cuda release for 32 bit because the 32bit version of npp has been depreciated from Cuda 7
IF "%OS_MODE%"==" Win64" GOTO WITH_GPU_64
:WITH_GPU_32
SET CUDA_SDK_DIR=%CUDA_PATH_V6_5%
SET CUDA_64_MODE=-DCUDA_64_BIT_DEVICE_CODE:BOOL=FALSE
GOTO END_GPU_ARCH
:WITH_GPU_64
REM If you are using CUDA 9 with Open CV 3.3 release you will need to create an nppi.lib file with instructions from here:
REM https://stackoverflow.com/questions/45525377/installing-opencv-3-3-0-with-contrib-modules-using-cmake-cuda-9-0-rc-and-visual
SET CUDA_SDK_DIR=%CUDA_PATH%
REM prefer CUDA 12.8
IF EXIST "%CUDA_PATH_V12_8%" SET CUDA_SDK_DIR=%CUDA_PATH_V12_8%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V12_9%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V12_8%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V12_6%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V12_0%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V11_8%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V11_6%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V11_3%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V11_1%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V11_0%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V10_1%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V10_0%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V9_1%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V9_0%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V8_0%
IF NOT EXIST "%CUDA_SDK_DIR%" SET CUDA_SDK_DIR=%CUDA_PATH_V7_5%
SET CUDA_64_MODE=-DCUDA_64_BIT_DEVICE_CODE:BOOL=TRUE
SET CUDA_NVCUVID_HEADER="%CUDA_SDK_DIR%\include\nvcuvid.h"
IF EXIST %CUDA_NVCUVID_HEADER% SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_NVCUVID:BOOL=TRUE
REM -DCUDA_nvcuvenc_LIBRARY:String=%CUDA_NVCUVENC_DIR:\=/% ^
:END_GPU_ARCH
REM IF "%CUDA_SDK_DIR%"=="%CUDA_PATH_V9_1%" IF %DEVENV%==%VS2017% GOTO START_FIND_CL
REM IF "%CUDA_SDK_DIR%"=="%CUDA_PATH_V9_0%" IF %DEVENV%==%VS2017% GOTO START_FIND_CL
REM GOTO END_FIND_CL
REM :START_FIND_CL
REM SET MSVC_14_11=%VS2017_DIR%\VC\Tools\MSVC\14.11.25503\bin\Hostx64\x64\cl.exe
REM SET MSVC_14_12=%VS2017_DIR%\VC\Tools\MSVC\14.14.12.25827\bin\Hostx64\x64\cl.exe
REM CUDA 9.0 or 9.1 is not compatible with MSVC_14_12 in VS2017, forcing it to use 14.11
REM IF EXIST "%MSVC_14_11%" SET CUDA_HOST_COMPILER=%MSVC_14_11%
REM pushd "%VS2017_DIR%\VC\Auxiliary\Build\"
REM call vcvars64.bat -vcvars_ver=14.11
REM popd
REM SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DCUDA_HOST_COMPILER:String="%CUDA_HOST_COMPILER%"
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DCUDA_HOST_COMPILER:String="%CUDA_HOST_COMPILER:\=/%"
REM :END_FIND_CL
IF NOT "%9%"=="" GOTO GPU_ARCH_BIN_SPECIFIED
SET CUDA_ARCH_BIN_OPTION=""
IF EXIST "%CUDA_SDK_DIR%" SET CUDA_ARCH_BIN_OPTION="5.2 6.1 7.5"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V8_0%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V9_0%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1 7.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V9_1%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1 7.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V10_0%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1 7.0 7.5"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V10_1%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1 7.0 7.5"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_0%" SET CUDA_ARCH_BIN_OPTION="6.0 6.1 7.0 7.5 8.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_1%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_2%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_3%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_6%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V11_8%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V12_0%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V12_6%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V12_8%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0 12.0"
IF "%CUDA_SDK_DIR%" == "%CUDA_PATH_V12_9%" SET CUDA_ARCH_BIN_OPTION="5.2 6.0 6.1 7.0 7.5 8.0 8.6 8.9 9.0 12.0"
GOTO END_GPU_ARCH_BIN
:GPU_ARCH_BIN_SPECIFIED
SET CUDA_ARCH_BIN_OPTION="%9%"
:END_GPU_ARCH_BIN
IF EXIST "%CUDA_SDK_DIR%" SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
%CUDA_64_MODE% ^
-DWITH_CUDA:BOOL=TRUE ^
-DCUDA_VERBOSE_BUILD:BOOL=TRUE ^
-DCUDA_TOOLKIT_ROOT_DIR:String="%CUDA_SDK_DIR:\=/%" ^
-DCUDA_SDK_ROOT_DIR:String="%CUDA_SDK_DIR:\=/%" ^
-DWITH_CUBLAS:BOOL=TRUE ^
-DBUILD_SHARED_LIBS:BOOL=TRUE ^
-DOPENCV_SKIP_DLLMAIN_GENERATION=ON ^
-DCUDA_ARCH_BIN:STRING=%CUDA_ARCH_BIN_OPTION% ^
-DBUILD_opencv_world:BOOL=TRUE ^
-DCUDA_NVCC_FLAGS:STRING="--expt-relaxed-constexpr --std=c++17" ^
-DCMAKE_CXX_STANDARD:STRING=17
GOTO END_OF_GPU
:WITHOUT_GPU
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_CUDA:BOOL=FALSE ^
-DBUILD_SHARED_LIBS:BOOL=FALSE
:END_OF_GPU
IF "%3%"=="inf" GOTO WITH_OPENVINO
IF "%3%"=="intel_inf" GOTO WITH_OPENVINO
GOTO WITHOUT_OPENVINO
:WITH_OPENVINO
cd ..
cd 3rdParty
cd openvino
REM Apply patch if BUILD_FOLDER doesn't exist. e.g. first time this script is run.
REM The IF condition prevent git patch to run multiple times if the build script is run multiple times.
IF NOT EXIST %BUILD_FOLDER% git apply ../0001-Patch-manager.cpp-for-Visual-Studio-2022.patch
IF NOT EXIST %BUILD_FOLDER% mkdir %BUILD_FOLDER%
cd %BUILD_FOLDER%
%CMAKE% -G %CMAKE_CONF% %GENERAL_CMAKE_CONFIG_FLAGS% ..
REM -DCMAKE_CXX_FLAGS:STRING="-D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS" -DCMAKE_C_FLAGS:STRING="-D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS"
%CMAKE% --build . --config Release --target INSTALL
cd ..
cd ..
cd ..
cd %BUILD_FOLDER%
REM SET OPENVINO_DIR=
REM IF EXIST "%PROGRAMFILES_DIR_X86%\Intel\openvino" SET OPENVINO_DIR=%PROGRAMFILES_DIR_X86%\Intel\openvino
REM IF EXIST "%PROGRAMFILES_DIR_X86%\Intel\openvino_2021" SET OPENVINO_DIR=%PROGRAMFILES_DIR_X86%\Intel\openvino_2021
REM IF NOT EXIST "%OPENVINO_DIR%" GOTO WITHOUT_OPENVINO
REM call "%OPENVINO_DIR%\bin\setupvars.bat"
@echo on
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_OPENVINO:BOOL=TRUE ^
-DOPENCV_DNN_OPENVINO:BOOL=TRUE ^
-DDNN_PLUGIN_LIST:STRING=all ^
-DOpenVINO_DIR:STRING=%OPENVINO_INSTALL_DIR% ^
-Dngraph_DIR:STRING=%OPENVINO_INSTALL_DIR% ^
-DTBB_DIR:STRING=%TBB_INSTALL_DIR% ^
-DENABLE_CXX11:BOOL=TRUE
REM -DOpenVINO_DIR:STRING="%OPENVINO_DIR:\=/%"
SET BUILD_TYPE=COMMERCIAL
GOTO END_OF_OPENVINO
:WITHOUT_OPENVINO
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DWITH_OPENVINO:BOOL=FALSE
:END_OF_OPENVINO
IF "%3%"=="intel" GOTO INTEL_COMPILER
IF "%3%"=="intel_inf" GOTO INTEL_COMPILER
:NOT_INTEL_COMPILER
IF "%3%"=="commercial" SET BUILD_TYPE=COMMERCIAL
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DWITH_LAPACK:BOOL=FALSE
GOTO VISUAL_STUDIO
:INTEL_COMPILER
REM Find Intel Compiler
SET INTEL_COMPILER_DIR=%ICPP_COMPILER20%
SET INTEL_DIR=%INTEL_COMPILER_DIR%bin
SET INTEL_ENV=%INTEL_DIR%\iclvars.bat
SET INTEL_ICL=%INTEL_DIR%\ia32\icl.exe
IF "%OS_MODE%"==" Win64" SET INTEL_ICL=%INTEL_DIR%\intel64\icl.exe
SET INTEL_TBB=%INTEL_COMPILER_DIR%tbb\include
REM SET INTEL_MKL_ROOT=%INTEL_COMPILER_DIR%mkl
SET INTEL_ARCH=ia32
IF "%OS_MODE%"==" Win64" SET INTEL_ARCH=intel64
SET INTEL_DEV_ENV=""
IF %DEVENV%==%VS2012% SET INTEL_DEV_ENV=vs2012
IF %DEVENV%==%VS2013% SET INTEL_DEV_ENV=vs2013
IF %DEVENV%==%VS2015% SET INTEL_DEV_ENV=vs2015
IF %DEVENV%==%VS2017% SET INTEL_DEV_ENV=vs2017
IF %DEVENV%==%VS2019% SET INTEL_DEV_ENV=vs2019
IF %DEVENV%==%VS2022% SET INTEL_DEV_ENV=vs2022
call "%INTEL_COMPILER_DIR%tbb\bin\tbbvars.bat" %INTEL_ARCH% %INTEL_DEV_ENV%
REM call "%INTEL_COMPILER_DIR%mkl\bin\mklvars.bat" %INTEL_ARCH% %INTEL_DEV_ENV%
REM initiate the compiler enviroment
@echo on
IF EXIST "%INTEL_DIR%" SET BUILD_TYPE=COMMERCIAL
IF EXIST "%INTEL_DIR%" SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_TBB:BOOL=TRUE ^
-DMKL_WITH_TBB:BOOL=TRUE ^
-DTBB_INCLUDE_DIR:String="%INTEL_TBB:\=/%" ^
-DCV_ICC:BOOL=TRUE
REM -DMKL_ROOT_DIR:String="%INTEL_MKL_ROOT:\=/%"
REM IF NOT "%2%"=="gpu" GOTO END_OF_INTEL_GPU
REM SET CUDA_HOST_COMPILER=%VS110COMNTOOLS%..\..\VC\bin
REM IF "%OS_MODE%"==" Win64" SET CUDA_HOST_COMPILER=%CUDA_HOST_COMPILER%\amd64
REM IF EXIST %VS2012% SET EMGU_CV_CMAKE_CONFIG_FLAGS=-DCUDA_HOST_COMPILER:String="%CUDA_HOST_COMPILER%" %EMGU_CV_CMAKE_CONFIG_FLAGS%
REM IF "%OS_MODE%"==" Win64" SET EMGU_CV_CMAKE_CONFIG_FLAGS=-DCUDA_64_BIT_DEVICE_CODE:BOOL=ON %EMGU_CV_CMAKE_CONFIG_FLAGS%
REM :END_OF_INTEL_GPU
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_OPENCL:BOOL=TRUE ^
-DWITH_MSMF:BOOL=TRUE
GOTO CONFIG_ARM
:VISUAL_STUDIO
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% %IPP_BUILD_FLAGS%
IF "%3%"=="WindowsStore10" GOTO CONFIGURE_WINDOWS_STORE_10
REM Windows Desktop Build
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DWITH_OPENCL:BOOL=TRUE ^
-DWITH_MSMF:BOOL=TRUE
GOTO CONFIG_ARM
:CONFIGURE_WINDOWS_STORE_10
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DNETFX_CORE:BOOL=TRUE ^
-DWITH_DIRECTX:BOOL=FALSE ^
-DWITH_OPENEXR:BOOL=FALSE ^
-DWITH_TIFF:BOOL=FALSE ^
-DEMGU_CV_WITH_TIFF:BOOL=FALSE ^
-DWITH_PNG:BOOL=TRUE ^
-DWITH_DSHOW:BOOL=FALSE ^
-DWITH_WIN32UI:BOOL=FALSE ^
-DWITH_VFW:BOOL=FALSE ^
-DWITH_MSMF:BOOL=FALSE ^
-DWITH_FFMPEG:BOOL=FALSE ^
-DWITH_OPENCL:BOOL=FALSE ^
-DWITH_EIGEN:BOOL=TRUE ^
-DEigen3_DIR:STRING=%EIGEN_DIR% ^
-DEMGU_ENABLE_SSE:BOOL=FALSE
:CONFIG_ARM
IF "%1%"=="arm" GOTO WITH_ARM
IF "%1%"=="arm64" GOTO WITH_ARM
:WITHOUT_ARM
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% -DEMGU_ENABLE_SSE:BOOL=TRUE
SET CPU_DISPATCH_FLAGS=
IF "%BUILD_TYPE%"=="COMMERCIAL" GOTO CONFIGURE_COMMERCIAL
GOTO CONFIGURE_OPENSOURCE
:CONFIGURE_COMMERCIAL
SET IPP_BUILD_FLAGS=-DWITH_IPP:BOOL=TRUE
IF "%1%"=="x86" SET CPU_DISPATCH_FLAGS=SSE4_1;SSE4_2
IF "%1%"=="x86_64" SET CPU_DISPATCH_FLAGS=SSE4_1;SSE4_2;AVX;AVX2;AVX512F
GOTO END_CONFIG_COMMERCIAL_OR_OPENSOURCE
:CONFIGURE_OPENSOURCE
SET IPP_BUILD_FLAGS=-DWITH_IPP:BOOL=FALSE
:END_CONFIG_COMMERCIAL_OR_OPENSOURCE
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% %IPP_BUILD_FLAGS% -DCPU_DISPATCH:STRING="%CPU_DISPATCH_FLAGS%"
GOTO END_WITH_ARM
:WITH_ARM
IF "%BUILD_TYPE%"=="COMMERCIAL" GOTO CONFIGURE_COMMERCIAL_ARM
GOTO CONFIGURE_OPENSOURCE_ARM
:CONFIGURE_COMMERCIAL_ARM
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DCV_ENABLE_INTRINSICS:BOOL=ON ^
-DCPU_BASELINE:STRING="NEON"
GOTO END_CONFIG_COMMERCIAL_OR_OPENSOURCE_ARM
:CONFIGURE_OPENSOURCE_ARM
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DCV_ENABLE_INTRINSICS:BOOL=OFF ^
-DCPU_BASELINE:STRING=""
:END_CONFIG_COMMERCIAL_OR_OPENSOURCE_ARM
SET EMGU_CV_CMAKE_CONFIG_FLAGS=%EMGU_CV_CMAKE_CONFIG_FLAGS% ^
-DEMGU_ENABLE_SSE:BOOL=FALSE ^
-DWITH_IPP:BOOL=OFF ^
-DEMGU_CV_WITH_FREETYPE:BOOL=OFF ^
-DBUILD_opencv_freetype:BOOL=OFF
:END_WITH_ARM
:RUN_CMAKE
@echo on
%CMAKE% %EMGU_CV_CMAKE_CONFIG_FLAGS% ..\
:BUILD
IF NOT "%7%"=="build" GOTO END
SET CMAKE_BUILD_TARGET=cvextern
IF NOT "%6%"=="package" GOTO CHECK_DOC_BUILD
SET CMAKE_BUILD_TARGET=%CMAKE_BUILD_TARGET% PACKAGE
:CHECK_DOC_BUILD
IF NOT "%5%"=="doc" GOTO CHECK_NUGET_BUILD
SET CMAKE_BUILD_TARGET=%CMAKE_BUILD_TARGET% Emgu.CV.Document
:CHECK_NUGET_BUILD
IF NOT "%8%"=="nuget" GOTO END_SET_BUILD_TARGET
SET CMAKE_BUILD_TARGET=%CMAKE_BUILD_TARGET% Emgu.CV.runtime.windows.nuget
:END_SET_BUILD_TARGET
REM echo CMAKE_BUILD_TARGET=%CMAKE_BUILD_TARGET% Emgu.CV.nuget
REM Don't build with parallel at this time. Multiple Example demo projects building in parallel will results in build errors.
REM %CMAKE% --build . --config Release --parallel --target %CMAKE_BUILD_TARGET%
%CMAKE% --build . --config Release --target %CMAKE_BUILD_TARGET%
REM IF "%2%"=="gpu" ^
REM call %DEVENV% %BUILD_TYPE% emgucv.sln /project Emgu.CV.CUDA.nuget
:END
popd