# Created by: Thomas E. Zander with lots of help from Vladimir Kushnir
# $FreeBSD: multimedia/mplayerxp/Makefile 331423 2013-10-23 20:45:10Z ak $

PORTNAME=	mplayerxp
PORTVERSION=	0.7.2
PORTREVISION=	9
CATEGORIES=	multimedia audio
MASTER_SITES=	SF

MAINTAINER=	ports@FreeBSD.org
COMMENT=	Multi-threaded branch of the well known mplayer media player

LIB_DEPENDS=	jpeg.11:${PORTSDIR}/graphics/jpeg \
		png15:${PORTSDIR}/graphics/png \
		vcdinfo.2:${PORTSDIR}/multimedia/vcdimager
RUN_DEPENDS=	${LOCALBASE}/share/mplayer/fonts:${PORTSDIR}/multimedia/mplayer-fonts

OPTIONS_DEFINE=	DVDNAV CDPARANOIA OPTIMIZED_CFLAGS SDL TERMCAP WIN32
DVDNAV_DESC=	Enable libdvdnav support
TERMCAP_DESC=	Enable termcap key support
WIN32_DESC=	Enable win32 codec set

OPTIONS_DEFAULT=	WIN32
ONLY_FOR_ARCHS=	i386

MAKE_JOBS_UNSAFE=	yes

USE_BZIP2=	yes
USE_XORG=	xinerama xv xxf86dga xxf86vm
USES=		iconv gmake
HAS_CONFIGURE=	yes
WANT_SDL=	yes
USE_LDCONFIG=	yes

MAN1=	mplayerxp.1

WIN32_CODEC_PREFIX=	${LOCALBASE}/lib/win32

NO_STAGE=	yes
.include <bsd.port.pre.mk>

# add this after <bsd.port.pre.mk> so that we inherit /etc/make.conf
CONFIGURE_ARGS+=	--with-extralibdir=${LOCALBASE}/lib \
		--with-extraincdir=${LOCALBASE}/include \
		--cc=${CC} \
		--prefix=${PREFIX} \
		--confdir=${ETCDIR} \
		--datadir=${LOCALBASE}/share/mplayer \
		--libdir=${PREFIX}/lib \
		--disable-fbdev \
		--disable-lirc \
		--disable-rtc \
		--disable-tv-v4l
CONFIGURE_ENV+=	LANG=C
# insure CC,LD safeness
MAKE_ARGS+=	CC="${CC}" LD="${LD}" INSTALL="${INSTALL}"

CFLAGS+=	-I${LOCALBASE}/include
CFLAGS+=	-fomit-frame-pointer

##
## Feature activation and Library Dependencies
##

# cdda support
.if ${PORT_OPTIONS:MCDPARANOIA}
LIB_DEPENDS+=	cdda_paranoia.0:${PORTSDIR}/audio/cdparanoia

CONFIGURE_ARGS+=	--enable-cdparanoia
.else
CONFIGURE_ARGS+=	--disable-cdparanoia
.endif
# dvd support
.if ${PORT_OPTIONS:MDVDNAV}
LIB_DEPENDS+=	dvdread.4:${PORTSDIR}/multimedia/libdvdread

CONFIGURE_ARGS+=	--enable-libdvdread
.else
CONFIGURE_ARGS+=	--disable-libdvdread
.endif
# xine libdvdnav
.if ${PORT_OPTIONS:MDVDNAV}
LIB_DEPENDS+=	dvdnav.4:${PORTSDIR}/multimedia/libdvdnav

CONFIGURE_ARGS+=	--enable-libdvdnav
.else
CONFIGURE_ARGS+=	--disable-libdvdnav
.endif
# compilation optimizations
.if ${PORT_OPTIONS:MOPTIMIZED_CFLAGS}
CFLAGS+=	-O3 -ffast-math
.else
MAKE_ARGS+=	OPTFLAGS="${CFLAGS}" SHCFLAGS="${CFLAGS} -PIC"
.endif
# sdl
.if ${PORT_OPTIONS:MSDL}
USE_SDL=	image sdl
CONFIGURE_ARGS+=	--enable-sdl --enable-sdl-image
.else
CONFIGURE_ARGS+=	--disable-sdl --disable-sdl-image
.endif
# termcap key support
# mplayerxp does not clean up after itself yet
.if ${PORT_OPTIONS:MTERMCAP}
CONFIGURE_ARGS+=	--enable-termcap
.else
CONFIGURE_ARGS+=	--disable-termcap
.endif
# win32 binary dll codecs
.if ${PORT_OPTIONS:MWIN32}
RUN_DEPENDS+=	${CODEC_DETECTION_FILE}:${CODEC_PORT}

CODEC_PORT=	${PORTSDIR}/multimedia/win32-codecs
CODEC_DETECTION_FILE!=	${MAKE} -f ${CODEC_PORT}/Makefile -V CODEC_DETECTION_FILE
.endif

post-patch:
# win32 codec location
	@${REINPLACE_CMD} -e \
		's|WIN32_PATH|"${WIN32_CODEC_PREFIX}"|' ${WRKSRC}/loader/win32.c
# FreeBSD's install utility does not support -D flag
	@${FIND} ${WRKSRC} -name "Makefile" -print0 | \
		${XARGS} -0 ${REINPLACE_CMD} -e \
		'/INSTALL/s| -D | |g ; \
		 /install/s| -D | |g'
# PTHREAD_{CFLAGS,LIBS}
	@${REINPLACE_CMD} -e \
		'/pthread/s|_ld_i in .* ;|_ld_i in "${PTHREAD_LIBS}" ;|g ; \
		 s|pkg-config|true|g ; \
		 s|^MAKE=|#MAKE=|g' ${WRKSRC}/codecs/configure
	@${REINPLACE_CMD} -e \
		'/pthread/s|_ld_i in .* ;|_ld_i in "${PTHREAD_LIBS}" ;|g ; \
		 s|-D_THREAD_SAFE|${PTHREAD_CFLAGS}|g' ${WRKSRC}/mplayerxp/configure
#
	@${REINPLACE_CMD} -e \
		's|-Wl,-rpath |-Wl,-rpath,|g' ${WRKSRC}/codecs/common.mak
	@${REINPLACE_CMD} -e \
		'/install -d/d' ${WRKSRC}/codecs/subdir.mak

post-configure:
	@cd ${WRKSRC}/codecs && ./configure --cc=${CC} \
		--prefix=${PREFIX} \
		--confdir=${ETCDIR} \
		--datadir=${LOCALBASE}/share/mplayer \
		--libdir=${PREFIX}/lib
.if !defined(WITH_OCFLAGS)
	@${FIND} ${WRKSRC} -name "config.h" -print0 | \
		${XARGS} -0 ${REINPLACE_CMD} -e \
		'/CAN_COMPILE_/s|^#define|// #undef|g ; \
		 /_CLOBBERED/s|^#define|// #undef|g'
.endif

pre-install:
# create dirs before installation since the port uses a install
# utility option not available in FreeBSD
.for dir in etc/mplayerxp lib/mplayerxp/codecs lib/mplayerxp/wine
	@${MKDIR} ${PREFIX}/${dir}
.endfor

post-install:
	@${STRIP_CMD} ${PREFIX}/bin/mplayerxp

.include <bsd.port.post.mk>
