From ea9f7173ae912566e26e9ab7bf89a75b42a72f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Thu, 14 Nov 2013 11:58:37 +0200 Subject: [PATCH] configure: Avoid requiring c99wrap for working around msys path issues MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Msys is unable to convert unix style absolute paths to windows style paths when combined with certain multichar MSVC options such as -Fo. We used to work around this issue by passing them as two separate parameters separated by a space to c99wrap, which then mapped them back to the actual parameter format that MSVC uses. The only paths that actually are an issue are absolute unix style paths, and the only place such absolute paths are used with the output arguments (-Fo, -Fe, -Fi, -out:) are for the temp files within configure. By setting TMPDIR to . for msvc/icl builds, we never need to use absolute unix style paths for the file output, and we can use the actual proper form of the file output parameters. This avoids requiring the c99wrap wrapper for remapping the parameters for cases where the c99 converter isn't invoked at all (MSVC2013 and ICL). Signed-off-by: Martin Storsjö --- configure | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 05dbca7e6e..769eace84b 100755 --- a/configure +++ b/configure @@ -2282,29 +2282,33 @@ case "$toolchain" in msvc) # 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 + # support enough of C99 to build libav. 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" + cc_default="cl" else cc_default="c99wrap cl" fi - ld_default="c99wrap link" + ld_default="link" nm_default="dumpbin -symbols" ar_default="lib" target_os_default="win32" + # Use a relative path for TMPDIR. This makes sure all the + # ffconf temp files are written with a relative path, avoiding + # issues with msys/win32 path conversion for MSVC parameters + # such as -Fo or -out:. + TMPDIR=. ;; icl) - cc_default="c99wrap -noconv icl" - ld_default="c99wrap xilink" + cc_default="icl" + ld_default="xilink" nm_default="dumpbin -symbols" ar_default="xilib" target_os_default="win32" + TMPDIR=. ;; gcov) add_cflags -fprofile-arcs -ftest-coverage @@ -2660,15 +2664,13 @@ probe_cc(){ _DEPFLAGS='$(CPPFLAGS) $(CFLAGS) -showIncludes -Zs' _cflags_speed="-O2" _cflags_size="-O1" - # Nonstandard output options, to avoid msys path conversion issues. - # Relies on wrapper to remap it. if $_cc 2>&1 | grep -q Linker; then - _ld_o='-out $@' + _ld_o='-out:$@' else _ld_o='-Fe$@' fi - _cc_o='-Fo $@' - _cc_e='-P -Fi $@' + _cc_o='-Fo$@' + _cc_e='-P -Fi$@' _flags_filter=msvc_flags _ld_lib='lib%.a' _ld_path='-libpath:' @@ -2685,14 +2687,12 @@ probe_cc(){ # versions (tested) as well. _cflags_speed="-O2" _cflags_size="-O1 -Oi" # -O1 without -Oi miscompiles stuff - # Nonstandard output options, to avoid msys path conversion issues. - # Relies on wrapper to remap it. if $_cc 2>&1 | grep -q Linker; then - _ld_o='-out $@' + _ld_o='-out:$@' else _ld_o='-Fe$@' fi - _cc_o='-Fo $@' + _cc_o='-Fo$@' _cc_e='-P' _flags_filter=icl_flags _ld_lib='lib%.a'