diff --git a/CMakeLists.txt b/CMakeLists.txt index 82ce05c8..195891f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,16 @@ set(TAGLIB_SOVERSION_PATCH 2) include(ConfigureChecks.cmake) +option(WITH_APE "Build with APE, MPC, WavPack" ON) +option(WITH_ASF "Build with ASF" ON) +option(WITH_DSF "Build with DSF" ON) +option(WITH_MOD "Build with Tracker modules" ON) +option(WITH_MP4 "Build with MP4" ON) +option(WITH_RIFF "Build with AIFF, RIFF, WAV" ON) +option(WITH_SHORTEN "Build with Shorten" ON) +option(WITH_TRUEAUDIO "Build with TrueAudio" ON) +option(WITH_VORBIS "Build with Vorbis, FLAC, Ogg, Opus" ON) + # Determine whether zlib is installed. option(WITH_ZLIB "Build with ZLIB" ON) diff --git a/bindings/c/CMakeLists.txt b/bindings/c/CMakeLists.txt index c97841c4..13438bb4 100644 --- a/bindings/c/CMakeLists.txt +++ b/bindings/c/CMakeLists.txt @@ -1,32 +1,89 @@ -include_directories( +set(tag_c_HDR_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/asf +) +if(WITH_ASF) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/asf + ) +endif() +set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mp4 +) +if(WITH_VORBIS) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/vorbis + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/flac + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/flac + ) +endif() +if(WITH_APE) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpc + ) +endif() +if(WITH_MP4) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mp4 + ) +endif() +set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2 ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mpeg/id3v2/frames - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/it - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mod - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/xm - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/opus - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/dsf - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/dsdiff - ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/shorten ) +if(WITH_APE) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/wavpack + ) +endif() +if(WITH_VORBIS) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/speex + ) +endif() +if(WITH_TRUEAUDIO) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/trueaudio + ) +endif() +if(WITH_RIFF) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff/aiff + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/riff/wav + ) +endif() +if(WITH_APE) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ape + ) +endif() +if(WITH_MOD) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/it + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/mod + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/s3m + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/xm + ) +endif() +if(WITH_VORBIS) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/ogg/opus + ) +endif() +if(WITH_DSF) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/dsf + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/dsdiff + ) +endif() +if(WITH_SHORTEN) + set(tag_c_HDR_DIRS ${tag_c_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../../taglib/shorten + ) +endif() +include_directories(${tag_c_HDR_DIRS}) set(tag_c_HDRS tag_c.h) diff --git a/bindings/c/tag_c.cpp b/bindings/c/tag_c.cpp index 10b749a4..655ce70a 100644 --- a/bindings/c/tag_c.cpp +++ b/bindings/c/tag_c.cpp @@ -35,27 +35,53 @@ #include "tfile.h" #include "tpropertymap.h" #include "fileref.h" +#ifdef WITH_ASF #include "asffile.h" +#endif +#ifdef WITH_VORBIS #include "vorbisfile.h" +#endif #include "mpegfile.h" +#ifdef WITH_VORBIS #include "flacfile.h" #include "oggflacfile.h" +#endif +#ifdef WITH_APE #include "mpcfile.h" #include "wavpackfile.h" +#endif +#ifdef WITH_VORBIS #include "speexfile.h" +#endif +#ifdef WITH_TRUEAUDIO #include "trueaudiofile.h" +#endif +#ifdef WITH_MP4 #include "mp4file.h" +#endif +#ifdef WITH_RIFF #include "aifffile.h" #include "wavfile.h" +#endif +#ifdef WITH_APE #include "apefile.h" +#endif +#ifdef WITH_MOD #include "itfile.h" #include "modfile.h" #include "s3mfile.h" #include "xmfile.h" +#endif +#ifdef WITH_VORBIS #include "opusfile.h" +#endif +#ifdef WITH_DSF #include "dsffile.h" #include "dsdifffile.h" +#endif +#ifdef WITH_SHORTEN #include "shortenfile.h" +#endif #include "tag.h" #include "id3v2framefactory.h" @@ -134,42 +160,63 @@ TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type) case TagLib_File_MPEG: file = new MPEG::File(filename); break; +#ifdef WITH_VORBIS case TagLib_File_OggVorbis: file = new Ogg::Vorbis::File(filename); break; case TagLib_File_FLAC: file = new FLAC::File(filename); break; +#endif +#ifdef WITH_APE case TagLib_File_MPC: file = new MPC::File(filename); break; +#endif +#ifdef WITH_VORBIS case TagLib_File_OggFlac: file = new Ogg::FLAC::File(filename); break; +#endif +#ifdef WITH_APE case TagLib_File_WavPack: file = new WavPack::File(filename); break; +#endif +#ifdef WITH_VORBIS case TagLib_File_Speex: file = new Ogg::Speex::File(filename); break; +#endif +#ifdef WITH_TRUEAUDIO case TagLib_File_TrueAudio: file = new TrueAudio::File(filename); break; +#endif +#ifdef WITH_MP4 case TagLib_File_MP4: file = new MP4::File(filename); break; +#endif +#ifdef WITH_ASF case TagLib_File_ASF: file = new ASF::File(filename); break; +#endif +#ifdef WITH_RIFF case TagLib_File_AIFF: file = new RIFF::AIFF::File(filename); break; case TagLib_File_WAV: file = new RIFF::WAV::File(filename); break; +#endif +#ifdef WITH_APE case TagLib_File_APE: file = new APE::File(filename); break; +#endif +#ifdef WITH_MOD case TagLib_File_IT: file = new IT::File(filename); break; @@ -182,18 +229,25 @@ TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type) case TagLib_File_XM: file = new XM::File(filename); break; +#endif +#ifdef WITH_VORBIS case TagLib_File_Opus: file = new Ogg::Opus::File(filename); break; +#endif +#ifdef WITH_DSF case TagLib_File_DSF: file = new DSF::File(filename); break; case TagLib_File_DSDIFF: file = new DSDIFF::File(filename); break; +#endif +#ifdef WITH_SHORTEN case TagLib_File_SHORTEN: file = new Shorten::File(filename); break; +#endif default: break; } diff --git a/config.h.cmake b/config.h.cmake index 67334d79..ebfc7084 100644 --- a/config.h.cmake +++ b/config.h.cmake @@ -21,4 +21,14 @@ #cmakedefine TESTS_DIR "@TESTS_DIR@" +#cmakedefine WITH_APE 1 +#cmakedefine WITH_ASF 1 +#cmakedefine WITH_DSF 1 +#cmakedefine WITH_MOD 1 +#cmakedefine WITH_MP4 1 +#cmakedefine WITH_RIFF 1 +#cmakedefine WITH_SHORTEN 1 +#cmakedefine WITH_TRUEAUDIO 1 +#cmakedefine WITH_VORBIS 1 + #endif diff --git a/examples/framelist.cpp b/examples/framelist.cpp index 8f94e059..6abffd97 100644 --- a/examples/framelist.cpp +++ b/examples/framelist.cpp @@ -22,6 +22,10 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include @@ -32,7 +36,9 @@ #include "id3v2header.h" #include "commentsframe.h" #include "id3v1tag.h" +#ifdef WITH_APE #include "apetag.h" +#endif using namespace TagLib; @@ -90,6 +96,7 @@ int main(int argc, char *argv[]) else std::cout << "file does not have a valid id3v1 tag" << std::endl; +#ifdef WITH_APE APE::Tag *ape = f.APETag(); std::cout << std::endl << "APE" << std::endl; @@ -106,6 +113,7 @@ int main(int argc, char *argv[]) } else std::cout << "file does not have a valid APE tag" << std::endl; +#endif std::cout << std::endl; } diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt index aa6cf327..f7dda892 100644 --- a/taglib/CMakeLists.txt +++ b/taglib/CMakeLists.txt @@ -1,33 +1,82 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) -include_directories( +set(tag_HDR_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/toolkit - ${CMAKE_CURRENT_SOURCE_DIR}/asf +) +if(WITH_ASF) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/asf + ) +endif() +set(tag_HDR_DIRS ${tag_HDR_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/flac - ${CMAKE_CURRENT_SOURCE_DIR}/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/ogg/opus +) +if(WITH_VORBIS) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/ogg + ${CMAKE_CURRENT_SOURCE_DIR}/ogg/flac + ${CMAKE_CURRENT_SOURCE_DIR}/flac + ) +endif() +if(WITH_APE) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/mpc + ) +endif() +if(WITH_MP4) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/mp4 + ) +endif() +if(WITH_VORBIS) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/ogg/vorbis + ${CMAKE_CURRENT_SOURCE_DIR}/ogg/speex + ${CMAKE_CURRENT_SOURCE_DIR}/ogg/opus + ) +endif() +set(tag_HDR_DIRS ${tag_HDR_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2 ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v2/frames ${CMAKE_CURRENT_SOURCE_DIR}/mpeg/id3v1 - ${CMAKE_CURRENT_SOURCE_DIR}/ape - ${CMAKE_CURRENT_SOURCE_DIR}/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/riff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/mod - ${CMAKE_CURRENT_SOURCE_DIR}/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/it - ${CMAKE_CURRENT_SOURCE_DIR}/xm - ${CMAKE_CURRENT_SOURCE_DIR}/dsf - ${CMAKE_CURRENT_SOURCE_DIR}/dsdiff - ${CMAKE_CURRENT_SOURCE_DIR}/shorten ) +if(WITH_APE) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/ape + ${CMAKE_CURRENT_SOURCE_DIR}/wavpack + ) +endif() +if(WITH_TRUEAUDIO) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/trueaudio + ) +endif() +if(WITH_RIFF) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/riff + ${CMAKE_CURRENT_SOURCE_DIR}/riff/aiff + ${CMAKE_CURRENT_SOURCE_DIR}/riff/wav + ) +endif() +if(WITH_MOD) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/mod + ${CMAKE_CURRENT_SOURCE_DIR}/s3m + ${CMAKE_CURRENT_SOURCE_DIR}/it + ${CMAKE_CURRENT_SOURCE_DIR}/xm + ) +endif() +if(WITH_DSF) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/dsf + ${CMAKE_CURRENT_SOURCE_DIR}/dsdiff + ) +endif() +if(WITH_SHORTEN) + set(tag_HDR_DIRS ${tag_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/shorten + ) +endif() +include_directories(${tag_HDR_DIRS}) set(tag_HDRS tag.h @@ -56,6 +105,8 @@ set(tag_HDRS mpeg/mpegproperties.h mpeg/mpegheader.h mpeg/xingheader.h +) +set(tag_HDRS ${tag_HDRS} mpeg/id3v1/id3v1tag.h mpeg/id3v1/id3v1genres.h mpeg/id3v2/id3v2.h @@ -83,69 +134,105 @@ set(tag_HDRS mpeg/id3v2/frames/chapterframe.h mpeg/id3v2/frames/tableofcontentsframe.h mpeg/id3v2/frames/podcastframe.h - ogg/oggfile.h - ogg/oggpage.h - ogg/oggpageheader.h - ogg/xiphcomment.h - ogg/vorbis/vorbisfile.h - ogg/vorbis/vorbisproperties.h - ogg/flac/oggflacfile.h - ogg/speex/speexfile.h - ogg/speex/speexproperties.h - ogg/opus/opusfile.h - ogg/opus/opusproperties.h - flac/flacfile.h - flac/flacpicture.h - flac/flacproperties.h - flac/flacmetadatablock.h - ape/apefile.h - ape/apeproperties.h - ape/apetag.h - ape/apefooter.h - ape/apeitem.h - mpc/mpcfile.h - mpc/mpcproperties.h - wavpack/wavpackfile.h - wavpack/wavpackproperties.h - trueaudio/trueaudiofile.h - trueaudio/trueaudioproperties.h - riff/rifffile.h - riff/aiff/aifffile.h - riff/aiff/aiffproperties.h - riff/wav/wavfile.h - riff/wav/wavproperties.h - riff/wav/infotag.h - asf/asffile.h - asf/asfproperties.h - asf/asftag.h - asf/asfattribute.h - asf/asfpicture.h - mp4/mp4file.h - mp4/mp4atom.h - mp4/mp4tag.h - mp4/mp4item.h - mp4/mp4properties.h - mp4/mp4coverart.h - mp4/mp4itemfactory.h - mod/modfilebase.h - mod/modfile.h - mod/modtag.h - mod/modproperties.h - it/itfile.h - it/itproperties.h - s3m/s3mfile.h - s3m/s3mproperties.h - xm/xmfile.h - xm/xmproperties.h - dsf/dsffile.h - dsf/dsfproperties.h - dsdiff/dsdifffile.h - dsdiff/dsdiffproperties.h - dsdiff/dsdiffdiintag.h - shorten/shortenfile.h - shorten/shortenproperties.h - shorten/shortentag.h ) +if(WITH_VORBIS) + set(tag_HDRS ${tag_HDRS} + ogg/oggfile.h + ogg/oggpage.h + ogg/oggpageheader.h + ogg/xiphcomment.h + ogg/vorbis/vorbisfile.h + ogg/vorbis/vorbisproperties.h + ogg/flac/oggflacfile.h + ogg/speex/speexfile.h + ogg/speex/speexproperties.h + ogg/opus/opusfile.h + ogg/opus/opusproperties.h + flac/flacfile.h + flac/flacpicture.h + flac/flacproperties.h + flac/flacmetadatablock.h + ) +endif() +if(WITH_APE) + set(tag_HDRS ${tag_HDRS} + ape/apefile.h + ape/apeproperties.h + ape/apetag.h + ape/apefooter.h + ape/apeitem.h + mpc/mpcfile.h + mpc/mpcproperties.h + wavpack/wavpackfile.h + wavpack/wavpackproperties.h + ) +endif() +if(WITH_TRUEAUDIO) + set(tag_HDRS ${tag_HDRS} + trueaudio/trueaudiofile.h + trueaudio/trueaudioproperties.h + ) +endif() +if(WITH_RIFF) + set(tag_HDRS ${tag_HDRS} + riff/rifffile.h + riff/aiff/aifffile.h + riff/aiff/aiffproperties.h + riff/wav/wavfile.h + riff/wav/wavproperties.h + riff/wav/infotag.h + ) +endif() +if(WITH_ASF) + set(tag_HDRS ${tag_HDRS} + asf/asffile.h + asf/asfproperties.h + asf/asftag.h + asf/asfattribute.h + asf/asfpicture.h + ) +endif() +if(WITH_MP4) + set(tag_HDRS ${tag_HDRS} + mp4/mp4file.h + mp4/mp4atom.h + mp4/mp4tag.h + mp4/mp4item.h + mp4/mp4properties.h + mp4/mp4coverart.h + mp4/mp4itemfactory.h + ) +endif() +if(WITH_MOD) + set(tag_HDRS ${tag_HDRS} + mod/modfilebase.h + mod/modfile.h + mod/modtag.h + mod/modproperties.h + it/itfile.h + it/itproperties.h + s3m/s3mfile.h + s3m/s3mproperties.h + xm/xmfile.h + xm/xmproperties.h + ) +endif() +if(WITH_DSF) + set(tag_HDRS ${tag_HDRS} + dsf/dsffile.h + dsf/dsfproperties.h + dsdiff/dsdifffile.h + dsdiff/dsdiffproperties.h + dsdiff/dsdiffdiintag.h + ) +endif() +if(WITH_SHORTEN) + set(tag_HDRS ${tag_HDRS} + shorten/shortenfile.h + shorten/shortenproperties.h + shorten/shortentag.h + ) +endif() set(mpeg_SRCS mpeg/mpegfile.cpp @@ -189,134 +276,156 @@ set(frames_SRCS mpeg/id3v2/frames/podcastframe.cpp ) -set(ogg_SRCS - ogg/oggfile.cpp - ogg/oggpage.cpp - ogg/oggpageheader.cpp - ogg/xiphcomment.cpp -) +if(WITH_VORBIS) + set(ogg_SRCS + ogg/oggfile.cpp + ogg/oggpage.cpp + ogg/oggpageheader.cpp + ogg/xiphcomment.cpp + ) -set(vorbis_SRCS - ogg/vorbis/vorbisfile.cpp - ogg/vorbis/vorbisproperties.cpp -) + set(vorbis_SRCS + ogg/vorbis/vorbisfile.cpp + ogg/vorbis/vorbisproperties.cpp + ) -set(flacs_SRCS - flac/flacfile.cpp - flac/flacpicture.cpp - flac/flacproperties.cpp - flac/flacmetadatablock.cpp - flac/flacunknownmetadatablock.cpp -) + set(flacs_SRCS + flac/flacfile.cpp + flac/flacpicture.cpp + flac/flacproperties.cpp + flac/flacmetadatablock.cpp + flac/flacunknownmetadatablock.cpp + ) -set(oggflacs_SRCS - ogg/flac/oggflacfile.cpp -) + set(oggflacs_SRCS + ogg/flac/oggflacfile.cpp + ) +endif() -set(mpc_SRCS - mpc/mpcfile.cpp - mpc/mpcproperties.cpp -) +if(WITH_APE) + set(mpc_SRCS + mpc/mpcfile.cpp + mpc/mpcproperties.cpp + ) +endif() -set(mp4_SRCS - mp4/mp4file.cpp - mp4/mp4atom.cpp - mp4/mp4tag.cpp - mp4/mp4item.cpp - mp4/mp4properties.cpp - mp4/mp4coverart.cpp - mp4/mp4itemfactory.cpp -) +if(WITH_MP4) + set(mp4_SRCS + mp4/mp4file.cpp + mp4/mp4atom.cpp + mp4/mp4tag.cpp + mp4/mp4item.cpp + mp4/mp4properties.cpp + mp4/mp4coverart.cpp + mp4/mp4itemfactory.cpp + ) +endif() -set(ape_SRCS - ape/apetag.cpp - ape/apefooter.cpp - ape/apeitem.cpp - ape/apefile.cpp - ape/apeproperties.cpp -) +if(WITH_APE) + set(ape_SRCS + ape/apetag.cpp + ape/apefooter.cpp + ape/apeitem.cpp + ape/apefile.cpp + ape/apeproperties.cpp + ) -set(wavpack_SRCS - wavpack/wavpackfile.cpp - wavpack/wavpackproperties.cpp -) + set(wavpack_SRCS + wavpack/wavpackfile.cpp + wavpack/wavpackproperties.cpp + ) +endif() -set(speex_SRCS - ogg/speex/speexfile.cpp - ogg/speex/speexproperties.cpp -) +if(WITH_VORBIS) + set(speex_SRCS + ogg/speex/speexfile.cpp + ogg/speex/speexproperties.cpp + ) -set(opus_SRCS - ogg/opus/opusfile.cpp - ogg/opus/opusproperties.cpp -) + set(opus_SRCS + ogg/opus/opusfile.cpp + ogg/opus/opusproperties.cpp + ) +endif() -set(trueaudio_SRCS - trueaudio/trueaudiofile.cpp - trueaudio/trueaudioproperties.cpp -) +if(WITH_TRUEAUDIO) + set(trueaudio_SRCS + trueaudio/trueaudiofile.cpp + trueaudio/trueaudioproperties.cpp + ) +endif() -set(asf_SRCS - asf/asftag.cpp - asf/asffile.cpp - asf/asfproperties.cpp - asf/asfattribute.cpp - asf/asfpicture.cpp -) +if(WITH_ASF) + set(asf_SRCS + asf/asftag.cpp + asf/asffile.cpp + asf/asfproperties.cpp + asf/asfattribute.cpp + asf/asfpicture.cpp + ) +endif() -set(riff_SRCS - riff/rifffile.cpp -) +if(WITH_RIFF) + set(riff_SRCS + riff/rifffile.cpp + ) -set(aiff_SRCS - riff/aiff/aifffile.cpp - riff/aiff/aiffproperties.cpp -) + set(aiff_SRCS + riff/aiff/aifffile.cpp + riff/aiff/aiffproperties.cpp + ) -set(wav_SRCS - riff/wav/wavfile.cpp - riff/wav/wavproperties.cpp - riff/wav/infotag.cpp -) + set(wav_SRCS + riff/wav/wavfile.cpp + riff/wav/wavproperties.cpp + riff/wav/infotag.cpp + ) +endif() -set(mod_SRCS - mod/modfilebase.cpp - mod/modfile.cpp - mod/modtag.cpp - mod/modproperties.cpp -) +if(WITH_MOD) + set(mod_SRCS + mod/modfilebase.cpp + mod/modfile.cpp + mod/modtag.cpp + mod/modproperties.cpp + ) -set(s3m_SRCS - s3m/s3mfile.cpp - s3m/s3mproperties.cpp -) + set(s3m_SRCS + s3m/s3mfile.cpp + s3m/s3mproperties.cpp + ) -set(it_SRCS - it/itfile.cpp - it/itproperties.cpp -) + set(it_SRCS + it/itfile.cpp + it/itproperties.cpp + ) -set(xm_SRCS - xm/xmfile.cpp - xm/xmproperties.cpp -) + set(xm_SRCS + xm/xmfile.cpp + xm/xmproperties.cpp + ) +endif() -set(dsf_SRCS - dsf/dsffile.cpp - dsf/dsfproperties.cpp -) +if(WITH_DSF) + set(dsf_SRCS + dsf/dsffile.cpp + dsf/dsfproperties.cpp + ) -set(dsdiff_SRCS - dsdiff/dsdifffile.cpp - dsdiff/dsdiffproperties.cpp - dsdiff/dsdiffdiintag.cpp -) + set(dsdiff_SRCS + dsdiff/dsdifffile.cpp + dsdiff/dsdiffproperties.cpp + dsdiff/dsdiffdiintag.cpp + ) +endif() -set(shorten_SRCS - shorten/shortenfile.cpp - shorten/shortenproperties.cpp - shorten/shortentag.cpp -) +if(WITH_SHORTEN) + set(shorten_SRCS + shorten/shortenfile.cpp + shorten/shortenproperties.cpp + shorten/shortentag.cpp + ) +endif() set(toolkit_SRCS toolkit/tstring.cpp diff --git a/taglib/dsdiff/dsdifffile.h b/taglib/dsdiff/dsdifffile.h index 86df7c16..4fcc9730 100644 --- a/taglib/dsdiff/dsdifffile.h +++ b/taglib/dsdiff/dsdifffile.h @@ -26,7 +26,7 @@ #ifndef TAGLIB_DSDIFFFILE_H #define TAGLIB_DSDIFFFILE_H -#include "rifffile.h" +#include "tfile.h" #include "id3v2tag.h" #include "dsdiffproperties.h" #include "dsdiffdiintag.h" diff --git a/taglib/fileref.cpp b/taglib/fileref.cpp index 95cc1a3e..3c5f7906 100644 --- a/taglib/fileref.cpp +++ b/taglib/fileref.cpp @@ -29,6 +29,10 @@ #include "fileref.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include @@ -37,27 +41,61 @@ #include "tstringlist.h" #include "tvariant.h" #include "tdebug.h" +#ifdef WITH_RIFF #include "aifffile.h" +#endif +#ifdef WITH_APE #include "apefile.h" +#endif +#ifdef WITH_ASF #include "asffile.h" +#endif +#ifdef WITH_VORBIS #include "flacfile.h" +#endif +#ifdef WITH_MOD #include "itfile.h" #include "modfile.h" +#endif +#ifdef WITH_MP4 #include "mp4file.h" +#endif +#ifdef WITH_APE #include "mpcfile.h" +#endif #include "mpegfile.h" +#ifdef WITH_VORBIS #include "oggflacfile.h" #include "opusfile.h" +#endif +#ifdef WITH_MOD #include "s3mfile.h" +#endif +#ifdef WITH_VORBIS #include "speexfile.h" +#endif +#ifdef WITH_TRUEAUDIO #include "trueaudiofile.h" +#endif +#ifdef WITH_VORBIS #include "vorbisfile.h" +#endif +#ifdef WITH_RIFF #include "wavfile.h" +#endif +#ifdef WITH_APE #include "wavpackfile.h" +#endif +#ifdef WITH_MOD #include "xmfile.h" +#endif +#ifdef WITH_DSF #include "dsffile.h" #include "dsdifffile.h" +#endif +#ifdef WITH_SHORTEN #include "shortenfile.h" +#endif using namespace TagLib; @@ -136,6 +174,7 @@ namespace if(ext == "MP3" || ext == "MP2" || ext == "AAC") file = new MPEG::File(stream, readAudioProperties, audioPropertiesStyle); +#ifdef WITH_VORBIS else if(ext == "OGG") file = new Ogg::Vorbis::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "OGA") { @@ -148,26 +187,42 @@ namespace } else if(ext == "FLAC") file = new FLAC::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_APE else if(ext == "MPC") file = new MPC::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "WV") file = new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_VORBIS else if(ext == "SPX") file = new Ogg::Speex::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "OPUS") file = new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_TRUEAUDIO else if(ext == "TTA") file = new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_MP4 else if(ext == "M4A" || ext == "M4R" || ext == "M4B" || ext == "M4P" || ext == "MP4" || ext == "3G2" || ext == "M4V") file = new MP4::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_ASF else if(ext == "WMA" || ext == "ASF") file = new ASF::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_RIFF else if(ext == "AIF" || ext == "AIFF" || ext == "AFC" || ext == "AIFC") file = new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "WAV") file = new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_APE else if(ext == "APE") file = new APE::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_MOD // module, nst and wow are possible but uncommon extensions else if(ext == "MOD" || ext == "MODULE" || ext == "NST" || ext == "WOW") file = new Mod::File(stream, readAudioProperties, audioPropertiesStyle); @@ -177,12 +232,17 @@ namespace file = new IT::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "XM") file = new XM::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_DSF else if(ext == "DSF") file = new DSF::File(stream, readAudioProperties, audioPropertiesStyle); else if(ext == "DFF" || ext == "DSDIFF") file = new DSDIFF::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_SHORTEN else if(ext == "SHN") file = new Shorten::File(stream, readAudioProperties, audioPropertiesStyle); +#endif // if file is not valid, leave it to content-based detection. @@ -204,38 +264,58 @@ namespace if(MPEG::File::isSupported(stream)) file = new MPEG::File(stream, readAudioProperties, audioPropertiesStyle); +#ifdef WITH_VORBIS else if(Ogg::Vorbis::File::isSupported(stream)) file = new Ogg::Vorbis::File(stream, readAudioProperties, audioPropertiesStyle); else if(Ogg::FLAC::File::isSupported(stream)) file = new Ogg::FLAC::File(stream, readAudioProperties, audioPropertiesStyle); else if(FLAC::File::isSupported(stream)) file = new FLAC::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_APE else if(MPC::File::isSupported(stream)) file = new MPC::File(stream, readAudioProperties, audioPropertiesStyle); else if(WavPack::File::isSupported(stream)) file = new WavPack::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_VORBIS else if(Ogg::Speex::File::isSupported(stream)) file = new Ogg::Speex::File(stream, readAudioProperties, audioPropertiesStyle); else if(Ogg::Opus::File::isSupported(stream)) file = new Ogg::Opus::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_TRUEAUDIO else if(TrueAudio::File::isSupported(stream)) file = new TrueAudio::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_MP4 else if(MP4::File::isSupported(stream)) file = new MP4::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_ASF else if(ASF::File::isSupported(stream)) file = new ASF::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_RIFF else if(RIFF::AIFF::File::isSupported(stream)) file = new RIFF::AIFF::File(stream, readAudioProperties, audioPropertiesStyle); else if(RIFF::WAV::File::isSupported(stream)) file = new RIFF::WAV::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_APE else if(APE::File::isSupported(stream)) file = new APE::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_DSF else if(DSF::File::isSupported(stream)) file = new DSF::File(stream, readAudioProperties, audioPropertiesStyle); else if(DSDIFF::File::isSupported(stream)) file = new DSDIFF::File(stream, readAudioProperties, audioPropertiesStyle); +#endif +#ifdef WITH_SHORTEN else if(Shorten::File::isSupported(stream)) file = new Shorten::File(stream, readAudioProperties, audioPropertiesStyle); +#endif // isSupported() only does a quick check, so double check the file here. @@ -405,17 +485,26 @@ StringList FileRef::defaultFileExtensions() { StringList l; +#ifdef WITH_VORBIS l.append("ogg"); l.append("flac"); l.append("oga"); l.append("opus"); +#endif l.append("mp3"); l.append("mp2"); +#ifdef WITH_APE l.append("mpc"); l.append("wv"); +#endif +#ifdef WITH_VORBIS l.append("spx"); +#endif +#ifdef WITH_TRUEAUDIO l.append("tta"); +#endif l.append("aac"); +#ifdef WITH_MP4 l.append("m4a"); l.append("m4r"); l.append("m4b"); @@ -423,14 +512,22 @@ StringList FileRef::defaultFileExtensions() l.append("3g2"); l.append("mp4"); l.append("m4v"); +#endif +#ifdef WITH_ASF l.append("wma"); l.append("asf"); +#endif +#ifdef WITH_RIFF l.append("aif"); l.append("aiff"); l.append("afc"); l.append("aifc"); l.append("wav"); +#endif +#ifdef WITH_APE l.append("ape"); +#endif +#ifdef WITH_MOD l.append("mod"); l.append("module"); // alias for "mod" l.append("nst"); // alias for "mod" @@ -438,10 +535,15 @@ StringList FileRef::defaultFileExtensions() l.append("s3m"); l.append("it"); l.append("xm"); +#endif +#ifdef WITH_DSF l.append("dsf"); l.append("dff"); l.append("dsdiff"); // alias for "dff" +#endif +#ifdef WITH_SHORTEN l.append("shn"); +#endif return l; } diff --git a/taglib/mpeg/mpegfile.cpp b/taglib/mpeg/mpegfile.cpp index d0a816af..c7567ed3 100644 --- a/taglib/mpeg/mpegfile.cpp +++ b/taglib/mpeg/mpegfile.cpp @@ -28,8 +28,10 @@ #include "id3v2framefactory.h" #include "tdebug.h" #include "tpropertymap.h" +#ifdef WITH_APE #include "apefooter.h" #include "apetag.h" +#endif #include "id3v1tag.h" #include "id3v2tag.h" #include "tagunion.h" @@ -277,6 +279,7 @@ bool MPEG::File::save(int tags, StripTags strip, ID3v2::Version version, Duplica } } +#ifdef WITH_APE if(APE & tags) { if(APETag() && !APETag()->isEmpty()) { @@ -305,6 +308,7 @@ bool MPEG::File::save(int tags, StripTags strip, ID3v2::Version version, Duplica File::strip(APE, false); } } +#endif return true; } @@ -319,10 +323,12 @@ ID3v1::Tag *MPEG::File::ID3v1Tag(bool create) return d->tag.access(ID3v1Index, create); } +#ifdef WITH_APE APE::Tag *MPEG::File::APETag(bool create) { return d->tag.access(APEIndex, create); } +#endif bool MPEG::File::strip(int tags, bool freeMemory) { @@ -480,6 +486,7 @@ void MPEG::File::read(bool readProperties, Properties::ReadStyle readStyle) if(d->ID3v1Location >= 0) d->tag.set(ID3v1Index, new ID3v1::Tag(this, d->ID3v1Location)); +#ifdef WITH_APE // Look for an APE tag d->APELocation = Utils::findAPE(this, d->ID3v1Location); @@ -489,6 +496,7 @@ void MPEG::File::read(bool readProperties, Properties::ReadStyle readStyle) d->APEOriginalSize = APETag()->footer()->completeTagSize(); d->APELocation = d->APELocation + APE::Footer::size() - d->APEOriginalSize; } +#endif if(readProperties) d->properties = std::make_unique(this, readStyle); diff --git a/taglib/mpeg/mpegfile.h b/taglib/mpeg/mpegfile.h index bff35b4d..c3547cee 100644 --- a/taglib/mpeg/mpegfile.h +++ b/taglib/mpeg/mpegfile.h @@ -26,6 +26,10 @@ #ifndef TAGLIB_MPEGFILE_H #define TAGLIB_MPEGFILE_H +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "tfile.h" #include "taglib_export.h" #include "tag.h" @@ -266,6 +270,7 @@ namespace TagLib { */ ID3v1::Tag *ID3v1Tag(bool create = false); +#ifdef WITH_APE /*! * Returns a pointer to the APE tag of the file. * @@ -284,6 +289,7 @@ namespace TagLib { * \see hasAPETag() */ APE::Tag *APETag(bool create = false); +#endif /*! * This will strip the tags that match the OR-ed together TagTypes from the diff --git a/taglib/mpeg/mpegproperties.cpp b/taglib/mpeg/mpegproperties.cpp index dfbddc26..fad26f55 100644 --- a/taglib/mpeg/mpegproperties.cpp +++ b/taglib/mpeg/mpegproperties.cpp @@ -25,10 +25,16 @@ #include "mpegproperties.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "tdebug.h" #include "mpegfile.h" #include "xingheader.h" +#ifdef WITH_APE #include "apetag.h" +#endif using namespace TagLib; diff --git a/taglib/tagutils.cpp b/taglib/tagutils.cpp index c11c8b69..785ad360 100644 --- a/taglib/tagutils.cpp +++ b/taglib/tagutils.cpp @@ -25,11 +25,17 @@ #include "tagutils.h" +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "tfile.h" #include "id3v1tag.h" #include "id3v2header.h" +#ifdef WITH_APE #include "apetag.h" +#endif using namespace TagLib; @@ -45,7 +51,13 @@ offset_t Utils::findID3v1(File *file) const offset_t p = file->tell() + 3; if(const TagLib::ByteVector data = file->readBlock(8); - data.containsAt(ID3v1::Tag::fileIdentifier(), 3) && data != APE::Tag::fileIdentifier()) + data.containsAt(ID3v1::Tag::fileIdentifier(), 3) && +#ifdef WITH_APE + data != APE::Tag::fileIdentifier() +#else + data != ByteVector::fromCString("APETAGEX") +#endif + ) return p; } else { file->seek(-128, File::End); @@ -83,7 +95,13 @@ offset_t Utils::findAPE(File *file, offset_t id3v1Location) const offset_t p = file->tell(); - if(file->readBlock(8) == APE::Tag::fileIdentifier()) + if(file->readBlock(8) == +#ifdef WITH_APE + APE::Tag::fileIdentifier() +#else + ByteVector::fromCString("APETAGEX") +#endif + ) return p; return -1; diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index b36f75d8..571c6c51 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,34 +1,81 @@ -INCLUDE_DIRECTORIES( +SET(test_HDR_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../taglib ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/toolkit ${CMAKE_CURRENT_SOURCE_DIR}/../bindings/c - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/asf +) +IF(WITH_APE) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ape + ) +ENDIF() +IF(WITH_ASF) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/asf + ) +ENDIF() +SET(test_HDR_DIRS ${test_HDR_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v1 ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2 ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg/id3v2/frames ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpeg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpc - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mp4 - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/aiff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/wav - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/vorbis - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/speex - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/opus - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/flac - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/wavpack - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mod - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/s3m - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/it - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/xm - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/dsf - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/dsdiff - ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/shorten ) +IF(WITH_APE) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mpc + ) +ENDIF() +IF(WITH_MP4) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mp4 + ) +ENDIF() +IF(WITH_RIFF) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/aiff + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/riff/wav + ) +ENDIF() +IF(WITH_TRUEAUDIO) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/trueaudio + ) +ENDIF() +IF(WITH_VORBIS) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/vorbis + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/flac + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/speex + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/ogg/opus + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/flac + ) +ENDIF() +IF(WITH_APE) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/wavpack + ) +ENDIF() +IF(WITH_MOD) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/mod + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/s3m + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/it + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/xm + ) +ENDIF() +IF(WITH_DSF) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/dsf + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/dsdiff + ) +ENDIF() +IF(WITH_SHORTEN) + SET(test_HDR_DIRS ${test_HDR_DIRS} + ${CMAKE_CURRENT_SOURCE_DIR}/../taglib/shorten + ) +ENDIF() +INCLUDE_DIRECTORIES(${test_HDR_DIRS}) SET(test_runner_SRCS main.cpp @@ -36,7 +83,13 @@ SET(test_runner_SRCS test_map.cpp test_mpeg.cpp test_synchdata.cpp - test_trueaudio.cpp +) +IF(WITH_TRUEAUDIO) + SET(test_runner_SRCS ${test_runner_SRCS} + test_trueaudio.cpp + ) +ENDIF() +SET(test_runner_SRCS ${test_runner_SRCS} test_bytevector.cpp test_bytevectorlist.cpp test_bytevectorstream.cpp @@ -46,36 +99,92 @@ SET(test_runner_SRCS test_complexproperties.cpp test_file.cpp test_fileref.cpp +) +SET(test_runner_SRCS ${test_runner_SRCS} test_id3v1.cpp test_id3v2.cpp test_id3v2framefactory.cpp - test_xiphcomment.cpp - test_aiff.cpp - test_riff.cpp - test_ogg.cpp - test_oggflac.cpp - test_flac.cpp - test_flacpicture.cpp - test_flacunknownmetadatablock.cpp - test_ape.cpp - test_apetag.cpp - test_wav.cpp - test_info.cpp - test_wavpack.cpp - test_mp4.cpp - test_mp4item.cpp - test_mp4coverart.cpp - test_asf.cpp - test_mod.cpp - test_s3m.cpp - test_it.cpp - test_xm.cpp - test_mpc.cpp - test_opus.cpp - test_speex.cpp - test_dsf.cpp - test_dsdiff.cpp - test_shorten.cpp +) +IF(WITH_VORBIS) + SET(test_runner_SRCS ${test_runner_SRCS} + test_xiphcomment.cpp + ) +ENDIF() +IF(WITH_RIFF) + SET(test_runner_SRCS ${test_runner_SRCS} + test_aiff.cpp + test_riff.cpp + ) +ENDIF() +IF(WITH_VORBIS) + SET(test_runner_SRCS ${test_runner_SRCS} + test_ogg.cpp + test_oggflac.cpp + test_flac.cpp + test_flacpicture.cpp + test_flacunknownmetadatablock.cpp + ) +ENDIF() +if(WITH_APE) + SET(test_runner_SRCS ${test_runner_SRCS} + test_ape.cpp + test_apetag.cpp + ) +ENDIF() +IF(WITH_RIFF) + SET(test_runner_SRCS ${test_runner_SRCS} + test_wav.cpp + test_info.cpp + ) +ENDIF() +IF(WITH_APE) + SET(test_runner_SRCS ${test_runner_SRCS} + test_wavpack.cpp + ) +ENDIF() +IF(WITH_MP4) + SET(test_runner_SRCS ${test_runner_SRCS} + test_mp4.cpp + test_mp4item.cpp + test_mp4coverart.cpp + ) +ENDIF() +IF(WITH_ASF) + SET(test_runner_SRCS ${test_runner_SRCS} + test_asf.cpp + ) +ENDIF() + IF(WITH_MOD) + SET(test_runner_SRCS ${test_runner_SRCS} + test_mod.cpp + test_s3m.cpp + test_it.cpp + test_xm.cpp + ) +ENDIF() +IF(WITH_APE) + SET(test_runner_SRCS ${test_runner_SRCS} + test_mpc.cpp + ) +ENDIF() +IF(WITH_VORBIS) + SET(test_runner_SRCS ${test_runner_SRCS} + test_opus.cpp + test_speex.cpp + ) +ENDIF() +IF(WITH_DSF) + SET(test_runner_SRCS ${test_runner_SRCS} + test_dsf.cpp + test_dsdiff.cpp + ) +ENDIF() +IF(WITH_SHORTEN) + SET(test_runner_SRCS ${test_runner_SRCS} + test_shorten.cpp + ) +ENDIF() +SET(test_runner_SRCS ${test_runner_SRCS} test_sizes.cpp test_versionnumber.cpp ) diff --git a/tests/test_complexproperties.cpp b/tests/test_complexproperties.cpp index 24354e5a..b278da6e 100644 --- a/tests/test_complexproperties.cpp +++ b/tests/test_complexproperties.cpp @@ -23,17 +23,33 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef WITH_ASF #include "asfpicture.h" +#endif +#ifdef WITH_VORBIS #include "flacpicture.h" #include "flacfile.h" +#endif #include "tbytevector.h" #include "tvariant.h" #include "tzlib.h" #include "fileref.h" +#ifdef WITH_APE #include "apetag.h" +#endif +#ifdef WITH_ASF #include "asftag.h" +#endif +#ifdef WITH_MP4 #include "mp4tag.h" +#endif +#ifdef WITH_VORBIS #include "xiphcomment.h" +#endif #include "id3v1tag.h" #include "id3v2tag.h" #include "attachedpictureframe.h" @@ -69,16 +85,28 @@ class TestComplexProperties : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestComplexProperties); CPPUNIT_TEST(testReadMp3Picture); +#ifdef WITH_MP4 CPPUNIT_TEST(testReadM4aPicture); +#endif +#ifdef WITH_VORBIS CPPUNIT_TEST(testReadOggPicture); CPPUNIT_TEST(testReadWriteFlacPicture); CPPUNIT_TEST(testReadWriteMultipleProperties); +#endif CPPUNIT_TEST(testSetGetId3Geob); CPPUNIT_TEST(testSetGetId3Picture); +#ifdef WITH_APE CPPUNIT_TEST(testSetGetApePicture); +#endif +#ifdef WITH_ASF CPPUNIT_TEST(testSetGetAsfPicture); +#endif +#ifdef WITH_MP4 CPPUNIT_TEST(testSetGetMp4Picture); +#endif +#ifdef WITH_VORBIS CPPUNIT_TEST(testSetGetXiphPicture); +#endif CPPUNIT_TEST(testNonExistent); CPPUNIT_TEST_SUITE_END(); @@ -103,6 +131,7 @@ public: } } +#ifdef WITH_MP4 void testReadM4aPicture() { const ByteVector expectedData1( @@ -145,7 +174,9 @@ public: CPPUNIT_ASSERT_EQUAL(String("image/jpeg"), picture.value("mimeType").value()); } +#endif +#ifdef WITH_VORBIS void testReadOggPicture() { FileRef f(TEST_FILE_PATH_C("lowercase-fields.ogg"), false); @@ -217,6 +248,7 @@ public: CPPUNIT_ASSERT(f.pictureList().isEmpty()); } } +#endif void testReadWriteMultipleProperties() { @@ -311,6 +343,7 @@ public: CPPUNIT_ASSERT_EQUAL(ID3v2::AttachedPictureFrame::FrontCover, frame->type()); } +#ifdef WITH_APE void testSetGetApePicture() { const String FRONT_COVER("COVER ART (FRONT)"); @@ -326,7 +359,9 @@ public: .append(picture.value("data").value()), item.binaryData()); } +#endif +#ifdef WITH_ASF void testSetGetAsfPicture() { VariantMap picture(TEST_PICTURE); @@ -344,7 +379,9 @@ public: asfPicture.description()); CPPUNIT_ASSERT_EQUAL(ASF::Picture::FrontCover, asfPicture.type()); } +#endif +#ifdef WITH_MP4 void testSetGetMp4Picture() { VariantMap picture(TEST_PICTURE); @@ -360,7 +397,9 @@ public: covr.data()); CPPUNIT_ASSERT_EQUAL(MP4::CoverArt::JPEG, covr.format()); } +#endif +#ifdef WITH_VORBIS void testSetGetXiphPicture() { VariantMap picture(TEST_PICTURE); @@ -386,6 +425,7 @@ public: CPPUNIT_ASSERT_EQUAL(1, pic->width()); CPPUNIT_ASSERT_EQUAL(1, pic->height()); } +#endif void testNonExistent() { diff --git a/tests/test_fileref.cpp b/tests/test_fileref.cpp index 3d38e5e4..13b174d6 100644 --- a/tests/test_fileref.cpp +++ b/tests/test_fileref.cpp @@ -23,6 +23,10 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include @@ -30,23 +34,49 @@ #include "tbytevectorstream.h" #include "tag.h" #include "fileref.h" +#ifdef WITH_VORBIS #include "oggflacfile.h" #include "vorbisfile.h" +#endif #include "mpegfile.h" +#ifdef WITH_APE #include "mpcfile.h" +#endif +#ifdef WITH_ASF #include "asffile.h" +#endif +#ifdef WITH_VORBIS #include "speexfile.h" #include "flacfile.h" +#endif +#ifdef WITH_TRUEAUDIO #include "trueaudiofile.h" +#endif +#ifdef WITH_MP4 #include "mp4file.h" +#endif +#ifdef WITH_RIFF #include "wavfile.h" +#endif +#ifdef WITH_APE #include "apefile.h" +#endif +#ifdef WITH_RIFF #include "aifffile.h" +#endif +#ifdef WITH_APE #include "wavpackfile.h" +#endif +#ifdef WITH_VORBIS #include "opusfile.h" +#endif +#ifdef WITH_MOD #include "xmfile.h" +#endif +#ifdef WITH_DSF #include "dsffile.h" #include "dsdifffile.h" +#endif #include #include "utils.h" @@ -55,6 +85,7 @@ using namespace TagLib; namespace { +#ifdef WITH_VORBIS class DummyResolver : public FileRef::FileTypeResolver { public: @@ -63,7 +94,9 @@ namespace return new Ogg::Vorbis::File(fileName); } }; +#endif +#ifdef WITH_MP4 class DummyStreamResolver : public FileRef::StreamTypeResolver { public: @@ -77,32 +110,55 @@ namespace return new MP4::File(s); } }; +#endif } // namespace class TestFileRef : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestFileRef); +#ifdef WITH_ASF CPPUNIT_TEST(testASF); +#endif +#ifdef WITH_APE CPPUNIT_TEST(testMusepack); +#endif +#ifdef WITH_VORBIS CPPUNIT_TEST(testVorbis); CPPUNIT_TEST(testSpeex); CPPUNIT_TEST(testFLAC); +#endif CPPUNIT_TEST(testMP3); +#ifdef WITH_VORBIS CPPUNIT_TEST(testOGA_FLAC); CPPUNIT_TEST(testOGA_Vorbis); +#endif +#ifdef WITH_MP4 CPPUNIT_TEST(testMP4_1); CPPUNIT_TEST(testMP4_2); CPPUNIT_TEST(testMP4_3); CPPUNIT_TEST(testMP4_4); +#endif +#ifdef WITH_TRUEAUDIO CPPUNIT_TEST(testTrueAudio); +#endif +#ifdef WITH_APE CPPUNIT_TEST(testAPE); +#endif +#ifdef WITH_RIFF CPPUNIT_TEST(testWav); CPPUNIT_TEST(testAIFF_1); CPPUNIT_TEST(testAIFF_2); +#endif +#ifdef WITH_APE CPPUNIT_TEST(testWavPack); +#endif +#ifdef WITH_VORBIS CPPUNIT_TEST(testOpus); +#endif +#ifdef WITH_DSF CPPUNIT_TEST(testDSF); CPPUNIT_TEST(testDSDIFF); +#endif CPPUNIT_TEST(testUnsupported); CPPUNIT_TEST(testAudioProperties); CPPUNIT_TEST(testDefaultFileExtensions); @@ -239,16 +295,21 @@ public: } } +#ifdef WITH_APE void testMusepack() { fileRefSave("click", ".mpc"); } +#endif +#ifdef WITH_ASF void testASF() { fileRefSave("silence-1", ".wma"); } +#endif +#ifdef WITH_VORBIS void testVorbis() { fileRefSave("empty", ".ogg"); @@ -263,17 +324,21 @@ public: { fileRefSave("no-tags", ".flac"); } +#endif void testMP3() { fileRefSave("xing", ".mp3"); } +#ifdef WITH_TRUEAUDIO void testTrueAudio() { fileRefSave("empty", ".tta"); } +#endif +#ifdef WITH_MP4 void testMP4_1() { fileRefSave("has-tags", ".m4a"); @@ -293,12 +358,16 @@ public: { fileRefSave("blank_video", ".m4v"); } +#endif +#ifdef WITH_RIFF void testWav() { fileRefSave("empty", ".wav"); } +#endif +#ifdef WITH_VORBIS void testOGA_FLAC() { fileRefSave("empty_flac", ".oga"); @@ -308,12 +377,16 @@ public: { fileRefSave("empty_vorbis", ".oga"); } +#endif +#ifdef WITH_APE void testAPE() { fileRefSave("mac-399", ".ape"); } +#endif +#ifdef WITH_RIFF void testAIFF_1() { fileRefSave("empty", ".aiff"); @@ -323,17 +396,23 @@ public: { fileRefSave("alaw", ".aifc"); } +#endif +#ifdef WITH_APE void testWavPack() { fileRefSave("click", ".wv"); } +#endif +#ifdef WITH_VORBIS void testOpus() { fileRefSave("correctness_gain_silent_output", ".opus"); } +#endif +#ifdef WITH_DSF void testDSF() { fileRefSave("empty10ms",".dsf"); @@ -343,6 +422,7 @@ public: { fileRefSave("empty10ms",".dff"); } +#endif void testUnsupported() { @@ -364,28 +444,56 @@ public: void testDefaultFileExtensions() { const StringList extensions = FileRef::defaultFileExtensions(); +#ifdef WITH_APE CPPUNIT_ASSERT(extensions.contains("mpc")); +#endif +#ifdef WITH_ASF CPPUNIT_ASSERT(extensions.contains("wma")); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT(extensions.contains("ogg")); CPPUNIT_ASSERT(extensions.contains("spx")); CPPUNIT_ASSERT(extensions.contains("flac")); +#endif CPPUNIT_ASSERT(extensions.contains("mp3")); +#ifdef WITH_TRUEAUDIO CPPUNIT_ASSERT(extensions.contains("tta")); +#endif +#ifdef WITH_MP4 CPPUNIT_ASSERT(extensions.contains("m4a")); CPPUNIT_ASSERT(extensions.contains("3g2")); CPPUNIT_ASSERT(extensions.contains("m4v")); +#endif +#ifdef WITH_RIFF CPPUNIT_ASSERT(extensions.contains("wav")); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT(extensions.contains("oga")); +#endif +#ifdef WITH_APE CPPUNIT_ASSERT(extensions.contains("ape")); +#endif +#ifdef WITH_RIFF CPPUNIT_ASSERT(extensions.contains("aiff")); CPPUNIT_ASSERT(extensions.contains("aifc")); +#endif +#ifdef WITH_APE CPPUNIT_ASSERT(extensions.contains("wv")); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT(extensions.contains("opus")); +#endif +#ifdef WITH_MOD CPPUNIT_ASSERT(extensions.contains("xm")); +#endif +#ifdef WITH_DSF CPPUNIT_ASSERT(extensions.contains("dsf")); CPPUNIT_ASSERT(extensions.contains("dff")); CPPUNIT_ASSERT(extensions.contains("dsdiff")); +#endif +#ifdef WITH_SHORTEN CPPUNIT_ASSERT(extensions.contains("shn")); +#endif } void testFileResolver() @@ -395,6 +503,7 @@ public: CPPUNIT_ASSERT(dynamic_cast(f.file()) != nullptr); } +#ifdef WITH_VORBIS DummyResolver resolver; FileRef::addFileTypeResolver(&resolver); @@ -402,7 +511,9 @@ public: FileRef f(TEST_FILE_PATH_C("xing.mp3")); CPPUNIT_ASSERT(dynamic_cast(f.file()) != nullptr); } +#endif +#ifdef WITH_MP4 DummyStreamResolver streamResolver; FileRef::addFileTypeResolver(&streamResolver); @@ -411,6 +522,7 @@ public: FileRef f(&s); CPPUNIT_ASSERT(dynamic_cast(f.file()) != nullptr); } +#endif FileRef::clearFileTypeResolvers(); } diff --git a/tests/test_id3v2framefactory.cpp b/tests/test_id3v2framefactory.cpp index 98728a16..5cf34451 100644 --- a/tests/test_id3v2framefactory.cpp +++ b/tests/test_id3v2framefactory.cpp @@ -23,21 +23,35 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include +#ifdef WITH_VORBIS #include "flacproperties.h" +#endif #include "mpegproperties.h" #include "tbytevector.h" #include "tpropertymap.h" #include "mpegfile.h" +#ifdef WITH_VORBIS #include "flacfile.h" +#endif +#ifdef WITH_TRUEAUDIO #include "trueaudiofile.h" #include "trueaudioproperties.h" +#endif +#ifdef WITH_RIFF #include "wavfile.h" #include "aifffile.h" +#endif +#ifdef WITH_DSF #include "dsffile.h" #include "dsdifffile.h" +#endif #include "id3v2tag.h" #include "id3v2frame.h" #include "id3v2framefactory.h" @@ -118,12 +132,20 @@ class TestId3v2FrameFactory : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestId3v2FrameFactory); CPPUNIT_TEST(testMPEG); +#ifdef WITH_VORBIS CPPUNIT_TEST(testFLAC); +#endif +#ifdef WITH_TRUEAUDIO CPPUNIT_TEST(testTrueAudio); +#endif +#ifdef WITH_RIFF CPPUNIT_TEST(testWAV); CPPUNIT_TEST(testAIFF); +#endif +#ifdef WITH_DSF CPPUNIT_TEST(testDSF); CPPUNIT_TEST(testDSDIFF); +#endif CPPUNIT_TEST_SUITE_END(); public: @@ -236,6 +258,7 @@ public: ); } +#ifdef WITH_VORBIS void testFLAC() { ScopedFileCopy copy("no-tags", ".flac"); @@ -260,7 +283,9 @@ public: } ); } +#endif +#ifdef WITH_TRUEAUDIO void testTrueAudio() { ScopedFileCopy copy("empty", ".tta"); @@ -285,7 +310,9 @@ public: } ); } +#endif +#ifdef WITH_RIFF void testWAV() { ScopedFileCopy copy("empty", ".wav"); @@ -335,7 +362,9 @@ public: } ); } +#endif +#ifdef WITH_DSF void testDSF() { ScopedFileCopy copy("empty10ms", ".dsf"); @@ -385,6 +414,7 @@ public: } ); } +#endif }; diff --git a/tests/test_mpeg.cpp b/tests/test_mpeg.cpp index d6aa3a40..5c1f7961 100644 --- a/tests/test_mpeg.cpp +++ b/tests/test_mpeg.cpp @@ -23,6 +23,10 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -32,7 +36,9 @@ #include "mpegfile.h" #include "id3v2tag.h" #include "id3v1tag.h" +#ifdef WITH_APE #include "apetag.h" +#endif #include "mpegproperties.h" #include "xingheader.h" #include "mpegheader.h" @@ -67,7 +73,9 @@ class TestMPEG : public CppUnit::TestFixture CPPUNIT_TEST(testRepeatedSave3); CPPUNIT_TEST(testEmptyID3v2); CPPUNIT_TEST(testEmptyID3v1); +#ifdef WITH_APE CPPUNIT_TEST(testEmptyAPE); +#endif CPPUNIT_TEST(testIgnoreGarbage); CPPUNIT_TEST(testExtendedHeader); CPPUNIT_TEST(testReadStyleFast); @@ -304,7 +312,9 @@ public: { MPEG::File f(copy.fileName().c_str()); f.ID3v2Tag(true)->setTitle("ID3v2"); +#ifdef WITH_APE f.APETag(true)->setTitle("APE"); +#endif f.ID3v1Tag(true)->setTitle("ID3v1"); f.save(); } @@ -312,8 +322,10 @@ public: MPEG::File f(copy.fileName().c_str()); CPPUNIT_ASSERT_EQUAL(String("ID3v2"), f.properties()["TITLE"].front()); f.strip(MPEG::File::ID3v2); +#ifdef WITH_APE CPPUNIT_ASSERT_EQUAL(String("APE"), f.properties()["TITLE"].front()); f.strip(MPEG::File::APE); +#endif CPPUNIT_ASSERT_EQUAL(String("ID3v1"), f.properties()["TITLE"].front()); f.strip(MPEG::File::ID3v1); CPPUNIT_ASSERT(f.properties().isEmpty()); @@ -464,17 +476,23 @@ public: CPPUNIT_ASSERT(!f.hasAPETag()); CPPUNIT_ASSERT(!f.hasID3v1Tag()); +#ifdef WITH_APE f.APETag(true)->setTitle("01234 56789 ABCDE FGHIJ"); f.save(); f.APETag()->setTitle("0"); f.save(); +#endif f.ID3v1Tag(true)->setTitle("01234 56789 ABCDE FGHIJ"); +#ifdef WITH_APE f.APETag()->setTitle("01234 56789 ABCDE FGHIJ 01234 56789 ABCDE FGHIJ 01234 56789"); +#endif f.save(); } { MPEG::File f(copy.fileName().c_str()); +#ifdef WITH_APE CPPUNIT_ASSERT(f.hasAPETag()); +#endif CPPUNIT_ASSERT(f.hasID3v1Tag()); } } @@ -519,6 +537,7 @@ public: } } +#ifdef WITH_APE void testEmptyAPE() { ScopedFileCopy copy("xing", ".mp3"); @@ -538,6 +557,7 @@ public: CPPUNIT_ASSERT(!f.hasAPETag()); } } +#endif void testIgnoreGarbage() { diff --git a/tests/test_propertymap.cpp b/tests/test_propertymap.cpp index e7de4b89..a360c231 100644 --- a/tests/test_propertymap.cpp +++ b/tests/test_propertymap.cpp @@ -23,15 +23,29 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include "tpropertymap.h" #include "tag.h" +#ifdef WITH_APE #include "apetag.h" +#endif +#ifdef WITH_ASF #include "asftag.h" +#endif #include "id3v1tag.h" #include "id3v2tag.h" +#ifdef WITH_RIFF #include "infotag.h" +#endif +#ifdef WITH_MP4 #include "mp4tag.h" +#endif +#ifdef WITH_VORBIS #include "xiphcomment.h" +#endif #include #include "utils.h" @@ -41,13 +55,23 @@ class TestPropertyMap : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestPropertyMap); CPPUNIT_TEST(testInvalidKeys); +#ifdef WITH_APE CPPUNIT_TEST(testGetSetApe); +#endif +#ifdef WITH_ASF CPPUNIT_TEST(testGetSetAsf); +#endif CPPUNIT_TEST(testGetSetId3v1); CPPUNIT_TEST(testGetSetId3v2); +#ifdef WITH_RIFF CPPUNIT_TEST(testGetSetInfo); +#endif +#ifdef WITH_MP4 CPPUNIT_TEST(testGetSetMp4); +#endif +#ifdef WITH_VORBIS CPPUNIT_TEST(testGetSetXiphComment); +#endif CPPUNIT_TEST(testGetSet); CPPUNIT_TEST_SUITE_END(); @@ -141,30 +165,40 @@ public: tagGetSet(); } +#ifdef WITH_VORBIS void testGetSetXiphComment() { tagGetSet(); } +#endif +#ifdef WITH_APE void testGetSetApe() { tagGetSet(); } +#endif +#ifdef WITH_ASF void testGetSetAsf() { tagGetSet(); } +#endif +#ifdef WITH_MP4 void testGetSetMp4() { tagGetSet(); } +#endif +#ifdef WITH_RIFF void testGetSetInfo() { tagGetSet(); } +#endif void testGetSet() { diff --git a/tests/test_sizes.cpp b/tests/test_sizes.cpp index 5c2b2e9a..574db28f 100644 --- a/tests/test_sizes.cpp +++ b/tests/test_sizes.cpp @@ -23,35 +23,49 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include +#ifdef WITH_RIFF #include "aifffile.h" #include "aiffproperties.h" +#endif +#ifdef WITH_APE #include "apefile.h" #include "apefooter.h" #include "apeitem.h" #include "apeproperties.h" #include "apetag.h" +#endif +#ifdef WITH_ASF #include "asfattribute.h" #include "asffile.h" #include "asfpicture.h" #include "asfproperties.h" #include "asftag.h" +#endif #include "attachedpictureframe.h" #include "audioproperties.h" #include "chapterframe.h" #include "commentsframe.h" +#ifdef WITH_DSF #include "dsffile.h" #include "dsfproperties.h" #include "dsdifffile.h" #include "dsdiffproperties.h" +#endif #include "eventtimingcodesframe.h" #include "fileref.h" +#ifdef WITH_VORBIS #include "flacfile.h" #include "flacmetadatablock.h" #include "flacunknownmetadatablock.h" #include "flacpicture.h" #include "flacproperties.h" +#endif #include "generalencapsulatedobjectframe.h" #include "id3v1tag.h" #include "id3v2extendedheader.h" @@ -60,43 +74,61 @@ #include "id3v2framefactory.h" #include "id3v2header.h" #include "id3v2tag.h" +#ifdef WITH_RIFF #include "infotag.h" +#endif +#ifdef WITH_MOD #include "itfile.h" #include "itproperties.h" #include "modfile.h" #include "modfilebase.h" #include "modproperties.h" #include "modtag.h" +#endif +#ifdef WITH_MP4 #include "mp4coverart.h" #include "mp4file.h" #include "mp4item.h" #include "mp4itemfactory.h" #include "mp4properties.h" #include "mp4tag.h" +#endif +#ifdef WITH_APE #include "mpcfile.h" #include "mpcproperties.h" +#endif #include "mpegfile.h" #include "mpegheader.h" #include "mpegproperties.h" +#ifdef WITH_VORBIS #include "oggfile.h" #include "oggflacfile.h" #include "oggpage.h" #include "oggpageheader.h" #include "opusfile.h" #include "opusproperties.h" +#endif #include "ownershipframe.h" #include "podcastframe.h" #include "popularimeterframe.h" #include "privateframe.h" #include "relativevolumeframe.h" +#ifdef WITH_RIFF #include "rifffile.h" +#endif +#ifdef WITH_MOD #include "s3mfile.h" #include "s3mproperties.h" +#endif +#ifdef WITH_SHORTEN #include "shortenfile.h" #include "shortenproperties.h" #include "shortentag.h" +#endif +#ifdef WITH_VORBIS #include "speexfile.h" #include "speexproperties.h" +#endif #include "synchronizedlyricsframe.h" #include "tableofcontentsframe.h" #include "tag.h" @@ -111,24 +143,38 @@ #include "tlist.h" #include "tmap.h" #include "tpropertymap.h" +#ifdef WITH_TRUEAUDIO #include "trueaudiofile.h" #include "trueaudioproperties.h" +#endif #include "tstring.h" #include "tstringlist.h" #include "uniquefileidentifierframe.h" #include "unknownframe.h" #include "unsynchronizedlyricsframe.h" #include "urllinkframe.h" +#ifdef WITH_VORBIS #include "vorbisfile.h" #include "vorbisproperties.h" +#endif +#ifdef WITH_RIFF #include "wavfile.h" +#endif +#ifdef WITH_APE #include "wavpackfile.h" #include "wavpackproperties.h" +#endif +#ifdef WITH_RIFF #include "wavproperties.h" +#endif #include "xingheader.h" +#ifdef WITH_VORBIS #include "xiphcomment.h" +#endif +#ifdef WITH_MOD #include "xmfile.h" #include "xmproperties.h" +#endif #include @@ -147,31 +193,43 @@ public: // Class list was built by generating XML docs with Doxygen, and then running: // $ grep kind=\"class\" index.xml | sed -E -e 's/(.*|<\/name>.*)//g' +#ifdef WITH_APE CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::APE::File)); CPPUNIT_ASSERT_EQUAL(classSize(0, false), sizeof(TagLib::APE::Footer)); CPPUNIT_ASSERT_EQUAL(classSize(0, false), sizeof(TagLib::APE::Item)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::APE::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::APE::Tag)); +#endif +#ifdef WITH_ASF CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::ASF::Attribute)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::ASF::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::ASF::Picture)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::ASF::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::ASF::Tag)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::AudioProperties)); CPPUNIT_ASSERT_EQUAL(classSize(0, false), sizeof(TagLib::ByteVector)); CPPUNIT_ASSERT_EQUAL(classSize(2, false), sizeof(TagLib::ByteVectorList)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::ByteVectorStream)); CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::DebugListener)); +#ifdef WITH_DSF CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::DSDIFF::DIIN::Tag)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::DSDIFF::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::DSDIFF::Properties)); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::FLAC::File)); +#endif +#ifdef WITH_DSF CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::DSF::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::DSF::Properties)); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::FLAC::MetadataBlock)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::FLAC::Picture)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::FLAC::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::FLAC::UnknownMetadataBlock)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::FileRef)); CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::FileRef::FileTypeResolver)); @@ -207,26 +265,35 @@ public: CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::ID3v2::UserTextIdentificationFrame)); CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::ID3v2::UserUrlLinkFrame)); CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::IOStream)); +#ifdef WITH_MOD CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::IT::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::IT::Properties)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::List)); +#ifdef WITH_MP4 CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::MP4::CoverArt)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MP4::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::MP4::Item)); CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::MP4::ItemFactory)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MP4::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MP4::Tag)); +#endif +#ifdef WITH_APE CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MPC::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MPC::Properties)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MPEG::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::MPEG::Header)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::MPEG::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(0, false), sizeof(TagLib::MPEG::XingHeader)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::Map)); +#ifdef WITH_MOD CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::Mod::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Mod::FileBase)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Mod::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Mod::Tag)); +#endif +#ifdef WITH_VORBIS CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::Ogg::FLAC::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Ogg::File)); CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::Ogg::Opus::File)); @@ -238,7 +305,9 @@ public: CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::Ogg::Vorbis::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Ogg::Vorbis::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Ogg::XiphComment)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(2, false), sizeof(TagLib::PropertyMap)); +#ifdef WITH_RIFF CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::RIFF::AIFF::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::RIFF::AIFF::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::RIFF::File)); @@ -246,21 +315,32 @@ public: CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::RIFF::Info::Tag)); CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::RIFF::WAV::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::RIFF::WAV::Properties)); +#endif +#ifdef WITH_MOD CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::S3M::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::S3M::Properties)); +#endif +#ifdef WITH_SHORTEN CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Shorten::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Shorten::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::Shorten::Tag)); +#endif CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::String)); CPPUNIT_ASSERT_EQUAL(classSize(2, false), sizeof(TagLib::StringList)); CPPUNIT_ASSERT_EQUAL(classSize(0, true), sizeof(TagLib::Tag)); +#ifdef WITH_TRUEAUDIO CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::TrueAudio::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::TrueAudio::Properties)); +#endif +#ifdef WITH_APE CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::WavPack::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::WavPack::Properties)); +#endif +#ifdef WITH_MOD CPPUNIT_ASSERT_EQUAL(classSize(2, true), sizeof(TagLib::XM::File)); CPPUNIT_ASSERT_EQUAL(classSize(1, true), sizeof(TagLib::XM::Properties)); CPPUNIT_ASSERT_EQUAL(classSize(1, false), sizeof(TagLib::Variant)); +#endif } private: diff --git a/tests/test_tag_c.cpp b/tests/test_tag_c.cpp index dc51028a..5fa09b57 100644 --- a/tests/test_tag_c.cpp +++ b/tests/test_tag_c.cpp @@ -23,6 +23,10 @@ * http://www.mozilla.org/MPL/ * ***************************************************************************/ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include #include #include @@ -77,7 +81,9 @@ class TestTagC : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(TestTagC); CPPUNIT_TEST(testMp3); +#ifdef WITH_VORBIS CPPUNIT_TEST(testStream); +#endif CPPUNIT_TEST_SUITE_END(); public: @@ -165,6 +171,7 @@ public: taglib_tag_free_strings(); } +#ifdef WITH_VORBIS void testStream() { // Only fetch the beginning of a FLAC file @@ -233,6 +240,7 @@ public: taglib_tag_free_strings(); } +#endif }; CPPUNIT_TEST_SUITE_REGISTRATION(TestTagC);