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

github.setup        akumuli Akumuli 0.8.80 v
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from tarball
revision            1
categories          databases
maintainers         nomaintainer
license             Apache-2

description         Akumuli is a time-series database for modern hardware
long_description    Akumuli is a time-series database for modern hardware. It can be used to capture, \
                    store and process time-series data in real-time. \
                    The word akumuli can be translated from Esperanto as accumulate.

checksums           sha256  26859ca401f577ba795ca7d1282824396395f6a7a33963b097e1f562ed0742e8 \
                    rmd160  41196d7dd93a807b5e6b55cfdb576932b2ceb876 \
                    size    551145

depends_lib-append  port:jemalloc \
                    port:sqlite3 \
                    port:libmicrohttpd \
                    port:apr \
                    port:apr-util \
                    port:muparser \
                    port:log4cxx

patchfiles          patch-cmakelists.diff \
                    patch-missing-headers.diff \
                    patch-queryparser.diff \
                    patch-httpserver.diff

# 'std::shared_mutex' is only available from C++17 onwards
# https://github.com/akumuli/Akumuli/issues/383
compiler.cxx_standard 2017
configure.cxxflags-append -std=c++17
configure.args-append \
                    -DAPR_INCLUDE_DIR=${prefix}/include/apr-1 \
                    -DAPRUTIL_INCLUDE_DIR=${prefix}/include/apr-1

if {[string match *gcc* ${configure.compiler}]} {
    # Needed for httpserver.cpp
    configure.cxxflags-append -fpermissive
    
    # Undefined symbols: "___atomic_fetch_add_8",
    # referenced from: __ZN7Akumuli12LogSequencer4nextEv in input_log.cpp.o
    configure.ldflags-append -latomic
}

platform darwin 10 powerpc {
    # Rosetta needs manual arch setting
    configure.args-append -DFORCE_ARCH=ppc
}

platform arm {
    # Assume arm64:
    configure.args-append -DFORCE_ARCH=arm64
}

if {${os.platform} eq "darwin" && ${os.major} > 22} {
    configure.cppflags-append -D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
}
