1
0
Fork 0
mirror of https://github.com/VSadov/Satori.git synced 2025-06-09 17:44:48 +09:00

Ensure that the correct VC++ toolset is selected in all build environments (#104763)

* Second attempt at fixing ARM64 cross compilation

* Update eng/native/init-vs-env.cmd

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

* Remove x86 branch

* Revert to using __HostArch when determining toolset.

* Address feedback.

* Update eng/native/init-vs-env.cmd

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

* Update eng/native/init-vs-env.cmd

Co-authored-by: Jan Kotas <jkotas@microsoft.com>

* Revert "Update eng/native/init-vs-env.cmd"

This reverts commit a1b95c1942c244ae10f2113fc89dfa821dba4fff.

* Revert "Update eng/native/init-vs-env.cmd"

This reverts commit 1eeadb38d28a4f484382ae345e57684f8c56da6e.

* Set the correct arm64 assembler host

---------

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
This commit is contained in:
Eirik Tsarpalis 2024-07-13 05:40:18 +01:00 committed by GitHub
parent 53a362469f
commit 369db9a68e
Signed by: github
GPG key ID: B5690EEEBB952194
3 changed files with 27 additions and 33 deletions

View file

@ -976,27 +976,13 @@ endif()
# Ensure other tools are present
if (CLR_CMAKE_HOST_WIN32)
if(CLR_CMAKE_HOST_ARCH_ARM)
# Explicitly specify the assembler to be used for Arm32 compile
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX86\\arm\\armasm.exe" CMAKE_ASM_COMPILER)
set(CMAKE_ASM_MASM_COMPILER ${CMAKE_ASM_COMPILER})
message("CMAKE_ASM_MASM_COMPILER explicitly set to: ${CMAKE_ASM_MASM_COMPILER}")
# Enable generic assembly compilation to avoid CMake generate VS proj files that explicitly
# use ml[64].exe as the assembler.
enable_language(ASM)
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug "")
set(CMAKE_ASM_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL "")
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> -g <INCLUDES> <FLAGS> -o <OBJECT> <SOURCE>")
elseif(CLR_CMAKE_HOST_ARCH_ARM64)
if(CLR_CMAKE_HOST_ARCH_ARM64)
# Explicitly specify the assembler to be used for Arm64 compile
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX86\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "ARM64")
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\Hostarm64\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
else()
file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}\\bin\\HostX64\\arm64\\armasm64.exe" CMAKE_ASM_COMPILER)
endif()
set(CMAKE_ASM_MASM_COMPILER ${CMAKE_ASM_COMPILER})
message("CMAKE_ASM_MASM_COMPILER explicitly set to: ${CMAKE_ASM_MASM_COMPILER}")

View file

@ -4,10 +4,17 @@
:: as an argument, it also initializes VC++ build environment and CMakePath.
set "__VCBuildArch="
if /i "%~1" == "x86" (set __VCBuildArch=x86)
if /i "%~1" == "x64" (set __VCBuildArch=x86_amd64)
if /i "%~1" == "arm64" (if /i "%PROCESSOR_ARCHITECTURE%" == "ARM64" (set __VCBuildArch=arm64) else (set __VCBuildArch=x86_arm64))
if /i "%~1" == "wasm" (if /i "%PROCESSOR_ARCHITECTURE%" == "ARM64" (set __VCBuildArch=arm64) else (set __VCBuildArch=x86_amd64))
if /i "%PROCESSOR_ARCHITECTURE%" == "ARM64" (
if /i "%~1" == "x64" ( set __VCBuildArch=arm64_amd64 )
if /i "%~1" == "x86" ( set __VCBuildArch=arm64_x86 )
if /i "%~1" == "arm64" ( set __VCBuildArch=arm64 )
if /i "%~1" == "wasm" ( set __VCBuildArch=arm64 )
) else (
if /i "%~1" == "x64" ( set __VCBuildArch=amd64 )
if /i "%~1" == "x86" ( set __VCBuildArch=amd64_x86 )
if /i "%~1" == "arm64" ( set __VCBuildArch=amd64_arm64 )
if /i "%~1" == "wasm" ( set __VCBuildArch=amd64 )
)
:: Default to highest Visual Studio version available that has Visual C++ tools.
::