# -*- 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.1
PortGroup           github 1.0
PortGroup           boost 1.0

name                gr-limesdr
categories          science comms
platforms           darwin macosx
license             GPL-3+
maintainers         {ra1nb0w @ra1nb0w} {michaelld @michaelld} openmaintainer
description         GNU Radio block for LimeSDR-USB/LimeSDR-Mini boards
long_description    ${description}
homepage            https://wiki.myriadrf.org/Gr-limesdr_Plugin_for_GNURadio

# use C++11
compiler.cxx_standard 2011

if {${subport} eq ${name}} {
    github.setup    myriadrf gr-limesdr 3.0.1 v
    checksums       rmd160  aea48429e6d95da8309368074c61c55af7d70a88 \
                    sha256  de7ffc85b8f4d39bd4c6be6b3f2860546e2e36a18a2f04b9f89c0c130b9dbedf \
                    size    2992951
    revision        3

    depends_lib-append \
        path:lib/libgnuradio-runtime.dylib:gnuradio

    conflicts gr37-limesdr

    set python_versions { 3.6 3.7 3.8 3.9 }
    set default_python_variant +python37

    github.livecheck.regex  {([0-9.]+)}
}

subport gr37-limesdr {

    name            gr37-limesdr

    github.setup    myriadrf gr-limesdr 2.0.0 v
    checksums       rmd160  c8b2b7a745a316bcc7c6b7b0a1121da2bddea05a \
                    sha256  6f2fcf42dd45ca3893c914752f803dd811e046c21c567286fd1ad35a8d362f05 \
                    size    3083984
    revision        2

    conflicts       gr-limesdr

    set python_versions { 2.7 }
    set default_python_variant +python27

    depends_lib-append \
        port:gnuradio37

    github.livecheck.regex  {(2.[0-9.]+)}
}

subport gr-limesdr-devel {
    replaced_by     gr-limesdr
    version         3.0.1
    PortGroup       obsolete 1.0
    set python_versions { 2.7 }
    set default_python_variant +python27
}

# Define the available variants
foreach py_ver ${python_versions} {
    set py_ver_no_dot [join [split ${py_ver} "."] ""]
    set variant_line {variant python${py_ver_no_dot} description "Build with python ${py_ver} support"}
    foreach py_over ${python_versions} {
        if { ${py_ver} == ${py_over} } { continue }
        set py_over_no_dot [join [split ${py_over} "."] ""]
        append variant_line " conflicts python${py_over_no_dot}"
    }
    append variant_line { { } }
    eval $variant_line
    if {[variant_isset python${py_ver_no_dot}]} {
        if {${default_python_variant} != "+python${py_ver_no_dot}"} {
            set default_python_variant ""
        }
    }
}

# set default python variant if not selected
if {${default_python_variant} != ""} {
    default_variants-append "${default_python_variant}"
}

# If a python variant is enabled, activate it
set active_python_version ""
set active_python_version_no_dot ""
foreach py_ver ${python_versions} {
    set py_ver_no_dot [join [split ${py_ver} "."] ""]
    if {[variant_isset python${py_ver_no_dot}]} {
        set active_python_version        ${py_ver}
        set active_python_version_no_dot ${py_ver_no_dot}
    }
}

depends_build-append \
    port:swig-python \
    port:pkgconfig \
    port:cppunit

depends_lib-append \
    path:lib/libLimeSuite.dylib:limesuite \
    port:python${active_python_version_no_dot}

boost.version 1.71

# specify the Python version to use
set python_framework_dir ${frameworks_dir}/Python.framework/Versions/${active_python_version}
configure.args-append \
    -DPYTHON_EXECUTABLE=${python_framework_dir}/bin/python${active_python_version} \
    -DPYTHON_INCLUDE_DIR=${python_framework_dir}/Headers \
    -DPYTHON_LIBRARY=${python_framework_dir}/Python \
    -DGR_PYTHON_DIR=${python_framework_dir}/lib/python${active_python_version}/site-packages

configure.args-append \
    -DDOXYGEN_DOT_EXECUTABLE= \
    -DDOXYGEN_EXECUTABLE= \
    -DCMAKE_MODULES_DIR=share/cmake

variant docs description "Install ${name} documentation" {

    depends_build-append \
        port:doxygen \
        path:bin/dot:graphviz

    configure.args-delete \
        -DDOXYGEN_DOT_EXECUTABLE= \
        -DDOXYGEN_EXECUTABLE=

    configure.args-append \
        -DDOXYGEN_DOT_EXECUTABLE=${prefix}/bin/dot \
        -DDOXYGEN_EXECUTABLE=${prefix}/bin/doxygen

}

default_variants +docs

post-destroot {
    # copy GNU Radio examples
    xinstall -m 755 -d ${destroot}${prefix}/share/gnuradio/examples/limesdr
    file copy {*}[glob ${worksrcpath}/examples/*] \
        ${destroot}${prefix}/share/gnuradio/examples/limesdr
}
