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

legacysupport.newest_darwin_requires_legacy 12
legacysupport.use_mp_libcxx yes

github.setup        fmtlib fmt 12.2.0
name                libfmt12
revision            0
checksums           rmd160  359bc4b3d3d59ee18866a2ec7ee614d0443a111b \
                    sha256  8b852bb5aa6e7d8564f9e81394055395dd1d1936d38dfd3a17792a02bebd7af0 \
                    size    738355

categories          devel
license             MIT
maintainers         {@BjarneDMat mathiesen.info:macintosh} 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\.\]+)\","
