diff --git a/Build.cmd b/Build.cmd
index e8af08f3935..10845940e24 100644
--- a/Build.cmd
+++ b/Build.cmd
@@ -1,2 +1,2 @@
@echo off
-powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\build.ps1""" -build -restore %*"
\ No newline at end of file
+powershell -ExecutionPolicy ByPass -NoProfile -command "Measure-Command { & """%~dp0eng\build.ps1""" -build -restore %* } | Select-Object TotalMinutes, TotalSeconds"
diff --git a/Directory.Build.props b/Directory.Build.props
index 424258eef47..47b495dffb2 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -27,19 +27,11 @@
true
-
-
-
- $(OtherFlags) --realsig-
-
- $(OtherFlags) --realsig+
+
+
+ $(OtherFlags) --realsig-
+ $(OtherFlags) --realsig+
@@ -53,8 +45,8 @@
$(ArtifactsDir)obj/$(MSBuildProjectName)/$(Configuration)/
- $(ArtifactsDir)/bin/fslex/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/fslex.dll
- $(ArtifactsDir)/bin/fsyacc/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/fsyacc.dll
+ $(ArtifactsDir)/bin/fslex/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(RuntimeIdentifier)/fslex.dll
+ $(ArtifactsDir)/bin/fsyacc/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(RuntimeIdentifier)/fsyacc.dll
NO_CHECKNULLS;BUILDING_WITH_LKG;NO_NULLCHECKING_LIB_SUPPORT;$(DefineConstants)
diff --git a/Directory.Build.targets b/Directory.Build.targets
index 079e0e68fd4..cd863377199 100644
--- a/Directory.Build.targets
+++ b/Directory.Build.targets
@@ -3,11 +3,19 @@
+
+
+ $(ArtifactsDir)/bin/fslex/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(NETCoreSdkPortableRuntimeIdentifier)/fslex.dll
+ $(ArtifactsDir)/bin/fsyacc/$(Configuration)/$(FSharpNetCoreProductDefaultTargetFramework)/$(NETCoreSdkPortableRuntimeIdentifier)/fsyacc.dll
+
+
+
diff --git a/FSharpBuild.Directory.Build.targets b/FSharpBuild.Directory.Build.targets
index 17802630dc6..d49de27dccc 100644
--- a/FSharpBuild.Directory.Build.targets
+++ b/FSharpBuild.Directory.Build.targets
@@ -2,7 +2,6 @@
-
diff --git a/Microsoft.FSharp.Compiler.sln b/Microsoft.FSharp.Compiler.sln
index 7de4ee9f519..75b07e3170b 100644
--- a/Microsoft.FSharp.Compiler.sln
+++ b/Microsoft.FSharp.Compiler.sln
@@ -1,9 +1,9 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
-VisualStudioVersion = 17.1.32113.165
+VisualStudioVersion = 17.10.34710.37
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.FSharp.Compiler", "src\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.fsproj", "{BBEDE3FA-6E2C-4C53-8B61-FBB545CD4FFC}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Microsoft.FSharp.Compiler", "src\Microsoft.FSharp.Compiler\Microsoft.FSharp.Compiler.fsproj", "{196088D5-ED51-4A42-9B80-F0014D1ED28C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,15 +11,15 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {BBEDE3FA-6E2C-4C53-8B61-FBB545CD4FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BBEDE3FA-6E2C-4C53-8B61-FBB545CD4FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BBEDE3FA-6E2C-4C53-8B61-FBB545CD4FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BBEDE3FA-6E2C-4C53-8B61-FBB545CD4FFC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {196088D5-ED51-4A42-9B80-F0014D1ED28C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {196088D5-ED51-4A42-9B80-F0014D1ED28C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {196088D5-ED51-4A42-9B80-F0014D1ED28C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {196088D5-ED51-4A42-9B80-F0014D1ED28C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {6FF31C5A-ED51-45C2-A405-5534CB7D283C}
+ SolutionGuid = {CBCFE753-E7C1-4FFB-9F8F-26B50E5910E4}
EndGlobalSection
EndGlobal
diff --git a/Proto.sln b/Proto.sln
deleted file mode 100644
index d48b1e3d1b6..00000000000
--- a/Proto.sln
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.2.32630.192
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Build", "src\FSharp.Build\FSharp.Build.fsproj", "{C02D44B2-BB67-4A17-9678-9D21D93B3930}"
-EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsc", "src\fsc\fscProject\fsc.fsproj", "{5BEC9F77-5AE6-4EC3-BDE9-63CF8E1D0086}"
-EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "fsi", "src\fsi\fsiProject\fsi.fsproj", "{07CB51BF-8E98-4CFF-A7BA-99C4A0BC6037}"
-EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Core", "src\FSharp.Core\FSharp.Core.fsproj", "{8A772476-D857-4810-9A9C-E67AC61497AB}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Proto|Any CPU = Proto|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {C02D44B2-BB67-4A17-9678-9D21D93B3930}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {C02D44B2-BB67-4A17-9678-9D21D93B3930}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {5BEC9F77-5AE6-4EC3-BDE9-63CF8E1D0086}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {5BEC9F77-5AE6-4EC3-BDE9-63CF8E1D0086}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {07CB51BF-8E98-4CFF-A7BA-99C4A0BC6037}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {07CB51BF-8E98-4CFF-A7BA-99C4A0BC6037}.Proto|Any CPU.Build.0 = Proto|Any CPU
- {8A772476-D857-4810-9A9C-E67AC61497AB}.Proto|Any CPU.ActiveCfg = Proto|Any CPU
- {8A772476-D857-4810-9A9C-E67AC61497AB}.Proto|Any CPU.Build.0 = Proto|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {53F11F0A-D5FC-4410-B875-DC432F12B5AF}
- EndGlobalSection
-EndGlobal
diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml
index 2733bc0d56e..efd1253ee81 100644
--- a/azure-pipelines-PR.yml
+++ b/azure-pipelines-PR.yml
@@ -357,7 +357,7 @@ stages:
- checkout: self
clean: true
- - script: eng\CIBuild.cmd -compressallmetadata -norealsig -testCoreclr -configuration Release
+ - script: eng\CIBuild.cmd -compressallmetadata -buildnorealsig -testCoreclr -configuration Release
env:
NativeToolsOnMachine: true
displayName: Build
@@ -385,7 +385,7 @@ stages:
- checkout: self
clean: true
- - script: eng\CIBuild.cmd -compressallmetadata -norealsig -testDesktop -configuration Release
+ - script: eng\CIBuild.cmd -compressallmetadata -buildnorealsig -testDesktop -configuration Release
env:
NativeToolsOnMachine: true
displayName: Build
diff --git a/build.sh b/build.sh
index 6c74895c02c..ed7dcb1de39 100755
--- a/build.sh
+++ b/build.sh
@@ -13,4 +13,4 @@ while [[ -h $source ]]; do
done
scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
-"$scriptroot/eng/build.sh" --build --restore $@
+time "$scriptroot/eng/build.sh" --build --restore $@
diff --git a/buildtools/AssemblyCheck/AssemblyCheck.fsproj b/buildtools/AssemblyCheck/AssemblyCheck.fsproj
index 1f01406c734..6cfd3b1103f 100644
--- a/buildtools/AssemblyCheck/AssemblyCheck.fsproj
+++ b/buildtools/AssemblyCheck/AssemblyCheck.fsproj
@@ -4,13 +4,17 @@
Exe
$(FSharpNetCoreProductTargetFramework)
true
- false
+
+
+
+ true
+ true
- PreserveNewest
+ PreserveNewest
diff --git a/buildtools/buildtools.proj b/buildtools/buildtools.proj
deleted file mode 100644
index 5812bf8869b..00000000000
--- a/buildtools/buildtools.proj
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
- Debug
- true
- $(NoWarn);NU1504
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/buildtools/fslex/fslex.fsproj b/buildtools/fslex/fslex.fsproj
index 50c1e4e3668..03ed6a77a60 100644
--- a/buildtools/fslex/fslex.fsproj
+++ b/buildtools/fslex/fslex.fsproj
@@ -4,10 +4,14 @@
Exe
$(FSharpNetCoreProductTargetFramework)
true
- false
LatestMajor
+
+ true
+ true
+
+
diff --git a/buildtools/fsyacc/fsyacc.fsproj b/buildtools/fsyacc/fsyacc.fsproj
index 0cc67482b3a..621a2f3c7ca 100644
--- a/buildtools/fsyacc/fsyacc.fsproj
+++ b/buildtools/fsyacc/fsyacc.fsproj
@@ -4,10 +4,14 @@
Exe
$(FSharpNetCoreProductTargetFramework)
true
- false
LatestMajor
+
+ true
+ true
+
+
diff --git a/eng/Build.ps1 b/eng/Build.ps1
index 690b8a58f81..982d5f28717 100644
--- a/eng/Build.ps1
+++ b/eng/Build.ps1
@@ -35,7 +35,7 @@ param (
# Options
[switch][Alias('proto')]$bootstrap,
[string]$bootstrapConfiguration = "Proto",
- [string]$bootstrapTfm = "net472",
+ [string]$bootstrapTfm = "net8.0",
[string]$fsharpNetCoreProductTfm = "net8.0",
[switch][Alias('bl')]$binaryLog = $true,
[switch][Alias('nobl')]$excludeCIBinaryLog = $false,
@@ -69,7 +69,7 @@ param (
[switch]$sourceBuild,
[switch]$skipBuild,
[switch]$compressAllMetadata,
- [switch]$norealsig,
+ [switch]$buildnorealsig,
[switch]$verifypackageshipstatus = $false,
[parameter(ValueFromRemainingArguments = $true)][string[]]$properties)
@@ -132,7 +132,7 @@ function Print-Usage() {
Write-Host " -sourceBuild Simulate building for source-build."
Write-Host " -skipbuild Skip building product"
Write-Host " -compressAllMetadata Build product with compressed metadata"
- Write-Host " -norealsig Build product with realsig- (default use realsig+)"
+ Write-Host " -buildnorealsig Build product with realsig- (default use realsig+, where necessary)"
Write-Host " -verifypackageshipstatus Verify whether the packages we are building have already shipped to nuget"
Write-Host ""
Write-Host "Command line arguments starting with '/p:' are passed through to MSBuild."
@@ -212,12 +212,12 @@ function Process-Arguments() {
$script:compressAllMetadata = $True;
}
- if ($norealsig) {
- $script:realsig = $False;
+ if ($buildnorealsig) {
+ $script:buildnorealsig = $True
$env:FSHARP_REALSIG="false"
}
else {
- $script:realsig = $True;
+ $script:buildnorealsig = $False
$env:FSHARP_REALSIG="true"
}
if ($verifypackageshipstatus) {
@@ -298,7 +298,7 @@ function BuildSolution([string] $solutionName, $nopack) {
/p:TestTargetFrameworks=$testTargetFrameworks `
/p:DotNetBuildFromSource=$sourceBuild `
/p:CompressAllMetadata=$CompressAllMetadata `
- /p:TestingLegacyInternalSignature=$realsig `
+ /p:BuildNoRealsig=$buildnorealsig `
/v:$verbosity `
$suppressExtensionDeployment `
@properties
@@ -554,7 +554,7 @@ try {
}
$script:BuildMessage = "Failure building product"
- if ($restore -or $build -or $rebuild -or $pack -or $sign -or $publish -and -not $skipBuild) {
+ if ($restore -or $build -or $rebuild -or $pack -or $sign -or $publish -and -not $skipBuild -and -not $sourceBuild) {
if ($noVisualStudio) {
BuildSolution "FSharp.sln" $False
}
diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml
index 31c0ad52ed2..bd4b7f794d0 100644
--- a/eng/SourceBuildPrebuiltBaseline.xml
+++ b/eng/SourceBuildPrebuiltBaseline.xml
@@ -16,6 +16,11 @@
+
+
+
+
+
diff --git a/eng/build-utils.ps1 b/eng/build-utils.ps1
index f73195c7ccd..61016da9aa9 100644
--- a/eng/build-utils.ps1
+++ b/eng/build-utils.ps1
@@ -240,33 +240,15 @@ function Make-BootstrapBuild() {
# prepare FsLex and Fsyacc and AssemblyCheck
$dotnetPath = InitializeDotNetCli
$dotnetExe = Join-Path $dotnetPath "dotnet.exe"
- $buildToolsProject = "`"$RepoRoot\buildtools\buildtools.proj`""
-
- $argNoRestore = if ($norestore) { " --no-restore" } else { "" }
- $argNoIncremental = if ($rebuild) { " --no-incremental" } else { "" }
-
- $args = "build $buildToolsProject -c $bootstrapConfiguration -v $verbosity" + $argNoRestore + $argNoIncremental
- if ($binaryLog) {
- $logFilePath = Join-Path $LogDir "toolsBootstrapLog.binlog"
- $args += " /bl:`"$logFilePath`""
- }
- Exec-Console $dotnetExe $args
-
- Copy-Item "$ArtifactsDir\bin\fslex\$bootstrapConfiguration\$fsharpNetCoreProductTfm" -Destination "$dir\fslex" -Force -Recurse
- Copy-Item "$ArtifactsDir\bin\fsyacc\$bootstrapConfiguration\$fsharpNetCoreProductTfm" -Destination "$dir\fsyacc" -Force -Recurse
- Copy-Item "$ArtifactsDir\bin\AssemblyCheck\$bootstrapConfiguration\$fsharpNetCoreProductTfm" -Destination "$dir\AssemblyCheck" -Force -Recurse
# prepare compiler
- $protoProject = "`"$RepoRoot\proto.sln`""
- $args = "build $protoProject -c $bootstrapConfiguration -v $verbosity " + $argNoRestore + $argNoIncremental
+ $projectpath = "$RepoRoot" + "proto.proj"
+ $args = "publish $projectpath -c $bootstrapConfiguration"
if ($binaryLog) {
- $logFilePath = Join-Path $LogDir "protoBootstrapLog.binlog"
+ $logFilePath = Join-Path $LogDir "bootstrap.binlog"
$args += " /bl:`"$logFilePath`""
}
+ Write-Host "$dotnetExe $args"
Exec-Console $dotnetExe $args
-
- Copy-Item "$ArtifactsDir\bin\fsc\$bootstrapConfiguration\$bootstrapTfm" -Destination "$dir\fsc" -Force -Recurse
- Copy-Item "$ArtifactsDir\bin\fsi\$bootstrapConfiguration\$bootstrapTfm" -Destination "$dir\fsi" -Force -Recurse
-
return $dir
}
diff --git a/eng/build.sh b/eng/build.sh
index f8db4462ff7..886eb598c1e 100755
--- a/eng/build.sh
+++ b/eng/build.sh
@@ -34,7 +34,7 @@ usage()
echo " --skipBuild Do not run the build"
echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
echo " --sourceBuild Simulate building for source-build"
- echo " --norealsig Build product with realsig- (default use realsig+)"
+ echo " --buildnorealsig Build product with realsig- (default use realsig+ where necessary)"
echo " --tfm Override the default target framework"
echo ""
echo "Command line arguments starting with '/p:' are passed through to MSBuild."
@@ -69,7 +69,7 @@ skip_analyzers=false
skip_build=false
prepare_machine=false
source_build=false
-realsig=true
+buildnorealsig=false
properties=""
docker=false
@@ -154,8 +154,8 @@ while [[ $# > 0 ]]; do
--sourcebuild)
source_build=true
;;
- --norealsig)
- realsig=false
+ --buildnorealsig)
+ buildnorealsig=true
;;
--tfm)
tfm=$2
@@ -227,8 +227,6 @@ function BuildSolution {
BUILDING_USING_DOTNET=false
BuildCategory="Build"
BuildMessage="Error preparing build"
- local solution="FSharp.sln"
- echo "$solution:"
InitializeToolset
local toolset_build_proj=$_InitializeToolset
@@ -238,7 +236,9 @@ function BuildSolution {
bl="/bl:\"$log_dir/Build.binlog\""
fi
- local projects="$repo_root/$solution"
+ local projects="$repo_root/FSharp.sln"
+
+ echo "$projects:"
# https://github.com/dotnet/roslyn/issues/23736
local enable_analyzers=!$skip_analyzers
@@ -262,37 +262,26 @@ function BuildSolution {
node_reuse=false
# build bootstrap tools
- # source_build=true means we are currently in the outer/wrapper source-build,
- # and building bootstrap needs to wait. The source-build targets will run this
- # script again without setting source_build=true when it is done setting up
- # the build environment. See 'eng/SourceBuild.props'.
- if [[ "$source_build" != true ]]; then
- bootstrap_config=Proto
- bootstrap_dir=$artifacts_dir/Bootstrap
- if [[ "$force_bootstrap" == true ]]; then
- rm -fr $bootstrap_dir
- fi
- if [ ! -f "$bootstrap_dir/fslex.dll" ]; then
- local bltools=""
- if [[ "$bl" != "" ]]; then
- bltools=$bl+".lex.binlog"
- fi
- BuildMessage="Error building tools"
- MSBuild "$repo_root/buildtools/buildtools.proj" /restore "$bltools" /p:Configuration=$bootstrap_config
-
- mkdir -p "$bootstrap_dir"
- cp -pr $artifacts_dir/bin/fslex/$bootstrap_config/$tfm $bootstrap_dir/fslex
- cp -pr $artifacts_dir/bin/fsyacc/$bootstrap_config/$tfm $bootstrap_dir/fsyacc
+ # source_build=In source build proto does no work, except cause sourcebuild in wrapper to build
+ bootstrap_dir=$artifacts_dir/Bootstrap
+ if [[ "$force_bootstrap" == true ]]; then
+ rm -fr $bootstrap_dir
+ fi
+ if [ ! -f "$bootstrap_dir/fslex/fslex.dll" ]; then
+ local bltools=""
+ if [[ "$bl" != "" ]]; then
+ bltools=$bl+".proto.binlog"
fi
- if [ ! -f "$bootstrap_dir/fsc.exe" ]; then
- local bltools=""
- if [[ "$bl" != "" ]]; then
- bltools=$bl+".bootstrap.binlog"
- fi
- BuildMessage="Error building bootstrap"
- MSBuild "$repo_root/Proto.sln" /restore "$bltools" /p:Configuration=$bootstrap_config
- cp -pr $artifacts_dir/bin/fsc/$bootstrap_config/$tfm $bootstrap_dir/fsc
+
+ local blrestore=""
+ if [[ "$source_build" != "true" ]]; then
+ blrestore="/restore"
fi
+
+ BuildMessage="Error building tools"
+ local args=" publish $repo_root/proto.proj $blrestore $bltools /p:Configuration=Proto /p:ArcadeBuildFromSource=$source_build"
+ echo $args
+ "$DOTNET_INSTALL_DIR/dotnet" $args #$args || exit $?
fi
if [[ "$skip_build" != true ]]; then
@@ -313,7 +302,7 @@ function BuildSolution {
/p:QuietRestore=$quiet_restore \
/p:QuietRestoreBinaryLog="$binary_log" \
/p:ArcadeBuildFromSource=$source_build \
- /p:TestingLegacyInternalSignature=$realsig \
+ /p:BuildNoRealsig=$buildnorealsig \
$properties
fi
}
diff --git a/eng/targets/NGenBinaries.targets b/eng/targets/NGenBinaries.targets
deleted file mode 100644
index e0529d3bb61..00000000000
--- a/eng/targets/NGenBinaries.targets
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
- false
- true
-
-
-
-
-
-
- true
- false
-
-
-
-
-
-
- $(windir)\Microsoft.NET\Framework\v4.0.30319\ngen.exe
- $(windir)\Microsoft.NET\Framework64\v4.0.30319\ngen.exe
- $(windir)\Microsoft.NET\FrameworkArm64\v4.0.30319\ngen.exe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(WindowsSDK_ExecutablePath_x86)\sn.exe
- $(WindowsSDK_ExecutablePath_x64)\sn.exe
- $(WindowsSDK_ExecutablePath_Arm64)\sn.exe
-
-
-
-
-
-
-
-
diff --git a/eng/test-determinism.ps1 b/eng/test-determinism.ps1
index 499c1187a0d..05c0417b1ec 100644
--- a/eng/test-determinism.ps1
+++ b/eng/test-determinism.ps1
@@ -25,31 +25,43 @@ if ($help) {
# List of binary names that should be skipped because they have a known issue that
# makes them non-deterministic.
$script:skipList = @()
-function Run-Build([string]$rootDir, [string]$logFileName) {
+function Run-Build([string]$rootDir, [string]$increment) {
+
+ $logFileName = $increment
# Clean out the previous run
Write-Host "Cleaning binaries in $rootDir"
- $binDir = Get-BinDir $rootDir
- $objDir = Get-ObjDir $rootDir
+ $binDir = Get-BinDir (Get-ArtifactsDir $rootDir)
+ $objDir = Get-ObjDir (Get-ArtifactsDir $rootDir)
+ $incrementDir = Get-LeafDir (Get-ArtifactsDir $rootDir) $increment
+
$stopWatch = [System.Diagnostics.StopWatch]::StartNew()
+
Write-Host "Cleaning binaries in $binDir"
Remove-Item -Recurse $binDir -ErrorAction SilentlyContinue
+
Write-Host "Cleaning binaries in $objDir"
Remove-Item -Recurse $objDir -ErrorAction SilentlyContinue
+
+ Write-Host "Cleaning binaries in $incrementDir"
+ Remove-Item -Recurse $incrementDir -ErrorAction SilentlyContinue
+
$stopWatch.Stop()
+
Write-Host "Cleaning took $($stopWatch.Elapsed)"
$solution = Join-Path $rootDir "Microsoft.FSharp.Compiler.sln"
if ($logFileName -eq "") {
- $logFileName = [IO.Path]::GetFileNameWithoutExtension($projectFilePath)
+ $logFileName = [IO.Path]::GetFileNameWithoutExtension($solution)
}
+
$logFileName = [IO.Path]::ChangeExtension($logFileName, ".binlog")
$logFilePath = Join-Path $LogDir $logFileName
Stop-Processes
- Write-Host "Building $solution using $bootstrapDir"
+ Write-Host "Building $solution using $bootstrapDir into '$increment' $incrementDir"
MSBuild $toolsetBuildProj `
/p:Configuration=$configuration `
/p:Projects=$solution `
@@ -71,27 +83,39 @@ function Run-Build([string]$rootDir, [string]$logFileName) {
/p:DebugDeterminism=true `
/p:Features="debug-determinism" `
/p:DeployExtension=false `
- /p:BootstrapBuildPath=$bootstrapDir `
/p:RunAnalyzers=false `
/p:RunAnalyzersDuringBuild=false `
/p:BUILDING_USING_DOTNET=false `
/bl:$logFilePath
+ Write-Host "Copy-Item -Path $binDir -Destination $incrementDir -ErrorAction SilentlyContinue -Recurse"
+ Copy-Item -Path $binDir -Destination $incrementDir -ErrorAction SilentlyContinue -Recurse
+
Stop-Processes
}
-function Get-ObjDir([string]$rootDir) {
- return Join-Path $rootDir "artifacts\obj"
+
+function Get-LeafDir([string]$dir, [string]$leaf) {
+ return Join-Path $dir $leaf
+}
+
+function Get-ArtifactsDir([string]$dir) {
+ return Get-LeafDir $dir "artifacts"
+}
+
+function Get-ObjDir([string]$dir) {
+ return Get-LeafDir $dir "obj"
}
-function Get-BinDir([string]$rootDir) {
- return Join-Path $rootDir "artifacts\bin"
+function Get-BinDir([string]$dir) {
+ return Get-LeafDir $dir "bin"
}
# Return all of the files that need to be processed for determinism under the given
# directory.
-function Get-FilesToProcess([string]$rootDir) {
- $objDir = Get-ObjDir $rootDir
+function Get-FilesToProcess([string]$rootDir, [string]$increment) {
+ $objDir = Get-LeafDir (Get-ArtifactsDir $rootDir) $increment
+
foreach ($item in Get-ChildItem -re -in *.dll, *.exe, *.pdb, *.sourcelink.json $objDir) {
$filePath = $item.FullName
$fileName = Split-Path -leaf $filePath
@@ -132,12 +156,13 @@ function Get-FilesToProcess([string]$rootDir) {
}
# This will build up the map of all of the binaries and their respective hashes.
-function Record-Binaries([string]$rootDir) {
+function Record-Binaries([string]$rootDir, [string]$increment) {
$stopWatch = [System.Diagnostics.StopWatch]::StartNew()
Write-Host "Recording file hashes"
$map = @{ }
- foreach ($fileData in Get-FilesToProcess $rootDir) {
+ Write-Host "Get-FilesToProcess $rootDir $increment"
+ foreach ($fileData in Get-FilesToProcess $rootDir $increment) {
Write-Host "`t$($fileData.FileId) = $($fileData.Hash)"
$map[$fileData.FileId] = $fileData
}
@@ -177,15 +202,16 @@ function Test-MapContents($dataMap) {
}
}
-function Test-Build([string]$rootDir, $dataMap, [string]$logFileName) {
- Run-Build $rootDir -logFile $logFileName
+function Test-Build([string]$rootDir, $dataMap, [string]$increment) {
+ $logFileName = $increment
+ Run-Build $rootDir -increment $increment
$errorList = @()
$allGood = $true
- Write-Host "Testing the binaries"
+ Write-Host "Testing the binaries: $rootDir"
$stopWatch = [System.Diagnostics.StopWatch]::StartNew()
- foreach ($fileData in Get-FilesToProcess $rootDir) {
+ foreach ($fileData in Get-FilesToProcess $rootDir $increment) {
$fileId = $fileData.FileId
$fileName = $fileData.FileName
$filePath = $fileData.FilePath
@@ -248,12 +274,13 @@ function Test-Build([string]$rootDir, $dataMap, [string]$logFileName) {
function Run-Test() {
# Run the initial build so that we can populate the maps
- Run-Build $RepoRoot -logFileName "Initial" -useBootstrap
- $dataMap = Record-Binaries $RepoRoot
+ Run-Build $RepoRoot -increment "Initial" -useBootstrap
+
+ $dataMap = Record-Binaries $RepoRoot "Initial"
Test-MapContents $dataMap
# Run a test against the source in the same directory location
- Test-Build -rootDir $RepoRoot -dataMap $dataMap -logFileName "test1"
+ Test-Build -rootDir $RepoRoot -dataMap $dataMap -increment "Test1"
# Run another build in a different source location and verify that path mapping
# allows the build to be identical. To do this we'll copy the entire source
@@ -377,12 +404,8 @@ try {
$script:bootstrap = $true
$script:bootstrapConfiguration = "Proto"
- $script:bootstrapTfm = "net472"
$script:fsharpNetCoreProductTfm = "net8.0"
-
- if ($script:msbuildEngine -eq "dotnet") {
- $script.bootstrapTfm = $script:fsharpNetCoreProductTfm
- }
+ $script:bootstrapTfm = $script:fsharpNetCoreProductTfm
$bootstrapDir = Make-BootstrapBuild
diff --git a/proto.proj b/proto.proj
new file mode 100644
index 00000000000..2d07b389fa6
--- /dev/null
+++ b/proto.proj
@@ -0,0 +1,36 @@
+
+
+
+ Bootstrap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Compiler/FSharp.Compiler.Service.fsproj b/src/Compiler/FSharp.Compiler.Service.fsproj
index 770e7a1aee6..63428be3f11 100644
--- a/src/Compiler/FSharp.Compiler.Service.fsproj
+++ b/src/Compiler/FSharp.Compiler.Service.fsproj
@@ -25,12 +25,14 @@
$(IntermediateOutputPath)$(TargetFramework)\
$(IntermediateOutputPath)$(TargetFramework)\
false
- Debug;Release;ReleaseCompressed
+ Debug;Release
- false
+ false
+ false
+ false
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
index 068f4dc3c51..5937c5678c8 100644
--- a/src/Directory.Build.targets
+++ b/src/Directory.Build.targets
@@ -1,4 +1,4 @@
-
+
diff --git a/src/FSharp.Build/FSharp.Build.fsproj b/src/FSharp.Build/FSharp.Build.fsproj
index f8fbc7138ef..70f2f534c30 100644
--- a/src/FSharp.Build/FSharp.Build.fsproj
+++ b/src/FSharp.Build/FSharp.Build.fsproj
@@ -13,13 +13,14 @@
$(NoWarn);NU1701;FS0075
true
7.0
- Debug;Release;Proto;ReleaseCompressed
+ Debug;Release;Proto
-
- false
- true
+
+ true
+ false
+ true
@@ -50,13 +51,13 @@
{{FSCorePackageVersionValue}}
$(FSharpCoreShippedPackageVersionValue)
-
+
Microsoft.FSharp.Core.NetSdk.props
Release\
{{FSCorePackageVersionValue}}
$(FSCorePackageVersionValue)
-
+
Microsoft.FSharp.Core.NetSdk.props
Shipping\
{{FSCorePackageVersionValue}}
diff --git a/src/FSharp.Build/Fsc.fs b/src/FSharp.Build/Fsc.fs
index 614a6b4f392..74e499ad86e 100644
--- a/src/FSharp.Build/Fsc.fs
+++ b/src/FSharp.Build/Fsc.fs
@@ -56,6 +56,7 @@ type public Fsc() as this =
let mutable preferredUILang: string MaybeNull = null
let mutable publicSign: bool = false
let mutable provideCommandLineArgs: bool = false
+ let mutable realsig: bool = false
let mutable references: ITaskItem[] = [||]
let mutable referencePath: string MaybeNull = null
let mutable refOnly: bool = false
@@ -194,6 +195,12 @@ type public Fsc() as this =
else
builder.AppendSwitch("--optimize-")
+ // realsig
+ if realsig then
+ builder.AppendSwitch("--realsig+")
+ else
+ builder.AppendSwitch("--realsig-")
+
// Tailcalls
if not tailcalls then
builder.AppendSwitch("--tailcalls-")
@@ -530,6 +537,11 @@ type public Fsc() as this =
with get () = publicSign
and set (s) = publicSign <- s
+ // --realsig[+-]
+ member _.RealSig
+ with get () = realsig
+ and set (b) = realsig <- b
+
// -r : Reference an F# or .NET assembly.
member _.References
with get () = references
diff --git a/src/FSharp.Build/Microsoft.FSharp.Targets b/src/FSharp.Build/Microsoft.FSharp.Targets
index 26999e6a646..0ac058e30ba 100644
--- a/src/FSharp.Build/Microsoft.FSharp.Targets
+++ b/src/FSharp.Build/Microsoft.FSharp.Targets
@@ -387,6 +387,7 @@ this file.
PreferredUILang="$(PreferredUILang)"
ProvideCommandLineArgs="$(ProvideCommandLineArgs)"
PublicSign="$(PublicSign)"
+ RealSig="$(RealSig)"
References="@(ReferencePathWithRefAssemblies)"
ReferencePath="$(ReferencePathWithRefAssemblies)"
RefOnly="$(ProduceOnlyReferenceAssembly)"
diff --git a/src/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj b/src/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
index 8c159c34f01..85814ac6e5f 100644
--- a/src/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
+++ b/src/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
@@ -11,8 +11,10 @@
-
- false
+
+ true
+ false
+ true
diff --git a/src/FSharp.Core/FSharp.Core.fsproj b/src/FSharp.Core/FSharp.Core.fsproj
index da433ca2293..dbfbf0006e6 100644
--- a/src/FSharp.Core/FSharp.Core.fsproj
+++ b/src/FSharp.Core/FSharp.Core.fsproj
@@ -4,7 +4,8 @@
Library
- netstandard2.1;netstandard2.0
+ netstandard2.0
+ netstandard2.0;netstandard2.1
$(NoWarn);62
$(NoWarn);75
$(NoWarn);1204
@@ -25,11 +26,8 @@
$(OtherFlags) --nowarn:3513
$(OtherFlags) --compiling-fslib --compiling-fslib-40 --maxerrors:100 --extraoptimizationloops:1
-
- $(OtherFlags) --realsig-
true
- true
true
FSharp.Core
$(FSCorePackageVersion)
@@ -37,12 +35,19 @@
true
FSharp.Core redistributables from F# Tools version $(FSProductVersionPrefix) For F# $(FSLanguageVersion). Contains code from the F# Software Foundation.
/blob/main/release-notes.md#FSharp-Core-$(FSCoreReleaseNotesVersion)
- Debug;Release;Proto;ReleaseCompressed
+ Debug;Release;Proto
+
+
+
+
+ $(OtherFlags) --realsig-
- false
+ false
+ false
+ false
diff --git a/src/FSharp.DependencyManager.Nuget/FSharp.DependencyManager.Nuget.fsproj b/src/FSharp.DependencyManager.Nuget/FSharp.DependencyManager.Nuget.fsproj
index 3d15f45e103..7b5aad10dba 100644
--- a/src/FSharp.DependencyManager.Nuget/FSharp.DependencyManager.Nuget.fsproj
+++ b/src/FSharp.DependencyManager.Nuget/FSharp.DependencyManager.Nuget.fsproj
@@ -14,9 +14,10 @@
-
+
true
- false
+ false
+ true
diff --git a/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.fsproj b/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.fsproj
index 7c186a76bb4..a33eeaa8d39 100644
--- a/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.fsproj
+++ b/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.fsproj
@@ -28,12 +28,8 @@
-
- Configuration=ReleaseCompressed;CompressAllMetadata=true
-
-
- Configuration=ReleaseCompressed;CompressAllMetadata=true
-
+
+
@@ -52,6 +48,9 @@
TargetFrameworks=netstandard2.0
+
+ TargetFrameworks=netstandard2.0
+
diff --git a/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.nuspec b/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.nuspec
index 24df391b69f..2c31f40e583 100644
--- a/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.nuspec
+++ b/src/Microsoft.FSharp.Compiler/Microsoft.FSharp.Compiler.nuspec
@@ -26,43 +26,42 @@
this approach gives a very small deployment. Which is kind of necessary.
-->
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fsc/fsc.targets b/src/fsc/fsc.targets
index 2973feb613e..1c67ceb393a 100644
--- a/src/fsc/fsc.targets
+++ b/src/fsc/fsc.targets
@@ -4,19 +4,17 @@
Exe
+ Debug;Release;Proto
$(NoWarn);44
$(NoWarn);75
true
- true
- true
- false
-
- true
- true
- false
+
+ true
+ true
+ true
diff --git a/src/fsc/fscAnyCpuProject/fscAnyCpu.fsproj b/src/fsc/fscAnyCpuProject/fscAnyCpu.fsproj
index b792e01777d..3fac5305cae 100644
--- a/src/fsc/fscAnyCpuProject/fscAnyCpu.fsproj
+++ b/src/fsc/fscAnyCpuProject/fscAnyCpu.fsproj
@@ -5,9 +5,7 @@
net472
anycpu
- .exe
true
- Debug;Release;ReleaseCompressed
diff --git a/src/fsc/fscArm64Project/fscArm64.fsproj b/src/fsc/fscArm64Project/fscArm64.fsproj
index a87677d9f55..c7c42ca1adf 100644
--- a/src/fsc/fscArm64Project/fscArm64.fsproj
+++ b/src/fsc/fscArm64Project/fscArm64.fsproj
@@ -5,9 +5,7 @@
net472
arm64
- .exe
true
- Debug;Release;ReleaseCompressed
diff --git a/src/fsc/fscProject/fsc.fsproj b/src/fsc/fscProject/fsc.fsproj
index b382709200d..5f30ad30579 100644
--- a/src/fsc/fscProject/fsc.fsproj
+++ b/src/fsc/fscProject/fsc.fsproj
@@ -2,19 +2,23 @@
-
+
net472;$(FSharpNetCoreProductTargetFramework)
$(FSharpNetCoreProductTargetFramework)
x86
- Debug;Release;Proto;ReleaseCompressed
-
- net472
- $(FSharpNetCoreProductTargetFramework)
- x86
+
+ $(FSharpNetCoreProductTargetFramework)
+ true
+ true
+
+
+
+
+
$(ArtifactsDir)/bin/$(MSBuildProjectName)/$(Configuration)/
$(ArtifactsDir)obj/$(MSBuildProjectName)/$(Configuration)/
diff --git a/src/fsi/fsi.targets b/src/fsi/fsi.targets
index 2f38a20ecc3..1fb29b4bff6 100644
--- a/src/fsi/fsi.targets
+++ b/src/fsi/fsi.targets
@@ -4,13 +4,11 @@
Exe
+ Debug;Release;Proto
$(NoWarn);44
true
$(OtherFlags) --warnon:1182
$(MSBuildThisFileDirectory)fsi.res
- true
- true
- false
@@ -18,10 +16,10 @@
-
- true
- true
- false
+
+ true
+ true
+ true
diff --git a/src/fsi/fsiAnyCpuProject/fsiAnyCpu.fsproj b/src/fsi/fsiAnyCpuProject/fsiAnyCpu.fsproj
index a77d45ffeec..f11e2783e44 100644
--- a/src/fsi/fsiAnyCpuProject/fsiAnyCpu.fsproj
+++ b/src/fsi/fsiAnyCpuProject/fsiAnyCpu.fsproj
@@ -5,10 +5,8 @@
net472
anycpu
- .exe
true
$(DefineConstants);FSI_SHADOW_COPY_REFERENCES;FSI_SERVER
- Debug;Release;ReleaseCompressed
diff --git a/src/fsi/fsiArm64Project/fsiArm64.fsproj b/src/fsi/fsiArm64Project/fsiArm64.fsproj
index 6c183d4a611..07e19f49d5e 100644
--- a/src/fsi/fsiArm64Project/fsiArm64.fsproj
+++ b/src/fsi/fsiArm64Project/fsiArm64.fsproj
@@ -5,10 +5,8 @@
net472
arm64
- .exe
true
$(DefineConstants);FSI_SHADOW_COPY_REFERENCES;FSI_SERVER
- Debug;Release;ReleaseCompressed
diff --git a/src/fsi/fsiProject/fsi.fsproj b/src/fsi/fsiProject/fsi.fsproj
index 653122fc76d..639ab45af17 100644
--- a/src/fsi/fsiProject/fsi.fsproj
+++ b/src/fsi/fsiProject/fsi.fsproj
@@ -2,19 +2,23 @@
-
+
net472;$(FSharpNetCoreProductTargetFramework)
$(FSharpNetCoreProductTargetFramework)
x86
- Debug;Release;Proto;ReleaseCompressed
-
- net472
- $(FSharpNetCoreProductTargetFramework)
- x86
+
+ $(FSharpNetCoreProductTargetFramework)
+ true
+ true
+
+
+
+
+
$(ArtifactsDir)/bin/$(MSBuildProjectName)/$(Configuration)/
$(ArtifactsDir)obj/$(MSBuildProjectName)/$(Configuration)/
diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props
index 91c969b0ec6..06697bc35ed 100644
--- a/tests/Directory.Build.props
+++ b/tests/Directory.Build.props
@@ -7,9 +7,15 @@
portable
-
+
+
+ false
+ false
+ true
+
+
diff --git a/tests/fsharpqa/run.fsharpqa.test.fsx b/tests/fsharpqa/run.fsharpqa.test.fsx
index 0d87d742401..4c821e00d61 100644
--- a/tests/fsharpqa/run.fsharpqa.test.fsx
+++ b/tests/fsharpqa/run.fsharpqa.test.fsx
@@ -22,7 +22,7 @@ let nugetCache =
| null -> Path.Combine(System.Environment.GetEnvironmentVariable "USERPROFILE", ".nuget", "packages")
| path -> path
let rootFolder = Path.Combine(__SOURCE_DIRECTORY__, "..", "..")
-let compilerBinFolder = Path.Combine(rootFolder, "artifacts", "bin", "fsc", releaseOrDebug, "net472")
+let compilerBinFolder = Path.Combine(rootFolder, "artifacts", "bin", "fsc", releaseOrDebug, "net8.0")
setEnvVar "CSC_PIPE" (Path.Combine(nugetCache, "Microsoft.Net.Compilers", "4.3.0-1.22220.8", "tools", "csc.exe"))
setEnvVar "FSC" (Path.Combine(compilerBinFolder, "fsc.exe"))
setEnvVar "FSCOREDLLPATH" (Path.Combine(compilerBinFolder, "FSharp.Core.dll"))
diff --git a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
index f67562799e0..b7781a00d54 100644
--- a/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
+++ b/tests/fsharpqa/testenv/src/HostedCompilerServer/HostedCompilerServer.fsproj
@@ -11,7 +11,6 @@
$(NoWarn);44
AnyCPU
true
- true
diff --git a/vsintegration/Templates.Directory.Build.props b/vsintegration/Templates.Directory.Build.props
index 3801f7748c8..4ba654b8fac 100644
--- a/vsintegration/Templates.Directory.Build.props
+++ b/vsintegration/Templates.Directory.Build.props
@@ -31,4 +31,10 @@
false
+
+ true
+ false
+ false
+
+
diff --git a/vsintegration/tests/UnitTests/Tests.Build.fs b/vsintegration/tests/UnitTests/Tests.Build.fs
index 19f4bffd569..07831f79dcb 100644
--- a/vsintegration/tests/UnitTests/Tests.Build.fs
+++ b/vsintegration/tests/UnitTests/Tests.Build.fs
@@ -79,6 +79,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--codepage:65001" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -94,6 +95,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("-g" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -109,6 +111,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--debug:pdbonly" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -126,6 +129,7 @@ type Build() =
AssertEqual ("--define:FOO=3" + Environment.NewLine +
"--define:BAR=4" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -140,6 +144,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--nowarn:52,109" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -155,6 +160,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -169,6 +175,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--warnaserror-:52,109" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -184,6 +191,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--versionfile:src/version" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -200,6 +208,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--doc:foo.xml" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -215,6 +224,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--sig:foo.fsi" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -230,6 +240,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--keyfile:key.txt" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -245,6 +256,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("--noframework" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -259,6 +271,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize-" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -274,6 +287,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
// REVIEW we don't put the default, is that desired?
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -288,6 +302,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -305,6 +320,7 @@ type Build() =
printfn "cmd=\"%s\"" cmd
AssertEqual ("-o:oUt.dll" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -319,6 +335,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--pdb:out.pdb" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -334,6 +351,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--platform:x64" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -349,6 +367,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--platform:x86" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -365,6 +384,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"-r:" + dll + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -381,6 +401,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--lib:c:\\sd\\staging\\tools\\nunit\\,c:\\Foo" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -397,6 +418,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--lib:c:\\program files,c:\\sd\\staging\\tools\\nunit,c:\\Foo" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -412,6 +434,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--resource:Foo.resources" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -429,6 +452,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva-" + Environment.NewLine +
@@ -446,6 +470,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--target:library" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -461,6 +486,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--target:winexe" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -476,6 +502,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--target:module" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -490,6 +517,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--utf8output" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -504,6 +532,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--win32res:foo.res" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -518,6 +547,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--win32manifest:foo.manifest" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
@@ -532,6 +562,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--highentropyva+" + Environment.NewLine +
@@ -545,6 +576,7 @@ type Build() =
let cmd = tool.InternalGenerateResponseFileCommands()
printfn "cmd=\"%s\"" cmd
AssertEqual ("--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +
"--subsystemversion:6.02" + Environment.NewLine +
@@ -599,6 +631,7 @@ type Build() =
"--sig:foo.fsi" + Environment.NewLine +
"--keyfile:key.txt" + Environment.NewLine +
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--pdb:out.pdb" + Environment.NewLine +
"--platform:anycpu" + Environment.NewLine +
"--resource:MyRes.resources" + Environment.NewLine +
@@ -642,6 +675,7 @@ type Build() =
"--sig:foo.fsi"
"--keyfile:key.txt"
"--optimize+"
+ "--realsig-"
"--pdb:out.pdb"
"--platform:anycpu"
"--resource:MyRes.resources"
@@ -685,6 +719,7 @@ type Build() =
let expected =
"--optimize+" + Environment.NewLine +
+ "--realsig-" + Environment.NewLine +
"--nowarn:52,109,110,73,85" + Environment.NewLine +
"--fullpaths" + Environment.NewLine +
"--flaterrors" + Environment.NewLine +