# $FreeBSD: multimedia/gstreamer1-plugins/Makefile.common 334511 2013-11-21 19:06:50Z kwm $
#    $MCom: kwm/multimedia/gstreamer1-plugins/Makefile.common 11415 2013-04-26 22:58:21Z kwm $

BASE_GST_ALL_PLUGINS= \
		alsa \
		cdparanoia \
		ivorbis \
		libvisual \
		ogg \
		pango \
		theora \
		vorbis \
		x \
		xvideo

BAD_GST_ALL_PLUGINS+= \
		assrender \
		curl \
		dts \
		faac \
		faad \
		flite \
		gme \
		gsm \
		kate \
		libmms \
		librfb \
		modplug \
		mpeg2enc \
		mplex \
		neon \
		ofa \
		openal \
		opencv \
		openjpeg \
		opus \
		resindvd \
		rtmp \
		schro \
		soundtouch \
		spandsp \
		webp \
		zbar \

# plugins not yet ported to the 1.0 API, or not portable
BAD_GST_ALL_PLUGINS+= \
		apexsink \
		cdaudio \
		chromaprint \
		decklink \
		directfb \
		eglgles \
		ladspa \
		linsys \
		lv2 \
		mimic \
		mpg123 \
		musepack \
		mythtv \
		nas \
		opensles \
		pvr \
		rsvg \
		sdl \
		sndfile \
		sndio \
		spc \
		teletextdec \
		timidity \
		vdpau \
		voaacenc \
		voamrwbenc \
		wayland \
		xvid

BAD_GST_NON_PLUGINS= \
		--enable-bz2 \
		--enable-dvb \
		--enable-shm \
		--enable-quicktime \
		--disable-gsettings \
		--disable-acm \
		--disable-android_media \
		--disable-apple_media \
		--disable-avc \
		--disable-dc1394 \
		--disable-dccp \
		--disable-direct3d \
		--disable-directdraw \
		--disable-directsound \
		--disable-fbdev \
		--disable-osx_video \
		--disable-uvch264 \
		--disable-vcd \
		--disable-wildmidi \
		--disable-wininet

GOOD_GST_ALL_PLUGINS+= \
		aalib \
		cairo \
		flac \
		gdk_pixbuf \
		jack \
		jpeg \
		libcaca \
		libdv \
		libpng \
		gst_v4l2 \
		shout2 \
		soup \
		speex \
		taglib \
		vpx \
		wavpack \
		x
#	xxx	pulse \

GOOD_GST_NON_PLUGINS=	\
		--disable-dv1394 \
		--disable-directsound \
		--disable-osx_audio \
		--disable-osx_video \
		--disable-sunaudio \
		--disable-waveform \
		--enable-bz2 \
		--enable-oss \
		--enable-oss4 \
		--enable-zlib

UGLY_GST_ALL_PLUGINS+= \
		a52dec \
		amrnb \
		amrwb \
		cdio \
		dvdread \
		lame \
		mad \
		mpeg2dec \
		sidplay \
		twolame \
		x264

UGLY_GST_NON_PLUGINS=

# Disable all plugins by default
.if ${DIST}=="base"
.for d in ${BASE_GST_ALL_PLUGINS}
CONFIGURE_ARGS+=	--disable-${d}
.endfor
.endif

.if ${DIST}=="bad"
.for d in ${BAD_GST_ALL_PLUGINS}
CONFIGURE_ARGS+=	--disable-${d}
.endfor
CONFIGURE_ARGS+= ${BAD_GST_NON_PLUGINS}
.endif

.if ${DIST}=="good"
.for d in ${GOOD_GST_ALL_PLUGINS}
CONFIGURE_ARGS+=	--disable-${d}
.endfor
CONFIGURE_ARGS+= ${GOOD_GST_NON_PLUGINS}
.endif

.if ${DIST}=="ugly"
.for d in ${UGLY_GST_ALL_PLUGINS}
CONFIGURE_ARGS+=	--disable-${d}
.endfor
CONFIGURE_ARGS+= ${UGLY_GST_NON_PLUGINS}
.endif

.if ${GST_PLUGIN}!="base" && ${GST_PLUGIN}!="bad" && \
	${GST_PLUGIN}!="good" && ${GST_PLUGIN}!="ugly"
CONFIGURE_ARGS+=	--enable-${GST_PLUGIN}
.endif

.if !defined(NO_GSTREAMER_COMMON)
GST_PLUGIN_SUFFIX?=	-${GST_PLUGIN}

# Enable the right plugin
CONFIGURE_ARGS:=${CONFIGURE_ARGS:S|--disable-${GST_PLUGIN}|--enable-${GST_PLUGIN}|}

GST_INC_DIR=		include/gstreamer-${VERSION}
GST_LIB_DIR=		lib/gstreamer-${VERSION}

# Auto create PLIST
PLIST=		${NONEXISTENT}

# ------- plugins ---------

# a52dec
gst_a52dec_LIB_DEPENDS=	liba52.so:${PORTSDIR}/audio/liba52

# aalib
gst_aalib_LIB_DEPENDS=	libaa.so:${PORTSDIR}/graphics/aalib
gst_aalib_PLIST_FILES=	${GST_LIB_DIR}/libgstaasink.la \
			${GST_LIB_DIR}/libgstaasink.so

# amrnb
gst_amrnb_LIB_DEPENDS=	libopencore-amrnb.so:${PORTSDIR}/audio/opencore-amr
gst_amrnb_PLIST_FILES=	${GST_LIB_DIR}/libgstamrnb.la \
			${GST_LIB_DIR}/libgstamrnb.so \
			share/gstreamer-${VERSION}/presets/GstAmrnbEnc.prs
gst_amrnb_PLIST_DIRSTRY=share/gstreamer-${VERSION}/presets \
			share/gstreamer-${VERSION}

# amrwb
gst_amrwb_LIB_DEPENDS=	libopencore-amrwb.so:${PORTSDIR}/audio/opencore-amr
gst_amrwb_GST_PLUGIN_DIR=	ext/amrwbdec
gst_amrwb_PLIST_FILES=	${GST_LIB_DIR}/libgstamrwbdec.la \
			${GST_LIB_DIR}/libgstamrwbdec.so

# assrender
gst_assrender_LIB_DEPENDS=	libass.so:${PORTSDIR}/multimedia/libass

# cairo
gst_cairo_USE_GNOME=	cairo

# cdparanoia
gst_cdparanoia_LIB_DEPENDS=	libcdda_interface.so:${PORTSDIR}/audio/cdparanoia

# cdio
gst_cdio_LIB_DEPENDS=	libcdio.so:${PORTSDIR}/sysutils/libcdio

# curl
gst_curl_LIB_DEPENDS=	libcurl.so:${PORTSDIR}/ftp/curl

# dts
gst_dts_LIB_DEPENDS=	libdca.so:${PORTSDIR}/multimedia/libdca
gst_dts_PLIST_FILES=	${GST_LIB_DIR}/libgstdtsdec.la \
			${GST_LIB_DIR}/libgstdtsdec.so

# libdv
gst_libdv_LIB_DEPENDS=		libdv.so:${PORTSDIR}/multimedia/libdv
gst_libdv_GST_PLUGIN_DIR=	ext/dv
gst_libdv_PLIST_FILES=		${GST_LIB_DIR}/libgstdv.la \
				${GST_LIB_DIR}/libgstdv.so

# dvdread
gst_dvdread_LIB_DEPENDS=libdvdread.so:${PORTSDIR}/multimedia/libdvdread

# faac
gst_faac_LIB_DEPENDS=	libfaac.so:${PORTSDIR}/audio/faac

# faad
gst_faad_LIB_DEPENDS=	libfaad.so:${PORTSDIR}/audio/faad

# flac
gst_flac_LIB_DEPENDS=	libFLAC.so:${PORTSDIR}/audio/flac

# flite
gst_flite_LIB_DEPENDS=	libflite.so:${PORTSDIR}/audio/flite

# gdk_pixbuf
gst_gdk_pixbuf_USE_GNOME=	gdkpixbuf2
gst_gdk_pixbuf_PLIST_FILES=	${GST_LIB_DIR}/libgstgdkpixbuf.la \
				${GST_LIB_DIR}/libgstgdkpixbuf.so

# gme
gst_gme_LIB_DEPENDS=	libgme.so:${PORTSDIR}/audio/libgme

# gsm
gst_gsm_LIB_DEPENDS=	libgsm.so:${PORTSDIR}/audio/gsm

# jack
gst_jack_LIB_DEPENDS=	libjack.so:${PORTSDIR}/audio/jack

# jpeg
gst_jpeg_LIB_DEPENDS=	libjpeg.so:${PORTSDIR}/graphics/jpeg

# kate
gst_kate_LIB_DEPENDS=	libkate.so:${PORTSDIR}/multimedia/libkate

# lame
gst_lame_LIB_DEPENDS=	libmp3lame.so:${PORTSDIR}/audio/lame

# libcaca
gst_libcaca_LIB_DEPENDS=	libcaca.so:${PORTSDIR}/graphics/libcaca
gst_libcaca_PLIST_FILES=	${GST_LIB_DIR}/libgstcacasink.la \
				${GST_LIB_DIR}/libgstcacasink.so

# libmms
gst_libmms_LIB_DEPENDS=	libmms.so:${PORTSDIR}/net/libmms
gst_libmms_PLIST_FILES=	${GST_LIB_DIR}/libgstmms.so \
			${GST_LIB_DIR}/libgstmms.la

# png
gst_libpng_LIB_DEPENDS=	libpng15.so:${PORTSDIR}/graphics/png
gst_libpng_PLIST_FILES=	${GST_LIB_DIR}/libgstpng.la \
			${GST_LIB_DIR}/libgstpng.so

# libvisual
gst_libvisual_LIB_DEPENDS=	libvisual-0.4.so:${PORTSDIR}/graphics/libvisual04

# mad
gst_mad_LIB_DEPENDS=	libmad.so:${PORTSDIR}/audio/libmad

# modplug
gst_modplug_LIB_DEPENDS=	libmodplug.so:${PORTSDIR}/audio/libmodplug

# mpeg2enc
gst_mpeg2enc_LIB_DEPENDS=	libmjpegutils-2.0.so:${PORTSDIR}/multimedia/mjpegtools

# mpeg2dec
gst_mpeg2dec_LIB_DEPENDS=	libmpeg2.so:${PORTSDIR}/multimedia/libmpeg2

# neon
gst_neon_LIB_DEPENDS+=  libneon.so:${PORTSDIR}/www/neon29
gst_neon_PLIST_FILES=	${GST_LIB_DIR}/libgstneonhttpsrc.la \
			${GST_LIB_DIR}/libgstneonhttpsrc.so

# ogg
gst_ogg_LIB_DEPENDS=	libogg.so:${PORTSDIR}/audio/libogg

# opencv
gst_opencv_LIB_DEPENDS=	libopencv_highgui.so:${PORTSDIR}/graphics/opencv

# openjpeg
gst_openjpeg_LIB_DEPENDS=	libopenjpeg.so:${PORTSDIR}/graphics/openjpeg

# opus
gst_opus_LIB_DEPENDS=	libopus.so:${PORTSDIR}/audio/opus

# pango
gst_pango_USE_GNOME=	pango

# pulse
gst_pulse_LIB_DEPENDS=	libpulse.so:${PORTSDIR}/audio/pulseaudio

# resindvd
gst_resindvd_BUILD_DEPENDS=	libdvdnav>=4.1.2:${PORTSDIR}/multimedia/libdvdnav
gst_resindvd_RUN_DEPENDS=	libdvdnav>=4.1.2:${PORTSDIR}/multimedia/libdvdnav

# rtmp xxx
gst_rtmp_LIB_DEPENDS=	librtmp.so.0:${PORTSDIR}/multimedia/librtmp

# shout2
# keep the version to tell de difference between libshout and libshout2
gst_shout2_LIB_DEPENDS=	libshout.so.5:${PORTSDIR}/audio/libshout2

# sidplay
gst_sidplay_LIB_DEPENDS=	libsidplay.so:${PORTSDIR}/audio/libsidplay
gst_sidplay_PLIST_FILES=	${GST_LIB_DIR}/libgstsid.so \
				${GST_LIB_DIR}/libgstsid.la

# soundtouch
gst_soundtouch_LIB_DEPENDS=	libSoundTouch.so:${PORTSDIR}/audio/soundtouch

# souphttpsrc
gst_soup_LIB_DEPENDS=	libsoup-2.4.so:${PORTSDIR}/devel/libsoup
gst_soup_GST_PLUGIN_DIR=ext/soup
gst_soup_PLIST_FILES=	${GST_LIB_DIR}/libgstsouphttpsrc.la \
			${GST_LIB_DIR}/libgstsouphttpsrc.so

# spandsp
# keep shlib version here, so we don't pick up the comms/spandsp port by accident.
gst_spandsp_LIB_DEPENDS=	libspandsp.so.2:${PORTSDIR}/comms/spandsp-devel

# speex
gst_speex_LIB_DEPENDS=	libspeex.so:${PORTSDIR}/audio/speex

# schroedinger or schro for short
gst_schro_LIB_DEPENDS=		libschroedinger-1.0.so:${PORTSDIR}/multimedia/schroedinger
gst_schro_GST_PLUGIN_DIR=	ext/schroedinger

# taglib
gst_taglib_LIB_DEPENDS=	libtag.so:${PORTSDIR}/audio/taglib

# theora
gst_theora_LIB_DEPENDS=	libtheora.so:${PORTSDIR}/multimedia/libtheora

# twolame
gst_twolame_LIB_DEPENDS=	libtwolame.so:${PORTSDIR}/audio/twolame

# gst_v4l2
gst_gst_v4l2_BUILD_DEPENDS=	v4l_compat>0:${PORTSDIR}/multimedia/v4l_compat
gst_gst_v4l2_LIB_DEPENDS=	libv4l2.so:${PORTSDIR}/multimedia/libv4l
gst_gst_v4l2_RUN_DEPENDS=	webcamd:${PORTSDIR}/multimedia/webcamd
gst_gst_v4l2_PLIST_FILES=	${GST_LIB_DIR}/libgstvideo4linux2.la \
				${GST_LIB_DIR}/libgstvideo4linux2.so
gst_gst_v4l2_GST_PLUGIN_DIR=	sys/v4l2

# vorbis
gst_vorbis_USE_GSTREAMER1=	ogg
gst_vorbis_LIB_DEPENDS=	libvorbis.so:${PORTSDIR}/audio/libvorbis

# vpx
gst_vpx_LIB_DEPENDS=	libvpx.so:${PORTSDIR}/multimedia/libvpx
gst_vpx_PLIST_FILES=	${GST_LIB_DIR}/libgstvpx.la \
			${GST_LIB_DIR}/libgstvpx.so \
			share/gstreamer-${VERSION}/presets/GstVP8Enc.prs
gst_vpx_PLIST_DIRSTRY=	share/gstreamer-${VERSION}/presets \
			share/gstreamer-${VERSION}

# webp
gst_webp_LIB_DEPENDS=	libwebp.so:${PORTSDIR}/graphics/webp

# X ximage and xvimage sinks aka output
.if ${DIST} == base
gst_x_USE_XORG=		x11 xv xext
gst_x_CONFIGURE_ARGS=	--enable-xvideo --enable-xshm
gst_x_GST_PLUGIN_DIR=	sys/ximage sys/xvimage
gst_x_PLIST_FILES=	${GST_LIB_DIR}/libgstximagesink.la \
			${GST_LIB_DIR}/libgstximagesink.so \
			${GST_LIB_DIR}/libgstxvimagesink.la \
			${GST_LIB_DIR}/libgstxvimagesink.so
.endif

.if ${DIST} == good
# Ximagesrc
gst_x_USE_XORG=		x11 xfixes xdamage xext
gst_x_CONFIGURE_ARGS=	--enable-x
gst_x_GST_PLUGIN_DIR=	sys/ximage
gst_x_PLIST_FILES=	${GST_LIB_DIR}/libgstximagesrc.la \
			${GST_LIB_DIR}/libgstximagesrc.so
.endif

# x264
gst_x264_LIB_DEPENDS=	libx264.so:${PORTSDIR}/multimedia/x264
gst_x264_PLIST_FILES=	${GST_LIB_DIR}/libgstx264.la \
			${GST_LIB_DIR}/libgstx264.so \
			share/gstreamer-${VERSION}/presets/GstX264Enc.prs
gst_x264_PLIST_DIRSTRY=	share/gstreamer-${VERSION}/presets \
			share/gstreamer-${VERSION}

# xvid
gst_xvid_LIB_DEPENDS=	libxvidcore.so:${PORTSDIR}/multimedia/xvid

# wavpack
gst_wavpack_LIB_DEPENDS=	libwavpack.so:${PORTSDIR}/audio/wavpack

# zbar
gst_zbar_LIB_DEPENDS=	libzbar.so:${PORTSDIR}/graphics/zbar

.endif # NO_GSTREAMER_COMMON

.if !defined(NO_GSTREAMER_COMMON)
gst_${GST_PLUGIN}_BUILD_DEPENDS?=
gst_${GST_PLUGIN}_LIB_DEPENDS?=
gst_${GST_PLUGIN}_RUN_DEPENDS?=
gst_${GST_PLUGIN}_USE_XORG?=
gst_${GST_PLUGIN}_PLIST_FILES?= \
		${GST_LIB_DIR}/libgst${GST_PLUGIN}${GST_PLIST_SUFFIX}.la \
		${GST_LIB_DIR}/libgst${GST_PLUGIN}${GST_PLIST_SUFFIX}.so
gst_${GST_PLUGIN}_EXTRA_LIBS?=
gst_${GST_PLUGIN}_PREBUILD_DIR?=
gst_${GST_PLUGIN}_GST_PLUGIN_DIR?=	ext/${GST_PLUGIN}
gst_${GST_PLUGIN}_POSTBUILD_DIR?=
gst_${GST_PLUGIN}_USE_GNOME?=
gst_${GST_PLUGIN}_CONFIGURE_ENV?=
gst_${GST_PLUGIN}_GLIB_SCHEMAS?=
gst_${GST_PLUGIN}_CONFIGURE_ARGS?=
gst_${GST_PLUGIN}_USE_SDL?=
gst_${GST_PLUGIN}_USE_GSTREAMER1?=

BUILD_DEPENDS+=	${gst_${GST_PLUGIN}_BUILD_DEPENDS}
LIB_DEPENDS+=	${gst_${GST_PLUGIN}_LIB_DEPENDS}
RUN_DEPENDS+=	${gst_${GST_PLUGIN}_RUN_DEPENDS}
PLIST_FILES=	${gst_${GST_PLUGIN}_PLIST_FILES}
PLIST_DIRS=	${gst_${GST_PLUGIN}_PLIST_DIRS}
PLIST_DIRSTRY=	${gst_${GST_PLUGIN}_PLIST_DIRSTRY}
EXTRA_LIBS+=	${gst_${GST_PLUGIN}_EXTRA_LIBS}
USE_XORG+=	${gst_${GST_PLUGIN}_USE_XORG}
USE_GNOME+=	${gst_${GST_PLUGIN}_USE_GNOME}
CONFIGURE_ENV+=	${gst_${GST_PLUGIN}_CONFIGURE_ENV}

.if ${gst_${GST_PLUGIN}_GLIB_SCHEMAS}!=""
GLIB_SCHEMAS=	${gst_${GST_PLUGIN}_GLIB_SCHEMAS}
.endif

CONFIGURE_ARGS+=	${gst_${GST_PLUGIN}_CONFIGURE_ARGS}

.if ${gst_${GST_PLUGIN}_USE_SDL}!=""
USE_SDL=		${gst_${GST_PLUGIN}_USE_SDL}
.endif

USE_GSTREAMER1+=	${gst_${GST_PLUGIN}_USE_GSTREAMER1} ${DIST:base=yes}
GST_PREBUILD_DIR=	${gst_${GST_PLUGIN}_GST_PREBUILD_DIR}
GST_PLUGIN_DIR=		${gst_${GST_PLUGIN}_GST_PLUGIN_DIR}
GST_POSTBUILD_DIR=	${gst_${GST_PLUGIN}_GST_POSTBUILD_DIR}

.if !target(do-build)
do-build:
.for dir in ${GST_PREBUILD_DIR} ${GST_PLUGIN_DIR} ${GST_POSTBUILD_DIR}
	@cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
		${MAKEFILE} ${MAKE_ARGS} ${ALL_TARGET}
.endfor
.endif

.if !target(do-install)
do-install:
.for dir in ${GST_PLUGIN_DIR}
	@cd ${WRKSRC}/${dir}; ${SETENV} ${MAKE_ENV} ${GMAKE} ${MAKE_FLAGS} \
		${MAKEFILE} ${MAKE_ARGS} ${INSTALL_TARGET}
.endfor
.endif
.endif
