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

github.setup        RRZE-HPC TheBandwidthBenchmark 2.0 v
github.tarball_from archive
name                bwbench
revision            0
categories          benchmarks
license             MIT
maintainers         {i0ntempest @i0ntempest} openmaintainer

description         The ultimate memory bandwidth benchmark
long_description    ${description} - heavily inspired by John McCalpin's Stream benchmark and\
                    contains a collection of simple streaming kernels

checksums           rmd160  7fd0054057f149c98555777ac98a9ac89170e930 \
                    sha256  af01e1702fa6a2f4625fb757b71928432f52d2cd3bddee0e9c279ef617f3a6ee \
                    size    15620

post-patch {
    if {[string match *clang* ${configure.compiler}]} {
        reinplace "s|TOOLCHAIN ?= ICX|TOOLCHAIN ?= CLANG|" config.mk
    } elseif {[string match *gcc* ${configure.compiler}]} {
        reinplace "s|TOOLCHAIN ?= ICX|TOOLCHAIN ?= GCC|" config.mk
    }
    reinplace "s|ENABLE_OPENMP ?= true|ENABLE_OPENMP ?= false|" config.mk
    # Remove compiler suffix in binary filename
    reinplace "s|bwbench-\$(TOOLCHAIN)|bwbench|" Makefile
}

# Makefile does not accept `all`
build.target

destroot {
    xinstall -m 0755 ${worksrcpath}/${name} ${destroot}${prefix}/bin/
}

variant openmp description {enable parallelism support using OpenMP} {
    compiler.openmp_version 4.5
    compiler.blacklist-append   {macports-clang-[0-9].*}
    post-patch {
        reinplace "s|ENABLE_OPENMP ?= false|ENABLE_OPENMP ?= true|" config.mk
    }
}

default_variants-append \
                    +openmp
