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

# clock_gettime
legacysupport.newest_darwin_requires_legacy 16

github.setup            lfortran lfortran 0.42.0 v
revision                0
categories              lang fortran
maintainers             nomaintainer
license                 BSD
description             Modern open-source interactive Fortran compiler
long_description        LFortran is a modern open-source interactive Fortran compiler built on top of LLVM. \
                        It can execute user’s code interactively to allow exploratory work \
                        (much like Python, MATLAB or Julia) as well as compile to binaries \
                        with the goal to run user’s code on modern architectures such as multi-core CPUs and GPUs.
homepage                https://lfortran.org

checksums               rmd160  c7a21ce5cb83adc9979278731b3ab0282c359de0 \
                        sha256  9da79d6789b2bd1bb864b653cd217fcd9fc3af3b9a1e24ee527f41cc7c515e8b \
                        size    2921696
github.tarball_from     archive

set port_libfmt         libfmt11
cmake.prefix_path-append \
                        ${prefix}/lib/${port_libfmt}/cmake

depends_build-append    port:bash \
                        port:bison \
                        port:re2c
depends_lib-append      path:lib/pkgconfig/RapidJSON.pc:rapidjson \
                        port:zlib \
                        port:${port_libfmt}

set py_ver              3.12
set py_ver_nodot        [string map {. {}} ${py_ver}]
depends_lib-append      port:python${py_ver_nodot}

# Install into meaningful locations:
patchfiles-append       patch-use-sane-install-dirs.diff \
                        patch-version.diff
# TODO: add CMake config files.

configure.python        ${prefix}/bin/python${py_ver}

post-patch {
    reinplace "s|@VERSION@|${version}|" ${worksrcpath}/ci/version.sh
    reinplace "s|python src|${configure.python} src|g" ${worksrcpath}/build0.sh
    reinplace "s|/usr/bin/env python|${configure.python}|" ${worksrcpath}/run_tests.py
}

# FIXME: this is likely wrong: https://github.com/lfortran/lfortran/issues/2689
compiler.cxx_standard   2017
# Use LLVM clangs
compiler.blacklist-append {clang}
# Avoid very recent clangs, they are known to causes errors:
compiler.blacklist-append {macports-clang-1[8-9]} {macports-clang-2[0-9]}

configure.args-append   -DLFORTRAN_BUILD_ALL=YES \
                        -DLFORTRAN_STATIC_BIN=NO \
                        -DWITH_FMT=YES \
                        -DWITH_JSON=YES \
                        -DWITH_LLVM=NO \
                        -DWITH_MACHO=YES \
                        -DWITH_RUNTIME_LIBRARY=YES \
                        -DWITH_ZLIB=YES

if {${configure.build_arch} ni [list ppc ppc64]} {
    set llvm_version    17
    set llvm_prefix     ${prefix}/libexec/llvm-${llvm_version}
    set llvm_bin        ${llvm_prefix}/bin

    cmake.prefix_path-append \
                        ${llvm_prefix}
    depends_lib-append  port:llvm-${llvm_version}
    configure.args-append \
                        -DLLVM_ROOT:PATH=${llvm_prefix}
    configure.args-replace \
                        -DWITH_LLVM=NO -DWITH_LLVM=YES
}

cmake.build_type        Release

variant kokkos description "Enable Kokkos support" {
    depends_lib-append  path:lib/libkokkoscore.dylib:kokkos

    configure.args-append \
                        -DWITH_KOKKOS=YES
}

default_variants-append +kokkos

# Disabling for now, since one of tests fails.
test.run                no
# Drop this after Macports 2.9.2 is out:
test.ignore_archs       yes
