83 lines
2.3 KiB
Nix
83 lines
2.3 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
puredata,
|
|
pkg-config,
|
|
cmake,
|
|
openssl,
|
|
libogg,
|
|
libvorbis,
|
|
opusfile,
|
|
ffmpeg,
|
|
zlib,
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "pd-else";
|
|
version = "1.0-rc13";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "porres";
|
|
repo = "pd-else";
|
|
tag = "v.${version}";
|
|
hash = "sha256-WebjdozcFup2xk3cS9LPTiA6m0l1sR6sj3hHlt6ScfU=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
pkg-config
|
|
cmake
|
|
];
|
|
|
|
buildInputs = [
|
|
puredata
|
|
openssl
|
|
libogg
|
|
libvorbis
|
|
opusfile
|
|
ffmpeg
|
|
zlib
|
|
];
|
|
|
|
# Set up Pure Data headers and configure with system libraries
|
|
preConfigure = ''
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace-fail 'add_subdirectory(Source/Shared/ffmpeg)' '# add_subdirectory(Source/Shared/ffmpeg) - using system FFmpeg' \
|
|
--replace-fail 'target_link_libraries(play.file_tilde PRIVATE ffmpeg)' 'target_link_libraries(play.file_tilde PRIVATE avformat avcodec avutil swresample z)' \
|
|
--replace-fail 'target_link_libraries(sfload PRIVATE ffmpeg)' 'target_link_libraries(sfload PRIVATE avformat avcodec avutil swresample z)' \
|
|
--replace-fail 'target_link_libraries(sfinfo PRIVATE ffmpeg)' 'target_link_libraries(sfinfo PRIVATE avformat avcodec avutil swresample z)'
|
|
'';
|
|
|
|
cmakeFlags = [
|
|
"-DCMAKE_C_FLAGS=-I${puredata}/include/pd"
|
|
"-DCMAKE_CXX_FLAGS=-I${puredata}/include/pd"
|
|
"-DUSE_LTO=ON"
|
|
"-DOPENSSL_CRYPTO_LIBRARY=${lib.getLib openssl}/lib/libcrypto.so"
|
|
"-DOPENSSL_SSL_LIBRARY=${lib.getLib openssl}/lib/libssl.so"
|
|
];
|
|
|
|
postInstall = ''
|
|
mv else/ $out/else/
|
|
rm -rf $out/include/ $out/lib/
|
|
'';
|
|
|
|
postFixup = ''
|
|
interpreter=$(cat $NIX_CC/nix-support/dynamic-linker)
|
|
find $out -type f -executable -exec patchelf --set-interpreter "$interpreter" --set-rpath ${lib.makeLibraryPath buildInputs} {} \;
|
|
'';
|
|
|
|
meta = {
|
|
description = "EL Locus Solus' Externals for Pure Data";
|
|
longDescription = ''
|
|
ELSE is a library of externals and abstractions for Pure Data.
|
|
It provides a comprehensive set of tools for signal processing,
|
|
MIDI, GUI, and more in Pure Data.
|
|
'';
|
|
homepage = "https://github.com/porres/pd-else";
|
|
license = lib.licenses.wtfpl;
|
|
platforms = lib.platforms.unix;
|
|
broken = stdenv.hostPlatform.isDarwin;
|
|
maintainers = [ lib.maintainers.kugland ];
|
|
};
|
|
}
|