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

name                hackrf
maintainers         {michaelld @michaelld} openmaintainer

description         ${name} is a project to build a low cost software radio (SDR) platform.

categories          science comms
license             GPL-3

long_description    {*}${description}

subport hackrf-devel {}

if {${subport} eq ${name}} {

    # release
    github.setup    greatscottgadgets hackrf 2024.02.1 v
    github.tarball_from releases
    use_xz          yes
    checksums       rmd160 8d6d45362224971ce7cfaa534f11ad04f3d7980d \
                    sha256 d9ced67e6b801cd02c18d0c4654ed18a4bcb36c24a64330c347dfccbd859ad16 \
                    size   21734672
    revision        0

    epoch           1

    conflicts       hackrf-devel

} else {

    # devel
    github.setup    greatscottgadgets hackrf db884152dc4e2021c3f134cbd21392e958380c14
    version         20241205-[string range ${git.branch} 0 7]
    github.tarball_from archive
    checksums       rmd160  ca1f0b179184c41889d7ae0f6dbe922681469232 \
                    sha256  9c84505ccc9ce6a13b0a3b88715ed7c2289a190d15cbf99bf570120b392e854d \
                    size    13248842
    revision        0

    conflicts       hackrf

}

depends_build-append path:bin/pkg-config:pkgconfig

depends_lib-append   path:lib/pkgconfig/libusb-1.0.pc:libusb \
                     port:fftw-3-single

# Many compilers do not recognize "-std=gnu90", so remove it.
# Temporary patch.

patchfiles-append   patch-no-gnu90.diff

cmake.source_dir    ${worksrcpath}/host

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

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

# HackRF cmake doesn't understand build type "MacPorts";
# use release unless +debug is set

if {[variant_isset debug]} {
    cmake.build_type Debug
} else {
    cmake.build_type Release
}
