Files

144 lines
5.8 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
github.setup csound csound 6.18.1
github.tarball_from archive
revision 4
categories audio
license LGPL-2.1+
maintainers nomaintainer
homepage https://www.csound.com
description A language that is used to describe sound synthesizers.
long_description Csound is a computer programming language for dealing with \
sound. It is called Csound because it is written in the C \
programming language, as opposed to some of its \
predecessors. Csound was written at MIT by Barry Vercoe, \
based on an earlier language called Music360.
checksums rmd160 3702ec791eb5f98f807aed6ec3de7f4eb9deab77 \
sha256 b84be8237fa9258ef60fdddf36fae27b20c11665811bf5ed12540da9a9a4414e \
size 31925161
depends_build-append \
port:gettext \
port:flex \
port:bison
depends_lib port:curl \
port:gettext-runtime \
port:liblo \
port:libsndfile
patchfiles MAC_OS_X_VERSION.patch
patchfiles-append fix-opaddr-typo.patch
# https://github.com/csound/csound/pull/1732
# https://github.com/csound/csound/issues/1733#issuecomment-1668096257
patchfiles-append 0001-Use-correct-clang-options-in-CMakeLists.patch \
0002-patch-fix-Altivec.diff
compiler.cxx_standard 2011
configure.args-append -DBUILD_CXX_INTERFACE=ON \
-DBUILD_DSSI_OPCODES=OFF \
-DBUILD_JAVA_INTERFACE=OFF \
-DBUILD_LUA_INTERFACE=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_UTILITIES=ON \
-DCS_FRAMEWORK_DEST=${frameworks_dir} \
-DFAIL_MISSING=ON \
-DUSE_ALSA=OFF \
-DUSE_CURL=ON \
-DUSE_DOUBLE=OFF \
-DUSE_GETTEXT=ON \
-DUSE_JACK=OFF \
-DUSE_PORTAUDIO=OFF \
-DUSE_PORTMIDI=OFF \
-DUSE_PULSEAUDIO=OFF
# CMake Error at CMakeLists.txt:146 (message): BUILD_TESTS is enabled, but BUILD_STATIC_LIBRARY="OFF"
# Building static lib does not hurt even without tests enabled, since dylib is still built as well.
configure.args-append -DBUILD_STATIC_LIBRARY=ON
if {${configure.build_arch} ni [list arm i386 ppc]} {
default_variants-append +double
}
if {${configure.build_arch} in [list ppc ppc64]} {
# We do not want to add -mcpu= here, that is not safe.
configure.optflags-append -mtune=native
# Absence of altivec is not automatically detected.
if {[catch {sysctl hw.vectorunit} result] || $result == 0} {
configure.cppflags-append \
-DPFFFT_SIMD_DISABLE
}
# In either case, enforce a local build.
archive_sites
}
if [variant_isset double] {
set libname CsoundLib64
} else {
set libname CsoundLib
}
set cs_framework_path ${libname}.framework/Versions/6.0
set csoundlib ${cs_framework_path}/${libname}
post-destroot {
# While this is not immediately obvious upon install, dylib and binaries are built with wrong paths:
# /opt/local/lib/CsoundLib64.framework/Versions/6.0/CsoundLib64
# At the same time this is installed correctly into the framework directory, so the path points to nothing.
# CMakeLists are a mess, and it is unclear what in particular breaks this. Fix paths in destroot:
system -W ${destroot}${frameworks_dir} "install_name_tool -id ${frameworks_dir}/${csoundlib} ./${csoundlib}"
system -W ${destroot}${prefix}/lib "install_name_tool -change ${prefix}/lib/${csoundlib} ${frameworks_dir}/${csoundlib} ./libcsnd6.6.0.dylib"
foreach bin [glob ${destroot}${prefix}/bin/*] {
system "install_name_tool -change ${prefix}/lib/${csoundlib} ${frameworks_dir}/${csoundlib} ${bin}"
}
# Existing targets also omit headers from /interfaces, which are needed for some dependents:
# https://github.com/CsoundQt/CsoundQt/issues/392
xinstall -d ${destroot}${prefix}/include/${name}
fs-traverse f ${worksrcpath}/interfaces {
if {[file isfile ${f}] && ([file extension ${f}] == ".h" || [file extension ${f}] == ".hpp")} {
copy ${f} ${destroot}${prefix}/include/${name}/
}
}
}
variant double description "Use double precision" {
# See: http://www.csounds.com/manual/html/MiscCsound64.html
configure.args-replace -DUSE_DOUBLE=OFF \
-DUSE_DOUBLE=ON
}
variant portaudio conflicts pulseaudio description "Use PortAudio" {
depends_build-append port:portaudio
configure.args-replace -DUSE_PORTAUDIO=OFF \
-DUSE_PORTAUDIO=ON
}
variant pulseaudio conflicts portaudio description "Use PulseAudio" {
depends_build-append port:pulseaudio
configure.args-replace -DUSE_PULSEAUDIO=OFF \
-DUSE_PULSEAUDIO=ON
}
variant tests description "Build tests" {
depends_build-append port:cunit
configure.args-replace -DBUILD_TESTS=OFF \
-DBUILD_TESTS=ON
# Otherwise libraries are looked for in the prefix, which fails, if the port has not been installed earlier.
test.env-append DYLD_LIBRARY_PATH=${cmake.build_dir}:${cmake.build_dir}/${cs_framework_path}
test.run yes
}
# Note: fltk functionality has moved to a separate 'plugins' repo upstream.
# Ports could be created for some or all of those plugins if desired.