# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=7
inherit elisp cmake
# todo: ninja-related files are created in a build directory
# even though ninja is not mentioned anywhere. Where does it get picked?
DESCRIPTION="Emacs module for libgit2"
HOMEPAGE="https://github.com/magit/libegit2"
EGIT_REPO_URI="https://github.com/magit/libegit2.git"
EGIT_BRANCH="master"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="system-libgit"
RDEPEND="
>=app-editors/emacs-25.1[dynamic-loading]
system-libgit? ( dev-libs/libgit2 )
"
BDEPEND="${RDEPEND}
>=dev-build/cmake-3.0
"
# todo: another build (?) dependency is app-eselect/eselect-emacs::akater
# as we need /usr/include/emacs symlink and it is only set by eselect in my ebuild repository
S="${WORKDIR}/${PV}/src"
src_prepare() {
rm emacs-module.h
eapply "${FILESDIR}"/${PN}-system-emacs-module.patch
# use system-libvterm && eapply ${FILESDIR}/${PN}-system-libvterm.patch
# there is a conceptual problem: this system-libvterm patch is essentially a configuration patch and thus it should be applied at configure stage. The general issue is, emacs packages do not provide any way to configure them. I guess this is common for Lisp systems but I'm not convinced it has to be so.
cmake_src_prepare
eapply_user
}
src_configure() {
local mycmakeargs=(
-DUSE_SYSTEM_LIBVTERM=$(usex system-libgit)
# $(cmake-utils_use_use system-libgit SYSTEM_LIBGIT2)
# I wish this symbol conversion happened automatically
# but apparently this is banned in eapi 6 and later
)
# CMakeLists.txt has this:
#
# add_subdirectory(libgit2)
#
# find_library(git2 libgit2.a)
# add_subdirectory(src)
cmake_src_configure
}
src_compile() {
cmake_src_compile || die "Compiling libgit-module failed"
elisp-compile "${WORKDIR}/${PV}"/libgit.el || die "Compiling libgit.el failed"
}
src_install() {
# Install vterm.el
elisp-install ${PN} "${WORKDIR}/${PV}"/libgit.{el,elc} || die "Cannot install libgit elisp files"
# elisp-install ${PN} "${WORKDIR}/${PV}"*.{el,elc} || die "Cannot install libgit elisp files"
# Install module
elisp-install ${PN} egit-*.so || die "Cannot install egit-*.so"
# elisp-install LICENSE
# Install docs
dodoc "${WORKDIR}/${PV}"/README.md
# if cmake-utils_src_install is run before elisp-install,
# it prevents all further installs
# and it doesn't do anything by itself
#
# cmake-utils_src_install
}