# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0
PortGroup           cmake 1.1
PortGroup           github 1.0
PortGroup           legacysupport 1.1

# Only used for wrappers:
legacysupport.newest_darwin_requires_legacy 0

github.setup        Dark-Kernel tuisic 2.5.2 v
revision            0
epoch               1
categories          audio
license             GPL-3
maintainers         {@barracuda156 macos-powerpc.org:barracuda} openmaintainer
description         TUI online music streaming application
long_description    ${name} is a simple TUI online music stream app written in C++.
github.tarball_from archive

installs_libs       no

set cavacore_hash   d75ba3b10686e6f445a8fb9d8d4da472c11d98ad
set discord_hash    38ba54f25354855b11fe40a86c4c28d3d72bd9bf

master_sites-append https://github.com/karlstav/cava/archive/${cavacore_hash}/:cavacore \
                    https://github.com/Dark-Kernel/discord-rpc/archive/${discord_hash}/:discord
distfiles-append    cava-${cavacore_hash}.tar.gz:cavacore \
                    discord-rpc-${discord_hash}.tar.gz:discord

checksums           ${distname}${extract.suffix} \
                    rmd160  a86892646c0061171fce4ca5206581b2bd3173ad \
                    sha256  3274c0a6e403f0659c0f0f914e09261f0c71c9ca693d06b05072bc9477f36c98 \
                    size    5883415 \
                    cava-${cavacore_hash}${extract.suffix} \
                    rmd160  cbf7a5f1a74b241a147b7fe7aa062aa6afbc3176 \
                    sha256  d3e420785755c29b3fda7e47baaa4b9c29591d82127e20d4a55bc91bc935877f \
                    size    297836 \
                    discord-rpc-${discord_hash}${extract.suffix} \
                    rmd160  0338b6aff30cea24370f8eb004232299e0a4ef19 \
                    sha256  b57df1c825d85b61e7b19cf2752e61b029250cc946a986134b4aeca15668eddc \
                    size    2107843

extract.only        ${distname}${extract.suffix}

# FIXME: cava target is broken at the moment and disabled by default.
post-extract {
    set tar [findBinary tar ${portutil::autoconf::tar_command}]
    system -W ${workpath} "${tar} -zxf ${distpath}/cava-${cavacore_hash}.tar.gz"
    system -W ${workpath} "${tar} -zxf ${distpath}/discord-rpc-${discord_hash}.tar.gz"
    delete ${worksrcpath}/cava
    delete ${worksrcpath}/discord-rpc
    move ${workpath}/cava-${cavacore_hash} ${worksrcpath}/cava
    move ${workpath}/discord-rpc-${discord_hash} ${worksrcpath}/discord-rpc
}

patchfiles-append   patch-CMakeLists.diff

# tuisic(92741) malloc: *** error for object 0xa00a6754: pointer being freed was not allocated
legacysupport.redirect_bins ${name}

set libfmt_ver      12

# FFMpeg version here must match mpv port.
set ffmpeg_ver      8

cmake.prefix_path-append \
                    ${prefix}/lib/libfmt${libfmt_ver}/cmake

# FTXUI is used statically.
# FFMpeg is not used or linked to directly, but without it configure may fail.
depends_build-append \
                    port:ffmpeg${ffmpeg_ver} \
                    port:FTXUI \
                    path:bin/pkg-config:pkgconfig \
                    path:lib/pkgconfig/RapidJSON.pc:rapidjson

# fftw-3 is only used if cava is enabled.
depends_lib-append  port:curl \
                    port:libfmt${libfmt_ver} \
                    path:lib/libmpv.dylib:mpv

configure.pkg_config_path-prepend \
                    ${prefix}/libexec/ffmpeg${ffmpeg_ver}/lib/pkgconfig

compiler.c_standard     2011
compiler.cxx_standard   2011

configure.args-append \
                    -DWITH_CAVA=OFF \
                    -DWITH_DISCORD=OFF \
                    -DWITH_MPRIS=ON

# ___atomic_load_8, ___atomic_store_8
if {[string match *gcc* ${configure.compiler}] && ${configure.build_arch} in [list arm i386 ppc]} {
    configure.ldflags-append \
        -latomic
}
