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

name                SDRplay3
maintainers         {ra1nb0w @ra1nb0w} {michaelld @michaelld} openmaintainer

description         ${name} provides support for SDRplay hardware (API 3)
long_description    ${description}. SDR for Software Defined Radio and \
    'Play' because it's designed to allow anyone interested in receiving \
    practically any kind of radio or TV signals to be able to do so \
    without having to decide up-front exactly what it is they will want to \
    do next. For computer wizards we are democratising Radio in that you \
    can literally Play at creating completely new radio-based products.

categories          science comms
homepage            https://www.sdrplay.com
license             restrictive/distributable
platforms           darwin macosx

supported_archs     x86_64

version             3.07.1
checksums           rmd160  4b222c5d32954b0168a1fe1b423ff5b3591b257f \
                    sha256  350fc841d672e9fa26911fba6c7c4684c5fcc8ef3e37173d8460126b9f23e581 \
                    size    3184640

master_sites        ${homepage}/software/
distname            SDRplay_RSP_API-MacOSX-${version}
use_dmg             yes

# libusb is required by sdrplay_apiService
depends_lib-append \
    path:lib/pkgconfig/libusb-1.0.pc:libusb

global I_N_T
set I_N_T "/usr/bin/install_name_tool"

platform darwin 10 {
    # on Mac OS X 10.6, have to use MacPorts' install_name_tool; the
    # one provided is too old.
    depends_build-append port:cctools
    global I_N_T
    set I_N_T "${prefix}/bin/install_name_tool"
}

global sdrpla3_lib_version
set sdrplay3_lib_version [join [lrange [split ${version} .] 0 1] .]
global sdrplay3_lib
set sdrplay3_lib "libsdrplay_api.so.${sdrplay3_lib_version}"
global sdrplay3_header
set sdrplay3_header "sdrplay_api.h"
global sdrplay3_service_start
set sdrplay3_service_start "sdrplay_apiService"
global sdrplay3_dir
set sdrplay3_dir "${worksrcpath}/sdrplay3"
global sdrplay3_pkg_binaries
set sdrplay3_pkg_binaries "SDRplay_RSP_API-MacOSX-${version}.mpkg/Contents/Packages/APIBinaries.pkg"
global sdrplay3_pkg_headers
set sdrplay3_pkg_headers "SDRplay_RSP_API-MacOSX-${version}.mpkg/Contents/Packages/APIHeaders.pkg"
global sdrplay3_pkg_service_start
set sdrplay3_pkg_service_start "SDRplay_RSP_API-MacOSX-${version}.mpkg/Contents/Packages/APIServiceStart.pkg"

use_configure no

post-extract {
    # extract the PKGs we need here
    global sdrplay3_distfile sdrplay3_pkg_binaries sdrplay3_pkg_headers sdrplay3_pkg_service_start
    #system "mkdir ${worksrcpath}"
    system "mkdir ${sdrplay3_dir}"
    system -W ${worksrcpath} "pkgutil --expand ${worksrcpath}/${sdrplay3_pkg_binaries} pkg_pkg_binaries"
    system -W ${sdrplay3_dir} "mv ../pkg_pkg_binaries/Payload tmp0.tar.gz && /usr/bin/gzip -dc tmp0.tar.gz | /usr/bin/tar -xf -"
    system -W ${worksrcpath} "pkgutil --expand ${worksrcpath}/${sdrplay3_pkg_headers} pkg_pkg_headers"
    system -W ${sdrplay3_dir} "mv ../pkg_pkg_headers/Payload tmp0.tar.gz && /usr/bin/gzip -dc tmp0.tar.gz | /usr/bin/tar -xf -"
    system -W ${worksrcpath} "pkgutil --expand ${worksrcpath}/${sdrplay3_pkg_service_start} pkg_pkg_service_start"
    system -W ${sdrplay3_dir} "mv ../pkg_pkg_service_start/Payload tmp0.tar.gz && /usr/bin/gzip -dc tmp0.tar.gz | /usr/bin/tar -xf -"
}

build {
    # fix SDRPlay library to work with MacPorts
    global sdrplay3_lib sdrplay3_dir I_N_T
    system -W ${sdrplay3_dir} "${I_N_T} -id ${prefix}/lib/${sdrplay3_lib} Applications/SDRplayAPI.app/x86_64/${sdrplay3_lib}"

    # fix libusb path
    global sdrplay3_service_start
    system -W ${sdrplay3_dir} "${I_N_T} -change /usr/local/lib/libusb-1.0.0.dylib ${prefix}/lib/libusb-1.0.0.dylib Applications/SDRplayAPI.app/x86_64/${sdrplay3_service_start}"

    # prepend license to header
    global sdrplay3_header
    move ${sdrplay3_dir}/inc/${sdrplay3_header} ${sdrplay3_dir}/tmp.h
    copy ${filespath}/license.txt ${sdrplay3_dir}/inc/${sdrplay3_header}
    system -W ${sdrplay3_dir} "cat ${sdrplay3_dir}/tmp.h >> ${sdrplay3_dir}/inc/${sdrplay3_header}"
}

destroot {
    # install sdrplay3
    global sdrplay3_lib sdrplay3_header sdrplay3_dir
    copy ${sdrplay3_dir}/Applications/SDRplayAPI.app/x86_64/${sdrplay3_lib} ${destroot}${prefix}/lib
    file link -symbolic ${destroot}${prefix}/lib/libsdrplay_api.so.3 ${sdrplay3_lib}
    file link -symbolic ${destroot}${prefix}/lib/libsdrplay_api.so ${sdrplay3_lib}
    copy ${sdrplay3_dir}/Applications/SDRplayAPI.app/x86_64/${sdrplay3_service_start} ${destroot}${prefix}/bin
    file copy {*}[glob ${sdrplay3_dir}/inc/sdrplay_api*.h] ${destroot}${prefix}/include
}

startupitem.create      yes
startupitem.name        sdrplay_service
startupitem.autostart   yes
startupitem.executable  ${prefix}/bin/${sdrplay3_service_start}

livecheck.type          regex
livecheck.url           ${homepage}/dload/dl3a.php?model=RSP1A&OS=MacOS%20Other&software=API&gotsys=y
livecheck.regex         {/SDRplay_RSP_API-MacOSX-([0-9.]+)\.pkg}
