diff --git a/configure b/configure index 664fe94531..84ee548eba 100755 --- a/configure +++ b/configure @@ -2279,7 +2279,20 @@ case "$toolchain" in target_exec_args="--track-origins=yes --leak-check=full" ;; msvc) - cc_default="c99wrap cl" + # Check whether the current MSVC version needs the C99 converter. + # From MSVC 2013 (compiler major version 18) onwards, it does actually + # support enough of C99 to build libav, but we still need to use + # c99wrap for passing command line parameters with a space (for + # avoiding msys path mangling/conversion issues). Default to the new + # behaviour if the regexp was unable to match anything, since this + # successfully parses the version number of existing supported + # versions that require the converter (MSVC 2010 and 2012). + cl_major_ver=$(cl 2>&1 | sed -n 's/.*Version \([[:digit:]]\{1,\}\)\..*/\1/p') + if [ -z "$cl_major_ver" ] || [ $cl_major_ver -ge 18 ]; then + cc_default="c99wrap -noconv cl" + else + cc_default="c99wrap cl" + fi ld_default="c99wrap link" nm_default="dumpbin -symbols" ar_default="lib"