On 10/17/2016 9:41 AM, Bastian Germann wrote:
Am 16.10.2016 um 23:30 schrieb Marco Atzeri:
Any reason to not add FLAC (Free Lossless Audio Codec)
dependency ?


Yes, there is a reason: The symbols used from FLAC/stream_decoder.h
cannot be linked:

[ 70%] Linking CXX shared library cygalure-1.dll
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::GetLength()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:160: undefined reference
to `FLAC__stream_decoder_get_total_samples'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:160:(.text$_ZN10flacStream9GetLengthEv[_ZN10flacStream9GetLengthEv]+0x5):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_get_total_samples'
CMakeFiles/alure.dir/src/codec_flac.o: In function `flacStream::Rewind()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:148: undefined reference
to `FLAC__stream_decoder_seek_absolute'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:148:(.text$_ZN10flacStream6RewindEv[_ZN10flacStream6RewindEv]+0xf):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_seek_absolute'
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::GetData(unsigned char*, unsigned int)':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:138: undefined reference
to `FLAC__stream_decoder_process_single'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:138:(.text$_ZN10flacStream7GetDataEPhj[_ZN10flacStream7GetDataEPhj]+0x73):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_process_single'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:139: undefined reference
to `FLAC__stream_decoder_get_state'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:139:(.text$_ZN10flacStream7GetDataEPhj[_ZN10flacStream7GetDataEPhj]+0x8a):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_get_state'
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::~flacStream()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:191: undefined reference
to `FLAC__stream_decoder_finish'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:191:(.text$_ZN10flacStreamD1Ev[_ZN10flacStreamD1Ev]+0x1d):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_finish'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:192: undefined reference
to `FLAC__stream_decoder_delete'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:192:(.text$_ZN10flacStreamD1Ev[_ZN10flacStreamD1Ev]+0x26):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_delete'
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::~flacStream()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:191: undefined reference
to `FLAC__stream_decoder_finish'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:191:(.text$_ZN10flacStreamD0Ev[_ZN10flacStreamD0Ev]+0x1d):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_finish'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:192: undefined reference
to `FLAC__stream_decoder_delete'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:192:(.text$_ZN10flacStreamD0Ev[_ZN10flacStreamD0Ev]+0x26):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_delete'
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::flacStream(std::istream*)':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:169: undefined reference
to `FLAC__stream_decoder_new'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:169:(.text$_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi[_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi]+0xb0):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_new'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:172: undefined reference
to `FLAC__stream_decoder_init_stream'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:172:(.text$_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi[_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi]+0x117):
relocation truncated to fit: R_X86_64_PC32 against undefined symbol
`FLAC__stream_decoder_init_stream'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:182: undefined reference
to `FLAC__stream_decoder_delete'
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:182:(.text$_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi[_ZN11DecoderDeclI10flacStreamLi1EE7FactoryEPSi]+0x128):
additional relocation overflows omitted from the output
CMakeFiles/alure.dir/src/codec_flac.o: In function `flacStream::InitFlac()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:209: undefined reference
to `FLAC__stream_decoder_process_single'
CMakeFiles/alure.dir/src/codec_flac.o: In function
`flacStream::flacStream(std::istream*)':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:180: undefined reference
to `FLAC__stream_decoder_finish'
CMakeFiles/alure.dir/src/codec_flac.o: In function `flacStream::InitFlac()':
/usr/src/debug/alure-1.2-1/src/codec_flac.cpp:210: undefined reference
to `FLAC__stream_decoder_get_state'

That happens because DYNLOAD is not defined. If you build with DYNLOAD defined, it links fine. There is one glitch that has to be fixed when you do that. The build detects windows.h and then doesn't include dlfcn.h. [See main.h, lines 17--31.] So I edited CMakeLists.txt so as to trick the build into not defining HAVE_WINDOWS_H. I don't know enough about cmake to know the right way to handle this.

Ken

Reply via email to