1PORTNAME=	devilutionX
2DISTVERSION=	1.5.4
3CATEGORIES=	games
4MASTER_SITES=	https://github.com/diasurgical/devilutionx-assets/releases/download/${DATA_VERSION}/:data
5DISTFILES=	devilutionx.mpq?tag=${DATA_VERSION}:data
6EXTRACT_ONLY=	${DISTFILES:N*\:data:C/:.*//}
7
8MAINTAINER=	ports@MidnightBSD.org
9COMMENT=	Diablo I engine for modern operating systems
10WWW=		https://github.com/diasurgical/DevilutionX
11
12LICENSE=	CC-BY-NC-SA-4.0 OFL11 SUL
13LICENSE_COMB=	multi
14LICENSE_NAME_SUL=	Sustainable Use License
15LICENSE_FILE_SUL=	${WRKSRC}/LICENSE.md
16LICENSE_PERMS_SUL=	dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
17
18BUILD_DEPENDS=	${LOCALBASE}/include/SimpleIni.h:devel/simpleini
19LIB_DEPENDS=	libfmt.so:devel/libfmt
20
21USES=		cmake compiler:c++11-lang dos2unix gettext-tools pkgconfig sdl
22DOS2UNIX_GLOB=	*.cpp *.h CMakeLists.txt Dependencies.cmake
23USE_GITHUB=	yes
24GH_ACCOUNT=	diasurgical
25GH_PROJECT=	DevilutionX
26GH_TUPLE=	diasurgical:libsmackerdec:91e732bb6953489077430572f43fc802bf2c75b2:libsmackerdec/_deps/libsmackerdec-src \
27		diasurgical:libmpq:b78d66c6fee6a501cc9b95d8556a129c68841b05:libmpq/_deps/libmpq-src
28USE_SDL=	sdl2 image2
29
30CMAKE_ARGS=	-DCMAKE_INSTALL_SHAREDIR:PATH=${PREFIX}/share \
31		-DVERSION_NUM="${PORTVERSION}.0"
32CMAKE_ON=	DDEVILUTIONX_SYSTEM_LIBFMT \
33		FETCHCONTENT_FULLY_DISCONNECTED
34
35DATA_VERSION=	v4
36DATADIR=	${PREFIX}/share/diasurgical/devilutionx
37
38OPTIONS_DEFINE=		TEST SOUND LTO DEBUG
39OPTIONS_GROUP=		NETWORKING
40OPTIONS_GROUP_NETWORKING=	NETWORK TCP ZEROTIER ENCRYPTION
41OPTIONS_DEFAULT=	LTO NETWORK TCP ENCRYPTION SOUND
42
43TEST_CMAKE_BOOL=	BUILD_TESTING
44TEST_BUILD_DEPENDS=	googletest>0:devel/googletest
45
46NETWORK_DESC=		Enable network support
47NETWORK_CMAKE_BOOL_OFF=	NONET
48
49TCP_DESC=		TCP multiplayer option
50TCP_CMAKE_BOOL_OFF=	DISABLE_TCP
51TCP_IMPLIES=		NETWORK
52TCP_GH_TUPLE=		diasurgical:asio:4bcf552fcea3e1ae555dde2ab33bc9fa6770da4d:asio/_deps/asio-src
53
54ZEROTIER_DESC=		ZeroTier multiplayer option (broken)
55ZEROTIER_BROKEN=	does not build: fatal error: 'sys/appleapiopts.h' file not found
56ZEROTIER_CMAKE_BOOL_OFF=DISABLE_ZERO_TIER
57ZEROTIER_IMPLIES=	NETWORK
58ZEROTIER_GH_TUPLE=	diasurgical:libzt:d6c6a069a5041a3e89594c447ced3f15d77618b8:libzt/_deps/libzt-src \
59			diasurgical:ZeroTierOne:b1350ac91118d1bd6bb71c0c41be5f4a30196838:ZeroTierOne/_deps/libzt-src/ext/ZeroTierOne \
60			diasurgical:lwip:1bf7e011caf4e992ad139f6cb8c9818a9c1fbe1b:lwip/_deps/libzt-src/ext/lwip \
61			diasurgical:lwip-contrib:1f9e26e221a41542563834222c4ec8399be1908f:lwipcontrib/_deps/libzt-src/ext/lwip-contrib
62
63ENCRYPTION_DESC=	Encrypt network packets
64ENCRYPTION_CMAKE_BOOL=	PACKET_ENCRYPTION
65ENCRYPTION_IMPLIES=	NETWORK
66ENCRYPTION_LIB_DEPENDS=	libsodium.so:security/libsodium
67
68SOUND_CMAKE_BOOL_OFF=	NOSOUND
69SOUND_LIB_DEPENDS=	libSDL_audiolib.so:audio/sdl_audiolib
70
71LTO_CMAKE_BOOL_OFF=	DISABLE_LTO
72
73DEBUG_CMAKE_BOOL=	DEBUG
74
75post-extract:
76	@${MKDIR} ${BUILD_WRKSRC}
77	@${LN} -s ${WRKSRC}/_deps ${BUILD_WRKSRC}/_deps
78
79post-patch:
80	@${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|' ${WRKSRC}/Source/init.cpp
81
82do-install:
83	${INSTALL_PROGRAM} ${BUILD_WRKSRC}/devilutionx ${PREFIX}/bin
84	${INSTALL_DATA} ${WRKSRC}/Packaging/nix/devilutionx.desktop ${PREFIX}/share/applications
85	${INSTALL_DATA} ${WRKSRC}/Packaging/nix/devilutionx-hellfire.desktop ${PREFIX}/share/applications
86	@${MKDIR} ${PREFIX}/share/icons/hicolor/512x512/apps
87	${INSTALL_DATA} ${WRKSRC}/Packaging/resources/icon.png ${PREFIX}/share/icons/hicolor/512x512/apps/devilutionx.png
88	${INSTALL_DATA} ${WRKSRC}/Packaging/resources/hellfire.png ${PREFIX}/share/icons/hicolor/512x512/apps/devilutionx-hellfire.png
89	@${MKDIR} ${DATADIR}
90	${INSTALL_DATA} ${DISTDIR}/devilutionx.mpq?tag=${DATA_VERSION} ${DATADIR}/devilutionx.mpq
91
92do-test-TEST-on:
93	@cd ${TEST_WRKSRC} && ${SETENV} ${TEST_ENV} ${LOCALBASE}/bin/ctest -V
94
95.if make(makesum)
96GH_TUPLE+=	${TCP_GH_TUPLE} \
97		${ZEROTIER_GH_TUPLE} \
98		${SOUND_GH_TUPLE}
99.endif
100
101.include <bsd.port.mk>
102