Packages
evision
0.2.17-rc1
1.0.1-rc.0
1.0.0
1.0.0-rc.0
0.2.17
0.2.17-rc2
0.2.17-rc1
0.2.16
0.2.16-pre.2
0.2.16-pre
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.2-rc2
0.2.1
0.2.0
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
retired
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.26-rc3
0.1.26-rc2
0.1.26-rc1
0.1.26-rc0
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
OpenCV-Erlang/Elixir binding.
Current section
Files
Jump to
Current section
Files
Makefile.win
!IFNDEF MIX_APP_PATH
MIX_APP_PATH=$(MAKEDIR)
!ENDIF
PRIV_DIR = $(MIX_APP_PATH)/priv
EVISION_SO = $(PRIV_DIR)/evision.dll
WINDOWS_FIX_SO = $(PRIV_DIR)\windows_fix.dll
SRC = $(MAKEDIR)\src
C_SRC = $(MAKEDIR)\c_src
PY_SRC = $(MAKEDIR)\py_src
LIB_SRC = $(MAKEDIR)\lib
GLEAM_SRC = $(MAKEDIR)\gleam_src
PATCHES_DIR = $(MAKEDIR)\patches
CMAKE_DIR = $(MAKEDIR)\cmake
!IFDEF CMAKE_TOOLCHAIN_FILE
CMAKE_CONFIGURE_FLAGS=-D CMAKE_TOOLCHAIN_FILE="$(CMAKE_TOOLCHAIN_FILE)"
!ENDIF
# OpenCV
!IFNDEF OPENCV_USE_GIT_HEAD
OPENCV_USE_GIT_HEAD=false
!ENDIF
!IFNDEF OPENCV_GIT_REPO
OPENCV_GIT_REPO="https://github.com/opencv/opencv.git"
!ENDIF
!IFNDEF OPENCV_VER
OPENCV_VER=4.11.0
!ENDIF
!IFNDEF OPENCV_CONTRIB_VER
OPENCV_CONTRIB_VER=4.13.0
!ENDIF
!IF "$(OPENCV_USE_GIT_HEAD)" == "true"
OPENCV_VER=$(OPENCV_USE_GIT_BRANCH)
!ENDIF
OPENCV_CACHE_DIR = $(MAKEDIR)\3rd_party\cache
OPENCV_SOURCE_URL = "https://github.com/opencv/opencv/archive/$(OPENCV_VER).zip"
OPENCV_SOURCE_ZIP = $(OPENCV_CACHE_DIR)\opencv-$(OPENCV_VER).zip
OPENCV_ROOT_DIR = $(MAKEDIR)\3rd_party\opencv
OPENCV_DIR = $(OPENCV_ROOT_DIR)\opencv-$(OPENCV_VER)
OPENCV_CONTRIB_DIR = $(OPENCV_ROOT_DIR)\opencv_contrib-$(OPENCV_CONTRIB_VER)
OPENCV_CONFIGURATION_PRIVATE_HPP = $(OPENCV_DIR)\modules\core\include\opencv2\core\utils\configuration.private.hpp
CMAKE_OPENCV_BUILD_DIR = $(MIX_APP_PATH)/cmake_opencv_$(OPENCV_VER)
!IFNDEF CMAKE_OPENCV_MODULE_SELECTION
CMAKE_OPENCV_MODULE_SELECTION = -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF -D BUILD_opencv_gapi=OFF
!ENDIF
!IFNDEF CMAKE_OPENCV_IMG_CODER_SELECTION
CMAKE_OPENCV_IMG_CODER_SELECTION = -D BUILD_PNG=ON -D BUILD_JPEG=ON -D BUILD_TIFF=ON -D BUILD_WEBP=ON -D BUILD_OPENJPEG=ON -D BUILD_JASPER=ON -D BUILD_OPENEXR=ON
!ENDIF
!IFNDEF CMAKE_OPENCV_OPTIONS
CMAKE_OPENCV_OPTIONS = ""
!ENDIF
!IFNDEF CMAKE_OPTIONS
CMAKE_OPTIONS = $(CMAKE_OPENCV_MODULE_SELECTION) $(CMAKE_OPENCV_IMG_CODER_SELECTION)
!ENDIF
CMAKE_WIN_FINAL_OPTIONS = $(CMAKE_OPTIONS) $(CMAKE_CONFIGURE_FLAGS) $(CMAKE_OPENCV_OPTIONS) -DCMAKE_POLICY_VERSION_MINIMUM=3.5
!IFNDEF ENABLED_CV_MODULES
ENABLED_CV_MODULES = ""
!ENDIF
# evision
# OpenCV 4.13.0+ emits gen_python_config.json (with header list + preprocessor
# definitions) instead of the bare headers.txt used by earlier versions.
OPENCV_HEADERS_TXT=$(CMAKE_OPENCV_BUILD_DIR)/modules/python_bindings_generator/gen_python_config.json
CONFIGURATION_PRIVATE_HPP = $(C_SRC)\configuration.private.hpp
GENERATED_ELIXIR_SRC_DIR = $(LIB_SRC)\generated
GENERATED_ERLANG_SRC_DIR = $(SRC)\generated
GENERATED_GLEAM_SRC_DIR = $(GLEAM_SRC)
CMAKE_EVISION_BUILD_DIR = $(MIX_APP_PATH)\cmake_evision
!IFNDEF GLEAM_EVISION
GLEAM_EVISION = "false"
!ENDIF
!IFNDEF EVISION_PREFER_PRECOMPILED
EVISION_PREFER_PRECOMPILED = "false"
!ENDIF
!IFNDEF EVISION_ENABLE_CONTRIB
EVISION_ENABLE_CONTRIB = "true"
!ENDIF
!IFNDEF EVISION_PRECOMPILED_CACHE_DIR
EVISION_PRECOMPILED_CACHE_DIR = $(MAKEDIR)\.cache
!ENDIF
!IFNDEF EVISION_GENERATE_LANG
!IF "$(EVISION_COMPILE_WITH_REBAR)" == "true"
EVISION_GENERATE_LANG = elixir,erlang
!ELSE
EVISION_GENERATE_LANG = elixir
!ENDIF
!ENDIF
!IFNDEF CMAKE_GENERATOR_TYPE
!IFNDEF MSBUILD_PLATFORM
!IF "$(HAVE_NINJA)" == "true"
CMAKE_GENERATOR_TYPE=Ninja
!ELSE
CMAKE_GENERATOR_TYPE=NMake Makefiles
!ENDIF
!ENDIF
!ENDIF
!IFNDEF CMAKE_BUILD_TYPE
CMAKE_BUILD_TYPE=Release
!ENDIF
!IF "$(EVISION_ENABLE_CONTRIB)" == "true"
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION = $(CMAKE_WIN_FINAL_OPTIONS) -DOPENCV_EXTRA_MODULES_PATH="$(OPENCV_CONTRIB_DIR)\modules" -D BUILD_opencv_hdf=OFF -D BUILD_opencv_freetype=OFF
C_SRC_HEADER_TXT=$(C_SRC)/gen_python_config-contrib.json
HEADERS_TXT=$(CMAKE_OPENCV_BUILD_DIR)/modules/python_bindings_generator/gen_python_config-contrib.json
!ELSE
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION = $(CMAKE_WIN_FINAL_OPTIONS)
C_SRC_HEADER_TXT=$(C_SRC)/gen_python_config.json
HEADERS_TXT=$(CMAKE_OPENCV_BUILD_DIR)/modules/python_bindings_generator/gen_python_config.json
!ENDIF
!IFDEF CMAKE_TOOLCHAIN_FILE
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2 = -G "$(CMAKE_GENERATOR_TYPE)" -A "$(MSBUILD_PLATFORM)" $(CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION) -D CMAKE_TOOLCHAIN_FILE="$(CMAKE_TOOLCHAIN_FILE)"
!ELSE
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2 = -G "$(CMAKE_GENERATOR_TYPE)" $(CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION)
!ENDIF
!IFDEF MSBUILD_PLATFORM
!IF "$(CMAKE_GENERATOR_TYPE)" == "Ninja"
CMAKE_BUILD_PARAMETER= --config "$(CMAKE_BUILD_TYPE)"
!ELSE
CMAKE_BUILD_PARAMETER= --config "$(CMAKE_BUILD_TYPE)" -- /p:Platform=$(MSBUILD_PLATFORM)
!ENDIF
!ELSE
CMAKE_BUILD_PARAMETER= --config "$(CMAKE_BUILD_TYPE)"
!ENDIF
!IF "$(MSBUILD_PLATFORM)" == "ARM64"
# todo: we have disabled SIMD for now, but we should enable it for ARM64 when we have a proper solution
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2 = $(CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2) -D ENABLE_LIBJPEG_TURBO_SIMD=OFF -D ENABLE_NEON=OFF -D ENABLE_VFPV3=OFF -D WITH_FFMPEG=OFF -D HAVE_FFMPEG=OFF
!ENDIF
!IF "$(EVISION_ENABLE_CUDA)" == "true"
CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2 = $(CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2) -D CUDA_NVCC_FLAGS=--expt-relaxed-constexpr
!ENDIF
!IF "$(EVISION_DO_OPENCV_COMPILE)" == "false"
EVISION_DO_OPENCV_COMPILE=false
!ELSE
EVISION_DO_OPENCV_COMPILE=true
!ENDIF
!IFNDEF EVISION_KEEP_OCV_BUILD_DIR
EVISION_KEEP_OCV_BUILD_DIR="true"
!ENDIF
build: $(EVISION_SO)
download_opencv_contrib:
!IF "$(EVISION_ENABLE_CONTRIB)" == "true"
@ powershell scripts/download_opencv_contrib.ps1 "$(OPENCV_CONTRIB_VER)" "$(OPENCV_CACHE_DIR)" "$(OPENCV_ROOT_DIR)"
!ENDIF
$(CONFIGURATION_PRIVATE_HPP): download_opencv_contrib
!IF "$(EVISION_PREFER_PRECOMPILED)" != "true"
@ powershell scripts/download_opencv.ps1 "$(OPENCV_VER)" "$(OPENCV_CACHE_DIR)" "$(OPENCV_ROOT_DIR)"
@ if not exist "$(CONFIGURATION_PRIVATE_HPP)" copy "$(OPENCV_CONFIGURATION_PRIVATE_HPP)" "$(CONFIGURATION_PRIVATE_HPP)"
!ENDIF
$(HEADERS_TXT): $(CONFIGURATION_PRIVATE_HPP)
!IF "$(EVISION_PREFER_PRECOMPILED)" != "true"
@ if not exist "$(CMAKE_OPENCV_BUILD_DIR)" mkdir "$(CMAKE_OPENCV_BUILD_DIR)"
@ if not exist "$(HEADERS_TXT)" if "$(EVISION_DO_OPENCV_COMPILE)" == "true" ( \
python3 "$(PATCHES_DIR)\apply_patch.py" "$(OPENCV_DIR)" "$(OPENCV_VER)" || \
python "$(PATCHES_DIR)\apply_patch.py" "$(OPENCV_DIR)" "$(OPENCV_VER)" \
)
@ if not exist "$(OPENCV_DIR)\cmake\OpenCVDetectCUDAUtils.cmake" copy "$(CMAKE_DIR)\OpenCVDetectCUDAUtils.cmake" "$(OPENCV_DIR)\cmake\OpenCVDetectCUDAUtils.cmake"
@ if not exist "$(HEADERS_TXT)" if "$(EVISION_DO_OPENCV_COMPILE)" == "true" ( \
cd "$(CMAKE_OPENCV_BUILD_DIR)" && \
cmake -D CMAKE_BUILD_TYPE="$(CMAKE_BUILD_TYPE)" \
-D CMAKE_INSTALL_PREFIX="$(PRIV_DIR)" \
-D PYTHON3_EXECUTABLE="$(PYTHON3_EXECUTABLE)" \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=OFF \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv4.pc \
-D BUILD_ZLIB=ON \
-D BUILD_opencv_gapi=OFF \
-D BUILD_opencv_apps=OFF \
$(CMAKE_WIN_FINAL_OPTIONS_DEFINITIVE_EDITION_V2) "$(OPENCV_DIR)" && \
cmake --build . $(CMAKE_BUILD_PARAMETER) \
)
@ if "$(EVISION_DO_OPENCV_COMPILE)" == "true" ( \
if not exist "$(EVISION_SO)" ( \
cd "$(CMAKE_OPENCV_BUILD_DIR)" && cmake --install . --config "$(CMAKE_BUILD_TYPE)" && \
if "$(OPENCV_HEADERS_TXT)" NEQ "$(HEADERS_TXT)" ( \
powershell -command Copy-Item "$(OPENCV_HEADERS_TXT)" -Destination "$(HEADERS_TXT)" -Force -ErrorAction SilentlyContinue \
) \
) \
)
@ powershell -command Copy-Item "$(HEADERS_TXT)" -Destination "$(C_SRC_HEADER_TXT)" -Force -ErrorAction SilentlyContinue
@ if "$(EVISION_KEEP_OCV_BUILD_DIR)" == "false" ( \
powershell -command Remove-Item "$(CMAKE_OPENCV_BUILD_DIR)" -Recurse -Force -ErrorAction SilentlyContinue \
)
!ENDIF
$(C_SRC_HEADER_TXT): $(HEADERS_TXT)
opencv: $(C_SRC_HEADER_TXT)
$(EVISION_SO): opencv
@ if not exist "$(PRIV_DIR)" mkdir "$(PRIV_DIR)"
!IF "$(EVISION_PREFER_PRECOMPILED)" != "true"
@ if not exist "$(CMAKE_EVISION_BUILD_DIR)" mkdir "$(CMAKE_EVISION_BUILD_DIR)"
@ if not exist "$(GENERATED_ELIXIR_SRC_DIR)" mkdir "$(GENERATED_ELIXIR_SRC_DIR)"
@ if not exist "$(GENERATED_ERLANG_SRC_DIR)" mkdir "$(GENERATED_ERLANG_SRC_DIR)"
@ if not exist "$(EVISION_SO)" ( \
cd "$(CMAKE_EVISION_BUILD_DIR)" && \
cmake -G "$(CMAKE_GENERATOR_TYPE)" \
--no-warn-unused-cli \
-D CMAKE_BUILD_TYPE="$(CMAKE_BUILD_TYPE)" \
-D C_SRC="$(C_SRC)" \
-D GENERATED_ELIXIR_SRC_DIR="$(GENERATED_ELIXIR_SRC_DIR)" \
-D GENERATED_ERLANG_SRC_DIR="$(GENERATED_ERLANG_SRC_DIR)" \
-D GENERATED_GELAM_SRC_DIR="$(GENERATED_GELAM_SRC_DIR)" \
-D PY_SRC="$(PY_SRC)" \
-D MIX_APP_PATH="$(MIX_APP_PATH)" \
-D PRIV_DIR="$(PRIV_DIR)" \
-D ERTS_INCLUDE_DIR="$(ERTS_INCLUDE_DIR)" \
-D ENABLED_CV_MODULES=$(ENABLED_CV_MODULES) \
-D EVISION_GENERATE_LANG="$(EVISION_GENERATE_LANG)" \
-D EVISION_ENABLE_CONTRIB="$(EVISION_ENABLE_CONTRIB)" \
-D EVISION_ENABLE_CUDA="$(EVISION_ENABLE_CUDA)" \
-D GLEAM_EVISION="$(GLEAM_EVISION)" \
$(CMAKE_CONFIGURE_FLAGS) "$(MAKEDIR)" && \
cmake --build . $(CMAKE_BUILD_PARAMETER) && \
cmake --install . --config "$(CMAKE_BUILD_TYPE)" \
)
!ENDIF