# $NetBSD: Makefile.common,v 1.24 2025/02/07 23:35:30 adam Exp $
#
# used by graphics/opencv/Makefile
# used by graphics/opencv-contrib-face/Makefile

OPENCV_VERSION=	4.11.0

CATEGORIES=	graphics devel
MASTER_SITES=	${MASTER_SITE_GITHUB:=opencv/}

HOMEPAGE=	https://opencv.org/
LICENSE=	apache-2.0

USE_CC_FEATURES=	c99
USE_CXX_FEATURES=	c++17
USE_LANGUAGES=		c c++
USE_TOOLS+=		gmake pkg-config

CHECK_PORTABILITY_SKIP+=	platforms/ios/cmake/Toolchains/xcodebuild_wrapper.in
CHECK_PORTABILITY_SKIP+=	cmake/templates/xcode-*

# Turn off BUILD options to make auto detection work correctly.
CMAKE_CONFIGURE_ARGS+=	-DBUILD_JAVA=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_JPEG=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_OPENEXR=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_OPENJPEG=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_PNG=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_PROTOBUF=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_TIFF=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_WEBP=OFF
CMAKE_CONFIGURE_ARGS+=	-DBUILD_ZLIB=OFF
CMAKE_CONFIGURE_ARGS+=	-DCV_ENABLE_INTRINSICS=OFF # XXX: problematic
CMAKE_CONFIGURE_ARGS+=	-DENABLE_CCACHE=OFF
CMAKE_CONFIGURE_ARGS+=	-DOPENCV_GENERATE_SETUPVARS=OFF
CMAKE_CONFIGURE_ARGS+=	-DPROTOBUF_UPDATE_FILES=ON
CMAKE_CONFIGURE_ARGS+=	-DWITH_EIGEN=OFF
CMAKE_CONFIGURE_ARGS+=	-DZLIB_ROOT=${BUILDLINK_PREFIX.zlib}
# needed by protobuf
CMAKE_CONFIGURE_ARGS+=	-DCMAKE_CXX_STANDARD=17
# doesn't build on NetBSD with libva-2.22.0
CMAKE_CONFIGURE_ARGS+=	-DWITH_VA=OFF
#.include "../../multimedia/libva/buildlink3.mk"

# lapack: disabled because it makes the build fail with
# In file included from modules/core/src/hal_internal.cpp:50:
# modules/core/src/hal_internal.cpp: In function 'int lapack_gemm_c(const fptype*, size_t, const fptype*, size_t, fptype, const fptype*, size_t, fptype, fptype*, size_t, int, int, int, int)':
# modules/core/src/hal_internal.cpp:518:48: error: expected unqualified-id before '_Complex'
#  518 |     int ldsrc1 = (int)(src1_step / sizeof(std::complex<fptype>));
#      |                                                ^~~~~~~
## Pulled in via numpy, too, but we need to handle it explicitly
## for LAPACK C API and CMake tests here.
#BLAS_C_INTERFACE=	yes
#.include "../../mk/blas.buildlink3.mk"
#CMAKE_CONFIGURE_ARGS+=	-DWITH_LAPACK=ON
#CMAKE_CONFIGURE_ARGS+=	-DBLA_PREFER_PKGCONFIG=ON
#CMAKE_CONFIGURE_ARGS+=	-DBLA_PKGCONFIG_BLAS=${BLAS_PC}
#CMAKE_CONFIGURE_ARGS+=	-DBLA_PKGCONFIG_LAPACK=${LAPACK_PC}
#CMAKE_CONFIGURE_ARGS+=	-DBLA_PKGCONFIG_CBLAS=${CBLAS_PC}
#CMAKE_CONFIGURE_ARGS+=	-DBLA_PKGCONFIG_LAPACKE=${LAPACKE_PC}
#CMAKE_CONFIGURE_ARGS+=	-DOPENCV_SKIP_LAPACK_EXTERN_C=ON

CMAKE_CONFIGURE_ARGS.SunOS+=	-DENABLE_PRECOMPILED_HEADERS=OFF
CMAKE_CONFIGURE_ARGS.SunOS+=	-DOPENCV_PYTHON_SKIP_LINKER_EXCLUDE_LIBS=ON

BUILDLINK_TRANSFORM.SunOS+=	rm:-Wl,--as-needed
BUILDLINK_TRANSFORM.SunOS+=	rm:-Wl,--gc-sections

.include "../../mk/bsd.prefs.mk"

# error: unknown type name 'float16x8_t'
.if ${OPSYS} == "Darwin" && ${MACHINE_ARCH} == "aarch64"
CMAKE_CONFIGURE_ARGS+=	-DENABLE_NEON=OFF
.endif

.if ${MACHINE_ARCH} == "i386"
# Disable SSE/SSE2 to avoid build errors from missing _mm_pause.
CMAKE_CONFIGURE_ARGS+=	-DCPU_BASELINE=""
.endif

.include "../../mk/atomic64.mk"
.include "../../lang/python/pyversion.mk"
.include "../../devel/cmake/build.mk"
