@@ -569,38 +569,6 @@ if [ "$TYPE" = "vs" ]; then
569569 fi
570570
571571
572- echo " Detecting Visual Studio edition..."
573-
574- if [ -z " ${DRIVE+x} " ]; then
575- export DRIVE=/c
576- fi
577-
578- if [ " ${VS_VER} " = " 17" ] || [ " ${VS_VER} " = " 18" ]; then
579- # VS 2022 / 2026+ → installed under C:\Program Files\
580- BASE_DIR=" ${DRIVE} /Program Files/Microsoft Visual Studio"
581- YEAR_PATH=" ${VS_YEAR} " # 2022 or 2026 etc.
582- else
583- # VS 2017 / 2019 → under Program Files (x86)
584- BASE_DIR=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio"
585- YEAR_PATH=" ${VS_YEAR_PATH:- ${VS_YEAR} } "
586- fi
587-
588- # Check in recommended priority order
589- if [ -d " ${BASE_DIR} /${YEAR_PATH} /Enterprise" ]; then
590- export VS_TYPE=" Enterprise"
591- elif [ -d " ${BASE_DIR} /${YEAR_PATH} /Professional" ]; then
592- export VS_TYPE=" Professional"
593- elif [ -d " ${BASE_DIR} /${YEAR_PATH} /Community" ]; then
594- export VS_TYPE=" Community"
595- else
596- echo " Warning: No Visual Studio ${VS_VER} edition found. Defaulting to Community."
597- export VS_TYPE=" Community"
598- fi
599-
600- echo " Using Visual Studio ${VS_VER} ${VS_TYPE} "
601-
602-
603-
604572 if [ -z ${MULTITHREADED_TYPE+x} ]; then
605573 MULTITHREADED_TYPE=" MD"
606574 fi
@@ -661,55 +629,99 @@ if [ "$TYPE" = "vs" ]; then
661629 export EXE_FLAGS=" /NODEFAULTLIB:libvcruntime.lib /DEFAULTLIB:ucrt.lib /DEFAULTLIB:msvcrt.lib"
662630 fi
663631
664- VS_BAT=" vcvarsall.bat"
665- if [ -z " ${WSL_DISTRO_NAME+x} " ]; then
666- export DRIVE=/c
667- else
668- export DRIVE=/mnt/c
669- fi
670- if [ -z ${VS_HOSTPLATFORM+x} ]; then
671- if [ ${VS_HOST} == " amd64" ]; then
672- VS_HOSTPLATFORM=Hostx64
673- elif [ ${VS_HOST} == " 86" ]; then
674- VS_HOSTPLATFORM=Hostx86
632+
633+ # Set DRIVE for WSL or native Windows
634+ if [ -z " ${WSL_DISTRO_NAME+x} " ]; then
635+ export DRIVE=/c
675636 else
676- # else if arm or arm64 which is same as VS_HOST
677- VS_HOSTPLATFORM=${VS_HOST}
637+ export DRIVE=/mnt/c
678638 fi
679- fi
680639
640+ # Default VS_TYPE to Community (will be overridden by detection if possible)
641+ if [ -z " ${VS_TYPE+x} " ]; then
642+ export VS_TYPE=" Community"
643+ fi
644+
645+ # Set Host Platform
646+ if [ -z " ${VS_HOSTPLATFORM+x} " ]; then
647+ if [ " ${VS_HOST} " = " amd64" ]; then
648+ VS_HOSTPLATFORM=" Hostx64"
649+ elif [ " ${VS_HOST} " = " 86" ]; then
650+ VS_HOSTPLATFORM=" Hostx86"
651+ else
652+ VS_HOSTPLATFORM=" ${VS_HOST} " # arm / arm64
653+ fi
654+ fi
655+
656+ echo " Detecting Visual Studio ${VS_VER} edition..."
681657
682- if [ -z ${VS_BASE_PATH+x} ]; then
683- if [ " ${VS_VER} " = " 15" ]; then
684- VS_BASE_PATH=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio/2017/$VS_TYPE "
685- VS_YEAR=2017
686- VC_VERSION=140
687- VS_BAT=" vcvars$ARCH .bat"
658+ if [ " ${VS_VER} " = " 17" ] || [ " ${VS_VER} " = " 18" ]; then
659+ # VS 2022 / 2026+ → under Program Files\
660+ BASE_DIR=" ${DRIVE} /Program Files/Microsoft Visual Studio"
661+ YEAR_PATH=" ${VS_VER} " # We'll use 2022 or 18 directly for folder name
662+ elif [ " ${VS_VER} " = " 15" ]; then
663+ BASE_DIR=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio"
664+ YEAR_PATH=" 2017"
688665 elif [ " ${VS_VER} " = " 16" ]; then
689- VS_YEAR_PATH=2019
690- if [ -d " ${DRIVE} /Program Files (x86)/Microsoft Visual Studio/$VS_YEAR_PATH /$VS_TYPE " ]; then
691- VS_YEAR_PATH=2019
692- VC_VERSION=142
693- else
694- VS_YEAR_PATH=2019
695- VC_VERSION=142
696- fi
697- VS_BASE_PATH=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio/$VS_YEAR_PATH /$VS_TYPE "
698- VS_YEAR=$VS_YEAR_PATH
699- elif [ " ${VS_VER} " = " 17" ]; then
700- VS_BASE_PATH=" ${DRIVE} /Program Files/Microsoft Visual Studio/2022/$VS_TYPE "
701- export VS_BASE_PATH_CLANG=" ${DRIVE} /Program Files/Microsoft Visual Studio/2022/"
702- VS_YEAR=2022
703- VC_VERSION=143
704- VS_BAT=" vcvars$ARCH .bat"
705- elif [ " ${VS_VER} " = " 18" ]; then
706- VS_BASE_PATH=" ${DRIVE} /Program Files/Microsoft Visual Studio/18/$VS_TYPE "
707- export VS_BASE_PATH_CLANG=" ${DRIVE} /Program Files/Microsoft Visual Studio/18/"
708- VS_YEAR=2026
709- VC_VERSION=144
710- VS_BAT=" vcvars$ARCH .bat"
666+ BASE_DIR=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio"
667+ YEAR_PATH=" 2019"
668+ else
669+ BASE_DIR=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio"
670+ YEAR_PATH=" ${VS_VER} "
711671 fi
712- fi
672+
673+ # Check editions in priority order
674+ if [ -d " ${BASE_DIR} /${YEAR_PATH} /Enterprise" ]; then
675+ export VS_TYPE=" Enterprise"
676+ elif [ -d " ${BASE_DIR} /${YEAR_PATH} /Professional" ]; then
677+ export VS_TYPE=" Professional"
678+ elif [ -d " ${BASE_DIR} /${YEAR_PATH} /Community" ]; then
679+ export VS_TYPE=" Community"
680+ else
681+ echo " Warning: No Visual Studio ${VS_VER} edition found. Defaulting to Community."
682+ export VS_TYPE=" Community"
683+ fi
684+
685+ echo " → Using Visual Studio ${VS_VER} ${VS_TYPE} "
686+
687+ if [ -z ${VS_BASE_PATH+x} ]; then
688+ case " ${VS_VER} " in
689+ 15)
690+ VS_BASE_PATH=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio/2017/${VS_TYPE} "
691+ VS_YEAR=2017
692+ VC_VERSION=140
693+ VS_BAT=" vcvars${ARCH} .bat"
694+ ;;
695+
696+ 16)
697+ VS_BASE_PATH=" ${DRIVE} /Program Files (x86)/Microsoft Visual Studio/2019/${VS_TYPE} "
698+ VS_YEAR=2019
699+ VC_VERSION=142
700+ VS_BAT=" vcvars${ARCH} .bat"
701+ ;;
702+
703+ 17)
704+ VS_BASE_PATH=" ${DRIVE} /Program Files/Microsoft Visual Studio/2022/${VS_TYPE} "
705+ export VS_BASE_PATH_CLANG=" ${DRIVE} /Program Files/Microsoft Visual Studio/2022/"
706+ VS_YEAR=2022
707+ VC_VERSION=143
708+ VS_BAT=" vcvars${ARCH} .bat"
709+ ;;
710+
711+ 18)
712+ VS_BASE_PATH=" ${DRIVE} /Program Files/Microsoft Visual Studio/18/${VS_TYPE} "
713+ export VS_BASE_PATH_CLANG=" ${DRIVE} /Program Files/Microsoft Visual Studio/18/"
714+ VS_YEAR=2026
715+ VC_VERSION=144
716+ VS_BAT=" vcvars${ARCH} .bat"
717+ ;;
718+
719+ * )
720+ echo " Error: Unsupported Visual Studio version: ${VS_VER} "
721+ ;;
722+ esac
723+ fi
724+
713725 if [ $ARCH == 32 ] ; then
714726 export PLATFORM=" Win32"
715727 export BUILD_PLATFORM=" x86"
0 commit comments