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

github.setup        libjxl libjxl 0.12.0 v
revision            0
categories          graphics
maintainers         {jmr @jmroot} openmaintainer
license             BSD

description         JPEG XL reference implementation
long_description    A reference implementation of JPEG XL.

github.tarball_from archive
# No option to use external skcms
set skcms_commit    96d9171c94b937a1b5f0293de7309ac16311b722
master_sites-append https://github.com/google/skcms/archive/${skcms_commit}/:skcms
# googlesource doesn't provide stable tarballs
# https://skia.googlesource.com/skcms/+archive/${skcms_commit}.tar.gz?dummy=
distfiles-append    skcms-${skcms_commit}${extract.suffix}:skcms
checksums           ${distname}${extract.suffix} \
                    rmd160  1919db867453f09423ef1cb9fee9ad96147dfd70 \
                    sha256  03e9be69a30be4011f559da75328b6d7cea8ad921fabfbd551ce10bf45cdc992 \
                    size    1698757 \
                    skcms-${skcms_commit}${extract.suffix} \
                    rmd160  74896a57f444fd03351f2eac286dca0a98c45c46 \
                    sha256  9bb4b5bba0b7c04f6c2bce9ff713d61e23c9a20c4945161ae16290498ad74627 \
                    size    10061812

depends_build-append \
                    port:asciidoc \
                    path:bin/pkg-config:pkgconfig
depends_lib         port:brotli \
                    port:giflib5 \
                    port:highway \
                    path:include/turbojpeg.h:libjpeg-turbo \
                    port:libpng \
                    port:openexr \
                    port:zlib

extract.only        ${name}-${version}${extract.suffix}
post-extract {
    system -W ${worksrcpath}/third_party/skcms \
        "tar -xzf ${distpath}/skcms-${skcms_commit}${extract.suffix}"
}

patchfiles          include_order.patch \
                    find_asciidoc.patch

if {${os.platform} eq "darwin" && ${os.major} <= 15} {
    # No support for sized operator delete
    patchfiles-append   sized-deallocation.patch
    if {${os.major} <= 8} {
        configure.args-append \
                            -DJPEGXL_ENABLE_BENCHMARK=OFF
        configure.args-replace \
                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF
    }
}

set shext [expr {${os.platform} eq "darwin" ? "dylib" : "so"}]

configure.args-append \
                    -DASCIIDOC:FILEPATH=${prefix}/bin/a2x \
                    -DAVIF_FOUND=NO \
                    -DBUILD_TESTING=NO \
                    -DGIF_INCLUDE_DIR:FILEPATH=${prefix}/libexec/giflib5/include \
                    -DGIF_LIBRARY:FILEPATH=${prefix}/libexec/giflib5/lib/libgif.${shext} \
                    -DJPEGXL_ENABLE_BENCHMARK=OFF \
                    -DJPEGXL_ENABLE_DOXYGEN=NO \
                    -DJPEGXL_ENABLE_JNI=NO \
                    -DJPEGXL_ENABLE_OPENEXR=YES \
                    -DJPEGXL_ENABLE_SJPEG=NO \
                    -DJPEGXL_FORCE_SYSTEM_BROTLI=YES \
                    -DJPEGXL_FORCE_SYSTEM_HWY=YES \
                    -DWebP_FOUND=NO

# On Big-endian archs the build defaults to lcms2 instead of skcms.
if {${configure.build_arch} in [list ppc ppc64]} {
    depends_lib-append \
                    port:lcms2
    configure.args-append \
                    -DJPEGXL_FORCE_SYSTEM_LCMS2=YES
} else {
    configure.args-append \
                    -DJPEGXL_ENABLE_SKCMS=YES
}

compiler.cxx_standard   2011
# Compilation warning (from highway headers):
# "x86 Clang <= 6: define HWY_COMPILE_ONLY_SCALAR or upgrade."
# (Xcode Clang 10.0.1 ~= llvm.org Clang 7.0)
compiler.blacklist  {clang < 1001}

variant bench description "Build benchmarking tools" {
    depends_lib-append      port:libavif \
                            port:webp
    configure.args-delete   -DAVIF_FOUND=NO -DWebP_FOUND=NO
    configure.args-replace  -DJPEGXL_ENABLE_BENCHMARK=OFF \
                            -DJPEGXL_ENABLE_BENCHMARK=ON
}

variant tests description "Enable building of test code" {
    depends_build-append    port:gtest
    configure.args-replace  -DBUILD_TESTING=NO \
                            -DBUILD_TESTING=YES \
                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF
    configure.args-append   -DJPEGXL_FORCE_SYSTEM_GTEST=YES
    test.run        yes
}

platform darwin 8 {
    configure.args-replace  -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \
                            -DCMAKE_BUILD_WITH_INSTALL_RPATH=OFF
}

github.livecheck.regex  {([\d.]+)}
