about summary refs log tree commit diff
path: root/pkgs/applications/audio/nova-filters
diff options
context:
space:
mode:
authorWeijia Wang <9713184+wegank@users.noreply.github.com>2023-06-06 18:54:40 +0300
committerWeijia Wang <9713184+wegank@users.noreply.github.com>2023-06-06 18:54:40 +0300
commit4779646dd0bee783ee1c6c0b30af6edc4054aeff (patch)
treeed5a494e14e1749a1c482dcdf5e4f096b4d6f24a /pkgs/applications/audio/nova-filters
parentac6d8999f034ca9971e76cf110c3f50046fc0c9a (diff)
nova-filters: refactor
Diffstat (limited to 'pkgs/applications/audio/nova-filters')
-rw-r--r--pkgs/applications/audio/nova-filters/default.nix55
1 files changed, 36 insertions, 19 deletions
diff --git a/pkgs/applications/audio/nova-filters/default.nix b/pkgs/applications/audio/nova-filters/default.nix
index 4400535a931b7..1c457c8a0e7b7 100644
--- a/pkgs/applications/audio/nova-filters/default.nix
+++ b/pkgs/applications/audio/nova-filters/default.nix
@@ -1,33 +1,50 @@
-{lib, stdenv, fetchurl, scons, boost, ladspaH, pkg-config }:
+{ lib
+, stdenv
+, fetchurl
+, scons
+, boost
+, ladspaH
+, libcxxabi
+}:
 
-stdenv.mkDerivation {
-  version = "0.2-2";
+stdenv.mkDerivation (finalAttrs: {
   pname = "nova-filters";
+  version = "0.2-2";
 
   src = fetchurl {
-    url = "https://klingt.org/~tim/nova-filters/nova-filters_0.2-2.tar.gz";
-    sha256 = "16064vvl2w5lz4xi3lyjk4xx7fphwsxc14ajykvndiz170q32s6i";
+    url = "https://klingt.org/~tim/nova-filters/nova-filters_${finalAttrs.version}.tar.gz";
+    hash = "sha256-0WgxMDjhx2b39FKRwLrm8LrTO5nS0xE7+bRwQfcmBpg=";
   };
 
-  nativeBuildInputs = [ pkg-config scons ];
-  buildInputs = [ boost ladspaH ];
-
-  patchPhase = ''
-    # remove TERM:
-    sed -i -e '4d' SConstruct
-    sed -i 's@Options@Variables@g' SConstruct
-    sed -i "s@-fomit-frame-pointer -ffast-math -mfpmath=sse@-I ${boost.dev}/include@g" SConstruct
-    sed -i "s@env.has_key('cxx')@'cxx' in env@g" SConstruct
-    sed -i "s@ladspa.h@${ladspaH}/include/ladspa.h@g" filters.cpp
-    sed -i "s@LADSPA_HINT_SAMPLE_RATE, 0, 0.5@LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5@g" filters.cpp
-    sed -i "s/= check/= detail::filter_base<internal_type, checked>::check/" nova/source/dsp/filter.hpp
+  postPatch = ''
+    substituteInPlace SConstruct \
+      --replace "'TERM' : os.environ['TERM']," "" \
+      --replace "Options" "Variables" \
+      --replace "-fomit-frame-pointer -ffast-math -mfpmath=sse" "-I${boost.dev}/include -I${ladspaH}/include" \
+      --replace "env.has_key('cxx')" "True" \
+      --replace "env['cxx']" "'${stdenv.cc.targetPrefix}c++'" \
+      --replace "-Wl,--strip-all" "${lib.optionalString stdenv.isDarwin "-L${libcxxabi}/lib"}"
+
+    substituteInPlace filters.cpp \
+      --replace "LADSPA_HINT_SAMPLE_RATE, 0, 0.5" "LADSPA_HINT_SAMPLE_RATE, 0.0001, 0.5"
+
+    substituteInPlace nova/source/dsp/filter.hpp \
+      --replace "= check" "= detail::filter_base<internal_type, checked>::check"
+
+    substituteInPlace nova/source/primitives/float.hpp \
+      --replace "boost/detail/endian.hpp" "boost/predef/other/endian.h" \
+      --replace "BOOST_LITTLE_ENDIAN" "BOOST_ENDIAN_LITTLE_BYTE"
   '';
 
+  nativeBuildInputs = [
+    scons
+  ];
+
   meta = with lib; {
     description = "LADSPA plugins based on filters of nova";
     homepage = "http://klingt.org/~tim/nova-filters/";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.magnetophon ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
-}
+})