# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:filetype=tcl:et:sw=4:ts=4:sts=4

PortSystem          1.0

PortGroup           cmake 1.0
PortGroup           github 1.0
PortGroup           active_variants 1.1
PortGroup           boost 1.0

name                volk-gnss-sdr
maintainers         {michaelld @michaelld} {gmail.com:carles.fernandez @carlesfernandez} openmaintainer
description         Volk modules for GNSS-SDR
categories          science
license             GPL-3

dist_subdir         gnss-sdr

compiler.cxx_standard 2014

if {${subport} eq "volk-gnss-sdr"} {

    long_description    {*}${description}: \
        This port is kept up with the VOLK-GNSS-SDR release, which is typically updated every few months.

    github.setup    gnss-sdr gnss-sdr 0.0.19 v
    # Change github.tarball_from to 'releases' or 'archive' next update
    github.tarball_from tarball
    revision        0
    checksums       rmd160  11daaaa2e4acbbcc837d8bd4f42546a6440675bc \
                    sha256  e1f555da5ed8d0e0002441b771993409af29ed897784a0ebc7ee8d6c74b0cb98 \
                    size    4086145

    conflicts       volk-gnss-sdr-devel

}

subport volk-gnss-sdr-devel {
    long_description    {*}${description}: \
        This port is kept up with the VOLK-GNSS-SDR GIT next branch, which is typically updated daily to weekly. This version of VOLK-GNSS-SDR generally contains fixes and new features that will be incorporated in an upcoming release.

    github.setup    gnss-sdr gnss-sdr ec180d852574e10c621f9bf498d3ef70d26342ce
    # Change github.tarball_from to 'releases' or 'archive' next update
    github.tarball_from tarball
    version         20240126-[string range ${github.version} 0 7]
    checksums       rmd160  6171d3966487f1cdf78fcc18e9a3f33f7a6f87a4 \
                    sha256  6fbf9bfa1813a00daefdaa5a11b3f15f396af4c957b1792378e4f2a92952723a \
                    size    4086092
    revision        0

    conflicts       volk-gnss-sdr

    # specify version info

    configure.args-append \
        -DGIT_BRANCH="next-MacPorts" \
        -DGIT_COMMIT_HASH="${version}"

    # overload the github livecheck branch

    github.livecheck.branch next

}

# override github PortGroup homepage setting

homepage            https://gnss-sdr.org

depends_build-append port:pkgconfig

# can use either the Volk release or devel port.
# the Volk API is required, not the ABI.

depends_lib-append \
    path:lib/libvolk.dylib:volk \
    port:orc

# specify the Python dependencies; these are checked for at configure,
# then used for building, but not at runtime.

set pythons_suffixes {38 39 310 311 312}

set pythons_ports {}
foreach s ${pythons_suffixes} {
    lappend pythons_ports python${s}
}

proc python_dir {} {
    global pythons_suffixes
    foreach s ${pythons_suffixes} {
        if {[variant_isset python${s}]} {
            set p python[string index ${s} 0].[string range ${s} 1 end]
            return [file normalize [exec ${p} -c "import sys; print(sys.prefix)"]/lib/${p}/site-packages]
        }
    }
    error "Python support not enabled."
}

foreach s ${pythons_suffixes} {
    set p python${s}
    set v [string index ${s} 0].[string range ${s} 1 end]
    set i [lsearch -exact ${pythons_ports} ${p}]
    set c [lreplace ${pythons_ports} ${i} ${i}]
    variant ${p} description "Build Volk using Python ${v}" conflicts {*}${c} "
    # required Python
    depends_lib-append \
        port:${p}
    depends_build-append \
        port:py${s}-six \
        port:py${s}-mako
    # specify the Python version to use
    configure.args-append \
        -DPYTHON_EXECUTABLE=${frameworks_dir}/Python.framework/Versions/${v}/bin/python${v} \
        -DVOLK_PYTHON_DIR=${frameworks_dir}/Python.framework/Versions/${v}/lib/python${v}/site-packages
    "
}

if {![variant_isset debug]} {
    set selected_python python39
    foreach s ${pythons_suffixes} {
        if {[variant_isset python${s}]} {
            set selected_python python${s}
        }
    }
    default_variants +${selected_python}
}

# do VPATH (out of source tree) build

cmake.out_of_source yes

# set work directory

worksrcdir ${worksrcdir}/src/algorithms/libs/volk_gnsssdr_module/volk_gnsssdr

# remove top-level library path, such that internal libraries are used
# instead of any already-installed ones.

configure.ldflags-delete -L${prefix}/lib

# specify where to install cmake files

configure.args-append \
    -DCMAKE_MODULES_DIR=${prefix}/share/cmake

test.run yes
