# -*- 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           boost 1.0
PortGroup           cargo_fetch 1.0

name                libopenraw
version             0.3.7
revision            0

categories          graphics
license             LGPL-3+
maintainers         {mascguy @mascguy} openmaintainer

description         libopenraw is an ongoing project to provide a free software implementation \
                    for decoding camera RAW files.
long_description    ${description} \
                    One of the main reasons is that dcraw is not suited for easy integration into \
                    applications, and there is a need for an easy to use API to build free software \
                    digital image processing applications. It also has the goal to address features \
                    missing from dcraw such as meta-data decoding and easy thumbnail extraction.
homepage            https://libopenraw.freedesktop.org/${name}/

master_sites        https://libopenraw.freedesktop.org/download/
use_xz              yes

checksums           ${distname}${extract.suffix} \
                    rmd160  0b9a75af63f820c8785038adc66b085bed9b742f \
                    sha256  0ece41951b2cd91e43f6a8a5c6a894bbc8b5923b4e49a82ebb6d8ce62bded68c \
                    size    2536380 \

conflicts           libopenraw-legacy

patchfiles-append   patch-Makefile.am.diff
patchfiles-append   patch-ifdentry.hpp.diff
patchfiles-append   patch-endian.diff

depends_build-append \
                    port:autoconf-archive \
                    port:cctools \
                    port:gawk \
                    port:grep \
                    port:gsed \
                    port:pkgconfig

depends_lib-append \
                    port:curl \
                    path:include/turbojpeg.h:libjpeg-turbo \
                    port:libxml2

#--------------------------------------------------------------------------------------------------
# Blacklist MacPorts Clang 14 and 15 for now, as crashes during link.
#
# See: https://trac.macports.org/ticket/65246
#--------------------------------------------------------------------------------------------------
compiler.blacklist-append \
                    {macports-clang-1[4-5]}

# as of version 0.3.0 requires C++14 to build
compiler.cxx_standard 2014

# Teach glibtool about -stdlib=libc++
use_autoreconf      yes
autoreconf.args     -fvi

configure.args-append \
                    --disable-gnome \
                    --with-boost=[boost::install_area]

# hijack CARGO_VERBOSE to include other cargo flags
pre-build {
    # on older systems, cargo.offline_cmd may be changed after calling cargo.crates
    build.args-append \
                    CARGO_VERBOSE="${cargo.offline_cmd} -v -j${build.jobs}"
}
# libopenraw expects cargo to build the library in CARGO_BUILD_TARGET/{debug,release}
# however, when CARGO_BUILD_TARGET is set, its value is inserted between CARGO_TARGET_DIR and {debug,release}
post-patch {
    set mp4_target_dir ${worksrcpath}/lib/mp4/target

    foreach subdir {debug release} {
        set mp4_dir ${mp4_target_dir}/${subdir}

        xinstall -d -m 0755 ${mp4_dir}
        ln -s       ../[option triplet.${muniversal.build_arch}]/${subdir}/libmp4.a \
                    ${mp4_dir}/libmp4.a
    }
}

variant gnome description {Build with GNOME/GTK+ support}  {
    depends_build-append \
                    port:gettext
    depends_lib-append \
                    port:gettext-runtime \
                    path:lib/pkgconfig/gdk-pixbuf-2.0.pc:gdk-pixbuf2 \
                    path:lib/pkgconfig/glib-2.0.pc:glib2
    configure.args-delete \
                   --disable-gnome
}

default_variants +gnome

# Disable silent rules
build.args          V=1

platform macosx {
    if {${os.major} < 10 || ${build_arch} in [list ppc ppc64]} {
        known_fail  yes
        pre-fetch {
            ui_error "$name requires Rust. Please use the libopenraw-legacy port instead."
            error "unsupported OS version"
        }
    }
}

post-activate {
    if {[variant_isset gnome]} {
        ui_debug "Updating gdk-pixbuf.loaders..."
        system "${prefix}/bin/gdk-pixbuf-query-loaders --update-cache"
    }
}

livecheck.type      regex
livecheck.url       ${homepage}
livecheck.regex     "${name}-(\\d+(?:\\.\\d+)*)${extract.suffix}"

cargo.crates \
    ahash                            0.7.6  fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47 \
    aho-corasick                    0.7.18  1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f \
    atty                            0.2.14  d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8 \
    autocfg                          1.0.0  f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d \
    bitreader                        0.3.2  5fa7f0adf37cd5472c978a1ff4be89c1880a923d10df4cfef6a10855a666e09b \
    byteorder                        1.2.2  73b5bdfe7ee3ad0b99c9801d58807a9dbc9e09196365b0203853b99889ab3c87 \
    cfg-if                          0.1.10  4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822 \
    cfg-if                           1.0.0  baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd \
    env_logger                       0.8.4  a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3 \
    fallible_collections             0.4.4  52db5973b6a19247baf19b30f41c23a1bfffc2e9ce0a5db2f60e3cd5dc8895f7 \
    getrandom                        0.2.7  4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6 \
    hashbrown                       0.11.2  ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e \
    hermit-abi                       0.1.8  1010591b26bbfe835e9faeabeb11866061cc7dcebffd56ad7d0942d0e61aefd8 \
    humantime                        2.1.0  9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4 \
    libc                           0.2.126  349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836 \
    log                             0.4.17  abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e \
    memchr                           2.5.0  2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d \
    num-traits                      0.2.15  578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd \
    once_cell                       1.12.0  7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225 \
    regex                            1.5.6  d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1 \
    regex-syntax                    0.6.26  49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64 \
    static_assertions                1.1.0  a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f \
    termcolor                        1.1.3  bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755 \
    version_check                    0.9.4  49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f \
    wasi                          0.11.0+wasi-snapshot-preview1  9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423 \
    winapi                           0.3.8  8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6 \
    winapi-i686-pc-windows-gnu       0.4.0  ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6 \
    winapi-util                      0.1.5  70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178 \
    winapi-x86_64-pc-windows-gnu     0.4.0  712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
