diff --git a/docs/workflow/building/coreclr/README.md b/docs/workflow/building/coreclr/README.md index 970e4c2860894d..a9ddf55587034b 100644 --- a/docs/workflow/building/coreclr/README.md +++ b/docs/workflow/building/coreclr/README.md @@ -50,7 +50,7 @@ As described in the [workflow README](/docs/workflow/README.md#building-the-repo Once you have both subsets built, you can generate the *Core_Root*, which as mentioned above, is the most flexible way of testing your changes. You can generate the *Core_Root* by running the following command, assuming a *Checked* clr build on an x64 machine: ```bash -./src/tests/build.sh -x64 -checked -generatelayoutonly +./src/tests/build.sh -arch x64 -checked -generatelayoutonly ``` Since this is more related to testing, you can find the full details and instructions in the CoreCLR testing doc [over here](/docs/workflow/testing/coreclr/testing.md). diff --git a/docs/workflow/building/coreclr/cross-building.md b/docs/workflow/building/coreclr/cross-building.md index 7200685965a25d..ba4df46f606c91 100644 --- a/docs/workflow/building/coreclr/cross-building.md +++ b/docs/workflow/building/coreclr/cross-building.md @@ -129,7 +129,7 @@ The Crossgen2 JIT tools are used to run Crossgen2 on libraries built during the However, you might find yourself needing to (re)build them because either you made changes to them, or you built CoreCLR in a different way using `build-runtime.sh` instead of the usual default script at the root of the repo. To build these tools, you need to run the `src/coreclr/build-runtime.sh` script, and pass the `-hostarch` flag with the architecture of the host machine, alongside the `-component crosscomponents` flag to specify that you only want to build the cross-targeting tools. Retaking our previous example of building for ARM64 using an x64 Linux machine: ```bash -./src/coreclr/build-runtime.sh -arm64 -hostarch x64 -component crosscomponents -cmakeargs "-DCLR_CROSS_COMPONENTS_BUILD=1" +./src/coreclr/build-runtime.sh -arch arm64 -hostarch x64 -component crosscomponents -cmakeargs "-DCLR_CROSS_COMPONENTS_BUILD=1" ``` The output of running this command is placed in `artifacts/bin/coreclr/linux../`. For our example, it would be `artifacts/bin/coreclr/linux.arm64.Release/x64`. @@ -137,7 +137,7 @@ The output of running this command is placed in `artifacts/bin/coreclr/linux.-arm6 To build the runtime tests for iOS with CoreCLR, run the following command from ``: ```bash -./src/tests/build.sh -os arm64 -p:UseMonoRuntime=false +./src/tests/build.sh -os -arch arm64 -p:UseMonoRuntime=false ``` ## Debugging the runtime and the sample app diff --git a/docs/workflow/testing/libraries/testing-apple.md b/docs/workflow/testing/libraries/testing-apple.md index 2f6f7128be4d64..f3b7827922cb2b 100644 --- a/docs/workflow/testing/libraries/testing-apple.md +++ b/docs/workflow/testing/libraries/testing-apple.md @@ -96,7 +96,7 @@ Currently, only the `tracing/eventpipe` subset of runtime tests is enabled on iO The subset of runtime tests can be built by executing the following shell script: ```sh ./build.sh -arch arm64 -os ios -s mono+libs -c Release -./src/tests/build.sh os ios arm64 Release -mono tree tracing/eventpipe /p:LibrariesConfiguration=Release +./src/tests/build.sh -os ios -arch arm64 Release -mono tree tracing/eventpipe /p:LibrariesConfiguration=Release ``` The script generates an Apple bundle that can be executed using Xcode or XHarness. diff --git a/docs/workflow/testing/mono/testing.md b/docs/workflow/testing/mono/testing.md index 8bfc375f03cbbf..053cbb37dccd19 100644 --- a/docs/workflow/testing/mono/testing.md +++ b/docs/workflow/testing/mono/testing.md @@ -62,7 +62,7 @@ The last few lines of the build log should contain something like this: ### Android: Build the runtime tests for Android x64/ARM64 ``` -$(REPO_ROOT)/src/tests/build.sh -mono os android +$(REPO_ROOT)/src/tests/build.sh -mono -os android -arch ``` Run one test wrapper from repo root diff --git a/eng/native/build-commons.sh b/eng/native/build-commons.sh index 2a036677feaf66..5e94540ee12b4e 100755 --- a/eng/native/build-commons.sh +++ b/eng/native/build-commons.sh @@ -263,6 +263,7 @@ usage() echo "" echo "BuildArch can be: -arm, -armv6, -armel, -arm64, -loongarch64, -riscv64, -s390x, -ppc64le, x64, x86, -wasm" echo "BuildType can be: -debug, -checked, -release" + echo "-arch: target architecture (defaults to running architecture); alternative to the BuildArch flags above." echo "-os: target OS (defaults to running OS)" echo "-bindir: output directory (defaults to $__ProjectRoot/artifacts)" echo "-ci: indicates if this is a CI build." @@ -495,6 +496,16 @@ while :; do __TargetArch=ppc64le ;; + arch|-arch) + if [[ -n "$2" ]]; then + __TargetArch=$(echo "$2" | tr '[:upper:]' '[:lower:]') + shift + else + echo "ERROR: 'arch' requires a non-empty option argument" + exit 1 + fi + ;; + os|-os) if [[ -n "$2" ]]; then __TargetOS=$(echo "$2" | tr '[:upper:]' '[:lower:]') diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml index f88692190cc221..4d389c5dccea0f 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml @@ -63,21 +63,21 @@ steps: - ${{ if eq(parameters.archType, 'x64') }}: - ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_aot ${{ parameters.buildConfig }} ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }} + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_aot ${{ parameters.buildConfig }} -arch ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }} displayName: "AOT compile CoreCLR tests" target: ${{ coalesce(parameters.llvmAotStepContainer, parameters.container) }} - ${{ if in(parameters.runtimeVariant, 'llvmfullaot', 'minifullaot') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:1 + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} -arch ${{ parameters.archType }} /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:1 displayName: "AOT compile CoreCLR tests" target: ${{ coalesce(parameters.llvmAotStepContainer, parameters.container) }} - ${{ if eq(parameters.archType, 'arm64') }}: - ${{ if eq(parameters.runtimeVariant, 'llvmaot') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_aot ${{ parameters.buildConfig }} ${{ parameters.archType }} cross /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:2 + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_aot ${{ parameters.buildConfig }} -arch ${{ parameters.archType }} cross /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:2 displayName: "AOT cross-compile CoreCLR tests" env: __MonoToolPrefix: aarch64-linux-gnu- - ${{ if in(parameters.runtimeVariant, 'llvmfullaot', 'minifullaot') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} ${{ parameters.archType }} cross /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:2 + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot mono_fullaot ${{ parameters.buildConfig }} -arch ${{ parameters.archType }} cross /p:RuntimeVariant=${{ parameters.runtimeVariant }} -maxcpucount:2 displayName: "AOT cross-compile CoreCLR tests" env: __MonoToolPrefix: aarch64-linux-gnu- diff --git a/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml b/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml index 1b1660693d6e03..e3aebf807e234a 100644 --- a/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml +++ b/eng/pipelines/common/templates/runtimes/build-runtime-tests.yml @@ -16,14 +16,14 @@ parameters: steps: - ${{ if eq(parameters.osGroup, 'windows') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(crossArg) ci ${{ parameters.archType }} $(buildConfigUpper) $(_nativeSanitizersArg) $(priorityArg) $(runtimeFlavorArgs) ${{ parameters.testBuildArgs }} $(runtimeVariantArg) $(librariesConfigurationArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(crossArg) ci -arch ${{ parameters.archType }} $(buildConfigUpper) $(_nativeSanitizersArg) $(priorityArg) $(runtimeFlavorArgs) ${{ parameters.testBuildArgs }} $(runtimeVariantArg) $(librariesConfigurationArg) displayName: Build Tests env: ${{ if eq(parameters.buildAllTestsAsStandalone, true) }}: BuildAllTestsAsStandalone: true - ${{ if ne(parameters.osGroup, 'windows') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(crossArg) ci os ${{ parameters.osGroup }} ${{ parameters.archType }} $(buildConfigUpper) $(_nativeSanitizersArg) $(priorityArg) $(runtimeFlavorArgs) ${{ parameters.testBuildArgs }} $(runtimeVariantArg) $(librariesConfigurationArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(crossArg) ci os ${{ parameters.osGroup }} -arch ${{ parameters.archType }} $(buildConfigUpper) $(_nativeSanitizersArg) $(priorityArg) $(runtimeFlavorArgs) ${{ parameters.testBuildArgs }} $(runtimeVariantArg) $(librariesConfigurationArg) displayName: Build Tests env: ${{ if eq(parameters.buildAllTestsAsStandalone, true) }}: diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml index 5faf51570288f4..22bfe8d001ad49 100644 --- a/eng/pipelines/common/templates/runtimes/build-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml @@ -111,7 +111,7 @@ jobs: displayName: Disk Usage before Build # Build managed test components - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout $(buildConfig) $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testFilterArg) ci /p:TargetOS=AnyOS + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)Managed allTargets skipnative skipgeneratelayout $(buildConfig) -arch $(archType) $(runtimeFlavorArgs) $(crossArg) $(priorityArg) $(testFilterArg) ci /p:TargetOS=AnyOS displayName: Build managed test components - ${{ if in(parameters.osGroup, 'osx', 'ios', 'tvos') }}: diff --git a/eng/pipelines/common/templates/runtimes/run-test-job.yml b/eng/pipelines/common/templates/runtimes/run-test-job.yml index 34351420b99805..7068107295653e 100644 --- a/eng/pipelines/common/templates/runtimes/run-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/run-test-job.yml @@ -247,13 +247,13 @@ jobs: # and directly unzip them there after download). Unfortunately the logic to copy # the native artifacts to the final test folders is dependent on availability of the # managed test artifacts. This step also generates the final test execution scripts. - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(logRootNameArg)Native $(testFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg) $(extraBuildArgs) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) copynativeonly $(logRootNameArg)Native $(testFilterArg) $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) -arch $(archType) $(priorityArg) $(librariesOverrideArg) $(codeFlowEnforcementArg) $(extraBuildArgs) displayName: Copy native test components to test output folder # Compose the Core_Root folder containing all artifacts needed for running # CoreCLR tests. This step also compiles the framework using Crossgen2 # in ReadyToRun jobs. - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) -ci $(extraBuildArgs) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) generatelayoutonly $(logRootNameArg)Layout $(runtimeFlavorArgs) $(crossgenArg) $(buildConfig) -arch $(archType) $(crossArg) $(priorityArg) $(librariesOverrideArg) $(runtimeVariantArg) -ci $(extraBuildArgs) displayName: Generate CORE_ROOT # Build a Mono LLVM AOT cross-compiler for non-amd64 targets (in this case, just arm64) @@ -270,10 +270,10 @@ jobs: - ${{ if and(eq(parameters.runtimeFlavor, 'mono'), or(eq(parameters.runtimeVariant, 'llvmaot'), eq(parameters.runtimeVariant, 'llvmfullaot'))) }}: - ${{ if eq(parameters.archType, 'x64') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot $(monoAotBuildshCommand) $(buildConfig) $(archType) $(runtimeVariantArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot $(monoAotBuildshCommand) $(buildConfig) -arch $(archType) $(runtimeVariantArg) displayName: "LLVM AOT compile CoreCLR tests" - ${{ if eq(parameters.archType, 'arm64') }}: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot $(monoAotBuildshCommand) $(buildConfig) $(archType) cross $(runtimeVariantArg) -maxcpucount:2 + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(logRootNameArg)MonoAot $(monoAotBuildshCommand) $(buildConfig) -arch $(archType) cross $(runtimeVariantArg) -maxcpucount:2 displayName: "LLVM AOT cross-compile CoreCLR tests" env: __MonoToolPrefix: aarch64-linux-gnu- diff --git a/eng/pipelines/coreclr/exploratory.yml b/eng/pipelines/coreclr/exploratory.yml index 408565ab0dc97d..4c8aa0a32c4512 100644 --- a/eng/pipelines/coreclr/exploratory.yml +++ b/eng/pipelines/coreclr/exploratory.yml @@ -41,7 +41,7 @@ extends: buildArgs: -s clr+libs -c $(_BuildConfig) -lc Release timeoutInMinutes: 360 postBuildSteps: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(_BuildConfig) $(archType) $(crossArg) generatelayoutonly + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(_BuildConfig) -arch $(archType) $(crossArg) generatelayoutonly displayName: Create Core_Root condition: succeeded() - template: /eng/pipelines/coreclr/templates/jit-exploratory-steps.yml diff --git a/eng/pipelines/coreclr/templates/build-native-test-assets-step.yml b/eng/pipelines/coreclr/templates/build-native-test-assets-step.yml index 3c2384e1e3c448..743f1b663861e0 100644 --- a/eng/pipelines/coreclr/templates/build-native-test-assets-step.yml +++ b/eng/pipelines/coreclr/templates/build-native-test-assets-step.yml @@ -4,7 +4,7 @@ parameters: extraBuildArgs: '' steps: - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipmanaged skipgeneratelayout $(nativeTestArtifactConfig) $(archType) $(crossArg) $(priorityArg) ${{ parameters.extraBuildArgs }} ${{ parameters.compiler }} + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) skipmanaged skipgeneratelayout $(nativeTestArtifactConfig) -arch $(archType) $(crossArg) $(priorityArg) ${{ parameters.extraBuildArgs }} ${{ parameters.compiler }} displayName: Build native test components - template: /eng/pipelines/common/upload-artifact-step.yml parameters: diff --git a/eng/pipelines/coreclr/templates/crossgen2-comparison-build-job.yml b/eng/pipelines/coreclr/templates/crossgen2-comparison-build-job.yml index 1d0163ba4c55b3..bdd6c06aff25cd 100644 --- a/eng/pipelines/coreclr/templates/crossgen2-comparison-build-job.yml +++ b/eng/pipelines/coreclr/templates/crossgen2-comparison-build-job.yml @@ -95,7 +95,7 @@ jobs: displayName: 'product build' # Populate Core_Root - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) $(crossArg) generatelayoutonly + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) -arch $(archType) $(crossArg) generatelayoutonly displayName: Populate Core_Root # Create work item directory and populate with assemblies diff --git a/eng/pipelines/coreclr/templates/crossgen2-comparison-job.yml b/eng/pipelines/coreclr/templates/crossgen2-comparison-job.yml index ebb3f9320a4cb7..ad7873cca525a7 100644 --- a/eng/pipelines/coreclr/templates/crossgen2-comparison-job.yml +++ b/eng/pipelines/coreclr/templates/crossgen2-comparison-job.yml @@ -94,7 +94,7 @@ jobs: displayName: 'product build' # Populate Core_Root - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) $(crossArg) generatelayoutonly + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) -arch $(archType) $(crossArg) generatelayoutonly displayName: Populate Core_Root - task: DownloadPipelineArtifact@2 diff --git a/eng/pipelines/coreclr/templates/superpmi-collect-job.yml b/eng/pipelines/coreclr/templates/superpmi-collect-job.yml index aec6017dacf250..7045b07c0e95cc 100644 --- a/eng/pipelines/coreclr/templates/superpmi-collect-job.yml +++ b/eng/pipelines/coreclr/templates/superpmi-collect-job.yml @@ -117,12 +117,12 @@ jobs: displayName: 'generic managed test artifacts' # Create Core_Root - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) $(archType) $(crossArg) generatelayoutonly $(librariesOverrideArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) $(buildConfig) -arch $(archType) $(crossArg) generatelayoutonly $(librariesOverrideArg) displayName: Create Core_Root condition: succeeded() # Create Core_Root - - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) release $(archType) $(crossArg) generatelayoutonly $(librariesOverrideArg) + - script: $(Build.SourcesDirectory)/src/tests/build$(scriptExt) release -arch $(archType) $(crossArg) generatelayoutonly $(librariesOverrideArg) displayName: Create Release Core_Root condition: succeeded() diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index c373274f39a95d..4374e13face5ae 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -138,6 +138,7 @@ if [!__PassThroughArgs!]==[] ( if /i "%1" == "-hostos" (set __HostOS=%2&shift&shift&goto Arg_Loop) if /i "%1" == "-hostarch" (set __HostArch=%2&shift&shift&goto Arg_Loop) +if /i "%1" == "-arch" (set __TargetArch=%2&shift&shift&goto Arg_Loop) if /i "%1" == "-os" (set __TargetOS=%2&shift&shift&goto Arg_Loop) if /i "%1" == "-targetrid" (set __TargetRid=%2&shift&shift&goto Arg_Loop) if /i "%1" == "-outputrid" (set __TargetRid=%2&shift&shift&goto Arg_Loop) @@ -591,6 +592,7 @@ echo. echo.-? -h -help --help: view this message. echo -all: Builds all configurations and platforms. echo Build architecture: one of -x64, -x86, -arm, -arm64, -loongarch64, -riscv64 ^(default: -x64^). +echo Can also be set with "-arch ^" ^(e.g. -arch arm64^). echo Build type: one of -Debug, -Checked, -Release ^(default: -Debug^). echo -component ^ : specify this option one or more times to limit components built to those specified. echo Allowed ^: hosts jit alljits runtime paltests iltools nativeaot spmi diff --git a/src/native/libs/build-native.cmd b/src/native/libs/build-native.cmd index b4e2e87055bc90..0369fc8db2e684 100644 --- a/src/native/libs/build-native.cmd +++ b/src/native/libs/build-native.cmd @@ -43,6 +43,7 @@ if /i [%1] == [msbuild] ( set __Ninja=0&&shift&goto Arg_Loop) if /i [%1] == [-fsanitize] ( set __ExtraCmakeParams=%__ExtraCmakeParams% "-DCLR_CMAKE_ENABLE_SANITIZERS=$2"&&shift&&shift&goto Arg_Loop) if /i [%1] == [-cmakeargs] ( set __ExtraCmakeParams=%__ExtraCmakeParams% %2&&shift&&shift&goto Arg_Loop) +if /i [%1] == [-arch] ( set __BuildArch=%2&&shift&&shift&goto Arg_Loop) if /i [%1] == [-os] ( set __TargetOS=%2%&&shift&&shift&goto Arg_Loop) shift diff --git a/src/tests/build.cmd b/src/tests/build.cmd index cb5305566bdf7b..86bf59c5ba0ccd 100644 --- a/src/tests/build.cmd +++ b/src/tests/build.cmd @@ -119,6 +119,7 @@ if /i "%arg%" == "test" (set __BuildTestProject=!__BuildTestPro if /i "%arg%" == "dir" (set __BuildTestDir=!__BuildTestDir!%2%%3B&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if /i "%arg%" == "tree" (set __BuildTestTree=!__BuildTestTree!%2%%3B&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if /i "%arg%" == "log" (set __BuildLogRootName=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) +if /i "%arg%" == "arch" (set __BuildArch=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if /i "%arg%" == "priority" (set __Priority=%2&set processedArgs=!processedArgs! %1 %2&shift&shift&goto Arg_Loop) if /i "%arg%" == "fsanitize" (set __CMakeArgs=%__CMakeArgs% "-DCLR_CMAKE_ENABLE_SANITIZERS=%2"&set __EnableNativeSanitizers=%2&set processedArgs=!processedArgs! %1=%2&shift&shift&goto Arg_Loop) @@ -356,6 +357,7 @@ echo. echo.-? -h --help: View this message. echo. echo Build architecture: one of "x64", "x86", "arm64", "wasm" ^(default: x64^). +echo Can also be set with "arch ^" ^(e.g. "-arch arm64"^). echo Build type: one of "Debug", "Checked", "Release" ^(default: Debug^). echo. echo Build target OS options: