option(NO_ITUNES_HACKS "Disable workarounds for iTunes bugs" OFF)
-set(TAGLIB_TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/")
+set(TESTS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/")
## the following are directories where stuff will be installed to
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)")
endif()
include_directories(${CMAKE_CURRENT_BINARY_DIR})
+configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
if(WITH_ASF)
set(TAGLIB_WITH_ASF TRUE)
# Determine the CPU byte order.
-test_big_endian(TAGLIB_BIG_ENDIAN)
+test_big_endian(IS_BIG_ENDIAN)
-if(NOT TAGLIB_BIG_ENDIAN)
- set(TAGLIB_LITTLE_ENDIAN 1)
+if(NOT IS_BIG_ENDIAN)
+ set(SYSTEM_BYTEORDER 1)
+else()
+ set(SYSTEM_BYTEORDER 2)
endif()
# Determine if your compiler supports std::wstring.
__builtin_bswap16(0);
return 0;
}
-" TAGLIB_HAVE_GCC_BYTESWAP_16)
+" HAVE_GCC_BYTESWAP_16)
check_cxx_source_compiles("
int main() {
__builtin_bswap32(0);
return 0;
}
-" TAGLIB_HAVE_GCC_BYTESWAP_32)
+" HAVE_GCC_BYTESWAP_32)
check_cxx_source_compiles("
int main() {
__builtin_bswap64(0);
return 0;
}
-" TAGLIB_HAVE_GCC_BYTESWAP_64)
+" HAVE_GCC_BYTESWAP_64)
-if(NOT TAGLIB_HAVE_GCC_BYTESWAP_16 OR NOT TAGLIB_HAVE_GCC_BYTESWAP_32 OR NOT TAGLIB_HAVE_GCC_BYTESWAP_64)
+if(NOT HAVE_GCC_BYTESWAP_16 OR NOT HAVE_GCC_BYTESWAP_32 OR NOT HAVE_GCC_BYTESWAP_64)
check_cxx_source_compiles("
#include <byteswap.h>
int main() {
__bswap_64(0);
return 0;
}
- " TAGLIB_HAVE_GLIBC_BYTESWAP)
+ " HAVE_GLIBC_BYTESWAP)
- if(NOT TAGLIB_HAVE_GLIBC_BYTESWAP)
+ if(NOT HAVE_GLIBC_BYTESWAP)
check_cxx_source_compiles("
#include <stdlib.h>
int main() {
_byteswap_uint64(0);
return 0;
}
- " TAGLIB_HAVE_MSC_BYTESWAP)
+ " HAVE_MSC_BYTESWAP)
- if(NOT TAGLIB_HAVE_MSC_BYTESWAP)
+ if(NOT HAVE_MSC_BYTESWAP)
check_cxx_source_compiles("
#include <libkern/OSByteOrder.h>
int main() {
OSSwapInt64(0);
return 0;
}
- " TAGLIB_HAVE_MAC_BYTESWAP)
+ " HAVE_MAC_BYTESWAP)
- if(NOT TAGLIB_HAVE_MAC_BYTESWAP)
+ if(NOT HAVE_MAC_BYTESWAP)
check_cxx_source_compiles("
#include <sys/endian.h>
int main() {
swap64(0);
return 0;
}
- " TAGLIB_HAVE_OPENBSD_BYTESWAP)
+ " HAVE_OPENBSD_BYTESWAP)
endif()
endif()
endif()
std::codecvt_utf8_utf16<wchar_t> x;
return 0;
}
-" TAGLIB_HAVE_STD_CODECVT)
+" HAVE_STD_CODECVT)
# Check for libz using the cmake supplied FindZLIB.cmake
find_package(ZLIB)
if(ZLIB_FOUND)
- set(TAGLIB_HAVE_ZLIB 1)
+ set(HAVE_ZLIB 1)
else()
- set(TAGLIB_HAVE_ZLIB 0)
+ set(HAVE_ZLIB 0)
endif()
--- /dev/null
+/* config.h. Generated by cmake from config.h.cmake */
+
+/* Indicates the endianness of your target system */
+/* 1 if little-endian, 2 if big-endiann. */
+#cmakedefine SYSTEM_BYTEORDER ${SYSTEM_BYTEORDER}
+
+/* Defined if your compiler supports some byte swap functions */
+#cmakedefine HAVE_GCC_BYTESWAP_16 1
+#cmakedefine HAVE_GCC_BYTESWAP_32 1
+#cmakedefine HAVE_GCC_BYTESWAP_64 1
+#cmakedefine HAVE_GLIBC_BYTESWAP 1
+#cmakedefine HAVE_MSC_BYTESWAP 1
+#cmakedefine HAVE_MAC_BYTESWAP 1
+#cmakedefine HAVE_OPENBSD_BYTESWAP 1
+
+/* Defined if your compiler supports codecvt */
+#cmakedefine HAVE_STD_CODECVT 1
+
+/* Defined if you have libz */
+#cmakedefine HAVE_ZLIB 1
+
+#cmakedefine TESTS_DIR "@TESTS_DIR@"
* http://www.mozilla.org/MPL/ *
***************************************************************************/
+#include "config.h"
#include "taglib_config.h"
-#if TAGLIB_HAVE_ZLIB
+#if HAVE_ZLIB
#include <zlib.h>
#endif
frameDataOffset += 4;
}
-#if TAGLIB_HAVE_ZLIB
+#if HAVE_ZLIB
if(d->header->compression() &&
!d->header->encryption())
{
* http://www.mozilla.org/MPL/ *
***************************************************************************/
+#include "config.h"
#include "taglib_config.h"
#include <tdebug.h>
// TagLib doesn't mess with encrypted frames, so just treat them
// as unknown frames.
-#if !defined(TAGLIB_HAVE_ZLIB) || TAGLIB_HAVE_ZLIB == 0
+#if !defined(HAVE_ZLIB) || HAVE_ZLIB == 0
if(header->compression()) {
debug("Compressed frames are currently not supported.");
return new UnknownFrame(data, header);
/* taglib_config.h. Generated by cmake from taglib_config.h.cmake */
-/* Indicates the endianness of your target system */
-#cmakedefine TAGLIB_LITTLE_ENDIAN 1
-#cmakedefine TAGLIB_BIG_ENDIAN 1
-
/* Defined if your compiler supports std::wstring */
#cmakedefine TAGLIB_HAVE_STD_WSTRING 1
#cmakedefine TAGLIB_HAVE_WIN_ATOMIC 1
#cmakedefine TAGLIB_HAVE_IA64_ATOMIC 1
-/* Defined if your compiler supports some byte swap functions */
-#cmakedefine TAGLIB_HAVE_GCC_BYTESWAP_16 1
-#cmakedefine TAGLIB_HAVE_GCC_BYTESWAP_32 1
-#cmakedefine TAGLIB_HAVE_GCC_BYTESWAP_64 1
-#cmakedefine TAGLIB_HAVE_GLIBC_BYTESWAP 1
-#cmakedefine TAGLIB_HAVE_MSC_BYTESWAP 1
-#cmakedefine TAGLIB_HAVE_MAC_BYTESWAP 1
-#cmakedefine TAGLIB_HAVE_OPENBSD_BYTESWAP 1
-
-/* Defined if your compiler supports codecvt */
-#cmakedefine TAGLIB_HAVE_STD_CODECVT 1
-
-/* Defined if you have libz */
-#cmakedefine TAGLIB_HAVE_ZLIB 1
-
#define TAGLIB_WITH_ASF 1
#define TAGLIB_WITH_MP4 1
-#cmakedefine TAGLIB_TESTS_DIR "@TESTS_DIR@"
# define TAGLIB_ATOMIC_DEC(x) (--x)
#endif
-// Optimized byte swap functions.
-
-#if defined(TAGLIB_HAVE_MSC_BYTESWAP)
-# include <stdlib.h>
-#elif defined(TAGLIB_HAVE_GLIBC_BYTESWAP)
-# include <byteswap.h>
-#elif defined(TAGLIB_HAVE_MAC_BYTESWAP)
-# include <libkern/OSByteOrder.h>
-#elif defined(TAGLIB_HAVE_OPENBSD_BYTESWAP)
-# include <sys/endian.h>
-#endif
-
-#if defined(TAGLIB_HAVE_GCC_BYTESWAP_16)
-# define TAGLIB_BYTESWAP_16(x) __builtin_bswap16(x)
-#elif defined(TAGLIB_HAVE_MSC_BYTESWAP)
-# define TAGLIB_BYTESWAP_16(x) _byteswap_ushort(x)
-#elif defined(TAGLIB_HAVE_GLIBC_BYTESWAP)
-# define TAGLIB_BYTESWAP_16(x) __bswap_16(x)
-#elif defined(TAGLIB_HAVE_MAC_BYTESWAP)
-# define TAGLIB_BYTESWAP_16(x) OSSwapInt16(x)
-#elif defined(TAGLIB_HAVE_OPENBSD_BYTESWAP)
-# define TAGLIB_BYTESWAP_16(x) swap16(x)
-#endif
-
-#if defined(TAGLIB_HAVE_GCC_BYTESWAP_32)
-# define TAGLIB_BYTESWAP_32(x) __builtin_bswap32(x)
-#elif defined(TAGLIB_HAVE_MSC_BYTESWAP)
-# define TAGLIB_BYTESWAP_32(x) _byteswap_ulong(x)
-#elif defined(TAGLIB_HAVE_GLIBC_BYTESWAP)
-# define TAGLIB_BYTESWAP_32(x) __bswap_32(x)
-#elif defined(TAGLIB_HAVE_MAC_BYTESWAP)
-# define TAGLIB_BYTESWAP_32(x) OSSwapInt32(x)
-#elif defined(TAGLIB_HAVE_OPENBSD_BYTESWAP)
-# define TAGLIB_BYTESWAP_32(x) swap32(x)
-#endif
-
-#if defined(TAGLIB_HAVE_GCC_BYTESWAP_64)
-# define TAGLIB_BYTESWAP_64(x) __builtin_bswap64(x)
-#elif defined(TAGLIB_HAVE_MSC_BYTESWAP)
-# define TAGLIB_BYTESWAP_64(x) _byteswap_uint64(x)
-#elif defined(TAGLIB_HAVE_GLIBC_BYTESWAP)
-# define TAGLIB_BYTESWAP_64(x) __bswap_64(x)
-#elif defined(TAGLIB_HAVE_MAC_BYTESWAP)
-# define TAGLIB_BYTESWAP_64(x) OSSwapInt64(x)
-#elif defined(TAGLIB_HAVE_OPENBSD_BYTESWAP)
-# define TAGLIB_BYTESWAP_64(x) swap64(x)
-#endif
-
//! A namespace for all TagLib related classes and functions
/*!
* http://www.mozilla.org/MPL/ *
***************************************************************************/
+#include "config.h"
+
#include <iostream>
#include <cstdio>
#include <cstring>
+
+#if defined(HAVE_MSC_BYTESWAP)
+# include <stdlib.h>
+#elif defined(HAVE_GLIBC_BYTESWAP)
+# include <byteswap.h>
+#elif defined(HAVE_MAC_BYTESWAP)
+# include <libkern/OSByteOrder.h>
+#elif defined(HAVE_OPENBSD_BYTESWAP)
+# include <sys/endian.h>
+#endif
+
#include <tstring.h>
#include <tdebug.h>
template <>
ushort byteSwap<ushort>(ushort x)
{
-#ifdef TAGLIB_BYTESWAP_16
+#if defined(HAVE_GCC_BYTESWAP_16)
+
+ return __builtin_bswap16(x);
+
+#elif defined(HAVE_MSC_BYTESWAP)
+
+ return _byteswap_ushort(x);
- return TAGLIB_BYTESWAP_16(x);
+#elif defined(HAVE_GLIBC_BYTESWAP)
+
+ return __bswap_16(x);
+
+#elif defined(HAVE_MAC_BYTESWAP)
+
+ return OSSwapInt16(x);
+
+#elif defined(HAVE_OPENBSD_BYTESWAP)
+
+ return swap16(x);
#else
template <>
uint byteSwap<uint>(uint x)
{
-#ifdef TAGLIB_BYTESWAP_32
+#if defined(HAVE_GCC_BYTESWAP_32)
+
+ return __builtin_bswap32(x);
+
+#elif defined(HAVE_MSC_BYTESWAP)
- return TAGLIB_BYTESWAP_32(x);
+ return _byteswap_ulong(x);
+
+#elif defined(HAVE_GLIBC_BYTESWAP)
+
+ return __bswap_32(x);
+
+#elif defined(HAVE_MAC_BYTESWAP)
+
+ return OSSwapInt32(x);
+
+#elif defined(HAVE_OPENBSD_BYTESWAP)
+
+ return swap32(x);
#else
template <>
ulonglong byteSwap<ulonglong>(ulonglong x)
{
-#ifdef TAGLIB_BYTESWAP_64
+#if defined(HAVE_GCC_BYTESWAP_64)
+
+ return __builtin_bswap64(x);
+
+#elif defined(HAVE_MSC_BYTESWAP)
+
+ return _byteswap_uint64(x);
+
+#elif defined(HAVE_GLIBC_BYTESWAP)
+
+ return __bswap_64(x);
+
+#elif defined(HAVE_MAC_BYTESWAP)
+
+ return OSSwapInt64(x);
+
+#elif defined(HAVE_OPENBSD_BYTESWAP)
- return TAGLIB_BYTESWAP_64(x);
+ return swap64(x);
#else
T tmp;
::memcpy(&tmp, v.data() + offset, sizeof(T));
-#ifdef TAGLIB_LITTLE_ENDIAN
+#if SYSTEM_BYTEORDER == 1
const bool swap = mostSignificantByteFirst;
#else
const bool swap != mostSignificantByteFirst;
{
const size_t size = sizeof(T);
-#ifdef TAGLIB_LITTLE_ENDIAN
+#if SYSTEM_BYTEORDER == 1
const bool swap = mostSignificantByteFirst;
#else
const bool swap != mostSignificantByteFirst;
// This class assumes that std::basic_string<T> has a contiguous and null-terminated buffer.
+#include "config.h"
+
#include "tstring.h"
#include "tdebug.h"
#include "tstringlist.h"
#include <iostream>
#include <string.h>
-#ifdef TAGLIB_HAVE_STD_CODECVT
+#if defined(HAVE_MSC_BYTESWAP)
+# include <stdlib.h>
+#elif defined(HAVE_GLIBC_BYTESWAP)
+# include <byteswap.h>
+#elif defined(HAVE_MAC_BYTESWAP)
+# include <libkern/OSByteOrder.h>
+#elif defined(HAVE_OPENBSD_BYTESWAP)
+# include <sys/endian.h>
+#endif
+
+#ifdef HAVE_STD_CODECVT
# include <codecvt>
#else
# include "unicode.h"
{
inline TagLib::ushort byteSwap(TagLib::ushort x)
{
-#ifdef TAGLIB_BYTESWAP_16
+#if defined(HAVE_GCC_BYTESWAP_16)
+
+ return __builtin_bswap16(x);
+
+#elif defined(HAVE_MSC_BYTESWAP)
+
+ return _byteswap_ushort(x);
+
+#elif defined(HAVE_GLIBC_BYTESWAP)
+
+ return __bswap_16(x);
+
+#elif defined(HAVE_MAC_BYTESWAP)
+
+ return OSSwapInt16(x);
+
+#elif defined(HAVE_OPENBSD_BYTESWAP)
- return TAGLIB_BYTESWAP_16(x);
+ return swap16(x);
#else
- return((x >> 8) & 0xff) | ((x & 0xff) << 8);
+ return ((x >> 8) & 0xff) | ((x & 0xff) << 8);
#endif
}
void UTF16toUTF8(const wchar_t *src, size_t srcLength, char *dst, size_t dstLength)
{
-#ifdef TAGLIB_HAVE_STD_CODECVT
+#ifdef HAVE_STD_CODECVT
typedef std::codecvt_utf8_utf16<wchar_t> utf8_utf16_t;
void UTF8toUTF16(const char *src, size_t srcLength, wchar_t *dst, size_t dstLength)
{
-#ifdef TAGLIB_HAVE_STD_CODECVT
+#ifdef HAVE_STD_CODECVT
typedef std::codecvt_utf8_utf16<wchar_t> utf8_utf16_t;
}
}
-#ifdef TAGLIB_LITTLE_ENDIAN
+#if SYSTEM_BYTEORDER == 1
const String::Type String::WCharByteOrder = String::UTF16LE;
-#include "taglib_config.h"
+#include "config.h"
#ifdef _WIN32
#include <windows.h>
inline string testFilePath(const string &filename)
{
- return string(TAGLIB_TESTS_DIR "data/") + filename;
+ return string(TESTS_DIR "data/") + filename;
}
#define TEST_FILE_PATH_C(f) testFilePath(f).c_str()