Files

164 lines
7.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 codeberg 1.0
PortGroup wxWidgets 1.0
codeberg.setup tenacityteam tenacity 1.3.4 v
set libnyquist_commit d4fe08b079538a2fd79277ef1a83434663562f04
revision 1
set tenacity_distfile ${name}-${version}${extract.suffix}
set libnyquist_distfile libnyquist-${libnyquist_commit}${extract.suffix}
checksums ${tenacity_distfile} \
rmd160 acdf7e447f9e7ac21f3bf7141f4484327e5f2860 \
sha256 75329d2ecdee1a48c1a13f2727bc10b6fd2fe1057d5a4f80f989b67e33240f86 \
size 48863846 \
${libnyquist_distfile} \
rmd160 da26633dcaae3b4e8885d17742b1b0a55858def4 \
sha256 27630884fa1c9302cd7b7c0252c2e8bcd52dfde481b3f464ed1ccc75c313827d \
size 706367
description an easy-to-use, cross-platform multi-track audio editor/recorder
long_description Tenacity is {*}${description} forked from Audacity.
# The automatically-generated tarball does not contain the submodules so we have
# to fetch them manually.
# https://codeberg.org/tenacityteam/tenacity/issues/315
# But there is also a suggestion to replace the libnyquist submodule with an
# external library at which point we won't need any submodules.
# https://codeberg.org/tenacityteam/tenacity/issues/365
master_sites ${codeberg.master_sites}/[join ${codeberg.tag_prefix}]${codeberg.version}[join ${codeberg.tag_suffix}]${extract.suffix}?dummy=:tenacity \
[string map [list /${codeberg.project}/ /libnyquist/] ${codeberg.master_sites}]/${libnyquist_commit}${extract.suffix}?dummy=:libnyquist
distfiles ${tenacity_distfile}:tenacity \
${libnyquist_distfile}:libnyquist
categories audio
maintainers {ryandesign @ryandesign} openmaintainer
license GPL-2+
# CMakeLists.txt sets macOS deployment target to 10.15 and src/CMakeLists.txt
# sets the SDK to 10.13 when linking to fix high CPU use on 10.14 and later.
# I haven't tried removing that yet.
platforms {darwin >= 19}
# CMakeLists.txt checks CMAKE_SIZEOF_VOID_P and WORDS_BIGENDIAN. I haven't tried
# using the muniversal portgroup yet.
universal_variant no
patchfiles FFmpeg.patch \
GIT_DESCRIBE.patch \
TenacityFunctions.cmake.patch
post-patch {
# https://codeberg.org/tenacityteam/tenacity/issues/397
reinplace "s|@GIT_DESCRIBE@|[join ${codeberg.tag_prefix}]${codeberg.version}[join ${codeberg.tag_suffix}]|g" ${worksrcpath}/CMakeLists.txt
# https://codeberg.org/tenacityteam/tenacity/issues/401
reinplace "s|@PREFIX@|${prefix}|g" ${worksrcpath}/libraries/lib-ffmpeg-support/FFmpegFunctions.cpp
}
# Python might not actually be required anymore.
# https://codeberg.org/tenacityteam/tenacity/issues/393#issuecomment-1653304
set python_version 3.13
wxWidgets.use wxWidgets-3.2
depends_build-append port:gettext \
port:nasm \
path:bin/pkg-config:pkgconfig \
port:python[string map {. {}} ${python_version}]
depends_lib-append path:lib/libavcodec.dylib:ffmpeg \
port:flac \
port:expat \
port:lame \
port:libebml \
port:libid3tag \
port:libmad \
port:libmatroska \
port:libogg \
port:libsndfile \
port:libvorbis \
port:portaudio \
port:soundtouch \
port:soxr \
port:sqlite3 \
port:twolame \
port:${wxWidgets.port} \
port:zlib
# The codeberg portgroup turns this on which doesn't work when using multiple
# distfiles and it's better to set an accurate worksrcdir in the first place.
extract.rename no
worksrcdir ${name}
post-extract {
# Move the manually-downloaded git submodules where they need to go.
foreach lib [list libnyquist] {
delete ${worksrcpath}/lib-src/${lib}
move ${workpath}/${lib} ${worksrcpath}/lib-src
}
}
compiler.cxx_standard 2017
cmake.generator Ninja
configure.python ${prefix}/bin/python${python_version}
configure.args-append -DCCACHE=OFF \
-DPython3_EXECUTABLE=${configure.python} \
-DSCCACHE=OFF \
-DVCPKG=OFF \
-DwxWidgets_CONFIG_EXECUTABLE=${wxWidgets.wxconfig}
# This option does not prevent Tenacity from needing to dynamically load the
# FFmpeg libraries, it just hides the section of the Preferences window that
# allows the user to choose a different location for the dynamically-loaded
# FFmpeg libraries. We set the correct location using a patchfile.
# https://codeberg.org/tenacityteam/tenacity/issues/401
configure.args-append -DDISABLE_DYNAMIC_LOADING_FFMPEG=ON
# LV2 support requires lilv and lv2 (for which we have ports) and suil (for
# which we don't).
# https://github.com/lv2/suil
configure.args-append -DLV2=OFF
# MIDI support requires PortMidi (for which we have a port), PortTime (which is
# part of PortMidi) and PortSMF (for which we don't have a port).
# https://codeberg.org/tenacityteam/portsmf
configure.args-append -DMIDI=OFF
# sbsms support requires libsmsms for which we don't have a port.
# https://github.com/claytonotey/libsbsms
# However there is also an open suggestion to replace libsbsms with rubberband
# for which we do already have a port.
# https://codeberg.org/tenacityteam/tenacity/issues/377
configure.args-append -DSBSMS=OFF
# Vamp plugin support requires vamp-plugin-sdk? for which we don't have a port.
# https://github.com/vamp-plugins/vamp-plugin-sdk
configure.args-append -DVAMP=OFF
# The program's native localization is English so there aren't any separate
# English localization resources, but if the English localization folder doesn't
# exist then the interface will be in some other language. The build system does
# create this folder but doesn't put anything in it, and MacPorts post destroot
# processing and archiving does not preserve empty folders.
destroot.keepdirs ${destroot}${applications_dir}/Tenacity.app/Contents/Resources/en.lproj
post-destroot {
# TODO: Figure out if some CMake flag can direct the app here.
move ${destroot}${prefix}/Tenacity.app ${destroot}${applications_dir}
# The installation process installs this library which is not needed because
# the program has already been linked with it statically at build time.
# https://codeberg.org/tenacityteam/tenacity/issues/394
delete ${destroot}${prefix}/lib/liblibnyquist.a
}