dev-games/zenkit - 20251220 (anonch)

Search

Install

Install this version:

emerge -a =dev-games/zenkit-20251220

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =dev-games/zenkit-20251220

Or alternatively:

emerge --autounmask-write -a =dev-games/zenkit-20251220

Package Information

Description:
C++20 parser and runtime library for Gothic game engine assets
Homepage:
https://github.com/GothicKit/ZenKit
License:
MIT

Ebuild Details

Version EAPI Keywords Slot
20251220 8 ~amd64 ~x86 0
View Raw Ebuild
# Copyright 2026 Anoncheg1
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake flag-o-matic

COMMIT="0e3b3f67d203feb6de1888977a7c850acf7d0731"
DESCRIPTION="C++20 parser and runtime library for Gothic game engine assets"
HOMEPAGE="https://github.com/GothicKit/ZenKit"
SRC_URI="https://github.com/GothicKit/ZenKit/archive/${COMMIT}.tar.gz -> ${P}.tar.gz"

S="${WORKDIR}/ZenKit-${COMMIT}"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="test"
RESTRICT="mirror bindist !test? ( test )"
RDEPEND="
	media-libs/glm
	media-libs/libsquish
"
DEPEND="
	${RDEPEND}
	test? ( dev-cpp/doctest )
"

src_prepare() {
	cmake_src_prepare

	# 1. Neutralize vendor/CMakeLists.txt to properly use system dependencies
	cat << 'EOF' > vendor/CMakeLists.txt
# Handled by Gentoo Portage: Force system dependencies
find_package(glm REQUIRED)

find_library(SQUISH_LIBRARY NAMES squish PATHS "${EPREFIX}/usr/lib64" "${EPREFIX}/usr/lib")
if(NOT SQUISH_LIBRARY)
    message(FATAL_ERROR "Could not find squish library")
endif()

if(NOT TARGET squish)
    add_library(squish UNKNOWN IMPORTED)
    set_target_properties(squish PROPERTIES 
        IMPORTED_LOCATION "${SQUISH_LIBRARY}"
    )
endif()

# Provide compatibility alias for upstream hardcoded target names
if(TARGET glm::glm AND NOT TARGET glm::glm_static)
    add_library(glm::glm_static ALIAS glm::glm)
endif()
EOF

	# 2. Provide a standard doctest main file statically
	cat << 'EOF' > tests/doctest_main.cc
#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include <doctest/doctest.h>
EOF

	# 3. Patch CMakeLists.txt to use system doctest
	sed -i \
		-e 's|include(${doctest_SOURCE_DIR}/scripts/cmake/doctest.cmake)|find_package(doctest REQUIRED)\n    include("${doctest_DIR}/doctest.cmake")|g' \
		-e 's|add_executable(test-zenkit ${_ZK_TESTS})|add_executable(test-zenkit ${_ZK_TESTS} tests/doctest_main.cc)|g' \
		-e 's|target_link_libraries(test-zenkit PRIVATE zenkit doctest_with_main)|target_link_libraries(test-zenkit PRIVATE zenkit doctest::doctest)|g' \
		CMakeLists.txt || die

	# 4. Remove the glm installation loop (upstream bug)
	sed -i -E -e '/foreach[[:space:]]*\(lib glm::glm\)/,/endforeach[[:space:]]*\(\)/d' CMakeLists.txt || die

	# 5. Fix missing include/phoenix directory in install targets
	sed -i '\|install(DIRECTORY "include/phoenix" TYPE INCLUDE)|d' CMakeLists.txt || die

	# 6. Add squish include path (Gentoo installs headers in /usr/include/squish/)
	append-cxxflags "-I${EPREFIX}/usr/include/squish"
}
src_configure() {
	local mycmakeargs=(
		-DZK_BUILD_TESTS=$(usex test ON OFF)
		-DZK_BUILD_EXAMPLES=$(usex test ON OFF)
		-DZK_BUILD_SHARED=OFF
		-DZK_ENABLE_ASAN=OFF
		-DZK_ENABLE_DEPRECATION=OFF
	)

	cmake_src_configure
}

src_test() {
        local CMAKE_SKIP_TESTS=(
		"ModelAnimation.load"
	)

	cmake_src_test
}

USE Flags

Manage flags for this package: euse -i <flag> -p dev-games/zenkit | euse -E <flag> -p dev-games/zenkit | euse -D <flag> -p dev-games/zenkit

Global/Standard Flags

Inherited Eclasses

Dependencies

DEPEND

	
	media-libs/glm
	media-libs/libsquish

	test? ( dev-cpp/doctest )

RDEPEND

	media-libs/glm
	media-libs/libsquish

Manifest for 20251220

Type File Size Source URLs
DIST zenkit-20251220.tar.gz 12146513 bytes https://github.com/GothicKit/ZenKit/archive/0e3b3f67d203feb6de1888977a7c850acf7d0731.tar.gz