# -*- 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        fmtlib fmt 10.2.1
name                libfmt10
revision            0
checksums           rmd160  e6c385e8789599ed098ca5ea4094b0c8a788029f \
                    sha256  1250e4cc58bf06ee631567523f48848dc4596133e163f02615c97f78bab6c811 \
                    size    854665

categories          devel
license             MIT
maintainers         {mascguy @mascguy} openmaintainer

description         An open-source formatting library
long_description    fmt (formerly cppformat) is an open-source formatting library. \
                    It can be used as a safe alternative to printf or as a fast \
                    alternative to C++ IOStreams.
homepage            https://fmt.dev

github.tarball_from archive

set port_ver_major  [lindex [split ${version} .] 0]

#------------------------------------------------------------------------------
# Path-Related Variables - START
#------------------------------------------------------------------------------

# The "install name," meaning, the subdirectory name for this port.
# Should correspond to the major version.
set port_install_name \
                    ${subport}

# Define all of our base paths up-front
set port_install_include \
                    ${prefix}/include/${port_install_name}
set port_install_lib \
                    ${prefix}/lib/${port_install_name}

# Populate CMake options currently available
cmake.install_rpath \
                    ${port_install_lib}

configure.args-append \
                    -DCMAKE_INSTALL_INCLUDEDIR=${port_install_include} \
                    -DCMAKE_INSTALL_LIBDIR=${port_install_lib} \
                    -DCMAKE_INSTALL_NAME_DIR=${port_install_lib}

#------------------------------------------------------------------------------
# Path-Related Variables - END
#------------------------------------------------------------------------------

cmake.generator     Ninja

# Clear optflags; controlled by project, via cmake build type
configure.optflags

if {[variant_isset debug]} {
    cmake.build_type Debug
} else {
    cmake.build_type RelWithDebInfo
}

compiler.cxx_standard 2011

# error: default initialization of an object of const type 'const Answer' without a user-provided default constructor
# error would be valid except Answer is empty
compiler.blacklist-append \
                    {clang < 801}

configure.args-append \
                    -DBUILD_SHARED_LIBS:BOOL=ON \
                    -DFMT_DOC:BOOL=OFF \
                    -DFMT_TEST:BOOL=OFF

# Obsolete port 'libfmt' causes clashes, so deactivate if installed
pre-activate {
    if {![catch {set installed [lindex [registry_active libfmt] 0]}]} {
        registry_deactivate_composite libfmt "" [list ports_nodepcheck 1]
    }
}

variant tests description {Enable test support} {
    PortGroup       conflicts_build 1.0

    # If gtest is active, build failures occur; let port use the internal version
    conflicts_build-append \
                    gtest

    configure.pre_args-replace \
                    -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=ON \
                    -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF

    configure.args-replace \
                    -DFMT_TEST:BOOL=OFF \
                    -DFMT_TEST:BOOL=ON

    test.run        yes
}

# TODO: Update pg 'github' to use this API
livecheck.url       https://api.github.com/repos/${github.author}/${github.project}/tags?per_page=200
livecheck.curloptions
livecheck.regex     "\"name\": \"(${port_ver_major}\.\[0-9\.\]+)\","
