diff options
author | Erik de Castro Lopo <erikd@mega-nerd.com> | 2013-03-06 22:17:46 +1100 |
---|---|---|
committer | Erik de Castro Lopo <erikd@mega-nerd.com> | 2013-03-06 22:17:51 +1100 |
commit | a4c321e492748db0a7e38240699ba420ba88e01c (patch) | |
tree | d8179a7c86037de5b7d0cbca0b5131a647621e70 | |
parent | 91790ef965553fd6d76e1f51b55dc4de3b54ad4b (diff) | |
download | flac-a4c321e492748db0a7e38240699ba420ba88e01c.tar.gz |
Large patch from Ben Allison fixing the MSVC build.
Patch tweaked a little to fix Linux build and clean up minor problems.
-rw-r--r-- | examples/cpp/decode/file/main.cpp | 4 | ||||
-rw-r--r-- | examples/cpp/encode/file/main.cpp | 4 | ||||
-rw-r--r-- | include/share/alloc.h | 3 | ||||
-rw-r--r-- | include/share/compat.h | 35 | ||||
-rw-r--r-- | src/flac/analyze.c | 4 | ||||
-rw-r--r-- | src/libFLAC/include/private/bitmath.h | 1 | ||||
-rw-r--r-- | src/libFLAC/lpc.c | 3 | ||||
-rw-r--r-- | src/libFLAC/stream_decoder.c | 4 | ||||
-rw-r--r-- | src/test_libFLAC++/metadata_manip.cpp | 6 | ||||
-rw-r--r-- | src/test_streams/main.c | 5 |
10 files changed, 59 insertions, 10 deletions
diff --git a/examples/cpp/decode/file/main.cpp b/examples/cpp/decode/file/main.cpp index b991d681..3ebe89a2 100644 --- a/examples/cpp/decode/file/main.cpp +++ b/examples/cpp/decode/file/main.cpp @@ -31,10 +31,8 @@ #include <stdio.h> #include <stdlib.h> -#define __STDC_FORMAT_MACROS -#include <inttypes.h> - #include "FLAC++/decoder.h" +#include "share/compat.h" static FLAC__uint64 total_samples = 0; static unsigned sample_rate = 0; diff --git a/examples/cpp/encode/file/main.cpp b/examples/cpp/encode/file/main.cpp index a83de051..8661c877 100644 --- a/examples/cpp/encode/file/main.cpp +++ b/examples/cpp/encode/file/main.cpp @@ -32,11 +32,9 @@ #include <stdlib.h> #include <string.h> -#define __STDC_FORMAT_MACROS -#include <inttypes.h> - #include "FLAC++/metadata.h" #include "FLAC++/encoder.h" +#include "share/compat.h" #include <cstring> diff --git a/include/share/alloc.h b/include/share/alloc.h index 7aa17f79..8fc17f76 100644 --- a/include/share/alloc.h +++ b/include/share/alloc.h @@ -45,11 +45,12 @@ #include <stdint.h> /* for SIZE_MAX in case limits.h didn't get it */ #endif #include <stdlib.h> /* for size_t, malloc(), etc */ +#include "share/compat.h" #ifndef SIZE_MAX # ifndef SIZE_T_MAX # ifdef _MSC_VER -# define SIZE_T_MAX UINT_MAX /* What happens on 64 bit windows? */ +# define SIZE_T_MAX SIZE_MAX # else # error # endif diff --git a/include/share/compat.h b/include/share/compat.h index 983b045a..3bdf61ad 100644 --- a/include/share/compat.h +++ b/include/share/compat.h @@ -36,6 +36,9 @@ * It is assumed that this header will be included after "config.h". */ +#ifndef FLAC__SHARE__COMPAT_H +#define FLAC__SHARE__COMPAT_H + #if defined _WIN32 && !defined __CYGWIN__ /* where MSVC puts unlink() */ # include <io.h> @@ -56,6 +59,7 @@ #endif #if HAVE_INTTYPES_H +#define __STDC_FORMAT_MACROS #include <inttypes.h> #endif @@ -65,7 +69,10 @@ #endif #if defined(_MSC_VER) +#if _MSC_VER < 1500 +/* Visual Studio 2008 has restrict. */ #define restrict __restrict +#endif #define inline __inline #endif @@ -105,3 +112,31 @@ #include <utime.h> /* for utime() */ #include <unistd.h> /* for chown(), unlink() */ #endif + +#if defined _MSC_VER +# if _MSC_VER >= 1600 +/* Visual Studio 2010 has decent C99 support */ +# include <stdint.h> +# define PRIu64 "llu" +# define PRId64 "lld" +# define PRIx64 "llx" +# else +# include <limits.h> +# ifndef UINT32_MAX +# define UINT32_MAX _UI32_MAX +# endif + typedef unsigned __int64 uint64_t; + typedef unsigned __int32 uint32_t; + typedef unsigned __int16 uint16_t; + typedef unsigned __int8 uint8_t; + typedef __int64 int64_t; + typedef __int32 int32_t; + typedef __int16 int16_t; + typedef __int8 int8_t; +# define PRIu64 "I64u" +# define PRId64 "I64d" +# define PRIx64 "I64x" +# endif +#endif /* defined _MSC_VER */ + +#endif /* FLAC__SHARE__COMPAT_H */ diff --git a/src/flac/analyze.c b/src/flac/analyze.c index 038ff323..51522932 100644 --- a/src/flac/analyze.c +++ b/src/flac/analyze.c @@ -25,10 +25,12 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> -#include <inttypes.h> + #include "FLAC/all.h" #include "analyze.h" +#include "share/compat.h" + typedef struct { FLAC__int32 residual; unsigned count; diff --git a/src/libFLAC/include/private/bitmath.h b/src/libFLAC/include/private/bitmath.h index 4e60f78b..05daba1e 100644 --- a/src/libFLAC/include/private/bitmath.h +++ b/src/libFLAC/include/private/bitmath.h @@ -36,6 +36,7 @@ /* for CHAR_BIT */ #include <limits.h> +#include "share/compat.h" #if defined(_MSC_VER) && (_MSC_VER >= 1400) #include <intrin.h> /* for _BitScanReverse* */ diff --git a/src/libFLAC/lpc.c b/src/libFLAC/lpc.c index 66a68999..5f1ff998 100644 --- a/src/libFLAC/lpc.c +++ b/src/libFLAC/lpc.c @@ -34,9 +34,10 @@ #endif #include <math.h> -#include <inttypes.h> + #include "FLAC/assert.h" #include "FLAC/format.h" +#include "share/compat.h" #include "private/bitmath.h" #include "private/lpc.h" #include "private/macros.h" diff --git a/src/libFLAC/stream_decoder.c b/src/libFLAC/stream_decoder.c index 789db1b6..ec36510f 100644 --- a/src/libFLAC/stream_decoder.c +++ b/src/libFLAC/stream_decoder.c @@ -55,7 +55,11 @@ /* technically this should be in an "export.c" but this is convenient enough */ +#ifdef FLAC_API_SUPPORTS_OGG_FLAC FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC = FLAC__HAS_OGG ; +#else +FLAC_API int FLAC_API_SUPPORTS_OGG_FLAC = 0 ; +#endif /*********************************************************************** diff --git a/src/test_libFLAC++/metadata_manip.cpp b/src/test_libFLAC++/metadata_manip.cpp index f278e53d..5cb2cf8e 100644 --- a/src/test_libFLAC++/metadata_manip.cpp +++ b/src/test_libFLAC++/metadata_manip.cpp @@ -24,8 +24,14 @@ #include <stdlib.h> /* for malloc() */ #include <string.h> /* for memcpy()/memset() */ #include <sys/types.h> /* some flavors of BSD (like OS X) require this to get time_t */ +#ifdef _MSC_VER +#include <sys/utime.h> +#else #include <utime.h> /* for utime() */ +#endif +#if !defined _MSC_VER && !defined __MINGW32__ && !defined __EMX__ #include <unistd.h> /* for chown(), unlink() */ +#endif #include <sys/stat.h> /* for stat(), maybe chmod() */ #include "FLAC/assert.h" #include "FLAC++/decoder.h" diff --git a/src/test_streams/main.c b/src/test_streams/main.c index 45d8d21a..0c87e7f1 100644 --- a/src/test_streams/main.c +++ b/src/test_streams/main.c @@ -902,8 +902,11 @@ static FLAC__bool generate_noisy_sine(void) sample += sin (2.0 * k * M_PI * 1.0 / 32.0); sample *= 0.4; - +#if !defined _MSC_VER write_little_endian_int16(f, lrintf(sample * 32700.0)); +#else + write_little_endian_int16(f, (FLAC__int16)(sample * 32700.0)); +#endif }; fclose(f); |