Commit ea9f7173 authored by Martin Storsjö's avatar Martin Storsjö
Browse files

configure: Avoid requiring c99wrap for working around msys path issues



Msys is unable to convert unix style absolute paths to windows style
paths when combined with certain multichar MSVC options such as
-Fo<file>. 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: default avatarMartin Storsjö <martin@martin.st>
parent a7b87ca9
......@@ -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<file> or -out:<file>.
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'
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment