# -*- 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               compiler_blacklist_versions 1.0
PortGroup               github 1.0
PortGroup               legacysupport 1.1

# clock_gettime
legacysupport.newest_darwin_requires_legacy 16

github.setup            lfortran lfortran 0.33.1 v
revision                0
categories              lang fortran
maintainers             {@barracuda156 gmail.com:vital.had} openmaintainer
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  f9f76743cd53d7016b31291da1399c26ee7f7df5 \
                        sha256  4cd730121a24e8a9b58cb192b66ffdf1e9f27ebeb29e34e0b1ab50771231e1f2 \
                        size    2552956
github.tarball_from     archive

# Build system is a bit handicapped.
cmake.out_of_source     no

set port_libfmt         libfmt10
cmake.module_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.11
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}

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

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

    cmake.module_path-append \
                        ${llvm_prefix}/lib/cmake/llvm
    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

test.run                yes
