Menu

#3 Fix build with GCC 6

Unstable (example)
accepted
None
5
2016-02-17
2016-02-16
Robin Lee
No

Two build issues for version 1.0.2 are met when built with GCC 6.

1. 'std::abs' should be used instead of 'abs', to use std::abs(double) from <cmath>

Error log:
/builddir/build/BUILD/drumstick-1.0.2/library/file/qove.cpp: In member function 'void drumstick::QOve::convertSignatures()':
/builddir/build/BUILD/drumstick-1.0.2/library/file/qove.cpp:11359:99: error: call of overloaded 'abs(double)' is ambiguous
if (k == 0 || (k > 0 && abs(measure->getTypeTempo() - d->ove.getMeasure(k - 1)->getTypeTempo()) > 0.01)) {
^
In file included from /usr/include/c++/6.0.0/cstdlib:75:0,
from /usr/include/c++/6.0.0/bits/stl_algo.h:59,
from /usr/include/c++/6.0.0/algorithm:62,
from /usr/include/qt5/QtCore/qglobal.h:85,
from /builddir/build/BUILD/drumstick-1.0.2/library/include/macros.h:23,
from /builddir/build/BUILD/drumstick-1.0.2/library/include/qove.h:23,
from /builddir/build/BUILD/drumstick-1.0.2/library/file/qove.cpp:20:
/usr/include/stdlib.h:774:12: note: candidate: int abs(int)
extern int abs (int x) THROW attribute ((const)) wur;
^~~
In file included from /usr/include/c++/6.0.0/bits/stl_algo.h:59:0,
from /usr/include/c++/6.0.0/algorithm:62,
from /usr/include/qt5/QtCore/qglobal.h:85,
from /builddir/build/BUILD/drumstick-1.0.2/library/include/macros.h:23,
from /builddir/build/BUILD/drumstick-1.0.2/library/include/qove.h:23,
from /builddir/build/BUILD/drumstick-1.0.2/library/file/qove.cpp:20:
/usr/include/c++/6.0.0/cstdlib:185:3: note: candidate:
int128 std::abs(int128)
abs(
GLIBCXX_TYPE_INT_N_0 x) { return x >= 0 ? x : -x; }
^~~
/usr/include/c++/6.0.0/cstdlib:180:3: note: candidate: long long int std::abs(long long int)
abs(long long x) { return builtin_llabs (x); }
^~~
/usr/include/c++/6.0.0/cstdlib:172:3: note: candidate: long int std::abs(long int)
abs(long
i) { return builtin_labs(i); }
^~~

2. Literal char should be used for char, instead of literal int.

Error log:
/builddir/build/BUILD/drumstick-1.0.2/utils/testevents/testevents.cpp: In member function 'void QTestEvents::run()':
/builddir/build/BUILD/drumstick-1.0.2/utils/testevents/testevents.cpp:265:79: error: narrowing conversion of '240' from 'int' to 'char' inside { } [-Wnarrowing]
char sysex[] = {0xf0, 0x41, 0x10, 0x42, 0x12, 0x40, 0, 0x7f, 0, 0x41, 0xf7};
^
/builddir/build/BUILD/drumstick-1.0.2/utils/testevents/testevents.cpp:265:79: error: narrowing conversion of '247' from 'int' to 'char' inside { } [-Wnarrowing]
utils/testevents/CMakeFiles/drumstick-testevents.dir/build.make:93: recipe for target 'utils/testevents/CMakeFiles/drumstick-testevents.dir/testevents.cpp.o' failed
make[2]: *** [utils/testevents/CMakeFiles/drumstick-testevents.dir/testevents.cpp.o] Error 1

GCC6 document: https://gcc.gnu.org/gcc-6/porting_to.html
drumstick build log: https://bugzilla.redhat.com/show_bug.cgi?id=1307433 https://bugzilla.redhat.com/attachment.cgi?id=1124369

1 Attachments

Discussion

  • Pedro Lopez-Cabanillas

    Applied to SVN, r317. Thanks!

     
  • Pedro Lopez-Cabanillas

    • status: open --> accepted
    • assigned_to: Pedro Lopez-Cabanillas
     

Log in to post a comment.