summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media-plugins/calf/calf-0.0.60.ebuild4
-rw-r--r--media-plugins/calf/files/calf-0.0.60-cpp14.patch67
2 files changed, 71 insertions, 0 deletions
diff --git a/media-plugins/calf/calf-0.0.60.ebuild b/media-plugins/calf/calf-0.0.60.ebuild
index 3a0b8061f503..f4a90b7a806c 100644
--- a/media-plugins/calf/calf-0.0.60.ebuild
+++ b/media-plugins/calf/calf-0.0.60.ebuild
@@ -36,6 +36,10 @@ RDEPEND="dev-libs/atk
DEPEND="${RDEPEND}
virtual/pkgconfig"
+PATCHES=(
+ "${FILESDIR}/${P}-cpp14.patch" # bug #594116
+)
+
src_configure() {
myeconfargs=(
--with-lv2-dir=/usr/$(get_libdir)/lv2
diff --git a/media-plugins/calf/files/calf-0.0.60-cpp14.patch b/media-plugins/calf/files/calf-0.0.60-cpp14.patch
new file mode 100644
index 000000000000..a04043c8abca
--- /dev/null
+++ b/media-plugins/calf/files/calf-0.0.60-cpp14.patch
@@ -0,0 +1,67 @@
+Fix building with C++14 (default in GCC 6). Changes types (mostly float into
+double). Add necessary casts.
+See also: https://bugs.gentoo.org/show_bug.cgi?id=594116
+
+--- a/src/analyzer.cpp
++++ b/src/analyzer.cpp
+@@ -470,13 +470,13 @@
+ lastoutL = fft_outL[_iter];
+ //pumping up actual signal an erase surrounding
+ // sounds
+- fft_outL[_iter] = 0.25f * std::max(n * 0.6f * \
++ fft_outL[_iter] = 0.25 * std::max(n * 0.6 * \
+ fabs(fft_outL[_iter]) - var1L , 1e-20);
+ if(_mode == 3 or _mode == 4) {
+ // do the same with R channel if needed
+ lastoutR = fft_outR[_iter];
+- fft_outR[_iter] = 0.25f * std::max(n * \
+- 0.6f * fabs(fft_outR[_iter]) - var1R , 1e-20);
++ fft_outR[_iter] = 0.25 * std::max(n * \
++ 0.6 * fabs(fft_outR[_iter]) - var1R , 1e-20);
+ }
+ break;
+ }
+--- a/src/jack_client.cpp
++++ b/src/jack_client.cpp
+@@ -226,7 +226,7 @@
+ map<string, int>::const_iterator p = port_to_plugin.find((*k) + cnlen + 1);
+ if (p != port_to_plugin.end())
+ {
+- run_before.insert(make_pair<int, int>(p->second, i));
++ run_before.insert(make_pair<int, int>((int)p->second, (int)i));
+ }
+ }
+ jack_free(conns);
+--- a/src/modules_dist.cpp
++++ b/src/modules_dist.cpp
+@@ -794,8 +794,8 @@
+ lfo2.advance(1);
+
+ // dot
+- rms = std::max((double)rms, (fabs(Lo) + fabs(Ro)) / 2);
+- input = std::max((double)input, (fabs(Lc) + fabs(Rc)) / 2);
++ rms = std::max((double)rms, (fabs(Lo) + fabs(Ro)) / 2.0);
++ input = std::max((double)input, (fabs(Lc) + fabs(Rc)) / 2.0);
+
+ float values[] = {inL, inR, outs[0][i], outs[1][i]};
+ meters.process(values);
+--- a/src/modules_limit.cpp
++++ b/src/modules_limit.cpp
+@@ -429,7 +429,7 @@
+ }
+
+ // write multiband coefficient to buffer
+- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
++ buffer[pos] = std::min((double)*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
+
+ // step forward in multiband buffer
+ pos = (pos + channels) % buffer_size;
+@@ -811,7 +811,7 @@
+ }
+
+ // write multiband coefficient to buffer
+- buffer[pos] = std::min(*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
++ buffer[pos] = std::min((double)*params[param_limit] / std::max(fabs(tmpL), fabs(tmpR)), 1.0);
+
+ // step forward in multiband buffer
+ pos = (pos + channels) % buffer_size;