diff --git a/README.md b/README.md index 00560c5..cb6df47 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +--- + +This fork adds build support for ARM platforms and fixes compiling issues + +--- + # libwav libwav is a simple and tiny C library for reading or writing PCM wave (.wav) diff --git a/include/wav.h b/include/wav.h index 1178622..decd6b3 100644 --- a/include/wav.h +++ b/include/wav.h @@ -8,7 +8,6 @@ * * - formats other than PCM, IEEE float and log-PCM * - extra chunks after the data chunk - * - big endian platforms (might be supported in the future) */ #ifndef __WAV_H__ @@ -20,6 +19,8 @@ extern "C" { #include #include +#include +#include #if !defined(_MSC_VER) || _MSC_VER >= 1800 #define WAV_INLINE static inline @@ -31,25 +32,6 @@ extern "C" { #define WAV_RESTRICT __restrict #endif -#if defined(__APPLE__) || defined(_MSC_VER) -typedef long long WavI64; -typedef unsigned long long WavU64; -typedef long long WavIntPtr; -typedef unsigned long long WavUIntPtr; -#else -#if defined(_WIN64) || defined(__x86_64) || defined(__amd64) -typedef long WavI64; -typedef unsigned long WavU64; -typedef long WavIntPtr; -typedef unsigned long WavUIntPtr; -#else -typedef long long WavI64; -typedef unsigned long long WavU64; -typedef int WavIntPtr; -typedef unsigned int WavUIntPtr; -#endif -#endif - #if defined(__cplusplus) && __cplusplus >= 201103L #define WAV_THREAD_LOCAL thread_local #elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L @@ -60,13 +42,16 @@ typedef unsigned int WavUIntPtr; #define WAV_THREAD_LOCAL __thread #endif -typedef int WavBool; -typedef signed char WavI8; -typedef unsigned char WavU8; -typedef short WavI16; -typedef unsigned short WavU16; -typedef int WavI32; -typedef unsigned int WavU32; +typedef bool WavBool; +typedef int8_t WavI8; +typedef uint8_t WavU8; +typedef int16_t WavI16; +typedef uint16_t WavU16; +typedef int32_t WavI32; +typedef uint32_t WavU32; +typedef int64_t WavI64; +typedef uint64_t WavU64; +typedef uintptr_t WavUIntPtr; enum { WAV_FALSE, diff --git a/src/wav.c b/src/wav.c index a5d04dd..9b7506f 100644 --- a/src/wav.c +++ b/src/wav.c @@ -6,10 +6,11 @@ #include "wav.h" -#if defined(__x86_64) || defined(__amd64) || defined(__i386__) || defined(__x86_64__) || defined(__LITTLE_ENDIAN__) || defined(CORE_CM7) +#if defined(__x86_64) || defined(__amd64) || defined(__i386__) || defined(__x86_64__) || defined(__LITTLE_ENDIAN__) || defined(CORE_CM7) || \ +(defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) #define WAV_ENDIAN_LITTLE 1 #elif defined(__BIG_ENDIAN__) -#define WAV_ENDIAN_BIG 1 +#define WAV_ENDIAN_LITTLE 0 #endif #if WAV_ENDIAN_LITTLE @@ -18,9 +19,7 @@ #define WAV_FACT_CHUNK_ID ((WavU32)'tcaf') #define WAV_DATA_CHUNK_ID ((WavU32)'atad') #define WAV_WAVE_ID ((WavU32)'EVAW') -#endif - -#if WAV_ENDIAN_BIG +#else #define WAV_RIFF_CHUNK_ID ((WavU32)'RIFF') #define WAV_FORMAT_CHUNK_ID ((WavU32)'fmt ') #define WAV_FACT_CHUNK_ID ((WavU32)'fact')