Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions FSharpBuild.Directory.Build.targets
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
</CreateItem>
</Target>

<Import Project="build\targets\NGenOrCrossGen.targets" />
<Import Project="build\targets\ConvertPortablePdbs.targets" />
<Import Project="build\targets\GenerateAssemblyAttributes.targets" />
<Import Project="build\targets\GenerateInternalsVisibleTo.targets" />
Expand Down
2 changes: 1 addition & 1 deletion FSharpTests.Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<FsiToolPath>$(MSBuildThisFileDirectory)artifacts\toolset\dotnet</FsiToolPath>
<FsiToolExe Condition="'$(OS)' != 'Unix'">dotnet.exe</FsiToolExe>
<FsiToolExe Condition="'$(OS)' == 'Unix'">dotnet</FsiToolExe>
<DotnetFsiCompilerPath>$(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp2.0\fsi.exe</DotnetFsiCompilerPath>
<DotnetFsiCompilerPath>$(MSBuildThisFileDirectory)artifacts\bin\fsi\$(Configuration)\netcoreapp2.1\fsi.exe</DotnetFsiCompilerPath>
</PropertyGroup>

<!-- SDK targets override -->
Expand Down
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ build: proto restore
$(DotNetExe) build -c $(Configuration) -f netstandard1.6 src/fsharp/FSharp.Compiler.Private/FSharp.Compiler.Private.fsproj
$(DotNetExe) build -c $(Configuration) -f netcoreapp2.1 src/fsharp/fsc/fsc.fsproj
$(DotNetExe) build -c $(Configuration) -f netstandard1.6 src/fsharp/FSharp.Compiler.Interactive.Settings/FSharp.Compiler.Interactive.Settings.fsproj
$(DotNetExe) build -c $(Configuration) -f netcoreapp2.0 src/fsharp/fsi/fsi.fsproj
$(DotNetExe) build -c $(Configuration) -f netcoreapp2.1 src/fsharp/fsi/fsi.fsproj
$(DotNetExe) build -c $(Configuration) -f netcoreapp2.0 tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj
$(DotNetExe) build -c $(Configuration) -f netcoreapp2.0 tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj

test: build
$(DotNetExe) test -f netcoreapp2.0 -c $(Configuration) --no-restore --no-build tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Core.UnitTests.coreclr.trx"
$(DotNetExe) test -f netcoreapp2.0 -c $(Configuration) --no-restore --no-build tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Build.UnitTests.coreclr.trx"
$(DotNetExe) test -f netcoreapp2.1 -c $(Configuration) --no-restore --no-build tests/FSharp.Core.UnitTests/FSharp.Core.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Core.UnitTests.coreclr.trx"
$(DotNetExe) test -f netcoreapp2.1 -c $(Configuration) --no-restore --no-build tests/FSharp.Build.UnitTests/FSharp.Build.UnitTests.fsproj -l "trx;LogFileName=$(CURDIR)/tests/TestResults/FSharp.Build.UnitTests.coreclr.trx"

clean:
rm -rf $(CURDIR)/artifacts
15 changes: 11 additions & 4 deletions build.cmd
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
rem Copyright (c) Microsoft Corporation. All Rights Reserved. See License.txt in the project root for license information.
@if "%_echo%"=="" echo off

setlocal enableDelayedExpansion

:ARGUMENTS_VALIDATION
Expand Down Expand Up @@ -66,6 +65,7 @@ set BUILD_FCS=0
set BUILD_CONFIG=Release
set BUILD_DIAG=
set BUILD_PUBLICSIGN=0
set BUILD_FSHARP_PROJ=1

set TEST_NET40_COMPILERUNIT_SUITE=0
set TEST_NET40_COREUNIT_SUITE=0
Expand Down Expand Up @@ -464,10 +464,15 @@ if /i "%TEST_NET40_FSHARP_SUITE" == "1" (
)

rem Decide if Proto need building
if NOT EXIST Proto\net40\bin\fsc.exe (
if NOT EXIST "%~dp0artifacts\bin\fsc\Proto\net46\fsc.exe" (
set BUILD_PROTO=1
)

rem decide if FSharp.Proj needs building
if "%BUILD_NET40%"=="0" if "%BUILD_NET40_FSHARP_CORE%"=="0" if "%BUILD_CORECLR%"=="0" if "%BUILD_VS%"=="0" if "%BUILD_FCS%"=="0" if "%TEST_NET40_COMPILERUNIT_SUITE%"=="0" if "%TEST_NET40_COREUNIT_SUITE%"=="0" if "%TEST_NET40_FSHARP_SUITE%"=="0" if "%TEST_NET40_FSHARPQA_SUITE%"=="0" if "%TEST_CORECLR_COREUNIT_SUITE%"=="0" if "%TEST_CORECLR_FSHARP_SUITE%"=="0" if "%TEST_VS_IDEUNIT_SUITE%"=="0" if "%TEST_FCS%"=="0" if "%TEST_END_2_END%"=="0" if "%COPY_FSCOMP_RESOURCE_FOR_BUILD_FROM_SOURCES%"=="0" (
set BUILD_FSHARP_PROJ=0
)

rem
rem This stops the dotnet cli from hunting around and
rem finding the highest possible dotnet sdk version to use.
Expand All @@ -483,14 +488,15 @@ echo BUILD_PROTO_WITH_CORECLR_LKG=%BUILD_PROTO_WITH_CORECLR_LKG%
echo BUILD_NET40=%BUILD_NET40%
echo BUILD_NET40_FSHARP_CORE=%BUILD_NET40_FSHARP_CORE%
echo BUILD_CORECLR=%BUILD_CORECLR%
echo BUILD_FROMSOURCE=%BUILD_FROMSOURCE%
echo BUILD_VS=%BUILD_VS%
echo BUILD_FCS=%BUILD_FCS%
echo BUILD_SETUP=%BUILD_SETUP%
echo BUILD_NUGET=%BUILD_NUGET%
echo BUILD_CONFIG=%BUILD_CONFIG%
echo BUILD_PUBLICSIGN=%BUILD_PUBLICSIGN%
echo BUILD_MICROBUILD=%BUILD_MICROBUILD%
echo BUILD_FROMSOURCE=%BUILD_FROMSOURCE%
echo BUILD_FSHARP_PROJ=%BUILD_FSHARP_PROJ%
echo.
echo PB_SKIPTESTS=%PB_SKIPTESTS%
echo PB_RESTORESOURCE=%PB_RESTORESOURCE%
Expand Down Expand Up @@ -665,7 +671,7 @@ if "%BUILD_PROTO%" == "1" (

echo ---------------- Done with SDK restore, starting build ------------------------

if "%BUILD_PHASE%" == "1" (
if "%BUILD_PHASE%" == "1" if "%BUILD_FSHARP_PROJ%" == "1" (

echo %_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog
%_dotnetexe% restore fsharp.proj /p:Configuration=%BUILD_CONFIG% /bl:!logdir!\fsharp.proj.restore.binlog
Expand Down Expand Up @@ -1072,6 +1078,7 @@ goto :success
REM ------ exit -------------------------------------
:failure
endlocal
@echo
exit /b 1

:success
Expand Down
36 changes: 36 additions & 0 deletions build/targets/NGenOrCrossGen.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Project>

<Target Name="NGenWindowsBinaries"
AfterTargets="AfterBuild"
DependsOnTargets="CheckAdministratorPrivilege"
Condition="'$(OS)' != 'Unix' AND
$(TargetFramework.StartsWith('net4')) AND
'$(NGenBinary)' == 'true' AND
Exists('$(TargetPath)') ">
<PropertyGroup>
<PathToNGen64>$(windir)\Microsoft.NET\Framework64\v4.0.30319\ngen.exe</PathToNGen64>
<PathToNGen32>$(windir)\Microsoft.NET\Framework\v4.0.30319\ngen.exe</PathToNGen32>
</PropertyGroup>

<!--
NGen for both 32 and 64 bit product.
If compiling use the app config file, if present.
-->
<Exec Command='"$(PathToNGen64)" install "$(TargetPath)" /ExeConfig:$(TargetPath)' Condition = "Exists('$(PathToNGen64)') AND Exists('$(TargetPath).config') AND '$(IsAdministrator)' == 'true'"/>
<Exec Command='"$(PathToNGen32)" install "$(TargetPath)" /ExeConfig:$(TargetPath)' Condition = "Exists('$(PathToNGen32)') AND Exists('$(TargetPath).config') AND '$(IsAdministrator)' == 'true'"/>
<Exec Command='"$(PathToNGen64)" install "$(TargetPath)"' Condition = " Exists('$(PathToNGen64)') AND (!Exists('$(TargetPath).config')) AND '$(IsAdministrator)' == 'true' "/>
<Exec Command='"$(PathToNGen32)" install "$(TargetPath)"' Condition = " Exists('$(PathToNGen32)') AND (!Exists('$(TargetPath).config')) AND '$(IsAdministrator)' == 'true' "/>
</Target>

<!-- Amazingly the net session command returns 0 if in an administrator session and > 0 if not -->
<Target Name="CheckAdministratorPrivilege" Condition="'$(OS)' != 'Unix'">
<Exec Command="NET SESSION" ConsoleToMSBuild="false" ContinueOnError="true">
<Output TaskParameter="ExitCode" PropertyName="ErrorCode"/>
</Exec>
<PropertyGroup>
<IsAdministrator Condition = " '$(ErrorCode)' == '0' ">true</IsAdministrator>
<IsAdministrator Condition = " '$(ErrorCode)' != '0' ">false</IsAdministrator>
</PropertyGroup>
</Target>

</Project>
52 changes: 41 additions & 11 deletions fsharp.proj
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,50 @@
<TestIDE Condition="'$(TEST_VS_IDEUNIT_SUITE)' == '1'">true</TestIDE>
</PropertyGroup>

<!--
If NET40 was specified then build desktop only
if NETCORE was specified then build the coreclr only
otherwise build it all
-->
<PropertyGroup>
<BuildNetcore Condition="'$(BUILD_NET40)' != '1'and '$(BUILD_CORECLR)' == '1'">true</BuildNetcore>
<BuildDesktop Condition="'$(BUILD_NET40)' == '1' and '$(BUILD_CORECLR)' != '1'">true</BuildDesktop>
</PropertyGroup>

<Target Name="CollectProjects">

<!-- product binaries -->

<ItemGroup Condition="'$(BuildCompiler)' == 'true' OR '$(_RunningRestore)' == 'true'">
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Core\FSharp.Core.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Build\FSharp.Build.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsc\fsc.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsi\fsi.fsproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsiAnyCpu\fsiAnyCPU.fsproj" />

<NugetProjects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.nuget\Microsoft.FSharp.Compiler.csproj" />
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Core\FSharp.Core.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netstandard1.6</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net45</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Build\FSharp.Build.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netstandard2.0</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Private\FSharp.Compiler.Private.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netstandard1.6</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Server.Shared\FSharp.Compiler.Server.Shared.fsproj">
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.Interactive.Settings\FSharp.Compiler.Interactive.Settings.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netstandard1.6</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsc\fsc.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netcoreapp2.1</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsi\fsi.fsproj">
<AdditionalProperties Condition="'$(BuildNetcore)' == 'true'">TargetFramework=netcoreapp2.1</AdditionalProperties>
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
<Projects Include="$(MSBuildThisFileDirectory)src\fsharp\fsiAnyCpu\fsiAnyCPU.fsproj">
<AdditionalProperties Condition="'$(BuildDesktop)' == 'true'">TargetFramework=net46</AdditionalProperties>
</Projects>
</ItemGroup>

<ItemGroup Condition="'$(BuildVS)' == 'true' OR '$(_RunningRestore)' == 'true'">
Expand All @@ -70,6 +99,7 @@
</ItemGroup>

<ItemGroup Condition="'$(BuildSetup)' == 'true' OR '$(_RunningRestore)' == 'true'">
<NugetProjects Include="$(MSBuildThisFileDirectory)src\fsharp\FSharp.Compiler.nuget\Microsoft.FSharp.Compiler.csproj" />
<Projects Include="$(MSBuildThisFileDirectory)setup\fsharp-setup-build.csproj" />
</ItemGroup>

Expand Down
10 changes: 8 additions & 2 deletions proto.proj
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,14 @@

<ItemGroup>
<Projects Include="src\buildtools\buildtools.proj" />
<Projects Include="src\fsharp\FSharp.Build\FSharp.Build.fsproj" />
<Projects Include="src\fsharp\fsc\fsc.fsproj" />
<Projects Include="src\fsharp\FSharp.Build\FSharp.Build.fsproj">
<AdditionalProperties Condition="'$(OS)' != 'Unix'">TargetFramework=net46</AdditionalProperties>
<AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=netcoreapp2.1</AdditionalProperties>
</Projects>
<Projects Include="src\fsharp\fsc\fsc.fsproj">
<AdditionalProperties Condition="'$(OS)' != 'Unix'">TargetFramework=net46</AdditionalProperties>
<AdditionalProperties Condition="'$(OS)' == 'Unix'">TargetFramework=netcoreapp2.1</AdditionalProperties>
</Projects>
</ItemGroup>

<Target Name="Build">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@
-->
<!-- assemblies -->
<file src="$artifactsbindir$\fsc\$configuration$\netcoreapp2.1\fsc.exe" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\fsi\$configuration$\netcoreapp2.0\fsi.exe" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\fsi\$configuration$\netcoreapp2.1\fsi.exe" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Core\$configuration$\netstandard1.6\FSharp.Core.dll" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Compiler.Private\$configuration$\netstandard1.6\FSharp.Compiler.Private.dll" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Build\$configuration$\netstandard2.0\FSharp.Build.dll" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Compiler.Interactive.Settings\$configuration$\netstandard1.6\FSharp.Compiler.Interactive.Settings.dll" target="lib\netcoreapp2.1" />
<!-- symbols -->
<file src="$artifactsbindir$\fsc\$configuration$\netcoreapp2.1\fsc.pdb" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\fsi\$configuration$\netcoreapp2.0\fsi.pdb" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\fsi\$configuration$\netcoreapp2.1\fsi.pdb" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Core\$configuration$\netstandard1.6\FSharp.Core.pdb" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Compiler.Private\$configuration$\netstandard1.6\FSharp.Compiler.Private.pdb" target="lib\netcoreapp2.1" />
<file src="$artifactsbindir$\FSharp.Build\$configuration$\netstandard2.0\FSharp.Build.pdb" target="lib\netcoreapp2.1" />
Expand Down
1 change: 1 addition & 0 deletions src/fsharp/fsc/fsc.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
<OtherFlags>$(OtherFlags) --maxerrors:20 --extraoptimizationloops:1</OtherFlags>
<UseFSharpProductVersion>true</UseFSharpProductVersion>
<UseAssetTargetFallback>true</UseAssetTargetFallback>
<NGenBinary>true</NGenBinary>
</PropertyGroup>

<ItemGroup>
Expand Down
5 changes: 3 additions & 2 deletions src/fsharp/fsi/fsi.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net46;netcoreapp2.0</TargetFrameworks>
<TargetFrameworks>net46;netcoreapp2.1</TargetFrameworks>
<TargetExt>.exe</TargetExt>
<AssemblyName>fsi</AssemblyName>
<NoWarn>$(NoWarn);45;55;62;75;1204</NoWarn>
Expand All @@ -13,6 +13,7 @@
<Win32Resource>fsi.res</Win32Resource>
<UseFSharpProductVersion>true</UseFSharpProductVersion>
<UseAssetTargetFallback>true</UseAssetTargetFallback>
<NGenBinary>true</NGenBinary>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net46'">
Expand Down Expand Up @@ -45,7 +46,7 @@
<Reference Include="WindowsBase" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.0'">
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp2.1'">
<PackageReference Include="System.Diagnostics.Process" Version="$(SystemDiagnosticsProcessPackageVersion)" />
<PackageReference Include="System.Linq.Expressions" Version="$(SystemLinqExpressionsPackageVersion)" />
<PackageReference Include="System.Reflection.Emit" Version="$(SystemReflectionEmitPackageVersion)" />
Expand Down
2 changes: 1 addition & 1 deletion tests/fsharp/test-framework.fs
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ let config configurationName envVars =
let fsharpCompilerInteractiveSettingsArchitecture = "net46"
#else
let fscArchitecture = "netcoreapp2.1"
let fsiArchitecture = "netcoreapp2.0"
let fsiArchitecture = "netcoreapp2.1"
let fsharpCoreArchitecture = "netstandard1.6"
let fsharpBuildArchitecture = "netstandard2.0"
let fsharpCompilerInteractiveSettingsArchitecture = "netstandard1.6"
Expand Down