3 # Wrapper that can be used as MONO_EXECUTABLE_WRAPPER in mono-wrapper when running MSVC build
4 # mono-sgen.exe. Simplify the setup of VS and MSVC toolchain, primarly when running MSVC build
5 # mono-sgen.exe as AOT compiler, since it needs to locate libraries as well as ClangC2 and linker
6 # from VS MSVC for corresponding architecture.
8 # NOTE, MSVC build mono-sgen.exe AOT compiler currently support 64-bit AMD codegen. mono-sgen-msvc.bat will ony setup
9 # amd64 versions of VS MSVC build environment and corresponding ClangC2 compiler.
11 # Optimization, only run full build environment when running mono-sgen.exe as AOT compiler.
12 # If not, just run mono-sgen.exe with supplied arguments.
14 function win32_format_path
{
15 local formatted_path
=$1
16 local host_win32_wsl
=0
17 local host_win32_cygwin
=0
19 host_uname
="$(uname -a)"
29 if [[ $host_win32_wsl = 1 ]] && [[ $1 == "/mnt/"* ]]; then
30 formatted_path
="$(wslpath -a -w "$1")"
31 elif [[ $host_win32_cygwin = 1 ]] && [[ $1 == "/cygdrive/"* ]]; then
32 formatted_path
="$(cygpath -a -w "$1")"
35 echo "$formatted_path"
38 MONO_SGEN_MSVC_SCRIPT_PATH
=$
(cd "$(dirname "$0")"; pwd)
40 MONO_AS_AOT_COMPILER
=0
41 if [[ "$@" =~ .
*--aot[^
-a-zA-Z0-9].
*|.
*--aot$
]]; then
42 MONO_AS_AOT_COMPILER
=1
45 if [[ $MONO_AS_AOT_COMPILER = 0 ]]; then
46 "$MONO_SGEN_MSVC_SCRIPT_PATH/mono-sgen.exe" "$@"
48 MONO_SGEN_MSVC_SCRIPT_PATH
=$
(win32_format_path
"$MONO_SGEN_MSVC_SCRIPT_PATH/mono-sgen-msvc.bat")
50 WINDOWS_CMD
=$
(which cmd.exe
)
51 if [ ! -f $WINDOWS_CMD ]; then
52 WINDOWS_CMD
=$WINDIR/System32
/cmd.exe
55 export MONO_AS_AOT_COMPILER
56 "$WINDOWS_CMD" /c
"$MONO_SGEN_MSVC_SCRIPT_PATH" "$@"