# Distributed under the terms of the GNU General Public License v2

EAPI=8

# Upstream uses Debug automatically for Git checkouts unless a build type is
# supplied. cmake.eclass otherwise defaults to RelWithDebInfo.
CMAKE_BUILD_TYPE=Release

# Use Gentoo's installed libraries. If this array is unset, git-r3 fetches
# every submodule recursively before src_prepare() is reached.
EGIT_SUBMODULES=()

inherit cmake git-r3

DESCRIPTION="A Beautiful Gemini Client (live ebuild from dev branch)"
HOMEPAGE="https://gmi.skyjake.fi/lagrange/"
EGIT_REPO_URI="https://github.com/skyjake/lagrange.git"
EGIT_BRANCH="dev"

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"

IUSE="+gui ncurses +bidi +harfbuzz mp3 +opus +jxl +webp sse41"

REQUIRED_USE="|| ( gui ncurses )"

DEPEND="
    dev-libs/libpcre
    dev-libs/libunistring
    dev-libs/openssl:0=
    sys-libs/zlib
    >=dev-libs/the_Foundation-1.12.0

    gui? (
        media-libs/libsdl2
        bidi? ( dev-libs/fribidi )
        harfbuzz? ( media-libs/harfbuzz )
        mp3? ( media-sound/mpg123 )
        opus? ( media-libs/opusfile )
        webp? ( media-libs/libwebp )
        jxl? ( media-libs/libjxl )
    )

    ncurses? ( dev-libs/sealcurses )
"
RDEPEND="${DEPEND}"

BDEPEND="
    virtual/pkgconfig
"

DOCS=( README.md )

src_prepare() {
    cmake_src_prepare

    # Ensure upstream's bundled submodules cannot be selected. Current
    # Depends.cmake automatically falls back to system packages when these
    # directories are absent.
    rm -rf \
        lib/the_Foundation \
        lib/sealcurses \
        lib/harfbuzz \
        lib/fribidi || die
}

src_configure() {
    # Gentoo's cmake.eclass clears CMake's default per-build-type flags.
    # Define NDEBUG explicitly so Lagrange's debug drawing overlay is omitted.
    append-cppflags -DNDEBUG

    local mycmakeargs=(
        -DENABLE_GUI=$(usex gui)
        -DENABLE_TUI=$(usex ncurses)

        -DENABLE_STATIC=OFF

        -DENABLE_FRIBIDI=$(usex bidi)
        -DENABLE_HARFBUZZ=$(usex harfbuzz)
        -DENABLE_MPG123=$(usex mp3)
        -DENABLE_OPUS=$(usex opus)
        -DENABLE_WEBP=$(usex webp)
        -DENABLE_JXL=$(usex jxl)

        -DTFDN_ENABLE_SSE41=$(usex sse41)

        -DENABLE_FRIBIDI_BUILD=OFF
        -DENABLE_HARFBUZZ_MINIMAL=OFF
    )

    cmake_src_configure
}

src_install() {
    cmake_src_install

    if use gui ; then
        insinto /usr/share/applications
        doins "${BUILD_DIR}/fi.skyjake.Lagrange.desktop"

        insinto /usr/share/icons/hicolor/256x256/apps
        doins "${S}/res/lagrange-256.png"
    fi

    doman "${S}/res/lagrange.1"
}