aboutsummaryrefslogtreecommitdiff
path: root/multimedia/libv4l/Makefile
blob: e24c4033c92cb51d8b1c9d6096f97cf9899a7d00 (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
# Created by: Andrew Thompson <thompsa@FreeBSD.org>
# Check v4l_compat and v4l-utils slave ports

PORTNAME?=	libv4l
PORTVERSION=	1.20.0
PORTREVISION=	1
DISTVERSIONPREFIX=	v4l-utils-
CATEGORIES=	multimedia

MAINTAINER=	multimedia@FreeBSD.org
COMMENT?=	Video4Linux library

LICENSE=	GPLv2 LGPL21
LICENSE_COMB=	dual

USES=		compiler:c11 tar:bzip2

USE_GITHUB=	yes
GH_ACCOUNT=	hselasky
GH_PROJECT=	v4l-utils

GH_TUPLE=	hselasky:webcamd:v5.10.6.0:webcamd \
		torvalds:linux:v5.10-rc6:linux

WEBCAMDDIR=	${WRKDIR}/webcamd-5.10.6.0
LINUXDIR=	${WRKDIR}/linux-*

.if ${PORTNAME} == v4l-utils || ${PORTNAME} == libv4l
LIB_DEPENDS+=	libargp.so:devel/argp-standalone \
		libudev.so:devel/libudev-devd
BUILD_DEPENDS+= gsed>0:textproc/gsed \
		v4l_compat>=${PORTVERSION}:multimedia/v4l_compat

GNU_CONFIGURE=	yes
CPPFLAGS+=	-I${LOCALBASE}/include
LDFLAGS+=	-L${LOCALBASE}/lib
USES+=		autoreconf gettext-tools gmake iconv jpeg libtool pathfix pkgconfig
USE_LDCONFIG=	yes
CONFIGURE_ARGS=	\
	--disable-qv4l2 \
	--disable-qvidcap \
	--disable-nls
BINARY_ALIAS=	sed=gsed
INSTALL_TARGET=	install-strip
.endif

.if ${PORTNAME} == v4l_compat
RUN_DEPENDS+=	evdev-proto>=5.3:devel/evdev-proto
.endif

.if ${PORTNAME} == v4l-utils
USES+=		perl5
BUILD_DEPENDS+=	libv4l>=${PORTVERSION}:multimedia/libv4l
LIB_DEPENDS+=	libepoll-shim.so:devel/libepoll-shim \
		libv4l2.so:multimedia/libv4l
LDFLAGS+=	-lepoll-shim
CONFIGURE_ARGS+= \
	--enable-v4l-utils \
	--without-v4l2-compliance
.endif

.if ${PORTNAME} == libv4l
CONFIGURE_ENV+= \
	libudev_CFLAGS=" "
CONFIGURE_ARGS+= \
	--disable-v4l-utils \
	--enable-dyn-libv4l \
	--enable-libdvbv5
.endif

post-patch:
# Remove old FreeBSD include files (to be removed upstream)
	@${RM} -r ${WRKSRC}/contrib/freebsd/include/*
# Create symbolic link for Linux sources
	@(${RM} -r ${WEBCAMDDIR}/media_tree && ${LN} -s ${LINUXDIR} ${WEBCAMDDIR}/media_tree)
# Apply webcamd patches first
	@(cd ${WEBCAMDDIR}/patches && ${SH} ./do_patch.sh)
# Patch all source files
	@${FIND} ${WRKSRC} ${LINUXDIR}/include/uapi \
		-type f \( -iname "*.[ch]" -or -iname "*.cpp" -or -iname "cec-gen.pl" \) | \
		${XARGS} -n 10 ${REINPLACE_CMD} \
			-e 's|__inline__|inline|g' \
			-e 's|__u8|uint8_t|g' \
			-e 's|__s8|int8_t|g' \
			-e 's|__le16|uint16_t|g' \
			-e 's|__be16|uint16_t|g' \
			-e 's|__u16|uint16_t|g' \
			-e 's|__s16|int16_t|g' \
			-e 's|__le32|uint32_t|g' \
			-e 's|__be32|uint32_t|g' \
			-e 's|__u32|uint32_t|g' \
			-e 's|__s32|int32_t|g' \
			-e 's|__le64|uint64_t|g' \
			-e 's|__be64|uint64_t|g' \
			-e 's|__u64|uint64_t|g' \
			-e 's|__s64|int64_t|g' \
			-e 's|uint16_t_to_cpu|letoh16|g' \
			-e 's|uint32_t_to_cpu|letoh32|g' \
			-e 's|uint64_t_to_cpu|letoh64|g' \
			-e 's|error_t|int|g' \
			-e 's|"gettext.h"|<stdio.h>|g' \
			-e 's|MSG_MORE|0|g' \
			-e 's|EBADR|EFAULT|g' \
			-e 's|ENONET|EHOSTDOWN|g' \
			-e 's|_IOC_READ|IOC_OUT|g' \
			-e 's|_IOC_WRITE|IOC_IN|g' \
			-e 's|_IOC_NONE|IOC_VOID|g' \
			-e 's|<endian.h>|<sys/endian.h>|g' \
			-e 's|<linux/compiler.h>|<sys/cdefs.h>|g' \
			-e 's|"compiler.h"|<sys/cdefs.h>|g' \
			-e 's|fallthrough;|;|g' \
			-e 's|<linux/errno.h>|<errno.h>|g' \
			-e 's|<linux/ioctl.h>|<sys/ioctl.h>|g' \
			-e '/^.*\<linux\/kernel.h\>.*/d' \
			-e 's|<linux/string.h>|<string.h>|g' \
			-e 's|<linux/sysmacros.h>|<sys/types.h>|g' \
			-e 's|<malloc.h>|<stdlib.h>|g' \
			-e 's|<sys/epoll.h>|<libepoll-shim/sys/epoll.h>|g' \
			-e 's|<sys/sysmacros.h>|<sys/types.h>|g' \
			-e 's|/usr/bin/perl|${LOCALBASE}/bin/perl|g' \
			-e 's|__user||g'

.include <bsd.port.mk>