Attempt to fix the build on higher GCC versions (4.6+)
Status: Beta
Brought to you by:
ddurham
GCC 4.6+ forbids explicit template specialization to have storage class. Specializations of templates cannot explicitly specify a storage class, and have the same storage as the primary template. This is a change from previous behavior, based on the feedback and commentary as part of the ISO C++ Core Defect Report 605. (http://gcc.gnu.org/gcc-4.3/porting_to.html)
Quick sed(1) expression to fix:
sed -E 's,(template<> )(inline )?static ,\1\2,' \ src/misc/CNestedDataFile/anytype.h \ src/misc/endian_util.h \ src/backend/CGraphParamValueNode.h \ src/backend/CPluginMapping.h \ src/backend/ALFO.h \ src/backend/CSound_defs.h
Unfortunately, ReZound would then compile, but fail to link...
These issues have previously been fixed in svn trunk/
Have you tried trunk? Please close this ticket if you find the problems already fixed.
Last edit: Davy Durham 2013-12-27
Unfortunately, ReZound (version 0.13.1beta) still does not build (fails to link) with GCC 4.7:
gcc-5 works for me. Though I haven't tested building 32bit. Still a problem on HEAD of trunk?
I didnt' try the trunk, but with the latest patches 0.13.1beta builds fine with GCC 4.9 on FreeBSD (64-bit). It does not link though due to incompatible ABIs of std::string between GNU's libstd++ and FreeBSD's libc++, but that is unrelated (and expected).
There are couple of remaining issues with 32-bit builds, but I guess we can take care of them separately. Since as you've said you've committed those patches, I believe this bug can be closed now.
Thanks. Open any other issues as needed.