# -*- 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               github 1.0

github.setup            HandBrake HandBrake 1.11.2
revision                0
categories              multimedia
maintainers             {@barracuda156 macos-powerpc.org:barracuda} openmaintainer
license                 GPL-2
description             HandBrake is an open-source video transcoder
long_description        {*}${description}
homepage                https://handbrake.fr

github.tarball_from     releases

# TODO: switch to downloading sources without git fetch.
# master_sites-append     https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib \
                        https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/:contrib

distname                HandBrake-${version}-source
use_bzip2               yes

checksums               ${distname}${extract.suffix} \
                        rmd160  32f6b488e7570d45d988f00eab591c9777f838d3 \
                        sha256  12b046350f2422dc28783ff94229aff4ba5fe5e683431e057355d36163b2593a \
                        size    11761530

extract.rename          yes

# Make sure compiler is set before patching.
compiler.c_standard             2011
compiler.thread_local_storage   yes
compiler.blacklist-append       {clang < 1300}

set py_ver              3.14
set py_ver_nodot        [string map {. {}} ${py_ver}]
configure.python        ${prefix}/bin/python${py_ver}

post-extract {
    copy ${filespath}/ppc-darwin-gcc.meson ${worksrcpath}/make/cross/
    # Fix broken configure and build of ffmpeg:
    copy ${filespath}/A32-ffmpeg-fix-static_asserts.patch ${worksrcpath}/contrib/ffmpeg/
    # Disabled since we use the port:
    # copy ${filespath}/A02-x264-ppc.patch ${worksrcpath}/contrib/x264/
    if {[string match *clang* ${configure.compiler}]} {
            copy ${filespath}/A02-fix-avx2-flags.patch ${worksrcpath}/contrib/zimg/
    }
}

patch.pre_args-replace  -p0 -p1

patchfiles-append       patch-configure-pythons.diff

patchfiles-append       patch-fix-coreaudio.diff

# Broken in upstream: https://github.com/HandBrake/HandBrake/issues/6320
patchfiles-append       0001-configure.py-use-correct-build-tuple-for-powerpc-dar.patch \
                        0002-Disable-vtb.patch \
                        0003-Build-fixes.patch

# Avoid building what can be used from ports:
patchfiles-append       0004-Avoid-unneccessary-bundled-deps.patch

# Fix build target (not used at the moment):
patchfiles-append       0005-contrib_libvpx.patch

if {[string match *gcc* ${configure.compiler}]} {
    patchfiles-append   0006-Cocoa-compat.patch
}

# Extract just the executable name from the full path
if {[string match clang-mp-* ${configure.cc}]} {
    set clang_v [
        string range ${configure.cc} [
            string length clang-mp-
        ] end
    ]
    set cc_name clang-mp-${clang_v}
    set cxx_name clang++-mp-${clang_v}
} elseif {[string match gcc-mp-* ${configure.cc}]} {
    set gcc_v [
        string range ${configure.compiler} [
            string length macports-gcc-
        ] end
    ]
    set cc_name gcc-mp-${gcc_v}
    set cxx_name g++-mp-${gcc_v}
} else {
    set cc_name [file tail ${configure.cc}]
    set cxx_name [file tail ${configure.cxx}]
}

if {${os.platform} eq "darwin" && ${os.major} < 11} {
    depends_lib-append  path:lib/MacportsLegacySupport.dylib:legacy-support

    patchfiles-append   0007-contrib_ffmpeg_module.patch \
                        0008-legacy-support.patch \
                        0009-fix-dvdnav-dvdread-build.patch

    post-patch {
        reinplace "s|@PREFIX@|${prefix}|g" \
            ${worksrcpath}/gtk/meson.build ${worksrcpath}/gtk/module.defs \
            ${worksrcpath}/libhb/module.defs ${worksrcpath}/contrib/ffmpeg/module.defs
        reinplace "s|@CC@|${cc_name}|g" \
            ${worksrcpath}/contrib/libdvdnav/A02-apple-add-dvdnav-crossfiles.patch \
            ${worksrcpath}/contrib/libdvdread/A02-apple-add-dvdread-crossfiles.patch \
            ${worksrcpath}/make/cross/ppc-darwin-gcc.meson \
            ${worksrcpath}/contrib/ffmpeg/module.defs
        reinplace "s|@CXX@|${cxx_name}|g" \
            ${worksrcpath}/contrib/libdvdnav/A02-apple-add-dvdnav-crossfiles.patch \
            ${worksrcpath}/contrib/libdvdread/A02-apple-add-dvdread-crossfiles.patch \
            ${worksrcpath}/make/cross/ppc-darwin-gcc.meson \
            ${worksrcpath}/contrib/ffmpeg/module.defs
    }
}

post-patch {
    fs-traverse f ${worksrcpath} {
        if {[string match *.py ${f}]} {
            reinplace -q "s|/usr/bin/env python3|${configure.python}|" ${f}
        }
    }
}

depends_build-append    port:autoconf \
                        port:automake \
                        path:bin/cmake:cmake \
                        path:bin/git:git \
                        port:gnutar \
                        port:libtool \
                        port:meson \
                        port:ninja \
                        path:bin/pkg-config:pkgconfig \
                        port:python${py_ver_nodot}

platform i386 {
    depends_build-append \
                        port:nasm
}

depends_lib-append      port:bzip2 \
                        path:lib/pkgconfig/cairo.pc:cairo \
                        path:lib/pkgconfig/gdk-pixbuf-2.0.pc:gdk-pixbuf2 \
                        path:lib/pkgconfig/glib-2.0.pc:glib2 \
                        path:lib/pkgconfig/gtk4.pc:gtk4 \
                        port:jansson \
                        port:lame \
                        path:lib/pkgconfig/libass.pc:libass \
                        port:libiconv \
                        path:include/turbojpeg.h:libjpeg-turbo \
                        port:libogg \
                        port:libopus \
                        port:libtheora \
                        port:libvorbis \
                        path:lib/pkgconfig/vpx.pc:libvpx \
                        port:libxml2 \
                        path:lib/pkgconfig/pango.pc:pango \
                        port:speex \
                        port:x264 \
                        port:xorg-libX11 \
                        port:xz \
                        port:zlib

depends_run-append      port:dbus \
                        port:desktop-file-utils

configure.args-append   --disable-libdovi \
                        --disable-vt \
                        --disable-xcode \
                        --enable-asm \
                        --enable-ffmpeg-aac \
                        --enable-ffmpeg-prores \
                        --enable-gtk \
                        --enable-x265 \
                        --force \
                        --prefix=${prefix} \
                        --verbose

build.dir               ${worksrcpath}/build
build.target
build.args-append       V=1

configure.ldflags-append \
                        -L${worksrcpath}/contrib/lib

post-activate {
    system "${prefix}/bin/update-desktop-database ${prefix}/share/applications"
}

# https://trac.macports.org/ticket/70137
notes "
If you get an error upon launching the app,\
set GSK_RENDERER=cairo in the environment.\
You may also add it into a shell config file.
"
