mirror of
https://github.com/taglib/taglib.git
synced 2025-06-04 01:28:21 -04:00
Conflicts: CMakeLists.txt ConfigureChecks.cmake config.h.cmake taglib/CMakeLists.txt taglib/ape/apefile.cpp taglib/ape/apefile.h taglib/ape/apeproperties.cpp taglib/ape/apeproperties.h taglib/ape/apetag.cpp taglib/asf/asfattribute.cpp taglib/asf/asffile.cpp taglib/asf/asffile.h taglib/asf/asfpicture.cpp taglib/asf/asfpicture.h taglib/asf/asfproperties.cpp taglib/asf/asfproperties.h taglib/audioproperties.cpp taglib/flac/flacfile.cpp taglib/flac/flacfile.h taglib/flac/flacproperties.cpp taglib/flac/flacproperties.h taglib/it/itproperties.cpp taglib/mod/modproperties.cpp taglib/mp4/mp4atom.cpp taglib/mp4/mp4file.cpp taglib/mp4/mp4file.h taglib/mp4/mp4properties.cpp taglib/mp4/mp4tag.cpp taglib/mp4/mp4tag.h taglib/mpc/mpcfile.cpp taglib/mpc/mpcfile.h taglib/mpc/mpcproperties.cpp taglib/mpc/mpcproperties.h taglib/mpeg/id3v2/frames/chapterframe.cpp taglib/mpeg/id3v2/frames/synchronizedlyricsframe.cpp taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp taglib/mpeg/mpegfile.cpp taglib/mpeg/mpegfile.h taglib/mpeg/mpegheader.cpp taglib/mpeg/mpegproperties.cpp taglib/mpeg/mpegproperties.h taglib/mpeg/xingheader.cpp taglib/mpeg/xingheader.h taglib/ogg/opus/opusfile.cpp taglib/ogg/opus/opusfile.h taglib/ogg/opus/opusproperties.cpp taglib/ogg/opus/opusproperties.h taglib/ogg/speex/speexfile.cpp taglib/ogg/speex/speexfile.h taglib/ogg/speex/speexproperties.cpp taglib/ogg/speex/speexproperties.h taglib/ogg/vorbis/vorbisfile.cpp taglib/ogg/vorbis/vorbisfile.h taglib/ogg/vorbis/vorbisproperties.cpp taglib/ogg/vorbis/vorbisproperties.h taglib/riff/aiff/aifffile.cpp taglib/riff/aiff/aifffile.h taglib/riff/aiff/aiffproperties.cpp taglib/riff/aiff/aiffproperties.h taglib/riff/wav/infotag.h taglib/riff/wav/wavfile.cpp taglib/riff/wav/wavfile.h taglib/riff/wav/wavproperties.cpp taglib/riff/wav/wavproperties.h taglib/s3m/s3mproperties.cpp taglib/taglib_config.h.cmake taglib/toolkit/tbytevector.cpp taglib/toolkit/tfile.cpp taglib/toolkit/tfile.h taglib/toolkit/tfilestream.cpp taglib/toolkit/trefcounter.cpp taglib/toolkit/tstring.cpp taglib/toolkit/tstring.h taglib/toolkit/tutils.h taglib/trueaudio/trueaudiofile.cpp taglib/trueaudio/trueaudiofile.h taglib/trueaudio/trueaudioproperties.cpp taglib/trueaudio/trueaudioproperties.h taglib/wavpack/wavpackfile.cpp taglib/wavpack/wavpackfile.h taglib/wavpack/wavpackproperties.cpp taglib/wavpack/wavpackproperties.h taglib/xm/xmproperties.cpp taglib/xm/xmproperties.h tests/CMakeLists.txt tests/data/alaw.wav tests/test_asf.cpp tests/test_mp4.cpp tests/test_ogg.cpp tests/test_opus.cpp tests/test_string.cpp tests/test_wav.cpp tests/test_wavpack.cpp
257 lines
5.7 KiB
CMake
257 lines
5.7 KiB
CMake
include(CheckLibraryExists)
|
|
include(CheckTypeSize)
|
|
include(CheckCXXCompilerFlag)
|
|
include(CheckCXXSourceCompiles)
|
|
include(TestLargeFiles)
|
|
|
|
# Check if the size of numeric types are suitable.
|
|
|
|
check_type_size("short" SIZEOF_SHORT)
|
|
if(NOT ${SIZEOF_SHORT} EQUAL 2)
|
|
message(FATAL_ERROR "TagLib requires that short is 16-bit wide.")
|
|
endif()
|
|
|
|
check_type_size("int" SIZEOF_INT)
|
|
if(NOT ${SIZEOF_INT} EQUAL 4)
|
|
message(FATAL_ERROR "TagLib requires that int is 32-bit wide.")
|
|
endif()
|
|
|
|
check_type_size("long long" SIZEOF_LONGLONG)
|
|
if(NOT ${SIZEOF_LONGLONG} EQUAL 8)
|
|
message(FATAL_ERROR "TagLib requires that long long is 64-bit wide.")
|
|
endif()
|
|
|
|
check_type_size("wchar_t" SIZEOF_WCHAR_T)
|
|
if(${SIZEOF_WCHAR_T} LESS 2)
|
|
message(FATAL_ERROR "TagLib requires that wchar_t is sufficient to store a UTF-16 char.")
|
|
endif()
|
|
|
|
check_type_size("float" SIZEOF_FLOAT)
|
|
if(NOT ${SIZEOF_FLOAT} EQUAL 4)
|
|
message(FATAL_ERROR "TagLib requires that float is 32-bit wide.")
|
|
endif()
|
|
|
|
check_type_size("double" SIZEOF_DOUBLE)
|
|
if(NOT ${SIZEOF_DOUBLE} EQUAL 8)
|
|
message(FATAL_ERROR "TagLib requires that double is 64-bit wide.")
|
|
endif()
|
|
|
|
# Determine whether your compiler supports large files.
|
|
|
|
if(NOT WIN32)
|
|
test_large_files(SUPPORT_LARGE_FILES)
|
|
if(NOT SUPPORT_LARGE_FILES)
|
|
MESSAGE(FATAL_ERROR "TagLib requires large files support.")
|
|
endif()
|
|
endif()
|
|
|
|
# Determine which kind of atomic operations your compiler supports.
|
|
|
|
check_cxx_source_compiles("
|
|
#include <atomic>
|
|
int main() {
|
|
std::atomic<unsigned int> x;
|
|
x.fetch_add(1);
|
|
x.fetch_sub(1);
|
|
return 0;
|
|
}
|
|
" HAVE_STD_ATOMIC)
|
|
|
|
if(NOT HAVE_STD_ATOMIC)
|
|
check_cxx_source_compiles("
|
|
#include <boost/atomic.hpp>
|
|
int main() {
|
|
boost::atomic<unsigned int> x(1);
|
|
x.fetch_add(1);
|
|
x.fetch_sub(1);
|
|
return 0;
|
|
}
|
|
" HAVE_BOOST_ATOMIC)
|
|
|
|
if(NOT HAVE_BOOST_ATOMIC)
|
|
check_cxx_source_compiles("
|
|
int main() {
|
|
volatile int x;
|
|
__sync_add_and_fetch(&x, 1);
|
|
int y = __sync_sub_and_fetch(&x, 1);
|
|
return 0;
|
|
}
|
|
" HAVE_GCC_ATOMIC)
|
|
|
|
if(NOT HAVE_GCC_ATOMIC)
|
|
check_cxx_source_compiles("
|
|
#include <libkern/OSAtomic.h>
|
|
int main() {
|
|
volatile int32_t x;
|
|
OSAtomicIncrement32Barrier(&x);
|
|
int32_t y = OSAtomicDecrement32Barrier(&x);
|
|
return 0;
|
|
}
|
|
" HAVE_MAC_ATOMIC)
|
|
|
|
if(NOT HAVE_MAC_ATOMIC)
|
|
check_cxx_source_compiles("
|
|
#include <windows.h>
|
|
int main() {
|
|
volatile LONG x;
|
|
InterlockedIncrement(&x);
|
|
LONG y = InterlockedDecrement(&x);
|
|
return 0;
|
|
}
|
|
" HAVE_WIN_ATOMIC)
|
|
|
|
if(NOT HAVE_WIN_ATOMIC)
|
|
check_cxx_source_compiles("
|
|
#include <ia64intrin.h>
|
|
int main() {
|
|
volatile int x;
|
|
__sync_add_and_fetch(&x, 1);
|
|
int y = __sync_sub_and_fetch(&x, 1);
|
|
return 0;
|
|
}
|
|
" HAVE_IA64_ATOMIC)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Determine which kind of smart pointers your compiler supports.
|
|
|
|
check_cxx_source_compiles("
|
|
#include <memory>
|
|
int main() {
|
|
std::shared_ptr<int> x;
|
|
std::unique_ptr<int> y;
|
|
return 0;
|
|
}
|
|
" HAVE_STD_SMART_PTR)
|
|
|
|
if(NOT HAVE_STD_SMART_PTR)
|
|
check_cxx_source_compiles("
|
|
#include <boost/shared_ptr.hpp>
|
|
#include <boost/scoped_ptr.hpp>
|
|
int main() {
|
|
boost::shared_ptr<int> x;
|
|
boost::scoped_ptr<int> y;
|
|
return 0;
|
|
}
|
|
" HAVE_BOOST_SMART_PTR)
|
|
endif()
|
|
|
|
# Determine which kind of byte swap functions your compiler supports.
|
|
|
|
check_cxx_source_compiles("
|
|
int main() {
|
|
__builtin_bswap16(0);
|
|
__builtin_bswap32(0);
|
|
__builtin_bswap64(0);
|
|
return 0;
|
|
}
|
|
" HAVE_GCC_BYTESWAP)
|
|
|
|
if(NOT HAVE_GCC_BYTESWAP)
|
|
check_cxx_source_compiles("
|
|
#include <byteswap.h>
|
|
int main() {
|
|
__bswap_16(0);
|
|
__bswap_32(0);
|
|
__bswap_64(0);
|
|
return 0;
|
|
}
|
|
" HAVE_GLIBC_BYTESWAP)
|
|
|
|
if(NOT HAVE_GLIBC_BYTESWAP)
|
|
check_cxx_source_compiles("
|
|
#include <stdlib.h>
|
|
int main() {
|
|
_byteswap_ushort(0);
|
|
_byteswap_ulong(0);
|
|
_byteswap_uint64(0);
|
|
return 0;
|
|
}
|
|
" HAVE_MSC_BYTESWAP)
|
|
|
|
if(NOT HAVE_MSC_BYTESWAP)
|
|
check_cxx_source_compiles("
|
|
#include <libkern/OSByteOrder.h>
|
|
int main() {
|
|
OSSwapInt16(0);
|
|
OSSwapInt32(0);
|
|
OSSwapInt64(0);
|
|
return 0;
|
|
}
|
|
" HAVE_MAC_BYTESWAP)
|
|
|
|
if(NOT HAVE_MAC_BYTESWAP)
|
|
check_cxx_source_compiles("
|
|
#include <sys/endian.h>
|
|
int main() {
|
|
swap16(0);
|
|
swap32(0);
|
|
swap64(0);
|
|
return 0;
|
|
}
|
|
" HAVE_OPENBSD_BYTESWAP)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
# Determine whether your compiler supports some safer version of vsprintf.
|
|
|
|
check_cxx_source_compiles("
|
|
#include <cstdio>
|
|
#include <cstdarg>
|
|
int main() {
|
|
char buf[20];
|
|
va_list args;
|
|
vsnprintf(buf, 20, \"%d\", args);
|
|
return 0;
|
|
}
|
|
" HAVE_VSNPRINTF)
|
|
|
|
if(NOT HAVE_VSNPRINTF)
|
|
check_cxx_source_compiles("
|
|
#include <cstdio>
|
|
#include <cstdarg>
|
|
int main() {
|
|
char buf[20];
|
|
va_list args;
|
|
vsprintf_s(buf, \"%d\", args);
|
|
return 0;
|
|
}
|
|
" HAVE_VSPRINTF_S)
|
|
endif()
|
|
|
|
# Check which your compiler supports ISO _strdup.
|
|
|
|
check_cxx_source_compiles("
|
|
#include <cstring>
|
|
int main() {
|
|
_strdup(0);
|
|
return 0;
|
|
}
|
|
" HAVE_ISO_STRDUP)
|
|
|
|
# Determine whether zlib is installed.
|
|
|
|
if(NOT ZLIB_SOURCE)
|
|
find_package(ZLIB)
|
|
if(ZLIB_FOUND)
|
|
set(HAVE_ZLIB 1)
|
|
else()
|
|
set(HAVE_ZLIB 0)
|
|
endif()
|
|
endif()
|
|
|
|
# Determine whether CppUnit is installed.
|
|
|
|
if(BUILD_TESTS)
|
|
find_package(CppUnit)
|
|
if(NOT CppUnit_FOUND)
|
|
message(STATUS "CppUnit not found, disabling tests.")
|
|
set(BUILD_TESTS OFF)
|
|
endif()
|
|
endif()
|