# $NetBSD$

DISTNAME=	halloy-2024.14
CATEGORIES=	chat
MASTER_SITES=	${MASTER_SITE_GITHUB:=squidowl/}
GITHUB_PROJECT=	halloy
GITHUB_TAG=	refs/tags/${PKGVERSION_NOREV}
WRKSRC=		${WRKDIR}/halloy-${PKGVERSION_NOREV}

MAINTAINER=	pkgsrc-users@NetBSD.org
HOMEPAGE=	https://halloy.squidowl.org/
COMMENT=	IRC application written in Rust
LICENSE=	gnu-gpl-v3

INSTALLATION_DIRS+=	share/doc/halloy
USE_TOOLS+=		pkg-config tar

# Required for iced@0.14.0-dev
RUST_REQ=	1.80

## git+https
# Fetch crate git snapshots and extract them into ${WRKDIR}/pkgsrc-...
GITHUB_SUBMODULES+=	frewsxcv rust-dark-light 3eb3e93dd0fa30733c3e93082dd9517fb580ae95 ../pkgsrc-rust-dark-light
GITHUB_SUBMODULES+=	hecrj glyphon 0d7ba1bba4dd71eb88d2cface5ce649db2413cb7 ../pkgsrc-glyphon
GITHUB_SUBMODULES+=	iced-rs winit 254d6b3420ce4e674f516f7a2bd440665e05484d ../pkgsrc-winit
GITHUB_SUBMODULES+=	iced-rs iced d660fad33d97cf78507c6797b5fe45b3daf47454 ../pkgsrc-iced

.include "cargo-depends.mk"

## git+https
#
# Generated by running 'CARGO_HOME=${WRKDIR} cargo vendor ${WRKDIR}/vendor'
# or just 'cargo vendor' in the ${WRKDIR}/pkgsrc-... directory, and then
# running the awk script under 'print-cargo-depends' by hand
.include "cargo-depends.rust-dark-light.mk"
.include "cargo-depends.glyphon.mk"
.include "cargo-depends.winit.mk"
.include "cargo-depends.iced.mk"



# => Checking for missing run-time search paths in halloy-2024.12
# ERROR: bin/halloy: missing library: libasound.so.2
RUSTFLAGS+=	-C link-arg=${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.alsa-lib}/lib

RUSTFLAGS+=	-C link-arg=${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.openssl}/lib

RUSTFLAGS+=	-C link-arg=${COMPILER_RPATH_FLAG}${BUILDLINK_PREFIX.libX11}/lib
RUSTFLAGS+=	-C link-arg=-L${BUILDLINK_PREFIX.libX11}/lib
## https://github.com/rust-windowing/winit/issues/3603
# thread 'main' panicked at /usr/pkgsrc/wip/halloy/work/vendor/iced_winit-0.13.0/src/program.rs:192:10:
# Create event loop: NotSupported(NotSupportedError)
# note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
.include "../../x11/libX11/buildlink3.mk"
.include "../../x11/libXcursor/buildlink3.mk"
.include "../../x11/libxcb/buildlink3.mk"
.include "../../x11/libXi/buildlink3.mk"
.include "../../x11/libxkbcommon/buildlink3.mk"



pre-configure:
	## git+https
	#
	# Generate a .crate file from the git snapshot.  --no-verify
	# prevents attempting to build after preparing the crate.
	#
	# Extract them to the vendor directory.  We may need to do an
	# 'rm -rf' because there may already be a crate extracted there.
	#
	# Generate a dummy .cargo-checksum.json.

	## dark-light-1.1.1
	# cargo package --no-verify
	${RUN} cd ${WRKDIR}/pkgsrc-rust-dark-light && ${SETENV} ${MAKE_ENV} ${CARGO} package --no-verify
	# Extract crate to ${WRKDIR}/vendor/
	${TAR} zxf ${WRKDIR}/pkgsrc-rust-dark-light/target/package/dark-light-1.1.1.crate -C ${WRKDIR}/vendor/
	# Generate a dummy .cargo-checksum.json
	${ECHO} '{"files":{}}' > ${WRKDIR}/vendor/dark-light-1.1.1/.cargo-checksum.json

	## glyphon-0.5.0
	${RUN} cd ${WRKDIR}/pkgsrc-glyphon && ${SETENV} ${MAKE_ENV} ${CARGO} package --no-verify
	# glyphon-0.5.0 is a fork that shares the same name as the crate
	${RM} -rf ${WRKDIR}/vendor/glyphon-0.5.0
	${TAR} zxf ${WRKDIR}/pkgsrc-glyphon/target/package/glyphon-0.5.0.crate -C ${WRKDIR}/vendor/
	${ECHO} '{"files":{}}' > ${WRKDIR}/vendor/glyphon-0.5.0/.cargo-checksum.json

	## winit-0.30.1
	${RUN} cd ${WRKDIR}/pkgsrc-winit && ${SETENV} ${MAKE_ENV} ${CARGO} package --no-verify
	# winit-0.30.1 is a fork that shares the same name as the crate
	${RM} -rf ${WRKDIR}/vendor/winit-0.30.1
	${TAR} zxf ${WRKDIR}/pkgsrc-winit/target/package/winit-0.30.1.crate -C ${WRKDIR}/vendor/
	${ECHO} '{"files":{}}' > ${WRKDIR}/vendor/winit-0.30.1/.cargo-checksum.json

	## iced-0.14.0-dev
	# error: invalid inclusion of reserved file name Cargo.toml.orig in package source
	${RM} -f ${WRKDIR}/pkgsrc-iced/Cargo.toml.orig
	${RUN} cd ${WRKDIR}/pkgsrc-iced && ${SETENV} ${MAKE_ENV} ${CARGO} package --no-verify
	${TAR} zxf ${WRKDIR}/pkgsrc-iced/target/package/iced-0.14.0-dev.crate -C ${WRKDIR}/vendor/
	${ECHO} '{"files":{}}' > ${WRKDIR}/vendor/iced-0.14.0-dev/.cargo-checksum.json

	## iced_core-0.14.0-dev, iced_futures-0.14.0-dev, ...
.for crate in \
  core futures graphics renderer runtime tiny_skia wgpu widget winit
	${RUN} cd ${WRKDIR}/pkgsrc-iced/${crate} && ${SETENV} ${MAKE_ENV} ${CARGO} package --no-verify
	${TAR} zxf ${WRKDIR}/pkgsrc-iced/target/package/iced_${crate}-0.14.0-dev.crate -C ${WRKDIR}/vendor/
	${ECHO} '{"files":{}}' > ${WRKDIR}/vendor/iced_${crate}-0.14.0-dev/.cargo-checksum.json
.endfor



post-install:
	${INSTALL_DATA} ${WRKSRC}/README.md ${DESTDIR}${PREFIX}/share/doc/halloy/
	${INSTALL_DATA} ${WRKSRC}/CHANGELOG.md ${DESTDIR}${PREFIX}/share/doc/halloy/



.include "../../lang/rust/cargo.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../audio/alsa-lib/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
