PORTNAME=	digikam
DISTVERSION=	8.6.0
PORTREVISION=	2
CATEGORIES=	graphics kde
MASTER_SITES=	KDE/stable/${PORTNAME}/${PORTVERSION} \
		https://files.kde.org/${PORTNAME}/%SUBDIR%/:aesthetic,autotags,face,yunet \
		https://kde-applicationdata.mirrors.omnilance.com/${PORTNAME}/%SUBDIR%/:aesthetic,autotags,face,yunet \
		https://mirrors.ocf.berkeley.edu/kde-applicationdata/${PORTNAME}/%SUBDIR%/:aesthetic,autotags,face,yunet
MASTER_SITE_SUBDIR=	aestheticdetector/:aesthetic \
			autotags/:autotags \
			facesengine/dnnface/:face \
			facesengine/yunet/:yunet
# One bit changed in the naming convention ..
DISTFILES=	digiKam-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}${EXTRACT_SUFX}
DIST_SUBDIR=	KDE/${PORTNAME}
EXTRACT_ONLY=	digiKam-${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX}${EXTRACT_SUFX}

MAINTAINER=	kde@FreeBSD.org
COMMENT=	KDE digital photo management application
WWW=		https://www.digikam.org/

LICENSE=	GPLv2
LICENSE_FILE=	${WRKSRC}/COPYING

BUILD_DEPENDS=	boost-libs>=0:devel/boost-libs
LIB_DEPENDS=	libexiv2.so:graphics/exiv2 \
		libexpat.so:textproc/expat2 \
		libgphoto2.so:graphics/libgphoto2 \
		libjasper.so:graphics/jasper \
		libjxl.so:graphics/libjxl \
		liblcms2.so:graphics/lcms2 \
		liblensfun.so:graphics/lensfun \
		libopencv_core.so:graphics/opencv \
		libheif.so:graphics/libheif \
		libpng.so:graphics/png \
		libtiff.so:graphics/tiff \
		libx265.so:multimedia/x265
RUN_DEPENDS=	exiftool:graphics/p5-Image-ExifTool

USES=		bison cmake compiler:c++20-lang desktop-file-utils eigen:3 \
		gettext-tools gl gnome jpeg kde:6 magick pkgconfig qt:6 \
		shebangfix tar:xz xorg
USE_GL=		opengl glu
USE_GNOME=	glib20 libxml2 libxslt
USE_KDE=	calendarcore colorscheme completion config configwidgets \
		coreaddons doctools filemetadata i18n iconthemes jobwidgets \
		kio libksane notifications notifyconfig service solid sonnet \
		texttemplate threadweaver widgetsaddons windowsystem xmlgui \
		ecm:build
USE_LDCONFIG=	yes
USE_QT=		base declarative networkauth positioning scxml svg \
		webchannel webengine
USE_XORG=	ice sm x11 xext

SHEBANG_FILES=	core/data/scripts/digitaglinktree/digitaglinktree

CMAKE_ON=	BUILD_WITH_CCACHE \
		BUILD_WITH_QT6 \
		CMAKE_DISABLE_FIND_PACKAGE_VAAPI \
		DIGIKAMSC_COMPILE_DIGIKAM \
		ENABLE_KFILEMETADATASUPPORT

CXXFLAGS+=	-Wno-error=undef
WRKSRC=		${WRKDIR}/${PORTNAME}-${DISTVERSION}

PLIST_SUB=	SHLIB_VER=${DISTVERSION}

WITH_CCACHE_BUILD=	yes

OPTIONS_DEFINE=		KDEPIM MEDIAPLAYER
OPTIONS_GROUP=		DATA
DATA_DESC=		Binary data required for certain features
OPTIONS_GROUP_DATA=	AESTHETIC AUTOTAGS FACEDETECT
OPTIONS_MULTI=		DB
DB_DESC=		Database options
OPTIONS_MULTI_DB=	MYSQL MYSQL_INTERNAL SQLITE3
OPTIONS_DEFAULT=	${OPTIONS_DEFINE} \
			${OPTIONS_MULTI_DB:NMYSQL_INTERNAL}
OPTIONS_SUB=		yes

# Check core/data/dnnmodels/dnnmodels.conf for new and obsolete files
# for the AESTHETIC, AUTOTAGS and FACEDETECT options with each update.
AESTHETIC_DESC=		Install aesthetic detection data (~84 MiB)
AESTHETIC_DISTFILES=	weights_inceptionv3_299.pb:aesthetic

AUTOTAGS_DESC=		Install auto tags assignment data (~481 MiB)
AUTOTAGS_DISTFILES=	classification_classes_ILSVRC2012.txt:autotags \
			coco.names:autotags \
			efficientnetb7.onnx:autotags \
			yolo11n.onnx:autotags \
			yolo11x.onnx:autotags

FACEDETECT_DESC=	Install face management data (~37 MiB)
FACEDETECT_DISTFILES=	face_recognition_sface_2021dec.onnx:face \
			face_detection_yunet_2023mar.onnx:yunet

KDEPIM_DESC=		KDEPim Addressbook support
KDEPIM_USE=		KDE=akonadi,akonadicontacts,contacts,grantleetheme,itemmodels
KDEPIM_CMAKE_BOOL=	ENABLE_AKONADICONTACTSUPPORT

MEDIAPLAYER_DESC=		Enable media player
MEDIAPLAYER_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
MEDIAPLAYER_USE=		QT=multimedia XORG=xv
MEDIAPLAYER_CMAKE_BOOL=		ENABLE_MEDIAPLAYER
MEDIAPLAYER_CMAKE_BOOL_OFF=	CMAKE_DISABLE_FIND_PACKAGE_FFmpeg

MYSQL_USE=		QT=sqldriver-mysql:run
MYSQL_CMAKE_BOOL=	ENABLE_MYSQLSUPPORT

MYSQL_INTERNAL_DESC=		Use a dedicated MySQL instance (requires MariaDB)
MYSQL_INTERNAL_USES=		mysql:server
MYSQL_INTERNAL_CMAKE_BOOL=	ENABLE_INTERNALMYSQL
# Only works with MariaDB. Try to keep this in sync with supported MySQL
# versions and add any version not ending with 'm' to the IGNORE list.
MYSQL_INTERNAL_VARS=		IGNORE_WITH_MYSQL="80 81"
MYSQL_INTERNAL_IMPLIES=		MYSQL

SQLITE3_USE=		QT=sqldriver-sqlite:run

post-install-AESTHETIC-on:
	@${MKDIR} ${STAGEDIR}${DATADIR}/facesengine
.for f in ${AESTHETIC_DISTFILES:C/:.*//}
	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/${f} ${STAGEDIR}${DATADIR}/facesengine
.endfor

post-install-AUTOTAGS-on:
	@${MKDIR} ${STAGEDIR}${DATADIR}/facesengine
.for f in ${AUTOTAGS_DISTFILES:C/:.*//}
	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/${f} ${STAGEDIR}${DATADIR}/facesengine
.endfor

post-install-FACEDETECT-on:
	@${MKDIR} ${STAGEDIR}${DATADIR}/facesengine
.for f in ${FACEDETECT_DISTFILES:C/:.*//}
	${INSTALL_DATA} ${DISTDIR}/${DIST_SUBDIR}/${f} ${STAGEDIR}${DATADIR}/facesengine
.endfor

.include <bsd.port.mk>
