summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Barbato <lu_zero@gentoo.org>2015-06-05 15:07:06 +0200
committerLuca Barbato <lu_zero@gentoo.org>2015-06-08 13:27:49 +0200
commita6f19d6a9f8d1e08653d9d77581e8c823f4955c2 (patch)
treee7a996445a339f3d7a7109a9da0a4b3c3bcf2434
parentbc76c46943272515805d7ac48ca39f14826d1fed (diff)
configure: Support MSVC 2015
The C runtime C99 compatibility had been improved a lot and it now rejects some of the compatibility defines provided for the older versions. Many thanks to Ray for the time spent testing. Bug-Id: 864 CC: libav-stable@libav.org
-rwxr-xr-xconfigure22
-rw-r--r--libavutil/internal.h11
2 files changed, 16 insertions, 17 deletions
diff --git a/configure b/configure
index 18f0518db8..b10715f12f 100755
--- a/configure
+++ b/configure
@@ -3021,9 +3021,6 @@ probe_cc(){
_ld_path='-libpath:'
_flags='-nologo'
_cflags='-D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -Dinline=__inline -FIstdlib.h -Dstrtoll=_strtoi64'
- if [ $pfx = hostcc ]; then
- append _cflags -Dsnprintf=_snprintf
- fi
elif $_cc 2>&1 | grep -q Intel; then
_type=icl
_ident=$($_cc 2>&1 | head -n1)
@@ -3047,9 +3044,6 @@ probe_cc(){
# -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency
# with MSVC which enables it by default.
_cflags='-D_USE_MATH_DEFINES -FIstdlib.h -Dstrtoll=_strtoi64 -Qms0 -Qvec- -Qsimd- -GS'
- if [ $pfx = hostcc ]; then
- append _cflags -Dsnprintf=_snprintf
- fi
elif $_cc --version 2>/dev/null | grep -q ^cparser; then
_type=cparser
_ident=$($_cc --version | head -n1)
@@ -3743,6 +3737,16 @@ probe_libc(){
add_${pfx}cppflags -D__printf__=__gnu_printf__
elif check_${pfx}cpp_condition crtversion.h "defined _VC_CRT_MAJOR_VERSION"; then
eval ${pfx}libc_type=msvcrt
+ if check_${pfx}cpp_condition crtversion.h "_VC_CRT_MAJOR_VERSION < 14"; then
+ if [ "$pfx" = host_ ]; then
+ add_host_cppflags -Dsnprintf=_snprintf
+ else
+ add_compat strtod.o strtod=avpriv_strtod
+ add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
+ _snprintf=avpriv_snprintf \
+ vsnprintf=avpriv_vsnprintf
+ fi
+ fi
# The MSVC 2010 headers (Win 7.0 SDK) set _WIN32_WINNT to
# 0x601 by default unless something else is set by the user.
# This can easily lead to us detecting functions only present
@@ -3773,12 +3777,6 @@ case $libc_type in
bionic)
add_compat strtod.o strtod=avpriv_strtod
;;
- msvcrt)
- add_compat strtod.o strtod=avpriv_strtod
- add_compat msvcrt/snprintf.o snprintf=avpriv_snprintf \
- _snprintf=avpriv_snprintf \
- vsnprintf=avpriv_vsnprintf
- ;;
esac
# hacks for compiler/libc/os combinations
diff --git a/libavutil/internal.h b/libavutil/internal.h
index 800680a7f2..4264c4e6d5 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
@@ -130,11 +130,6 @@
#include "libm.h"
-#if defined(_MSC_VER)
-#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod")
-#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf")
-#endif
-
/**
* Return NULL if CONFIG_SMALL is true, otherwise the argument
* without modification. Used to disable the definition of strings
@@ -208,6 +203,12 @@ void avpriv_request_sample(void *avc,
const char *msg, ...) av_printf_format(2, 3);
#if HAVE_LIBC_MSVCRT
+#include <crtversion.h>
+#if defined(_VC_CRT_MAJOR_VERSION) && _VC_CRT_MAJOR_VERSION < 14
+#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod")
+#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf")
+#endif
+
#define avpriv_open ff_open
#endif