# Template file for 'imhex'
pkgname=imhex
version=1.38.1
revision=1
build_wrksrc="ImHex"
build_style=cmake
build_helper=qemu
configure_args="-DIMHEX_OFFLINE_BUILD=ON -DIMHEX_STRIP_RELEASE=OFF
 -DUSE_SYSTEM_FMT=ON -DUSE_SYSTEM_LLVM=ON -DUSE_SYSTEM_CAPSTONE=ON
 -DUSE_SYSTEM_YARA=ON -DUSE_SYSTEM_NLOHMANN_JSON=ON
 -DIMHEX_ENABLE_UNIT_TESTS=ON -DIMHEX_COMPRESS_DEBUG_INFO=OFF
 -DIMHEX_STRICT_WARNINGS=OFF -DIMHEX_ENABLE_LTO=$(vopt_if lto ON OFF)"
hostmakedepends="pkg-config clang-tools-extra18"
makedepends="libcurl-devel fmt-devel llvm18-devel jansson-devel yara-devel json-c++
 freetype-devel glfw-devel gtk+3-devel python3-devel file-devel mbedtls-devel
 capstone-devel"
short_desc="Hex editor for reverse engineers and programmers"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-2.0-or-later"
homepage="https://imhex.werwolv.net/"
changelog="https://github.com/WerWolv/ImHex/releases"
distfiles="https://github.com/WerWolv/ImHex/releases/download/v${version}/Full.Sources.tar.gz>imhex-${version}.tar.gz
 https://github.com/WerWolv/ImHex-Patterns/archive/refs/tags/ImHex-v${version}.tar.gz>imhex-patterns-${version}.tar.gz"
checksum="cd3531066a41dde1f0751e5d3146a936897df35ad5ba1fa49a9f3ace88e6901d
 3aae4c0970bc1b85bf4dc566bdf31de33c7dce593375645600549643ce6f9841"
patch_args="-Np1 -d $build_wrksrc"
python_version=3

build_options="lto"
desc_option_lto="Enable LTO (Link Time Optimization)" # LTO requires system LLVM built with LTO

subpackages="imhex-plugin-sdk imhex-patterns"

if [ "$XBPS_TARGET_WORDSIZE" = 32 ]; then
	broken="uses i128"
fi

if [ "$XBPS_TARGET_LIBC" = musl ]; then
	configure_args+=" -DIMHEX_DISABLE_STACKTRACE=ON"
fi

post_extract() {
	mv ImHex-Patterns-ImHex-v${version} ImHex-Patterns
}

do_check() {
	cd build
	ninja ${makejobs} unit_tests
	# StoreAPI, TipsAPI, ContentAPI tests are flaky
	ctest ${makejobs} -E '^.*API$'
}

post_install() {
	rm -f ${DESTDIR}/usr/bin/imhex-updater

	# Extras from ImHex-Patterns that upstream does not install by default
	for d in disassemblers plugins scripts themes tips; do
		vcopy "../ImHex-Patterns/${d}" usr/share/${sourcepkg}
	done
}

imhex-plugin-sdk_package() {
	short_desc+=" - plugin SDK"
	depends="${sourcepkg}>=${version}_${revision}"
	pkg_install() {
		vmove usr/share/${sourcepkg}/sdk
	}
}

imhex-patterns_package() {
	short_desc+=" - patterns and magic files"
	depends="${sourcepkg}>=${version}_${revision}"
	pkg_install() {
		vmove usr/share/${sourcepkg}
	}
}
