Files

231 lines
8.1 KiB
Tcl

# -*- 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 github 1.0
name libiio
categories science comms
maintainers {michaelld @michaelld} openmaintainer
description ${name} is used to interface to the Industrial Input/Output (IIO) Subsystem
long_description {*}${description}. The IIO subsystem is intended to provide \
support for devices that in some sense are analog to \
digital or digital to analog converters (ADCs, DACs). This \
includes, but is not limited to ADCs, Accelerometers, Gyros, \
IMUs, Capacitance to Digital Converters (CDCs), Pressure \
Sensors, Color, Light and Proximity Sensors, Temperature \
Sensors, Magnetometers, DACs, DDS (Direct Digital Synthesis), \
PLLs (Phase Locked Loops), Variable/Programmable Gain \
Amplifiers (VGA, PGA), and RF transceivers. You can use libiio \
natively on an embedded Linux target (local mode), or use \
libiio to communicate remotely to that same target from a host \
Linux, Windows, or MAC over USB or Ethernet or Serial.
license LGPL-2+
# release
github.setup analogdevicesinc libiio 0.24 v
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from tarball
checksums rmd160 5c214e103c2527ace2b8e4ff5cf46d5ff0210115 \
sha256 3680d53aa129ca2ebaac009fecc88b9f4e79d1c3ad03067c16321d25b91ee779 \
size 483053
revision 4
long_description {*}${long_description} Provides the release, which is \
typically updated every few months to yearly.
# because I moved from a "devel" style 20190503 to a release style
# "0.18" and the latter is "less than" the former when comparing.
epoch 1
# patch to fix linking
patchfiles-append patch-fix-linking.diff
# patch to fix install directory of the framework
patchfiles-append patch-fix_build.diff
# patch to disable checking for libiio during install
patchfiles-append patch-disable-install-libiio-check.diff
if {${os.platform} eq "darwin" && ${os.major} < 15} {
PortGroup legacysupport 1.1
# strnlen
legacysupport.newest_darwin_requires_legacy 10
# This is the last commit which builds.
github.setup analogdevicesinc libiio 027919e318aacbe56c4a4a64803b6dead068180c
version 0.19
revision 2
checksums rmd160 1ace55fd89616d3a79d4ef70b99e517f17e6addd \
sha256 b0efca3544cd106d9e3ef3957cff658fdd525af0a2f98aef2c00e8cc24277d7e \
size 236403
github.tarball_from archive
patchfiles-replace \
patch-fix_build.diff patch-fix_build-0.19.diff \
patch-fix-linking.diff patch-fix-linking-0.19.diff
patchfiles-append \
patch-fix-headers.diff
# Uses endianness macros and built-ins requiring newer gcc.
compiler.blacklist-append \
*gcc-4.0 *gcc-4.2
}
# additional arguments
configure.args-append \
-DCMAKE_INSTALL_DOCDIR=${prefix}/share/doc/${github.project} \
-DOSX_INSTALL_FRAMEWORKSDIR=${frameworks_dir}
depends_lib-append \
port:libxml2 \
path:lib/pkgconfig/libusb-1.0.pc:libusb
depends_build-append \
path:bin/pkg-config:pkgconfig \
path:bin/doxygen:doxygen
# remove top-level library path, such that internal libraries are used
# instead of any already-installed ones.
configure.ldflags-delete -L${prefix}/lib
configure.args-append \
-DLIBUSB_INCLUDE_DIR:PATH=${prefix}/include/libusb-1.0 \
-DLIBUSB_LIBRARIES:FILEPATH=${prefix}/lib/libusb-1.0.dylib \
-DOSX_PACKAGE=OFF \
-DPYTHON_BINDINGS=ON
# specify the Python dependencies; these are checked for at configure,
# then used for building, but not at runtime.
set pythons_suffixes {27 310 311}
set pythons_ports {}
foreach s ${pythons_suffixes} {
lappend pythons_ports python${s}
}
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 ${name} using Python ${v}" conflicts {*}${c} ""
}
# default to Py310 if not selected by the user
set selected_python_no_dot 310
foreach s ${pythons_suffixes} {
if {[variant_isset python${s}]} {
set selected_python_no_dot ${s}
}
}
default_variants +python${selected_python_no_dot}
# make sure the default python variant wasn't
# deselected without selecting another one
set selected_python_no_dot ""
foreach s ${pythons_suffixes} {
if {[variant_isset python${s}]} {
set selected_python_no_dot ${s}
}
}
if {${selected_python_no_dot} eq ""} {
set py_vars ""
set final_s [lindex ${pythons_suffixes} end]
foreach s ${pythons_suffixes} {
if {${s} eq ${final_s}} {
set py_vars "${py_vars}or "
}
set py_vars "${py_vars}+python${s}"
if {${s} ne ${final_s}} {
set py_vars "${py_vars}, "
}
}
ui_error "\n\nYou must select one of the variants ${py_vars}.\n"
return -code error "Invalid variant selection"
}
set selected_python_with_dot [string index ${selected_python_no_dot} 0].[string range ${selected_python_no_dot} 1 end]
set python_top_dir ${frameworks_dir}/Python.framework/Versions/${selected_python_with_dot}
set python_name python${selected_python_with_dot}
# required Python
depends_lib-append port:python${selected_python_no_dot} \
port:py${selected_python_no_dot}-setuptools
configure.args-append \
-DPython_EXECUTABLE=${python_top_dir}/bin/${python_name}
post-destroot {
# move Python install to frameworks_dir for Python
set py_install_dir ${python_top_dir}/lib
xinstall -m 755 -d ${destroot}${py_install_dir}
move ${destroot}${prefix}/lib/${python_name} ${destroot}${py_install_dir}
# link from iio.framework to normal
set iio_framework_version ${version}
set iio_framework_top ${frameworks_dir}/iio.framework
set iio_framework ${iio_framework_top}/Versions/${iio_framework_version}/iio
set iio_dr_framework_top ${destroot}${iio_framework_top}
# fix iio library & link it into .../lib
xinstall -m 755 -d ${destroot}${prefix}/lib
ln -s ${iio_framework_top}/Versions/${iio_framework_version}/iio ${destroot}${prefix}/lib/libiio.dylib
system "install_name_tool -id ${iio_framework} ${destroot}${iio_framework}"
if {[variant_isset docs]} {
# fix Tools, and link them into .../bin
xinstall -m 755 -d ${destroot}${prefix}/bin
foreach app [glob ${iio_dr_framework_top}/Tools/*] {
set non_dr_app [strsed ${app} "s@${destroot}@@"]
set lib_iio_framework [strsed ${iio_framework} "s@Library/Frameworks@lib@"]
system "install_name_tool -change ${lib_iio_framework} ${iio_framework} ${app}"
ln -s ${non_dr_app} ${destroot}${prefix}/bin
}
}
# link includes into .../include
xinstall -m 755 -d ${destroot}${prefix}/include
foreach header [glob ${iio_dr_framework_top}/Versions/${iio_framework_version}/Headers/*] {
ln -s [strsed ${header} "s@${destroot}@@"] ${destroot}${prefix}/include
}
}
variant docs description {build documentation} {
depends_build-append \
path:bin/doxygen:doxygen \
port:man \
port:py${selected_python_no_dot}-sphinx \
port:py${selected_python_no_dot}-sphinx_rtd_theme
configure.args-append \
-DWITH_MAN=ON \
-DWITH_DOC=ON \
-DWITH_TESTS=ON \
-DSPHINX_EXECUTABLE=${prefix}/bin/sphinx-build-${selected_python_with_dot}
}
if {![variant_isset docs]} {
configure.args-append \
-DWITH_MAN=OFF \
-DWITH_DOC=OFF \
-DWITH_TESTS=OFF
}
# overload the github livecheck regex to look for versions that
# are just numbers and '.', no letters (e.g., "3.7.3_rc2").
github.livecheck.regex {([0-9.]+)}