1PORTNAME=	x264
2PORTVERSION=	0.${X264_BUILD}.${X264_REV}
3PORTREVISION?=	2
4CATEGORIES=	multimedia
5MASTER_SITES=	https://samples.mplayerhq.hu/yuv4mpeg2/:pgo
6DIST_SUBDIR=	x264
7EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}
8
9MAINTAINER=	ports@MidnightBSD.org
10COMMENT?=	H.264/MPEG-4 AVC Video Encoding (Front End CLI)
11WWW=		https://www.videolan.org/x264.html
12
13LICENSE=	gpl2
14LICENSE_FILE=	${WRKSRC}/COPYING
15
16BUILD_DEPENDS=	bash:shells/bash \
17		nasm>=2.13:devel/nasm
18LIB_DEPENDS?=	libx264.so:multimedia/libx264
19
20X264_BUILD=	164
21X264_REV=	3095
22X264_GITVER=	${GL_TAGNAME:C/^(.{7}).*/\1/}
23
24USES?=		pkgconfig
25USES+=		compiler:c11 gmake localbase shebangfix
26USE_GITLAB=	yes
27USE_LDCONFIG=	yes
28GL_SITE=	https://code.videolan.org
29GL_ACCOUNT=	videolan
30GL_TAGNAME=	baee400fa9ced6f5481a728138fed6e867b0ff7f
31HAS_CONFIGURE=	yes
32CONFIGURE_ARGS+=       --host=${ARCH}-portbld-freebsd12.4
33SHEBANG_FILES=	configure
34PLIST_FILES?=	bin/x264
35
36OPTIONS_DEFINE+=	BASH DEBUG FFMS LAVF PGO SWSCALE
37OPTIONS_RADIO+=		MP4
38OPTIONS_RADIO_MP4+=	GPAC LSMASH
39OPTIONS_DEFAULT+=	BASH FFMS LAVF LSMASH SWSCALE
40
41.if make(makesum) # for optional distfiles
42.MAKEFLAGS:	WITH="${OPTIONS_DEFINE}"
43.endif
44
45FFMS_DESC=		FFmpeg Source input support
46GPAC_DESC=		GPAC library support
47LAVF_DESC=		libav* format input support (requires FFmpeg)
48LSMASH_DESC=		L-SMASH library support
49MP4_DESC=		MPEG-4 output
50SWSCALE_DESC=		Resize video filter
51
52BASH_BUILD_DEPENDS=	bash-completion>0:shells/bash-completion
53BASH_RUN_DEPENDS=	bash-completion>0:shells/bash-completion
54BASH_CONFIGURE_ENABLE=	bashcompletion
55BASH_PLIST_FILES=	share/bash-completion/completions/x264
56
57DEBUG_CONFIGURE_ENABLE=	debug
58DEBUG_CONFIGURE_OFF=	--enable-strip
59
60FFMS_LIB_DEPENDS=	libffms2.so:multimedia/ffms2
61FFMS_CONFIGURE_ENABLE=	ffms
62FFMS_IMPLIES=		SWSCALE
63
64GPAC_LIB_DEPENDS=	libgpac.so:multimedia/gpac-libgpac
65GPAC_CONFIGURE_ENABLE=	gpac
66
67LAVF_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
68			libavformat.so:multimedia/ffmpeg \
69			libavutil.so:multimedia/ffmpeg
70LAVF_CONFIGURE_ENABLE=	lavf
71LAVF_IMPLIES=		SWSCALE
72
73LSMASH_LIB_DEPENDS=	liblsmash.so:multimedia/l-smash
74LSMASH_CONFIGURE_ENABLE=lsmash
75
76PGO_DISTFILES=		${Y4M_VIDEO_DISTFILE}:pgo
77PGO_MAKE_ENV=		VIDS="${WRKDIR}/${Y4M_VIDEO}"
78PGO_ALL_TARGET=		fprofiled
79# y4m sample video
80Y4M_VIDEO=		example.y4m
81Y4M_VIDEO_DISTFILE=	example.y4m.bz2
82PGO_VARS=		USE_GCC=yes \
83			LICENSE+=PGO LICENSE_COMB=multi
84
85# ${Y4M_VIDEO_DISTFILE} file may not be mirrored
86LICENSE_NAME_PGO=	PGO
87LICENSE_DISTFILES_PGO=	${Y4M_VIDEO_DISTFILE}
88LICENSE_PERMS_PGO=	auto-accept
89
90SWSCALE_LIB_DEPENDS=	libavutil.so:multimedia/ffmpeg \
91			libswscale.so:multimedia/ffmpeg
92SWSCALE_CONFIGURE_ENABLE=	swscale
93
94CONFIGURE_ARGS?=	--system-libx264
95CONFIGURE_ARGS+=	--prefix="${PREFIX}" \
96			--extra-cflags="${CPPFLAGS} ${CFLAGS}" \
97			--extra-ldflags="${LDFLAGS}"
98
99post-extract-PGO-on:
100	@${BZIP2_CMD} -dc ${DISTDIR}/${DIST_SUBDIR}/${Y4M_VIDEO_DISTFILE} \
101		>${WRKDIR}/${Y4M_VIDEO}
102
103post-patch:
104	@${REINPLACE_CMD} -e ' \
105		s|gpac_static|gpac|g' \
106		${WRKSRC}/configure
107	@${REINPLACE_CMD} -e ' \
108		s|bash|sh|; \
109		s|VER="x"|VER="${X264_REV} ${X264_GITVER}"|; \
110		s|VERSION=""|VERSION=" r${X264_REV} ${X264_GITVER}"|' \
111		${WRKSRC}/version.sh
112	${CP} ${PORTSDIR}/Templates/config.guess ${WRKSRC}/
113#	${CP} ${PORTSDIR}/Templates/config.sub ${WRKSRC}/
114	${CHMOD} 755 ${WRKSRC}/config.*
115
116.if !target(pre-build)
117pre-build:
118	@(${RM} ${WRKSRC}/x264_config.h)
119.endif
120
121.include <bsd.port.mk>
122