aboutsummaryrefslogtreecommitdiff
path: root/multimedia/x264/Makefile
blob: bebb2934cc6b17bbb42a7ed48668e4d3364d9228 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#
# NOTES FOR UPDATING PORT:
#
# We use tarballs from the *stable* branch of the upstream git repository.
#
# X264_BUILD is the "core" number, and can be found in x264.h.
#
# X264_REV requires a checkout the git revision for the version the port
# is being updated to. Then run version.sh against it.
#
# Bumping PORTREVISION for dependent ports? This is useful:
#   fgrep -lr --include='*/Makefile*' :multimedia/libx264 $PORTSDIR |
#   sed 's,/Makefile.*,,' | xargs $PORTSDIR/Tools/scripts/bump-revision.sh
# or
#   rg -l :multimedia/libx264 $PORTSDIR | xargs -n1 portedit bump-revision -i

PORTNAME=	x264
PORTVERSION=	0.${X264_BUILD}.${X264_REV}
PORTREVISION?=	0
CATEGORIES=	multimedia
MASTER_SITES=	https://samples.mplayerhq.hu/yuv4mpeg2/:pgo
DIST_SUBDIR=	x264
EXTRACT_ONLY=	${DISTNAME}${EXTRACT_SUFX}

MAINTAINER=	bofh@FreeBSD.org
COMMENT?=	H.264/MPEG-4 AVC Video Encoding (Front End CLI)
WWW=		https://www.videolan.org/x264.html

LICENSE=	GPLv2
LICENSE_FILE=	${WRKSRC}/COPYING

BUILD_DEPENDS=	bash:shells/bash
LIB_DEPENDS?=	libx264.so:multimedia/libx264

X264_BUILD=	164
X264_REV=	3095
X264_GITVER=	${GL_COMMIT:C/^(.{7}).*/\1/}

USES?=		pkgconfig
USES+=		compiler:c11 gmake localbase shebangfix
USE_GITLAB=	yes
USE_LDCONFIG=	yes
GL_SITE=	https://code.videolan.org
GL_ACCOUNT=	videolan
GL_COMMIT=	baee400fa9ced6f5481a728138fed6e867b0ff7f
HAS_CONFIGURE=	yes
SHEBANG_FILES=	configure
PLIST_FILES?=	bin/x264

OPTIONS_DEFINE+=	BASH DEBUG FFMS LAVF PGO SWSCALE
OPTIONS_RADIO+=		MP4
OPTIONS_RADIO_MP4+=	GPAC LSMASH
OPTIONS_DEFAULT+=	BASH FFMS LAVF LSMASH SWSCALE

.if make(makesum) # for optional distfiles
.MAKEFLAGS:	WITH="${OPTIONS_DEFINE}"
.endif

FFMS_DESC=		FFmpeg Source input support
GPAC_DESC=		GPAC library support
LAVF_DESC=		libav* format input support (requires FFmpeg)
LSMASH_DESC=		L-SMASH library support
MP4_DESC=		MPEG-4 output
SWSCALE_DESC=		Resize video filter

BASH_BUILD_DEPENDS=	bash-completion>0:shells/bash-completion
BASH_RUN_DEPENDS=	bash-completion>0:shells/bash-completion
BASH_CONFIGURE_ENABLE=	bashcompletion
BASH_PLIST_FILES=	share/bash-completion/completions/x264

DEBUG_CONFIGURE_ENABLE=	debug
DEBUG_CONFIGURE_OFF=	--enable-strip

FFMS_LIB_DEPENDS=	libffms2.so:multimedia/ffms2
FFMS_CONFIGURE_ENABLE=	ffms
FFMS_IMPLIES=		SWSCALE

GPAC_LIB_DEPENDS=	libgpac.so:multimedia/gpac-libgpac
GPAC_CONFIGURE_ENABLE=	gpac

LAVF_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg \
			libavformat.so:multimedia/ffmpeg \
			libavutil.so:multimedia/ffmpeg
LAVF_CONFIGURE_ENABLE=	lavf
LAVF_IMPLIES=		SWSCALE

LSMASH_LIB_DEPENDS=	liblsmash.so:multimedia/l-smash
LSMASH_CONFIGURE_ENABLE=lsmash

PGO_DISTFILES=		${Y4M_VIDEO_DISTFILE}:pgo
PGO_MAKE_ENV=		VIDS="${WRKDIR}/${Y4M_VIDEO}"
PGO_ALL_TARGET=		fprofiled
# y4m sample video
Y4M_VIDEO=		example.y4m
Y4M_VIDEO_DISTFILE=	example.y4m.bz2
PGO_VARS=		USE_GCC=yes \
			LICENSE+=PGO LICENSE_COMB=multi

# ${Y4M_VIDEO_DISTFILE} file may not be mirrored
LICENSE_NAME_PGO=	PGO
LICENSE_DISTFILES_PGO=	${Y4M_VIDEO_DISTFILE}
LICENSE_PERMS_PGO=	auto-accept

SWSCALE_LIB_DEPENDS=	libavutil.so:multimedia/ffmpeg \
			libswscale.so:multimedia/ffmpeg
SWSCALE_CONFIGURE_ENABLE=	swscale

CONFIGURE_ARGS?=	--system-libx264
CONFIGURE_ARGS+=	--prefix="${PREFIX}" \
			--extra-cflags="${CPPFLAGS} ${CFLAGS}" \
			--extra-ldflags="${LDFLAGS}"

post-extract-PGO-on:
	@${BZIP2_CMD} -dc ${DISTDIR}/${DIST_SUBDIR}/${Y4M_VIDEO_DISTFILE} \
		>${WRKDIR}/${Y4M_VIDEO}

post-patch:
	@${REINPLACE_CMD} -e ' \
		s|gpac_static|gpac|g' \
		${WRKSRC}/configure
	@${REINPLACE_CMD} -e ' \
		s|bash|sh|; \
		s|VER="x"|VER="${X264_REV} ${X264_GITVER}"|; \
		s|VERSION=""|VERSION=" r${X264_REV} ${X264_GITVER}"|' \
		${WRKSRC}/version.sh

.if !target(pre-build)
pre-build:
	@(${RM} ${WRKSRC}/x264_config.h)
.endif

.include <bsd.port.mk>