# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit cmake gnome2 readme.gentoo-r1

DESCRIPTION="Integrated mail, addressbook and calendaring functionality"
HOMEPAGE="https://wiki.gnome.org/Apps/Evolution https://gitlab.gnome.org/GNOME/evolution"

# Note: explicitly "|| ( LGPL-2 LGPL-3 )", not "LGPL-2+".
LICENSE="|| ( LGPL-2 LGPL-3 ) CC-BY-SA-3.0 FDL-1.3+ OPENLDAP"
SLOT="2.0"

IUSE="archive +bogofilter geolocation gtk-doc highlight ldap selinux spamassassin spell ssl +weather ytnef"

KEYWORDS="~amd64 ~arm arm64 ~loong ~ppc64 ~riscv ~x86"

# glade-3 support is for maintainers only per configure.ac
# pst is not mature enough and changes API/ABI frequently
# dconf explicitly needed for backup plugin
# gnome-desktop support is optional with --enable-gnome-desktop
# automagic libunity dep
# >=gspell-1.8 to ensure it uses enchant:2 like webkit-gtk
DEPEND="
	>=app-crypt/libsecret-0.5
	>=app-text/enchant-2.2.0:2
	>=dev-db/sqlite-3.7.17:3
	>=dev-libs/glib-2.66:2[dbus]
	>=dev-libs/libxml2-2.7.3:2
	>=gnome-base/gnome-desktop-2.91.3:3=
	>=gnome-base/gsettings-desktop-schemas-2.91.92
	>=gnome-extra/evolution-data-server-${PV}:=[gtk,weather?]
	|| (
		media-libs/libcanberra-gtk3
		>=media-libs/libcanberra-0.25[gtk3(-)]
	)
	>=net-libs/libsoup-3.0:3.0
	>=net-libs/webkit-gtk-2.38.0:4.1=[spell?]
	>=x11-libs/cairo-1.9.15[glib]
	>=x11-libs/gdk-pixbuf-2.24:2
	>=x11-libs/gtk+-3.22:3
	>=x11-libs/libnotify-0.7
	>=x11-misc/shared-mime-info-0.22

	app-text/cmark:=
	>=app-text/iso-codes-0.49
	>=app-accessibility/at-spi2-core-2.46.0:2

	gnome-base/dconf
	x11-libs/libSM
	x11-libs/libICE

	archive? ( >=app-arch/gnome-autoar-0.1.1[gtk] )
	bogofilter? ( mail-filter/bogofilter )
	geolocation? (
		>=media-libs/libchamplain-0.12.21:0.12[gtk]
		>=media-libs/clutter-1.0.0:1.0
		>=media-libs/clutter-gtk-0.90:1.0
		>=sci-geosciences/geocode-glib-3.26.3:2 )
	ldap? ( >=net-nds/openldap-2:= )
	spamassassin? ( mail-filter/spamassassin )
	spell? ( >=app-text/gspell-1.8:= )
	ssl? (
		>=dev-libs/nspr-4.6.1
		>=dev-libs/nss-3.11
	)
	weather? (
		>=dev-libs/libgweather-4.2.0:4=
		>=sci-geosciences/geocode-glib-3.26.3:2
	)
	ytnef? ( net-mail/ytnef )
"
RDEPEND="${DEPEND}
	highlight? ( app-text/highlight )
	selinux? ( sec-policy/selinux-evolution )
"
BDEPEND="
	app-text/docbook-xml-dtd:4.1.2
	dev-util/gdbus-codegen
	dev-util/glib-utils
	dev-util/itstool
	gtk-doc? ( dev-util/gtk-doc
		app-text/docbook-xml-dtd:4.3 )
	>=dev-util/intltool-0.40.0
	>=sys-devel/gettext-0.18.3
	virtual/pkgconfig
"

DISABLE_AUTOFORMATTING="yes"
DOC_CONTENTS="To change the default browser if you are not using GNOME, edit
~/.local/share/applications/mimeapps.list so it includes the
following content:

[Default Applications]
x-scheme-handler/http=firefox.desktop
x-scheme-handler/https=firefox.desktop

(replace firefox.desktop with the name of the appropriate .desktop
file from /usr/share/applications if you use a different browser)."

# global scope PATCHES or DOCS array mustn't be used due to double default_src_prepare
# call; if needed, set them after cmake_src_prepare call, if that works

src_prepare() {
	cmake_src_prepare
	gnome2_src_prepare
	# Fix launching when built with ThinLTO - https://gitlab.gnome.org/GNOME/evolution/-/issues/2646
	eapply "${FILESDIR}"/${PV}-fix-lto.patch
}

src_configure() {
	# Use NSS/NSPR only if 'ssl' is enabled.
	local mycmakeargs=(
		-DSYSCONF_INSTALL_DIR="${EPREFIX}"/etc
		-DENABLE_SCHEMAS_COMPILE=OFF
		-DENABLE_GTK_DOC=$(usex gtk-doc)
		-DWITH_OPENLDAP=$(usex ldap)
		-DENABLE_SMIME=$(usex ssl)
		-DENABLE_GNOME_DESKTOP=ON
		-DWITH_ENCHANT_VERSION=2
		-DENABLE_CANBERRA=ON
		-DENABLE_AUTOAR=$(usex archive)
		-DWITH_HELP=ON
		-DENABLE_YTNEF=OFF
		-DWITH_BOGOFILTER=$(usex bogofilter)
		-DWITH_SPAMASSASSIN=$(usex spamassassin)
		-DENABLE_GSPELL=$(usex spell)
		-DENABLE_TEXT_HIGHLIGHT=$(usex highlight)
		-DENABLE_WEATHER=$(usex weather)
		-DENABLE_CONTACT_MAPS=$(usex geolocation)
		-DENABLE_YTNEF=$(usex ytnef)
		-DENABLE_PST_IMPORT=OFF
		-DWITH_GLADE_CATALOG=OFF
		-DENABLE_MARKDOWN=ON
	)

	cmake_src_configure
}

src_compile() {
	cmake_src_compile
}

src_test() {
	# -j1: https://gitlab.gnome.org/GNOME/evolution-data-server/-/issues/522
	cmake_src_test -j1
}

src_install() {
	cmake_src_install
	readme.gentoo_create_doc
}

pkg_postinst() {
	gnome2_pkg_postinst
	readme.gentoo_print_elog
}