Skip to content

Commit e1800fa

Browse files
committed
VS 2026 variable scope
1 parent 9d9c0ff commit e1800fa

File tree

1 file changed

+87
-75
lines changed

1 file changed

+87
-75
lines changed

apothecary/apothecary

Lines changed: 87 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)