summaryrefslogtreecommitdiff
path: root/multimedia/arcan/Makefile
blob: 04c42c748903fa913e0affc2b69bca605265736d (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
PORTNAME=	arcan
DISTVERSION=	0.6.2.1
PORTREVISION=	3
CATEGORIES=	multimedia

PATCH_SITES=	https://github.com/${GH_ACCOUNT}/${GH_PROJECT}/commit/
PATCHFILES+=	9b807ac75c6f.patch:-p2 # https://github.com/letoram/arcan/issues/258

MAINTAINER=	jbeich@FreeBSD.org
COMMENT=	Display Server, Multimedia Framework, Game Engine
WWW=		https://arcan-fe.com/

LICENSE=	BSD3CLAUSE GPLv2+ LGPL21+
LICENSE_COMB=	multi
LICENSE_FILE_BSD3CLAUSE=${WRKSRC:H}/data/distr/LICENSE.BSD
LICENSE_FILE_GPLv2+ =	${WRKSRC:H}/data/distr/LICENSE.GPL
LICENSE_FILE_LGPL21+ =	${WRKSRC:H}/data/distr/LICENSE.LGPL

BUILD_DEPENDS=	evdev-proto>0:devel/evdev-proto
LIB_DEPENDS=	libdrm.so:graphics/libdrm \
		libfreetype.so:print/freetype2
RUN_DEPENDS=	mesa-dri>0:graphics/mesa-dri

USES=		cmake compiler:c11 gl iconv openal pkgconfig sqlite
USE_GITHUB=	yes
USE_GL=		egl gbm gl
USE_LDCONFIG=	yes
GH_ACCOUNT=	letoram
WRKSRC_SUBDIR=	src
CMAKE_ON=	HYBRID_HEADLESS
CMAKE_OFF=	STATIC_LIBUVC
CMAKE_ARGS=	-DDISTR_TAG:STRING="portbld" \
		-DENGINE_BUILDTAG:STRING="${DISTVERSIONFULL}"
LDFLAGS+=	-Wl,--as-needed # bzip2, ffmpeg, librt, libutil, lzma, zlib
LDFLAGS_i386=	-Wl,-z,notext

OPTIONS_DEFINE=	ESPEAK FFMPEG LUAJIT MANPAGES SDL SUID TESSERACT UVC VLC VNC WAYLAND
OPTIONS_DEFAULT=ESPEAK FFMPEG LUAJIT MANPAGES SDL SUID TESSERACT UVC VLC VNC WAYLAND
OPTIONS_SUB=	yes

ESPEAK_LIB_DEPENDS=	libespeak-ng.so:audio/espeak-ng
FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg

MANPAGES_USES=		ruby:build

LUAJIT_DESC=		Use LuaJIT instead of standard Lua
LUAJIT_USES=		luajit
LUAJIT_USES_OFF=	lua:51
LUAJIT_CMAKE_BOOL_OFF=	DISABLE_JIT

SDL_USES=		sdl
SDL_USE=		SDL=sdl2
SDL_CMAKE_BOOL=		HYBRID_SDL

SUID_DESC=		setuid bit on "${PORTNAME}" binary
SUID_PLIST_SUB=		MAYBE_SUID="@(,,4755) "
SUID_PLIST_SUB_OFF=	MAYBE_SUID="@(,,0755) "

TESSERACT_DESC=		Optical Character Recognition via Tesseract
TESSERACT_LIB_DEPENDS=	libtesseract.so:graphics/tesseract

VLC_DESC=		Video decode via libvlc
VLC_LIB_DEPENDS=	libvlc.so:multimedia/vlc

UVC_DESC=		USB video cameras via libuvc
UVC_LIB_DEPENDS=	libuvc.so:multimedia/libuvc
UVC_CMAKE_BOOL=		FSRV_DECODE_UVC

VNC_DESC=		VNC client/server support
VNC_LIB_DEPENDS=	libvncserver.so:net/libvncserver

WAYLAND_CATEGORIES=	wayland
WAYLAND_BUILD_DEPENDS=	wayland-protocols>0:graphics/wayland-protocols
WAYLAND_LIB_DEPENDS=	libwayland-server.so:graphics/wayland \
			libxcb-icccm.so:x11/xcb-util-wm \
			libxkbcommon.so:x11/libxkbcommon
WAYLAND_RUN_DEPENDS=	xwayland-devel>0:x11-servers/xwayland-devel
WAYLAND_USES=		xorg
WAYLAND_USE=		XORG=xcb
WAYLAND_CMAKE_BOOL_OFF=	DISABLE_WAYLAND

post-patch:
	@${REINPLACE_CMD} -i.prefix 's,/usr/local,${PREFIX},g' \
		${WRKSRC:H}/doc/${PORTNAME}.1 \
		${WRKSRC}/engine/arcan_vr.c \
		${WRKSRC}/frameserver/decode/default/decode_av.c \
		${WRKSRC}/frameserver/terminal/default/arcterm.c \
		${WRKSRC}/frameserver/terminal/default/cli.c \
		${WRKSRC}/frameserver/terminal/default/cli_builtin.c \
		${WRKSRC}/platform/posix/paths.c \
		${WRKSRC}/shmif/arcan_shmif_debugif.c

pre-configure-MANPAGES-on:
	@${RUBY} -C ${WRKSRC:H}/doc -Ku docgen.rb mangen 2>/dev/null

post-patch-ESPEAK-off:
	@${REINPLACE_CMD} -i.noespeak '/find.*Espeak/d' \
		${WRKSRC}/frameserver/decode/default/CMakeLists.txt

post-patch-FFMPEG-off:
	@${REINPLACE_CMD} -i.noffmpeg '/pkg.*FFMPEG/d' \
		${WRKSRC}/a12/CMakeLists.txt \
		${WRKSRC}/frameserver/decode/default/CMakeLists.txt \
		${WRKSRC}/frameserver/encode/default/CMakeLists.txt

post-patch-TESSERACT-off:
	@${REINPLACE_CMD} -i.notesseract '/pkg.*tesseract/d' \
		${WRKSRC}/frameserver/encode/default/CMakeLists.txt

post-patch-VNC-off:
	@${REINPLACE_CMD} -i.novnc '/pkg.*libvnc/d' \
		${WRKSRC}/frameserver/encode/default/CMakeLists.txt \
		${WRKSRC}/frameserver/remoting/default/CMakeLists.txt

.include <bsd.port.mk>