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

gitlab.setup        vtk vtk-m 2.3.0 v
gitlab.instance     https://gitlab.kitware.com
revision            0

categories          graphics science devel
license             BSD
maintainers         {reneeotten @reneeotten} openmaintainer

description         VTK-m is a toolkit of scientific visualization algorithms \
                    for emerging processor architectures
long_description    {*}${description}. VTK-m supports the fine-grained concurrency for \
                    data analysis and visualization algorithms required to drive \
                    extreme scale computing by providing abstract models for data and \
                    execution that can be applied to a variety of algorithms across many \
                    different processor architectures.

homepage            https://m.vtk.org/

checksums           rmd160  324d0e5821ed81f1e681b293e9a5b2c2f037e00b \
                    sha256  14f185bd22eaa015638244d98aa6d612271c2610749e56cc2c70b47e1d043f8e \
                    size    75386020

subport vtk-m-17 {
    gitlab.setup    vtk vtk-m 1.7.1 v
    revision        1
    conflicts       vtk-m
    checksums       rmd160  2ccb4a5a4ab4aa55bcf20d1cc15627d6cdf5a5aa \
                    sha256  eb513dd9893d086fb76f9283dd87ef4e1b1ac417723803f2f2374958ec6ef32b \
                    size    10121883
    livecheck.type  none
}

compiler.cxx_standard   2014
compiler.thread_local_storage yes

configure.args-append \
    -DBUILD_SHARED_LIBS=ON \
    -DVTKm_ENABLE_BENCHMARKS=OFF \
    -DVTKm_ENABLE_CPACK=OFF \
    -DVTKm_ENABLE_CUDA=OFF \
    -DVTKm_ENABLE_DOCUMENTATION=OFF \
    -DVTKm_ENABLE_EXAMPLES=OFF \
    -DVTKm_ENABLE_HDF5_IO=OFF \
    -DVTKm_ENABLE_KOKKOS=OFF \
    -DVTKm_ENABLE_MPI=OFF \
    -DVTKm_ENABLE_OPENMP=OFF \
    -DVTKm_ENABLE_RENDERING=OFF \
    -DVTKm_ENABLE_TBB=OFF \
    -DVTKm_ENABLE_TESTING=OFF \
    -DVTKm_Vectorization=none

variant native description {Enable CPU-specific optimizations} {
    configure.args-replace \
        -DVTKm_Vectorization=none -DVTKm_Vectorization=native
}

variant openmp description {Enable OpenMP support} {
    configure.args-replace \
        -DVTKm_ENABLE_OPENMP=OFF -DVTKm_ENABLE_OPENMP=ON

    compiler.openmp_version 4.0
    configure.cppflags-append -fopenmp-version=40
    configure.ldflags-append -L${prefix}/lib/libomp -lomp
}

variant tbb description {Enable Intel Threading Building Blocks support} {
    configure.args-replace \
        -DVTKm_ENABLE_TBB=OFF -DVTKm_ENABLE_TBB=ON

    # NOTE: since v1.9.0 it picks OneTBB via TBBConfig.cmake before checking TBB_ROOT
    depends_lib-append  port:tbb
    configure.env-append \
        TBB_ROOT=${prefix}/libexec/tbb
}

livecheck.url           https://gitlab.kitware.com/vtk/vtk-m/-/tags?format=atom
gitlab.livecheck.regex  {([0-9.]+)}
