aboutsummaryrefslogtreecommitdiffstats
path: root/devel/godot/Makefile
blob: 787eb3c3150bef388bd8a198600a133bdede8f78 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
PORTNAME=	godot
DISTVERSION=	4.4.1
DISTVERSIONSUFFIX=	-stable
PORTREVISION?=	1
CATEGORIES=	devel games

MAINTAINER=	FreeBSD@Shaneware.biz
COMMENT?=	Game runtime engine
WWW=		https://godotengine.org/

LICENSE=	CC-BY-3.0 MIT
LICENSE_COMB=	multi
LICENSE_FILE_CC-BY-3.0=	${WRKSRC}/LOGO_LICENSE.txt
LICENSE_FILE_MIT=	${WRKSRC}/LICENSE.txt

BUILD_DEPENDS=	yasm:devel/yasm
LIB_DEPENDS=	libfreetype.so:print/freetype2 \
		libgraphite2.so:graphics/graphite2 \
		libharfbuzz-icu.so:print/harfbuzz-icu \
		libharfbuzz.so:print/harfbuzz \
		libpcre2-32.so:devel/pcre2 \
		libpng.so:graphics/png \
		libvpx.so:multimedia/libvpx
RUN_DEPENDS=	xdg-open:devel/xdg-utils \
		xdg-user-dir:devel/xdg-user-dirs \
		xmessage:x11/xmessage

USES=		compiler:c++17-lang cpe gl pkgconfig scons
CPE_VENDOR=	godotengine
USE_GITHUB=	yes
GH_ACCOUNT=	godotengine
USE_GL=		gl glew glu

MAKE_ARGS+=		platform=linuxbsd \
			builtin_freetype=False \
			builtin_graphite=False \
			builtin_harfbuzz=False \
			builtin_libpng=False \
			builtin_libvpx=False \
			builtin_pcre2=False \
			builtin_zlib=False \
			verbose=True \
			${MAKE_ARGS_${CHOSEN_COMPILER_TYPE}}
MAKE_ARGS_clang=	use_llvm=True

CXXFLAGS_i386=		${CXXFLAGS_i386_${CHOSEN_COMPILER_TYPE}}
CXXFLAGS_i386_gcc=	-march=i586

GODOTFILE=	${PORTNAME}${PKGNAMESUFFIX}
PLIST_FILES=	bin/${GODOTFILE}

OPTIONS_DEFINE=		EXAMPLES MOLD TEST TOOLS UDEV WAYLAND X11
OPTIONS_DEFAULT=	ALSA UDEV WAYLAND X11
OPTIONS_GROUP=		AUDIO
OPTIONS_GROUP_AUDIO=	ALSA PULSEAUDIO
# Moved to devel/godot-tools
OPTIONS_EXCLUDE?=	EXAMPLES TOOLS

AUDIO_DESC=	Audio support
MOLD_DESC=	Use mold linker for faster compilation
TOOLS_DESC=	Include development tools (IDE)
UDEV_DESC=	Libudev support (Joystick)

ALSA_LIB_DEPENDS=		libasound.so:audio/alsa-lib
ALSA_MAKE_ARGS=			alsa=True
ALSA_MAKE_ARGS_OFF=		alsa=False

# master head at 6/3 - no branch made for 4.4 yet
EXAMPLES_GH_TUPLE=		godotengine:godot-demo-projects:fdb2f50a2088:DEMOS
EXAMPLES_PORTEXAMPLES=		*

MOLD_BUILD_DEPENDS=		mold:devel/mold
MOLD_MAKE_ARGS=			linker=mold
MOLD_MAKE_ARGS_OFF=		linker=lld

PULSEAUDIO_LIB_DEPENDS=		libpulse.so:audio/pulseaudio
PULSEAUDIO_MAKE_ARGS=		pulseaudio=True
PULSEAUDIO_MAKE_ARGS_OFF=	pulseaudio=False

TEST_MAKE_ARGS=			tests=True

TOOLS_MAKE_ARGS=		target=editor
TOOLS_MAKE_ARGS_OFF=		target=template_release
TOOLS_DESKTOP_ENTRIES=		"Godot Engine" "${COMMENT}" "${GODOTFILE}" \
				"${GODOTFILE}" "Development;IDE;" ""
TOOLS_PLIST_FILES=		share/icons/hicolor/256x256/apps/${GODOTFILE}.png \
				share/icons/hicolor/scalable/apps/${GODOTFILE}.svg

UDEV_BUILD_DEPENDS=		${PREFIX}/include/linux/input.h:devel/evdev-proto
UDEV_LIB_DEPENDS=		libudev.so:devel/libudev-devd
UDEV_MAKE_ARGS=			udev=True
UDEV_MAKE_ARGS_OFF=		udev=False

WAYLAND_BUILD_DEPENDS=		wayland-protocols>0:graphics/wayland-protocols
WAYLAND_LIB_DEPENDS=		libwayland-client.so:graphics/wayland \
				libxkbcommon.so:x11/libxkbcommon
WAYLAND_MAKE_ARGS=		wayland=True libdecor=True
WAYLAND_MAKE_ARGS_OFF=		wayland=False

X11_USES=			xorg
X11_USE=			XORG=x11,xcursor,xext,xi,xinerama,xrandr,xrender
X11_MAKE_ARGS=			x11=True
X11_MAKE_ARGS_OFF=		x11=False

.ifmake makesum
# Always include optional distfiles
.MAKEFLAGS:	WITH="${OPTIONS_DEFINE}" OPTIONS_EXCLUDE=
.endif

.include <bsd.port.options.mk>

.if ${ARCH} == powerpc || ${ARCH:Mriscv64*}
MAKE_ARGS+=	module_embree_enabled=no \
		module_raycast_enabled=no \
		module_webm_enabled=no
.endif

post-patch:
	@${REINPLACE_CMD} -e 's|custom_build|${OPSYS}_Ports_build|' \
		${WRKSRC}/methods.py

# The official godot binary name reflects options used to compile
# We just want a simple name matching the portname
# This gives us bin/godot for runtime and bin/godot-tools for the IDE
do-install:
	@${RM} ${WRKSRC}/bin/*.debugsymbols
	cd ${WRKSRC}/bin && ${INSTALL_PROGRAM} godot.linuxbsd* \
		${STAGEDIR}/${PREFIX}/bin/${GODOTFILE}

do-install-EXAMPLES-on:
	(cd ${WRKSRC_DEMOS} && ${COPYTREE_SHARE} "${PORTEXAMPLES}" \
		${STAGEDIR}${EXAMPLESDIR})

do-install-TOOLS-on:
	@${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps \
		  ${STAGEDIR}${PREFIX}/share/icons/hicolor/scalable/apps
	${INSTALL_DATA} ${WRKSRC}/icon.png \
		${STAGEDIR}${PREFIX}/share/icons/hicolor/256x256/apps/${GODOTFILE}.png
	${INSTALL_DATA} ${WRKSRC}/icon.svg \
		${STAGEDIR}${PREFIX}/share/icons/hicolor/scalable/apps/${GODOTFILE}.svg

.if ${PORT_OPTIONS:MTEST}
do-test:
	${MKDIR} ~/.cache/godot
	cd ${TEST_WRKSRC} && bin/godot.linuxbsd* --verbose --test
.endif

.include <bsd.port.mk>