PORTNAME=		${_MLT_PORTNAME}
DISTVERSION=		${_MLT_VERSION}
PORTREVISION?=		4
CATEGORIES?=		multimedia
# Don't use GitHub "fake" downloads that are auto-generated from a
# tag; the project uploads tarballs for each release.
#               https://github.com/mltframework/mlt/releases/download/v6.26.1/mlt-6.26.1.tar.gz
MASTER_SITES=		https://github.com/mltframework/mlt/releases/download/v${DISTVERSION}/
DISTFILES=		mlt-${DISTVERSION}${EXTRACT_SUFX}
WRKSRC=			${WRKDIR}/mlt-${DISTVERSION}

MAINTAINER=		kde@FreeBSD.org
COMMENT?=		Multimedia framework for TV broadcasting

LICENSE?=		GPLv2 GPLv3 LGPL21
LICENSE_COMB?=		multi

USES+=			alias cmake compiler:c++11-lang eigen:3 localbase pkgconfig

DATADIR=		${PREFIX}/share/mlt

.ifndef(SLAVEPORT) # Master port.
CONFLICTS_INSTALL=	mlt-6.*

BROKEN_sparc64=		does not compile on sparc64 (invokes i386 asm)

USES+=			mlt:6,nodepend

# Explicitly disabled modules that are ouddated, unnecessary, or have
# their own port.
CMAKE_OFF=		MOD_SDL1 MOD_QT \
			SWIG_CSHARP SWIG_JAVA SWIG_LUA SWIG_NODEJS SWIG_PERL \
			SWIG_PHP SWIG_PYTHON SWIG_RUBY SWIG_TCL

PORTDOCS=		AUTHORS NEWS README docs
PORTEXAMPLES=		demo

OPTIONS_DEFINE=		DOCS EXAMPLES
OPTIONS_DEFAULT=	AVFORMAT FREI0R GDK KDENLIVE OPENGL PLUS PLUSGPL RESAMPLE \
			SDL2 SOX VIDSTAB VORBIS XML

OPTIONS_GROUP=		MODULES
OPTIONS_GROUP_MODULES=	AVFORMAT DECKLINK FEEDS FREI0R GDK GTK2 JACKRACK \
			KDENLIVE LUMAS MOTION_EST NORMALIZE OLDFILM OPENCV \
			OPENGL PLUS PLUSGPL RESAMPLE RTAUDIO RUBBERBAND \
			SDL2 SOX VIDSTAB VMFX VORBIS XINE XML

OPTIONS_SUB=		yes

AVFORMAT_DESC=		Enable avformat module
AVFORMAT_LIB_DEPENDS=	libavformat.so:multimedia/ffmpeg
AVFORMAT_CMAKE_BOOL=	MOD_AVFORMAT

DECKLINK_DESC=		Enable decklink module
DECKLINK_CMAKE_BOOL=	MOD_DECKLINK

FEEDS_DESC=		Enable feeds module
FEEDS_CMAKE_BOOL=	MOD_FEEDS

FREI0R_DESC=		Enable frei0r module
FREI0R_BUILD_DEPENDS=	${LOCALBASE}/include/frei0r.h:graphics/frei0r
FREI0R_CMAKE_BOOL=	MOD_FREI0R

GDK_DESC=		Enable gdk module
GDK_LIB_DEPENDS=	libexif.so:graphics/libexif \
			libfontconfig.so:x11-fonts/fontconfig \
			libfreetype.so:print/freetype2 \
			libharfbuzz.so:print/harfbuzz
GDK_USES=		gnome
GDK_USE=		gnome=gdkpixbuf2,pango
GDK_CMAKE_BOOL=		MOD_GDK

GTK2_DESC=		Enable gtk2 module
GTK2_USES=		gnome
GTK2_USE=		gnome=cairo,gtk20
GTK2_CMAKE_BOOL=	MOD_GTK2

JACKRACK_DESC=		Enable jackrack module
JACKRACK_BUILD_DEPENDS=	${LOCALBASE}/include/ladspa.h:audio/ladspa
JACKRACK_LIB_DEPENDS=	libjack.so:audio/jack
JACKRACK_USES=		gnome
JACKRACK_USE=		gnome=glib20
JACKRACK_CMAKE_BOOL=	MOD_JACKRACK

KDENLIVE_DESC=		Enable kdenlive module
KDENLIVE_CMAKE_BOOL=	MOD_KDENLIVE

LUMAS_DESC=		Enable lumas module
LUMAS_CMAKE_BOOL=	MOD_LUMAS

MOTION_EST_DESC=	Enable motion estimation module
MOTION_EST_CMAKE_BOOL=	MOD_MOTION_EST

NORMALIZE_DESC=		Enable normalize module
NORMALIZE_CMAKE_BOOL=	MOD_NORMALIZE

OLDFILM_DESC=		Enable oldfilm module
OLDFILM_CMAKE_BOOL=	MOD_OLDFILM

OPENCV_DESC=		Enable OpenCV module
OPENCV_LIB_DEPENDS=	libopencv_core.so:graphics/opencv
OPENCV_CMAKE_BOOL=	MOD_OPENCV

OPENGL_DESC=		Enable OpenGL module
OPENGL_CMAKE_BOOL=	MOD_OPENGL
OPENGL_LIB_DEPENDS=	libepoxy.so:graphics/libepoxy \
			libmovit.so:graphics/movit
OPENGL_USES=		gl xorg
OPENGL_USE=		gl=gl xorg=x11

PLUSGPL_DESC=		Enable plus GPL module
PLUSGPL_CMAKE_BOOL=	MOD_PLUSGPL

PLUS_DESC=		Enable plus module
PLUS_LIB_DEPENDS=	libfftw3.so:math/fftw3
PLUS_CMAKE_BOOL=	MOD_PLUS

RESAMPLE_DESC=		Enable resample module
RESAMPLE_LIB_DEPENDS=	libsamplerate.so:audio/libsamplerate
RESAMPLE_CMAKE_BOOL=	MOD_RESAMPLE

RTAUDIO_DESC=		Enable RtAudio module
RTAUDIO_LIB_DEPENDS=	librtaudio.so:audio/rtaudio \
			libpulse-simple.so:audio/pulseaudio
RTAUDIO_CMAKE_BOOL=	MOD_RTAUDIO

RUBBERBAND_DESC=	Enable rubberband module
RUBBERBAND_LIB_DEPENDS=	librubberband.so:audio/rubberband
RUBBERBAND_CMAKE_BOOL=	MOD_RUBBERBAND

SDL2_DESC=		Enable SDL2 module
SDL2_USES=		sdl
SDL2_USE=		sdl=image2
SDL2_CMAKE_BOOL=	MOD_SDL2

SOX_DESC=		Enable SoX module
SOX_LIB_DEPENDS=	libsox.so:audio/sox
SOX_CMAKE_BOOL=		MOD_SOX

VIDSTAB_DESC=		Enable vid.stab module
VIDSTAB_LIB_DEPENDS=	libvidstab.so:multimedia/vid.stab
VIDSTAB_CMAKE_BOOL=	MOD_VIDSTAB

VMFX_DESC=		Enable vmfx module
VMFX_CMAKE_BOOL=	MOD_VMFX

VORBIS_DESC=		Enable Vorbis module
VORBIS_LIB_DEPENDS=	libvorbis.so:audio/libvorbis libogg.so:audio/libogg
VORBIS_CMAKE_BOOL=	MOD_VORBIS

XINE_DESC=		Enable xine module
XINE_CMAKE_BOOL=	MOD_XINE

XML_DESC=		Enable XML module
XML_USES=		gnome
XML_USE=		gnome=libxml2
XML_CMAKE_BOOL=		MOD_XML

pre-configure:
	@${REINPLACE_CMD} -e 's,/usr/local,${LOCALBASE},' \
		${WRKSRC}/src/modules/frei0r/factory.c \
		${WRKSRC}/src/modules/jackrack/plugin_mgr.c

common-post-install:
	${INSTALL_MAN} ${WRKSRC}/docs/melt.1 ${STAGEDIR}${MANPREFIX}/man/man1/melt.1
	@${RM} ${WRKSRC}/docs/melt.1
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/melt
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libmlt.so.${PORTVERSION}
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libmlt++.so.${PORTVERSION}

post-install-DOCS-on:
.for f in ${PORTDOCS}
	cd ${WRKSRC} && ${COPYTREE_SHARE} ${f} ${STAGEDIR}${DOCSDIR}
.endfor

post-install-EXAMPLES-on:
.for f in ${PORTEXAMPLES}
	cd ${WRKSRC} && ${COPYTREE_SHARE} ${f} ${STAGEDIR}${EXAMPLESDIR}
.endfor

.else # Slave port.
PORTSCOUT=		ignore:1

# Depend on multimedia/mlt6 for child ports
USES+=			mlt:6

PLIST?=			${.CURDIR}/pkg-plist

INSTALL_WRKSRC?=	${BUILD_WRKSRC}
.endif

post-install: common-post-install
	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${PORTNAME}/* 2>/dev/null || ${TRUE}
	@${RMDIR} -p ${STAGEDIR}${PREFIX}/lib/${PORTNAME} 2>/dev/null || ${TRUE}

.include <bsd.port.mk>
