mirror of https://github.com/microsoft/vcpkg.git
80 lines
2.4 KiB
Diff
80 lines
2.4 KiB
Diff
--- a/build/make/configure.sh 2026-05-13 08:17:31.764191365 +0200
|
|
+++ b/build/make/configure.sh 2026-05-13 08:18:26.744873378 +0200
|
|
@@ -298,37 +298,71 @@
|
|
"$@" >>${logfile} 2>&1
|
|
}
|
|
|
|
+# Emit the compiler/linker output flag for the given file.
|
|
+# cl.exe (and clang-cl when driven in cl mode) require -Fo<obj> / -Fe<exe> with no separating space;
|
|
+# every other compiler uses the GCC-style -o <file>.
|
|
+_cc_basename() {
|
|
+ local _cc="${1##*/}"
|
|
+ _cc="${_cc##*\\}"
|
|
+ echo "${_cc%.exe}"
|
|
+}
|
|
+
|
|
+# Convert a path to native Windows form when the compiler is MSVC.
|
|
+# MSYS2 temporary paths like /tmp/vpx-conf-1234.o get translated by the MSYS layer to D:\tmp\... which does not exist.
|
|
+# cygpath -w produces the real Windows path (e.g. C:\msys64\tmp\...).
|
|
+_native_output_path() {
|
|
+ case "$(_cc_basename "${1}")" in
|
|
+ cl|clang-cl|link) cygpath -w "$2" ;;
|
|
+ *) echo "$2" ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+cc_obj_flag() {
|
|
+ case "$(_cc_basename "${CC}")" in
|
|
+ cl|clang-cl) echo "-Fo$(_native_output_path "${CC}" "$1")" ;;
|
|
+ *) echo "-o $1" ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
+cc_exe_flag() {
|
|
+ case "$(_cc_basename "${LD:-${CC}}")" in
|
|
+ cl|clang-cl) echo "-Fe$(_native_output_path "${LD:-${CC}}" "$1")" ;;
|
|
+ link) echo "/OUT:$(_native_output_path "${LD:-${CC}}" "$1")" ;;
|
|
+ *) echo "-o $1" ;;
|
|
+ esac
|
|
+}
|
|
+
|
|
check_cc() {
|
|
log check_cc "$@"
|
|
cat >${TMP_C}
|
|
log_file ${TMP_C}
|
|
- check_cmd ${CC} ${CFLAGS} "$@" -c -o ${TMP_O} ${TMP_C}
|
|
+ check_cmd ${CC} ${CFLAGS} "$@" -c $(cc_obj_flag ${TMP_O}) ${TMP_C}
|
|
}
|
|
|
|
check_cxx() {
|
|
log check_cxx "$@"
|
|
cat >${TMP_CC}
|
|
log_file ${TMP_CC}
|
|
- check_cmd ${CXX} ${CXXFLAGS} "$@" -c -o ${TMP_O} ${TMP_CC}
|
|
+ check_cmd ${CXX} ${CXXFLAGS} "$@" -c $(cc_obj_flag ${TMP_O}) ${TMP_CC}
|
|
}
|
|
|
|
check_cpp() {
|
|
log check_cpp "$@"
|
|
cat > ${TMP_C}
|
|
log_file ${TMP_C}
|
|
- check_cmd ${CC} ${CFLAGS} "$@" -E -o ${TMP_O} ${TMP_C}
|
|
+ check_cmd ${CC} ${CFLAGS} "$@" -E $(cc_obj_flag ${TMP_O}) ${TMP_C}
|
|
}
|
|
|
|
check_ld() {
|
|
log check_ld "$@"
|
|
check_cc $@ \
|
|
- && check_cmd ${LD} ${LDFLAGS} "$@" -o ${TMP_X} ${TMP_O} ${extralibs}
|
|
+ && check_cmd ${LD} ${LDFLAGS} "$@" $(cc_exe_flag ${TMP_X}) ${TMP_O} ${extralibs}
|
|
}
|
|
|
|
check_lib() {
|
|
log check_lib "$@"
|
|
check_cc $@ \
|
|
- && check_cmd ${LD} ${LDFLAGS} -o ${TMP_X} ${TMP_O} "$@" ${extralibs}
|
|
+ && check_cmd ${LD} ${LDFLAGS} $(cc_exe_flag ${TMP_X}) ${TMP_O} "$@" ${extralibs}
|
|
}
|
|
|
|
check_header(){
|